您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在豆瓣电影页面获取添加资源链接
当前为
// ==UserScript== // @name DoubanFlix - 在豆瓣电影页面获取添加资源链接(网盘,磁力,在线) // @namespace http://tampermonkey.net/ // @version 1.0.6 // @description 在豆瓣电影页面获取添加资源链接 // @author Moz // @match https://movie.douban.com/subject/* // @grant none // @license MIT // @icon https://cdn.zerror.cc/images/%E8%B1%86%E7%93%A3%E7%BD%91.png // ==/UserScript== // 注入CSS样式 (function() { const style = document.createElement('style'); style.textContent = `.auth-switch[data-v-d47a81a4]{display:flex;justify-content:center;margin-bottom:16px}.switch-container[data-v-d47a81a4]{position:relative;display:flex;background:#f8f9fa;border-radius:8px;padding:4px;width:200px;height:30px}.switch-input[data-v-d47a81a4]{position:absolute;opacity:0;pointer-events:none}.switch-label[data-v-d47a81a4]{flex:1;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:500;color:#666;cursor:pointer;transition:color .3s ease;z-index:2;position:relative}.switch-input:checked+.switch-label[data-v-d47a81a4]{color:#007bff}.slider[data-v-d47a81a4]{position:absolute;top:4px;left:0;width:46%;height:calc(100% - 8px);background:#fff;border-radius:6px;box-shadow:0 2px 4px #0000001a;transition:left .3s ease;z-index:1}.switch-label[data-v-d47a81a4]:hover{color:#007bff}.switch-input:checked+.switch-label[data-v-d47a81a4]{color:#007bff;font-weight:600}@media (max-width: 480px){.switch-container[data-v-d47a81a4]{width:180px;height:36px}.switch-label[data-v-d47a81a4]{font-size:13px}}.toast-container[data-v-52e28bd4]{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:10000;pointer-events:none}.toast[data-v-52e28bd4]{background:#fff;border-radius:8px;padding:12px 16px;margin-bottom:10px;box-shadow:0 4px 12px #00000026;display:flex;align-items:center;justify-content:space-between;min-width:300px;max-width:500px;pointer-events:auto;cursor:pointer;animation:slideDown-52e28bd4 .3s ease-out;transition:all .3s ease}.toast[data-v-52e28bd4]:hover{transform:translateY(-2px);box-shadow:0 6px 16px #0003}.error-toast[data-v-52e28bd4]{background:#fff5f5}.error-toast span[data-v-52e28bd4]{color:#721c24}.success-toast[data-v-52e28bd4]{background:#f0fff4}.success-toast span[data-v-52e28bd4]{color:#155724}.toast-close[data-v-52e28bd4]{background:none;border:none;font-size:18px;font-weight:700;color:#999;cursor:pointer;margin-left:12px;padding:0;line-height:1}.toast-close[data-v-52e28bd4]:hover{color:#666}@keyframes slideDown-52e28bd4{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.auth-container[data-v-d19c4dd7]{padding:16px}.user-info[data-v-d19c4dd7]{text-align:center}.user-header[data-v-d19c4dd7]{display:flex;align-items:center;margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:8px;position:relative}.user-avatar[data-v-d19c4dd7]{width:40px;height:40px;border-radius:50%;background:#007bff;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;margin-right:12px}.user-details[data-v-d19c4dd7]{flex:1;text-align:left}.user-display-name[data-v-d19c4dd7]{font-size:14px;font-weight:500;color:#333;margin-bottom:2px}.user-email[data-v-d19c4dd7]{font-size:12px;color:#666;margin-bottom:2px}.user-status[data-v-d19c4dd7]{font-size:12px;color:#28a745}.user-stats[data-v-d19c4dd7]{margin-top:8px;display:flex;gap:16px}.stat-item[data-v-d19c4dd7]{display:flex;align-items:center;font-size:12px}.stat-icon[data-v-d19c4dd7]{width:16px;height:16px;display:flex;align-items:center;justify-content:center;color:#4caf50}.stat-icon.down-icon[data-v-d19c4dd7]{color:#868686;transform:rotate(180deg)}.stat-icon svg[data-v-d19c4dd7]{width:100%;height:100%}.stat-label[data-v-d19c4dd7]{color:#666;font-weight:500}.stat-value[data-v-d19c4dd7]{color:#333;font-weight:600;background:#f8f9f0;border-radius:12px;min-width:20px;text-align:center}.edit-nickname-btn[data-v-d19c4dd7]{position:absolute;top:12px;right:12px;padding:4px 8px;background:#e3f2fd;color:#1976d2;border:none;border-radius:4px;cursor:pointer;font-size:11px;transition:all .2s}.edit-nickname-btn[data-v-d19c4dd7]:hover{background:#e8f5ff}.nickname-edit-form[data-v-d19c4dd7]{margin-bottom:16px;padding:12px;background:#fff;border:1px solid #dee2e6;border-radius:8px}.nickname-edit-form .form-group[data-v-d19c4dd7]{flex-direction:column;align-items:flex-start;gap:4px}.nickname-edit-form .form-group label[data-v-d19c4dd7]{text-align:left;min-width:auto;margin-bottom:2px}.nickname-hint[data-v-d19c4dd7]{font-size:11px;color:#666;margin-top:4px}.nickname-actions[data-v-d19c4dd7]{display:flex;gap:8px;margin-top:12px}.save-nickname-btn[data-v-d19c4dd7]{padding:6px 12px;background:#beecc8;color:#2e8339;border:none;border-radius:4px;cursor:pointer;font-size:12px;transition:background-color .2s}.save-nickname-btn[data-v-d19c4dd7]:hover:not(:disabled){background:#cef3d6}.save-nickname-btn[data-v-d19c4dd7]:disabled{background:#cef3d6;cursor:not-allowed}.cancel-nickname-btn[data-v-d19c4dd7]{padding:6px 12px;background:#f1f1f1;color:#828282;border:none;border-radius:4px;cursor:pointer;font-size:12px;transition:background-color .2s}.cancel-nickname-btn[data-v-d19c4dd7]:hover{background:#e4e4e4}.sign-out-btn[data-v-d19c4dd7]{width:100%;padding:8px 16px;background:#ffe4e6;color:#f33;border:none;border-radius:4px;cursor:pointer;font-size:13px;transition:background-color .2s}.sign-out-btn[data-v-d19c4dd7]:hover{background:#ffedef}.auth-forms[data-v-d19c4dd7]{width:100%}.auth-form[data-v-d19c4dd7]{display:flex;flex-direction:column;gap:12px}.form-group[data-v-d19c4dd7]{display:flex;align-items:center;gap:6px}.form-group label[data-v-d19c4dd7]{font-size:12px;color:#333;margin-bottom:0;font-weight:500;white-space:nowrap;min-width:50px;text-align:right}.auth-form[data-mode=login] .form-group[data-v-d19c4dd7]{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.auth-form[data-mode=login] .form-group label[data-v-d19c4dd7]{text-align:left;min-width:auto;margin-bottom:2px}.auth-form[data-mode=login] .input-wrapper[data-v-d19c4dd7]{width:100%;border:1px solid #ddd;border-radius:8px;transition:border-color .2s}.auth-form[data-mode=login] .input-wrapper[data-v-d19c4dd7]:focus-within{border-color:none;box-shadow:none}.auth-form[data-mode=login] .form-input[data-v-d19c4dd7]{width:95%;margin:8px;padding:0;border:none;border-radius:0;font-size:13px;background:transparent;outline:none}.auth-form[data-mode=login] .form-input[data-v-d19c4dd7]:focus{border-color:none;box-shadow:none}.form-input[data-v-d19c4dd7]{padding:8px 12px;border:1px solid #ddd;border-radius:8px;font-size:13px;transition:border-color .2s}.form-input[data-v-d19c4dd7]:focus{outline:none}.auth-submit-btn[data-v-d19c4dd7]{padding:10px 16px;background:#e9f4ff;color:#00a2ef;border:1px solid #bfe2ff;border-radius:8px;cursor:pointer;font-size:13px;font-weight:500;transition:background-color .2s;margin-top:8px}.auth-submit-btn[data-v-d19c4dd7]:hover:not(:disabled){background:#cce5ff}.auth-submit-btn[data-v-d19c4dd7]:disabled{background:#c4e0fe;cursor:not-allowed}.forgot-password-link[data-v-d19c4dd7]{text-align:center;margin-top:15px}.link-btn[data-v-d19c4dd7]{background:none;border:none;color:#007bff;cursor:pointer;text-decoration:underline;font-size:14px;padding:0}.link-btn[data-v-d19c4dd7]:hover{color:#0056b3}.link-btn[data-v-d19c4dd7]:disabled{color:#6c757d;cursor:not-allowed;text-decoration:none}.back-button[data-v-d19c4dd7]{margin-bottom:20px}.back-btn[data-v-d19c4dd7]{background:none;border:none;color:#6c757d;cursor:pointer;font-size:14px;padding:8px 0;display:flex;align-items:center;gap:5px}.back-btn[data-v-d19c4dd7]:hover{color:#495057}.form-title[data-v-d19c4dd7]{font-size:24px;font-weight:700;text-align:center;margin-bottom:10px;color:#333}.form-description[data-v-d19c4dd7]{font-size:14px;color:#6c757d;text-align:center;margin-bottom:25px;line-height:1.5}.proof-progress[data-v-d19c4dd7]{margin:20px 0}.progress-text[data-v-d19c4dd7]{font-size:14px;color:#6c757d;text-align:center;margin-bottom:10px}.progress-bar[data-v-d19c4dd7]{width:100%;height:8px;background-color:#e9ecef;border-radius:4px;overflow:hidden}.progress-fill[data-v-d19c4dd7]{height:100%;background:linear-gradient(90deg,#007bff,#0056b3);transition:width .3s ease;border-radius:4px}.resend-code[data-v-d19c4dd7]{text-align:center;margin-top:15px}.error-message[data-v-d19c4dd7]{padding:8px 12px;background:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;font-size:12px;margin-top:12px}.success-message[data-v-d19c4dd7]{padding:8px 12px;background:#d4edda;color:#155724;border:1px solid #c3e6cb;border-radius:4px;font-size:12px;margin-top:12px}.initializing-container[data-v-d19c4dd7]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center}.initializing-container .loading-spinner[data-v-d19c4dd7]{width:32px;height:32px;border:3px solid #f3f3f3;border-top:3px solid #007bff;border-radius:50%;animation:spin-d19c4dd7 1s linear infinite;margin-bottom:16px}.initializing-container p[data-v-d19c4dd7]{color:#6c757d;font-size:14px;margin:0}@keyframes spin-d19c4dd7{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.custom-select[data-v-3b2cba4f]{position:relative;width:100%;font-size:14px}.select-trigger[data-v-3b2cba4f]{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border:1px solid #ddd;border-radius:8px;background-color:#fff;cursor:pointer;transition:all .2s ease;color:#333}.select-trigger[data-v-3b2cba4f]:focus{outline:none}.selected-text[data-v-3b2cba4f]{flex:1;text-align:left;color:#333}.arrow[data-v-3b2cba4f]{width:16px!important;height:16px!important;transition:transform .2s ease;color:#666!important;background:none!important;background-image:none!important;border:none!important;transform-origin:center!important;display:inline-block!important}.arrow-up[data-v-3b2cba4f]{transform:rotate(180deg);padding-left:0}.select-dropdown[data-v-3b2cba4f]{position:absolute;top:110%;left:0;right:0;background:#fff;border:1px solid #ddd;border-radius:6px;box-shadow:0 4px 6px #0000001a;z-index:1000;max-height:400px;overflow-y:auto}.select-option[data-v-3b2cba4f]{padding:4px 12px;cursor:pointer;transition:all .2s ease;color:#666;background-color:#fff;border-radius:6px;margin:2px}.select-option[data-v-3b2cba4f]:hover{background-color:#f5f5f5!important;color:#333!important}.select-option.selected[data-v-3b2cba4f]{background-color:#e3f2fd;color:#1976d2;font-weight:500}.select-option.selected[data-v-3b2cba4f]:hover{background-color:#bbdefb!important;color:#1565c0!important}@media (prefers-color-scheme: dark){.select-trigger[data-v-3b2cba4f]{background-color:#2d3748;border-color:#4a5568;color:#e2e8f0}.selected-text[data-v-3b2cba4f]{color:#e2e8f0}.arrow[data-v-3b2cba4f]{color:#a0aec0}.select-dropdown[data-v-3b2cba4f]{border-radius:4px;background-color:#2d3748;border-color:#4a5568}.select-option[data-v-3b2cba4f]{color:#a0a0a0;background-color:#2d3748}.select-option[data-v-3b2cba4f]:hover{background-color:#718096!important;color:#f7fafc!important}.select-option.selected[data-v-3b2cba4f]{background-color:#2b6cb0;color:#90cdf4}.select-option.selected[data-v-3b2cba4f]:hover{background-color:#2c5282!important;color:#bee3f8!important}}.loading-container[data-v-da15572b]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 20px;text-align:center}.spinner[data-v-da15572b]{width:32px;height:32px;border:3px solid #e0e0e0;border-top:3px solid #00a1d6;border-radius:50%;animation:spin-da15572b 1s linear infinite;margin-bottom:12px}.loading-text[data-v-da15572b]{color:#666;font-size:14px;font-weight:500}.loading-container.small .spinner[data-v-da15572b]{width:20px;height:20px;border-width:2px;margin-bottom:8px}.loading-container.small .loading-text[data-v-da15572b]{font-size:12px}.loading-container.large .spinner[data-v-da15572b]{width:48px;height:48px;border-width:4px;margin-bottom:16px}.loading-container.large .loading-text[data-v-da15572b]{font-size:16px}@keyframes spin-da15572b{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 480px){.loading-container[data-v-da15572b]{padding:20px 15px}.spinner[data-v-da15572b]{width:28px;height:28px;border-width:2px}.loading-text[data-v-da15572b]{font-size:13px}}.link-item.skeleton[data-v-115afd35]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:16px;margin-bottom:12px}.skeleton-element[data-v-115afd35]{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:skeleton-loading-115afd35 1.5s infinite;border-radius:4px}@keyframes skeleton-loading-115afd35{0%{background-position:200% 0}to{background-position:-200% 0}}.link-header[data-v-115afd35]{display:flex;align-items:center;gap:12px;margin-bottom:12px}.platform-badge[data-v-115afd35]{display:flex;align-items:center;gap:6px}.skeleton-icon[data-v-115afd35]{width:20px;height:20px;border-radius:50%}.link-meta[data-v-115afd35]{display:flex;flex-direction:column;gap:6px}.skeleton-language[data-v-115afd35]{width:40px;height:16px}.feature-tags[data-v-115afd35]{display:flex;gap:6px}.skeleton-tag[data-v-115afd35]{width:30px;height:14px}.link-title-row[data-v-115afd35]{display:flex;align-items:center;justify-content:space-between}.skeleton-title[data-v-115afd35]{width:70%;height:20px}.skeleton-arrow[data-v-115afd35]{width:16px;height:16px;border-radius:2px}.ios-checkbox[data-v-150f8c13]{--checkbox-size: 28px;--checkbox-color: #3b82f6;--checkbox-bg: #dbeafe;--checkbox-border: #93c5fd;position:relative;display:inline-flex;align-items:center;justify-content:flex-start;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle}.ios-checkbox input[data-v-150f8c13]{display:none}.checkbox-wrapper[data-v-150f8c13]{position:relative;width:var(--checkbox-size);height:var(--checkbox-size);border-radius:8px;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.checkbox-bg[data-v-150f8c13]{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;border:1px solid #d5d5d5;background:#fff;transition:all .2s ease}.checkbox-icon[data-v-150f8c13]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0);width:16px;height:16px;color:#fff;transition:all .2s ease}.check-path[data-v-150f8c13]{stroke-dasharray:40;stroke-dashoffset:40;transition:stroke-dashoffset .3s ease .1s}.checkbox-label[data-v-150f8c13]{font-size:14px;color:#374151;font-weight:500;line-height:28px;height:28px;display:flex;align-items:center}.ios-checkbox input:checked+.checkbox-wrapper .checkbox-bg[data-v-150f8c13]{background:var(--checkbox-color);border-color:var(--checkbox-color)}.ios-checkbox input:checked+.checkbox-wrapper .checkbox-icon[data-v-150f8c13]{transform:translate(-50%,-50%) scale(1)}.ios-checkbox input:checked+.checkbox-wrapper .check-path[data-v-150f8c13]{stroke-dashoffset:0}.ios-checkbox:hover .checkbox-wrapper[data-v-150f8c13]{transform:scale(1.05)}.ios-checkbox:active .checkbox-wrapper[data-v-150f8c13]{transform:scale(.95)}.ios-checkbox input:focus+.checkbox-wrapper .checkbox-bg[data-v-150f8c13]{box-shadow:0 0 0 4px var(--checkbox-bg)}.ios-checkbox.blue[data-v-150f8c13]{--checkbox-color: #3b82f6;--checkbox-bg: #dbeafe;--checkbox-border: #93c5fd}.ios-checkbox.green[data-v-150f8c13]{--checkbox-color: #10b981;--checkbox-bg: #d1fae5;--checkbox-border: #6ee7b7}.ios-checkbox.purple[data-v-150f8c13]{--checkbox-color: #8b5cf6;--checkbox-bg: #ede9fe;--checkbox-border: #c4b5fd}.ios-checkbox.red[data-v-150f8c13]{--checkbox-color: #ef4444;--checkbox-bg: #fee2e2;--checkbox-border: #fca5a5}@keyframes bounce-150f8c13{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.ios-checkbox input:checked+.checkbox-wrapper[data-v-150f8c13]{animation:bounce-150f8c13 .3s cubic-bezier(.4,0,.2,1)}.copy-item[data-v-aaaa00e5]{position:relative;display:inline-block;cursor:pointer;color:#007bff;text-decoration:none;transition:all .4s cubic-bezier(.23,1,.32,1);word-break:break-all}.copy-item[data-v-aaaa00e5]:hover{text-decoration:underline;background-color:transparent}.tooltip[data-v-aaaa00e5]{position:absolute;top:-35px;left:50%;transform:translate(-50%);padding:6px 12px;background:#333333d1;color:#fff;border-radius:4px;font-size:12px;white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;transition:all .3s ease;z-index:1000}.tooltip[data-v-aaaa00e5]:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#333333d1}.copy-item:hover .tooltip[data-v-aaaa00e5]{opacity:1;visibility:visible;top:-40px}.extract-code[data-v-aaaa00e5]{position:relative;display:inline-block;background:#f8f9fa;padding:2px 6px;border-radius:3px;font-family:monospace;color:#e83e8c;cursor:pointer;transition:all .3s ease}.extract-code[data-v-aaaa00e5]:hover{background:#e9ecef}.extract-code:hover .tooltip[data-v-aaaa00e5]{opacity:1;visibility:visible;top:-40px}.link-manager[data-v-908a67a0]{max-width:1000px;margin:0 auto}.link-stats[data-v-908a67a0]{display:flex;gap:20px;margin-bottom:20px;padding:15px;background:#f5f5f5;border-radius:8px}.stat-item[data-v-908a67a0]{display:flex;flex-direction:column;align-items:center}.stat-label[data-v-908a67a0]{font-size:12px;color:#666;margin-bottom:4px}.stat-value[data-v-908a67a0]{font-size:18px;font-weight:700;color:#333}.add-link-section[data-v-908a67a0]{margin-bottom:20px;display:flex;align-items:center;gap:10px}.add-link-btn[data-v-908a67a0]{padding:10px 20px;background:#007bff;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px}.add-link-btn[data-v-908a67a0]:hover:not(:disabled){background:#0056b3}.add-link-btn[data-v-908a67a0]:disabled{background:#ccc;cursor:not-allowed}.auth-hint[data-v-908a67a0]{color:#666;font-size:12px}.add-form[data-v-908a67a0]{background:#f9f9f9;padding:20px;border-radius:8px;margin-bottom:20px}.add-form h4[data-v-908a67a0]{margin:0 0 15px;color:#333}.form-row[data-v-908a67a0]{display:flex;gap:15px}.form-group[data-v-908a67a0]{flex:1;display:flex;align-items:center;gap:10px;margin-bottom:24px}.form-group label[data-v-908a67a0]{margin-bottom:0;font-weight:540;color:#333;font-size:13px;white-space:nowrap;min-width:80px;text-align:right}.checkbox-group[data-v-908a67a0]{display:flex;flex-wrap:wrap;gap:15px}.form-group input[data-v-908a67a0],.form-group select[data-v-908a67a0]{width:95%;padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px}.form-group select[data-v-908a67a0]:focus{outline:none}.input-wrapper[data-v-908a67a0]{width:100%;border:1px solid #ddd;border-radius:6px}.input-wrapper input[data-v-908a67a0]{width:95%;border:none;outline:none;font-size:14px;background:transparent}.form-actions[data-v-908a67a0]{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.form-actions button[data-v-908a67a0]{font-weight:300;padding:10px 20px;border:none;border-radius:8px;cursor:pointer;font-size:14px}.form-actions button[type=submit][data-v-908a67a0]{background:#beecc8;color:#2e8339}.form-actions button[type=submit][data-v-908a67a0]:hover:not(:disabled){background:#b1efbf}.form-actions button[type=submit][data-v-908a67a0]:disabled{background:#b1efbf;cursor:not-allowed}.form-actions button[type=button][data-v-908a67a0]{background:#f1f1f1;color:#828282}.form-actions button[type=button][data-v-908a67a0]:hover{background:#ececec}.filter-bar[data-v-908a67a0]{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px;border-radius:6px}.filter-controls[data-v-908a67a0]{display:flex;gap:10px}.filter-bar .custom-select[data-v-908a67a0]{width:auto;min-width:100px}.add-link-btn-compact[data-v-908a67a0]{width:32px;height:32px;background:#e6f3ff;color:#007bff;border:none;border-radius:4px;cursor:pointer;font-size:18px;font-weight:700;display:flex;align-items:center;justify-content:center;transition:all .2s ease;flex-shrink:0;line-height:1;padding:0}.add-link-btn-compact[data-v-908a67a0]:hover:not(:disabled){background:#dae9f7;transform:scale(1)}.add-link-btn-compact[data-v-908a67a0]:disabled{color:#b2b2b2;background:#f5f4f4;cursor:not-allowed;transform:none}.filter-bar select[data-v-908a67a0]{padding:6px 10px;border:1px solid #ddd;border-radius:4px;font-size:13px}.links-list[data-v-908a67a0]{display:flex;flex-direction:column;gap:15px}.link-item[data-v-908a67a0]{background:#fff;border:1px solid rgba(239,239,239,1);border-radius:8px;padding:15px;box-shadow:0 2px 12px #0000000d;transition:box-shadow .3s ease;cursor:pointer}.link-header[data-v-908a67a0]{display:flex;align-items:center;gap:10px;margin-bottom:10px}.link-type-badge[data-v-908a67a0]{padding:4px 8px;border-radius:4px;font-size:12px;font-weight:700;color:#fff}.link-type-badge.netdisk[data-v-908a67a0]{background:#28a745}.link-type-badge.bt[data-v-908a67a0]{background:#dc3545}.link-type-badge.online[data-v-908a67a0]{background:#007bff}.platform-badge[data-v-908a67a0]{padding:4px;background:#fff;color:#fff;border-radius:4px;font-size:12px;display:flex;align-items:center;justify-content:center;border:1px solid #e9ecef}.platform-icon[data-v-908a67a0]{width:16px;height:16px;object-fit:contain}.link-meta[data-v-908a67a0]{display:flex;gap:3px;margin-left:auto;align-items:center}.file-size[data-v-908a67a0]{padding:2px 5px;border-radius:3px;font-size:10px;background:#e3f2fd!important;color:#1976d2!important;font-weight:500}.feature-tags[data-v-908a67a0]{display:flex;gap:3px;flex-wrap:wrap}.feature-tag[data-v-908a67a0]{padding:2px 5px;background:#007bff;color:#fff;border-radius:3px;font-size:10px;font-weight:700}.feature-tag.feature-4k[data-v-908a67a0]{border:1px solid #e7ed27;background:#f6ff00;color:#232323}.feature-tag.feature-hdr[data-v-908a67a0]{background:gold;color:#232323}.feature-tag.feature-dolby[data-v-908a67a0]{background:#eaeaea;color:#121212;font-weight:300}.feature-tag.feature-subtitle[data-v-908a67a0]{background:#cee2e8;color:#036;font-weight:300}.link-content[data-v-908a67a0]{margin-bottom:15px}.link-title-row[data-v-908a67a0]{display:flex;align-items:center;justify-content:space-between;padding:5px 0;margin-bottom:8px;border-radius:4px;transition:background-color .2s ease}.link-title[data-v-908a67a0]{font-weight:500;color:#333;flex:1;overflow:hidden;position:relative;padding-right:10px;min-width:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.4;max-height:2.8em}.link-title.expanded[data-v-908a67a0]{display:block;-webkit-line-clamp:unset;max-height:none;white-space:normal;padding-right:10px;word-wrap:break-word;word-break:break-word}.link-title[data-v-908a67a0]:after{content:"";position:absolute;top:0;right:0;width:100px;height:100%;background:linear-gradient(to right,transparent,#ffffff 85%);pointer-events:none;transition:opacity .3s ease}.link-title.expanded[data-v-908a67a0]:after{opacity:0}.expand-arrow[data-v-908a67a0]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#666;transition:transform .3s ease,color .2s ease}.expand-arrow[data-v-908a67a0]:hover{color:#333}.expand-arrow.expanded[data-v-908a67a0]{transform:rotate(180deg)}.link-details[data-v-908a67a0]{margin-top:10px;animation:slideDown-908a67a0 .3s ease forwards}@keyframes slideDown-908a67a0{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.link-url[data-v-908a67a0]{display:flex;align-items:center;gap:8px;margin-bottom:5px}.link-url a[data-v-908a67a0]{color:#007bff;text-decoration:none;flex:1;word-break:break-all}.link-url span[data-v-908a67a0]:hover{text-decoration:none;background-color:transparent}.extract-code-container[data-v-908a67a0]{display:flex;background:#fff;align-items:center;gap:8px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:12px}.extract-code-container code[data-v-908a67a0]{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;cursor:pointer;background:#eaeaea;padding:2px 6px;border-radius:6px;color:#3d3d3d}.extract-code-container code[data-v-908a67a0]:hover{background:#e6e6e6}.copy-btn[data-v-908a67a0]{background:none;border:none;cursor:pointer;font-size:14px;padding:2px 4px;border-radius:3px}.copy-btn[data-v-908a67a0]:hover{background:#f8f9fa}.link-actions[data-v-908a67a0]{display:flex;justify-content:space-between;align-items:center;margin-top:10px;margin-bottom:10px}.vote-section[data-v-908a67a0]{display:flex;align-items:center;gap:10px}.vote-btn[data-v-908a67a0]{background:transparent;border:none;padding:5px 10px;border-radius:6px;cursor:pointer;font-size:12px;display:flex;align-items:center;gap:4px}.vote-icon[data-v-908a67a0]{width:12px;height:12px}.vote-icon.down-icon[data-v-908a67a0]{transform:rotate(180deg)}.vote-btn[data-v-908a67a0]:hover:not(:disabled){background:#e9ecef}.vote-btn[data-v-908a67a0]:disabled{opacity:.6;cursor:not-allowed}.vote-btn.active.up[data-v-908a67a0]{color:#155724}.vote-btn.active.down[data-v-908a67a0]{color:#721c24}.vote-btn.pending[data-v-908a67a0]{opacity:.7;position:relative}.pending-indicator[data-v-908a67a0]{font-size:10px;margin-left:2px;animation:pulse-908a67a0 1.5s ease-in-out infinite}@keyframes pulse-908a67a0{0%,to{opacity:1}50%{opacity:.5}}.action-buttons[data-v-908a67a0]{display:flex;gap:8px}.action-buttons button[data-v-908a67a0]{padding:4px 8px;border:none;border-radius:6px;cursor:pointer;font-size:12px}.edit-btn[data-v-908a67a0]{background:#ffc107;color:#212529}.edit-btn[data-v-908a67a0]:hover{background:#e0a800}.modify-btn[data-v-908a67a0]{width:48px;height:28px;background:#d4ecef;color:#22899b}.modify-btn[data-v-908a67a0]:hover{background:#bfeff5}.delete-btn[data-v-908a67a0]{width:48px;height:28px;background:#ffccd0;color:#e62e2e}.delete-btn[data-v-908a67a0]:hover{background:#ffd6db}.delete-confirmation[data-v-908a67a0]{text-align:center;padding:20px 0}.warning-icon[data-v-908a67a0]{font-size:48px;margin-bottom:16px}.delete-confirmation p[data-v-908a67a0]{margin:8px 0;font-size:16px}.warning-text[data-v-908a67a0]{color:#dc3545;font-size:14px;font-weight:500}.delete-confirm-btn[data-v-908a67a0]{background:#f8d7da!important;color:#dc3545!important;border:1px solid #f5c6cb!important;padding:8px 16px;border-radius:4px;cursor:pointer;margin-right:8px;font-weight:500}.delete-confirm-btn[data-v-908a67a0]:hover:not(:disabled){background:#f8d7dad2!important;border:1px solid #f5c6cb!important}.delete-confirm-btn[data-v-908a67a0]:disabled{background:#6c757d;cursor:not-allowed}.report-btn[data-v-908a67a0]{width:48px;height:28px;background:#eee;color:#495057}.report-btn[data-v-908a67a0]:hover{color:#495057;background:#e3e3e3}.link-footer[data-v-908a67a0]{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#666;border-top:1px solid #f0f0f0;padding-top:10px}.report-count[data-v-908a67a0]{color:#dc3545;font-weight:700}.empty-state[data-v-908a67a0]{text-align:center;padding:40px;color:#666}.loading[data-v-908a67a0]{text-align:center;padding:20px;color:#666}.error-message[data-v-908a67a0]{background:#f8d7da;color:#721c24;padding:10px 15px;border-radius:4px;margin:10px 0;border:1px solid #f5c6cb}.success-message[data-v-908a67a0]{background:#d4edda;color:#155724;padding:10px 15px;border-radius:4px;margin:10px 0;border:1px solid #c3e6cb}@media (max-width: 768px){.link-manager[data-v-908a67a0]{padding:10px}.form-row[data-v-908a67a0]{flex-direction:column;gap:10px}.filter-bar[data-v-908a67a0]{flex-direction:column;gap:8px}.link-header[data-v-908a67a0]{flex-wrap:wrap}.link-meta[data-v-908a67a0]{margin-left:0;margin-top:5px}.link-actions[data-v-908a67a0]{flex-direction:column;gap:10px;align-items:flex-start}}.modal-overlay[data-v-908a67a0]{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content[data-v-908a67a0]{background:#fff;border-radius:16px;width:90%;max-width:600px;max-height:90vh;box-shadow:0 4px 20px #00000026}.modal-header[data-v-908a67a0]{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #eee;margin-bottom:20px}.modal-header h4[data-v-908a67a0]{margin-left:10px;margin-bottom:0;color:#333;font-size:18px}.close-btn[data-v-908a67a0]{background:none;border:none;font-size:24px;cursor:pointer;color:#999;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:8px}.close-btn[data-v-908a67a0]:hover{background:#f5f5f5;color:#333}.modal-body[data-v-908a67a0]{padding:0 20px 20px}.vote-section[data-v-908a67a0]{width:100%}.input-wrapper textarea[data-v-908a67a0]{width:100%;border:none;outline:none;font-size:14px;font-family:inherit;resize:vertical;min-height:80px;background:transparent}.input-wrapper[data-v-908a67a0]:has(textarea):focus-within{border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.input-wrapper textarea[data-v-908a67a0]::placeholder{color:#999}.pagination[data-v-908a67a0]{display:flex;justify-content:center;align-items:center;gap:15px;margin-top:10px;padding:10px;background:#fff;border-radius:8px}.pagination-btn[data-v-908a67a0]{box-shadow:#00000008 4px 4px 20px;padding:8px 16px;border:1px solid rgb(242,242,242);background:#fff;color:#333;border-radius:9999px;cursor:pointer;font-size:14px;transition:all .2s}.pagination-btn[data-v-908a67a0]:hover:not(:disabled){background:#b3d8ff;color:#007bff;border-color:#b3d8ff}.pagination-btn[data-v-908a67a0]:disabled{background:#f5f5f5;color:#999;cursor:not-allowed;border-color:#ddd}.pagination-info[data-v-908a67a0]{font-size:14px;color:#666;font-weight:500}.login-prompt[data-v-908a67a0]{display:flex;justify-content:center;align-items:center;min-height:300px;padding:40px 20px;background:linear-gradient(135deg,#f8f9fa,#e9ecef);border-radius:12px;border:2px dashed #dee2e6;margin:20px 0}.login-prompt-content[data-v-908a67a0]{text-align:center;max-width:400px}.login-icon[data-v-908a67a0]{margin-bottom:20px;color:#6c757d;opacity:.8}.login-prompt h3[data-v-908a67a0]{font-size:24px;font-weight:600;color:#495057;margin-bottom:12px;line-height:1.3}.login-prompt p[data-v-908a67a0]{font-size:16px;color:#6c757d;margin-bottom:24px;line-height:1.5}.login-btn[data-v-908a67a0]{border:1px solid rgb(242,242,242);background:#fff;color:#767676;border:none;padding:12px 32px;border-radius:25px;font-size:16px;font-weight:500;cursor:pointer;transition:all .3s ease;box-shadow:#00000008 4px 4px 20px}.login-btn[data-v-908a67a0]:hover{transform:translateY(-2px);box-shadow:#0000000f 4px 4px 20px}.login-btn[data-v-908a67a0]:active{transform:translateY(0);box-shadow:0 2px 10px #007bff4d}.content-wrapper[data-v-a01b44d5]{padding:16px}.movie-info[data-v-a01b44d5]{margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:6px;border-left:4px solid #00a1d6}.movie-title[data-v-a01b44d5]{margin:0 0 8px;font-size:16px;font-weight:600;color:#333;line-height:1.3}.movie-meta[data-v-a01b44d5]{display:flex;gap:12px;align-items:center}.movie-meta .year[data-v-a01b44d5]{background:#6c757d;color:#fff;padding:2px 6px;border-radius:3px;font-size:12px;font-weight:500}.movie-meta .rating[data-v-a01b44d5]{color:#ff6b35;font-weight:600;font-size:13px}.navigation-bar[data-v-a01b44d5]{display:flex;border-bottom:1px solid #e0e0e0;margin-bottom:16px}.nav-btn[data-v-a01b44d5]{flex:1;padding:12px 16px;border:none;background:none;cursor:pointer;font-size:14px;font-weight:500;color:#666;transition:all .2s;border-bottom:1px solid transparent}.nav-btn.active[data-v-a01b44d5]{color:#00a1d6;border-bottom-color:#00a1d6}.tab-content[data-v-a01b44d5]{min-height:200px}.tab-panel[data-v-a01b44d5]{padding-top:16px 0}.tab-panel h4[data-v-a01b44d5]{margin:0 0 12px;color:#333;font-size:16px;font-weight:600}.tab-panel p[data-v-a01b44d5]{margin:0;color:#666;line-height:1.5}.sub-nav[data-v-a01b44d5]{display:flex;gap:4px;margin-bottom:12px;padding:4px;background:#e9ecef;border-radius:6px}.sub-tab[data-v-a01b44d5]{flex:1;padding:6px 8px;border:none;background:transparent;color:#666;font-size:12px;border-radius:4px;cursor:pointer;transition:all .2s;text-align:center}.sub-tab[data-v-a01b44d5]:hover{background:#dee2e6;color:#495057}.sub-tab.active[data-v-a01b44d5]{background:#007bff;color:#fff;font-weight:500}.sub-content[data-v-a01b44d5]{margin-top:8px}.sub-tab-content[data-v-a01b44d5]{padding:8px 0}.sub-tab-content p[data-v-a01b44d5]{margin:4px 0;color:#666;font-size:12px}.no-subject[data-v-a01b44d5]{text-align:center;padding:40px 20px;color:#666}.no-subject p[data-v-a01b44d5]{margin:8px 0;line-height:1.5}.no-subject .hint[data-v-a01b44d5]{font-size:12px;color:#999;font-style:italic}.debug-panel[data-v-dba5723e]{position:fixed;top:20px;right:20px;width:400px;max-height:80vh;background:#fff;border:2px solid #007bff;border-radius:8px;box-shadow:0 4px 20px #0000004d;z-index:10000;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;overflow-y:auto}.debug-header[data-v-dba5723e]{background:#007bff;color:#fff;padding:10px 15px;display:flex;justify-content:space-between;align-items:center}.debug-header h3[data-v-dba5723e]{margin:0;font-size:16px}.close-btn[data-v-dba5723e]{background:none;border:none;color:#fff;font-size:20px;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.debug-content[data-v-dba5723e]{padding:15px}.debug-section[data-v-dba5723e]{margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #eee}.debug-section[data-v-dba5723e]:last-child{border-bottom:none;margin-bottom:0}.debug-section h4[data-v-dba5723e]{margin:0 0 10px;color:#333;font-size:14px}.debug-section h5[data-v-dba5723e]{margin:10px 0 5px;color:#666;font-size:12px}.status-item[data-v-dba5723e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px}.label[data-v-dba5723e]{font-weight:700;color:#555}.value[data-v-dba5723e]{color:#333;max-width:200px;word-break:break-all}.token[data-v-dba5723e]{font-family:monospace;font-size:10px}.status[data-v-dba5723e]{padding:2px 6px;border-radius:3px;font-size:11px;font-weight:700}.status.success[data-v-dba5723e]{background:#d4edda;color:#155724}.status.error[data-v-dba5723e]{background:#f8d7da;color:#721c24}.button-group[data-v-dba5723e]{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.debug-btn[data-v-dba5723e]{padding:6px 12px;border:1px solid #007bff;background:#fff;color:#007bff;border-radius:4px;cursor:pointer;font-size:11px;transition:all .2s}.debug-btn[data-v-dba5723e]:hover{background:#007bff;color:#fff}.debug-btn.danger[data-v-dba5723e]{border-color:#dc3545;color:#dc3545}.debug-btn.danger[data-v-dba5723e]:hover{background:#dc3545;color:#fff}.test-result[data-v-dba5723e]{background:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;padding:10px;margin-top:10px}.test-result pre[data-v-dba5723e]{margin:0;font-size:10px;white-space:pre-wrap;word-break:break-word}.headers-preview[data-v-dba5723e]{background:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;padding:10px}.headers-preview code[data-v-dba5723e]{font-size:10px;white-space:pre-wrap;word-break:break-word}.custom-window[data-v-6cac7645]{position:relative;width:100%;max-width:350px;min-height:200px;background:#fff;border:1px solid rgba(239,239,239,1);border-radius:16px;box-shadow:0 2px 12px #0000000d;margin-bottom:15px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.window-header[data-v-6cac7645]{color:#545454;padding:6px 12px;border-radius:0 0 8px 8px;display:flex;justify-content:space-between;align-items:center;-webkit-user-select:none;user-select:none}.window-title[data-v-6cac7645]{font-weight:300;font-size:12px}.close-btn[data-v-6cac7645]{background:none;border:none;color:#fff;font-size:16px;cursor:pointer;padding:0;width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background-color .2s}.close-btn[data-v-6cac7645]:hover{background-color:#fff3}.window-content[data-v-6cac7645]{padding:0}#douban-trigger-btn:hover{background:#005a1a!important;transform:translateY(-1px);box-shadow:0 2px 8px #00772280}#douban-custom-window{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}#douban-custom-window ::-webkit-scrollbar{width:6px}#douban-custom-window ::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}#douban-custom-window ::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}#douban-custom-window ::-webkit-scrollbar-thumb:hover{background:#a8a8a8}@keyframes fadeIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes slideIn{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}.custom-window{animation:fadeIn .3s ease-out}.window-content>*{animation:slideIn .4s ease-out}@media (max-width: 480px){.custom-window{width:90vw!important;left:5vw!important}.stats-grid{grid-template-columns:1fr!important}.action-section{flex-direction:column}.action-btn{width:100%}}@media (prefers-color-scheme: dark){.custom-window{background:#2d3748;border-color:#4a5568;color:#e2e8f0}.window-content h3,.window-content h4{color:#e2e8f0}.window-content p{color:#cbd5e0}.feature-section li,.info-section{background:#4a5568;color:#cbd5e0}.info-item strong{color:#e2e8f0}}select option{color:#666;background-color:#fff;padding:8px 12px;border-radius:6px;margin:2px 0;transition:background-color .2s ease}select option:hover{background-color:#f5f5f5}select{border-radius:6px;padding:8px 12px}@media (prefers-color-scheme: dark){select option{color:#a0a0a0;background-color:#2d3748}select option:hover{background-color:#718096;color:#f7fafc}} `; document.head.appendChild(style); })(); (function(){"use strict";(function(){"use strict";/** * @vue/shared v3.5.18 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **//*! #__NO_SIDE_EFFECTS__ */function eo(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const ne={},Ft=[],Xe=()=>{},An=()=>!1,ks=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),to=e=>e.startsWith("onUpdate:"),Ee=Object.assign,so=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},$n=Object.prototype.hasOwnProperty,se=(e,t)=>$n.call(e,t),z=Array.isArray,Nt=e=>Cs(e)==="[object Map]",No=e=>Cs(e)==="[object Set]",H=e=>typeof e=="function",ve=e=>typeof e=="string",vt=e=>typeof e=="symbol",de=e=>e!==null&&typeof e=="object",Bo=e=>(de(e)||H(e))&&H(e.then)&&H(e.catch),qo=Object.prototype.toString,Cs=e=>qo.call(e),Pn=e=>Cs(e).slice(8,-1),zo=e=>Cs(e)==="[object Object]",oo=e=>ve(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,es=eo(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ts=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},Vn=/-(\w)/g,gt=Ts(e=>e.replace(Vn,(t,s)=>s?s.toUpperCase():"")),Mn=/\B([A-Z])/g,Vt=Ts(e=>e.replace(Mn,"-$1").toLowerCase()),jo=Ts(e=>e.charAt(0).toUpperCase()+e.slice(1)),lo=Ts(e=>e?`on${jo(e)}`:""),_t=(e,t)=>!Object.is(e,t),Ss=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},no=(e,t,s,o=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:o,value:s})},ro=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Ho;const Es=()=>Ho||(Ho=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Bt(e){if(z(e)){const t={};for(let s=0;s<e.length;s++){const o=e[s],l=ve(o)?Ln(o):Bt(o);if(l)for(const n in l)t[n]=l[n]}return t}else if(ve(e)||de(e))return e}const Un=/;(?![^(]*\))/g,In=/:([^]+)/,Dn=/\/\*[^]*?\*\//g;function Ln(e){const t={};return e.replace(Dn,"").split(Un).forEach(s=>{if(s){const o=s.split(In);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function _e(e){let t="";if(ve(e))t=e;else if(z(e))for(let s=0;s<e.length;s++){const o=_e(e[s]);o&&(t+=o+" ")}else if(de(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const On=eo("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function Ko(e){return!!e||e===""}const Wo=e=>!!(e&&e.__v_isRef===!0),j=e=>ve(e)?e:e==null?"":z(e)||de(e)&&(e.toString===qo||!H(e.toString))?Wo(e)?j(e.value):JSON.stringify(e,Go,2):String(e),Go=(e,t)=>Wo(t)?Go(e,t.value):Nt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[o,l],n)=>(s[io(o,n)+" =>"]=l,s),{})}:No(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>io(s))}:vt(t)?io(t):de(t)&&!z(t)&&!zo(t)?String(t):t,io=(e,t="")=>{var s;return vt(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/** * @vue/reactivity v3.5.18 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/let Oe;class Rn{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Oe,!t&&Oe&&(this.index=(Oe.scopes||(Oe.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].pause();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].resume();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].resume()}}run(t){if(this._active){const s=Oe;try{return Oe=this,t()}finally{Oe=s}}}on(){++this._on===1&&(this.prevScope=Oe,Oe=this)}off(){this._on>0&&--this._on===0&&(Oe=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,o;for(s=0,o=this.effects.length;s<o;s++)this.effects[s].stop();for(this.effects.length=0,s=0,o=this.cleanups.length;s<o;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){for(s=0,o=this.scopes.length;s<o;s++)this.scopes[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const l=this.parent.scopes.pop();l&&l!==this&&(this.parent.scopes[this.index]=l,l.index=this.index)}this.parent=void 0}}}function Fn(){return Oe}let ae;const ao=new WeakSet;class Qo{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,Oe&&Oe.active&&Oe.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,ao.has(this)&&(ao.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Yo(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,sl(this),Jo(this);const t=ae,s=Ze;ae=this,Ze=!0;try{return this.fn()}finally{Xo(this),ae=t,Ze=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)po(t);this.deps=this.depsTail=void 0,sl(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?ao.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){fo(this)&&this.run()}get dirty(){return fo(this)}}let Zo=0,ts,ss;function Yo(e,t=!1){if(e.flags|=8,t){e.next=ss,ss=e;return}e.next=ts,ts=e}function uo(){Zo++}function co(){if(--Zo>0)return;if(ss){let t=ss;for(ss=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;ts;){let t=ts;for(ts=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(o){e||(e=o)}t=s}}if(e)throw e}function Jo(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Xo(e){let t,s=e.depsTail,o=s;for(;o;){const l=o.prevDep;o.version===-1?(o===s&&(s=l),po(o),Nn(o)):t=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0,o=l}e.deps=t,e.depsTail=s}function fo(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(el(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function el(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===os)||(e.globalVersion=os,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!fo(e))))return;e.flags|=2;const t=e.dep,s=ae,o=Ze;ae=e,Ze=!0;try{Jo(e);const l=e.fn(e._value);(t.version===0||_t(l,e._value))&&(e.flags|=128,e._value=l,t.version++)}catch(l){throw t.version++,l}finally{ae=s,Ze=o,Xo(e),e.flags&=-3}}function po(e,t=!1){const{dep:s,prevSub:o,nextSub:l}=e;if(o&&(o.nextSub=l,e.prevSub=void 0),l&&(l.prevSub=o,e.nextSub=void 0),s.subs===e&&(s.subs=o,!o&&s.computed)){s.computed.flags&=-5;for(let n=s.computed.deps;n;n=n.nextDep)po(n,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function Nn(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let Ze=!0;const tl=[];function et(){tl.push(Ze),Ze=!1}function tt(){const e=tl.pop();Ze=e===void 0?!0:e}function sl(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=ae;ae=void 0;try{t()}finally{ae=s}}}let os=0;class Bn{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class ho{constructor(t){this.computed=t,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(t){if(!ae||!Ze||ae===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==ae)s=this.activeLink=new Bn(ae,this),ae.deps?(s.prevDep=ae.depsTail,ae.depsTail.nextDep=s,ae.depsTail=s):ae.deps=ae.depsTail=s,ol(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const o=s.nextDep;o.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=o),s.prevDep=ae.depsTail,s.nextDep=void 0,ae.depsTail.nextDep=s,ae.depsTail=s,ae.deps===s&&(ae.deps=o)}return s}trigger(t){this.version++,os++,this.notify(t)}notify(t){uo();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{co()}}}function ol(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let o=t.deps;o;o=o.nextDep)ol(o)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const mo=new WeakMap,Mt=Symbol(""),vo=Symbol(""),ls=Symbol("");function Se(e,t,s){if(Ze&&ae){let o=mo.get(e);o||mo.set(e,o=new Map);let l=o.get(s);l||(o.set(s,l=new ho),l.map=o,l.key=s),l.track()}}function at(e,t,s,o,l,n){const r=mo.get(e);if(!r){os++;return}const i=u=>{u&&u.trigger()};if(uo(),t==="clear")r.forEach(i);else{const u=z(e),m=u&&oo(s);if(u&&s==="length"){const f=Number(o);r.forEach((g,E)=>{(E==="length"||E===ls||!vt(E)&&E>=f)&&i(g)})}else switch((s!==void 0||r.has(void 0))&&i(r.get(s)),m&&i(r.get(ls)),t){case"add":u?m&&i(r.get("length")):(i(r.get(Mt)),Nt(e)&&i(r.get(vo)));break;case"delete":u||(i(r.get(Mt)),Nt(e)&&i(r.get(vo)));break;case"set":Nt(e)&&i(r.get(Mt));break}}co()}function qt(e){const t=Y(e);return t===e?t:(Se(t,"iterate",ls),qe(e)?t:t.map(we))}function As(e){return Se(e=Y(e),"iterate",ls),e}const qn={__proto__:null,[Symbol.iterator](){return go(this,Symbol.iterator,we)},concat(...e){return qt(this).concat(...e.map(t=>z(t)?qt(t):t))},entries(){return go(this,"entries",e=>(e[1]=we(e[1]),e))},every(e,t){return ut(this,"every",e,t,void 0,arguments)},filter(e,t){return ut(this,"filter",e,t,s=>s.map(we),arguments)},find(e,t){return ut(this,"find",e,t,we,arguments)},findIndex(e,t){return ut(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ut(this,"findLast",e,t,we,arguments)},findLastIndex(e,t){return ut(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ut(this,"forEach",e,t,void 0,arguments)},includes(...e){return _o(this,"includes",e)},indexOf(...e){return _o(this,"indexOf",e)},join(e){return qt(this).join(e)},lastIndexOf(...e){return _o(this,"lastIndexOf",e)},map(e,t){return ut(this,"map",e,t,void 0,arguments)},pop(){return ns(this,"pop")},push(...e){return ns(this,"push",e)},reduce(e,...t){return ll(this,"reduce",e,t)},reduceRight(e,...t){return ll(this,"reduceRight",e,t)},shift(){return ns(this,"shift")},some(e,t){return ut(this,"some",e,t,void 0,arguments)},splice(...e){return ns(this,"splice",e)},toReversed(){return qt(this).toReversed()},toSorted(e){return qt(this).toSorted(e)},toSpliced(...e){return qt(this).toSpliced(...e)},unshift(...e){return ns(this,"unshift",e)},values(){return go(this,"values",we)}};function go(e,t,s){const o=As(e),l=o[t]();return o!==e&&!qe(e)&&(l._next=l.next,l.next=()=>{const n=l._next();return n.value&&(n.value=s(n.value)),n}),l}const zn=Array.prototype;function ut(e,t,s,o,l,n){const r=As(e),i=r!==e&&!qe(e),u=r[t];if(u!==zn[t]){const g=u.apply(e,n);return i?we(g):g}let m=s;r!==e&&(i?m=function(g,E){return s.call(this,we(g),E,e)}:s.length>2&&(m=function(g,E){return s.call(this,g,E,e)}));const f=u.call(r,m,o);return i&&l?l(f):f}function ll(e,t,s,o){const l=As(e);let n=s;return l!==e&&(qe(e)?s.length>3&&(n=function(r,i,u){return s.call(this,r,i,u,e)}):n=function(r,i,u){return s.call(this,r,we(i),u,e)}),l[t](n,...o)}function _o(e,t,s){const o=Y(e);Se(o,"iterate",ls);const l=o[t](...s);return(l===-1||l===!1)&&bo(s[0])?(s[0]=Y(s[0]),o[t](...s)):l}function ns(e,t,s=[]){et(),uo();const o=Y(e)[t].apply(e,s);return co(),tt(),o}const jn=eo("__proto__,__v_isRef,__isVue"),nl=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(vt));function Hn(e){vt(e)||(e=String(e));const t=Y(this);return Se(t,"has",e),t.hasOwnProperty(e)}class rl{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,o){if(s==="__v_skip")return t.__v_skip;const l=this._isReadonly,n=this._isShallow;if(s==="__v_isReactive")return!l;if(s==="__v_isReadonly")return l;if(s==="__v_isShallow")return n;if(s==="__v_raw")return o===(l?n?fl:dl:n?cl:ul).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const r=z(t);if(!l){let u;if(r&&(u=qn[s]))return u;if(s==="hasOwnProperty")return Hn}const i=Reflect.get(t,s,xe(t)?t:o);return(vt(s)?nl.has(s):jn(s))||(l||Se(t,"get",s),n)?i:xe(i)?r&&oo(s)?i:i.value:de(i)?l?pl(i):Ut(i):i}}class il extends rl{constructor(t=!1){super(!1,t)}set(t,s,o,l){let n=t[s];if(!this._isShallow){const u=yt(n);if(!qe(o)&&!yt(o)&&(n=Y(n),o=Y(o)),!z(t)&&xe(n)&&!xe(o))return u?!1:(n.value=o,!0)}const r=z(t)&&oo(s)?Number(s)<t.length:se(t,s),i=Reflect.set(t,s,o,xe(t)?t:l);return t===Y(l)&&(r?_t(o,n)&&at(t,"set",s,o):at(t,"add",s,o)),i}deleteProperty(t,s){const o=se(t,s);t[s];const l=Reflect.deleteProperty(t,s);return l&&o&&at(t,"delete",s,void 0),l}has(t,s){const o=Reflect.has(t,s);return(!vt(s)||!nl.has(s))&&Se(t,"has",s),o}ownKeys(t){return Se(t,"iterate",z(t)?"length":Mt),Reflect.ownKeys(t)}}class al extends rl{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const Kn=new il,Wn=new al,Gn=new il(!0),Qn=new al(!0),yo=e=>e,$s=e=>Reflect.getPrototypeOf(e);function Zn(e,t,s){return function(...o){const l=this.__v_raw,n=Y(l),r=Nt(n),i=e==="entries"||e===Symbol.iterator&&r,u=e==="keys"&&r,m=l[e](...o),f=s?yo:t?Us:we;return!t&&Se(n,"iterate",u?vo:Mt),{next(){const{value:g,done:E}=m.next();return E?{value:g,done:E}:{value:i?[f(g[0]),f(g[1])]:f(g),done:E}},[Symbol.iterator](){return this}}}}function Ps(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Yn(e,t){const s={get(l){const n=this.__v_raw,r=Y(n),i=Y(l);e||(_t(l,i)&&Se(r,"get",l),Se(r,"get",i));const{has:u}=$s(r),m=t?yo:e?Us:we;if(u.call(r,l))return m(n.get(l));if(u.call(r,i))return m(n.get(i));n!==r&&n.get(l)},get size(){const l=this.__v_raw;return!e&&Se(Y(l),"iterate",Mt),Reflect.get(l,"size",l)},has(l){const n=this.__v_raw,r=Y(n),i=Y(l);return e||(_t(l,i)&&Se(r,"has",l),Se(r,"has",i)),l===i?n.has(l):n.has(l)||n.has(i)},forEach(l,n){const r=this,i=r.__v_raw,u=Y(i),m=t?yo:e?Us:we;return!e&&Se(u,"iterate",Mt),i.forEach((f,g)=>l.call(n,m(f),m(g),r))}};return Ee(s,e?{add:Ps("add"),set:Ps("set"),delete:Ps("delete"),clear:Ps("clear")}:{add(l){!t&&!qe(l)&&!yt(l)&&(l=Y(l));const n=Y(this);return $s(n).has.call(n,l)||(n.add(l),at(n,"add",l,l)),this},set(l,n){!t&&!qe(n)&&!yt(n)&&(n=Y(n));const r=Y(this),{has:i,get:u}=$s(r);let m=i.call(r,l);m||(l=Y(l),m=i.call(r,l));const f=u.call(r,l);return r.set(l,n),m?_t(n,f)&&at(r,"set",l,n):at(r,"add",l,n),this},delete(l){const n=Y(this),{has:r,get:i}=$s(n);let u=r.call(n,l);u||(l=Y(l),u=r.call(n,l)),i&&i.call(n,l);const m=n.delete(l);return u&&at(n,"delete",l,void 0),m},clear(){const l=Y(this),n=l.size!==0,r=l.clear();return n&&at(l,"clear",void 0,void 0),r}}),["keys","values","entries",Symbol.iterator].forEach(l=>{s[l]=Zn(l,e,t)}),s}function Vs(e,t){const s=Yn(e,t);return(o,l,n)=>l==="__v_isReactive"?!e:l==="__v_isReadonly"?e:l==="__v_raw"?o:Reflect.get(se(s,l)&&l in o?s:o,l,n)}const Jn={get:Vs(!1,!1)},Xn={get:Vs(!1,!0)},er={get:Vs(!0,!1)},tr={get:Vs(!0,!0)},ul=new WeakMap,cl=new WeakMap,dl=new WeakMap,fl=new WeakMap;function sr(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function or(e){return e.__v_skip||!Object.isExtensible(e)?0:sr(Pn(e))}function Ut(e){return yt(e)?e:Ms(e,!1,Kn,Jn,ul)}function lr(e){return Ms(e,!1,Gn,Xn,cl)}function pl(e){return Ms(e,!0,Wn,er,dl)}function tf(e){return Ms(e,!0,Qn,tr,fl)}function Ms(e,t,s,o,l){if(!de(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const n=or(e);if(n===0)return e;const r=l.get(e);if(r)return r;const i=new Proxy(e,n===2?o:s);return l.set(e,i),i}function zt(e){return yt(e)?zt(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function qe(e){return!!(e&&e.__v_isShallow)}function bo(e){return e?!!e.__v_raw:!1}function Y(e){const t=e&&e.__v_raw;return t?Y(t):e}function nr(e){return!se(e,"__v_skip")&&Object.isExtensible(e)&&no(e,"__v_skip",!0),e}const we=e=>de(e)?Ut(e):e,Us=e=>de(e)?pl(e):e;function xe(e){return e?e.__v_isRef===!0:!1}function L(e){return rr(e,!1)}function rr(e,t){return xe(e)?e:new ir(e,t)}class ir{constructor(t,s){this.dep=new ho,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:Y(t),this._value=s?t:we(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,o=this.__v_isShallow||qe(t)||yt(t);t=o?t:Y(t),_t(t,s)&&(this._rawValue=t,this._value=o?t:we(t),this.dep.trigger())}}function ar(e){return xe(e)?e.value:e}const ur={get:(e,t,s)=>t==="__v_raw"?e:ar(Reflect.get(e,t,s)),set:(e,t,s,o)=>{const l=e[t];return xe(l)&&!xe(s)?(l.value=s,!0):Reflect.set(e,t,s,o)}};function hl(e){return zt(e)?e:new Proxy(e,ur)}class cr{constructor(t,s,o){this.fn=t,this.setter=s,this._value=void 0,this.dep=new ho(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=os-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=o}notify(){if(this.flags|=16,!(this.flags&8)&&ae!==this)return Yo(this,!0),!0}get value(){const t=this.dep.track();return el(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function dr(e,t,s=!1){let o,l;return H(e)?o=e:(o=e.get,l=e.set),new cr(o,l,s)}const Is={},Ds=new WeakMap;let It;function fr(e,t=!1,s=It){if(s){let o=Ds.get(s);o||Ds.set(s,o=[]),o.push(e)}}function pr(e,t,s=ne){const{immediate:o,deep:l,once:n,scheduler:r,augmentJob:i,call:u}=s,m=R=>l?R:qe(R)||l===!1||l===0?ct(R,1):ct(R);let f,g,E,b,_=!1,w=!1;if(xe(e)?(g=()=>e.value,_=qe(e)):zt(e)?(g=()=>m(e),_=!0):z(e)?(w=!0,_=e.some(R=>zt(R)||qe(R)),g=()=>e.map(R=>{if(xe(R))return R.value;if(zt(R))return m(R);if(H(R))return u?u(R,2):R()})):H(e)?t?g=u?()=>u(e,2):e:g=()=>{if(E){et();try{E()}finally{tt()}}const R=It;It=f;try{return u?u(e,3,[b]):e(b)}finally{It=R}}:g=Xe,t&&l){const R=g,pe=l===!0?1/0:l;g=()=>ct(R(),pe)}const X=Fn(),K=()=>{f.stop(),X&&X.active&&so(X.effects,f)};if(n&&t){const R=t;t=(...pe)=>{R(...pe),K()}}let W=w?new Array(e.length).fill(Is):Is;const Z=R=>{if(!(!(f.flags&1)||!f.dirty&&!R))if(t){const pe=f.run();if(l||_||(w?pe.some((he,me)=>_t(he,W[me])):_t(pe,W))){E&&E();const he=It;It=f;try{const me=[pe,W===Is?void 0:w&&W[0]===Is?[]:W,b];W=pe,u?u(t,3,me):t(...me)}finally{It=he}}}else f.run()};return i&&i(Z),f=new Qo(g),f.scheduler=r?()=>r(Z,!1):Z,b=R=>fr(R,!1,f),E=f.onStop=()=>{const R=Ds.get(f);if(R){if(u)u(R,4);else for(const pe of R)pe();Ds.delete(f)}},t?o?Z(!0):W=f.run():r?r(Z.bind(null,!0),!0):f.run(),K.pause=f.pause.bind(f),K.resume=f.resume.bind(f),K.stop=K,K}function ct(e,t=1/0,s){if(t<=0||!de(e)||e.__v_skip||(s=s||new Set,s.has(e)))return e;if(s.add(e),t--,xe(e))ct(e.value,t,s);else if(z(e))for(let o=0;o<e.length;o++)ct(e[o],t,s);else if(No(e)||Nt(e))e.forEach(o=>{ct(o,t,s)});else if(zo(e)){for(const o in e)ct(e[o],t,s);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&ct(e[o],t,s)}return e}/** * @vue/runtime-core v3.5.18 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/const rs=[];let wo=!1;function sf(e,...t){if(wo)return;wo=!0,et();const s=rs.length?rs[rs.length-1].component:null,o=s&&s.appContext.config.warnHandler,l=hr();if(o)jt(o,s,11,[e+t.map(n=>{var r,i;return(i=(r=n.toString)==null?void 0:r.call(n))!=null?i:JSON.stringify(n)}).join(""),s&&s.proxy,l.map(({vnode:n})=>`at <${ln(s,n.type)}>`).join(` `),l]);else{const n=[`[Vue warn]: ${e}`,...t];l.length&&n.push(` `,...mr(l)),console.warn(...n)}tt(),wo=!1}function hr(){let e=rs[rs.length-1];if(!e)return[];const t=[];for(;e;){const s=t[0];s&&s.vnode===e?s.recurseCount++:t.push({vnode:e,recurseCount:0});const o=e.component&&e.component.parent;e=o&&o.vnode}return t}function mr(e){const t=[];return e.forEach((s,o)=>{t.push(...o===0?[]:[` `],...vr(s))}),t}function vr({vnode:e,recurseCount:t}){const s=t>0?`... (${t} recursive calls)`:"",o=e.component?e.component.parent==null:!1,l=` at <${ln(e.component,e.type,o)}`,n=">"+s;return e.props?[l,...gr(e.props),n]:[l+n]}function gr(e){const t=[],s=Object.keys(e);return s.slice(0,3).forEach(o=>{t.push(...ml(o,e[o]))}),s.length>3&&t.push(" ..."),t}function ml(e,t,s){return ve(t)?(t=JSON.stringify(t),s?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?s?t:[`${e}=${t}`]:xe(t)?(t=ml(e,Y(t.value),!0),s?t:[`${e}=Ref<`,t,">"]):H(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=Y(t),s?t:[`${e}=`,t])}function jt(e,t,s,o){try{return o?e(...o):e()}catch(l){Ls(l,t,s)}}function st(e,t,s,o){if(H(e)){const l=jt(e,t,s,o);return l&&Bo(l)&&l.catch(n=>{Ls(n,t,s)}),l}if(z(e)){const l=[];for(let n=0;n<e.length;n++)l.push(st(e[n],t,s,o));return l}}function Ls(e,t,s,o=!0){const l=t?t.vnode:null,{errorHandler:n,throwUnhandledErrorInProduction:r}=t&&t.appContext.config||ne;if(t){let i=t.parent;const u=t.proxy,m=`https://vuejs.org/error-reference/#runtime-${s}`;for(;i;){const f=i.ec;if(f){for(let g=0;g<f.length;g++)if(f[g](e,u,m)===!1)return}i=i.parent}if(n){et(),jt(n,null,10,[e,u,m]),tt();return}}_r(e,s,l,o,r)}function _r(e,t,s,o=!0,l=!1){if(l)throw e;console.error(e)}const Ae=[];let ot=-1;const Ht=[];let bt=null,Kt=0;const vl=Promise.resolve();let Os=null;function yr(e){const t=Os||vl;return e?t.then(this?e.bind(this):e):t}function br(e){let t=ot+1,s=Ae.length;for(;t<s;){const o=t+s>>>1,l=Ae[o],n=is(l);n<e||n===e&&l.flags&2?t=o+1:s=o}return t}function xo(e){if(!(e.flags&1)){const t=is(e),s=Ae[Ae.length-1];!s||!(e.flags&2)&&t>=is(s)?Ae.push(e):Ae.splice(br(t),0,e),e.flags|=1,gl()}}function gl(){Os||(Os=vl.then(bl))}function wr(e){z(e)?Ht.push(...e):bt&&e.id===-1?bt.splice(Kt+1,0,e):e.flags&1||(Ht.push(e),e.flags|=1),gl()}function _l(e,t,s=ot+1){for(;s<Ae.length;s++){const o=Ae[s];if(o&&o.flags&2){if(e&&o.id!==e.uid)continue;Ae.splice(s,1),s--,o.flags&4&&(o.flags&=-2),o(),o.flags&4||(o.flags&=-2)}}}function yl(e){if(Ht.length){const t=[...new Set(Ht)].sort((s,o)=>is(s)-is(o));if(Ht.length=0,bt){bt.push(...t);return}for(bt=t,Kt=0;Kt<bt.length;Kt++){const s=bt[Kt];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}bt=null,Kt=0}}const is=e=>e.id==null?e.flags&2?-1:1/0:e.id;function bl(e){try{for(ot=0;ot<Ae.length;ot++){const t=Ae[ot];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),jt(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;ot<Ae.length;ot++){const t=Ae[ot];t&&(t.flags&=-2)}ot=-1,Ae.length=0,yl(),Os=null,(Ae.length||Ht.length)&&bl()}}let ze=null,wl=null;function Rs(e){const t=ze;return ze=e,wl=e&&e.type.__scopeId||null,t}function xr(e,t=ze,s){if(!t||e._n)return e;const o=(...l)=>{o._d&&Zl(-1);const n=Rs(t);let r;try{r=e(...l)}finally{Rs(n),o._d&&Zl(1)}return r};return o._n=!0,o._c=!0,o._d=!0,o}function re(e,t){if(ze===null)return e;const s=Gs(ze),o=e.dirs||(e.dirs=[]);for(let l=0;l<t.length;l++){let[n,r,i,u=ne]=t[l];n&&(H(n)&&(n={mounted:n,updated:n}),n.deep&&ct(r),o.push({dir:n,instance:s,value:r,oldValue:void 0,arg:i,modifiers:u}))}return e}function Dt(e,t,s,o){const l=e.dirs,n=t&&t.dirs;for(let r=0;r<l.length;r++){const i=l[r];n&&(i.oldValue=n[r].value);let u=i.dir[o];u&&(et(),st(u,s,8,[e.el,i,e,t]),tt())}}const kr=Symbol("_vte"),Cr=e=>e.__isTeleport;function ko(e,t){e.shapeFlag&6&&e.component?(e.transition=t,ko(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function xl(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function as(e,t,s,o,l=!1){if(z(e)){e.forEach((_,w)=>as(_,t&&(z(t)?t[w]:t),s,o,l));return}if(us(o)&&!l){o.shapeFlag&512&&o.type.__asyncResolved&&o.component.subTree.component&&as(e,t,s,o.component.subTree);return}const n=o.shapeFlag&4?Gs(o.component):o.el,r=l?null:n,{i,r:u}=e,m=t&&t.r,f=i.refs===ne?i.refs={}:i.refs,g=i.setupState,E=Y(g),b=g===ne?()=>!1:_=>se(E,_);if(m!=null&&m!==u&&(ve(m)?(f[m]=null,b(m)&&(g[m]=null)):xe(m)&&(m.value=null)),H(u))jt(u,i,12,[r,f]);else{const _=ve(u),w=xe(u);if(_||w){const X=()=>{if(e.f){const K=_?b(u)?g[u]:f[u]:u.value;l?z(K)&&so(K,n):z(K)?K.includes(n)||K.push(n):_?(f[u]=[n],b(u)&&(g[u]=f[u])):(u.value=[n],e.k&&(f[e.k]=u.value))}else _?(f[u]=r,b(u)&&(g[u]=r)):w&&(u.value=r,e.k&&(f[e.k]=r))};r?(X.id=-1,Ne(X,s)):X()}}}Es().requestIdleCallback,Es().cancelIdleCallback;const us=e=>!!e.type.__asyncLoader,kl=e=>e.type.__isKeepAlive;function Tr(e,t){Cl(e,"a",t)}function Sr(e,t){Cl(e,"da",t)}function Cl(e,t,s=Pe){const o=e.__wdc||(e.__wdc=()=>{let l=s;for(;l;){if(l.isDeactivated)return;l=l.parent}return e()});if(Fs(t,o,s),s){let l=s.parent;for(;l&&l.parent;)kl(l.parent.vnode)&&Er(o,t,s,l),l=l.parent}}function Er(e,t,s,o){const l=Fs(t,e,o,!0);cs(()=>{so(o[t],l)},s)}function Fs(e,t,s=Pe,o=!1){if(s){const l=s[e]||(s[e]=[]),n=t.__weh||(t.__weh=(...r)=>{et();const i=gs(s),u=st(t,s,e,r);return i(),tt(),u});return o?l.unshift(n):l.push(n),n}}const dt=e=>(t,s=Pe)=>{(!_s||e==="sp")&&Fs(e,(...o)=>t(...o),s)},Ar=dt("bm"),Wt=dt("m"),$r=dt("bu"),Pr=dt("u"),Vr=dt("bum"),cs=dt("um"),Mr=dt("sp"),Ur=dt("rtg"),Ir=dt("rtc");function Dr(e,t=Pe){Fs("ec",e,t)}const Lr=Symbol.for("v-ndc");function Co(e,t,s,o){let l;const n=s,r=z(e);if(r||ve(e)){const i=r&&zt(e);let u=!1,m=!1;i&&(u=!qe(e),m=yt(e),e=As(e)),l=new Array(e.length);for(let f=0,g=e.length;f<g;f++)l[f]=t(u?m?Us(we(e[f])):we(e[f]):e[f],f,void 0,n)}else if(typeof e=="number"){l=new Array(e);for(let i=0;i<e;i++)l[i]=t(i+1,i,void 0,n)}else if(de(e))if(e[Symbol.iterator])l=Array.from(e,(i,u)=>t(i,u,void 0,n));else{const i=Object.keys(e);l=new Array(i.length);for(let u=0,m=i.length;u<m;u++){const f=i[u];l[u]=t(e[f],f,u,n)}}else l=[];return l}const To=e=>e?tn(e)?Gs(e):To(e.parent):null,ds=Ee(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>To(e.parent),$root:e=>To(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Al(e),$forceUpdate:e=>e.f||(e.f=()=>{xo(e.update)}),$nextTick:e=>e.n||(e.n=yr.bind(e.proxy)),$watch:e=>li.bind(e)}),So=(e,t)=>e!==ne&&!e.__isScriptSetup&&se(e,t),Or={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:o,data:l,props:n,accessCache:r,type:i,appContext:u}=e;let m;if(t[0]!=="$"){const b=r[t];if(b!==void 0)switch(b){case 1:return o[t];case 2:return l[t];case 4:return s[t];case 3:return n[t]}else{if(So(o,t))return r[t]=1,o[t];if(l!==ne&&se(l,t))return r[t]=2,l[t];if((m=e.propsOptions[0])&&se(m,t))return r[t]=3,n[t];if(s!==ne&&se(s,t))return r[t]=4,s[t];Eo&&(r[t]=0)}}const f=ds[t];let g,E;if(f)return t==="$attrs"&&Se(e.attrs,"get",""),f(e);if((g=i.__cssModules)&&(g=g[t]))return g;if(s!==ne&&se(s,t))return r[t]=4,s[t];if(E=u.config.globalProperties,se(E,t))return E[t]},set({_:e},t,s){const{data:o,setupState:l,ctx:n}=e;return So(l,t)?(l[t]=s,!0):o!==ne&&se(o,t)?(o[t]=s,!0):se(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(n[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:o,appContext:l,propsOptions:n}},r){let i;return!!s[r]||e!==ne&&se(e,r)||So(t,r)||(i=n[0])&&se(i,r)||se(o,r)||se(ds,r)||se(l.config.globalProperties,r)},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:se(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function Tl(e){return z(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let Eo=!0;function Rr(e){const t=Al(e),s=e.proxy,o=e.ctx;Eo=!1,t.beforeCreate&&Sl(t.beforeCreate,e,"bc");const{data:l,computed:n,methods:r,watch:i,provide:u,inject:m,created:f,beforeMount:g,mounted:E,beforeUpdate:b,updated:_,activated:w,deactivated:X,beforeDestroy:K,beforeUnmount:W,destroyed:Z,unmounted:R,render:pe,renderTracked:he,renderTriggered:me,errorCaptured:Ue,serverPrefetch:Et,expose:Fe,inheritAttrs:Ie,components:Ke,directives:pt,filters:F}=t;if(m&&Fr(m,o,null),r)for(const ee in r){const te=r[ee];H(te)&&(o[ee]=te.bind(s))}if(l){const ee=l.call(s,s);de(ee)&&(e.data=Ut(ee))}if(Eo=!0,n)for(const ee in n){const te=n[ee],rt=H(te)?te.bind(s,s):H(te.get)?te.get.bind(s,s):Xe,At=!H(te)&&H(te.set)?te.set.bind(s):Xe,We=Ve({get:rt,set:At});Object.defineProperty(o,ee,{enumerable:!0,configurable:!0,get:()=>We.value,set:De=>We.value=De})}if(i)for(const ee in i)El(i[ee],o,s,ee);if(u){const ee=H(u)?u.call(s):u;Reflect.ownKeys(ee).forEach(te=>{Hr(te,ee[te])})}f&&Sl(f,e,"c");function I(ee,te){z(te)?te.forEach(rt=>ee(rt.bind(s))):te&&ee(te.bind(s))}if(I(Ar,g),I(Wt,E),I($r,b),I(Pr,_),I(Tr,w),I(Sr,X),I(Dr,Ue),I(Ir,he),I(Ur,me),I(Vr,W),I(cs,R),I(Mr,Et),z(Fe))if(Fe.length){const ee=e.exposed||(e.exposed={});Fe.forEach(te=>{Object.defineProperty(ee,te,{get:()=>s[te],set:rt=>s[te]=rt,enumerable:!0})})}else e.exposed||(e.exposed={});pe&&e.render===Xe&&(e.render=pe),Ie!=null&&(e.inheritAttrs=Ie),Ke&&(e.components=Ke),pt&&(e.directives=pt),Et&&xl(e)}function Fr(e,t,s=Xe){z(e)&&(e=Ao(e));for(const o in e){const l=e[o];let n;de(l)?"default"in l?n=Bs(l.from||o,l.default,!0):n=Bs(l.from||o):n=Bs(l),xe(n)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>n.value,set:r=>n.value=r}):t[o]=n}}function Sl(e,t,s){st(z(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,s)}function El(e,t,s,o){let l=o.includes(".")?Hl(s,o):()=>s[o];if(ve(e)){const n=t[e];H(n)&&je(l,n)}else if(H(e))je(l,e.bind(s));else if(de(e))if(z(e))e.forEach(n=>El(n,t,s,o));else{const n=H(e.handler)?e.handler.bind(s):t[e.handler];H(n)&&je(l,n,e)}}function Al(e){const t=e.type,{mixins:s,extends:o}=t,{mixins:l,optionsCache:n,config:{optionMergeStrategies:r}}=e.appContext,i=n.get(t);let u;return i?u=i:!l.length&&!s&&!o?u=t:(u={},l.length&&l.forEach(m=>Ns(u,m,r,!0)),Ns(u,t,r)),de(t)&&n.set(t,u),u}function Ns(e,t,s,o=!1){const{mixins:l,extends:n}=t;n&&Ns(e,n,s,!0),l&&l.forEach(r=>Ns(e,r,s,!0));for(const r in t)if(!(o&&r==="expose")){const i=Nr[r]||s&&s[r];e[r]=i?i(e[r],t[r]):t[r]}return e}const Nr={data:$l,props:Pl,emits:Pl,methods:fs,computed:fs,beforeCreate:$e,created:$e,beforeMount:$e,mounted:$e,beforeUpdate:$e,updated:$e,beforeDestroy:$e,beforeUnmount:$e,destroyed:$e,unmounted:$e,activated:$e,deactivated:$e,errorCaptured:$e,serverPrefetch:$e,components:fs,directives:fs,watch:qr,provide:$l,inject:Br};function $l(e,t){return t?e?function(){return Ee(H(e)?e.call(this,this):e,H(t)?t.call(this,this):t)}:t:e}function Br(e,t){return fs(Ao(e),Ao(t))}function Ao(e){if(z(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function $e(e,t){return e?[...new Set([].concat(e,t))]:t}function fs(e,t){return e?Ee(Object.create(null),e,t):t}function Pl(e,t){return e?z(e)&&z(t)?[...new Set([...e,...t])]:Ee(Object.create(null),Tl(e),Tl(t??{})):t}function qr(e,t){if(!e)return t;if(!t)return e;const s=Ee(Object.create(null),e);for(const o in t)s[o]=$e(e[o],t[o]);return s}function Vl(){return{app:null,config:{isNativeTag:An,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let zr=0;function jr(e,t){return function(o,l=null){H(o)||(o=Ee({},o)),l!=null&&!de(l)&&(l=null);const n=Vl(),r=new WeakSet,i=[];let u=!1;const m=n.app={_uid:zr++,_component:o,_props:l,_container:null,_context:n,_instance:null,version:$i,get config(){return n.config},set config(f){},use(f,...g){return r.has(f)||(f&&H(f.install)?(r.add(f),f.install(m,...g)):H(f)&&(r.add(f),f(m,...g))),m},mixin(f){return n.mixins.includes(f)||n.mixins.push(f),m},component(f,g){return g?(n.components[f]=g,m):n.components[f]},directive(f,g){return g?(n.directives[f]=g,m):n.directives[f]},mount(f,g,E){if(!u){const b=m._ceVNode||J(o,l);return b.appContext=n,E===!0?E="svg":E===!1&&(E=void 0),e(b,f,E),u=!0,m._container=f,f.__vue_app__=m,Gs(b.component)}},onUnmount(f){i.push(f)},unmount(){u&&(st(i,m._instance,16),e(null,m._container),delete m._container.__vue_app__)},provide(f,g){return n.provides[f]=g,m},runWithContext(f){const g=Gt;Gt=m;try{return f()}finally{Gt=g}}};return m}}let Gt=null;function Hr(e,t){if(Pe){let s=Pe.provides;const o=Pe.parent&&Pe.parent.provides;o===s&&(s=Pe.provides=Object.create(o)),s[e]=t}}function Bs(e,t,s=!1){const o=bi();if(o||Gt){let l=Gt?Gt._context.provides:o?o.parent==null||o.ce?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides:void 0;if(l&&e in l)return l[e];if(arguments.length>1)return s&&H(t)?t.call(o&&o.proxy):t}}const Ml={},Ul=()=>Object.create(Ml),Il=e=>Object.getPrototypeOf(e)===Ml;function Kr(e,t,s,o=!1){const l={},n=Ul();e.propsDefaults=Object.create(null),Dl(e,t,l,n);for(const r in e.propsOptions[0])r in l||(l[r]=void 0);s?e.props=o?l:lr(l):e.type.props?e.props=l:e.props=n,e.attrs=n}function Wr(e,t,s,o){const{props:l,attrs:n,vnode:{patchFlag:r}}=e,i=Y(l),[u]=e.propsOptions;let m=!1;if((o||r>0)&&!(r&16)){if(r&8){const f=e.vnode.dynamicProps;for(let g=0;g<f.length;g++){let E=f[g];if(qs(e.emitsOptions,E))continue;const b=t[E];if(u)if(se(n,E))b!==n[E]&&(n[E]=b,m=!0);else{const _=gt(E);l[_]=$o(u,i,_,b,e,!1)}else b!==n[E]&&(n[E]=b,m=!0)}}}else{Dl(e,t,l,n)&&(m=!0);let f;for(const g in i)(!t||!se(t,g)&&((f=Vt(g))===g||!se(t,f)))&&(u?s&&(s[g]!==void 0||s[f]!==void 0)&&(l[g]=$o(u,i,g,void 0,e,!0)):delete l[g]);if(n!==i)for(const g in n)(!t||!se(t,g))&&(delete n[g],m=!0)}m&&at(e.attrs,"set","")}function Dl(e,t,s,o){const[l,n]=e.propsOptions;let r=!1,i;if(t)for(let u in t){if(es(u))continue;const m=t[u];let f;l&&se(l,f=gt(u))?!n||!n.includes(f)?s[f]=m:(i||(i={}))[f]=m:qs(e.emitsOptions,u)||(!(u in o)||m!==o[u])&&(o[u]=m,r=!0)}if(n){const u=Y(s),m=i||ne;for(let f=0;f<n.length;f++){const g=n[f];s[g]=$o(l,u,g,m[g],e,!se(m,g))}}return r}function $o(e,t,s,o,l,n){const r=e[s];if(r!=null){const i=se(r,"default");if(i&&o===void 0){const u=r.default;if(r.type!==Function&&!r.skipFactory&&H(u)){const{propsDefaults:m}=l;if(s in m)o=m[s];else{const f=gs(l);o=m[s]=u.call(null,t),f()}}else o=u;l.ce&&l.ce._setProp(s,o)}r[0]&&(n&&!i?o=!1:r[1]&&(o===""||o===Vt(s))&&(o=!0))}return o}const Gr=new WeakMap;function Ll(e,t,s=!1){const o=s?Gr:t.propsCache,l=o.get(e);if(l)return l;const n=e.props,r={},i=[];let u=!1;if(!H(e)){const f=g=>{u=!0;const[E,b]=Ll(g,t,!0);Ee(r,E),b&&i.push(...b)};!s&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!n&&!u)return de(e)&&o.set(e,Ft),Ft;if(z(n))for(let f=0;f<n.length;f++){const g=gt(n[f]);Ol(g)&&(r[g]=ne)}else if(n)for(const f in n){const g=gt(f);if(Ol(g)){const E=n[f],b=r[g]=z(E)||H(E)?{type:E}:Ee({},E),_=b.type;let w=!1,X=!0;if(z(_))for(let K=0;K<_.length;++K){const W=_[K],Z=H(W)&&W.name;if(Z==="Boolean"){w=!0;break}else Z==="String"&&(X=!1)}else w=H(_)&&_.name==="Boolean";b[0]=w,b[1]=X,(w||se(b,"default"))&&i.push(g)}}const m=[r,i];return de(e)&&o.set(e,m),m}function Ol(e){return e[0]!=="$"&&!es(e)}const Po=e=>e==="_"||e==="__"||e==="_ctx"||e==="$stable",Vo=e=>z(e)?e.map(lt):[lt(e)],Qr=(e,t,s)=>{if(t._n)return t;const o=xr((...l)=>Vo(t(...l)),s);return o._c=!1,o},Rl=(e,t,s)=>{const o=e._ctx;for(const l in e){if(Po(l))continue;const n=e[l];if(H(n))t[l]=Qr(l,n,o);else if(n!=null){const r=Vo(n);t[l]=()=>r}}},Fl=(e,t)=>{const s=Vo(t);e.slots.default=()=>s},Nl=(e,t,s)=>{for(const o in t)(s||!Po(o))&&(e[o]=t[o])},Zr=(e,t,s)=>{const o=e.slots=Ul();if(e.vnode.shapeFlag&32){const l=t.__;l&&no(o,"__",l,!0);const n=t._;n?(Nl(o,t,s),s&&no(o,"_",n,!0)):Rl(t,o)}else t&&Fl(e,t)},Yr=(e,t,s)=>{const{vnode:o,slots:l}=e;let n=!0,r=ne;if(o.shapeFlag&32){const i=t._;i?s&&i===1?n=!1:Nl(l,t,s):(n=!t.$stable,Rl(t,l)),r=t}else t&&(Fl(e,t),r={default:1});if(n)for(const i in l)!Po(i)&&r[i]==null&&delete l[i]},Ne=di;function Jr(e){return Xr(e)}function Xr(e,t){const s=Es();s.__VUE__=!0;const{insert:o,remove:l,patchProp:n,createElement:r,createText:i,createComment:u,setText:m,setElementText:f,parentNode:g,nextSibling:E,setScopeId:b=Xe,insertStaticContent:_}=e,w=(c,p,y,T=null,k=null,C=null,P=void 0,$=null,A=!!p.dynamicChildren)=>{if(c===p)return;c&&!ms(c,p)&&(T=Jt(c),De(c,k,C,!0),c=null),p.patchFlag===-2&&(A=!1,p.dynamicChildren=null);const{type:S,ref:O,shapeFlag:V}=p;switch(S){case zs:X(c,p,y,T);break;case wt:K(c,p,y,T);break;case js:c==null&&W(p,y,T,P);break;case Re:Ke(c,p,y,T,k,C,P,$,A);break;default:V&1?pe(c,p,y,T,k,C,P,$,A):V&6?pt(c,p,y,T,k,C,P,$,A):(V&64||V&128)&&S.process(c,p,y,T,k,C,P,$,A,Pt)}O!=null&&k?as(O,c&&c.ref,C,p||c,!p):O==null&&c&&c.ref!=null&&as(c.ref,null,C,c,!0)},X=(c,p,y,T)=>{if(c==null)o(p.el=i(p.children),y,T);else{const k=p.el=c.el;p.children!==c.children&&m(k,p.children)}},K=(c,p,y,T)=>{c==null?o(p.el=u(p.children||""),y,T):p.el=c.el},W=(c,p,y,T)=>{[c.el,c.anchor]=_(c.children,p,y,T,c.el,c.anchor)},Z=({el:c,anchor:p},y,T)=>{let k;for(;c&&c!==p;)k=E(c),o(c,y,T),c=k;o(p,y,T)},R=({el:c,anchor:p})=>{let y;for(;c&&c!==p;)y=E(c),l(c),c=y;l(p)},pe=(c,p,y,T,k,C,P,$,A)=>{p.type==="svg"?P="svg":p.type==="math"&&(P="mathml"),c==null?he(p,y,T,k,C,P,$,A):Et(c,p,k,C,P,$,A)},he=(c,p,y,T,k,C,P,$)=>{let A,S;const{props:O,shapeFlag:V,transition:D,dirs:N}=c;if(A=c.el=r(c.type,C,O&&O.is,O),V&8?f(A,c.children):V&16&&Ue(c.children,A,null,T,k,Mo(c,C),P,$),N&&Dt(c,null,T,"created"),me(A,c,c.scopeId,P,T),O){for(const le in O)le!=="value"&&!es(le)&&n(A,le,null,O[le],C,T);"value"in O&&n(A,"value",null,O.value,C),(S=O.onVnodeBeforeMount)&&nt(S,T,c)}N&&Dt(c,null,T,"beforeMount");const G=ei(k,D);G&&D.beforeEnter(A),o(A,p,y),((S=O&&O.onVnodeMounted)||G||N)&&Ne(()=>{S&&nt(S,T,c),G&&D.enter(A),N&&Dt(c,null,T,"mounted")},k)},me=(c,p,y,T,k)=>{if(y&&b(c,y),T)for(let C=0;C<T.length;C++)b(c,T[C]);if(k){let C=k.subTree;if(p===C||Ql(C.type)&&(C.ssContent===p||C.ssFallback===p)){const P=k.vnode;me(c,P,P.scopeId,P.slotScopeIds,k.parent)}}},Ue=(c,p,y,T,k,C,P,$,A=0)=>{for(let S=A;S<c.length;S++){const O=c[S]=$?xt(c[S]):lt(c[S]);w(null,O,p,y,T,k,C,P,$)}},Et=(c,p,y,T,k,C,P)=>{const $=p.el=c.el;let{patchFlag:A,dynamicChildren:S,dirs:O}=p;A|=c.patchFlag&16;const V=c.props||ne,D=p.props||ne;let N;if(y&&Lt(y,!1),(N=D.onVnodeBeforeUpdate)&&nt(N,y,p,c),O&&Dt(p,c,y,"beforeUpdate"),y&&Lt(y,!0),(V.innerHTML&&D.innerHTML==null||V.textContent&&D.textContent==null)&&f($,""),S?Fe(c.dynamicChildren,S,$,y,T,Mo(p,k),C):P||te(c,p,$,null,y,T,Mo(p,k),C,!1),A>0){if(A&16)Ie($,V,D,y,k);else if(A&2&&V.class!==D.class&&n($,"class",null,D.class,k),A&4&&n($,"style",V.style,D.style,k),A&8){const G=p.dynamicProps;for(let le=0;le<G.length;le++){const Q=G[le],ge=V[Q],Te=D[Q];(Te!==ge||Q==="value")&&n($,Q,ge,Te,k,y)}}A&1&&c.children!==p.children&&f($,p.children)}else!P&&S==null&&Ie($,V,D,y,k);((N=D.onVnodeUpdated)||O)&&Ne(()=>{N&&nt(N,y,p,c),O&&Dt(p,c,y,"updated")},T)},Fe=(c,p,y,T,k,C,P)=>{for(let $=0;$<p.length;$++){const A=c[$],S=p[$],O=A.el&&(A.type===Re||!ms(A,S)||A.shapeFlag&198)?g(A.el):y;w(A,S,O,null,T,k,C,P,!0)}},Ie=(c,p,y,T,k)=>{if(p!==y){if(p!==ne)for(const C in p)!es(C)&&!(C in y)&&n(c,C,p[C],null,k,T);for(const C in y){if(es(C))continue;const P=y[C],$=p[C];P!==$&&C!=="value"&&n(c,C,$,P,k,T)}"value"in y&&n(c,"value",p.value,y.value,k)}},Ke=(c,p,y,T,k,C,P,$,A)=>{const S=p.el=c?c.el:i(""),O=p.anchor=c?c.anchor:i("");let{patchFlag:V,dynamicChildren:D,slotScopeIds:N}=p;N&&($=$?$.concat(N):N),c==null?(o(S,y,T),o(O,y,T),Ue(p.children||[],y,O,k,C,P,$,A)):V>0&&V&64&&D&&c.dynamicChildren?(Fe(c.dynamicChildren,D,y,k,C,P,$),(p.key!=null||k&&p===k.subTree)&&Bl(c,p,!0)):te(c,p,y,O,k,C,P,$,A)},pt=(c,p,y,T,k,C,P,$,A)=>{p.slotScopeIds=$,c==null?p.shapeFlag&512?k.ctx.activate(p,y,T,P,A):F(p,y,T,k,C,P,A):x(c,p,A)},F=(c,p,y,T,k,C,P)=>{const $=c.component=yi(c,T,k);if(kl(c)&&($.ctx.renderer=Pt),wi($,!1,P),$.asyncDep){if(k&&k.registerDep($,I,P),!c.el){const A=$.subTree=J(wt);K(null,A,p,y),c.placeholder=A.el}}else I($,c,p,y,k,C,P)},x=(c,p,y)=>{const T=p.component=c.component;if(ui(c,p,y))if(T.asyncDep&&!T.asyncResolved){ee(T,p,y);return}else T.next=p,T.update();else p.el=c.el,T.vnode=p},I=(c,p,y,T,k,C,P)=>{const $=()=>{if(c.isMounted){let{next:V,bu:D,u:N,parent:G,vnode:le}=c;{const Qe=ql(c);if(Qe){V&&(V.el=le.el,ee(c,V,P)),Qe.asyncDep.then(()=>{c.isUnmounted||$()});return}}let Q=V,ge;Lt(c,!1),V?(V.el=le.el,ee(c,V,P)):V=le,D&&Ss(D),(ge=V.props&&V.props.onVnodeBeforeUpdate)&&nt(ge,G,V,le),Lt(c,!0);const Te=Wl(c),Ge=c.subTree;c.subTree=Te,w(Ge,Te,g(Ge.el),Jt(Ge),c,k,C),V.el=Te.el,Q===null&&ci(c,Te.el),N&&Ne(N,k),(ge=V.props&&V.props.onVnodeUpdated)&&Ne(()=>nt(ge,G,V,le),k)}else{let V;const{el:D,props:N}=p,{bm:G,m:le,parent:Q,root:ge,type:Te}=c,Ge=us(p);Lt(c,!1),G&&Ss(G),!Ge&&(V=N&&N.onVnodeBeforeMount)&&nt(V,Q,p),Lt(c,!0);{ge.ce&&ge.ce._def.shadowRoot!==!1&&ge.ce._injectChildStyle(Te);const Qe=c.subTree=Wl(c);w(null,Qe,y,T,c,k,C),p.el=Qe.el}if(le&&Ne(le,k),!Ge&&(V=N&&N.onVnodeMounted)){const Qe=p;Ne(()=>nt(V,Q,Qe),k)}(p.shapeFlag&256||Q&&us(Q.vnode)&&Q.vnode.shapeFlag&256)&&c.a&&Ne(c.a,k),c.isMounted=!0,p=y=T=null}};c.scope.on();const A=c.effect=new Qo($);c.scope.off();const S=c.update=A.run.bind(A),O=c.job=A.runIfDirty.bind(A);O.i=c,O.id=c.uid,A.scheduler=()=>xo(O),Lt(c,!0),S()},ee=(c,p,y)=>{p.component=c;const T=c.vnode.props;c.vnode=p,c.next=null,Wr(c,p.props,T,y),Yr(c,p.children,y),et(),_l(c),tt()},te=(c,p,y,T,k,C,P,$,A=!1)=>{const S=c&&c.children,O=c?c.shapeFlag:0,V=p.children,{patchFlag:D,shapeFlag:N}=p;if(D>0){if(D&128){At(S,V,y,T,k,C,P,$,A);return}else if(D&256){rt(S,V,y,T,k,C,P,$,A);return}}N&8?(O&16&&it(S,k,C),V!==S&&f(y,V)):O&16?N&16?At(S,V,y,T,k,C,P,$,A):it(S,k,C,!0):(O&8&&f(y,""),N&16&&Ue(V,y,T,k,C,P,$,A))},rt=(c,p,y,T,k,C,P,$,A)=>{c=c||Ft,p=p||Ft;const S=c.length,O=p.length,V=Math.min(S,O);let D;for(D=0;D<V;D++){const N=p[D]=A?xt(p[D]):lt(p[D]);w(c[D],N,y,null,k,C,P,$,A)}S>O?it(c,k,C,!0,!1,V):Ue(p,y,T,k,C,P,$,A,V)},At=(c,p,y,T,k,C,P,$,A)=>{let S=0;const O=p.length;let V=c.length-1,D=O-1;for(;S<=V&&S<=D;){const N=c[S],G=p[S]=A?xt(p[S]):lt(p[S]);if(ms(N,G))w(N,G,y,null,k,C,P,$,A);else break;S++}for(;S<=V&&S<=D;){const N=c[V],G=p[D]=A?xt(p[D]):lt(p[D]);if(ms(N,G))w(N,G,y,null,k,C,P,$,A);else break;V--,D--}if(S>V){if(S<=D){const N=D+1,G=N<O?p[N].el:T;for(;S<=D;)w(null,p[S]=A?xt(p[S]):lt(p[S]),y,G,k,C,P,$,A),S++}}else if(S>D)for(;S<=V;)De(c[S],k,C,!0),S++;else{const N=S,G=S,le=new Map;for(S=G;S<=D;S++){const h=p[S]=A?xt(p[S]):lt(p[S]);h.key!=null&&le.set(h.key,S)}let Q,ge=0;const Te=D-G+1;let Ge=!1,Qe=0;const Rt=new Array(Te);for(S=0;S<Te;S++)Rt[S]=0;for(S=N;S<=V;S++){const h=c[S];if(ge>=Te){De(h,k,C,!0);continue}let d;if(h.key!=null)d=le.get(h.key);else for(Q=G;Q<=D;Q++)if(Rt[Q-G]===0&&ms(h,p[Q])){d=Q;break}d===void 0?De(h,k,C,!0):(Rt[d-G]=S+1,d>=Qe?Qe=d:Ge=!0,w(h,p[d],y,null,k,C,P,$,A),ge++)}const Xt=Ge?ti(Rt):Ft;for(Q=Xt.length-1,S=Te-1;S>=0;S--){const h=G+S,d=p[h],v=p[h+1],q=h+1<O?v.el||v.placeholder:T;Rt[S]===0?w(null,d,y,q,k,C,P,$,A):Ge&&(Q<0||S!==Xt[Q]?We(d,y,q,2):Q--)}}},We=(c,p,y,T,k=null)=>{const{el:C,type:P,transition:$,children:A,shapeFlag:S}=c;if(S&6){We(c.component.subTree,p,y,T);return}if(S&128){c.suspense.move(p,y,T);return}if(S&64){P.move(c,p,y,Pt);return}if(P===Re){o(C,p,y);for(let V=0;V<A.length;V++)We(A[V],p,y,T);o(c.anchor,p,y);return}if(P===js){Z(c,p,y);return}if(T!==2&&S&1&&$)if(T===0)$.beforeEnter(C),o(C,p,y),Ne(()=>$.enter(C),k);else{const{leave:V,delayLeave:D,afterLeave:N}=$,G=()=>{c.ctx.isUnmounted?l(C):o(C,p,y)},le=()=>{V(C,()=>{G(),N&&N()})};D?D(C,G,le):le()}else o(C,p,y)},De=(c,p,y,T=!1,k=!1)=>{const{type:C,props:P,ref:$,children:A,dynamicChildren:S,shapeFlag:O,patchFlag:V,dirs:D,cacheIndex:N}=c;if(V===-2&&(k=!1),$!=null&&(et(),as($,null,y,c,!0),tt()),N!=null&&(p.renderCache[N]=void 0),O&256){p.ctx.deactivate(c);return}const G=O&1&&D,le=!us(c);let Q;if(le&&(Q=P&&P.onVnodeBeforeUnmount)&&nt(Q,p,c),O&6)Ce(c.component,y,T);else{if(O&128){c.suspense.unmount(y,T);return}G&&Dt(c,null,p,"beforeUnmount"),O&64?c.type.remove(c,p,y,Pt,T):S&&!S.hasOnce&&(C!==Re||V>0&&V&64)?it(S,p,y,!1,!0):(C===Re&&V&384||!k&&O&16)&&it(A,p,y),T&&$t(c)}(le&&(Q=P&&P.onVnodeUnmounted)||G)&&Ne(()=>{Q&&nt(Q,p,c),G&&Dt(c,null,p,"unmounted")},y)},$t=c=>{const{type:p,el:y,anchor:T,transition:k}=c;if(p===Re){Yt(y,T);return}if(p===js){R(c);return}const C=()=>{l(y),k&&!k.persisted&&k.afterLeave&&k.afterLeave()};if(c.shapeFlag&1&&k&&!k.persisted){const{leave:P,delayLeave:$}=k,A=()=>P(y,C);$?$(c.el,C,A):A()}else C()},Yt=(c,p)=>{let y;for(;c!==p;)y=E(c),l(c),c=y;l(p)},Ce=(c,p,y)=>{const{bum:T,scope:k,job:C,subTree:P,um:$,m:A,a:S,parent:O,slots:{__:V}}=c;zl(A),zl(S),T&&Ss(T),O&&z(V)&&V.forEach(D=>{O.renderCache[D]=void 0}),k.stop(),C&&(C.flags|=8,De(P,c,p,y)),$&&Ne($,p),Ne(()=>{c.isUnmounted=!0},p),p&&p.pendingBranch&&!p.isUnmounted&&c.asyncDep&&!c.asyncResolved&&c.suspenseId===p.pendingId&&(p.deps--,p.deps===0&&p.resolve())},it=(c,p,y,T=!1,k=!1,C=0)=>{for(let P=C;P<c.length;P++)De(c[P],p,y,T,k)},Jt=c=>{if(c.shapeFlag&6)return Jt(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const p=E(c.anchor||c.el),y=p&&p[kr];return y?E(y):p};let xs=!1;const Xs=(c,p,y)=>{c==null?p._vnode&&De(p._vnode,null,null,!0):w(p._vnode||null,c,p,null,null,null,y),p._vnode=c,xs||(xs=!0,_l(),yl(),xs=!1)},Pt={p:w,um:De,m:We,r:$t,mt:F,mc:Ue,pc:te,pbc:Fe,n:Jt,o:e};return{render:Xs,hydrate:void 0,createApp:jr(Xs)}}function Mo({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function Lt({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function ei(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Bl(e,t,s=!1){const o=e.children,l=t.children;if(z(o)&&z(l))for(let n=0;n<o.length;n++){const r=o[n];let i=l[n];i.shapeFlag&1&&!i.dynamicChildren&&((i.patchFlag<=0||i.patchFlag===32)&&(i=l[n]=xt(l[n]),i.el=r.el),!s&&i.patchFlag!==-2&&Bl(r,i)),i.type===zs&&(i.el=r.el),i.type===wt&&!i.el&&(i.el=r.el)}}function ti(e){const t=e.slice(),s=[0];let o,l,n,r,i;const u=e.length;for(o=0;o<u;o++){const m=e[o];if(m!==0){if(l=s[s.length-1],e[l]<m){t[o]=l,s.push(o);continue}for(n=0,r=s.length-1;n<r;)i=n+r>>1,e[s[i]]<m?n=i+1:r=i;m<e[s[n]]&&(n>0&&(t[o]=s[n-1]),s[n]=o)}}for(n=s.length,r=s[n-1];n-- >0;)s[n]=r,r=t[r];return s}function ql(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ql(t)}function zl(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const si=Symbol.for("v-scx"),oi=()=>Bs(si);function je(e,t,s){return jl(e,t,s)}function jl(e,t,s=ne){const{immediate:o,deep:l,flush:n,once:r}=s,i=Ee({},s),u=t&&o||!t&&n!=="post";let m;if(_s){if(n==="sync"){const b=oi();m=b.__watcherHandles||(b.__watcherHandles=[])}else if(!u){const b=()=>{};return b.stop=Xe,b.resume=Xe,b.pause=Xe,b}}const f=Pe;i.call=(b,_,w)=>st(b,f,_,w);let g=!1;n==="post"?i.scheduler=b=>{Ne(b,f&&f.suspense)}:n!=="sync"&&(g=!0,i.scheduler=(b,_)=>{_?b():xo(b)}),i.augmentJob=b=>{t&&(b.flags|=4),g&&(b.flags|=2,f&&(b.id=f.uid,b.i=f))};const E=pr(e,t,i);return _s&&(m?m.push(E):u&&E()),E}function li(e,t,s){const o=this.proxy,l=ve(e)?e.includes(".")?Hl(o,e):()=>o[e]:e.bind(o,o);let n;H(t)?n=t:(n=t.handler,s=t);const r=gs(this),i=jl(l,n.bind(o),s);return r(),i}function Hl(e,t){const s=t.split(".");return()=>{let o=e;for(let l=0;l<s.length&&o;l++)o=o[s[l]];return o}}const ni=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${gt(t)}Modifiers`]||e[`${Vt(t)}Modifiers`];function ri(e,t,...s){if(e.isUnmounted)return;const o=e.vnode.props||ne;let l=s;const n=t.startsWith("update:"),r=n&&ni(o,t.slice(7));r&&(r.trim&&(l=s.map(f=>ve(f)?f.trim():f)),r.number&&(l=s.map(ro)));let i,u=o[i=lo(t)]||o[i=lo(gt(t))];!u&&n&&(u=o[i=lo(Vt(t))]),u&&st(u,e,6,l);const m=o[i+"Once"];if(m){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,st(m,e,6,l)}}function Kl(e,t,s=!1){const o=t.emitsCache,l=o.get(e);if(l!==void 0)return l;const n=e.emits;let r={},i=!1;if(!H(e)){const u=m=>{const f=Kl(m,t,!0);f&&(i=!0,Ee(r,f))};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!n&&!i?(de(e)&&o.set(e,null),null):(z(n)?n.forEach(u=>r[u]=null):Ee(r,n),de(e)&&o.set(e,r),r)}function qs(e,t){return!e||!ks(t)?!1:(t=t.slice(2).replace(/Once$/,""),se(e,t[0].toLowerCase()+t.slice(1))||se(e,Vt(t))||se(e,t))}function of(){}function Wl(e){const{type:t,vnode:s,proxy:o,withProxy:l,propsOptions:[n],slots:r,attrs:i,emit:u,render:m,renderCache:f,props:g,data:E,setupState:b,ctx:_,inheritAttrs:w}=e,X=Rs(e);let K,W;try{if(s.shapeFlag&4){const R=l||o,pe=R;K=lt(m.call(pe,R,f,g,b,E,_)),W=i}else{const R=t;K=lt(R.length>1?R(g,{attrs:i,slots:r,emit:u}):R(g,null)),W=t.props?i:ii(i)}}catch(R){ps.length=0,Ls(R,e,1),K=J(wt)}let Z=K;if(W&&w!==!1){const R=Object.keys(W),{shapeFlag:pe}=Z;R.length&&pe&7&&(n&&R.some(to)&&(W=ai(W,n)),Z=Qt(Z,W,!1,!0))}return s.dirs&&(Z=Qt(Z,null,!1,!0),Z.dirs=Z.dirs?Z.dirs.concat(s.dirs):s.dirs),s.transition&&ko(Z,s.transition),K=Z,Rs(X),K}const ii=e=>{let t;for(const s in e)(s==="class"||s==="style"||ks(s))&&((t||(t={}))[s]=e[s]);return t},ai=(e,t)=>{const s={};for(const o in e)(!to(o)||!(o.slice(9)in t))&&(s[o]=e[o]);return s};function ui(e,t,s){const{props:o,children:l,component:n}=e,{props:r,children:i,patchFlag:u}=t,m=n.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&u>=0){if(u&1024)return!0;if(u&16)return o?Gl(o,r,m):!!r;if(u&8){const f=t.dynamicProps;for(let g=0;g<f.length;g++){const E=f[g];if(r[E]!==o[E]&&!qs(m,E))return!0}}}else return(l||i)&&(!i||!i.$stable)?!0:o===r?!1:o?r?Gl(o,r,m):!0:!!r;return!1}function Gl(e,t,s){const o=Object.keys(t);if(o.length!==Object.keys(e).length)return!0;for(let l=0;l<o.length;l++){const n=o[l];if(t[n]!==e[n]&&!qs(s,n))return!0}return!1}function ci({vnode:e,parent:t},s){for(;t;){const o=t.subTree;if(o.suspense&&o.suspense.activeBranch===e&&(o.el=e.el),o===e)(e=t.vnode).el=s,t=t.parent;else break}}const Ql=e=>e.__isSuspense;function di(e,t){t&&t.pendingBranch?z(e)?t.effects.push(...e):t.effects.push(e):wr(e)}const Re=Symbol.for("v-fgt"),zs=Symbol.for("v-txt"),wt=Symbol.for("v-cmt"),js=Symbol.for("v-stc"),ps=[];let Be=null;function M(e=!1){ps.push(Be=e?null:[])}function fi(){ps.pop(),Be=ps[ps.length-1]||null}let hs=1;function Zl(e,t=!1){hs+=e,e<0&&Be&&t&&(Be.hasOnce=!0)}function Yl(e){return e.dynamicChildren=hs>0?Be||Ft:null,fi(),hs>0&&Be&&Be.push(e),e}function U(e,t,s,o,l,n){return Yl(a(e,t,s,o,l,n,!0))}function Hs(e,t,s,o,l){return Yl(J(e,t,s,o,l,!0))}function Jl(e){return e?e.__v_isVNode===!0:!1}function ms(e,t){return e.type===t.type&&e.key===t.key}const Xl=({key:e})=>e??null,Ks=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?ve(e)||xe(e)||H(e)?{i:ze,r:e,k:t,f:!!s}:e:null);function a(e,t=null,s=null,o=0,l=null,n=e===Re?0:1,r=!1,i=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Xl(t),ref:t&&Ks(t),scopeId:wl,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:n,patchFlag:o,dynamicProps:l,dynamicChildren:null,appContext:null,ctx:ze};return i?(Uo(u,s),n&128&&e.normalize(u)):s&&(u.shapeFlag|=ve(s)?8:16),hs>0&&!r&&Be&&(u.patchFlag>0||n&6)&&u.patchFlag!==32&&Be.push(u),u}const J=pi;function pi(e,t=null,s=null,o=0,l=null,n=!1){if((!e||e===Lr)&&(e=wt),Jl(e)){const i=Qt(e,t,!0);return s&&Uo(i,s),hs>0&&!n&&Be&&(i.shapeFlag&6?Be[Be.indexOf(e)]=i:Be.push(i)),i.patchFlag=-2,i}if(Ai(e)&&(e=e.__vccOpts),t){t=hi(t);let{class:i,style:u}=t;i&&!ve(i)&&(t.class=_e(i)),de(u)&&(bo(u)&&!z(u)&&(u=Ee({},u)),t.style=Bt(u))}const r=ve(e)?1:Ql(e)?128:Cr(e)?64:de(e)?4:H(e)?2:0;return a(e,t,s,o,l,r,n,!0)}function hi(e){return e?bo(e)||Il(e)?Ee({},e):e:null}function Qt(e,t,s=!1,o=!1){const{props:l,ref:n,patchFlag:r,children:i,transition:u}=e,m=t?vi(l||{},t):l,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:m,key:m&&Xl(m),ref:t&&t.ref?s&&n?z(n)?n.concat(Ks(t)):[n,Ks(t)]:Ks(t):n,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Re?r===-1?16:r|16:r,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:u,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Qt(e.ssContent),ssFallback:e.ssFallback&&Qt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return u&&o&&ko(f,u.clone(f)),f}function vs(e=" ",t=0){return J(zs,null,e,t)}function mi(e,t){const s=J(js,null,e);return s.staticCount=t,s}function B(e="",t=!1){return t?(M(),Hs(wt,null,e)):J(wt,null,e)}function lt(e){return e==null||typeof e=="boolean"?J(wt):z(e)?J(Re,null,e.slice()):Jl(e)?xt(e):J(zs,null,String(e))}function xt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Qt(e)}function Uo(e,t){let s=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(z(t))s=16;else if(typeof t=="object")if(o&65){const l=t.default;l&&(l._c&&(l._d=!1),Uo(e,l()),l._c&&(l._d=!0));return}else{s=32;const l=t._;!l&&!Il(t)?t._ctx=ze:l===3&&ze&&(ze.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else H(t)?(t={default:t,_ctx:ze},s=32):(t=String(t),o&64?(s=16,t=[vs(t)]):s=8);e.children=t,e.shapeFlag|=s}function vi(...e){const t={};for(let s=0;s<e.length;s++){const o=e[s];for(const l in o)if(l==="class")t.class!==o.class&&(t.class=_e([t.class,o.class]));else if(l==="style")t.style=Bt([t.style,o.style]);else if(ks(l)){const n=t[l],r=o[l];r&&n!==r&&!(z(n)&&n.includes(r))&&(t[l]=n?[].concat(n,r):r)}else l!==""&&(t[l]=o[l])}return t}function nt(e,t,s,o=null){st(e,t,7,[s,o])}const gi=Vl();let _i=0;function yi(e,t,s){const o=e.type,l=(t?t.appContext:e.appContext)||gi,n={uid:_i++,vnode:e,type:o,parent:t,appContext:l,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Rn(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(l.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Ll(o,l),emitsOptions:Kl(o,l),emit:null,emitted:null,propsDefaults:ne,inheritAttrs:o.inheritAttrs,ctx:ne,data:ne,props:ne,attrs:ne,slots:ne,refs:ne,setupState:ne,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return n.ctx={_:n},n.root=t?t.root:n,n.emit=ri.bind(null,n),e.ce&&e.ce(n),n}let Pe=null;const bi=()=>Pe||ze;let Ws,Io;{const e=Es(),t=(s,o)=>{let l;return(l=e[s])||(l=e[s]=[]),l.push(o),n=>{l.length>1?l.forEach(r=>r(n)):l[0](n)}};Ws=t("__VUE_INSTANCE_SETTERS__",s=>Pe=s),Io=t("__VUE_SSR_SETTERS__",s=>_s=s)}const gs=e=>{const t=Pe;return Ws(e),e.scope.on(),()=>{e.scope.off(),Ws(t)}},en=()=>{Pe&&Pe.scope.off(),Ws(null)};function tn(e){return e.vnode.shapeFlag&4}let _s=!1;function wi(e,t=!1,s=!1){t&&Io(t);const{props:o,children:l}=e.vnode,n=tn(e);Kr(e,o,n,t),Zr(e,l,s||t);const r=n?xi(e,t):void 0;return t&&Io(!1),r}function xi(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Or);const{setup:o}=s;if(o){et();const l=e.setupContext=o.length>1?Ci(e):null,n=gs(e),r=jt(o,e,0,[e.props,l]),i=Bo(r);if(tt(),n(),(i||e.sp)&&!us(e)&&xl(e),i){if(r.then(en,en),t)return r.then(u=>{sn(e,u)}).catch(u=>{Ls(u,e,0)});e.asyncDep=r}else sn(e,r)}else on(e)}function sn(e,t,s){H(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:de(t)&&(e.setupState=hl(t)),on(e)}function on(e,t,s){const o=e.type;e.render||(e.render=o.render||Xe);{const l=gs(e);et();try{Rr(e)}finally{tt(),l()}}}const ki={get(e,t){return Se(e,"get",""),e[t]}};function Ci(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,ki),slots:e.slots,emit:e.emit,expose:t}}function Gs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(hl(nr(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in ds)return ds[s](e)},has(t,s){return s in t||s in ds}})):e.proxy}const Ti=/(?:^|[-_])(\w)/g,Si=e=>e.replace(Ti,t=>t.toUpperCase()).replace(/[-_]/g,"");function Ei(e,t=!0){return H(e)?e.displayName||e.name:e.name||t&&e.__name}function ln(e,t,s=!1){let o=Ei(t);if(!o&&t.__file){const l=t.__file.match(/([^/\\]+)\.\w+$/);l&&(o=l[1])}if(!o&&e&&e.parent){const l=n=>{for(const r in n)if(n[r]===t)return r};o=l(e.components||e.parent.type.components)||l(e.appContext.components)}return o?Si(o):s?"App":"Anonymous"}function Ai(e){return H(e)&&"__vccOpts"in e}const Ve=(e,t)=>dr(e,t,_s),$i="3.5.18";/** * @vue/runtime-dom v3.5.18 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/let Do;const nn=typeof window<"u"&&window.trustedTypes;if(nn)try{Do=nn.createPolicy("vue",{createHTML:e=>e})}catch{}const rn=Do?e=>Do.createHTML(e):e=>e,Pi="http://www.w3.org/2000/svg",Vi="http://www.w3.org/1998/Math/MathML",ft=typeof document<"u"?document:null,an=ft&&ft.createElement("template"),Mi={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,o)=>{const l=t==="svg"?ft.createElementNS(Pi,e):t==="mathml"?ft.createElementNS(Vi,e):s?ft.createElement(e,{is:s}):ft.createElement(e);return e==="select"&&o&&o.multiple!=null&&l.setAttribute("multiple",o.multiple),l},createText:e=>ft.createTextNode(e),createComment:e=>ft.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ft.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,o,l,n){const r=s?s.previousSibling:t.lastChild;if(l&&(l===n||l.nextSibling))for(;t.insertBefore(l.cloneNode(!0),s),!(l===n||!(l=l.nextSibling)););else{an.innerHTML=rn(o==="svg"?`<svg>${e}</svg>`:o==="mathml"?`<math>${e}</math>`:e);const i=an.content;if(o==="svg"||o==="mathml"){const u=i.firstChild;for(;u.firstChild;)i.appendChild(u.firstChild);i.removeChild(u)}t.insertBefore(i,s)}return[r?r.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},Ui=Symbol("_vtc");function Ii(e,t,s){const o=e[Ui];o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const Qs=Symbol("_vod"),un=Symbol("_vsh"),Zs={beforeMount(e,{value:t},{transition:s}){e[Qs]=e.style.display==="none"?"":e.style.display,s&&t?s.beforeEnter(e):ys(e,t)},mounted(e,{value:t},{transition:s}){s&&t&&s.enter(e)},updated(e,{value:t,oldValue:s},{transition:o}){!t!=!s&&(o?t?(o.beforeEnter(e),ys(e,!0),o.enter(e)):o.leave(e,()=>{ys(e,!1)}):ys(e,t))},beforeUnmount(e,{value:t}){ys(e,t)}};function ys(e,t){e.style.display=t?e[Qs]:"none",e[un]=!t}const Di=Symbol(""),Li=/(^|;)\s*display\s*:/;function Oi(e,t,s){const o=e.style,l=ve(s);let n=!1;if(s&&!l){if(t)if(ve(t))for(const r of t.split(";")){const i=r.slice(0,r.indexOf(":")).trim();s[i]==null&&Ys(o,i,"")}else for(const r in t)s[r]==null&&Ys(o,r,"");for(const r in s)r==="display"&&(n=!0),Ys(o,r,s[r])}else if(l){if(t!==s){const r=o[Di];r&&(s+=";"+r),o.cssText=s,n=Li.test(s)}}else t&&e.removeAttribute("style");Qs in e&&(e[Qs]=n?o.display:"",e[un]&&(o.display="none"))}const cn=/\s*!important$/;function Ys(e,t,s){if(z(s))s.forEach(o=>Ys(e,t,o));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const o=Ri(e,t);cn.test(s)?e.setProperty(Vt(o),s.replace(cn,""),"important"):e[o]=s}}const dn=["Webkit","Moz","ms"],Lo={};function Ri(e,t){const s=Lo[t];if(s)return s;let o=gt(t);if(o!=="filter"&&o in e)return Lo[t]=o;o=jo(o);for(let l=0;l<dn.length;l++){const n=dn[l]+o;if(n in e)return Lo[t]=n}return t}const fn="http://www.w3.org/1999/xlink";function pn(e,t,s,o,l,n=On(t)){o&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(fn,t.slice(6,t.length)):e.setAttributeNS(fn,t,s):s==null||n&&!Ko(s)?e.removeAttribute(t):e.setAttribute(t,n?"":vt(s)?String(s):s)}function hn(e,t,s,o,l){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?rn(s):s);return}const n=e.tagName;if(t==="value"&&n!=="PROGRESS"&&!n.includes("-")){const i=n==="OPTION"?e.getAttribute("value")||"":e.value,u=s==null?e.type==="checkbox"?"on":"":String(s);(i!==u||!("_value"in e))&&(e.value=u),s==null&&e.removeAttribute(t),e._value=s;return}let r=!1;if(s===""||s==null){const i=typeof e[t];i==="boolean"?s=Ko(s):s==null&&i==="string"?(s="",r=!0):i==="number"&&(s=0,r=!0)}try{e[t]=s}catch{}r&&e.removeAttribute(l||t)}function Zt(e,t,s,o){e.addEventListener(t,s,o)}function Fi(e,t,s,o){e.removeEventListener(t,s,o)}const mn=Symbol("_vei");function Ni(e,t,s,o,l=null){const n=e[mn]||(e[mn]={}),r=n[t];if(o&&r)r.value=o;else{const[i,u]=Bi(t);if(o){const m=n[t]=ji(o,l);Zt(e,i,m,u)}else r&&(Fi(e,i,r,u),n[t]=void 0)}}const vn=/(?:Once|Passive|Capture)$/;function Bi(e){let t;if(vn.test(e)){t={};let o;for(;o=e.match(vn);)e=e.slice(0,e.length-o[0].length),t[o[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Vt(e.slice(2)),t]}let Oo=0;const qi=Promise.resolve(),zi=()=>Oo||(qi.then(()=>Oo=0),Oo=Date.now());function ji(e,t){const s=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=s.attached)return;st(Hi(o,s.value),t,5,[o])};return s.value=e,s.attached=zi(),s}function Hi(e,t){if(z(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(o=>l=>!l._stopped&&o&&o(l))}else return t}const gn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ki=(e,t,s,o,l,n)=>{const r=l==="svg";t==="class"?Ii(e,o,r):t==="style"?Oi(e,s,o):ks(t)?to(t)||Ni(e,t,s,o,n):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Wi(e,t,o,r))?(hn(e,t,o),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&pn(e,t,o,r,n,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!ve(o))?hn(e,gt(t),o,n,t):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),pn(e,t,o,r))};function Wi(e,t,s,o){if(o)return!!(t==="innerHTML"||t==="textContent"||t in e&&gn(t)&&H(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const l=e.tagName;if(l==="IMG"||l==="VIDEO"||l==="CANVAS"||l==="SOURCE")return!1}return gn(t)&&ve(s)?!1:t in e}const _n=e=>{const t=e.props["onUpdate:modelValue"]||!1;return z(t)?s=>Ss(t,s):t};function Gi(e){e.target.composing=!0}function yn(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ro=Symbol("_assign"),fe={created(e,{modifiers:{lazy:t,trim:s,number:o}},l){e[Ro]=_n(l);const n=o||l.props&&l.props.type==="number";Zt(e,t?"change":"input",r=>{if(r.target.composing)return;let i=e.value;s&&(i=i.trim()),n&&(i=ro(i)),e[Ro](i)}),s&&Zt(e,"change",()=>{e.value=e.value.trim()}),t||(Zt(e,"compositionstart",Gi),Zt(e,"compositionend",yn),Zt(e,"change",yn))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:o,trim:l,number:n}},r){if(e[Ro]=_n(r),e.composing)return;const i=(n||e.type==="number")&&!/^0\d/.test(e.value)?ro(e.value):e.value,u=t??"";i!==u&&(document.activeElement===e&&e.type!=="range"&&(o&&t===s||l&&e.value.trim()===u)||(e.value=u))}},Qi=["ctrl","shift","alt","meta"],Zi={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Qi.some(s=>e[`${s}Key`]&&!t.includes(s))},He=(e,t)=>{const s=e._withMods||(e._withMods={}),o=t.join(".");return s[o]||(s[o]=(l,...n)=>{for(let r=0;r<t.length;r++){const i=Zi[t[r]];if(i&&i(l,t))return}return e(l,...n)})},Yi=Ee({patchProp:Ki},Mi);let bn;function Ji(){return bn||(bn=Jr(Yi))}const Xi=(...e)=>{const t=Ji().createApp(...e),{mount:s}=t;return t.mount=o=>{const l=ta(o);if(!l)return;const n=t._component;!H(n)&&!n.render&&!n.template&&(n.template=l.innerHTML),l.nodeType===1&&(l.textContent="");const r=s(l,!1,ea(l));return l instanceof Element&&(l.removeAttribute("v-cloak"),l.setAttribute("data-v-app","")),r},t};function ea(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ta(e){return ve(e)?document.querySelector(e):e}const sa="https://das.doubanflix.com/api",oa="https://api.doubanflix.com/api",la=1e4,na=1e3,wn=2*60*60*1e3;class ra{constructor(){this.primaryURL=sa,this.fallbackURL=oa,this.currentURL=this.primaryURL,this.timeout=la,this.isUsingFallback=!1,this.resetTimer=null}switchToFallback(){this.isUsingFallback||(console.warn("主要API接口无法访问,切换到备用接口:",this.fallbackURL),this.currentURL=this.fallbackURL,this.isUsingFallback=!0,this.startAutoResetTimer())}resetToPrimary(){this.isUsingFallback&&(console.log("重置到主要API接口:",this.primaryURL),this.currentURL=this.primaryURL,this.isUsingFallback=!1,this.clearAutoResetTimer())}startAutoResetTimer(){this.clearAutoResetTimer(),console.log(`将在 ${wn/1e3/60} 分钟后自动尝试切换回主接口`),this.resetTimer=setTimeout(()=>{console.log("定时器触发,自动切换回主接口"),this.forceResetToPrimary()},wn)}clearAutoResetTimer(){this.resetTimer&&(clearTimeout(this.resetTimer),this.resetTimer=null)}forceResetToPrimary(){console.log("强制重置到主要API接口:",this.primaryURL),this.currentURL=this.primaryURL,this.isUsingFallback=!1,this.clearAutoResetTimer()}isNetworkError(t){return t.name==="AbortError"||t.name==="TypeError"||t.message.includes("Failed to fetch")||t.message.includes("Network request failed")||t.message.includes("请求超时")}addAuthHeaders(t={}){const s=localStorage.getItem("auth_token");return s&&(t.Authorization=`Bearer ${s}`),{"Content-Type":"application/json",...t}}async handleResponse(t){if(!t.ok){const s=await t.json().catch(()=>({}));switch(t.status){case 401:return localStorage.getItem("auth_token")?(localStorage.removeItem("auth_token"),{success:!1,error:"登录(不可用)已过期,请重新登录(不可用)",status:401,isAuthError:!0}):{success:!1,error:"请先登录(不可用)",status:401,isAuthError:!0};case 403:throw new Error("没有权限访问该资源");case 404:return{success:!1,error:"NOT_FOUND",status:404,message:"请求的资源不存在"};case 500:throw new Error("服务器内部错误");default:throw new Error(s.message||"请求失败")}}return t.json()}async request(t,s={}){const o=async l=>{const n=`${l}${t}`,r={headers:this.addAuthHeaders(s.headers),...s},i=new AbortController,u=setTimeout(()=>i.abort(),this.timeout);try{const m=await fetch(n,{...r,signal:i.signal});return clearTimeout(u),await this.handleResponse(m)}catch(m){throw clearTimeout(u),m.name==="AbortError"?new Error("请求超时,请检查网络连接"):m}};try{return await o(this.currentURL)}catch(l){if(this.isNetworkError(l)&&!this.isUsingFallback){console.warn("主要接口请求失败,尝试备用接口:",l.message),await new Promise(n=>setTimeout(n,na));try{return this.switchToFallback(),await o(this.currentURL)}catch(n){throw console.error("备用接口也无法访问:",n.message),l}}throw l}}async get(t,s={}){const o=new URLSearchParams(s).toString(),l=o?`${t}?${o}`:t;return this.request(l,{method:"GET"})}async post(t,s={}){return this.request(t,{method:"POST",body:JSON.stringify(s)})}async put(t,s={}){return this.request(t,{method:"PUT",body:JSON.stringify(s)})}async delete(t){return this.request(t,{method:"DELETE"})}}const ue=new ra,Me={getChallenge(){return ue.get("/auth/challenge")},register(e){return ue.post("/auth/register",e)},login(e){return ue.post("/auth/login",e)},verifyEmail(e){return ue.post("/auth/verify-email",e)},resendVerificationCode(e){return ue.post("/auth/resend-code",e)},getUserInfo(){return ue.get("/user/profile")},getCurrentUser(){return ue.get("/user/profile")},logout(){return ue.post("/auth/logout")},forgotPassword(e){return ue.post("/auth/forgot-password",e)},resetPassword(e){return ue.post("/auth/reset-password",e)}},kt={getMovieLinks(e,t={}){return ue.get(`/movie/${e}/links`,t)},addMovieLink(e,t){return ue.post(`/movies/${e}/links`,t)},updateMovieLink(e,t){return ue.put(`/movies/links/${e}`,t)},deleteMovieLink(e,t){return ue.delete(`/movies/${e}/links/${t}`)},voteLink(e,t){return ue.post(`/links/${e}/vote`,{vote_type:t})},removeVote(e,t){return ue.post(`/links/${e}/vote`,{vote_type:t})},getLinkVoteStatus(e){return ue.get(`/links/${e}/vote-status`)},getUserVote(e){return ue.get(`/links/${e}/vote-status`)},reportLink(e){return ue.post("/reports",e)}},bs={getUserProfile(e){return ue.get(`/user/profile/${e}`)},getUserLinks(e={}){return ue.get("/user/links",e)},getUserLinksByCategory(){return ue.get("/user/links/category")},updateUserName(e){return ue.put("/user/name",e)},getAllUsers(){return ue.get("/admin/users")},banUser(e,t){return ue.put(`/admin/users/${e}/ban`,{reason:t})},unbanUser(e){return ue.put(`/admin/users/${e}/unban`)}};async function ia(e){const t=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(s)).map(n=>n.toString(16).padStart(2,"0")).join("")}function aa(e,t){return e.startsWith("0".repeat(t))}async function Js(e,t,s=null){let o=0;const l=Date.now();for(;;){const n=e+o.toString(),r=await ia(n);if(aa(r,t)){const u=Date.now()-l;return console.log(`工作量证明完成: nonce=${o}, 耗时=${u}ms, hash=${r}`),{challenge:e,nonce:o.toString(),hash:r}}o++,o%1e3===0&&(s&&s(o),await new Promise(i=>setTimeout(i,1)))}}const ke=L(null),Ct=L(null),ye=L(!1),ie=L(""),Fo=L(!1),ua=Ve(()=>!!ke.value&&!!Ct.value),ca=Ve(()=>{var e;return((e=ke.value)==null?void 0:e.email)||""}),da=Ve(()=>{var e;return((e=ke.value)==null?void 0:e.id)||""}),oe={user:ke,token:Ct,loading:ye,error:ie,initialized:Fo,isAuthenticated:ua,userEmail:ca,userId:da,async initAuth(){if(!Fo.value)try{ye.value=!0;const e=localStorage.getItem("auth_token");if(e){Ct.value=e;try{const t=await Me.getCurrentUser();t&&t.data?ke.value=t.data:ke.value=t,ie.value=""}catch(t){console.error("获取用户信息失败:",t),t.status===401||t.status===403?(localStorage.removeItem("auth_token"),Ct.value=null,ke.value=null):console.warn("网络或其他错误,保留token:",t.message)}}}catch(e){console.error("初始化认证失败:",e)}finally{ye.value=!1,Fo.value=!0}},async signIn(e,t){try{ye.value=!0,ie.value="";const s=await Me.login({email:e,password:t});return Ct.value=s.data.token,ke.value=s.data.user,localStorage.setItem("auth_token",s.data.token),{success:!0,user:s.data.user}}catch(s){return console.error("登录(不可用)错误:",s),ie.value=s.message||"登录(不可用)过程中发生错误",{success:!1,error:ie.value}}finally{ye.value=!1}},async signUp(e,t,s={}){try{ye.value=!0,ie.value="";const o=await Me.register({email:e,password:t,...s});return Ct.value=o.token,ke.value=o.user,localStorage.setItem("auth_token",o.token),{success:!0,data:o}}catch(o){return console.error("注册(不可用)错误:",o),ie.value=o.message||"注册(不可用)过程中发生错误",{success:!1,error:ie.value}}finally{ye.value=!1}},async signUpWithProof(e,t){try{ye.value=!0,ie.value="";const s=await Me.getChallenge();if(!s.success)throw new Error(s.error||"获取挑战失败");const{challenge:o,difficulty:l}=s.data,n=await Js(o,l,t),r={username:e.username,email:e.email,password:e.password,proof_of_work:{challenge:o,nonce:n.nonce,hash:n.hash}},i=await Me.register(r);return i.success?{success:!0,data:i.data}:{success:!1,error:i.error}}catch(s){return console.error("注册(不可用)失败:",s),ie.value=s.message||"注册(不可用)失败",{success:!1,error:ie.value}}finally{ye.value=!1}},async verifyEmail(e,t){try{ye.value=!0,ie.value="";const s={email:e,code:t},o=await Me.verifyEmail(s);return o.success?{success:!0,data:o.data}:{success:!1,error:o.error}}catch(s){return console.error("邮箱验证失败:",s),ie.value=s.message||"验证失败",{success:!1,error:ie.value}}finally{ye.value=!1}},async resendVerificationCode(e,t=()=>{}){try{ye.value=!0,ie.value="";const s=await Me.getChallenge();if(!s.success)throw new Error(s.error||"获取挑战失败");const{challenge:o,difficulty:l}=s.data,n=await Js(o,l,t),r={email:e,challenge:o,solution:n.nonce},i=await Me.resendVerificationCode(r);return i.success?{success:!0,data:i.data}:{success:!1,error:i.error}}catch(s){return console.error("重发验证码失败:",s),ie.value=s.message||"发送失败",{success:!1,error:ie.value}}finally{ye.value=!1}},async forgotPassword(e,t){try{ye.value=!0,ie.value="";const s=await Me.getChallenge();if(!s.success)throw new Error(s.error||"获取挑战失败");const{challenge:o,difficulty:l}=s.data,n=await Js(o,l,t),r={email:e,proof_of_work:{challenge:o,nonce:n.nonce,hash:n.hash}},i=await Me.forgotPassword(r);return i.success?{success:!0,data:i.data}:{success:!1,error:i.message||i.error}}catch(s){return console.error("忘记密码失败:",s),ie.value=s.message||"发送失败",{success:!1,error:ie.value}}finally{ye.value=!1}},async resetPassword(e,t,s){try{ye.value=!0,ie.value="";const o=await Me.resetPassword({email:e,code:t,password:s});return o.success?{success:!0,data:o.data}:{success:!1,error:o.message||o.error}}catch(o){return console.error("重置密码失败:",o),ie.value=o.message||"重置失败",{success:!1,error:ie.value}}finally{ye.value=!1}},async signOut(){try{return ye.value=!0,ie.value="",localStorage.removeItem("auth_token"),Ct.value=null,ke.value=null,{success:!0}}catch(e){return console.error("登出错误:",e),ie.value="登出过程中发生错误",localStorage.removeItem("auth_token"),Ct.value=null,ke.value=null,{success:!1,error:ie.value}}finally{ye.value=!1}},clearError(){ie.value=""},hasPermission(e){return!!ke.value},getDisplayName(){var e;return ke.value?((e=ke.value.user_metadata)==null?void 0:e.full_name)||ke.value.email||"用户":"未登录(不可用)"},getAvatarUrl(){var e;return ke.value&&((e=ke.value.user_metadata)==null?void 0:e.avatar_url)||null}};class fa{async getUserProfile(t=null){try{let s=t;if(!s){const l=await Me.getCurrentUser();if(!l)return{success:!1,error:"用户未登录(不可用)"};s=l.id}const o=await bs.getUserProfile(s);return o?{success:!0,data:o}:{success:!0,data:{user_id:s,nickname:null,avatar_url:null,bio:null}}}catch(s){return console.error("获取用户配置异常:",s),{success:!1,error:"获取用户配置失败"}}}async updateUserProfile(t){try{return await Me.getCurrentUser()?t.nickname&&t.nickname.length>50?{success:!1,error:"昵称长度不能超过50个字符"}:t.nickname&&!(await bs.checkNicknameAvailability(t.nickname)).available?{success:!1,error:"该昵称已被使用,请选择其他昵称"}:{success:!0,data:await bs.updateUserProfile(t),message:"用户配置更新成功"}:{success:!1,error:"用户未登录(不可用)"}}catch(s){return console.error("更新用户配置异常:",s),{success:!1,error:"更新用户配置失败"}}}async getUserDisplayName(t,s="匿名用户"){var o;try{const l=await this.getUserProfile(t);return l.success&&((o=l.data)!=null&&o.nickname)?l.data.nickname:s||"匿名用户"}catch(l){return console.error("获取用户显示名称失败:",l),s||"匿名用户"}}async checkNicknameAvailability(t){try{return!t||t.trim().length===0?{success:!1,error:"昵称不能为空"}:t.length>50?{success:!1,error:"昵称长度不能超过50个字符"}:await Me.getCurrentUser()?{success:!0,available:(await bs.checkNicknameAvailability(t.trim())).available}:{success:!1,error:"用户未登录(不可用)"}}catch(s){return console.error("检查昵称可用性失败:",s),{success:!1,error:"检查昵称可用性失败"}}}}const pa=new fa,Ye=(e,t)=>{const s=e.__vccOpts||e;for(const[o,l]of t)s[o]=l;return s},ha={class:"auth-switch"},ma={class:"switch-container"},va=["checked"],ga=["checked"],_a=Ye({__name:"AuthSwitch",props:{modelValue:{type:String,default:"login"}},emits:["update:modelValue"],setup(e,{emit:t}){const s=e,o=Ve(()=>s.modelValue==="login"?"2%":"52%");return(l,n)=>(M(),U("div",ha,[a("div",ma,[a("input",{id:"login",type:"radio",name:"authMode",value:"login",checked:e.modelValue==="login",onChange:n[0]||(n[0]=r=>l.$emit("update:modelValue","login")),class:"switch-input"},null,40,va),n[2]||(n[2]=a("label",{for:"login",class:"switch-label"},"登录(不可用)",-1)),a("input",{id:"register",type:"radio",name:"authMode",value:"register",checked:e.modelValue==="register",onChange:n[1]||(n[1]=r=>l.$emit("update:modelValue","register")),class:"switch-input"},null,40,ga),n[3]||(n[3]=a("label",{for:"register",class:"switch-label"},"注册(不可用)",-1)),a("div",{class:"slider",style:Bt({left:o.value})},null,4)])]))}},[["__scopeId","data-v-d47a81a4"]]),ya={class:"toast-container"},xn=Ye({__name:"ToastContainer",props:{errorMessage:{type:String,default:""},successMessage:{type:String,default:""},duration:{type:Number,default:3e3},autoClose:{type:Boolean,default:!0}},emits:["clear-error","clear-success"],setup(e,{emit:t}){const s=e,o=t;let l=null,n=null;const r=()=>{l&&(clearTimeout(l),l=null),o("clear-error")},i=()=>{n&&(clearTimeout(n),n=null),o("clear-success")};return je(()=>s.errorMessage,u=>{u&&s.autoClose&&(l&&clearTimeout(l),l=setTimeout(()=>{r()},s.duration))}),je(()=>s.successMessage,u=>{u&&s.autoClose&&(n&&clearTimeout(n),n=setTimeout(()=>{i()},s.duration))}),cs(()=>{l&&clearTimeout(l),n&&clearTimeout(n)}),(u,m)=>(M(),U("div",ya,[e.errorMessage?(M(),U("div",{key:0,class:"toast error-toast",onClick:r},[a("span",null,j(e.errorMessage),1),m[0]||(m[0]=a("button",{class:"toast-close"},"×",-1))])):B("",!0),e.successMessage?(M(),U("div",{key:1,class:"toast success-toast",onClick:i},[a("span",null,j(e.successMessage),1),m[1]||(m[1]=a("button",{class:"toast-close"},"×",-1))])):B("",!0)]))}},[["__scopeId","data-v-52e28bd4"]]),ba={class:"auth-container"},wa={key:0,class:"initializing-container"},xa={key:1,class:"user-info"},ka={class:"user-header"},Ca={class:"user-details"},Ta={class:"user-display-name"},Sa={key:0,class:"user-email"},Ea={key:1,class:"user-stats"},Aa={class:"stat-item"},$a={class:"stat-value"},Pa={class:"stat-item"},Va={class:"stat-value"},Ma={key:0,class:"nickname-edit-form"},Ua={class:"form-group"},Ia={class:"nickname-actions"},Da=["disabled"],La={key:2,class:"auth-forms"},Oa={key:1,class:"back-button"},Ra={class:"form-group"},Fa={class:"input-wrapper"},Na={class:"form-group"},Ba={class:"input-wrapper"},qa=["disabled"],za={class:"forgot-password-link"},ja={class:"form-group"},Ha={class:"form-group"},Ka={class:"form-group"},Wa={class:"form-group"},Ga={key:0,class:"proof-progress"},Qa={class:"progress-bar"},Za=["disabled"],Ya={class:"form-description"},Ja={class:"form-group"},Xa=["readonly"],eu={class:"form-group"},tu=["disabled"],su={class:"resend-code"},ou=["disabled"],lu={class:"form-group"},nu={key:0,class:"proof-progress"},ru={class:"progress-bar"},iu=["disabled"],au={class:"form-group"},uu={class:"form-group"},cu={class:"form-group"},du={class:"form-group"},fu=["disabled"],pu=Ye({__name:"AuthComponent",setup(e){const t=L(null),s=L(null),o=L("login"),l=L(!1);L(""),L("");const n=L(!1),r=L(!0),i=L(""),u=L(""),m=L({email:"",password:""});cs(()=>{stopWatching&&stopWatching()});const f=L({email:"",password:"",confirmPassword:"",username:""}),g=L({email:"",code:""}),E=L({email:""}),b=L({email:"",code:"",password:"",confirmPassword:""}),_=L(!1),w=L(0),X=L(""),K=L({username:""});Wt(async()=>{try{await oe.initAuth(),t.value=oe.user.value,t.value&&await Z();const F=je(()=>oe.user.value,x=>{t.value=x,x?Z():s.value=null},{immediate:!1})}finally{r.value=!1}});const W=()=>{i.value="",u.value=""},Z=async()=>{if(t.value)try{const F=await pa.getUserProfile(t.value.id);F.success?(s.value=F.data,console.log("用户资料数据:",F.data)):console.error("加载用户资料失败:",F.error)}catch(F){console.error("加载用户资料异常:",F)}},R=()=>{var F;n.value=!n.value,n.value&&(K.value.username=((F=t.value)==null?void 0:F.username)||""),W()},pe=async()=>{var F,x;if(t.value){W(),l.value=!0;try{const I=K.value.username.trim();if(!I){i.value="用户名不能为空";return}if(I.length<2||I.length>10){i.value="用户名长度必须在2-10个字符之间";return}const ee=await bs.updateUserName({username:I});if(ee.data.success){const te={...t.value,...ee.data.data};t.value=te,oe.user.value=te,u.value=ee.data.message||"用户名更新成功!",n.value=!1,await Z()}else i.value=ee.data.message||"更新用户名失败"}catch(I){console.error("更新用户名错误:",I),(x=(F=I.response)==null?void 0:F.data)!=null&&x.message?i.value=I.response.data.message:i.value="更新用户名失败,请稍后重试"}finally{l.value=!1}}},he=async()=>{W(),l.value=!0;try{const F=await oe.signIn(m.value.email,m.value.password);F.success?(t.value=F.user,u.value="登录(不可用)成功!",m.value={email:"",password:""},await Z()):i.value=F.error||"登录(不可用)失败,请检查邮箱和密码"}catch(F){i.value="登录(不可用)过程中发生错误",console.error("登录(不可用)错误:",F)}finally{l.value=!1}},me=async()=>{if(W(),f.value.password!==f.value.confirmPassword){i.value="两次输入的密码不一致";return}l.value=!0;try{const F=await oe.signUpWithProof(f.value,x=>{_.value=!0,w.value=x});_.value=!1,w.value=0,F.success?(X.value=f.value.email,g.value.email=f.value.email,o.value="verify-email",u.value="注册(不可用)成功!请查收邮件并验证邮箱",f.value={email:"",password:"",confirmPassword:"",username:""}):i.value=F.error||"注册(不可用)失败,请稍后重试"}catch(F){_.value=!1,w.value=0,i.value="注册(不可用)过程中发生错误",console.error("注册(不可用)错误:",F)}finally{l.value=!1}},Ue=async()=>{W(),l.value=!0;try{const F=await oe.verifyEmail(g.value.email,g.value.code);F.success?(u.value="邮箱验证成功!请登录(不可用)",o.value="login",g.value={email:"",code:""},X.value=""):i.value=F.error||"验证失败,请重试"}catch(F){i.value="验证过程中发生错误",console.error("验证错误:",F)}finally{l.value=!1}},Et=async()=>{W(),l.value=!0;try{const F=g.value.email||X.value,x=await oe.resendVerificationCode(F,I=>{console.log("重发验证码进度:",I)});x.success?u.value="验证码已重新发送,请查收邮件":i.value=x.error||"发送失败,请重试"}catch(F){i.value="发送过程中发生错误",console.error("重发验证码错误:",F)}finally{l.value=!1}},Fe=async()=>{W(),l.value=!0;try{const F=await oe.forgotPassword(E.value.email,x=>{_.value=!0,w.value=x});_.value=!1,w.value=0,F.success?(b.value.email=E.value.email,o.value="reset-password",u.value="重置码已发送,请查收邮件",E.value={email:""}):i.value=F.error||"发送失败,请重试"}catch(F){_.value=!1,w.value=0,i.value="发送过程中发生错误",console.error("忘记密码错误:",F)}finally{l.value=!1}},Ie=async()=>{if(W(),b.value.password!==b.value.confirmPassword){i.value="两次输入的密码不一致";return}l.value=!0;try{const F=await oe.resetPassword(b.value.email,b.value.code,b.value.password);F.success?(u.value="密码重置成功!请使用新密码登录(不可用)",o.value="login",b.value={email:"",code:"",password:"",confirmPassword:""}):i.value=F.error||"重置失败,请重试"}catch(F){i.value="重置过程中发生错误",console.error("重置密码错误:",F)}finally{l.value=!1}},Ke=()=>{o.value="login",W()},pt=()=>{oe.signOut(),u.value="已成功登出",t.value=null,s.value=null};return(F,x)=>(M(),U("div",ba,[r.value?(M(),U("div",wa,x[18]||(x[18]=[a("div",{class:"loading-spinner"},null,-1),a("p",null,"加载中...",-1)]))):t.value?(M(),U("div",xa,[a("div",ka,[a("div",Ca,[a("div",Ta,j(t.value.username||t.value.email),1),t.value.username?(M(),U("div",Sa,j(t.value.email),1)):B("",!0),s.value?(M(),U("div",Ea,[a("span",Aa,[x[19]||(x[19]=a("span",{class:"stat-icon"},[a("svg",{viewBox:"0 0 100 100",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M15 75 Q15 80 20 80 L80 80 Q85 80 85 75 Q85 70 80 65 L55 25 Q52 20 50 20 Q48 20 45 25 L20 65 Q15 70 15 75 Z",fill:"currentColor",stroke:"currentColor","stroke-width":"2","stroke-linejoin":"round"})])],-1)),a("span",$a,j(s.value.total_likes||0),1)]),a("span",Pa,[x[20]||(x[20]=a("span",{class:"stat-icon down-icon"},[a("svg",{viewBox:"0 0 100 100",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M15 75 Q15 80 20 80 L80 80 Q85 80 85 75 Q85 70 80 65 L55 25 Q52 20 50 20 Q48 20 45 25 L20 65 Q15 70 15 75 Z",fill:"currentColor",stroke:"currentColor","stroke-width":"2","stroke-linejoin":"round"})])],-1)),a("span",Va,j(s.value.total_dislikes||0),1)])])):B("",!0)]),a("button",{onClick:R,class:"edit-nickname-btn"},j(n.value?"取消":"编辑用户名"),1)]),n.value?(M(),U("div",Ma,[a("div",Ua,[x[21]||(x[21]=a("label",null,"用户名",-1)),re(a("input",{"onUpdate:modelValue":x[0]||(x[0]=I=>K.value.username=I),type:"text",placeholder:"请输入用户名",class:"form-input",maxlength:"10"},null,512),[[fe,K.value.username]]),x[22]||(x[22]=a("div",{class:"nickname-hint"},"用户名长度为2-10个字符",-1))]),a("div",Ia,[a("button",{onClick:pe,disabled:l.value,class:"save-nickname-btn"},j(l.value?"保存中...":"保存"),9,Da),a("button",{onClick:R,class:"cancel-nickname-btn"}," 取消 ")])])):B("",!0),a("button",{onClick:pt,class:"sign-out-btn"}," 退出登录(不可用) ")])):(M(),U("div",La,[["verify-email","forgot-password","reset-password"].includes(o.value)?B("",!0):(M(),Hs(_a,{key:0,modelValue:o.value,"onUpdate:modelValue":x[1]||(x[1]=I=>o.value=I)},null,8,["modelValue"])),["verify-email","forgot-password","reset-password"].includes(o.value)?(M(),U("div",Oa,[a("button",{onClick:Ke,class:"back-btn"}," ← 返回登录(不可用) ")])):B("",!0),o.value==="login"?(M(),U("form",{key:2,onSubmit:He(he,["prevent"]),class:"auth-form","data-mode":"login"},[a("div",Ra,[x[23]||(x[23]=a("label",null,"邮箱",-1)),a("div",Fa,[re(a("input",{"onUpdate:modelValue":x[2]||(x[2]=I=>m.value.email=I),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input"},null,512),[[fe,m.value.email]])])]),a("div",Na,[x[24]||(x[24]=a("label",null,"密码",-1)),a("div",Ba,[re(a("input",{"onUpdate:modelValue":x[3]||(x[3]=I=>m.value.password=I),type:"password",required:"",placeholder:"请输入密码",class:"form-input"},null,512),[[fe,m.value.password]])])]),a("button",{type:"submit",disabled:l.value,class:"auth-submit-btn"},j(l.value?"登录(不可用)中...":"登录(不可用)"),9,qa),a("div",za,[a("button",{type:"button",onClick:x[4]||(x[4]=I=>o.value="forgot-password"),class:"link-btn"}," 忘记密码? ")])],32)):B("",!0),o.value==="register"?(M(),U("form",{key:3,onSubmit:He(me,["prevent"]),class:"auth-form","data-mode":"register"},[a("div",ja,[x[25]||(x[25]=a("label",null,"用户名",-1)),re(a("input",{"onUpdate:modelValue":x[5]||(x[5]=I=>f.value.username=I),type:"text",required:"",placeholder:"3-10个字符",class:"form-input",minlength:"3",maxlength:"10"},null,512),[[fe,f.value.username]])]),a("div",Ha,[x[26]||(x[26]=a("label",null,"邮箱",-1)),re(a("input",{"onUpdate:modelValue":x[6]||(x[6]=I=>f.value.email=I),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input"},null,512),[[fe,f.value.email]])]),a("div",Ka,[x[27]||(x[27]=a("label",null,"密码",-1)),re(a("input",{"onUpdate:modelValue":x[7]||(x[7]=I=>f.value.password=I),type:"password",required:"",placeholder:"至少6位",class:"form-input",minlength:"6"},null,512),[[fe,f.value.password]])]),a("div",Wa,[x[28]||(x[28]=a("label",null,"确认密码",-1)),re(a("input",{"onUpdate:modelValue":x[8]||(x[8]=I=>f.value.confirmPassword=I),type:"password",required:"",placeholder:"请再次输入密码",class:"form-input"},null,512),[[fe,f.value.confirmPassword]])]),_.value?(M(),U("div",Ga,[x[29]||(x[29]=a("div",{class:"progress-text"},"正在计算工作量证明...",-1)),a("div",Qa,[a("div",{class:"progress-fill",style:Bt({width:Math.min(w.value/1e3,100)+"%"})},null,4)])])):B("",!0),a("button",{type:"submit",disabled:l.value||_.value,class:"auth-submit-btn"},j(_.value?"计算中...":l.value?"注册(不可用)中...":"注册(不可用)"),9,Za)],32)):B("",!0),o.value==="verify-email"?(M(),U("form",{key:4,onSubmit:He(Ue,["prevent"]),class:"auth-form"},[x[32]||(x[32]=a("div",{class:"form-title"},"邮箱验证",-1)),a("div",Ya," 我们已向 "+j(X.value||g.value.email)+" 发送了验证码,请查收邮件并输入验证码。 ",1),a("div",Ja,[x[30]||(x[30]=a("label",null,"邮箱",-1)),re(a("input",{"onUpdate:modelValue":x[9]||(x[9]=I=>g.value.email=I),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input",readonly:!!X.value},null,8,Xa),[[fe,g.value.email]])]),a("div",eu,[x[31]||(x[31]=a("label",null,"验证码",-1)),re(a("input",{"onUpdate:modelValue":x[10]||(x[10]=I=>g.value.code=I),type:"text",required:"",placeholder:"请输入6位验证码",class:"form-input",maxlength:"6"},null,512),[[fe,g.value.code]])]),a("button",{type:"submit",disabled:l.value,class:"auth-submit-btn"},j(l.value?"验证中...":"验证邮箱"),9,tu),a("div",su,[a("button",{type:"button",onClick:Et,disabled:l.value,class:"link-btn"}," 重新发送验证码 ",8,ou)])],32)):B("",!0),o.value==="forgot-password"?(M(),U("form",{key:5,onSubmit:He(Fe,["prevent"]),class:"auth-form"},[x[35]||(x[35]=a("div",{class:"form-title"},"忘记密码",-1)),x[36]||(x[36]=a("div",{class:"form-description"}," 请输入您的邮箱地址,我们将向您发送重置密码的验证码。 ",-1)),a("div",lu,[x[33]||(x[33]=a("label",null,"邮箱",-1)),re(a("input",{"onUpdate:modelValue":x[11]||(x[11]=I=>E.value.email=I),type:"email",required:"",placeholder:"请输入注册(不可用)时使用的邮箱",class:"form-input"},null,512),[[fe,E.value.email]])]),_.value?(M(),U("div",nu,[x[34]||(x[34]=a("div",{class:"progress-text"},"正在计算工作量证明...",-1)),a("div",ru,[a("div",{class:"progress-fill",style:Bt({width:Math.min(w.value/1e3,100)+"%"})},null,4)])])):B("",!0),a("button",{type:"submit",disabled:l.value||_.value,class:"auth-submit-btn"},j(_.value?"计算中...":l.value?"发送中...":"发送重置码"),9,iu)],32)):B("",!0),o.value==="reset-password"?(M(),U("form",{key:6,onSubmit:He(Ie,["prevent"]),class:"auth-form"},[x[41]||(x[41]=a("div",{class:"form-title"},"重置密码",-1)),x[42]||(x[42]=a("div",{class:"form-description"}," 请输入您收到的验证码和新密码。 ",-1)),a("div",au,[x[37]||(x[37]=a("label",null,"邮箱",-1)),re(a("input",{"onUpdate:modelValue":x[12]||(x[12]=I=>b.value.email=I),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input",readonly:""},null,512),[[fe,b.value.email]])]),a("div",uu,[x[38]||(x[38]=a("label",null,"验证码",-1)),re(a("input",{"onUpdate:modelValue":x[13]||(x[13]=I=>b.value.code=I),type:"text",required:"",placeholder:"请输入6位验证码",class:"form-input",maxlength:"6"},null,512),[[fe,b.value.code]])]),a("div",cu,[x[39]||(x[39]=a("label",null,"新密码",-1)),re(a("input",{"onUpdate:modelValue":x[14]||(x[14]=I=>b.value.password=I),type:"password",required:"",placeholder:"请输入新密码(至少6位)",class:"form-input",minlength:"6"},null,512),[[fe,b.value.password]])]),a("div",du,[x[40]||(x[40]=a("label",null,"确认新密码",-1)),re(a("input",{"onUpdate:modelValue":x[15]||(x[15]=I=>b.value.confirmPassword=I),type:"password",required:"",placeholder:"请再次输入新密码",class:"form-input"},null,512),[[fe,b.value.confirmPassword]])]),a("button",{type:"submit",disabled:l.value,class:"auth-submit-btn"},j(l.value?"重置中...":"重置密码"),9,fu)],32)):B("",!0)])),J(xn,{"error-message":i.value,"success-message":u.value,duration:3e3,"auto-close":!0,onClearError:x[16]||(x[16]=I=>i.value=""),onClearSuccess:x[17]||(x[17]=I=>u.value="")},null,8,["error-message","success-message"])]))}},[["__scopeId","data-v-d19c4dd7"]]);class Tt{static async getLinks(t,s={}){try{const o={},{linkType:l,platform:n,page:r=1,limit:i=5,sortBy:u="created_at",sortOrder:m="desc"}=s;r&&(o.page=r),i&&(o.limit=i),u&&(o.sort_by=u),m&&(o.sort_order=m),l&&(o.type=l==="bt"?"magnet":l),n&&(o.platform=n);const f=await kt.getMovieLinks(t,o);if(!f.success)throw f.error==="NOT_FOUND"||f.status===404?(console.log("电影不存在,返回空结果"),new Error("电影不存在")):(console.error("获取链接失败:",f.error),new Error(`获取链接失败: ${f.error}`));const g=f.data||{};let E=g.links||[];const b=g.pagination||{};Array.isArray(E)||(console.warn("API返回的links不是数组格式:",E),E=[]);const _=E.map(w=>({...w,up_votes:w.likes_count||0,down_votes:w.dislikes_count||0,score:(w.likes_count||0)-(w.dislikes_count||0),user_vote_type:w.user_vote_type==="like"?"up":w.user_vote_type==="dislike"?"down":w.user_vote_type||"",user_display_name:w.username||"匿名用户"}));return{success:!0,data:_,pagination:b,count:_.length,total:b.total||0}}catch(o){return console.error("获取链接服务错误:",o),{success:!1,error:o.message||"获取链接失败",data:[],pagination:{page:1,limit:5,total:0,pages:0},count:0,total:0}}}static async addLink(t){try{const{movieId:s,linkType:o,platform:l,url:n,extractCode:r,title:i,quality:u,size:m,has_4k:f,has_hdr:g,has_dolby_atmos:E,has_subtitles:b}=t;if(!s||!o||!n)throw new Error("缺少必填字段:movieId, linkType, url");if(!["netdisk","bt","online"].includes(o))throw new Error("无效的链接类型");if(r&&r.length>10)throw new Error("提取码长度不能超过10个字符");const _=await Me.getChallenge();if(!_.success)throw new Error("获取工作量证明挑战失败");const{challenge:w,difficulty:X}=_.data,K=await Js(w,X),W={title:i||"",url:n.trim(),type:o==="bt"?"magnet":o,password:r||"",quality:u||"",size:m||"",has_4k:!!f,has_hdr:!!g,has_dolby_atmos:!!E,has_subtitles:!!b,proof_of_work:K};o==="netdisk"&&l&&l.trim()&&(W.platform=l.trim());const Z=await kt.addMovieLink(s,W);if(!Z.success)throw console.error("添加链接失败:",Z.error),new Error(`添加链接失败: ${Z.error}`);return{success:!0,data:Z.data,message:"链接添加成功"}}catch(s){return console.error("添加链接服务错误:",s),{success:!1,error:s.message||"添加链接失败"}}}static async deleteLink(t,s){try{if(!s)throw new Error("链接ID不能为空");if(!t)throw new Error("电影ID不能为空");if(!oe.isAuthenticated.value)throw new Error("用户未登录(不可用)");const o=await kt.deleteMovieLink(t,s);if(!o.success)throw console.error("删除链接失败:",o.error),new Error(`删除链接失败: ${o.error}`);return{success:!0,message:o.message||"链接删除成功"}}catch(o){return console.error("删除链接服务错误:",o),{success:!1,error:o.message||"删除链接失败"}}}static async updateLink(t,s){try{if(!t)throw new Error("链接ID不能为空");if(!oe.isAuthenticated.value)throw new Error("用户未登录(不可用)");if(!s.url||!s.linkType)throw new Error("链接地址和类型不能为空");const o={title:s.title||"",url:s.url,type:s.linkType,platform:s.platform||"",password:s.extractCode||"",size:s.size||"",has_4k:s.has_4k||!1,has_hdr:s.has_hdr||!1,has_dolby_atmos:s.has_dolby_atmos||!1,has_subtitles:s.has_subtitles||!1},l=await kt.updateMovieLink(t,o);if(!l.success)throw console.error("修改链接失败:",l.error),new Error(`修改链接失败: ${l.error}`);return{success:!0,message:l.message||"链接修改成功",data:l.data}}catch(o){return console.error("修改链接服务错误:",o),{success:!1,error:o.message||"修改链接失败"}}}static async voteLink(t,s){try{if(!t||!s)throw new Error("链接ID和投票类型不能为空");if(!["up","down"].includes(s))throw new Error("无效的投票类型");if(!oe.isAuthenticated.value)throw new Error("用户未登录(不可用)");const o=s==="up"?"like":"dislike",l=await kt.voteLink(t,o);if(!l.success)throw console.error("投票失败:",l.error),new Error(`投票失败: ${l.error}`);const n=l.data||{};return{success:!0,message:`${s==="up"?"点赞":"点踩"}成功`,data:{up_votes:n.likes_count||0,down_votes:n.dislikes_count||0,user_vote_type:n.user_vote_type==="like"?"up":n.user_vote_type==="dislike"?"down":null}}}catch(o){return console.error("投票服务错误:",o),{success:!1,error:o.message||"投票失败"}}}static async removeVote(t,s=0,o=0,l="up"){try{if(!t)throw new Error("链接ID不能为空");if(!oe.isAuthenticated.value)throw new Error("用户未登录(不可用)");const n=l==="up"?"like":"dislike",r=await kt.removeVote(t,n);if(!r.success)throw console.error("取消投票失败:",r.error),new Error(`取消投票失败: ${r.error}`);const i=r.data||{};console.log("removeVote API原始响应:",i);let u,m;if(i.likes_count!==void 0&&i.dislikes_count!==void 0){const f=Math.max(0,i.likes_count||0),g=Math.max(0,i.dislikes_count||0);i.likes_count<0||i.dislikes_count<0?(console.warn("API返回负数,使用本地计算:",i),l==="up"?(u=Math.max(0,s-1),m=o):(u=s,m=Math.max(0,o-1))):(u=f,m=g),console.log("使用API返回数据:",{finalUpVotes:u,finalDownVotes:m,apiUpVotes:f,apiDownVotes:g})}else l==="up"?(u=Math.max(0,s-1),m=o):(u=s,m=Math.max(0,o-1)),console.log("使用本地计算数据:",{finalUpVotes:u,finalDownVotes:m,currentUpVotes:s,currentDownVotes:o,voteType:l});return{success:!0,message:"取消投票成功",data:{up_votes:u,down_votes:m,user_vote_type:null}}}catch(n){return console.error("取消投票服务错误:",n),{success:!1,error:n.message||"取消投票失败"}}}static async reportLink(t,s,o=""){try{if(!t||!s)throw new Error("链接ID和反馈类型不能为空");if(!oe.isAuthenticated.value)throw new Error("用户未登录(不可用)");const l={link_id:t,type:s.trim(),reason:o.trim()||null},n=await kt.reportLink(l);if(!n.success)throw console.error("反馈失败:",n.error),new Error(`反馈失败: ${n.error}`);return{success:!0,data:n.data,message:"反馈提交成功"}}catch(l){return console.error("反馈服务错误:",l),{success:!1,error:l.message||"反馈失败"}}}}const hu="data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1756543843235'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='20280'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M512%20330.666667c14.933333%200%2029.866667%204.266667%2040.533333%2014.933333l277.33333399%20234.666667c27.733333%2023.466667%2029.866667%2064%208.53333301%2089.6-23.466667%2027.733333-64%2029.866667-89.6%208.53333299L512%20477.866667l-236.8%20200.53333299c-27.733333%2023.466667-68.266667%2019.19999999-89.6-8.53333299-23.466667-27.733333-19.19999999-68.266667%208.53333301-89.6l277.33333399-234.666667c10.666667-10.666667%2025.6-14.933333%2040.533333-14.933333z'%20fill='currentColor'%20p-id='20281'%3e%3c/path%3e%3c/svg%3e",mu={name:"CustomSelect",props:{modelValue:{type:[String,Number],default:""},options:{type:Array,required:!0,default:()=>[]},placeholder:{type:String,default:"请选择"}},emits:["update:modelValue","change"],data(){return{isOpen:!1}},computed:{selectedLabel(){const e=this.options.find(t=>t.value===this.modelValue);return e?e.label:""}},mounted(){document.addEventListener("click",this.closeDropdown)},beforeUnmount(){document.removeEventListener("click",this.closeDropdown)},methods:{toggleDropdown(){this.isOpen=!this.isOpen},selectOption(e){this.$emit("update:modelValue",e.value),this.$emit("change",e.value),this.isOpen=!1},closeDropdown(){this.isOpen=!1}}},vu={class:"selected-text"},gu={class:"select-dropdown"},_u=["onClick"];function yu(e,t,s,o,l,n){return M(),U("div",{class:_e(["custom-select",{"is-open":l.isOpen}]),onClick:t[1]||(t[1]=He(()=>{},["stop"]))},[a("div",{class:"select-trigger",onClick:t[0]||(t[0]=(...r)=>n.toggleDropdown&&n.toggleDropdown(...r))},[a("span",vu,j(n.selectedLabel||s.placeholder),1),a("img",{src:hu,class:_e(["arrow",{"arrow-up":l.isOpen}]),alt:"箭头"},null,2)]),re(a("div",gu,[(M(!0),U(Re,null,Co(s.options,r=>(M(),U("div",{class:_e(["select-option",{selected:r.value===s.modelValue}]),key:r.value,onClick:i=>n.selectOption(r)},j(r.label),11,_u))),128))],512),[[Zs,l.isOpen]])],2)}const Ot=Ye(mu,[["render",yu],["__scopeId","data-v-3b2cba4f"]]),bu={name:"LinkItemSkeleton"},wu={class:"link-item skeleton"};function xu(e,t,s,o,l,n){return M(),U("div",wu,t[0]||(t[0]=[mi('<div class="link-header" data-v-115afd35><div class="platform-badge skeleton-element" data-v-115afd35><div class="skeleton-icon" data-v-115afd35></div></div><div class="link-meta" data-v-115afd35><div class="skeleton-element skeleton-language" data-v-115afd35></div></div></div><div class="link-content" data-v-115afd35><div class="link-title-row" data-v-115afd35><div class="skeleton-element skeleton-title" data-v-115afd35></div><div class="expand-arrow" data-v-115afd35><div class="skeleton-element skeleton-arrow" data-v-115afd35></div></div></div></div>',2)]))}const ku=Ye(bu,[["render",xu],["__scopeId","data-v-115afd35"]]),Cu=["checked"],Tu={key:0,class:"checkbox-label"},St=Ye({__name:"CheckBox",props:{modelValue:{type:Boolean,default:!1},label:{type:String,default:""},color:{type:String,default:"blue",validator:e=>["blue","green","purple","red"].includes(e)}},emits:["update:modelValue"],setup(e){return(t,s)=>(M(),U("label",{class:_e(["ios-checkbox",e.color])},[a("input",{type:"checkbox",checked:e.modelValue,onChange:s[0]||(s[0]=o=>t.$emit("update:modelValue",o.target.checked))},null,40,Cu),s[1]||(s[1]=a("div",{class:"checkbox-wrapper"},[a("div",{class:"checkbox-bg"}),a("svg",{fill:"none",viewBox:"0 0 24 24",class:"checkbox-icon"},[a("path",{"stroke-linejoin":"round","stroke-linecap":"round","stroke-width":"3",stroke:"currentColor",d:"M4 12L10 18L20 6",class:"check-path"})])],-1)),e.label?(M(),U("span",Tu,j(e.label),1)):B("",!0)],2))}},[["__scopeId","data-v-150f8c13"]]),Su={class:"tooltip"},Eu={class:"tooltip"},kn=Ye({__name:"CopyTooltip",props:{text:{type:String,required:!0},type:{type:String,default:"url",validator:e=>["url","code"].includes(e)}},emits:["copy-success","copy-error"],setup(e,{emit:t}){const s=e,o=t,l=L(!1),n=Ve(()=>l.value?"已复制":s.type==="url"?"点击复制链接(右键打开)":"点击复制提取码"),r=u=>u,i=async()=>{try{await navigator.clipboard.writeText(s.text),l.value=!0,o("copy-success",s.text),setTimeout(()=>{l.value=!1},2e3)}catch(u){console.error("复制失败:",u),o("copy-error",u)}};return(u,m)=>e.type==="url"?(M(),U("span",{key:0,class:_e(["copy-item",{copied:l.value}]),onClick:i},[vs(j(r(e.text))+" ",1),a("span",Su,j(n.value),1)],2)):e.type==="code"?(M(),U("code",{key:1,class:_e(["extract-code",{copied:l.value}]),onClick:i},[vs(j(e.text)+" ",1),a("span",Eu,j(n.value),1)],2)):B("",!0)}},[["__scopeId","data-v-aaaa00e5"]]),Au={阿里云盘:{domains:["www.aliyundrive.com","www.alipan.com"],patterns:[/https?:\/\/www\.aliyundrive\.com\/s\/[a-zA-Z0-9]+/,/https?:\/\/www\.alipan\.com\/s\/[a-zA-Z0-9]+/]},夸克:{domains:["pan.quark.cn"],patterns:[/https?:\/\/pan\.quark\.cn\/s\/[a-zA-Z0-9]+/]},百度云盘:{domains:["pan.baidu.com"],patterns:[/https?:\/\/pan\.baidu\.com\/s\/[a-zA-Z0-9]+/]},天翼云盘:{domains:["cloud.189.cn"],patterns:[/https?:\/\/cloud\.189\.cn\/t\/[a-zA-Z0-9]+/]},移动云盘:{domains:["caiyun.139.com","yun.139.com"],patterns:[/https?:\/\/caiyun\.139\.com\/w\/i\/[a-zA-Z0-9]+/,/https?:\/\/yun\.139\.com\/shareweb\/#\/w\/i\/[a-zA-Z0-9]+/]},115:{domains:["115cdn.com"],patterns:[/https?:\/\/115cdn\.com\/s\/[a-zA-Z0-9]+/]},迅雷:{domains:["pan.xunlei.com"],patterns:[/https?:\/\/pan\.xunlei\.com\/s\/[a-zA-Z0-9]+/]},UC云盘:{domains:["drive.uc.cn"],patterns:[/https?:\/\/drive\.uc\.cn\/s\/[a-zA-Z0-9]+/]},"123网盘":{domains:["www.123684.com"],patterns:[/https?:\/\/www\.123684\.com\/s\/[a-zA-Z0-9\-]+/]}},$u=/^magnet:\?xt=urn:btih:[a-fA-F0-9]{32,40}/;function Pu(e){if(!e||typeof e!="string")return{type:null,platform:null,isValid:!1};const t=e.trim();if($u.test(t))return{type:"bt",platform:null,isValid:!0};for(const[s,o]of Object.entries(Au))try{const l=new URL(t);if(o.domains.includes(l.hostname)&&o.patterns.some(r=>r.test(t)))return{type:"netdisk",platform:s,isValid:!0}}catch{continue}return/^https?:\/\/.+/.test(t)?{type:"online",platform:null,isValid:!0}:{type:null,platform:null,isValid:!1}}function Cn(e){if(!e||typeof e!="string")return null;const t=[/[?&]password=([a-zA-Z0-9]+)/i,/[?&]pwd=([a-zA-Z0-9]+)/i,/#([a-zA-Z0-9]{4})$/,/提取码[::]\s*([a-zA-Z0-9]+)/i,/密码[::]\s*([a-zA-Z0-9]+)/i,/访问码[::]\s*([a-zA-Z0-9]+)/i,/验证码[::]\s*([a-zA-Z0-9]+)/i,/code[::]\s*([a-zA-Z0-9]+)/i];for(const s of t){const o=e.match(s);if(o&&o[1])return o[1]}return null}function Vu(e){if(!e||typeof e!="string")return"";let t=e.trim();const s=t.match(/(https?:\/\/[^\s]+)/i);if(s)return s[1];const o=t.match(/(magnet:\?[^\s]+)/i);return o?o[1]:t}function Tn(e){if(!e||typeof e!="string")return{has_4k:!1,has_hdr:!1,has_dolby_atmos:!1,file_size:null};e.toLowerCase();const t=/\b(4k|4K|2160p|2160P)\b/i.test(e),s=/\b(hdr|HDR)\b/i.test(e),o=/\b(ddp[\d\.]*|DDP[\d\.]*|杜比全景声|dolby\s*atmos|Dolby\s*Atmos|atmos|Atmos)\b/i.test(e),l=[/[\(\[\(](\d+(?:\.\d+)?[KMGT]B?)[\)\]\)]/gi,/[\(\[\(](\d+(?:\.\d+)?[kmgt]b?)[\)\]\)]/gi];let n=null;for(const r of l){const i=e.match(r);if(i&&i.length>0){const u=i.map(m=>{const f=m.match(/(\d+(?:\.\d+)?[KMGTkmgt]B?)/i);return f?f[1].toUpperCase():null}).filter(Boolean);if(u.length>0){n=u.join(" + ");break}}}return{has_4k:t,has_hdr:s,has_dolby_atmos:o,file_size:n}}function Sn(e){const t=Cn(e),s=Vu(e),o=Pu(s),l=Cn(s),n=t||l;return{linkType:o.type||"",platform:o.platform||"",extractCode:n||"",cleanedUrl:s,isValid:o.isValid}}const Mu={class:"link-manager"},Uu={key:0,class:"modal-overlay"},Iu={class:"modal-content"},Du={class:"modal-body"},Lu={class:"form-row"},Ou={class:"form-group"},Ru={class:"form-row"},Fu={key:0,class:"form-group"},Nu={key:1,class:"form-group"},Bu={class:"input-wrapper"},qu={class:"form-group"},zu={class:"input-wrapper"},ju={class:"form-row"},Hu={class:"form-group"},Ku={class:"input-wrapper"},Wu={class:"form-row"},Gu={class:"form-group"},Qu={class:"input-wrapper"},Zu={class:"form-group"},Yu={class:"checkbox-group"},Ju={class:"form-actions"},Xu=["disabled"],ec={key:1,class:"modal-overlay"},tc={class:"modal-content"},sc={class:"modal-body"},oc={class:"form-row"},lc={class:"form-group"},nc={class:"form-row"},rc={key:0,class:"form-group"},ic={key:1,class:"form-group"},ac={class:"input-wrapper"},uc={class:"form-group"},cc={class:"input-wrapper"},dc={class:"form-row"},fc={class:"form-group"},pc={class:"input-wrapper"},hc={class:"form-row"},mc={class:"form-group"},vc={class:"input-wrapper"},gc={class:"form-group"},_c={class:"checkbox-group"},yc={class:"form-actions"},bc=["disabled"],wc={class:"links-section"},xc={class:"filter-bar"},kc={class:"filter-controls"},Cc=["disabled"],Tc={key:0,class:"links-list"},Sc={key:1,class:"links-list"},Ec=["onClick"],Ac={class:"link-header"},$c={key:0,class:"platform-badge"},Pc=["src","alt"],Vc={class:"link-meta"},Mc={key:0,class:"language"},Uc={key:1,class:"file-size"},Ic={key:2,class:"feature-tags"},Dc={key:0,class:"feature-tag feature-4k"},Lc={key:1,class:"feature-tag feature-hdr"},Oc={key:2,class:"feature-tag feature-dolby"},Rc={key:3,class:"feature-tag feature-subtitle"},Fc={class:"link-content"},Nc={class:"link-title-row"},Bc={class:"link-details"},qc=["onContextmenu"],zc={class:"vote-section"},jc=["onClick","disabled"],Hc={viewBox:"0 0 100 100",class:"vote-icon",xmlns:"http://www.w3.org/2000/svg"},Kc=["fill"],Wc=["onClick","disabled"],Gc={viewBox:"0 0 100 100",class:"vote-icon down-icon",xmlns:"http://www.w3.org/2000/svg"},Qc=["fill"],Zc={class:"action-buttons"},Yc=["onClick"],Jc=["onClick"],Xc=["onClick"],ed={class:"link-footer"},td={class:"author"},sd={class:"date"},od={key:0,class:"report-count"},ld={key:2,class:"login-prompt"},nd={key:3,class:"empty-state"},rd={key:2,class:"pagination"},id=["disabled"],ad={class:"pagination-info"},ud=["disabled"],cd={key:0,class:"modal-overlay"},dd={class:"modal-content"},fd={class:"modal-body"},pd={class:"form-actions"},hd=["disabled"],md={key:1,class:"modal-overlay"},vd={class:"modal-content"},gd={class:"modal-body"},_d={class:"form-group"},yd={class:"form-group"},bd={class:"input-wrapper"},wd={class:"form-actions"},xd=["disabled"],kd=800,ws="doubanflix_link_draft",Cd=Ye({__name:"LinkManager",props:{movieId:{type:String,required:!0},linkType:{type:String,default:"all"}},setup(e){const t=e,s=Ve(()=>t.linkType),o=L([]),l=L({total:0,netdisk:0,bt:0,online:0,platforms:{}}),n=L(!1),r=L(""),i=L(""),u=L(!1),m=L(!1),f=L(null),g=L(!1),E=L(new Set),b=L({page:1,limit:5,total:0,pages:0}),_=Ut({linkType:"",platform:"",url:"",extractCode:"",title:"",size:"",has_4k:!1,has_hdr:!1,has_dolby_atmos:!1,has_subtitles:!1}),w=Ut({id:"",linkType:"",platform:"",url:"",extractCode:"",title:"",size:"",has_4k:!1,has_hdr:!1,has_dolby_atmos:!1,has_subtitles:!1}),X=Ut({platform:"",sortBy:"created_at"}),K=[{value:"",label:"请选择类型"},{value:"netdisk",label:"网盘"},{value:"bt",label:"BT"},{value:"online",label:"在线"}],W=[{value:"",label:"请选择平台"},{value:"夸克",label:"夸克网盘"},{value:"阿里云盘",label:"阿里云盘"},{value:"百度云盘",label:"百度网盘"},{value:"天翼云盘",label:"天翼云盘"},{value:"移动云盘",label:"移动云盘"},{value:"115",label:"115网盘"},{value:"迅雷",label:"迅雷网盘"},{value:"UC云盘",label:"UC网盘"},{value:"123网盘",label:"123网盘"}];je(()=>_.url,(h,d)=>{if(h&&h.trim()){const v=Sn(h.trim());v.isValid&&(_.url=v.cleanedUrl,_.linkType=v.linkType,_.platform=v.platform,_.extractCode=v.extractCode)}else(!h||h.trim()==="")&&(_.linkType="",_.platform="",_.extractCode="")}),je(()=>w.url,(h,d)=>{if(h&&h.trim()){const v=Sn(h.trim());v.isValid&&(w.url=v.cleanedUrl,w.linkType=v.linkType,w.platform=v.platform,w.extractCode=v.extractCode)}else(!h||h.trim()==="")&&(w.linkType="",w.platform="",w.extractCode="")}),je(()=>_.title,h=>{if(h&&h.trim()){const d=Tn(h.trim());_.has_4k=d.has_4k,_.has_hdr=d.has_hdr,_.has_dolby_atmos=d.has_dolby_atmos,d.file_size&&!_.size&&(_.size=d.file_size)}}),je(()=>w.title,h=>{if(h&&h.trim()){const d=Tn(h.trim());w.has_4k=d.has_4k,w.has_hdr=d.has_hdr,w.has_dolby_atmos=d.has_dolby_atmos,d.file_size&&!w.size&&(w.size=d.file_size)}});const Z=[{value:"created_at",label:"按时间"},{value:"likes_count",label:"按点赞数"},{value:"like_rate",label:"按点赞率"}],R=Ve(()=>{switch(m.value?w.linkType:_.linkType){case"netdisk":return W;default:return[{value:"",label:"请选择平台"}]}}),pe=Ve(()=>{const h=[{value:"",label:"所有平台"}];switch(t.linkType){case"netdisk":return h.concat([{value:"quark",label:"夸克"},{value:"ali",label:"阿里"},{value:"baidu",label:"百度"},{value:"tianyi",label:"天翼"},{value:"mobile",label:"移动"},{value:"115",label:"115"},{value:"xunlei",label:"迅雷"},{value:"uc",label:"UC"},{value:"123",label:"123"}]);default:return h}}),he=Ve(()=>oe.isAuthenticated.value),me=async(h=1)=>{if(t.movieId){if(!he.value){o.value=[],b.value={page:1,limit:5,total:0,pages:0};return}n.value=!0,r.value="";try{const d=t.linkType==="all"?void 0:t.linkType,v=await Tt.getLinks(t.movieId,{linkType:d,platform:X.platform||void 0,sortBy:X.sortBy,sortOrder:"desc",page:h,limit:b.value.limit});v.success?(o.value=v.data,v.pagination&&(b.value={page:v.pagination.page||1,limit:v.pagination.limit||5,total:v.pagination.total||0,pages:v.pagination.pages||0})):v.error&&v.error.includes("电影不存在")?(console.log("电影不存在,静默处理"),o.value=[],b.value={page:1,limit:5,total:0,pages:0}):v.error&&(v.error.includes("请先登录(不可用)")||v.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",v.error):r.value=v.error}catch(d){d.message&&d.message.includes("电影不存在")?(console.log("电影不存在,静默处理"),o.value=[],b.value={page:1,limit:5,total:0,pages:0}):d.message&&(d.message.includes("请先登录(不可用)")||d.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",d.message):(r.value="加载链接失败",console.error("加载链接错误:",d))}finally{n.value=!1}}},Ue=async()=>{if(t.movieId)try{const h=await Tt.getLinkStats(t.movieId);h.success&&(l.value=h.data)}catch(h){console.error("加载统计失败:",h)}},Et=async()=>{if(he.value){g.value=!0,r.value="";try{const h=await Tt.addLink({movieId:t.movieId,linkType:_.linkType,platform:_.platform,url:_.url,extractCode:_.extractCode,title:_.title,size:_.size,has_4k:_.has_4k,has_hdr:_.has_hdr,has_dolby_atmos:_.has_dolby_atmos,has_subtitles:_.has_subtitles});h.success?(i.value=h.message,rt(),p(),u.value=!1,await me(),await Ue(),setTimeout(()=>{i.value=""},3e3)):h.error&&(h.error.includes("请先登录(不可用)")||h.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",h.error):r.value=h.error}catch(h){h.message&&(h.message.includes("请先登录(不可用)")||h.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",h.message):(r.value="添加链接失败",console.error("添加链接错误:",h))}finally{g.value=!1}}},Fe=L(new Map),Ie=L(new Map),Ke=L(new Map),pt=async(h,d)=>{if(!he.value)return;const v=o.value.find(Je=>Je.id===h);if(!v)return;if(Fe.value.has(h)&&clearTimeout(Fe.value.get(h)),Ke.value.has(h)){const Je=Ke.value.get(h);Je.cancelled=!0,console.log("取消上一次正在执行的投票操作:",h)}Ie.value.has(h)||Ie.value.set(h,{originalUserVote:v.user_vote_type,originalUpVotes:v.up_votes||0,originalDownVotes:v.down_votes||0,clickSequence:[],link:v});const q=Ie.value.get(h);q.clickSequence.push({voteType:d,timestamp:Date.now()});const Le=x(q.originalUserVote,q.clickSequence);let ht=q.originalUpVotes,be=q.originalDownVotes;q.originalUserVote==="up"?Le===null?ht=Math.max(0,q.originalUpVotes-1):Le==="down"?(ht=Math.max(0,q.originalUpVotes-1),be=q.originalDownVotes+1):ht=q.originalUpVotes:q.originalUserVote==="down"?Le===null?be=Math.max(0,q.originalDownVotes-1):Le==="up"?(be=Math.max(0,q.originalDownVotes-1),ht=q.originalUpVotes+1):be=q.originalDownVotes:Le==="up"?ht=q.originalUpVotes+1:Le==="down"&&(be=q.originalDownVotes+1),v.user_vote_type=Le,v.up_votes=ht,v.down_votes=be;const mt=setTimeout(async()=>{const Je=Ie.value.get(h);if(!Je)return;const ce={cancelled:!1,linkId:h,timestamp:Date.now()};Ke.value.set(h,ce),Fe.value.delete(h),Ie.value.delete(h),await F(Je,ce),Ke.value.get(h)===ce&&Ke.value.delete(h)},kd);Fe.value.set(h,mt)},F=async(h,d)=>{const{originalUserVote:v,originalUpVotes:q,originalDownVotes:Le,clickSequence:ht,link:be}=h,mt=be.id;if(d&&d.cancelled){console.log("投票操作已被取消,跳过API请求:",mt);return}const Je=x(v,ht);if(console.log("分析用户投票意图:",{linkId:mt,originalUserVote:v,clickSequence:ht.map(ce=>ce.voteType),finalIntention:Je,currentUIState:be.user_vote_type,executionId:d==null?void 0:d.timestamp}),Je===v){console.log("用户最终意图与原始状态相同,跳过API请求");return}try{if(d&&d.cancelled){console.log("API请求前检查:投票操作已被取消:",mt);return}let ce;if(Je===null?ce=await Tt.removeVote(mt,q,Le,v):ce=await Tt.voteLink(mt,Je),d&&d.cancelled){console.log("API请求完成后检查:投票操作已被取消,忽略结果:",mt);return}ce.success?ce.data&&(be.user_vote_type=ce.data.user_vote_type,be.up_votes=ce.data.up_votes||0,be.down_votes=ce.data.down_votes||0):(be.user_vote_type=v,be.up_votes=q,be.down_votes=Le,ce.error&&(ce.error.includes("请先登录(不可用)")||ce.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",ce.error):r.value=ce.error)}catch(ce){if(d&&d.cancelled){console.log("异常处理中检查:投票操作已被取消,忽略错误:",mt);return}be.user_vote_type=v,be.up_votes=q,be.down_votes=Le,ce.message&&(ce.message.includes("请先登录(不可用)")||ce.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",ce.message):(r.value="投票操作失败",console.error("投票请求错误:",ce))}},x=(h,d)=>{if(d.length===0)return h;let v=h;for(const q of d){const{voteType:Le}=q;v===Le?v=null:v=Le}return v},I=async h=>{We.value=h.id,De.value=h.movie_id,At.value=!0},ee=()=>{At.value=!1,We.value="",De.value="",$t.value=!1},te=async()=>{if(!(!We.value||!De.value))try{$t.value=!0;const h=await Tt.deleteLink(De.value,We.value);h.success?(i.value=h.message,ee(),await me(),await Ue(),setTimeout(()=>{i.value=""},3e3)):h.error&&(h.error.includes("请先登录(不可用)")||h.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",h.error):r.value=h.error}catch(h){h.message&&(h.message.includes("请先登录(不可用)")||h.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",h.message):(r.value="删除链接失败",console.error("删除链接错误:",h))}finally{$t.value=!1}},rt=()=>{Object.assign(_,{linkType:"",platform:"",url:"",extractCode:"",title:"",size:"",has_4k:!1,has_hdr:!1,has_dolby_atmos:!1,has_subtitles:!1})},At=L(!1),We=L(""),De=L(""),$t=L(!1),Yt=L(!1),Ce=Ut({linkId:"",type:"",reason:""}),it=L(!1),Jt=[{value:"invalid_link",label:"无效链接"},{value:"copyright_issue",label:"版权问题"},{value:"malicious_link",label:"恶意链接"},{value:"spam",label:"垃圾信息"},{value:"fake_content",label:"虚假内容"},{value:"other",label:"其他"}],xs=h=>{he.value&&(Ce.linkId=h,Ce.type="invalid_link",Ce.reason="",Yt.value=!0)},Xs=async()=>{if(!Ce.type){he.value&&(r.value="请选择反馈类型");return}it.value=!0,r.value="";try{const h=await Tt.reportLink(Ce.linkId,Ce.type,Ce.reason);h.success?(i.value=h.message,Yt.value=!1,await me(),setTimeout(()=>{i.value=""},3e3)):h.error&&(h.error.includes("请先登录(不可用)")||h.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",h.error):r.value=h.error}catch(h){h.message&&(h.message.includes("请先登录(不可用)")||h.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",h.message):(r.value="反馈提交失败",console.error("反馈错误:",h))}finally{it.value=!1}},Pt=()=>{Yt.value=!1,Ce.linkId="",Ce.reason="",Ce.description=""},En=()=>{const h={linkType:_.linkType,platform:_.platform,url:_.url,extractCode:_.extractCode,title:_.title,language:_.language,has_4k:_.has_4k,has_hdr:_.has_hdr,has_dolby_atmos:_.has_dolby_atmos,has_subtitles:_.has_subtitles,timestamp:Date.now()};Object.values(h).some(v=>v&&v!==""&&typeof v!="number")&&localStorage.setItem(ws,JSON.stringify(h))},c=()=>{try{const h=localStorage.getItem(ws);if(h){const d=JSON.parse(h);if(Date.now()-d.timestamp>24*60*60*1e3)localStorage.removeItem(ws);else return Object.assign(_,{linkType:d.linkType||"",platform:d.platform||"",url:d.url||"",extractCode:d.extractCode||"",title:d.title||"",language:d.language||"",has_4k:d.has_4k||!1,has_hdr:d.has_hdr||!1,has_dolby_atmos:d.has_dolby_atmos||!1,has_subtitles:d.has_subtitles||!1}),!0}}catch(h){console.error("恢复草稿失败:",h),localStorage.removeItem(ws)}return!1},p=()=>{localStorage.removeItem(ws)},y=()=>{u.value=!0,c()&&console.log("已恢复草稿内容")},T=()=>{En(),u.value=!1,rt()},k=()=>{m.value=!1,f.value=null,P()},C=h=>{f.value=h,w.id=h.id,w.linkType=h.type,w.platform=h.platform||"",w.url=h.url,w.extractCode=h.password||"",w.title=h.title||"",w.size=h.size||"",w.has_4k=h.has_4k||!1,w.has_hdr=h.has_hdr||!1,w.has_dolby_atmos=h.has_dolby_atmos||!1,w.has_subtitles=h.has_subtitles||!1,m.value=!0},P=()=>{w.id="",w.linkType="",w.platform="",w.url="",w.extractCode="",w.title="",w.size="",w.has_4k=!1,w.has_hdr=!1,w.has_dolby_atmos=!1,w.has_subtitles=!1},$=async()=>{if(!g.value)try{g.value=!0,r.value="";const h=await Tt.updateLink(w.id,w);h.success?(i.value=h.message,k(),await me(b.value.page),setTimeout(()=>{i.value=""},3e3)):h.error&&(h.error.includes("请先登录(不可用)")||h.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",h.error):r.value=h.error}catch(h){console.error("修改链接失败:",h),h.message&&(h.message.includes("请先登录(不可用)")||h.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",h.message):r.value=h.message||"修改链接失败"}finally{g.value=!1}},A=h=>h.hasOwnProperty("is_owner")?he.value&&h.is_owner:he.value&&oe.userId.value===h.user_id,S=h=>({quark:"夸克",ali:"阿里",baidu:"百度",tianyi:"天翼",mobile:"移动",115:"115",xunlei:"迅雷",uc:"UC",123:"123",bilibili:"B站",iqiyi:"爱奇艺",youku:"优酷",tencent:"腾讯",bt:"磁力"})[h]||h,O=h=>{const d={quark:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540462038" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4774" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M469.134884 976.133953c-110.258605-9.763721-215.516279-59.534884-290.768372-137.168372-75.490233-78.109767-113.830698-154.552558-132.167442-263.858604-4.762791-28.338605-5.477209-95.970233-1.190698-123.832558 10.24-68.822326 33.101395-134.072558 64.297675-184.32 88.349767-142.407442 236.710698-226.470698 399.598139-226.470698 69.536744 0 132.167442 12.621395 192.416744 39.054884 52.628837 23.099535 110.496744 64.297674 149.313489 106.448372 60.725581 65.964651 91.92186 122.165581 114.783255 206.943256 18.098605 66.917209 18.574884 160.982326 1.428838 227.423255-19.289302 73.585116-45.484651 126.213953-92.636279 184.55814-40.96 50.96186-84.063256 86.92093-140.740466 117.402791-59.534884 32.148837-114.545116 48.104186-184.08186 53.819534-34.053953 2.857674-47.151628 2.857674-80.253023 0z m84.063256-238.615813c11.668837-5.00093 20.71814-19.051163 20.718139-32.625117 0-23.337674 4.524651-49.771163 10.47814-61.44 12.145116-23.813953 28.338605-32.148837 77.395348-39.769302 19.051163-2.857674 38.578605-6.906047 43.341396-8.811163 13.573953-5.953488 24.766512-17.384186 32.148837-33.339535 6.667907-14.526512 6.906047-15.955349 6.906047-53.105116-0.23814-41.19814-1.666977-50.247442-15.955349-87.15907-21.194419-55.486512-76.91907-110.734884-132.167442-130.738604-11.430698-4.048372-33.577674-9.525581-49.294884-12.383256-26.195349-4.286512-31.196279-4.524651-53.819535-1.905117-44.770233 5.23907-72.394419 14.050233-103.352558 32.625117-19.527442 11.906977-20.956279 13.097674-44.532093 36.435349-34.530233 34.053953-52.390698 67.155349-63.345116 116.688372-19.051163 86.92093 15.47907 178.604651 87.873488 233.853023 30.243721 23.099535 74.537674 41.674419 106.686512 44.770232 27.624186 2.857674 66.67907 1.190698 76.91907-3.095813z" fill="#3A25DD" p-id="4775"></path></svg>'),ali:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540539411" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5761" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M841.984 576.554667a18.816 18.816 0 0 1-13.184-21.973334c41.941333-200.448-75.605333-402.346667-269.226667-456.021333-199.509333-55.125333-405.333333 67.285333-459.52 273.109333v0.981334a460.586667 460.586667 0 0 0 62.464 371.2 439.893333 439.893333 0 0 0 208.768 167.765333c236.544 89.301333 491.178667-44.373333 566.272-283.349333a23.04 23.04 0 0 0-15.573333-29.269334l-80-22.442666z m-393.130667 194.133333c-72.704-20.010667-133.162667-68.266667-170.752-135.125333a298.112 298.112 0 0 1-28.288-219.989334C282.026667 293.12 404.48 220.501333 523.52 253.141333c112.64 31.232 182.4 146.346667 161.92 262.912a21.205333 21.205333 0 0 0 15.104 24.405334l75.605333 20.949333a17.493333 17.493333 0 0 1 11.733334 22.954667c-47.36 142.933333-195.114667 225.834667-338.986667 186.325333z" fill="#6666FF" p-id="5762"></path></svg>'),baidu:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540564286" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6851" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M292.571429 435.931429c-1.462857-11.702857-2.925714-24.868571-2.925715-38.034286C289.645714 275.017143 389.12 175.542857 512 175.542857c122.88 0 222.354286 99.474286 222.354286 223.817143 0 13.165714-1.462857 24.868571-2.925715 38.034286 112.64 0 204.8 92.16 204.8 206.262857 0 112.64-92.16 204.8-206.262857 204.8-57.051429 0-109.714286-23.405714-146.285714-61.44-19.017143-20.48-19.017143-52.662857 0-71.68 20.48-20.48 52.662857-20.48 71.68 0l1.462857 1.462857c19.017143 17.554286 43.885714 29.257143 71.68 29.257143 57.051429 0 103.862857-46.811429 103.862857-103.862857 0-57.051429-46.811429-103.862857-103.862857-103.862857-26.331429 0-49.737143 10.24-68.754286 26.331428l-1.462857 1.462857-5.851428 5.851429-4.388572 4.388571-207.725714 210.651429c-38.034286 38.034286-89.234286 61.44-146.285714 61.44C179.931429 848.457143 87.771429 756.297143 87.771429 642.194286c0-112.64 90.697143-204.8 204.8-206.262857m1.462857 310.125714c57.051429 0 103.862857-46.811429 103.862857-103.862857 0-57.051429-46.811429-103.862857-103.862857-103.862857-57.051429 0-103.862857 46.811429-103.862857 103.862857 0 57.051429 46.811429 103.862857 103.862857 103.862857M512 520.777143c67.291429 0 121.417143-54.125714 121.417143-121.417143 0-67.291429-54.125714-121.417143-121.417143-121.417143-67.291429 0-121.417143 54.125714-121.417143 121.417143 0 65.828571 54.125714 121.417143 121.417143 121.417143" fill="#06A7FF" p-id="6852"></path><path d="M631.954286 412.525714v-5.851428c0-27.794286 23.405714-51.2 51.2-51.2s51.2 23.405714 51.2 51.2v5.851428c-7.314286 117.028571-103.862857 209.188571-222.354286 209.188572s-215.04-92.16-222.354286-209.188572v-5.851428c0-27.794286 23.405714-51.2 51.2-51.2s51.2 23.405714 51.2 51.2v5.851428c5.851429 61.44 58.514286 108.251429 119.954286 108.251429 62.902857 0 114.102857-46.811429 119.954286-108.251429" fill="#FF436A" p-id="6853"></path></svg>'),tianyi:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540718396" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8675" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M833.39946667 423.28746667a185.00266667 185.00266667 0 0 0-205.55093334-134.07573333A226.304 226.304 0 0 0 463.0528 217.6c-93.52533333 0-176.5376 58.29973333-209.92 143.01866667A210.80746667 210.80746667 0 0 0 34.13333333 571.01653334c0 116.05333333 94.48106667 210.5344 210.5344 210.5344h281.87306667a41.09653333 41.09653333 0 0 0 0-82.1248H244.66773333a128.54613333 128.54613333 0 0 1-128.34133333-128.4096 128.54613333 128.54613333 0 0 1 157.01333333-125.20106667l40.82346667 9.35253333 8.46506667-41.09653333a143.7696 143.7696 0 0 1 140.42453333-114.34666667c45.73866667 0 89.15626667 22.18666667 116.05333333 59.32373334l17.47626667 24.02986666 28.2624-9.0112a101.5808 101.5808 0 0 1 132.36906667 88.95146667l2.79893333 35.97653333 36.0448 1.8432a117.62346667 117.62346667 0 0 1 111.68426667 117.62346667 117.89653333 117.89653333 0 0 1-128.88746667 117.21386667l-4.36906667-0.54613334a115.3024 115.3024 0 0 1-6.48533333-1.024l-5.12-1.09226666a128.88746667 128.88746667 0 0 1-15.83786667-4.98346667 133.46133333 133.46133333 0 0 1-10.4448-4.7104l-3.75466666-1.91146667a119.73973333 119.73973333 0 0 1-6.82666667-4.16426666l-2.2528-1.36533334a118.23786667 118.23786667 0 0 1-47.78666667-67.65226666h69.4272l-113.73226666-162.47466667-113.73226667 162.47466667h74.41066667c7.23626667 48.46933333 31.88053333 91.27253333 67.44746666 121.78773333l2.18453334 2.048 2.18453333 1.6384a182.39466667 182.39466667 0 0 0 9.216 7.03146667l4.02773333 2.8672c3.75466667 2.52586667 7.5776 4.98346667 11.53706667 7.30453333l3.072 1.77493333c4.36906667 2.4576 8.73813333 4.77866667 13.24373333 6.82666667l1.57013334 0.68266667c15.01866667 6.9632 31.06133333 12.01493333 47.78666666 15.01866666l1.36533334 0.2048c5.12 0.95573333 10.4448 1.6384 15.7696 2.11626667l2.048 0.13653333a203.22986667 203.22986667 0 0 0 46.55786666-1.57013333A200.22613333 200.22613333 0 0 0 989.86666667 618.46186667a199.81653333 199.81653333 0 0 0-156.4672-195.24266667" p-id="8676"></path></svg>'),mobile:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540741796" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9705" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M1020.16 266.88c-44.16 11.52-88.32 21.12-133.12 30.08-28.8 5.76-57.6 11.52-87.04 14.08-35.84 3.84-71.04 5.12-106.88 7.04-81.92 3.84-163.84 2.56-245.76 1.92-64.64-0.64-129.92 0-193.28 13.44-56.96 12.16-111.36 30.08-159.36 64-30.08 21.12-59.52 43.52-94.72 55.68 1.92 5.76 7.04 4.48 10.88 4.48 37.76 1.28 75.52-1.92 112.64-6.4 24.96-3.2 50.56-6.4 75.52-10.24 32-5.12 64-6.4 96-8.32 17.92-1.28 35.84-1.92 53.76 1.28 12.8 1.92 16.64 9.6 10.88 21.12-3.2 7.04-8.96 12.8-14.08 18.56-14.72 15.36-32 28.16-48 42.24-40.96 36.48-80.64 75.52-119.04 115.2-21.12 21.76-41.6 44.16-53.76 72.32-29.44 68.48-26.88 134.4 17.28 195.2 33.92 46.72 85.76 65.28 140.16 75.52 28.16 5.12 56.96 3.2 85.76 3.2 87.04 0 174.08-0.64 261.12 1.28 51.84 1.28 103.04 1.28 154.24-7.04 52.48-8.32 95.36-34.56 125.44-77.44 42.88-60.8 54.4-128.64 37.12-200.96-12.16-51.2-37.12-94.72-80.64-126.08-69.76-49.28-147.84-64-231.68-48.64-32.64 5.76-61.44 20.48-83.2 45.44-43.52 49.92-47.36 107.52-27.52 167.04 17.28 52.48 81.92 81.28 136.96 65.28 24.96-7.04 44.8-21.76 55.04-46.08 8.32-18.56 1.92-35.2-15.36-42.24-2.56 26.88-14.72 38.4-42.88 39.04H640a54.912 54.912 0 0 1-53.12-56.32c0-31.36 26.88-67.84 59.52-78.72 51.84-17.28 98.56-8.32 140.16 27.52 40.96 36.48 55.04 97.92 30.72 140.8-24.32 43.52-64 67.84-111.36 78.08-40.96 8.32-82.56 8.96-124.16 10.88-44.16 1.92-88.32 1.28-132.48-1.28-33.28-1.92-67.2-4.48-99.84-11.52-28.8-6.4-56.96-14.72-79.36-35.2a61.696 61.696 0 0 1-21.76-51.84c2.56-34.56 17.28-64.64 39.68-90.88a3790.08 3790.08 0 0 1 190.72-202.24c25.6-25.6 56.96-40.32 92.8-43.52 32-2.56 63.36-3.84 95.36-5.76 58.88-3.84 117.12-11.52 174.72-27.52 64-17.28 120.96-46.72 161.92-101.12 7.68-9.6 15.36-19.2 18.56-32h-3.84zM869.12 44.8c0 7.68-3.84 13.44-7.04 19.2-19.2 35.84-49.92 58.88-84.48 77.44-48 26.24-99.84 41.6-153.6 49.28-65.92 9.6-132.48 8.32-199.04 7.04-78.08-1.92-156.16 1.92-232.96 16.64-23.04 4.48-46.08 6.4-69.12 9.6-3.84 0-8.32 1.28-14.08 1.92 1.92-1.92 3.2-2.56 4.48-3.84 13.44-7.04 24.32-17.28 33.92-28.8 40.32-48.64 91.52-75.52 153.6-85.12 44.8-7.04 90.24-7.68 135.68-9.6 65.92-1.92 131.2-1.28 197.12-6.4 78.08-5.76 154.24-22.4 228.48-46.08 1.92 0 3.84-0.64 6.4-1.28z" fill="#0090FE" p-id="9706"></path></svg>'),115:"data:image/svg+xml;base64,"+btoa('<svg t="1758974307798" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13186" width="200" height="200"><path d="M701.004655 35.208896c29.184693-0.150426 57.568137-7.509021 84.900645-17.220197 20.924565 9.561773-3.704368 30.886451-7.559163 44.903699-9.81146 18.4717-18.371416 37.594223-29.084409 55.516408-10.562567 15.618723-29.785374 24.128537-48.4075 23.228027-75.139328-0.100284-150.228513 0-225.367841-0.050142-21.425985-0.851391-42.250266 12.565177-50.960649 32.03767-11.763928 24.329105-25.080212 47.957245-36.193317 72.586179 67.680449 13.216 137.012514 25.430182 198.886723 57.31845 58.670238 29.9358 109.880573 76.740802 139.615804 136.01172 37.294394 72.836889 39.797401 162.54298 5.106298 236.882082C696.149067 753.612827 625.013937 810.830993 545.56956 838.764182c-95.764064 32.989345-205.795063 33.939997-297.453622-12.214183-0.550539-0.751107-1.701758-2.252297-2.302439-3.053546 89.155553 11.914354 183.668113-3.604084 260.560364-51.611471 49.659003-30.836309 89.305979-80.195483 101.069907-138.214898 11.062963-44.803415 2.753717-93.411483-22.577205-131.957381-38.845727-60.021002-102.421694-100.519368-169.70203-121.895211-63.825654-21.926382-131.005706-30.036084-197.685361-37.594223 47.306422-93.110631 93.66117-186.721659 140.567479-280.032858 8.760524-17.020652 28.234041-27.432793 47.206138-26.78197C503.81969 35.208896 602.437755 35.609009 701.004655 35.208896z" fill="#224888" p-id="13187"></path></svg>'),xunlei:"data:image/svg+xml;base64,"+btoa('<svg t="1758974328647" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14190" width="200" height="200"><path d="M432.64 407.04s199.68-217.6 468.48-322.56c0 0 12.8-5.12 2.56 7.68s-56.32 84.48-66.56 97.28l-35.84 33.28 17.92-5.12-35.84 79.36-46.08 46.08 33.28-10.24-38.4 92.16-40.96 40.96 35.84-20.48s-17.92 38.4-35.84 66.56c0 0 163.84 17.92 302.08 81.92 0 0-76.8 20.48-107.52 28.16l-33.28-7.68 15.36 10.24-35.84 15.36c-2.56 0-28.16-7.68-40.96-2.56 0 0 15.36 5.12 17.92 10.24l-38.4 15.36s-7.68 5.12-15.36 5.12c-5.12 0-38.4-7.68-48.64-2.56 0 0 20.48 10.24 28.16 10.24 0 0-12.8 17.92-122.88 23.04 0 0 81.92 227.84 79.36 258.56-2.56 30.72-48.64-35.84-48.64-35.84s-69.12-76.8-89.6-92.16c-20.48-15.36-79.36-25.6-204.8-104.96s-125.44-181.76-117.76-230.4c7.68-48.64 7.68-84.48-23.04-94.72s-81.92-23.04-189.44-25.6c0 0-17.92-12.8 12.8-12.8 30.72 2.56 112.64 2.56 156.16-5.12 48.64-10.24 66.56-25.6 104.96-20.48 38.4 5.12 87.04 17.92 140.8 71.68z" fill="#1390F2" p-id="14191"></path></svg>'),uc:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1758974377018" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="17084" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M240.32 674.282667c11.093333-57.856 42.837333-102.656 89.450667-136.896 28.458667-20.885333 58.709333-39.338667 88.362666-58.538667 47.36-30.634667 87.018667-67.989333 107.221334-122.304 22.592-60.650667 20.970667-119.701333-20.117334-171.818667-52.053333-66.005333-122.389333-86.208-203.648-71.658666-59.093333 10.581333-107.52 41.173333-149.397333 82.88-17.429333 17.344-32.256 36.778667-43.648 61.354666 3.925333-2.645333 6.037333-4.053333 8.106667-5.482666 22.549333-15.722667 47.36-23.253333 74.986666-22.186667 46.144 1.813333 84.352 41.088 85.397334 87.189333 0.682667 30.336-8.725333 57.386667-26.88 80.704-23.104 29.76-48 58.112-72.298667 86.933334-52.266667 62.08-79.338667 132.672-68.416 214.336 10.965333 82.090667 53.802667 144.064 126.528 183.808 45.845333 25.024 96.149333 33.344 150.378667 32.832-2.922667-1.237333-4.096-1.856-5.333334-2.197334-104.170667-28.672-159.253333-142.016-140.693333-238.933333zM653.184 473.6c42.176 13.888 80.213333 36.138667 118.826667 57.344 40.576 22.293333 83.285333 23.210667 127.018666 10.304 8.533333-2.517333 12.010667-7.168 11.178667-16.042667-1.066667-11.690667-0.448-23.594667-2.197333-35.157333-11.584-76.970667-53.141333-130.026667-126.997334-156.288-9.258667-3.285333-12.224-8.405333-14.976-17.194667-5.290667-16.853333-12.416-33.237333-19.925333-49.28-3.093333-6.613333-9.088-11.84-14.869333-19.050666-5.504 8.234667-10.176 14.357333-13.930667 21.013333-14.122667 24.917333-18.666667 52.373333-19.690667 80.426667-0.298667 8.618667-2.56 14.997333-9.408 19.754666-15.189333 10.538667-29.632 22.549333-45.888 31.082667-34.794667 18.218667-70.549333 34.624-104.96 51.285333 39.018667-0.213333 77.653333 9.237333 115.84 21.802667z m43.456 380.224c-14.826667-3.456-30.058667-5.162667-45.738667-7.765333 0.789333-2.986667 1.365333-5.546667 2.154667-8.064 11.52-36.458667 13.568-73.386667 8.789333-111.36-15.893333-126.421333-143.893333-202.218667-246.506666-180.288-54.613333 11.648-93.269333 42.154667-115.690667 93.226666 82.154667-81.365333 205.12-56.512 255.872 13.781334 33.493333 46.378667 42.602667 97.408 25.472 152-17.173333 54.762667-56.661333 88.533333-111.573333 109.653333 70.634667 1.984 266.624-4.16 290.432-11.733333-2.666667-5.12-4.672-10.453333-7.914667-14.869334-13.845333-18.730667-33.088-29.44-55.296-34.581333z m-158.72-97.877333c-0.490667-64.533333-49.024-117.546667-117.056-117.909334-73.429333-0.362667-118.229333 59.946667-118.229333 117.717334 0 61.76 51.136 118.186667 117.546666 117.12 65.194667-0.042667 118.250667-52.266667 117.76-116.928z m-118.336 53.397333a53.461333 53.461333 0 0 1-53.333333-54.144c0.128-29.312 25.386667-54.464 54.186666-53.973333 29.248 0.490667 54.08 25.344 54.293334 54.314666 0.213333 29.632-24.704 53.930667-55.146667 53.802667z m493.653333-168.576c-5.866667-23.061333-22.058667-35.882667-43.904-41.322667-15.210667-3.818667-31.04-5.290667-46.656-7.296-42.645333-5.504-80.149333-23.210667-116.096-45.994666-72.213333-45.76-150.976-65.92-236.373333-55.978667-14.784 1.728-29.098667 7.402667-43.626667 11.242667l0.768 3.072c9.386667 0 18.88-0.917333 28.16 0.170666 22.570667 2.666667 45.717333 3.861333 67.456 9.898667 77.056 21.44 132.288 71.104 171.669334 139.306667 5.610667 9.749333 11.968 16.277333 22.826666 16.853333 15.616 0.853333 31.488 2.432 46.826667 0.426667a125.013333 125.013333 0 0 0 39.125333-12.458667c35.072-17.6 70.677333-25.450667 109.077334-10.752 0.853333-2.026667 1.344-2.645333 1.322666-3.221333a19.626667 19.626667 0 0 0-0.597333-3.946667z" fill="#FC7A28" p-id="17085"></path></svg>'),123:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1759299472449" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9534" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M296.48 1018.44c-157.16 0-285-129.24-285-288.12V293.72C11.48 134.84 139.32 5.6 296.48 5.6h431.04c157.16 0 285 129.24 285 288.12v436.56c0 158.88-127.84 288.12-285 288.12H296.48z" fill="#FFFFFF" p-id="9535"></path><path d="M306.08 68.08h411.88c128.4 0 232.32 105.24 232.32 235.32v417.16c0 130.08-103.92 235.32-232.32 235.32H306.08c-128.4 0-232.32-105.24-232.32-235.32V303.4c-0.04-130.04 103.88-235.32 232.32-235.32z" fill="#597DFC" p-id="9536"></path><path d="M234.88 304.48H147.24v415.04h87.64V304.48z m129.28 304.84c0.44-21.6 3.8-35.72 10.36-42.36 4.84-6.64 12.48-11.12 22.4-13.68 9.72-2.56 10.12-2.36 30.64-2.56h23.24c42.68 0 52.6-6.4 73.92-19.24 14.36-8.76 23.24-23.32 31.48-41.92 8.24-18.4 12.24-39.8 12.24-63.76 0-19.48-3.4-37.64-9.92-54.32-6.56-16.92-16.04-30.16-28.32-40.2-20.48-17.76-37.6-26.76-109.4-26.76H283.48v74h118.92c23.04 0 39.48 3.2 49.84 9.4 13.52 8.76 20.28 22.48 20.28 41.08 0 17.12-7.4 29.96-22.16 38.52-9.52 5.36-17.96 8.12-40.56 8.12h-14.16c-27.88 0-34.64 1.92-47.72 5.56-13.08 3.64-25.12 10.92-36.32 21.84-23.64 24.4-35.28 59.88-34.44 106.32v110.16h280.48v-73.36H363.72v-36.8h0.44z m353.56 110.2c30.64 0 53.64-1.48 69.08-4.72 15.44-3.2 29.56-9 42.68-17.76 29.56-19.04 44.16-48.36 44.16-87.72 0-42.8-18.16-76.16-54.72-100.12 36.56-21.6 54.72-51.56 54.72-90.28 0-22.48-4.24-44.28-16.48-63.96-12.24-21.16-31.04-34.64-52.4-42.56-9.08-3.44-17.32-5.36-24.92-6.2-7.6-0.84-24.92-1.48-51.96-1.92h-117v74h101.8c14.36 0 24.52 0.44 30.4 1.48 5.92 1.08 11.2 3.2 15.64 6.64 12.24 8.36 18.36 21.6 18.36 39.8 0 16.68-4.64 28.88-14.16 36.8-7.8 6.64-24.52 10.04-50.28 10.04h-62.96v73.36h62.96c21.32 0 36.32 2.56 44.76 7.48 13.52 7.92 20.28 22.24 20.28 43 0 17.12-5.28 29.96-16.04 38.52-8.64 7.08-24.92 10.48-49.2 10.48h-101.8v73.36h107.08v0.28z" fill="#FFFFFF" p-id="9537"></path></svg>')};return d[h]||d.quark},V=h=>{const d=new Date(h);return d.toLocaleDateString("zh-CN")+" "+d.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"})},D=h=>{i.value="已复制到剪贴板",setTimeout(()=>{i.value=""},2e3)},N=async(h,d)=>{try{if(window.open(h,"_blank"),d)try{await navigator.clipboard.writeText(d),i.value=`链接已打开,提取码 "${d}" 已复制到剪贴板`}catch{const q=document.createElement("textarea");q.value=d,q.style.position="fixed",q.style.left="-999999px",q.style.top="-999999px",document.body.appendChild(q),q.focus(),q.select();try{document.execCommand("copy"),i.value=`链接已打开,提取码 "${d}" 已复制到剪贴板`}catch{i.value=`链接已打开,提取码: ${d} (请手动复制)`}finally{document.body.removeChild(q)}}else i.value="链接已打开";setTimeout(()=>{i.value=""},3e3)}catch(v){console.error("操作失败:",v),r.value="操作失败"}},G=(h,d)=>{h.preventDefault(),N(d.url,d.password)},le=h=>{E.value.has(h)?E.value.delete(h):E.value.add(h)},Q=h=>E.value.has(h),ge=()=>{E.value.clear()};je(()=>t.movieId,async h=>{h&&(ge(),await Xt(),me(),Ue())},{immediate:!0}),je(()=>t.linkType,async()=>{ge(),X.platform="",b.value.page=1,t.movieId&&(await Xt(),me())});const Te=h=>{h>=1&&h<=b.value.pages&&(ge(),me(h))},Ge=()=>{b.value.page>1&&Te(b.value.page-1)},Qe=()=>{b.value.page<b.value.pages&&Te(b.value.page+1)},Rt=()=>{const h=document.querySelector(".auth-container")||document.querySelector(".auth-component")||document.querySelector("[data-auth-component]")||document.querySelector("#user-section");if(h)h.scrollIntoView({behavior:"smooth",block:"start"});else{const d=document.querySelector('.nav-btn[data-tab="user"]')||document.querySelector('button[data-tab="user"]')||Array.from(document.querySelectorAll(".nav-btn")).find(v=>v.textContent.includes("👤")||v.textContent.includes("用户"));if(d)d.click();else{const v=new CustomEvent("switchToUserTab",{bubbles:!0,detail:{tab:"user"}});document.dispatchEvent(v)}}};Wt(async()=>{t.movieId&&(await Xt(),me(),Ue())});const Xt=async()=>{if(!oe.initialized.value)return new Promise(h=>{let d=0;const v=50,q=()=>{if(d++,oe.initialized.value||d>=v){h();return}setTimeout(q,100)};q()})};return(h,d)=>(M(),U(Re,null,[a("div",Mu,[m.value?(M(),U("div",Uu,[a("div",Iu,[a("div",{class:"modal-header"},[d[33]||(d[33]=a("h4",null,"修改链接",-1)),a("button",{class:"close-btn",onClick:k},"×")]),a("div",Du,[a("form",{onSubmit:He($,["prevent"])},[a("div",Lu,[a("div",Ou,[d[34]||(d[34]=a("label",null,"链接类型 *",-1)),J(Ot,{modelValue:w.linkType,"onUpdate:modelValue":d[0]||(d[0]=v=>w.linkType=v),options:K,placeholder:"请选择类型",onChange:d[1]||(d[1]=v=>w.platform="")},null,8,["modelValue"])])]),a("div",Ru,[w.linkType==="netdisk"?(M(),U("div",Fu,[d[35]||(d[35]=a("label",null,"平台",-1)),J(Ot,{modelValue:w.platform,"onUpdate:modelValue":d[2]||(d[2]=v=>w.platform=v),options:R.value,placeholder:"请选择平台"},null,8,["modelValue","options"])])):B("",!0),w.linkType==="netdisk"?(M(),U("div",Nu,[d[36]||(d[36]=a("label",null,"提取码",-1)),a("div",Bu,[re(a("input",{type:"text","onUpdate:modelValue":d[3]||(d[3]=v=>w.extractCode=v),placeholder:"如有提取码请填写",maxlength:"10"},null,512),[[fe,w.extractCode]])])])):B("",!0)]),a("div",qu,[d[37]||(d[37]=a("label",null,"链接地址 *",-1)),a("div",zu,[re(a("input",{type:"url","onUpdate:modelValue":d[4]||(d[4]=v=>w.url=v),placeholder:"(会自动识别链接类型)请输入完整的链接地址",required:""},null,512),[[fe,w.url]])])]),a("div",ju,[a("div",Hu,[d[38]||(d[38]=a("label",null,"标题描述 *",-1)),a("div",Ku,[re(a("input",{type:"text","onUpdate:modelValue":d[5]||(d[5]=v=>w.title=v),placeholder:"简短描述这个链接"},null,512),[[fe,w.title]])])])]),a("div",Wu,[a("div",Gu,[d[39]||(d[39]=a("label",null,"文件大小",-1)),a("div",Qu,[re(a("input",{type:"text","onUpdate:modelValue":d[6]||(d[6]=v=>w.size=v),placeholder:"如: 2.5G 或 1024M",pattern:"^\\d+(\\.\\d+)?[GMgm]$",title:"请输入数字+G或M,如: 2.5G 或 1024M"},null,512),[[fe,w.size]])])])]),a("div",Zu,[d[40]||(d[40]=a("label",null,"特性标签",-1)),a("div",Yu,[J(St,{modelValue:w.has_4k,"onUpdate:modelValue":d[7]||(d[7]=v=>w.has_4k=v),label:"4K画质",color:"blue"},null,8,["modelValue"]),J(St,{modelValue:w.has_hdr,"onUpdate:modelValue":d[8]||(d[8]=v=>w.has_hdr=v),label:"HDR",color:"green"},null,8,["modelValue"]),J(St,{modelValue:w.has_dolby_atmos,"onUpdate:modelValue":d[9]||(d[9]=v=>w.has_dolby_atmos=v),label:"杜比全景声",color:"purple"},null,8,["modelValue"]),J(St,{modelValue:w.has_subtitles,"onUpdate:modelValue":d[10]||(d[10]=v=>w.has_subtitles=v),label:"外挂字幕",color:"red"},null,8,["modelValue"])])]),a("div",Ju,[a("button",{type:"submit",disabled:g.value},j(g.value?"修改中...":"保存修改"),9,Xu),a("button",{type:"button",onClick:k},"取消")])],32)])])])):B("",!0),u.value?(M(),U("div",ec,[a("div",tc,[a("div",{class:"modal-header"},[d[42]||(d[42]=a("h4",null,"添加新链接",-1)),a("button",{class:"close-btn",onClick:T},d[41]||(d[41]=[a("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},[a("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})],-1)]))]),a("div",sc,[a("form",{onSubmit:He(Et,["prevent"])},[a("div",oc,[a("div",lc,[d[43]||(d[43]=a("label",null,"链接类型 *",-1)),J(Ot,{modelValue:_.linkType,"onUpdate:modelValue":d[11]||(d[11]=v=>_.linkType=v),options:K,placeholder:"请选择类型",onChange:d[12]||(d[12]=v=>_.platform="")},null,8,["modelValue"])])]),a("div",nc,[_.linkType==="netdisk"?(M(),U("div",rc,[d[44]||(d[44]=a("label",null,"平台",-1)),J(Ot,{modelValue:_.platform,"onUpdate:modelValue":d[13]||(d[13]=v=>_.platform=v),options:R.value,placeholder:"请选择平台"},null,8,["modelValue","options"])])):B("",!0),_.linkType==="netdisk"?(M(),U("div",ic,[d[45]||(d[45]=a("label",null,"提取码",-1)),a("div",ac,[re(a("input",{type:"text","onUpdate:modelValue":d[14]||(d[14]=v=>_.extractCode=v),placeholder:"如有提取码请填写",maxlength:"10"},null,512),[[fe,_.extractCode]])])])):B("",!0)]),a("div",uc,[d[46]||(d[46]=a("label",null,"链接地址 *",-1)),a("div",cc,[re(a("input",{type:"url","onUpdate:modelValue":d[15]||(d[15]=v=>_.url=v),placeholder:"(会自动识别链接类型)请输入完整的链接地址",required:""},null,512),[[fe,_.url]])])]),a("div",dc,[a("div",fc,[d[47]||(d[47]=a("label",null,"标题描述",-1)),a("div",pc,[re(a("input",{type:"text","onUpdate:modelValue":d[16]||(d[16]=v=>_.title=v),placeholder:"简短描述这个链接"},null,512),[[fe,_.title]])])])]),a("div",hc,[a("div",mc,[d[48]||(d[48]=a("label",null,"文件大小",-1)),a("div",vc,[re(a("input",{type:"text","onUpdate:modelValue":d[17]||(d[17]=v=>_.size=v),placeholder:"如: 2.5G 或 1024M",pattern:"^\\d+(\\.\\d+)?[GMgm]$",title:"请输入数字+G或M,如: 2.5G 或 1024M"},null,512),[[fe,_.size]])])])]),a("div",gc,[d[49]||(d[49]=a("label",null,"特性标签",-1)),a("div",_c,[J(St,{modelValue:_.has_4k,"onUpdate:modelValue":d[18]||(d[18]=v=>_.has_4k=v),label:"4K画质",color:"green"},null,8,["modelValue"]),J(St,{modelValue:_.has_hdr,"onUpdate:modelValue":d[19]||(d[19]=v=>_.has_hdr=v),label:"HDR",color:"green"},null,8,["modelValue"]),J(St,{modelValue:_.has_dolby_atmos,"onUpdate:modelValue":d[20]||(d[20]=v=>_.has_dolby_atmos=v),label:"杜比全景声",color:"green"},null,8,["modelValue"]),J(St,{modelValue:_.has_subtitles,"onUpdate:modelValue":d[21]||(d[21]=v=>_.has_subtitles=v),label:"外挂字幕",color:"green"},null,8,["modelValue"])])]),a("div",yc,[a("button",{type:"submit",disabled:g.value},j(g.value?"添加中...":"添加链接"),9,bc),a("button",{type:"button",onClick:T},"取消")])],32)])])])):B("",!0),a("div",wc,[a("div",xc,[a("div",kc,[s.value==="netdisk"?(M(),Hs(Ot,{key:0,modelValue:X.platform,"onUpdate:modelValue":d[22]||(d[22]=v=>X.platform=v),options:pe.value,placeholder:"所有平台",onChange:d[23]||(d[23]=()=>{ge(),me()})},null,8,["modelValue","options"])):B("",!0),J(Ot,{modelValue:X.sortBy,"onUpdate:modelValue":d[24]||(d[24]=v=>X.sortBy=v),options:Z,placeholder:"按时间",onChange:d[25]||(d[25]=()=>{ge(),me()})},null,8,["modelValue"])]),a("button",{class:"add-link-btn-compact",onClick:y,disabled:!he.value,title:"添加链接"},d[50]||(d[50]=[a("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor"},[a("path",{d:"M8 1a.5.5 0 0 1 .5.5v6h6a.5.5 0 0 1 0 1h-6v6a.5.5 0 0 1-1 0v-6h-6a.5.5 0 0 1 0-1h6v-6A.5.5 0 0 1 8 1z"})],-1)]),8,Cc)]),n.value?(M(),U("div",Tc,[(M(),U(Re,null,Co(3,v=>J(ku,{key:"skeleton-"+v})),64))])):o.value.length>0?(M(),U("div",Sc,[(M(!0),U(Re,null,Co(o.value,v=>(M(),U("div",{class:"link-item",key:v.id,onClick:q=>le(v.id)},[a("div",Ac,[v.platform&&t.linkType!=="bt"&&t.linkType!=="online"?(M(),U("div",$c,[a("img",{src:O(v.platform),alt:S(v.platform),class:"platform-icon"},null,8,Pc)])):B("",!0),a("div",Vc,[v.language?(M(),U("span",Mc,j(v.language),1)):B("",!0),v.size?(M(),U("span",Uc,j(v.size),1)):B("",!0),v.has_4k||v.has_hdr||v.has_dolby_atmos||v.has_subtitles?(M(),U("div",Ic,[v.has_4k?(M(),U("span",Dc,"4K")):B("",!0),v.has_hdr?(M(),U("span",Lc,"HDR")):B("",!0),v.has_dolby_atmos?(M(),U("span",Oc,"杜比")):B("",!0),v.has_subtitles?(M(),U("span",Rc,"外挂字幕")):B("",!0)])):B("",!0)])]),a("div",Fc,[a("div",Nc,[v.title?(M(),U("div",{key:0,class:_e(["link-title",{expanded:Q(v.id)}])},j(v.title),3)):B("",!0),a("div",{class:_e(["expand-arrow",{expanded:Q(v.id)}])},d[51]||(d[51]=[a("svg",{viewBox:"0 0 1024 1024",width:"16",height:"16"},[a("path",{d:"M512 330.666667c14.933333 0 29.866667 4.266667 40.533333 14.933333l277.33333399 234.666667c27.733333 23.466667 29.866667 64 8.53333301 89.6-23.466667 27.733333-64 29.866667-89.6 8.53333299L512 477.866667l-236.8 200.53333299c-27.733333 23.466667-68.266667 19.19999999-89.6-8.53333299-23.466667-27.733333-19.19999999-68.266667 8.53333301-89.6l277.33333399-234.666667c10.666667-10.666667 25.6-14.933333 40.533333-14.933333z",fill:"currentColor"})],-1)]),2)]),re(a("div",Bc,[a("div",{class:"link-url",onClick:d[26]||(d[26]=He(()=>{},["stop"])),onContextmenu:q=>G(q,v)},[J(kn,{text:v.url,type:"url",onCopySuccess:D},null,8,["text"])],40,qc),v.password?(M(),U("div",{key:0,class:"extract-code-container",onClick:d[27]||(d[27]=He(()=>{},["stop"]))},[d[52]||(d[52]=a("span",null,"提取码: ",-1)),J(kn,{text:v.password,type:"code",onCopySuccess:D},null,8,["text"])])):B("",!0)],512),[[Zs,Q(v.id)]])]),re(a("div",{class:"link-actions",onClick:d[28]||(d[28]=He(()=>{},["stop"]))},[a("div",zc,[a("button",{class:_e(["vote-btn up",{active:v.user_vote_type==="up",pending:Ie.value.has(v.id)}]),onClick:q=>pt(v.id,"up"),disabled:!he.value},[(M(),U("svg",Hc,[a("path",{d:"M15 75 Q15 80 20 80 L80 80 Q85 80 85 75 Q85 70 80 65 L55 25 Q52 20 50 20 Q48 20 45 25 L20 65 Q15 70 15 75 Z",fill:v.user_vote_type==="up"?"currentColor":"none",stroke:"currentColor","stroke-width":"6","stroke-linejoin":"round"},null,8,Kc)])),vs(" "+j(v.up_votes||0),1)],10,jc),a("button",{class:_e(["vote-btn down",{active:v.user_vote_type==="down",pending:Ie.value.has(v.id)}]),onClick:q=>pt(v.id,"down"),disabled:!he.value},[(M(),U("svg",Gc,[a("path",{d:"M15 75 Q15 80 20 80 L80 80 Q85 80 85 75 Q85 70 80 65 L55 25 Q52 20 50 20 Q48 20 45 25 L20 65 Q15 70 15 75 Z",fill:v.user_vote_type==="down"?"currentColor":"none",stroke:"currentColor","stroke-width":"6","stroke-linejoin":"round"},null,8,Qc)])),vs(" "+j(v.down_votes||0),1)],10,Wc)]),a("div",Zc,[A(v)?(M(),U("button",{key:0,class:"modify-btn",onClick:q=>C(v)}," 修改 ",8,Yc)):B("",!0),A(v)?(M(),U("button",{key:1,class:"delete-btn",onClick:q=>I(v)}," 删除 ",8,Jc)):B("",!0),!A(v)&&he.value?(M(),U("button",{key:2,class:"report-btn",onClick:q=>xs(v.id)}," 反馈 ",8,Xc)):B("",!0)])],512),[[Zs,Q(v.id)]]),re(a("div",ed,[a("span",td,"by "+j(v.user_display_name||"匿名用户"),1),a("span",sd,j(V(v.created_at)),1),v.report_count>0?(M(),U("span",od," 被反馈 "+j(v.report_count)+" 次 ",1)):B("",!0)],512),[[Zs,Q(v.id)]])],8,Ec))),128))])):!n.value&&!he.value?(M(),U("div",ld,[a("div",{class:"login-prompt-content"},[d[53]||(d[53]=a("div",{class:"login-icon"},[a("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"currentColor"},[a("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"})])],-1)),d[54]||(d[54]=a("h3",null,"登录(不可用)后浏览链接",-1)),d[55]||(d[55]=a("p",null,"登录(不可用)后即可查看和添加资源链接",-1)),a("button",{class:"login-btn",onClick:Rt}," 立即登录(不可用) ")])])):!n.value&&o.value.length===0?(M(),U("div",nd,d[56]||(d[56]=[a("p",null,"暂无链接,成为第一个添加链接的人吧!",-1)]))):B("",!0)]),b.value.pages>1&&!n.value?(M(),U("div",rd,[a("button",{class:"pagination-btn",disabled:b.value.page<=1,onClick:Ge}," 上一页 ",8,id),a("span",ad,j(b.value.page)+" / "+j(b.value.pages),1),a("button",{class:"pagination-btn",disabled:b.value.page>=b.value.pages,onClick:Qe}," 下一页 ",8,ud)])):B("",!0),J(xn,{"error-message":r.value,"success-message":i.value,duration:3e3,"auto-close":!0,onClearError:d[29]||(d[29]=v=>r.value=""),onClearSuccess:d[30]||(d[30]=v=>i.value="")},null,8,["error-message","success-message"])]),At.value?(M(),U("div",cd,[a("div",dd,[a("div",{class:"modal-header"},[d[58]||(d[58]=a("h4",null,"删除链接",-1)),a("button",{class:"close-btn",onClick:ee},d[57]||(d[57]=[a("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},[a("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})],-1)]))]),a("div",fd,[d[59]||(d[59]=a("div",{class:"delete-confirmation"},[a("div",{class:"warning-icon"},"⚠️"),a("p",null,"确定要删除这个链接吗?"),a("p",{class:"warning-text"},"此操作不可撤销")],-1)),a("div",pd,[a("button",{type:"button",class:"delete-confirm-btn",disabled:$t.value,onClick:te},j($t.value?"删除中...":"确认删除"),9,hd),a("button",{type:"button",onClick:ee}," 取消 ")])])])])):B("",!0),Yt.value?(M(),U("div",md,[a("div",vd,[a("div",{class:"modal-header"},[d[61]||(d[61]=a("h4",null,"反馈链接",-1)),a("button",{class:"close-btn",onClick:Pt},d[60]||(d[60]=[a("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},[a("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})],-1)]))]),a("div",gd,[a("form",{onSubmit:He(Xs,["prevent"])},[a("div",_d,[d[62]||(d[62]=a("label",{for:"report-type"},"反馈类型 *",-1)),J(Ot,{id:"report-type",modelValue:Ce.type,"onUpdate:modelValue":d[31]||(d[31]=v=>Ce.type=v),options:Jt,placeholder:"请选择反馈类型",required:""},null,8,["modelValue"])]),a("div",yd,[d[63]||(d[63]=a("label",{for:"report-reason"},"详细原因",-1)),a("div",bd,[re(a("input",{id:"report-reason","onUpdate:modelValue":d[32]||(d[32]=v=>Ce.reason=v),placeholder:"请详细描述反馈原因(可选)",rows:"4"},null,512),[[fe,Ce.reason]])])]),a("div",wd,[a("button",{type:"submit",disabled:it.value||!Ce.type},j(it.value?"提交中...":"提交反馈"),9,xd),a("button",{type:"button",onClick:Pt}," 取消 ")])],32)])])])):B("",!0)],64))}},[["__scopeId","data-v-908a67a0"]]),Td={class:"content-wrapper"},Sd={class:"navigation-bar"},Ed={class:"tab-content"},Ad={key:0,class:"tab-panel"},$d={key:1,class:"no-subject"},Pd={key:1,class:"tab-panel"},Vd=Ye({__name:"WindowContent",setup(e){const t=L("links"),s=L("netdisk"),o=L(""),l=L({title:"",year:"",rating:""}),n=(i,u=null)=>{t.value=i,i==="links"&&u&&(s.value=u)},r=()=>{try{const u=window.location.href.match(/\/subject\/(\d+)\/?/);u&&(o.value=u[1],console.log("检测到豆瓣电影ID:",o.value));const m=document.querySelector('h1 span[property="v:itemreviewed"]')||document.querySelector("h1 span")||document.querySelector("h1");m&&(l.value.title=m.textContent.trim());const f=document.querySelector(".year")||document.querySelector("span.year");if(f){const E=f.textContent.match(/(\d{4})/);E&&(l.value.year=E[1])}const g=document.querySelector(".rating_num")||document.querySelector('[property="v:average"]');g&&(l.value.rating=g.textContent.trim()),console.log("获取到的电影信息:",l.value)}catch(i){console.error("获取豆瓣电影信息失败:",i)}};return Wt(()=>{r(),new MutationObserver(()=>{window.location.href.includes("/subject/")&&setTimeout(r,500)}).observe(document.body,{childList:!0,subtree:!0});const u=m=>{m.detail&&m.detail.tab==="user"&&n("user")};return document.addEventListener("switchToUserTab",u),()=>{document.removeEventListener("switchToUserTab",u)}}),(i,u)=>(M(),U("div",Td,[a("div",Sd,[a("button",{class:_e(["nav-btn",{active:t.value==="links"&&s.value==="netdisk"}]),onClick:u[0]||(u[0]=m=>n("links","netdisk"))}," 💾 网盘 ",2),a("button",{class:_e(["nav-btn",{active:t.value==="links"&&s.value==="bt"}]),onClick:u[1]||(u[1]=m=>n("links","bt"))}," 🧲 BT ",2),a("button",{class:_e(["nav-btn",{active:t.value==="links"&&s.value==="online"}]),onClick:u[2]||(u[2]=m=>n("links","online"))}," 📺 在线 ",2),a("button",{class:_e(["nav-btn",{active:t.value==="user"}]),onClick:u[3]||(u[3]=m=>n("user"))}," 👤 用户 ",2)]),a("div",Ed,[t.value==="links"?(M(),U("div",Ad,[o.value?(M(),Hs(Cd,{key:0,"movie-id":o.value,"link-type":s.value},null,8,["movie-id","link-type"])):(M(),U("div",$d,u[4]||(u[4]=[a("p",null,"未检测到豆瓣电影页面,请在豆瓣电影详情页使用此功能。",-1),a("p",{class:"hint"},"支持的页面格式:https://movie.douban.com/subject/[ID]/",-1)])))])):B("",!0),t.value==="user"?(M(),U("div",Pd,[J(pu)])):B("",!0)])]))}},[["__scopeId","data-v-a01b44d5"]]),Md={key:0,class:"debug-panel"},Ud={class:"debug-content"},Id={class:"debug-section"},Dd={class:"status-item"},Ld={class:"status-item"},Od={class:"value"},Rd={class:"status-item"},Fd={class:"value token"},Nd={class:"status-item"},Bd={class:"value token"},qd={class:"status-item"},zd={class:"debug-section"},jd={key:0,class:"test-result"},Hd={class:"debug-section"},Kd={class:"headers-preview"},Wd=Ye({__name:"DebugPanel",setup(e){const t=L(!1),s=L(""),o=L(""),l=Ve(()=>oe.isAuthenticated.value),n=Ve(()=>oe.token.value),r=Ve(()=>oe.user.value?`${oe.user.value.email} (ID: ${oe.user.value.id})`:"无用户信息"),i=Ve(()=>{const b=n.value,_=s.value;return b&&_&&b===_}),u=Ve(()=>{const b=s.value;return JSON.stringify(b?{Authorization:`Bearer ${b.substring(0,20)}...`,"Content-Type":"application/json"}:{"Content-Type":"application/json"},null,2)}),m=()=>{t.value=!t.value,t.value&&f()},f=()=>{s.value=localStorage.getItem("auth_token")||"",console.log("Token状态刷新:",{memory:n.value,localStorage:s.value,match:i.value})},g=async()=>{try{o.value="测试中...";const b=await kt.getLinks();o.value=JSON.stringify({success:!0,dataLength:(b==null?void 0:b.length)||0,message:"请求成功"},null,2)}catch(b){o.value=JSON.stringify({success:!1,error:b.message,status:b.status||"unknown"},null,2)}},E=()=>{localStorage.removeItem("auth_token"),oe.token.value=null,oe.user.value=null,f(),o.value="",console.log("所有Token已清除")};return Wt(()=>{f(),window.addEventListener("storage",b=>{b.key==="auth_token"&&f()})}),(b,_)=>t.value?(M(),U("div",Md,[a("div",{class:"debug-header"},[_[0]||(_[0]=a("h3",null,"🔧 调试面板",-1)),a("button",{onClick:m,class:"close-btn"},"×")]),a("div",Ud,[a("div",Id,[_[6]||(_[6]=a("h4",null,"认证状态",-1)),a("div",Dd,[_[1]||(_[1]=a("span",{class:"label"},"登录(不可用)状态:",-1)),a("span",{class:_e(["status",l.value?"success":"error"])},j(l.value?"已登录(不可用)":"未登录(不可用)"),3)]),a("div",Ld,[_[2]||(_[2]=a("span",{class:"label"},"用户信息:",-1)),a("span",Od,j(r.value),1)]),a("div",Rd,[_[3]||(_[3]=a("span",{class:"label"},"Token (内存):",-1)),a("span",Fd,j(n.value||"无"),1)]),a("div",Nd,[_[4]||(_[4]=a("span",{class:"label"},"Token (localStorage):",-1)),a("span",Bd,j(s.value||"无"),1)]),a("div",qd,[_[5]||(_[5]=a("span",{class:"label"},"Token匹配:",-1)),a("span",{class:_e(["status",i.value?"success":"error"])},j(i.value?"匹配":"不匹配"),3)])]),a("div",zd,[_[8]||(_[8]=a("h4",null,"测试操作",-1)),a("div",{class:"button-group"},[a("button",{onClick:f,class:"debug-btn"},"刷新Token状态"),a("button",{onClick:g,class:"debug-btn"},"测试API请求"),a("button",{onClick:E,class:"debug-btn danger"},"清除所有Token")]),o.value?(M(),U("div",jd,[_[7]||(_[7]=a("h5",null,"API测试结果:",-1)),a("pre",null,j(o.value),1)])):B("",!0)]),a("div",Hd,[_[9]||(_[9]=a("h4",null,"请求头预览",-1)),a("div",Kd,[a("code",null,j(u.value),1)])])])])):B("",!0)}},[["__scopeId","data-v-dba5723e"]]),Gd={key:0,class:"custom-window"},Qd={class:"window-content"},Zd={class:"window-header"},Yd={class:"window-title"},Jd=Ye({__name:"App",setup(e){const t=L(!0),s=L(!1),o=L("DoubanFlix 1.0.5"),l=()=>new Promise(f=>{const g=()=>{const b=document.querySelector(".aside")||document.querySelector("#aside")||document.querySelector(".sidebar")||document.querySelector("#sidebar")||document.querySelector(".right-col")||document.querySelector(".side-panel")||document.querySelector("#content .article")||document.querySelector(".grid-16-8 .aside")||document.querySelector('[class*="aside"]')||document.querySelector('[class*="side"]');return b?(console.log("找到aside元素:",b.className||b.tagName),f(b),!0):!1};if(g())return;const E=new MutationObserver(b=>{for(const _ of b)if(_.type==="childList"){for(const w of _.addedNodes)if(w.nodeType===Node.ELEMENT_NODE&&g()){E.disconnect();return}}});E.observe(document.body,{childList:!0,subtree:!0}),setTimeout(()=>{E.disconnect(),console.log("超时未找到aside元素,强制显示窗口"),f(null)},1e4)}),n=()=>{t.value=!t.value,t.value&&s.value&&r()},r=()=>{const f=document.querySelector("#bilibili-custom-window");if(!f){console.log("未找到Vue应用容器");return}const g=document.querySelector(".aside")||document.querySelector("#aside")||document.querySelector(".sidebar")||document.querySelector("#sidebar")||document.querySelector(".right-col")||document.querySelector(".side-panel")||document.querySelector("#content .article")||document.querySelector(".grid-16-8 .aside")||document.querySelector('[class*="aside"]')||document.querySelector('[class*="side"]');g?f.parentNode!==g&&(g.firstChild?g.insertBefore(f,g.firstChild):g.appendChild(f),console.log("Vue应用容器已移动到aside元素的第一个位置:",g.className||g.tagName)):console.log("未找到aside元素,Vue应用容器保持在当前位置")},i=()=>{t.value=!1},u=()=>{n()},m=f=>{f.ctrlKey&&f.key==="q"&&(f.preventDefault(),n())};return Wt(async()=>{await oe.initAuth(),window.addEventListener("toggle-window",u),document.addEventListener("keydown",m),await l(),s.value=!0,r()}),cs(()=>{window.removeEventListener("toggle-window",u),document.removeEventListener("keydown",m)}),(f,g)=>(M(),U(Re,null,[t.value&&s.value?(M(),U("div",Gd,[a("div",Qd,[J(Vd)]),a("div",Zd,[a("span",Yd,j(o.value),1),a("button",{class:"close-btn",onClick:i},"×")])])):B("",!0),J(Wd)],64))}},[["__scopeId","data-v-6cac7645"]]);async function Xd(){const e=document.querySelectorAll("h1"),t=document.querySelector(".article");t&&e.length>0&&e.forEach(l=>{t.insertBefore(l,t.firstChild)});const s=document.createElement("div");s.id="bilibili-custom-window",document.body.appendChild(s),Xi(Jd).mount("#bilibili-custom-window"),console.log("DoubanFlix应用已初始化")}Xd()})()})();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址