// ==UserScript==
// @name 大鸟学习通助手|超星学习通刷课·AI自动答题·作业考试|装好即用 新号送50积分
// @namespace daniao-xuexitong
// @version 6.10.10
// @description 超星学习通助手:视频、文档任务点后台挂机免费用;作业、章节测验、考试由 DeepSeek AI 给参考答案,每题 1 积分,新号送 50 积分,面板里扫码就能充,不用注册、不用填密钥。
// @antifeature payment AI 答题按次扣积分,积分可在面板内扫码购买
// @tag 超星学习通
// @tag 学习通助手
// @tag AI答题
// @tag 自动答题
// @tag 自动挂机
// @tag 视频刷课
// @tag 免费刷课
// @tag 网课
// @license Proprietary
// @match *://*.chaoxing.com/*
// @match *://*.edu.cn/*
// @match *://*.xueyinonline.com/*
// @match *://*.nbdlib.cn/*
// @match *://*.hnsyu.net/*
// @match *://*.ac.cn/*
// @run-at document-end
// @grant unsafeWindow
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_deleteValue
// @grant GM_xmlhttpRequest
// @connect chaoxing.com
// @connect edu.cn
// @connect mooc1.chaoxing.com
// @connect mooc1-1.chaoxing.com
// @connect mooc1-2.chaoxing.com
// @connect cx.icodef.com
// @connect xxt.491746.xyz
// @icon data:image/png;base64,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
// ==/UserScript==
/* Local Lucide icon license
ISC License
Copyright (c) 2026 Lucide Icons and Contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
---
The following Lucide icons are derived from the Feather project:
airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
The MIT License (MIT) (for the icons listed above)
Copyright (c) 2013-present Cole Bemis
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
(() => {
const map = {"unrivalrate":"courseRate","unrivalreview":"courseReview","unrivaldowork":"courseDoWork","unrivalautosubmit":"courseAutoSubmit","unrivalautosave":"courseAutoSave","unrivaltimelong":"courseTimeLong"};
for (const [from, to] of Object.entries(map)) {
const value = GM_getValue(from);
if (value === undefined) continue;
if (GM_getValue(to) === undefined) GM_setValue(to, value);
GM_deleteValue(from);
}
})();
function __dripUserscriptFetch(url, options = {}) {
return new Promise((resolve, reject) => {
const request = GM_xmlhttpRequest({
method: String(options.method || 'GET').toUpperCase(),
url: String(url),
headers: options.headers || {},
data: options.body ?? undefined,
anonymous: true,
timeout: 45000,
onload: (res) => resolve(new Response(res.status === 204 ? null : (res.responseText || ''), { status: res.status || 200, statusText: res.statusText || '' })),
onerror: () => reject(new TypeError('NETWORK_ERROR')),
ontimeout: () => reject(new TypeError('NETWORK_TIMEOUT')),
onabort: () => reject(new DOMException('Aborted', 'AbortError'))
});
options.signal?.addEventListener('abort', () => request?.abort?.(), { once: true });
});
}
(() => {
// src/src/main.js
(() => {
var CourseUx = (() => {
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var course_ux_exports = {};
__export(course_ux_exports, {
courseUxState: () => courseUxState,
mountCourseUx: () => mountCourseUx
});
var tokens_default = "/* Opt-in only: importing this sheet does not style the host page. */\n.lt-ui {\n --lt-color-page: #f5f6f8;\n --lt-color-panel: #ffffff;\n --lt-color-secondary: #f5f6f8;\n --lt-color-hover: #eef0f3;\n --lt-color-pressed: #e4e7ec;\n --lt-color-selected: #edf0fc;\n --lt-color-border: #e1e4e8;\n --lt-color-control-border: #89929f;\n --lt-color-text: #20242c;\n --lt-color-text-secondary: #59616e;\n --lt-color-text-muted: #68707e;\n --lt-color-brand: #465acb;\n --lt-color-brand-hover: #3d4fb5;\n --lt-color-brand-pressed: #35459b;\n --lt-color-success: #18724b;\n --lt-color-success-bg: #eef7f1;\n --lt-color-warning: #8c5a0b;\n --lt-color-warning-bg: #fff7e6;\n --lt-color-error: #b42318;\n --lt-color-error-bg: #fff1f0;\n --lt-color-disabled-bg: #f0f1f3;\n --lt-color-disabled-text: #9298a2;\n --lt-color-launcher: rgba(255, 255, 255, .96);\n --lt-space-0: 0px;\n --lt-space-2: 2px;\n --lt-space-4: 4px;\n --lt-space-8: 8px;\n --lt-space-12: 12px;\n --lt-space-16: 16px;\n --lt-space-20: 20px;\n --lt-space-24: 24px;\n --lt-space-32: 32px;\n --lt-radius-badge: 4px;\n --lt-radius-selection: 6px;\n --lt-radius-control: 8px;\n --lt-radius-surface: 12px;\n --lt-radius-round: 999px;\n --lt-border-width: 1px;\n --lt-focus-width: 2px;\n --lt-focus-offset: 2px;\n --lt-size-button: 36px;\n --lt-size-button-min: 64px;\n --lt-size-icon-button: 40px;\n --lt-size-touch: 44px;\n --lt-size-icon: 16px;\n --lt-icon-stroke: 2;\n --lt-size-toggle-width: 36px;\n --lt-size-toggle-height: 20px;\n --lt-size-toggle-thumb: 16px;\n --lt-size-launcher: 48px;\n --lt-size-logo: 32px;\n --lt-size-panel: 352px;\n --lt-size-panel-min: 320px;\n --lt-size-panel-max-height: 560px;\n --lt-size-course: 720px;\n --lt-size-course-custom-input: 64px;\n --lt-size-course-segments: 232px;\n --lt-size-course-guard: 140px;\n --lt-size-header: 48px;\n --lt-size-segment-min: 56px;\n --lt-size-status-dot: 6px;\n --lt-font-family: 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', system-ui, sans-serif;\n --lt-font-mono: ui-monospace, Consolas, monospace;\n --lt-font-title: 14px;\n --lt-font-body: 13px;\n --lt-font-caption: 12px;\n --lt-font-section: 16px;\n --lt-font-balance: 20px;\n --lt-line-body: 20px;\n --lt-line-caption: 18px;\n --lt-line-section: 24px;\n --lt-weight-normal: 400;\n --lt-weight-medium: 500;\n --lt-weight-semibold: 600;\n --lt-shadow-1: 0 1px 2px rgba(15, 23, 42, .06);\n --lt-shadow-2: 0 4px 12px rgba(15, 23, 42, .12);\n --lt-shadow-3: 0 8px 24px rgba(15, 23, 42, .16);\n --lt-duration-press: 90ms;\n --lt-duration-hover: 140ms;\n --lt-duration-state: 180ms;\n --lt-duration-open: 200ms;\n --lt-duration-close: 120ms;\n --lt-duration-snap: 180ms;\n --lt-ease-standard: cubic-bezier(.2, 0, 0, 1);\n --lt-ease-out: cubic-bezier(.16, 1, .3, 1);\n --lt-ease-in: cubic-bezier(.4, 0, 1, 1);\n --lt-scale-launcher-pressed: .97;\n --lt-scale-launcher-lift: 1.04;\n font-family: var(--lt-font-family);\n font-size: var(--lt-font-body);\n line-height: var(--lt-line-body);\n font-weight: var(--lt-weight-normal);\n color: var(--lt-color-text);\n}\n";
function courseUxState({ chapters = [], missions = [], tasksReady = false, taskCount = 0, readError = false } = {}) {
if (readError) return { state: "error", title: "\u6682\u672A\u8BFB\u53D6\u5230\u8BFE\u7A0B\u4EFB\u52A1", next: "\u8BF7\u5237\u65B0\u8BFE\u7A0B\u9875\u91CD\u8BD5\uFF1B\u5F53\u524D\u672A\u786E\u8BA4\u4EFB\u52A1\u5B8C\u6210\u3002" };
if (missions.some((item) => item.failed)) return { state: "error", title: "\u6709\u8BFE\u7A0B\u4EFB\u52A1\u672A\u80FD\u5B8C\u6210", next: "\u8BF7\u68C0\u67E5\u5F53\u524D\u4EFB\u52A1\u6216\u5237\u65B0\u8BFE\u7A0B\u9875\uFF1B\u5931\u8D25\u4EFB\u52A1\u6CA1\u6709\u6807\u8BB0\u4E3A\u5B8C\u6210\u3002" };
if (missions.some((item) => item.running && !item.done)) return { state: "running", title: "\u6B63\u5728\u5904\u7406\u672C\u8282\u4EFB\u52A1", next: "\u4FDD\u6301\u8BFE\u7A0B\u9875\u6253\u5F00\uFF0C\u7B49\u5F85\u5F53\u524D\u4EFB\u52A1\u5904\u7406\u548C\u5E73\u53F0\u786E\u8BA4\u3002" };
if (chapters.length && chapters.every((item) => item.isCompleted === true)) return { state: "done", title: "\u76EE\u5F55\u4E2D\u7684\u8BFE\u7A0B\u4EFB\u52A1\u5DF2\u5B8C\u6210", next: "\u53EF\u8FD4\u56DE\u8BFE\u7A0B\u5217\u8868\uFF0C\u9009\u62E9\u5176\u4ED6\u8BFE\u7A0B\u3002" };
if (chapters.some((item) => item.isLocked && !item.isCompleted)) return { state: "waiting", title: "\u8BFE\u7A0B\u4ECD\u6709\u672A\u5B8C\u6210\u6216\u672A\u5F00\u653E\u4EFB\u52A1", next: "\u4FDD\u6301\u8BFE\u7A0B\u9875\u6253\u5F00\uFF1B\u672A\u5F00\u653E\u7684\u4EFB\u52A1\u9700\u7B49\u5F85\u5B66\u4E60\u901A\u5141\u8BB8\u8BBF\u95EE\u3002" };
if (taskCount > 0 && missions.length >= taskCount && missions.every((item) => item.done)) return { state: "waiting", title: "\u672C\u8282\u5DF2\u68C0\u6D4B\u4EFB\u52A1\u5DF2\u5B8C\u6210", next: "\u7B49\u5F85\u8BFE\u7A0B\u68C0\u67E5\u540E\u7EED\u4EFB\u52A1\uFF1B\u672C\u8282\u5B8C\u6210\u4E0D\u4EE3\u8868\u6574\u95E8\u8BFE\u7A0B\u5B8C\u6210\u3002" };
if (tasksReady && taskCount === 0) return { state: "waiting", title: "\u672C\u8282\u672A\u68C0\u6D4B\u5230\u5F85\u5904\u7406\u4EFB\u52A1", next: "\u7B49\u5F85\u5176\u4ED6\u6807\u7B7E\u9875\u548C\u8BFE\u7A0B\u76EE\u5F55\u68C0\u67E5\uFF1B\u8FD9\u4E0D\u4EE3\u8868\u6574\u95E8\u8BFE\u7A0B\u5B8C\u6210\u3002" };
return { state: "waiting", title: "\u6B63\u5728\u68C0\u67E5\u8BFE\u7A0B\u4EFB\u52A1", next: "\u4FDD\u6301\u8BFE\u7A0B\u9875\u6253\u5F00\uFF1B\u68C0\u6D4B\u5230\u53EF\u5904\u7406\u4EFB\u52A1\u540E\u5C06\u81EA\u52A8\u5904\u7406\u3002" };
}
var components_default = `/* All component selectors require the explicit .lt-ui boundary. */
.lt-ui :where(*, *::before, *::after) { box-sizing: border-box; }
.lt-ui :where(button, input, summary) { font: inherit; }
.lt-ui [hidden] { display: none !important; }
.lt-ui .lt-icon {
width: var(--lt-size-icon);
height: var(--lt-size-icon);
flex: 0 0 var(--lt-size-icon);
stroke-width: var(--lt-icon-stroke);
vertical-align: middle;
}
.lt-ui .lt-button {
display: inline-flex;
align-items: center;
justify-content: center;
gap: var(--lt-space-8);
min-width: var(--lt-size-button-min);
min-height: var(--lt-size-button);
padding: var(--lt-space-4) var(--lt-space-12);
border: var(--lt-border-width) solid transparent;
border-radius: var(--lt-radius-control);
background: transparent;
color: var(--lt-color-text);
font-weight: var(--lt-weight-medium);
line-height: var(--lt-line-body);
text-decoration: none;
cursor: pointer;
transition: background-color var(--lt-duration-hover) var(--lt-ease-standard),
border-color var(--lt-duration-hover) var(--lt-ease-standard),
color var(--lt-duration-hover) var(--lt-ease-standard);
}
.lt-ui .lt-button--primary { background: var(--lt-color-brand); color: var(--lt-color-panel); }
.lt-ui .lt-button--secondary { background: var(--lt-color-panel); border-color: var(--lt-color-border); }
.lt-ui .lt-button--ghost, .lt-ui .lt-button--icon { color: var(--lt-color-text-secondary); }
.lt-ui .lt-button--icon {
width: var(--lt-size-icon-button);
height: var(--lt-size-icon-button);
min-width: var(--lt-size-icon-button);
padding: var(--lt-space-0);
}
.lt-ui .lt-button:not(:disabled):not([aria-disabled="true"]):is(:hover, [data-ui-state="hover"]) {
background: var(--lt-color-hover);
color: var(--lt-color-text);
}
.lt-ui .lt-button--primary:not(:disabled):not([aria-disabled="true"]):is(:hover, [data-ui-state="hover"]) {
background: var(--lt-color-brand-hover);
color: var(--lt-color-panel);
}
.lt-ui .lt-button:not(:disabled):not([aria-disabled="true"]):is(:active, [data-ui-state="pressed"]) {
background: var(--lt-color-pressed);
transition-duration: var(--lt-duration-press);
}
.lt-ui .lt-button--primary:not(:disabled):not([aria-disabled="true"]):is(:active, [data-ui-state="pressed"]) {
background: var(--lt-color-brand-pressed);
}
.lt-ui .lt-button[aria-expanded="true"] { background: var(--lt-color-selected); }
.lt-ui :is(.lt-button, .lt-toggle, .lt-segment, .lt-launcher, .lt-input):is(:focus-visible, [data-ui-state="focus"]) {
outline: var(--lt-focus-width) solid var(--lt-color-brand);
outline-offset: var(--lt-focus-offset);
}
.lt-ui .lt-button:is(:disabled, [aria-disabled="true"]) {
background: var(--lt-color-disabled-bg);
color: var(--lt-color-disabled-text);
border-color: transparent;
cursor: not-allowed;
}
.lt-ui .lt-button--ghost:is(:disabled, [aria-disabled="true"]),
.lt-ui .lt-button--icon:is(:disabled, [aria-disabled="true"]) { background: transparent; }
.lt-ui .lt-button[aria-busy="true"] { cursor: progress; }
.lt-ui .lt-toggle {
display: inline-flex;
align-items: center;
justify-content: space-between;
gap: var(--lt-space-16);
min-height: var(--lt-size-icon-button);
padding: var(--lt-space-8);
border: var(--lt-border-width) solid transparent;
border-radius: var(--lt-radius-control);
background: transparent;
color: var(--lt-color-text);
cursor: pointer;
transition: background-color var(--lt-duration-hover) var(--lt-ease-standard);
}
.lt-ui .lt-toggle:not(:disabled):is(:hover, [data-ui-state="hover"]) { background: var(--lt-color-hover); }
.lt-ui .lt-toggle-copy { display: flex; flex-direction: column; text-align: left; gap: var(--lt-space-2); }
.lt-ui .lt-toggle-label { font-weight: var(--lt-weight-medium); }
.lt-ui .lt-toggle-value { font-size: var(--lt-font-caption); line-height: var(--lt-line-caption); color: var(--lt-color-text-muted); padding: var(--lt-space-2) var(--lt-space-8); border-radius: var(--lt-radius-badge); background: var(--lt-color-secondary); }
.lt-ui .lt-toggle[aria-checked="true"] .lt-toggle-value { color: var(--lt-color-success); background: var(--lt-color-success-bg); }
.lt-ui .lt-toggle-track {
display: block;
position: relative;
width: var(--lt-size-toggle-width);
height: var(--lt-size-toggle-height);
flex: 0 0 var(--lt-size-toggle-width);
border-radius: var(--lt-radius-round);
background: var(--lt-color-control-border);
transition: background-color var(--lt-duration-state) var(--lt-ease-standard);
}
.lt-ui .lt-toggle-track::after {
content: '';
position: absolute;
width: var(--lt-size-toggle-thumb);
height: var(--lt-size-toggle-thumb);
top: var(--lt-space-2);
left: var(--lt-space-2);
border-radius: var(--lt-radius-round);
background: var(--lt-color-panel);
transition: transform var(--lt-duration-state) var(--lt-ease-standard);
}
.lt-ui .lt-toggle[aria-checked="true"] .lt-toggle-track { background: var(--lt-color-brand); }
.lt-ui .lt-toggle[aria-checked="true"] .lt-toggle-track::after { transform: translateX(var(--lt-size-toggle-thumb)); }
.lt-ui .lt-toggle:not(:disabled):active .lt-toggle-track { background: var(--lt-color-text-secondary); }
.lt-ui .lt-toggle[aria-checked="true"]:not(:disabled):active .lt-toggle-track { background: var(--lt-color-brand-pressed); }
.lt-ui .lt-toggle:disabled { color: var(--lt-color-disabled-text); cursor: not-allowed; }
.lt-ui .lt-toggle:disabled .lt-toggle-track { background: var(--lt-color-disabled-text); }
.lt-ui .lt-segmented {
--lt-segment-count: 4;
--lt-segment-index: 0;
position: relative;
display: grid;
grid-template-columns: repeat(var(--lt-segment-count), minmax(var(--lt-size-segment-min), 1fr));
min-width: 0;
width: 100%;
padding: var(--lt-space-2);
border-radius: var(--lt-radius-control);
background: var(--lt-color-secondary);
isolation: isolate;
}
.lt-ui .lt-segment-indicator {
position: absolute;
z-index: -1;
top: var(--lt-space-2);
bottom: var(--lt-space-2);
left: var(--lt-space-2);
width: calc((100% - var(--lt-space-2) * 2) / var(--lt-segment-count));
border-radius: var(--lt-radius-selection);
background: var(--lt-color-panel);
box-shadow: var(--lt-shadow-1);
transform: translateX(calc(var(--lt-segment-index) * 100%));
transition: transform var(--lt-duration-state) var(--lt-ease-standard);
}
.lt-ui .lt-segment {
position: relative;
min-width: 0;
min-height: calc(var(--lt-size-button) - var(--lt-space-2) * 2);
padding: var(--lt-space-4) var(--lt-space-8);
border: 0;
border-radius: var(--lt-radius-selection);
background: transparent;
color: var(--lt-color-text-secondary);
font-weight: var(--lt-weight-medium);
font-variant-numeric: tabular-nums;
cursor: pointer;
transition: background-color var(--lt-duration-hover) var(--lt-ease-standard);
}
.lt-ui .lt-segment[aria-checked="true"] { color: var(--lt-color-text); font-weight: var(--lt-weight-semibold); }
.lt-ui .lt-segment[aria-checked="false"]:not(:disabled):hover { background: var(--lt-color-hover); }
.lt-ui .lt-segment:not(:disabled):active { background: var(--lt-color-pressed); }
.lt-ui .lt-segment:disabled { color: var(--lt-color-disabled-text); cursor: not-allowed; }
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher) {
display: grid;
place-items: center;
width: var(--lt-size-launcher);
height: var(--lt-size-launcher);
flex: 0 0 var(--lt-size-launcher);
padding: var(--lt-space-0);
border: var(--lt-border-width) solid var(--lt-color-border);
border-radius: var(--lt-radius-surface);
background: var(--lt-color-launcher);
box-shadow: var(--lt-shadow-2);
cursor: pointer;
transition: background-color var(--lt-duration-hover) var(--lt-ease-standard), border-color var(--lt-duration-hover) var(--lt-ease-standard);
}
.lt-ui .lt-launcher-mark {
display: block;
width: var(--lt-size-logo);
height: var(--lt-size-logo);
object-fit: contain;
transition: transform var(--lt-duration-press) var(--lt-ease-standard);
}
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher):is(:hover, [data-ui-state="hover"]) { background: var(--lt-color-hover); }
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher):is(:active, [data-ui-state="pressed"]) .lt-launcher-mark { transform: scale(var(--lt-scale-launcher-pressed)); }
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher)[aria-expanded="true"] { background: var(--lt-color-selected); border-color: var(--lt-color-brand); }
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher)[data-bird-press="true"] .lt-launcher-mark { transform: scale(var(--lt-scale-launcher-pressed)); }
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher)[data-bird-pose="spread"] { box-shadow: var(--lt-shadow-3); }
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher)[data-bird-pose="spread"] .lt-launcher-mark { transform: scale(var(--lt-scale-launcher-lift)); }
:is(.lt-ui .lt-panel, .lt-ui.lt-panel) {
display: flex;
flex-direction: column;
width: min(var(--lt-size-panel), calc(100vw - var(--lt-space-12) * 2));
min-width: min(var(--lt-size-panel-min), calc(100vw - var(--lt-space-12) * 2));
max-width: 100%;
max-height: min(var(--lt-size-panel-max-height), calc(100dvh - var(--lt-space-12) * 2));
overflow: hidden;
border: var(--lt-border-width) solid var(--lt-color-border);
border-radius: var(--lt-radius-surface);
background: var(--lt-color-panel);
box-shadow: var(--lt-shadow-3);
}
.lt-ui .lt-panel-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--lt-space-8);
min-height: var(--lt-size-header);
padding: var(--lt-space-4) var(--lt-space-8) var(--lt-space-0) var(--lt-space-16);
flex-shrink: 0;
}
.lt-ui .lt-panel-title { margin: 0; font-size: var(--lt-font-title); line-height: var(--lt-line-body); font-weight: var(--lt-weight-semibold); }
.lt-ui .lt-panel-body { padding: var(--lt-space-8) var(--lt-space-16) var(--lt-space-16); overflow: auto; min-height: 0; }
.lt-ui .lt-status { display: flex; align-items: center; gap: var(--lt-space-8); font-size: var(--lt-font-caption); line-height: var(--lt-line-caption); font-weight: var(--lt-weight-medium); }
.lt-ui .lt-status-dot { width: var(--lt-size-status-dot); height: var(--lt-size-status-dot); border-radius: var(--lt-radius-round); background: var(--lt-color-control-border); flex-shrink: 0; }
.lt-ui .lt-caption { color: var(--lt-color-text-muted); font-size: var(--lt-font-caption); line-height: var(--lt-line-caption); margin: var(--lt-space-4) 0 0; overflow-wrap: anywhere; }
.lt-ui .lt-help-copy { color: var(--lt-color-text-secondary); font-size: var(--lt-font-body); line-height: var(--lt-line-body); text-align: left; overflow-wrap: anywhere; }
.lt-ui .lt-help-emphasis { color: var(--lt-color-brand); font-weight: var(--lt-weight-medium); }
.lt-ui .lt-help-lead { display: block; margin-bottom: var(--lt-space-4); color: var(--lt-color-brand); font-weight: var(--lt-weight-medium); }
.lt-ui .lt-help-purchase { color: var(--lt-color-warning); }
.lt-ui .lt-help-safe { color: var(--lt-color-success); font-weight: var(--lt-weight-medium); }
.lt-ui .lt-context { margin: var(--lt-space-8) 0 var(--lt-space-16); color: var(--lt-color-text-secondary); }
:is(.lt-ui .lt-panel, .lt-ui.lt-panel) .lt-toggle { width: 100%; padding-inline: 0; min-height: var(--lt-size-launcher); }
.lt-ui .lt-panel-section { padding-top: var(--lt-space-16); margin-top: var(--lt-space-16); border-top: var(--lt-border-width) solid var(--lt-color-border); }
.lt-ui .lt-course-entry { justify-content: flex-start; margin-left: calc(var(--lt-space-8) * -1); padding-inline: var(--lt-space-8); }
.lt-ui .lt-account-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--lt-space-8); }
.lt-ui .lt-account-copy { display: flex; align-items: baseline; gap: var(--lt-space-8); }
.lt-ui .lt-balance { font-size: var(--lt-font-balance); line-height: var(--lt-line-section); font-weight: var(--lt-weight-semibold); font-variant-numeric: tabular-nums; }
.lt-ui .lt-account-actions { display: flex; align-items: center; gap: var(--lt-space-4); }
.lt-ui .lt-disclosure > summary { list-style: none; }
.lt-ui .lt-disclosure > summary::-webkit-details-marker { display: none; }
.lt-ui .lt-disclosure[open] > summary { background: var(--lt-color-selected); }
.lt-ui .lt-disclosure[open] > summary .lt-icon { transform: rotate(180deg); }
.lt-ui .lt-disclosure > summary .lt-icon { transition: transform var(--lt-duration-state) var(--lt-ease-standard); }
.lt-ui .lt-recharge { margin-top: var(--lt-space-8); }
.lt-ui .lt-disclosure-content { padding-top: var(--lt-space-12); }
.lt-ui .lt-field { display: flex; flex-direction: column; gap: var(--lt-space-8); }
.lt-ui .lt-input { width: 100%; height: var(--lt-size-touch); padding: var(--lt-space-8) var(--lt-space-12); border: var(--lt-border-width) solid var(--lt-color-control-border); border-radius: var(--lt-radius-control); background: var(--lt-color-panel); color: var(--lt-color-text); }
.lt-ui .lt-form-actions { display: flex; gap: var(--lt-space-8); margin-top: var(--lt-space-12); }
.lt-ui .lt-log-summary { justify-content: space-between; width: 100%; padding-inline: 0; }
.lt-ui .lt-log-summary-copy { display: flex; flex-direction: column; text-align: left; }
.lt-ui .lt-log-entry { display: flex; gap: var(--lt-space-8); align-items: start; padding-block: var(--lt-space-8); }
.lt-ui .lt-log-entry .lt-icon { color: var(--lt-color-success); margin-top: var(--lt-space-2); }
.lt-ui .lt-log-text { margin: 0; }
@media (pointer: coarse) {
.lt-ui :is(.lt-button, .lt-toggle) { min-height: var(--lt-size-touch); }
.lt-ui .lt-button--icon { width: var(--lt-size-touch); height: var(--lt-size-touch); min-width: var(--lt-size-touch); }
.lt-ui .lt-segment { min-height: calc(var(--lt-size-touch) - var(--lt-space-2) * 2); }
}
@media (prefers-reduced-motion: reduce) {
.lt-ui :is(.lt-button, .lt-toggle, .lt-toggle-track, .lt-toggle-track::after, .lt-segment-indicator, .lt-segment, .lt-launcher, .lt-launcher-mark, .lt-disclosure > summary .lt-icon) { transition: none; }
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher):is(:active, [data-ui-state="pressed"]) .lt-launcher-mark { transform: none; }
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher):is([data-bird-pose="spread"], [data-bird-press="true"]) .lt-launcher-mark { transform: none; }
}
`;
var runtime_default = `/* Runtime adapters retain the existing hooks; every rule is opt-in and scoped. */
.lt-ui.lt-ux-collapse-toast{position:fixed;z-index:2147483647;width:240px;box-sizing:border-box;margin:0;padding:var(--lt-space-8) var(--lt-space-12);background:var(--lt-color-panel);color:var(--lt-color-text-secondary);border:var(--lt-border-width) solid var(--lt-color-border);border-radius:var(--lt-radius-control);box-shadow:var(--lt-shadow-2);font-size:var(--lt-font-caption);pointer-events:none}
.lt-ui.lt-ux-collapse-toast[hidden]{display:none}
.lt-ui [hidden]{display:none!important}
#cxds-logo.lt-ui{position:fixed;right:var(--lt-space-24);top:74px;z-index:2147483647;touch-action:none;isolation:isolate}
#cxds-logo.lt-ui[data-lt-bird]>.lt-bird-mark{width:var(--lt-size-logo);height:var(--lt-size-logo)}
#cxds-logo.lt-ui.cxds-active{background:var(--lt-color-selected);border-color:var(--lt-color-brand);z-index:2147483645}
#cxds-logo.lt-ui.cxds-dragging{cursor:grabbing;box-shadow:var(--lt-shadow-3)}
#cxds-logo.lt-ui:focus-visible{outline:var(--lt-focus-width) solid var(--lt-color-brand);outline-offset:var(--lt-focus-offset)}
#cxds-panel.lt-ui{box-sizing:border-box;position:fixed;z-index:2147483646;text-align:left;isolation:isolate;color-scheme:light;transition:opacity var(--lt-duration-open) var(--lt-ease-standard)}
#cxds-panel.lt-ui.cxds-hidden{visibility:hidden;opacity:0;pointer-events:none}
#cxds-panel.lt-ui .cxds-header{display:flex;align-items:center;justify-content:space-between;gap:var(--lt-space-8);min-height:var(--lt-size-header);padding:var(--lt-space-4) var(--lt-space-8) 0 var(--lt-space-16);flex-shrink:0}
#cxds-panel.lt-ui .cxds-title strong{font-size:var(--lt-font-title);line-height:var(--lt-line-body);font-weight:var(--lt-weight-semibold)}
#cxds-panel.lt-ui .cxds-title small,#cxds-panel.lt-ui .cxds-status-badge{display:none}
#cxds-panel.lt-ui .cxds-body{padding:var(--lt-space-8) var(--lt-space-16) var(--lt-space-16);overflow:auto;min-height:0;scrollbar-width:thin}
#cxds-panel.lt-ui .lt-runtime-empty{display:none}
#cxds-panel.lt-ui .cxds-status-banner{display:flex;align-items:center;gap:var(--lt-space-8);font-size:var(--lt-font-caption);line-height:var(--lt-line-caption);font-weight:var(--lt-weight-medium);margin:0 0 var(--lt-space-8)}
#cxds-panel.lt-ui .cxds-status-dot{width:var(--lt-size-status-dot);height:var(--lt-size-status-dot);background:var(--lt-color-control-border);border-radius:var(--lt-radius-round);flex-shrink:0}
#cxds-panel.lt-ui .cxds-status-banner:is(.is-warning,.is-error){color:var(--lt-color-warning)}
#cxds-panel.lt-ui .cxds-status-banner.is-error{color:var(--lt-color-error)}
#cxds-panel.lt-ui .cxds-status-banner.is-success{color:var(--lt-color-success)}
#cxds-panel.lt-ui .cxds-status-banner:is(.is-warning,.is-error,.is-success) .cxds-status-dot{background:currentColor}
#cxds-panel.lt-ui .drip-task-context{font-size:var(--lt-font-caption);line-height:var(--lt-line-caption);color:var(--lt-color-text-secondary);margin:0 0 var(--lt-space-12);overflow-wrap:anywhere}
#cxds-panel.lt-ui .drip-current{margin:var(--lt-space-8) 0;padding:var(--lt-space-12);border-radius:var(--lt-radius-control);background:var(--lt-color-secondary);font-size:var(--lt-font-caption)}
#cxds-panel.lt-ui .drip-current-head{display:flex;justify-content:space-between;gap:var(--lt-space-8);color:var(--lt-color-text-secondary)}
#cxds-panel.lt-ui [data-current-title]{display:block;margin-top:var(--lt-space-4);font-weight:var(--lt-weight-medium)}
#cxds-panel.lt-ui [data-current-description]{margin:var(--lt-space-4) 0 0;color:var(--lt-color-text-secondary);overflow-wrap:anywhere}
#cxds-panel.lt-ui .drip-ai-toggle{width:100%;padding-inline:0;min-height:var(--lt-size-launcher)}
#cxds-panel.lt-ui .drip-ai-copy{display:flex;align-items:center;gap:var(--lt-space-8)}
#cxds-panel.lt-ui .drip-ai-copy strong{font-size:var(--lt-font-body);font-weight:var(--lt-weight-medium)}
#cxds-panel.lt-ui .drip-ai-copy small{font-size:var(--lt-font-caption);line-height:var(--lt-line-caption);color:var(--lt-color-text-muted);background:var(--lt-color-secondary);padding:var(--lt-space-2) var(--lt-space-8);border-radius:var(--lt-radius-badge)}
#cxds-panel.lt-ui .drip-ai-toggle[aria-checked="true"] .drip-ai-copy small{color:var(--lt-color-success);background:var(--lt-color-success-bg)}
#cxds-panel.lt-ui #drip-ai-help{margin:0;color:var(--lt-color-text-secondary);font-size:var(--lt-font-body);line-height:var(--lt-line-body)}
#cxds-panel.lt-ui .cxds-notice{margin:var(--lt-space-8) 0;padding:var(--lt-space-8);background:var(--lt-color-warning-bg);color:var(--lt-color-warning);font-size:var(--lt-font-caption);border-radius:var(--lt-radius-badge)}
#cxds-panel.lt-ui .cxds-license-box{margin-top:var(--lt-space-16);padding-top:var(--lt-space-16);border-top:var(--lt-border-width) solid var(--lt-color-border)}
#cxds-panel.lt-ui .lt-runtime-account-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--lt-space-8)}
#cxds-panel.lt-ui .cxds-license-top{display:flex;align-items:baseline;gap:var(--lt-space-8);flex:1;min-width:0;font-size:var(--lt-font-caption);color:var(--lt-color-text-secondary)}
#cxds-panel.lt-ui .drip-balance-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--lt-space-4)}
#cxds-panel.lt-ui [data-balance]{font-size:var(--lt-font-balance);line-height:var(--lt-line-section);color:var(--lt-color-text);font-weight:var(--lt-weight-semibold);font-variant-numeric:tabular-nums}
#cxds-panel.lt-ui .drip-license-status{font-size:var(--lt-font-caption);color:var(--lt-color-text-muted)}
#cxds-panel.lt-ui .drip-warning-icon{display:none}
#cxds-panel.lt-ui [data-license-state][data-ux-state="ready"]{color:var(--lt-color-success)}
#cxds-panel.lt-ui [data-license-state][data-ux-state="warning"]{color:var(--lt-color-warning)}
#cxds-panel.lt-ui [data-balance][data-ux-known="true"]::after{content:' \u79EF\u5206';font-size:var(--lt-font-caption);font-weight:var(--lt-weight-normal)}
#cxds-panel.lt-ui :is(.lt-ux-course,.lt-ux-next,.lt-ux-feedback,.lt-ux-receipt,.lt-ux-collapse){font-size:var(--lt-font-caption);line-height:var(--lt-line-body);overflow-wrap:anywhere;margin:var(--lt-space-4) 0 var(--lt-space-8);color:var(--lt-color-text-secondary)}
#cxds-panel.lt-ui .lt-ux-next{color:var(--lt-color-text);font-weight:var(--lt-weight-medium)}
#cxds-panel.lt-ui .lt-ux-receipt{color:var(--lt-color-brand)}
#cxds-panel.lt-ui .lt-ux-collapse{padding-top:var(--lt-space-8);border-top:var(--lt-border-width) solid var(--lt-color-border);margin-bottom:0}
#cxds-panel.lt-ui .cxds-license-state.is-warning{color:var(--lt-color-warning)}
#cxds-panel.lt-ui .drip-credit-help{margin:var(--lt-space-12) 0 0;font-size:var(--lt-font-body);line-height:var(--lt-line-body);color:var(--lt-color-text-secondary)}
#cxds-panel.lt-ui .drip-recharge{margin-top:var(--lt-space-4)}
#cxds-panel.lt-ui .drip-recharge-content{padding-top:var(--lt-space-12)}
#cxds-panel.lt-ui .cxds-field{display:flex;flex-direction:column;gap:var(--lt-space-8);font-size:var(--lt-font-caption)}
#cxds-panel.lt-ui .cxds-license-actions{display:flex;gap:var(--lt-space-8);margin-top:var(--lt-space-12)}
#cxds-panel.lt-ui .lt-record-details{margin-top:var(--lt-space-16);padding-top:var(--lt-space-12);border-top:var(--lt-border-width) solid var(--lt-color-border)}
#cxds-panel.lt-ui .lt-record-summary-copy{display:flex;flex-direction:column;align-items:flex-start;gap:var(--lt-space-4);min-width:0}
#cxds-panel.lt-ui .lt-record-preview{font-size:var(--lt-font-caption);color:var(--lt-color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:240px}
#cxds-panel.lt-ui .cxds-log-head{display:flex;align-items:center;gap:var(--lt-space-4);margin-top:var(--lt-space-8)}
#cxds-panel.lt-ui .cxds-log-head>span{margin-right:auto;color:var(--lt-color-text-muted);font-size:var(--lt-font-caption)}
#cxds-panel.lt-ui .drip-submission,#cxds-panel.lt-ui .drip-log-history{font-size:var(--lt-font-caption);line-height:var(--lt-line-caption);color:var(--lt-color-text-secondary)}
#cxds-panel.lt-ui .drip-submission[data-confirmed="true"]{color:var(--lt-color-success)}
#cxds-panel.lt-ui .drip-timeline{max-height:240px;overflow:auto;font-size:var(--lt-font-caption);line-height:var(--lt-line-caption)}
#cxds-panel.lt-ui .drip-timeline:empty::after{content:attr(data-empty-copy);display:block;padding:var(--lt-space-8);color:var(--lt-color-text-muted)}
#cxds-panel.lt-ui .drip-timeline-entry{position:relative;padding:var(--lt-space-12) 0 var(--lt-space-12) var(--lt-space-16);border-top:var(--lt-border-width) solid var(--lt-color-border)}
#cxds-panel.lt-ui .drip-timeline-heading{display:flex;justify-content:space-between;align-items:start;gap:var(--lt-space-8)}
#cxds-panel.lt-ui .drip-timeline-heading strong{font-weight:var(--lt-weight-medium)}
#cxds-panel.lt-ui .drip-log-state,#cxds-panel.lt-ui .drip-timeline-entry time{font-size:var(--lt-font-caption);color:var(--lt-color-text-muted);white-space:nowrap}
#cxds-panel.lt-ui .drip-timeline-entry p{margin:var(--lt-space-4) 0;color:var(--lt-color-text-secondary);overflow-wrap:anywhere}
#cxds-panel.lt-ui .drip-timeline-node{position:absolute;left:0;top:var(--lt-space-16);width:var(--lt-size-status-dot);height:var(--lt-size-status-dot);background:var(--lt-color-control-border);border-radius:var(--lt-radius-round)}
#cxds-panel.lt-ui [data-state="done"] .drip-timeline-node{background:var(--lt-color-success)}
#cxds-panel.lt-ui [data-state="paused"] .drip-timeline-node{background:var(--lt-color-warning)}
#cxds-panel.lt-ui [data-state="running"] .drip-timeline-node{background:var(--lt-color-brand)}
#cxds-panel.lt-ui .drip-progress-segments{display:flex;gap:var(--lt-space-4);height:var(--lt-space-4);margin:var(--lt-space-12) 0}
#cxds-panel.lt-ui .drip-progress-segments>span{flex:1;background:var(--lt-color-border);border-radius:var(--lt-radius-badge)}
#cxds-panel.lt-ui .drip-progress-segments>span[data-state="done"]{background:var(--lt-color-success)}
#cxds-panel.lt-ui .drip-progress-segments>span[data-state="running"]{background:var(--lt-color-brand)}
#cxds-panel.lt-ui .drip-progress-caption{display:flex;justify-content:space-between;font-size:var(--lt-font-caption);color:var(--lt-color-text-muted)}
#cxds-panel.lt-ui .lt-button[aria-busy="true"]{background:var(--lt-color-secondary);color:var(--lt-color-text-secondary);min-width:var(--lt-size-button);opacity:1}
#cxds-panel.lt-ui:has(.drip-recharge[open]) [data-action="home-entry"]{background:var(--lt-color-panel);color:var(--lt-color-text);border-color:var(--lt-color-border)}
.lt-course-document.lt-ui{margin:0;background:var(--lt-color-page);padding-bottom:var(--lt-space-32);color-scheme:light}
#lt-course-ui.lt-ui{width:min(var(--lt-size-course),calc(100vw - var(--lt-space-16)*2));max-width:var(--lt-size-course);padding:var(--lt-space-20) var(--lt-space-24);margin:var(--lt-space-20) auto;background:var(--lt-color-panel);border:var(--lt-border-width) solid var(--lt-color-border);border-radius:var(--lt-radius-surface);box-shadow:var(--lt-shadow-1);font-family:var(--lt-font-family);color:var(--lt-color-text)}
#lt-course-ui.lt-ui .lt-course-header{gap:var(--lt-space-12);flex-wrap:wrap}
#lt-course-ui.lt-ui .lt-course-header>div:first-child{font-size:var(--lt-font-section);font-weight:var(--lt-weight-semibold)}
#lt-course-ui.lt-ui .lt-course-header>div:first-child span{font-size:var(--lt-font-caption);font-weight:var(--lt-weight-normal);color:var(--lt-color-text-muted)}
#lt-course-ui.lt-ui #courseProgressSource{color:var(--lt-color-text-secondary);font-size:var(--lt-font-caption)}
#lt-course-ui.lt-ui #courseProgressSource>span{background:var(--lt-color-success);border-radius:var(--lt-radius-round)}
#lt-course-ui.lt-ui #onlineNum{font-size:var(--lt-font-caption);color:var(--lt-color-text-muted)}
#lt-course-ui.lt-ui .custom-card{background:transparent!important;color:var(--lt-color-text)!important;border:0!important;border-radius:0!important;box-shadow:none!important;border-bottom:var(--lt-border-width) solid var(--lt-color-border)!important;margin-bottom:var(--lt-space-8)!important;overflow:visible}
#lt-course-ui.lt-ui .custom-card-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--lt-space-8);background:transparent;border:0;padding:var(--lt-space-12) 0;color:var(--lt-color-text);font-size:var(--lt-font-title);font-weight:var(--lt-weight-semibold)}
#lt-course-ui.lt-ui .custom-card-header>span:last-child{font-size:var(--lt-font-caption);color:var(--lt-color-text-muted);font-weight:var(--lt-weight-normal)}
#lt-course-ui.lt-ui .custom-card-body{padding:var(--lt-space-12) 0}
#lt-course-ui.lt-ui .custom-card-header>span:first-child>span{display:none!important}
#lt-course-ui.lt-ui #courseOverviewCard{background:var(--lt-color-secondary)!important;border-radius:var(--lt-radius-control)!important;border:0!important}
#lt-course-ui.lt-ui .lt-course-overview-body{padding:var(--lt-space-16)!important}
#lt-course-ui.lt-ui .lt-course-overview-body>div:last-child{border:0;padding-top:0!important;font-size:var(--lt-font-caption)}
#lt-course-ui.lt-ui .lt-course-estimate .lt-button{min-width:0;min-height:0;padding:var(--lt-space-2) var(--lt-space-4);font-size:var(--lt-font-caption);color:var(--lt-color-text-muted)}
#lt-course-ui.lt-ui #courseOverviewCard span,#lt-course-ui.lt-ui #courseOverviewCard b,#lt-course-ui.lt-ui #courseOverviewCard details{color:var(--lt-color-text-secondary)!important;font-family:var(--lt-font-family)!important}
#lt-course-ui.lt-ui #overviewPercent{font-weight:var(--lt-weight-semibold);font-variant-numeric:tabular-nums;color:var(--lt-color-text)!important}
#lt-course-ui.lt-ui #overviewProgressFill{background:var(--lt-color-brand)!important;transition:width var(--lt-duration-state) var(--lt-ease-standard)!important}
#lt-course-ui.lt-ui .lt-course-progress-track{background:var(--lt-color-border)!important;border:0!important;height:var(--lt-space-4)!important;padding:0!important;border-radius:var(--lt-radius-round);overflow:hidden}
#lt-course-ui.lt-ui #overviewProgressFill{border-radius:var(--lt-radius-round)}
#lt-course-ui.lt-ui .lt-course-control-row{gap:var(--lt-space-12)!important;align-items:center!important}
#lt-course-ui.lt-ui .lt-course-speed{display:flex!important;align-items:center;flex-wrap:wrap;gap:var(--lt-space-8)!important}
#lt-course-ui.lt-ui .lt-course-speed>span{order:1;font-size:var(--lt-font-caption);color:var(--lt-color-text-secondary)}
#lt-course-ui.lt-ui .lt-course-speed .lt-segmented{order:2;width:var(--lt-size-course-segments);margin:0!important}
#lt-course-ui.lt-ui .lt-course-custom-speed{order:3;display:flex;gap:var(--lt-space-8);align-items:center}
#lt-course-ui.lt-ui .lt-course-custom-label{font-size:var(--lt-font-caption);color:var(--lt-color-text-muted);margin-left:var(--lt-space-4)}
#lt-course-ui.lt-ui .speed-pill{border:0;background:transparent;color:var(--lt-color-text-secondary);height:32px;min-width:0;border-radius:var(--lt-radius-selection);padding:var(--lt-space-4) var(--lt-space-8);font-size:var(--lt-font-body)}
#lt-course-ui.lt-ui .speed-pill.active{background:transparent;border:0;color:var(--lt-color-text);font-weight:var(--lt-weight-semibold)}
#lt-course-ui.lt-ui .speed-pill:not(.active):hover{background:var(--lt-color-hover)}
#lt-course-ui.lt-ui .speed-pill:active{background:var(--lt-color-pressed)}
#lt-course-ui.lt-ui .speed-input{width:var(--lt-size-course-custom-input);height:var(--lt-size-button);border:var(--lt-border-width) solid var(--lt-color-border);border-radius:var(--lt-radius-control);background:var(--lt-color-panel);color:var(--lt-color-text);font-size:var(--lt-font-body);font-variant-numeric:tabular-nums}
#lt-course-ui.lt-ui .speed-input{text-align:center;padding:var(--lt-space-4) var(--lt-space-8)}
#lt-course-ui.lt-ui .speed-input:focus-visible{outline:var(--lt-focus-width) solid var(--lt-color-brand);outline-offset:var(--lt-focus-offset)}
#lt-course-ui.lt-ui .lt-course-guard{width:var(--lt-size-course-guard);margin:0}
#lt-course-ui.lt-ui #backGround{background:transparent!important;border:0!important;color:var(--lt-color-text)!important;padding:0!important;font-weight:var(--lt-weight-normal);justify-content:space-between;box-shadow:none!important;width:100%;height:var(--lt-size-launcher);border-radius:var(--lt-radius-control)}
#lt-course-ui.lt-ui #backGround:not(:disabled):hover{background:var(--lt-color-hover)!important}
#lt-course-ui.lt-ui #backGround:not(:disabled):active{background:var(--lt-color-pressed)!important}
#lt-course-ui.lt-ui #backGround .pulse-dot{display:none}
#lt-course-ui.lt-ui #backGround small{display:none}
#lt-course-ui.lt-ui .lt-course-records>summary{display:flex;align-items:center;justify-content:space-between;min-height:var(--lt-size-touch);list-style:none;cursor:pointer}
#lt-course-ui.lt-ui .lt-course-records>summary::-webkit-details-marker{display:none}
#lt-course-ui.lt-ui .lt-course-log-card div{background:transparent!important;box-shadow:none!important;border-color:var(--lt-color-border)!important}
#lt-course-ui.lt-ui #log{color:var(--lt-color-text-secondary)!important;line-height:var(--lt-line-caption)!important;font-size:var(--lt-font-caption)!important;font-family:var(--lt-font-mono)!important}
#lt-course-ui.lt-ui #log span{color:var(--lt-color-text-secondary)!important}
#lt-course-ui.lt-ui #log span[style*="red"]{color:var(--lt-color-error)!important}
#lt-course-ui.lt-ui #log span[style*="green"]{color:var(--lt-color-success)!important}
#lt-course-ui.lt-ui #log span[style*="orange"]{color:var(--lt-color-warning)!important}
#lt-course-ui.lt-ui #log span a{color:var(--lt-color-brand)!important}
#lt-course-ui.lt-ui #clearLogBtn{font-family:var(--lt-font-family)!important;color:var(--lt-color-text-secondary)!important}
#lt-course-ui.lt-ui #joblist:not(:has(*))::after{content:'\u672C\u8282\u6682\u65E0\u53EF\u663E\u793A\u4EFB\u52A1';color:var(--lt-color-text-muted);font-size:var(--lt-font-caption)}
#lt-course-ui.lt-ui .lt-course-log-card{margin:0!important;border-bottom:0!important}
#lt-course-ui.lt-ui .lt-course-records>summary{padding-inline:0}
#lt-course-ui.lt-ui #joblist>div{border:0!important;box-shadow:none!important;background:transparent!important;border-bottom:var(--lt-border-width) solid var(--lt-color-border)!important}
@media(max-width:540px){#lt-course-ui.lt-ui{padding:var(--lt-space-16);margin-block:var(--lt-space-12)}#lt-course-ui.lt-ui .lt-course-control-row{display:flex;flex-direction:column;align-items:stretch!important}#lt-course-ui.lt-ui .lt-course-speed{display:grid!important;grid-template-columns:1fr;width:100%}#lt-course-ui.lt-ui .lt-course-speed .lt-segmented{width:100%}#lt-course-ui.lt-ui .lt-course-custom-label{margin:0}#lt-course-ui.lt-ui .lt-course-guard{width:100%}}
@media(prefers-reduced-motion:reduce){#lt-course-ui.lt-ui #overviewProgressFill,#cxds-panel.lt-ui{transition:none!important}}
`;
var golden_wing_default = `/* Approved Golden Wing Light. Shared by the owned course iframe and panel.
Opt-in selectors never theme the LearningTong host page. */
.lt-ui[data-theme="golden-wing"] {
--lt-color-page:#f5f2eb; --lt-color-panel:#fffdf7; --lt-color-secondary:#f0ece2;
--lt-color-hover:#eae4d6; --lt-color-pressed:#e0d8c6; --lt-color-selected:#f8f0d5;
--lt-color-border:#ddd8ca; --lt-color-control-border:#9a937f;
--lt-color-text:#24231f; --lt-color-text-secondary:#5e5a4f; --lt-color-text-muted:#7a745f;
--lt-color-brand:#8b6615; --lt-color-brand-hover:#755311; --lt-color-brand-pressed:#61440d;
--lt-color-brand-bright:#e8c23a; --lt-color-on-brand:#fffdf7;
--lt-color-success:#1b7a4c; --lt-color-success-bg:#ecf6ef;
--lt-color-warning:#96520f; --lt-color-warning-bg:#fff3e5;
--lt-color-error:#b5331e; --lt-color-error-bg:#fff0ed;
--lt-color-disabled-bg:#eceae3; --lt-color-disabled-text:#928d7e;
--lt-color-launcher:#fffdf7;
--lt-shadow-1:0 1px 2px rgb(36 35 31 / 5%);
--lt-shadow-2:0 4px 12px rgb(36 35 31 / 9%);
--lt-shadow-3:0 12px 32px rgb(36 35 31 / 12%);
--lt-size-panel:340px; --lt-size-panel-min:280px; --lt-size-panel-max-height:760px;
color-scheme:light;
}
.lt-ui[data-theme="golden-wing"] .lt-button--primary:not(:disabled) {color:var(--lt-color-on-brand)}
.lt-ui[data-theme="golden-wing"] .lt-button--secondary {border-color:var(--lt-color-control-border)}
.lt-ui[data-theme="golden-wing"] .lt-segment-indicator {background:var(--lt-color-selected);box-shadow:none}
.lt-ui[data-theme="golden-wing"] .lt-segment[aria-checked="true"] {color:var(--lt-color-brand)}
#cxds-logo.lt-ui[data-theme="golden-wing"] {top:auto;bottom:var(--lt-space-24);border-color:var(--lt-color-brand)}
#cxds-panel.lt-ui[data-theme="golden-wing"] {color:var(--lt-color-text);max-height:min(760px,calc(100dvh - 104px))}
#cxds-panel.lt-ui[data-theme="golden-wing"] .cxds-header {min-height:52px;padding:6px 6px 6px 14px;border-bottom:1px solid var(--lt-color-border)}
#cxds-panel.lt-ui .lt-brand-lockup {display:flex;align-items:center;gap:7px}
#cxds-panel.lt-ui .lt-brand-lockup img {width:24px;height:24px;object-fit:contain}
#cxds-panel.lt-ui .cxds-body {padding:14px 16px 16px}
#cxds-panel.lt-ui .lt-ux-headline {display:flex;align-items:center;gap:7px;font-size:var(--lt-font-title);font-weight:var(--lt-weight-semibold);margin:0 0 6px;line-height:var(--lt-line-body)}
#cxds-panel.lt-ui .lt-ux-headline::before {content:'';width:6px;height:6px;border-radius:50%;background:var(--lt-color-text-muted);flex-shrink:0}
#cxds-panel.lt-ui .lt-ux-headline[data-state="running"]::before {background:var(--lt-color-brand-bright)}
#cxds-panel.lt-ui .lt-ux-headline[data-state="done"]::before {background:var(--lt-color-success)}
#cxds-panel.lt-ui .lt-ux-headline[data-state="error"] {color:var(--lt-color-error)}
#cxds-panel.lt-ui .lt-ux-headline[data-state="warning"] {color:var(--lt-color-warning)}
#cxds-panel.lt-ui .lt-ux-headline:is([data-state="error"],[data-state="warning"])::before {background:currentColor}
#cxds-panel.lt-ui .lt-ux-next {font-size:var(--lt-font-caption);font-weight:var(--lt-weight-normal);color:var(--lt-color-text-secondary);margin:6px 0 12px;padding-left:13px}
#cxds-panel.lt-ui .lt-ux-course {display:none}
#cxds-panel.lt-ui .lt-runtime-ai-row {display:flex;align-items:center;gap:10px;padding:8px 0}
#cxds-panel.lt-ui .lt-runtime-ai-row .drip-ai-toggle {width:auto;min-width:0;min-height:36px;flex:1;gap:10px}
#cxds-panel.lt-ui .drip-ai-toggle[aria-checked="true"] .drip-ai-copy small {color:var(--lt-color-brand);background:var(--lt-color-selected)}
#cxds-panel.lt-ui .lt-runtime-ai-row .drip-current {margin:0;padding:0;background:transparent;font-size:var(--lt-font-caption);flex-shrink:0}
#cxds-panel.lt-ui .lt-runtime-ai-row .drip-current-head>span:first-child,
#cxds-panel.lt-ui .lt-runtime-ai-row [data-current-title],
#cxds-panel.lt-ui .lt-runtime-ai-row [data-current-description],
#cxds-panel.lt-ui .lt-runtime-ai-row [data-action="show-recharge"] {display:none}
#cxds-panel.lt-ui .drip-current[data-state="running"] [data-current-state] {color:var(--lt-color-brand)}
#cxds-panel.lt-ui .drip-current[data-state="paused"] [data-current-state] {color:var(--lt-color-warning)}
#cxds-panel.lt-ui .drip-current [data-current-state] {color:var(--lt-color-text-secondary)}
#cxds-panel.lt-ui .drip-current[data-confirmed="true"] [data-current-state] {color:var(--lt-color-success)}
#cxds-panel.lt-ui #drip-ai-help,#cxds-panel.lt-ui .lt-ux-ai-switch-note {font-size:var(--lt-font-caption);line-height:var(--lt-line-caption);color:var(--lt-color-text-secondary);margin:0 0 6px}
#cxds-panel.lt-ui #drip-ai-help strong {font-weight:var(--lt-weight-medium);color:var(--lt-color-text)}
#cxds-panel.lt-ui .lt-runtime-account-row {justify-content:space-between}
#cxds-panel.lt-ui .cxds-license-top {flex-direction:column;align-items:flex-start;gap:4px}
#cxds-panel.lt-ui .lt-runtime-balance-row {display:flex;align-items:baseline;gap:6px}
#cxds-panel.lt-ui .drip-balance-line {flex-direction:column;align-items:flex-start;gap:4px}
#cxds-panel.lt-ui .cxds-license-top>span {display:none}
#cxds-panel.lt-ui .lt-runtime-credit-label {color:var(--lt-color-text-secondary);font-size:var(--lt-font-caption)}
#cxds-panel.lt-ui [data-balance] {font-size:22px;line-height:26px}
#cxds-panel.lt-ui .lt-ux-receipt {background:var(--lt-color-secondary);color:var(--lt-color-text-secondary);padding:8px 10px;border-radius:var(--lt-radius-selection);margin:8px 0}
#cxds-panel.lt-ui .lt-billing-details>summary,#cxds-panel.lt-ui .drip-recharge>summary {min-height:28px;padding:0;justify-content:flex-start;font-size:var(--lt-font-caption);gap:4px}
#cxds-panel.lt-ui .lt-billing-details .lt-icon,#cxds-panel.lt-ui .drip-recharge>summary .lt-icon {width:12px;height:12px}
#cxds-panel.lt-ui .lt-billing-content,#cxds-panel.lt-ui .drip-recharge-content {padding-top:8px}
#cxds-panel.lt-ui .lt-billing-content .lt-help-copy {font-size:var(--lt-font-caption);line-height:var(--lt-line-caption);margin:0 0 6px}
#cxds-panel.lt-ui .lt-billing-content .lt-help-lead {color:var(--lt-color-text);font-weight:var(--lt-weight-medium)}
#cxds-panel.lt-ui .lt-payment-essential {font-size:var(--lt-font-caption);line-height:var(--lt-line-caption);color:var(--lt-color-text-secondary);margin:4px 0 0}
#cxds-panel.lt-ui .lt-ux-collapse {margin:0;padding:8px 14px;border-top:1px solid var(--lt-color-border);font-size:var(--lt-font-caption);line-height:var(--lt-line-caption);flex-shrink:0}
#cxds-panel.lt-ui .lt-record-details {margin-top:10px;padding-top:10px}
#cxds-panel.lt-ui .lt-record-details>summary {min-height:28px;padding:0;font-size:var(--lt-font-caption);justify-content:flex-start;gap:4px}
#lt-course-ui.lt-ui {padding:0;overflow:hidden;width:min(820px,calc(100vw - 24px));max-width:820px;margin:20px auto}
#lt-course-ui.lt-ui .lt-course-header {padding:12px 16px;border-bottom:1px solid var(--lt-color-border);margin-bottom:0!important}
#lt-course-ui.lt-ui .lt-course-brand {display:flex;align-items:center;gap:8px;font-size:14px}
#lt-course-ui.lt-ui .lt-course-brand img {width:28px;height:28px;object-fit:contain}
#lt-course-ui.lt-ui .lt-course-brand small {font-size:var(--lt-font-caption);font-weight:var(--lt-weight-normal);border-left:1px solid var(--lt-color-border);padding-left:8px;color:var(--lt-color-text-secondary)}
#lt-course-ui.lt-ui #courseProgressSource {border:0;background:transparent;padding:0;color:var(--lt-color-text-muted)}
#lt-course-ui.lt-ui #lt-course-ux {margin:0;border:0;border-radius:0;padding:16px;background:transparent}
#lt-course-ui.lt-ui #lt-course-ux strong {font-size:15px;line-height:24px}
#lt-course-ui.lt-ui #lt-course-ux p {font-size:var(--lt-font-caption);margin-top:8px;padding-left:10px;border-left:2px solid var(--lt-color-brand-bright)}
#lt-course-ui.lt-ui .custom-card {margin:0!important;border-bottom:1px solid var(--lt-color-border)!important;padding:0 16px}
#lt-course-ui.lt-ui .custom-card:last-child {border-bottom:0!important}
#lt-course-ui.lt-ui .custom-card-header {padding:14px 0 8px}
#lt-course-ui.lt-ui .custom-card-body {padding:8px 0 14px}
#lt-course-ui.lt-ui #courseOverviewCard {background:transparent!important;border-radius:0!important}
#lt-course-ui.lt-ui .lt-course-overview-body {padding:0 0 12px!important}
#lt-course-ui.lt-ui #overviewScope {font-size:var(--lt-font-caption)}
#lt-course-ui.lt-ui .lt-course-overview-body>div:last-child {margin-top:8px!important}
#lt-course-ui.lt-ui .lt-course-progress-track {background:var(--lt-color-secondary)!important}
#lt-course-ui.lt-ui .lt-course-progress-lane {position:relative;--lt-course-progress:0%}
#lt-course-ui.lt-ui .lt-course-progress-lane.has-progress {padding-top:30px}
#lt-course-ui.lt-ui .lt-course-progress-bird {position:absolute;z-index:1;top:0;left:clamp(19px,var(--lt-course-progress),calc(100% - 19px));display:block;width:38px;height:27px;overflow:hidden;pointer-events:none;transform:translateX(-50%);transition:left var(--lt-duration-state) var(--lt-ease-standard)}
#lt-course-ui.lt-ui .lt-course-progress-bird[hidden] {display:none}
#lt-course-ui.lt-ui .lt-course-progress-bird img {display:block;width:38px;height:38px;max-width:none;filter:drop-shadow(0 1px 1px rgb(36 35 31 / 18%))}
#lt-course-ui.lt-ui #overviewProgressFill {background:var(--lt-color-brand-bright)!important}
#lt-course-ui.lt-ui[data-course-state="done"] #overviewProgressFill {background:var(--lt-color-success)!important}
@media(prefers-reduced-motion:reduce){#lt-course-ui.lt-ui .lt-course-progress-bird{transition:none!important}}
#lt-course-ui.lt-ui .speed-pill.active {color:var(--lt-color-brand)}
#lt-course-ui.lt-ui .speed-input {border-color:var(--lt-color-control-border)}
#lt-course-ui.lt-ui .lt-speed-legacy[hidden] {display:none!important}
#lt-course-ui.lt-ui .lt-course-speed {flex:1;min-width:0;width:auto}
#lt-course-ui.lt-ui .lt-speed-control {width:100%;max-width:340px;min-width:180px}
#lt-course-ui.lt-ui .lt-speed-heading {display:flex;align-items:center;justify-content:space-between;margin-bottom:7px;font-size:var(--lt-font-body)}
#lt-course-ui.lt-ui .lt-speed-value {font-size:16px;font-weight:var(--lt-weight-semibold);font-variant-numeric:tabular-nums;color:var(--lt-color-text)}
#lt-course-ui.lt-ui .lt-speed-track {position:relative;height:36px;border-radius:var(--lt-radius-round);background:var(--lt-color-secondary);border:1px solid var(--lt-color-border);overflow:visible;--lt-speed-fill:0%;--lt-speed-offset:13px;transition:border-color 180ms ease,box-shadow 180ms ease}
#lt-course-ui.lt-ui .lt-speed-progress {position:absolute;z-index:0;inset:0 auto 0 0;width:calc(var(--lt-speed-fill) + var(--lt-speed-offset));max-width:100%;border-radius:var(--lt-radius-round);background:var(--lt-color-brand);overflow:hidden;pointer-events:none;transition:width 110ms cubic-bezier(.2,.8,.2,1)}
#lt-course-ui.lt-ui .lt-speed-ticks {position:absolute;z-index:1;inset:0 14px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}
#lt-course-ui.lt-ui .lt-speed-ticks i {width:4px;height:4px;background:var(--lt-color-control-border);border-radius:50%}
#lt-course-ui.lt-ui .lt-speed-ticks i.is-filled {background:var(--lt-color-on-brand);opacity:.55}
#lt-course-ui.lt-ui .lt-speed-knob {position:absolute;z-index:2;left:calc(var(--lt-speed-fill) + var(--lt-speed-offset));top:50%;width:26px;height:26px;background:var(--lt-color-panel);border:1px solid var(--lt-color-border);border-radius:50%;box-shadow:var(--lt-shadow-2);transform:translate(-50%,-50%) scale(1);pointer-events:none;transition:left 110ms cubic-bezier(.2,.8,.2,1),transform 160ms cubic-bezier(.2,.8,.2,1),box-shadow 160ms ease}
#lt-course-ui.lt-ui .lt-speed-track.is-dragging .lt-speed-knob {transform:translate(-50%,-50%) scale(1.17);box-shadow:var(--lt-shadow-3)}
#lt-course-ui.lt-ui .lt-speed-track.is-settling .lt-speed-knob {animation:lt-speed-settle 280ms cubic-bezier(.2,.8,.2,1)}
@keyframes lt-speed-settle {0%{transform:translate(-50%,-50%) scale(1.13)}45%{transform:translate(-50%,-50%) scale(.94)}100%{transform:translate(-50%,-50%) scale(1)}}
#lt-course-ui.lt-ui .lt-speed-control.is-max .lt-speed-value {color:var(--lt-color-brand)}
#lt-course-ui.lt-ui .lt-speed-control.is-max .lt-speed-track {border-color:var(--lt-color-brand);box-shadow:0 0 0 2px var(--lt-color-selected)}
#lt-course-ui.lt-ui .lt-speed-control.is-max .lt-speed-progress {background:linear-gradient(105deg,var(--lt-color-brand-pressed),var(--lt-color-brand) 42%,var(--lt-color-brand-bright) 78%,var(--lt-color-brand))}
#lt-course-ui.lt-ui .lt-speed-control.is-max .lt-speed-progress::before {content:'';position:absolute;inset:0;background:radial-gradient(circle at 12% 68%,var(--lt-color-on-brand) 0 1px,transparent 1.8px),radial-gradient(circle at 29% 30%,var(--lt-color-on-brand) 0 1.5px,transparent 2.2px),radial-gradient(circle at 48% 73%,var(--lt-color-on-brand) 0 1px,transparent 1.8px),radial-gradient(circle at 69% 35%,var(--lt-color-on-brand) 0 1px,transparent 1.8px),radial-gradient(circle at 86% 66%,var(--lt-color-on-brand) 0 1.5px,transparent 2.2px);opacity:.75;pointer-events:none}
#lt-course-ui.lt-ui .lt-speed-control.is-max .lt-speed-knob {border-color:var(--lt-color-brand);box-shadow:var(--lt-shadow-2),0 0 0 3px var(--lt-color-selected)}
#lt-course-ui.lt-ui .lt-speed-control.is-max .lt-speed-track.is-settling .lt-speed-progress::after {content:'';position:absolute;inset:0 auto 0 -28%;width:28%;background:linear-gradient(90deg,transparent,rgb(255 253 247 / 70%),transparent);animation:lt-speed-max-sheen 420ms ease-out both;pointer-events:none}
@keyframes lt-speed-max-sheen {0%{transform:translateX(0);opacity:0}20%{opacity:.7}80%{opacity:.7}100%{transform:translateX(500%);opacity:0}}
#lt-course-ui.lt-ui .lt-speed-track input {appearance:none;-webkit-appearance:none;position:relative;z-index:3;display:block;margin:0;width:100%;height:36px;background:transparent;border:0;cursor:pointer;touch-action:pan-y;border-radius:var(--lt-radius-round);padding:0}
#lt-course-ui.lt-ui .lt-speed-track input::-webkit-slider-runnable-track {height:36px;background:transparent;border:0;border-radius:var(--lt-radius-round)}
#lt-course-ui.lt-ui .lt-speed-track input::-webkit-slider-thumb {appearance:none;-webkit-appearance:none;width:26px;height:26px;margin-top:5px;background:transparent;border:0;border-radius:50%}
#lt-course-ui.lt-ui .lt-speed-track input::-moz-range-track {height:36px;background:transparent;border:0}
#lt-course-ui.lt-ui .lt-speed-track input::-moz-range-thumb {width:24px;height:24px;background:transparent;border:0;border-radius:50%}
#lt-course-ui.lt-ui .lt-speed-track input:focus-visible {outline:2px solid var(--lt-color-brand);outline-offset:3px}
#lt-course-ui.lt-ui .lt-speed-footer {display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:5px;font-size:var(--lt-font-caption);color:var(--lt-color-text-secondary)}
#lt-course-ui.lt-ui #lt-speed-hint {text-align:center;font-size:11px}
#lt-course-ui.lt-ui .lt-speed-warn {margin:8px 0 0;padding:6px 10px;border:1px solid var(--lt-color-warning);border-radius:var(--lt-radius-control);background:var(--lt-color-warning-bg);color:var(--lt-color-warning);font-size:var(--lt-font-caption);line-height:1.5;animation:lt-speed-warn-in 180ms ease-out}
#lt-course-ui.lt-ui .lt-speed-warn[hidden] {display:none}
@keyframes lt-speed-warn-in {from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){#lt-course-ui.lt-ui .lt-speed-track,#lt-course-ui.lt-ui .lt-speed-progress,#lt-course-ui.lt-ui .lt-speed-knob,#lt-course-ui.lt-ui .lt-speed-progress::after{transition:none!important;animation:none!important}}
#lt-course-ui.lt-ui #updateRateButton {color:var(--lt-color-text)!important;background:var(--lt-color-panel)!important}
#lt-course-ui.lt-ui .lt-course-guard {width:auto;min-width:172px}
#lt-course-ui.lt-ui #backGround {gap:12px;min-height:36px;height:auto;font-size:var(--lt-font-body)}
#lt-course-ui.lt-ui .lt-course-records>summary {min-height:36px;font-size:var(--lt-font-title);font-weight:var(--lt-weight-semibold)}
#lt-course-ui.lt-ui .lt-course-records[open]>summary {background:transparent}
#lt-course-ui.lt-ui #joblist:not(:has(*))::after {content:none}
#lt-course-ui.lt-ui .lt-course-log-card {padding-top:4px}
#lt-course-ui.lt-ui .lt-course-log-card #result {max-height:160px!important}
#lt-course-ui.lt-ui .lt-course-log-card [data-log-header] {padding:0!important;border:0!important}
#lt-course-ui.lt-ui .lt-course-log-card [data-log-body] {padding:4px 0 12px!important}
#lt-course-ui.lt-ui #clearLogBtn {font:inherit;color:var(--lt-color-text-secondary)!important;padding:4px 8px!important}
@media(max-width:480px){
#cxds-panel.lt-ui[data-theme="golden-wing"]{width:min(340px,calc(100vw - 48px));min-width:0}
#cxds-panel.lt-ui .cxds-body{padding-inline:12px}
#cxds-panel.lt-ui .lt-runtime-ai-row{gap:6px}
#cxds-panel.lt-ui .drip-ai-copy{gap:4px}
#lt-course-ui.lt-ui{width:calc(100vw - 16px);margin:8px auto}
#lt-course-ui.lt-ui .lt-course-header{padding-inline:12px}
#lt-course-ui.lt-ui .custom-card{padding-inline:12px}
}
`;
var golden_wing_v3_default = '/* Production Golden Wing v3: scoped to owned UI, retaining all original hooks. */\n#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"] {border-radius:14px}\n#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"] .cxds-body {display:flex;flex-direction:column;gap:12px;padding:12px 14px}\n#cxds-panel.lt-ui .lt-v3-ai-card,#cxds-panel.lt-ui .cxds-license-box {\n padding:10px 12px;background:#fbf9f3;border:1px solid #e6dfce;border-radius:10px;margin:0;\n}\n#cxds-panel.lt-ui .lt-runtime-ai-row {padding:0;gap:6px}\n#cxds-panel.lt-ui .drip-ai-copy {flex-wrap:wrap;gap:4px}\n#cxds-panel.lt-ui .drip-ai-copy small {font-size:10px}\n#cxds-panel.lt-ui #drip-ai-help {font-size:11px;line-height:1.6;margin:4px 0 8px}\n#cxds-panel.lt-ui .lt-ux-headline {font-size:12px;line-height:1.6;margin:8px 0 0}\n#cxds-panel.lt-ui .lt-ux-next {font-size:12px;line-height:1.65;margin:6px 0 0;padding:8px 10px;border:1px solid #e2dbca;background:#fffdf7;border-radius:6px;overflow-wrap:anywhere}\n#cxds-panel.lt-ui .lt-runtime-ai-row .drip-current [data-current-state] {font-size:11px;padding:2px 6px;border-radius:999px;background:#ede8dc;max-width:100%}\n#cxds-panel.lt-ui .lt-runtime-ai-row .drip-current[data-state="running"] [data-current-state] {background:#fff4d4;color:#8b6615}\n#cxds-panel.lt-ui .lt-runtime-ai-row .drip-current[data-state="paused"] [data-current-state] {background:#fff0ed;color:#b5331e}\n#cxds-panel.lt-ui .lt-runtime-ai-row .drip-current[data-confirmed="true"] [data-current-state] {background:#ecf6ef;color:#1b7a4c}\n#cxds-panel.lt-ui .lt-runtime-account-row {gap:6px;flex-wrap:wrap}\n#cxds-panel.lt-ui .lt-runtime-credit-label {font-size:11px}\n#cxds-panel.lt-ui [data-balance] {font-size:24px;color:#8b6615}\n#cxds-panel.lt-ui .lt-runtime-balance-row {gap:4px;flex-wrap:wrap}\n#cxds-panel.lt-ui .drip-license-status {font-size:11px}\n#cxds-panel.lt-ui [data-license-state][data-ux-state="ready"] {display:none}\n#cxds-panel.lt-ui .lt-v3-recharge {font-size:11px;min-height:32px;padding:4px 8px;white-space:nowrap}\n#cxds-panel.lt-ui [data-action="show-recharge"] {display:none}\n#cxds-panel.lt-ui .drip-recharge {border:0;margin-top:8px}\n#cxds-panel.lt-ui .drip-recharge:not([open]) {display:none}\n#cxds-panel.lt-ui .drip-recharge>summary {display:none}\n#cxds-panel.lt-ui .drip-recharge[open] .drip-recharge-content {padding-top:8px;border-top:1px dashed #ded7c6}\n#cxds-panel.lt-ui .lt-payment-essential {font-size:11px;margin-top:8px}\n#cxds-panel.lt-ui .lt-ux-receipt {display:flex;align-items:center;flex-wrap:wrap;gap:6px;justify-content:space-between;background:#fff5e8;border:1px solid #e8c23a;color:#8b6615;padding:8px;margin:10px 0 0}\n#cxds-panel.lt-ui .lt-ux-receipt strong {font-size:11px;font-weight:600}\n#cxds-panel.lt-ui .lt-v3-receipt-balance {background:#8b6615;color:#fffdf7;border-radius:4px;padding:1px 6px;font-size:10px;white-space:nowrap}\n#cxds-panel.lt-ui .lt-ux-receipt small {font-size:10px;line-height:1.5;width:100%;color:#7a745f}\n#cxds-panel.lt-ui .lt-billing-details {padding:8px 10px;background:#f7f4ec;border:1px solid #ded7c6;border-radius:8px}\n#cxds-panel.lt-ui .lt-record-details {padding-top:10px;margin-top:0;border-top:1px solid #e6dfce}\n#cxds-panel.lt-ui .lt-record-preview {font-size:11px;overflow-wrap:anywhere}\n#cxds-panel.lt-ui .lt-v3-footer {display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;background:#f5f0e3;font-size:11px}\n#cxds-panel.lt-ui .lt-v3-footer [data-action="courses"] {margin:0;width:auto;min-height:28px;flex-shrink:0;padding:3px 6px;font-size:11px;border:1px solid #d4ccb8;border-radius:6px}\n#cxds-panel.lt-ui .lt-v3-guide {padding:10px 12px;background:#fff8e8;border:1px solid #dcc88f;border-radius:10px;font-size:12px}\n#cxds-panel.lt-ui .lt-v3-guide strong {font-size:12px;color:#8b6615}\n#cxds-panel.lt-ui .lt-v3-guide ul {padding-left:16px;margin:6px 0 8px;font-size:11px;line-height:1.6}\n#cxds-panel.lt-ui .lt-v3-guide button {width:100%;min-height:30px;font-size:11px}\n#cxds-panel.lt-ui .lt-v3-clear-confirm {padding:8px;border:1px solid #dcc88f;border-radius:6px;background:#fff8e8;font-size:12px;display:flex;gap:6px;flex-wrap:wrap}\n#cxds-panel.lt-ui .lt-v3-clear-confirm span {width:100%}\n.lt-ui.lt-v3-launcher-hud {position:fixed;z-index:2147483647;box-sizing:border-box;margin:0;padding:10px 12px;border-radius:8px;background:#24231f;color:#fffdf7;box-shadow:0 6px 20px #0003;font:12px/1.6 var(--lt-font-family);pointer-events:none;overflow-wrap:anywhere}\n.lt-ui.lt-v3-launcher-hud strong {color:#e8c23a}\n.lt-ui.lt-v3-launcher-hud p {margin:4px 0 0}\n.lt-ui.lt-v3-launcher-hud[hidden] {display:none}\n#cxds-logo.lt-ui[data-runtime-state="running"] {border-color:#1b7a4c;box-shadow:0 0 0 4px #1b7a4c22}\n#cxds-logo.lt-ui[data-runtime-state="receipt"] {border-color:#96520f;box-shadow:0 0 0 4px #96520f22}\n#cxds-logo.lt-ui:is([data-runtime-state="warning"],[data-runtime-state="error"]) {border-color:#b5331e;box-shadow:0 0 0 4px #b5331e22}\n#cxds-logo.lt-ui[data-runtime-state="done"] {border-color:#1b7a4c}\n#lt-course-ui.lt-ui .lt-course-header {gap:12px;align-items:center}\n#lt-course-ui.lt-ui #lt-course-ux {width:auto;margin:0;padding:4px 10px;border:1px solid #d4ccb8;border-radius:999px;background:#f3f0e8}\n#lt-course-ui.lt-ui #lt-course-ux strong {font-size:12px;line-height:1.6}\n#lt-course-ui.lt-ui #lt-course-ux p {font-size:12px;margin:6px 0 0;border:0;padding:0}\n#lt-course-ui.lt-ui #lt-course-ux[data-state="running"] {background:#fff8e6;border-color:#dcc88f;color:#8b6615}\n#lt-course-ui.lt-ui #lt-course-ux[data-state="done"] {background:#ecf6ef;border-color:#7ecda6;color:#1b7a4c}\n#lt-course-ui.lt-ui #lt-course-ux[data-state="error"] {background:#fff0ed;border-color:#e4b8ab;border-radius:8px}\n#lt-course-ui.lt-ui .lt-course-progress-lane.has-progress {padding-top:48px;margin-bottom:10px}\n#lt-course-ui.lt-ui .lt-course-progress-bird {width:44px;height:44px;overflow:visible;left:clamp(22px,var(--lt-course-progress),calc(100% - 22px));border:1px solid #8b6615;border-radius:50%;background:#fffdf7;display:flex;align-items:center;justify-content:center;box-sizing:border-box;box-shadow:0 2px 8px #8b661522}\n#lt-course-ui.lt-ui .lt-course-progress-bird img {width:36px;height:36px;object-fit:contain;filter:none}\n#lt-course-ui.lt-ui[data-course-state="done"] .lt-course-progress-bird {border-color:#1b7a4c}\n#lt-course-ui.lt-ui .lt-course-overview-body {margin:14px 0;padding:14px 16px!important;background:#f8f5ed;border:1px solid #e8e2d2;border-radius:10px}\n#lt-course-ui.lt-ui .lt-course-speed {flex:1}\n#lt-course-ui.lt-ui .lt-speed-control {max-width:none}\n#lt-course-ui.lt-ui .lt-course-control-row {padding:12px 14px;border:1px solid #e7e0ce;border-radius:10px;background:#fbf9f2}\n#lt-course-ui.lt-ui .lt-speed-track {height:32px;border:0;background:#e8e2d4}\n#lt-course-ui.lt-ui .lt-speed-progress::after {display:none}\n#lt-course-ui.lt-ui .lt-course-guard {min-width:148px;border-left:1px solid #e2dbca;padding-left:12px}\n#lt-course-ui.lt-ui #backGround {font-size:12px}\n#lt-course-ui.lt-ui .lt-v3-guard-help {font-size:11px;line-height:1.6;color:#7a745f;max-width:220px}\n#lt-course-ui.lt-ui .lt-v3-guard-help summary {cursor:pointer;text-align:right}\n#lt-course-ui.lt-ui #lt-course-guard-help {margin:8px 0 0;font-size:11px}\n#lt-course-ui.lt-ui .lt-v3-task-cards {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:8px 0 12px}\n#lt-course-ui.lt-ui .lt-v3-task-card {padding:8px 10px;border:1px solid #e5ded0;background:#fbf9f2;border-radius:8px;display:flex;flex-direction:column;gap:4px;font-size:12px;overflow-wrap:anywhere}\n#lt-course-ui.lt-ui .lt-v3-task-card span {font-size:11px;color:#7a745f}\n#lt-course-ui.lt-ui .lt-v3-task-card[data-state="running"] {border-color:#e8c23a;background:#fff9ea}\n#lt-course-ui.lt-ui .lt-v3-task-card[data-state="done"] {border-color:#7ecda6;background:#ecf6ef}\n#lt-course-ui.lt-ui .lt-v3-task-card[data-state="error"] {border-color:#e4b8ab;background:#fff0ed}\n@media(max-width:540px){\n #cxds-panel.lt-ui .lt-v3-ai-card,#cxds-panel.lt-ui .cxds-license-box{padding:10px}\n #cxds-panel.lt-ui .lt-runtime-account-row{gap:4px}\n #cxds-panel.lt-ui .lt-runtime-ai-row{flex-wrap:wrap}\n #cxds-panel.lt-ui .lt-v3-footer{flex-wrap:wrap}\n #lt-course-ui.lt-ui .lt-course-guard{width:100%;border-left:0;border-top:1px solid #e2dbca;padding:8px 0 0}\n #lt-course-ui.lt-ui .lt-v3-task-cards{grid-template-columns:1fr}\n #lt-course-ui.lt-ui .lt-v3-task-card{flex-direction:row;justify-content:space-between;gap:8px}\n}\n';
var golden_wing_v31_default = `/* Golden Wing v3.1: layout fixes and motion. Presentation only; every hook stays bound. */
:is(#lt-course-ui,#cxds-panel,#cxds-logo).lt-ui {
--lt-v31-ease-out:cubic-bezier(.16,1,.3,1); --lt-v31-ease-spring:cubic-bezier(.34,1.56,.64,1); --lt-v31-ease-std:cubic-bezier(.2,0,0,1);
--lt-v31-gold:#8b6615; --lt-v31-gold-hi:#e8c23a; --lt-v31-ok:#1b7a4c; --lt-v31-ai:#7a5cc8;
}
/* ---------- course status pill ---------- */
#lt-course-ui.lt-ui #lt-course-ux {display:flex;flex-wrap:wrap;align-items:center;gap:0 6px;overflow:hidden;transition:background-color .4s,border-color .4s,color .4s}
#lt-course-ui.lt-ui #lt-course-ux p {width:100%}
#lt-course-ui.lt-ui .lt-pill-dot {width:7px;height:7px;flex:0 0 7px;border-radius:50%;background:currentColor;opacity:.75}
#lt-course-ui.lt-ui .lt-pill-check {display:none;width:13px;height:13px;flex:0 0 13px}
#lt-course-ui.lt-ui #lt-course-ux[data-state="done"] .lt-pill-dot {display:none}
#lt-course-ui.lt-ui #lt-course-ux[data-state="done"] .lt-pill-check {display:block}
#lt-course-ui.lt-ui #lt-course-ux[data-state="done"] .lt-pill-check path {stroke-dasharray:20;stroke-dashoffset:20;animation:lt-v31-draw .5s .15s var(--lt-v31-ease-out) forwards}
#lt-course-ui.lt-ui #lt-course-ux[data-state="running"] .lt-pill-dot {opacity:1;animation:lt-v31-ping 1.6s var(--lt-v31-ease-out) infinite}
#lt-course-ui.lt-ui #lt-course-ux strong.is-swapping {animation:lt-v31-swap .42s var(--lt-v31-ease-out)}
@keyframes lt-v31-swap {from{transform:translateY(9px);opacity:0;filter:blur(2px)}to{transform:none;opacity:1;filter:none}}
@keyframes lt-v31-ping {0%{box-shadow:0 0 0 0 rgb(232 194 58/65%)}80%,100%{box-shadow:0 0 0 7px rgb(232 194 58/0%)}}
@keyframes lt-v31-draw {to{stroke-dashoffset:0}}
/* ---------- perched progress bird ---------- */
#lt-course-ui.lt-ui .lt-course-progress-lane.has-progress {padding-top:14px;margin-bottom:14px}
#lt-course-ui.lt-ui #overviewProgressFill {transition:width 1.1s var(--lt-v31-ease-out),background .6s!important}
#lt-course-ui.lt-ui .lt-course-progress-bird {top:0;width:32px;height:32px;left:clamp(16px,var(--lt-course-progress),calc(100% - 16px));transform:translateX(-50%);box-shadow:0 2px 6px rgb(36 35 31/18%);transition:left 1.1s var(--lt-v31-ease-out),border-color .5s;overflow:visible}
#lt-course-ui.lt-ui .lt-course-progress-bird .lt-bird-mark {display:block;width:26px;height:26px;overflow:visible;pointer-events:none}
#lt-course-ui.lt-ui .lt-course-progress-bird>img {display:none}
#lt-course-ui.lt-ui .lt-course-progress-bird .lt-bird-wing-flap {transform-box:view-box;transform-origin:60% 53%}
#lt-course-ui.lt-ui .lt-course-progress-lane.is-gliding .lt-bird-wing-flap {animation:lt-v31-flap .52s cubic-bezier(.42,0,.58,1) 2}
@keyframes lt-v31-flap {0%,100%{transform:rotate(0) scaleX(1)}25%{transform:rotate(-20deg) scaleX(1.1)}75%{transform:rotate(14deg) scaleX(.94)}}
#lt-course-ui.lt-ui .lt-course-progress-trail {position:absolute;z-index:0;top:8px;height:16px;width:90px;right:calc(100% - var(--lt-course-progress));background:radial-gradient(60px 8px at 100% 50%,rgb(232 194 58/55%),transparent 70%);opacity:0;pointer-events:none;transition:right 1.1s var(--lt-v31-ease-out),opacity .5s}
#lt-course-ui.lt-ui .lt-course-progress-lane:not(.has-progress) .lt-course-progress-trail {display:none}
#lt-course-ui.lt-ui .lt-course-progress-lane.is-gliding .lt-course-progress-trail {opacity:1;transition:right 1.1s var(--lt-v31-ease-out),opacity .2s}
#lt-course-ui.lt-ui .lt-course-progress-track {position:relative}
#lt-course-ui.lt-ui .lt-course-progress-track::after {content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgb(255 255 255/75%) 50%,transparent 70%);transform:translateX(-100%);pointer-events:none}
#lt-course-ui.lt-ui .lt-course-progress-lane.is-celebrating .lt-course-progress-track::after {animation:lt-v31-sweep 1.1s .35s var(--lt-v31-ease-std)}
#lt-course-ui.lt-ui .lt-course-progress-lane.is-celebrating .lt-course-progress-bird .lt-bird-mark {animation:lt-v31-land .7s var(--lt-v31-ease-spring)}
@keyframes lt-v31-sweep {to{transform:translateX(100%)}}
@keyframes lt-v31-land {0%{transform:translateY(-6px) scale(1.12)}100%{transform:none}}
#lt-course-ui.lt-ui .lt-v31-spark {position:absolute;z-index:3;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#e8c23a;pointer-events:none}
#lt-course-ui.lt-ui .lt-v31-feather {position:absolute;z-index:4;width:14px;height:22px;pointer-events:none}
#lt-course-ui.lt-ui .lt-course-estimate[data-empty="true"] {display:none}
/* ---------- section tasks ---------- */
#lt-course-ui.lt-ui .lt-v3-task-cards[hidden] {display:none}
#lt-course-ui.lt-ui .lt-v3-task-cards.is-entering .lt-v3-task-card {animation:lt-v31-rise .45s var(--lt-v31-ease-out) both}
#lt-course-ui.lt-ui .lt-v3-task-cards.is-entering .lt-v3-task-card:nth-child(2) {animation-delay:.07s}
#lt-course-ui.lt-ui .lt-v3-task-cards.is-entering .lt-v3-task-card:nth-child(3) {animation-delay:.14s}
@keyframes lt-v31-rise {from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
#lt-course-ui.lt-ui .lt-v3-task-card {position:relative;overflow:hidden;transition:background-color .4s,border-color .4s}
#lt-course-ui.lt-ui .lt-v3-task-card[data-state="running"]::before {content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 35%,rgb(232 194 58/18%) 50%,transparent 65%);animation:lt-v31-sheen 2.2s linear infinite;pointer-events:none}
@keyframes lt-v31-sheen {from{transform:translateX(-100%)}to{transform:translateX(100%)}}
#lt-course-ui.lt-ui .lt-v31-task-bar {display:block;height:3px;margin-top:4px;border-radius:3px;background:#ece5d3;overflow:hidden}
#lt-course-ui.lt-ui .lt-v31-task-bar[hidden] {display:none}
#lt-course-ui.lt-ui .lt-v31-task-bar i {display:block;height:100%;width:var(--lt-task-progress,0%);background:#e8c23a;border-radius:3px;transition:width .8s var(--lt-v31-ease-out)}
#lt-course-ui.lt-ui .lt-v3-task-card[data-state="done"] .lt-v31-task-bar i {background:#2e9a62}
#lt-course-ui.lt-ui #lt-course-empty[data-variant="none"] {display:flex;align-items:center;gap:8px;margin:8px 0 12px;padding:8px 12px;border:1px dashed #d9d1bd;border-radius:9px;color:#5c5848;animation:lt-v31-fade .4s var(--lt-v31-ease-out)}
#lt-course-ui.lt-ui #lt-course-empty[data-variant="none"][hidden] {display:none}
#lt-course-ui.lt-ui #lt-course-empty[data-variant="none"]::before {content:"";width:16px;height:16px;flex:0 0 16px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 1.5C4 5 4 10.5 8 14.5C12 10.5 12 5 8 1.5Z' fill='none' stroke='%238b6615' stroke-width='1.3'/%3E%3Cpath d='M8 3.5V14' stroke='%238b6615'/%3E%3C/svg%3E") center/contain no-repeat}
@keyframes lt-v31-fade {from{opacity:0}to{opacity:1}}
/* ---------- course records ---------- */
#lt-course-ui.lt-ui [data-log-header] {display:flex!important;justify-content:flex-end;align-items:center;margin:0 0 4px;padding:0!important;border:0!important;background:none!important}
#lt-course-ui.lt-ui #clearLogBtn {margin-left:auto;font-size:12px!important;min-height:0;min-width:0;padding:2px 12px!important;border:1px solid #d9d1bd!important;border-radius:999px!important;background:#fffdf7;line-height:1.6}
#lt-course-ui.lt-ui #clearLogBtn:hover {border-color:#8b6615!important;color:#8b6615!important}
#lt-course-ui.lt-ui #log>div {border-left:2px solid transparent;padding-left:6px;border-radius:3px;animation:lt-v31-row-in .45s var(--lt-v31-ease-out),lt-v31-row-flash 1.6s var(--lt-v31-ease-std)}
@keyframes lt-v31-row-in {from{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:none}}
@keyframes lt-v31-row-flash {0%{border-left-color:#e8c23a;background:rgb(232 194 58/16%)}100%{border-left-color:transparent;background:transparent}}
/* ---------- speed: drifting gold dust + value pop ---------- */
#lt-course-ui.lt-ui .lt-speed-dust {position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none}
#lt-course-ui.lt-ui .lt-speed-dust i {position:absolute;left:0;width:3px;height:3px;border-radius:50%;background:#fff8d8;opacity:.75;animation:lt-v31-drift var(--lt-speed-drift,2.4s) linear infinite}
@keyframes lt-v31-drift {from{transform:translateX(-12px)}to{transform:translateX(640px)}}
#lt-course-ui.lt-ui .lt-speed-value.is-popping {display:inline-block;animation:lt-v31-pop .35s var(--lt-v31-ease-spring)}
@keyframes lt-v31-pop {50%{transform:scale(1.35)}}
/* ---------- launcher: progress ring, orbit, attention ---------- */
#cxds-logo.lt-ui .lt-launcher-ring {position:absolute;inset:-6px;width:calc(100% + 12px);height:calc(100% + 12px);transform:rotate(-90deg);pointer-events:none;overflow:visible}
#cxds-logo.lt-ui .lt-launcher-ring circle {fill:none;stroke-width:3}
#cxds-logo.lt-ui .lt-launcher-ring .lt-ring-bg {stroke:rgb(139 102 21/16%)}
#cxds-logo.lt-ui .lt-launcher-ring .lt-ring-fg {stroke:#e8c23a;stroke-linecap:round;transition:stroke-dashoffset 1.1s var(--lt-v31-ease-out),stroke .5s}
#cxds-logo.lt-ui:not([data-ring]) .lt-launcher-ring {display:none}
#cxds-logo.lt-ui[data-motion="done"] .lt-ring-fg {stroke:#2e9a62}
#cxds-logo.lt-ui[data-motion="ai"] .lt-ring-fg {stroke:#9a7ee0}
#cxds-logo.lt-ui .lt-launcher-orbit {position:absolute;inset:-6px;border-radius:50%;opacity:0;pointer-events:none;transition:opacity .3s}
#cxds-logo.lt-ui .lt-launcher-orbit::before {content:"";position:absolute;top:-2px;left:50%;width:7px;height:7px;margin-left:-3.5px;border-radius:50%;background:#e8c23a;box-shadow:0 0 8px 2px rgb(232 194 58/80%)}
#cxds-logo.lt-ui:is([data-motion="run"],[data-motion="ai"]) .lt-launcher-orbit {opacity:1;animation:lt-v31-spin 2.4s linear infinite}
#cxds-logo.lt-ui[data-motion="ai"] .lt-launcher-orbit::before {background:#b39cf0;box-shadow:0 0 8px 2px rgb(150 120 230/80%)}
@keyframes lt-v31-spin {to{transform:rotate(360deg)}}
#cxds-logo.lt-ui .lt-launcher-badge {position:absolute;right:-4px;bottom:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:#96520f;color:#fff;font:700 10px/16px var(--lt-font-family);text-align:center;transform:scale(0);transition:transform .3s var(--lt-v31-ease-spring);pointer-events:none}
#cxds-logo.lt-ui[data-attention="true"] .lt-launcher-badge {transform:scale(1)}
#cxds-logo.lt-ui[data-ring]:is([data-runtime-state="running"],[data-runtime-state="done"]) {box-shadow:var(--lt-shadow-2)}
/* ---------- panel unfurls from the launcher ---------- */
#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"] {transform-origin:var(--lt-panel-origin,100% 100%);transition:transform .38s var(--lt-v31-ease-out),opacity .25s,visibility 0s}
#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"].cxds-hidden {transform:scale(.35);transition:transform .22s var(--lt-v31-ease-std),opacity .18s,visibility 0s .22s}
#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"] .cxds-body>* {transition:opacity .3s,transform .4s var(--lt-v31-ease-out)}
#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"].cxds-hidden .cxds-body>* {opacity:0;transform:translateY(-6px)}
#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"] .cxds-body>*:nth-child(2) {transition-delay:.04s}
#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"] .cxds-body>*:nth-child(3) {transition-delay:.08s}
#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"] .cxds-body>*:nth-child(4) {transition-delay:.12s}
#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"] .cxds-body>*:nth-child(n+5) {transition-delay:.16s}
/* ---------- panel: AI process + account ---------- */
#cxds-panel.lt-ui .lt-ux-ai-idle {margin:8px 0 0;padding:6px 10px;border-radius:8px;background:#fffdf7;border:1px solid #ece5d3;font-size:12px;line-height:1.6;color:#5c5848}
#cxds-panel.lt-ui .lt-ux-ai-idle[hidden] {display:none}
#cxds-panel.lt-ui .lt-ai-thinking {display:none;gap:3px;align-items:center;margin:8px 6px 0 0;vertical-align:middle}
#cxds-panel.lt-ui .lt-v3-ai-card[data-ai="running"] .lt-ai-thinking {display:inline-flex}
#cxds-panel.lt-ui .lt-ai-thinking i {width:5px;height:5px;border-radius:50%;background:#7a5cc8;animation:lt-v31-think 1s infinite}
#cxds-panel.lt-ui .lt-ai-thinking i:nth-child(2) {animation-delay:.15s}
#cxds-panel.lt-ui .lt-ai-thinking i:nth-child(3) {animation-delay:.3s}
@keyframes lt-v31-think {0%,80%,100%{transform:translateY(0);opacity:.35}40%{transform:translateY(-4px);opacity:1}}
#cxds-panel.lt-ui .lt-ai-steps {display:flex;gap:3px;margin-top:8px}
#cxds-panel.lt-ui .lt-ai-steps[hidden] {display:none}
#cxds-panel.lt-ui .lt-ai-steps i {flex:1;height:4px;border-radius:2px;background:#e9e2d0;transition:background-color .3s}
#cxds-panel.lt-ui .lt-ai-steps i[data-step="current"] {background:#7a5cc8}
#cxds-panel.lt-ui .lt-ai-steps i[data-step="done"] {background:#2e9a62}
#cxds-panel.lt-ui .lt-runtime-balance-row {position:relative}
#cxds-panel.lt-ui .lt-balance-delta {position:absolute;left:100%;top:-6px;margin-left:2px;font-size:12px;font-weight:700;color:#b5331e;white-space:nowrap;pointer-events:none;animation:lt-v31-float 1.6s var(--lt-v31-ease-out) forwards}
#cxds-panel.lt-ui .lt-balance-delta.is-gain {color:#1b7a4c}
@keyframes lt-v31-float {0%{opacity:0;transform:translateY(8px)}20%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-16px)}}
#cxds-panel.lt-ui [data-balance] {font-variant-numeric:tabular-nums}
#cxds-panel.lt-ui .lt-ux-receipt:not([hidden]) {animation:lt-v31-receipt .45s var(--lt-v31-ease-out)}
#cxds-panel.lt-ui .lt-ux-receipt.is-new {animation:lt-v31-receipt .45s var(--lt-v31-ease-out)}
@keyframes lt-v31-receipt {from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
#cxds-panel.lt-ui [data-action="refresh-balance"].is-spinning .lt-icon {animation:lt-v31-spin .7s var(--lt-v31-ease-std)}
/* ---------- concise billing / card copy ---------- */
#cxds-panel.lt-ui .lt-help-points {margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px}
#cxds-panel.lt-ui .lt-help-points li {position:relative;padding-left:12px}
#cxds-panel.lt-ui .lt-help-points li::before {content:"";position:absolute;left:2px;top:.65em;width:4px;height:4px;border-radius:50%;background:#c99a2e}
#cxds-panel.lt-ui .lt-help-points strong {color:var(--lt-color-text);font-weight:600}
/* The drawer already states the payment rule; avoid repeating it right below. */
#cxds-panel.lt-ui .drip-recharge[open] ~ .lt-payment-essential {display:none}
@media(prefers-reduced-motion:reduce){
:is(#lt-course-ui,#cxds-panel,#cxds-logo).lt-ui,:is(#lt-course-ui,#cxds-panel,#cxds-logo).lt-ui *,:is(#lt-course-ui,#cxds-panel,#cxds-logo).lt-ui *::before,:is(#lt-course-ui,#cxds-panel,#cxds-logo).lt-ui *::after {animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;transition-delay:0s!important}
#lt-course-ui.lt-ui .lt-v31-spark,#lt-course-ui.lt-ui .lt-v31-feather,#lt-course-ui.lt-ui .lt-speed-dust {display:none}
}
`;
var golden_wing_v4_default = '/* Golden Wing v3.2 simple panel: status first, details on demand. */\n#cxds-panel.lt-ui.lt-v4 .cxds-body {gap:10px}\n\n/* Hidden by default; still present for logic, screen readers get the hero instead. */\n#cxds-panel.lt-ui.lt-v4 :is(#drip-ai-help,.lt-ux-headline,.lt-ux-next,.lt-ux-ai-idle,.drip-current,[data-current-task],.lt-runtime-credit-label,.lt-payment-essential,.lt-ux-feedback,.lt-ux-ai-switch-note,.lt-v3-footer-copy,[data-ai-label]) {display:none!important}\n#cxds-panel.lt-ui.lt-v4 :is(.lt-billing-details,.lt-record-details):not([open]) {display:none}\n\n/* Status hero */\n#cxds-panel.lt-ui.lt-v4 .lt-v4-hero {display:flex;align-items:center;gap:12px;padding:2px 2px 0}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-icon {width:38px;height:38px;flex:0 0 38px;border-radius:12px;display:grid;place-items:center;font-size:17px;font-weight:700;background:#fff4d4;color:#8b6615;transition:background-color .3s,color .3s}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-hero[data-tone="run"] .lt-v4-icon {background:#fff4d4;color:#8b6615}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-hero[data-tone="ai"] .lt-v4-icon {background:#f1ecff;color:#7a5cc8}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-hero[data-tone="ok"] .lt-v4-icon {background:#e8f4ec;color:#1b7a4c}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-hero[data-tone="warn"] .lt-v4-icon {background:#fff1de;color:#96520f}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-copy {min-width:0;display:flex;flex-direction:column}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-title {font-weight:700;font-size:15px;line-height:1.4;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-desc {font-size:12px;line-height:1.5;color:#8a846f;overflow-wrap:anywhere}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-cta {width:100%;min-height:36px;font-size:13px;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-cta[hidden] {display:none}\n\n/* When the hero already offers the main action, the course-home switch steps back. */\n#cxds-panel.lt-ui.lt-v4[data-lt-cta="true"] [data-action="home-entry"] {background:transparent!important;color:#8b6615!important;border:1px solid #d9d1bd!important;min-height:30px;font-weight:500}\n\n/* AI row: flat, one line */\n#cxds-panel.lt-ui.lt-v4 .lt-v3-ai-card {padding:10px 12px}\n#cxds-panel.lt-ui.lt-v4 .lt-runtime-ai-row {display:flex;align-items:center}\n#cxds-panel.lt-ui.lt-v4 [data-action="ai-toggle"] {width:100%;justify-content:space-between}\n#cxds-panel.lt-ui.lt-v4 .drip-ai-copy {display:flex;align-items:baseline;gap:8px;flex-wrap:nowrap;min-width:0}\n#cxds-panel.lt-ui.lt-v4 .drip-ai-copy strong {font-size:13px;white-space:nowrap}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-ai-text {background:none!important;border:0!important;padding:0!important;border-radius:0!important;font-size:11.5px;color:#8a846f;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n#cxds-panel.lt-ui.lt-v4 .lt-ai-thinking {margin:6px 0 0}\n#cxds-panel.lt-ui.lt-v4 .lt-ai-steps {margin-top:8px}\n\n/* Points row */\n#cxds-panel.lt-ui.lt-v4 .cxds-license-box {padding:10px 12px}\n#cxds-panel.lt-ui.lt-v4 [data-balance] {font-size:22px}\n#cxds-panel.lt-ui.lt-v4 .lt-v3-recharge {min-height:30px;padding:3px 14px;font-size:12px}\n#cxds-panel.lt-ui.lt-v4 .lt-ux-receipt {margin-top:8px}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-shop {display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 10px;padding:6px 6px 6px 10px;border-radius:8px;background:#f6f0e1;font-size:12px;color:#6b5a3a}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-shop[hidden] {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-shop-link {min-height:28px;padding:0 10px;font-size:12px;color:#8b6615}\n\n/* Latest record + links */\n#cxds-panel.lt-ui.lt-v4 .lt-v4-last {display:flex;align-items:center;gap:8px;margin:0;padding:0 2px;font-size:12px;color:#5c5848}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-last::before {content:"";width:6px;height:6px;flex:0 0 6px;border-radius:50%;background:#e8c23a}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-last[data-empty="true"] {color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-last[data-empty="true"]::before {background:#d9d1bd}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-last span {overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-links {display:flex;gap:16px;padding:0 2px}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-link {border:0;background:none;padding:0;font:inherit;font-size:12px;color:#8b6615;cursor:pointer}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-link:hover,#cxds-panel.lt-ui.lt-v4 .lt-v4-link[aria-expanded="true"] {text-decoration:underline}\n#cxds-panel.lt-ui.lt-v4 .lt-record-details[open] {padding-top:6px}\n\n/* Footer keeps only the course list button */\n#cxds-panel.lt-ui.lt-v4 .lt-v3-footer {justify-content:flex-end}\n\n/* Timeline: no repeated body line */\n#cxds-panel.lt-ui .drip-timeline-entry p[hidden] {display:none}\n';
var golden_wing_invite_default = "/* \u9080\u8BF7\u540C\u5B66\uFF1A\u5165\u53E3\u3001\u9080\u8BF7\u5361\u3001\u586B\u7801\u63D0\u793A\u4E0E\u7B54\u5B8C\u4E00\u9875\u540E\u7684\u63D0\u793A\uFF0C\u6CBF\u7528\u91D1\u8272\u4E3B\u9898\u3002 */\n#cxds-panel.lt-ui.lt-v4 .lt-v4-links .lt-invite-entry {margin-left:auto;display:inline-flex;align-items:center;gap:5px;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-entry[hidden] {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-badge {font-size:10.5px;font-weight:700;line-height:17px;padding:0 6px;border-radius:999px;background:#fff4d4;color:#8b6615;border:1px solid #f0dc9c;white-space:nowrap}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-card {padding:12px;background:#fbf9f3;border:1px solid #e6dfce;border-radius:10px;position:relative}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-card[hidden] {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-head b {font-size:14px;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-perks {display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-perk {padding:8px 10px;border-radius:8px;background:#fff;border:1px solid #e6dfce;min-width:0}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-perk small {display:block;font-size:11px;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-perk strong {display:block;font-size:16px;line-height:1.3;color:#8b6615}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-perk span {display:block;font-size:11px;color:#5c5848}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-ticket {display:flex;align-items:stretch;margin-top:10px;border:1.5px dashed #d6c28a;border-radius:10px;background:#fffaeb}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-code {flex:1;padding:9px 12px;min-width:0}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-code small {display:block;font-size:11px;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-code code {font:700 20px/1.25 ui-monospace,Consolas,monospace;letter-spacing:4px;color:#24231f;background:none;padding:0}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-copy-code {border:0;border-left:1.5px dashed #d6c28a;border-radius:0 9px 9px 0;background:transparent;color:#8b6615;font:inherit;font-size:12px;font-weight:600;padding:0 14px;cursor:pointer}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-copy-code:hover {background:#fff3d1}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-copy-code.is-done {background:#ecf6ef;color:#1b7a4c}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-share {width:100%;min-height:36px;margin-top:10px;font-size:13px;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-share.is-done,#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge-copy.is-done {background:#1b7a4c}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-stats {display:flex;margin-top:12px;padding-top:10px;border-top:1px solid #e6dfce;text-align:center}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-stats div {flex:1}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-stats div+div {border-left:1px solid #e6dfce}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-stats strong {display:block;font-size:15px;line-height:1.3;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-stats strong.is-gold {color:#8b6615}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-stats small {font-size:11px;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-progress {display:flex;flex-direction:column;gap:6px;margin-top:10px}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-progress:empty {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-row {display:grid;grid-template-columns:52px 1fr 40px;align-items:center;gap:8px;font-size:11.5px;color:#5c5848}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-row em {font-style:normal;text-align:right;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-bar {display:block;height:6px;border-radius:999px;background:#efe8d6;overflow:hidden}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-bar b {display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#e8c23a,#a8812a);transition:width .3s}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-hint {margin:8px 0 0;font-size:11.5px;line-height:1.55;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-hint.is-error {color:#b5331e}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-hint:empty,#cxds-panel.lt-ui.lt-v4 .lt-invite-hint[hidden] {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-toast {position:absolute;left:50%;bottom:-10px;transform:translate(-50%,8px);margin:0;background:#24231f;color:#fffdf7;font-size:12px;padding:6px 12px;border-radius:999px;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;white-space:nowrap}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-toast.is-on {opacity:1;transform:translate(-50%,0)}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-bind {margin:10px 0 0}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-bind[hidden],#cxds-panel.lt-ui.lt-v4 .lt-invite-receipt[hidden],#cxds-panel.lt-ui.lt-v4 .lt-invite-kind[hidden],#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge[hidden] {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-receipt {margin:10px 0 0;padding:8px 10px;border-radius:8px;background:#ecf6ef;border:1px solid #bfe0cb;color:#1b7a4c;font-size:12px;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-kind {margin-left:6px;font-size:11px;font-weight:600;padding:1px 7px;border-radius:999px;background:#fff4d4;color:#8b6615}\n#cxds-panel.lt-ui.lt-v4 #cxds-card-code.lt-invite-input {font-family:ui-monospace,Consolas,monospace;letter-spacing:2px;font-weight:600;text-transform:uppercase}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge {position:relative;padding:10px 32px 10px 12px;border-radius:10px;background:#fff8e6;border:1px solid #ecd793;animation:lt-invite-rise .32s cubic-bezier(.16,1,.3,1)}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge b {display:block;font-size:13px;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge p {margin:2px 0 8px;font-size:12px;color:#6b5a3a}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge-close {position:absolute;right:6px;top:6px;width:24px;height:24px;border:0;border-radius:6px;background:none;color:#8a846f;font-size:16px;line-height:1;cursor:pointer}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge-close:hover {background:#f3e7c4}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge-actions {display:flex;align-items:center;gap:10px}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge-copy {min-height:30px;padding:0 12px;font-size:12px;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge-actions small {font-size:11px;color:#8a846f}\n@keyframes lt-invite-rise {from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}\n@media (prefers-reduced-motion:reduce){#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge{animation:none}#cxds-panel.lt-ui.lt-v4 .lt-invite-bar b,#cxds-panel.lt-ui.lt-v4 .lt-invite-toast{transition:none}}\n";
var golden_wing_pay_default = '/* \u9762\u677F\u5185\u626B\u7801\u4ED8\u6B3E\uFF1A\u5145\u503C\u62BD\u5C49\u3001\u79EF\u5206\u4E0D\u8DB3\u5361\u7247\u3001\u5C0F\u9E1F\u6C14\u6CE1\uFF0C\u6CBF\u7528\u91D1\u8272\u4E3B\u9898\u3002 */\n#cxds-panel.lt-ui.lt-v4 .lt-pay[hidden],#cxds-panel.lt-ui.lt-v4 .lt-pay-alt[hidden],#cxds-panel.lt-ui.lt-v4 .lt-pay-short[hidden],#cxds-panel.lt-ui.lt-v4 .lt-pay-short [hidden] {display:none}\n/* \u5F00\u4E86\u626B\u7801\u4ED8\u6B3E\uFF1A\u5E97\u94FA\u6761\u6536\u8FDB\u5E95\u90E8\u94FE\u63A5\uFF0C\u5361\u5BC6\u8F93\u5165\u6846\u70B9\u201C\u5DF2\u6709\u5361\u5BC6\u201D\u624D\u5C55\u5F00\u3002 */\n#cxds-panel.lt-ui.lt-v4 .lt-pay-on > .lt-v4-shop:not(.lt-invite-bind) {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-on:not(.lt-pay-redeem-open) > :is(.cxds-field,.cxds-license-actions,.drip-credit-help) {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-pay {margin:0 0 4px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-label {display:flex;align-items:baseline;justify-content:space-between;margin-bottom:6px;font-size:12px;font-weight:600;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-label small {font-size:11px;font-weight:400;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-packages {display:grid;grid-template-columns:1fr 1fr;gap:6px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-package {display:block;text-align:left;padding:8px 10px;border-radius:9px;background:#fff;border:1px solid #e6dfce;font:inherit;color:#24231f;cursor:pointer;transition:border-color .14s,background-color .14s,box-shadow .14s}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-package:hover {border-color:#b8995a}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-package[aria-checked="true"] {border-color:#8b6615;background:#fffaeb;box-shadow:inset 0 0 0 1px #8b6615}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-package strong {display:block;font-size:15px;line-height:1.3}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-package strong small {margin-left:2px;font-size:11px;font-weight:500;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-package span {display:block;font-size:12px;font-weight:600;color:#8b6615}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-methods {display:flex;gap:6px;margin-top:8px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-method {flex:1;display:flex;align-items:center;justify-content:center;gap:6px;min-height:32px;border-radius:8px;border:1px solid #e6dfce;background:#fff;font:inherit;font-size:12px;color:#5c5848;cursor:pointer;transition:border-color .14s,color .14s}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-method[aria-checked="true"] {border-color:#8b6615;color:#24231f;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-method i,#cxds-panel.lt-ui.lt-v4 .lt-pay-qr-mark {width:16px;height:16px;border-radius:4px;display:grid;place-items:center;color:#fff;font-style:normal;font-size:10px;font-weight:700}\n#cxds-panel.lt-ui.lt-v4 .is-alipay {background:#1677ff}\n#cxds-panel.lt-ui.lt-v4 .is-wxpay {background:#07c160}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-go {width:100%;min-height:38px;margin-top:10px;font-size:13.5px;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-fine {margin:7px 0 0;font-size:11px;color:#8a846f;text-align:center}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-alt {display:flex;justify-content:space-between;align-items:center;margin:2px 0 8px;padding-top:8px;border-top:1px solid #e6dfce}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-link {border:0;background:none;padding:2px 0;font:inherit;font-size:12px;color:#8b6615;cursor:pointer}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-link:hover {text-decoration:underline}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-link[hidden] {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-loading {padding:24px 0;text-align:center;font-size:12px;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 :is(.lt-pay-pick,.lt-pay-qrbox,.lt-pay-done,.lt-pay-failed,.lt-pay-offer) {animation:lt-pay-rise .28s cubic-bezier(.16,1,.3,1)}\n\n/* \u4E8C\u7EF4\u7801 */\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qrbox {display:flex;flex-direction:column;align-items:center;text-align:center}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qrhead {display:flex;align-items:baseline;gap:6px;margin-bottom:8px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qrhead strong {font-size:22px;letter-spacing:-.3px;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qrhead small {font-size:12px;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qr {position:relative;width:168px;height:168px;padding:8px;box-sizing:border-box;background:#fff;border:1px solid #e6dfce;border-radius:10px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qr svg {display:block;width:100%;height:100%}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qr-mark {position:absolute;left:50%;top:50%;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:6px;font-size:14px;box-shadow:0 0 0 3px #fff}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qr-mask {position:absolute;inset:0;border-radius:10px;background:rgb(255 255 255/93%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;font-size:12px;color:#5c5848}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qr-mask .lt-button {min-height:30px;font-size:12px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-scan {margin-top:8px;font-size:12.5px;color:#5c5848}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-scan b {margin:0 3px;font-weight:600;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-wait {display:flex;align-items:center;justify-content:center;gap:6px;margin-top:4px;font-size:11.5px;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-wait i,#cxds-panel.lt-ui.lt-v4 .lt-pay-resume i {width:6px;height:6px;border-radius:50%;background:#e8c23a;animation:lt-pay-pulse 1.2s ease-in-out infinite}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qrfoot {display:flex;justify-content:space-between;width:100%;margin-top:8px;padding-top:8px;border-top:1px solid #e6dfce}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qrfoot .lt-pay-link {color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qrfoot .lt-pay-link:hover {color:#8b6615}\n\n/* \u5230\u8D26 / \u5931\u8D25 */\n#cxds-panel.lt-ui.lt-v4 .lt-pay-done {display:flex;flex-direction:column;align-items:center;text-align:center;padding:6px 0 2px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-done-tick {width:44px;height:44px;border-radius:50%;background:#ecf6ef;color:#1b7a4c;display:grid;place-items:center;font-size:22px;font-weight:700;animation:lt-pay-pop .4s cubic-bezier(.34,1.56,.64,1)}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-done b {margin-top:8px;font-size:15px;color:#1b7a4c}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-done small {font-size:11.5px;color:#8a846f;overflow-wrap:anywhere}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-resume {display:flex;align-items:center;gap:6px;margin-top:8px;padding:5px 10px;border-radius:999px;background:#f1ecff;color:#5b3fb0;font-size:12px;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-resume i {background:#7a5cc8}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-failed {display:flex;flex-direction:column;gap:4px;text-align:center}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-failed b {font-size:14px;color:#96520f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-failed small {font-size:12px;line-height:1.6;color:#5c5848}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-failed-actions {display:flex;gap:6px;justify-content:center;margin-top:6px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-failed-actions .lt-button {min-height:30px;font-size:12px}\n\n/* \u79EF\u5206\u4E0D\u8DB3\u5361\u7247 */\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short {display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:12px;background:#fffaf0;border:1px solid #f0dca8;animation:lt-pay-rise .32s cubic-bezier(.16,1,.3,1)}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short.is-paid {background:#ecf6ef;border-color:#bfe0cb}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short.is-paid .lt-pay-short-head {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-head {display:flex;align-items:flex-start;gap:8px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-head > div {flex:1;min-width:0}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-head b {display:block;font-size:14px;color:#96520f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-head small {display:block;font-size:12px;color:#6b5a3a}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-close {width:24px;height:24px;flex:0 0 24px;border:0;border-radius:6px;background:none;color:#8a846f;font-size:16px;line-height:1;cursor:pointer}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-close:hover {background:#f3e7c4}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-offer-row {display:flex;align-items:center;gap:10px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-offer-amt {flex:1;min-width:0}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-offer-amt b {display:block;font-size:14px;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-offer-amt small {display:block;font-size:11.5px;color:#6b5a3a}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-offer-row .lt-button {min-width:96px;min-height:36px;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-offer-more {display:flex;justify-content:space-between;margin-top:6px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-offer-more .lt-pay-link {font-size:11.5px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-mini {display:flex;gap:6px;margin-top:8px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-mini button {flex:1;padding:5px 0;border-radius:8px;border:1px solid #e6dfce;background:#fff;font:inherit;font-size:11.5px;line-height:1.3;color:#5c5848;cursor:pointer}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-mini button b {display:block;font-size:12.5px;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-mini button[aria-checked="true"] {border-color:#8b6615;background:#fffaeb;color:#8b6615}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-partial {width:100%;min-height:30px;font-size:12px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-fallback {display:flex;gap:6px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-fallback:empty {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-fallback .lt-button {flex:1;min-height:32px;font-size:12px}\n\n/* \u5C0F\u9E1F\u6C14\u6CE1\uFF08\u9762\u677F\u6536\u8D77\u65F6\uFF09 */\n.lt-ui.lt-pay-bubble {position:fixed;z-index:2147483647;max-width:240px;margin:0;padding:9px 12px;border:0;border-radius:12px 12px 4px 12px;white-space:nowrap;background:#24231f;color:#fffdf7;box-shadow:0 8px 20px rgb(0 0 0/18%);font:12px/1.5 var(--lt-font-family,system-ui);text-align:left;cursor:pointer;animation:lt-pay-rise .36s cubic-bezier(.16,1,.3,1)}\n.lt-ui.lt-pay-bubble[hidden] {display:none}\n.lt-ui.lt-pay-bubble b {display:block;font-size:12.5px;font-weight:600}\n.lt-ui.lt-pay-bubble span {display:block;margin-top:2px;color:#e8c23a}\n.lt-ui.lt-pay-bubble:hover span {text-decoration:underline}\n\n@keyframes lt-pay-rise {from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}\n@keyframes lt-pay-pulse {0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}\n@keyframes lt-pay-pop {from{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}\n@media (prefers-reduced-motion:reduce) {#cxds-panel.lt-ui.lt-v4 [class*="lt-pay"],.lt-ui.lt-pay-bubble,#cxds-panel.lt-ui.lt-v4 [class*="lt-pay"] * {animation:none!important;transition:none!important}}\n';
var golden_wing_close_default = '/* \u5C55\u5F00\u9879\u7EDF\u4E00\u6536\u8D77\u65B9\u5F0F\uFF1A\u91D1\u8272 \xD7\u3001\u5361\u7247\u6807\u9898\u884C\u3001\u5165\u53E3\u5C55\u5F00\u72B6\u6001\u3002 */\n#cxds-panel.lt-ui.lt-v4 .lt-close {display:inline-grid;place-items:center;width:26px;height:26px;min-height:0;flex:0 0 26px;padding:0;border:1px solid transparent;border-radius:8px;background:none;color:#8b6615;cursor:pointer;transition:background .15s,border-color .15s}\n#cxds-panel.lt-ui.lt-v4 .lt-close .lt-icon {width:14px;height:14px;stroke-width:2.2}\n#cxds-panel.lt-ui.lt-v4 .lt-close:hover {background:#f3e7c4;border-color:#e6d3a0}\n#cxds-panel.lt-ui.lt-v4 .lt-close:focus-visible {outline:2px solid #c9a44a;outline-offset:1px}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge-close {right:4px;top:4px}\n\n#cxds-panel.lt-ui.lt-v4 :is(.lt-billing-details,.lt-record-details)>summary {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-sheet-head {display:flex;align-items:center;justify-content:space-between;gap:8px;margin:-4px -4px 6px 0}\n#cxds-panel.lt-ui.lt-v4 .lt-sheet-head b {font-size:13px;font-weight:600;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-record-details .lt-sheet-head {margin-top:2px}\n#cxds-panel.lt-ui.lt-v4 .drip-recharge-content>.lt-sheet-head {margin-top:-2px}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-head {display:flex;align-items:center;justify-content:space-between;gap:8px;margin:-4px -4px 0 0}\n\n/* \u5145\u503C\u5C55\u5F00\u540E\u662F\u63CF\u8FB9\u201C\u6536\u8D77 \u2303\u201D\uFF1B\u6587\u5B57\u94FE\u63A5\u5C55\u5F00\u65F6\u662F\u91D1\u8272\u5C0F\u80F6\u56CA\uFF0C\u7BAD\u5934\u671D\u4E0A */\n#cxds-panel.lt-ui.lt-v4 .lt-v3-recharge[aria-expanded="true"] {background:#fffdf7;color:#8b6615;border:1px solid #c9a44a;gap:3px}\n#cxds-panel.lt-ui.lt-v4 .lt-v3-recharge[aria-expanded="true"]:hover {background:#f8f0d5}\n#cxds-panel.lt-ui.lt-v4 .lt-v3-recharge .lt-icon {width:12px;height:12px;stroke-width:2.4;transform:rotate(180deg)}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-links .lt-v4-link {padding:2px 8px;margin:0 -8px;border-radius:999px;text-decoration:none}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-links .lt-v4-link:not(.lt-invite-entry)::after {content:"\u203A";display:inline-block;margin-left:3px;transition:transform .18s}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-links .lt-v4-link[aria-expanded="true"] {background:#f3e7c4;text-decoration:none}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-links .lt-v4-link[aria-expanded="true"]::after {transform:rotate(-90deg)}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-links .lt-v4-link:hover {text-decoration:none;background:#f8f0d5}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-links .lt-invite-entry {margin-left:auto;margin-right:-8px}\n\n/* \u9762\u677F\u6536\u8D77\u65F6\u5C0F\u9E1F\u65C1\u7684\u6C14\u6CE1\uFF1A\u53F3\u4E0A\u89D2\u5C0F \xD7\uFF0C\u53EA\u5173\u6C14\u6CE1 */\n.lt-ui.lt-pay-bubble {padding-right:30px}\n.lt-ui.lt-pay-bubble-close {position:fixed;z-index:2147483647;display:grid;place-items:center;width:20px;height:20px;padding:0;border:0;border-radius:6px;background:none;color:#bdb6a3;cursor:pointer}\n.lt-ui.lt-pay-bubble-close:hover {background:rgb(255 255 255/12%);color:#fffdf7}\n.lt-ui.lt-pay-bubble-close svg {width:12px;height:12px}\n.lt-ui.lt-pay-bubble-close[hidden] {display:none}\n\n@media (prefers-reduced-motion:reduce) {#cxds-panel.lt-ui.lt-v4 .lt-v4-link::after,#cxds-panel.lt-ui.lt-v4 .lt-close {transition:none}}\n';
var golden_wing_rounds_default = "/* AI\u5B9E\u8DF5\u5F00\u804A\u524D\u9009\u8F6E\u6570\u7684\u5F39\u7A97\uFF08\u5C45\u4E2D\u5361\u7247\uFF09\u4E0E\u8D26\u6237\u533A\u7684\u5B66\u4E60\u901A UID\uFF0C\u6CBF\u7528\u91D1\u8272\u4E3B\u9898\u3002 */\n.lt-ui.lt-rounds {position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;padding:16px;background:rgb(36 35 31/32%);backdrop-filter:blur(2px);font:13px/1.5 var(--lt-font-family,system-ui);color:var(--lt-color-text);animation:lt-rounds-fade .18s ease-out}\n.lt-ui.lt-rounds[hidden] {display:none}\n.lt-ui .lt-rounds-card {width:min(340px,100%);padding:20px 20px 16px;border-radius:16px;background:var(--lt-color-panel);border:1px solid var(--lt-color-border);box-shadow:0 18px 48px rgb(36 35 31/22%);animation:lt-rounds-rise .26s cubic-bezier(.16,1,.3,1)}\n.lt-ui .lt-rounds-eyebrow {margin:0;font-size:11.5px;font-weight:600;color:var(--lt-color-brand);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.lt-ui .lt-rounds-title {margin:4px 0 0;font-size:18px;line-height:1.35;font-weight:700;color:var(--lt-color-text)}\n.lt-ui .lt-rounds-desc {margin:6px 0 0;font-size:12.5px;line-height:1.6;color:var(--lt-color-text-secondary)}\n.lt-ui .lt-rounds-stepper {display:flex;align-items:center;justify-content:center;gap:18px;margin:16px 0 0}\n.lt-ui .lt-rounds-step {display:grid;place-items:center;width:40px;height:40px;padding:0;border:1px solid var(--lt-color-border);border-radius:999px;background:var(--lt-color-secondary);color:var(--lt-color-text);font:500 20px/1 var(--lt-font-family,system-ui);cursor:pointer;transition:background .15s,border-color .15s}\n.lt-ui .lt-rounds-step:hover:not(:disabled) {background:var(--lt-color-hover);border-color:var(--lt-color-control-border)}\n.lt-ui .lt-rounds-step:disabled {opacity:.4;cursor:default}\n.lt-ui .lt-rounds-value {display:flex;align-items:baseline;justify-content:center;gap:4px;min-width:84px}\n.lt-ui .lt-rounds-value b {font-size:40px;line-height:1;font-weight:700;color:var(--lt-color-text);font-variant-numeric:tabular-nums}\n.lt-ui .lt-rounds-value span {font-size:13px;color:var(--lt-color-text-muted)}\n.lt-ui .lt-rounds-quick {display:flex;justify-content:center;gap:6px;margin:14px 0 0}\n.lt-ui .lt-rounds-chip {min-width:52px;height:28px;padding:0 10px;border:1px solid var(--lt-color-border);border-radius:999px;background:var(--lt-color-panel);color:var(--lt-color-text-secondary);font:600 12px/1 var(--lt-font-family,system-ui);cursor:pointer;transition:background .15s,border-color .15s,color .15s}\n.lt-ui .lt-rounds-chip:hover:not(:disabled) {border-color:var(--lt-color-control-border);color:var(--lt-color-text)}\n.lt-ui .lt-rounds-chip.is-on {background:var(--lt-color-selected);border-color:#e3c86d;color:var(--lt-color-brand)}\n.lt-ui .lt-rounds-chip:disabled {opacity:.35;cursor:default}\n.lt-ui .lt-rounds-summary {display:flex;justify-content:space-between;align-items:center;margin:16px 0 0;padding:9px 12px;border-radius:10px;background:#fbf9f3;border:1px solid #e6dfce;font-size:12.5px}\n.lt-ui .lt-rounds-summary span:first-child {font-weight:700;color:var(--lt-color-brand)}\n.lt-ui .lt-rounds-balance {color:var(--lt-color-text-muted)}\n.lt-ui .lt-rounds-summary.is-short {background:var(--lt-color-warning-bg);border-color:#f0cfa6}\n.lt-ui .lt-rounds-summary.is-short .lt-rounds-balance {color:var(--lt-color-warning);font-weight:600}\n.lt-ui .lt-rounds-note {margin:8px 0 0;font-size:11.5px;line-height:1.55;color:var(--lt-color-text-muted)}\n.lt-ui .lt-rounds-summary.is-short + .lt-rounds-note {color:var(--lt-color-warning)}\n.lt-ui .lt-rounds-note[hidden] {display:none}\n.lt-ui .lt-rounds-actions {display:flex;gap:8px;margin:16px 0 0}\n.lt-ui .lt-rounds-cancel {flex:0 0 auto;min-height:38px;padding:0 14px}\n.lt-ui .lt-rounds-start {flex:1;min-height:38px;font-size:13.5px;font-weight:600}\n@keyframes lt-rounds-fade {from{opacity:0}to{opacity:1}}\n@keyframes lt-rounds-rise {from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}\n@media (prefers-reduced-motion:reduce) {.lt-ui.lt-rounds,.lt-ui .lt-rounds-card {animation:none}.lt-ui .lt-rounds-step,.lt-ui .lt-rounds-chip {transition:none}}\n\n/* \u8D26\u6237\u533A\u9876\u90E8\u7684\u5B66\u4E60\u901A UID\uFF1A\u79EF\u5206\u6309\u5B66\u4E60\u901A\u53F7\u5206\u5F00\u3002 */\n#cxds-panel.lt-ui .lt-uid-line {display:flex;align-items:center;gap:6px;margin:0 0 8px;font-size:11.5px;line-height:1.4;color:var(--lt-color-text-muted)}\n#cxds-panel.lt-ui .lt-uid-line b {font-weight:600;color:var(--lt-color-text);font-variant-numeric:tabular-nums;letter-spacing:.2px}\n#cxds-panel.lt-ui .lt-uid-line.is-missing b {font-weight:500;color:var(--lt-color-warning)}\n";
function installUiStyles(doc) {
if (doc.getElementById("lt-ui-foundation-style")) return;
const style = doc.createElement("style");
style.id = "lt-ui-foundation-style";
style.textContent = `${tokens_default}
${components_default}
${runtime_default}
${golden_wing_default}
${golden_wing_v3_default}
${golden_wing_v31_default}
${golden_wing_v4_default}
${golden_wing_invite_default}
${golden_wing_pay_default}
${golden_wing_close_default}
${golden_wing_rounds_default}`;
(doc.head || doc.documentElement).append(style);
}
var iconSvg = Object.freeze({
"x": '',
"list": '',
"refresh-cw": '',
"chevron-down": '',
"circle-check": ''
});
function mountSpeedSlider(doc, root) {
const model = root.querySelector("#dripRate");
const save = root.querySelector("#updateRateButton");
const presets = root.querySelector(".speed-pill").parentElement;
const section = presets.parentElement;
section.classList.add("lt-course-speed");
section.parentElement.classList.add("lt-course-control-row");
for (const legacy of [model.parentElement, presets, section.firstElementChild]) {
legacy.classList.add("lt-speed-legacy");
legacy.hidden = true;
}
const wrap = doc.createElement("div");
wrap.className = "lt-speed-control";
const heading = doc.createElement("div");
heading.className = "lt-speed-heading";
const label = doc.createElement("label");
label.htmlFor = "lt-video-speed";
label.textContent = "\u89C6\u9891\u500D\u901F";
const value = doc.createElement("output");
value.setAttribute("for", "lt-video-speed");
value.className = "lt-speed-value";
heading.append(label, value);
const track = doc.createElement("div");
track.className = "lt-speed-track";
const progress = doc.createElement("span");
progress.className = "lt-speed-progress";
progress.setAttribute("aria-hidden", "true");
const ticks = doc.createElement("div");
ticks.className = "lt-speed-ticks";
ticks.setAttribute("aria-hidden", "true");
for (let i = 0; i < 5; i++) ticks.append(doc.createElement("i"));
const knob = doc.createElement("span");
knob.className = "lt-speed-knob";
knob.setAttribute("aria-hidden", "true");
const slider = doc.createElement("input");
slider.id = "lt-video-speed";
slider.type = "range";
slider.min = "1";
slider.max = "5";
slider.step = "0.25";
slider.setAttribute("aria-describedby", "lt-speed-hint");
const dust = doc.createElement("span");
dust.className = "lt-speed-dust";
dust.setAttribute("aria-hidden", "true");
for (let i = 0; i < 9; i++) {
const grain = doc.createElement("i");
grain.style.top = `${18 + i * 37 % 64}%`;
grain.style.animationDelay = `${-(i * 0.83 % 3).toFixed(2)}s`;
dust.append(grain);
}
progress.append(dust);
track.append(progress, ticks, knob, slider);
const footer = doc.createElement("div");
footer.className = "lt-speed-footer";
const min = doc.createElement("span");
min.textContent = "1\xD7";
const hint = doc.createElement("span");
hint.id = "lt-speed-hint";
const max = doc.createElement("span");
max.textContent = "5\xD7";
footer.append(min, hint, max);
const warn = doc.createElement("p");
warn.className = "lt-speed-warn";
warn.setAttribute("role", "status");
warn.hidden = true;
warn.textContent = "\u8D85\u8FC7 1 \u500D\u901F\u53EF\u80FD\u4F1A\u6E05\u7A7A\u8BFE\u7A0B\u8FDB\u5EA6\uFF0C\u5EFA\u8BAE\u4FDD\u6301 1 \u500D\u901F\u5E76\u5F00\u542F\u540E\u53F0\u6302\u673A\u3002";
wrap.append(heading, track, footer, warn);
section.append(wrap);
let previewing = false;
const settle = () => {
track.classList.remove("is-dragging", "is-settling");
void knob.offsetWidth;
track.classList.add("is-settling");
value.classList.remove("is-popping");
void value.offsetWidth;
value.classList.add("is-popping");
};
const paint = (rate2, preview = false) => {
const position = Math.max(1, Math.min(5, rate2));
const fraction = (position - 1) / 4;
wrap.classList.toggle("is-max", rate2 === 5);
track.style.setProperty("--lt-speed-drift", `${(3.4 - position * 0.5).toFixed(2)}s`);
slider.value = String(position);
track.style.setProperty("--lt-speed-fill", `${fraction * 100}%`);
track.style.setProperty("--lt-speed-offset", `${13 - 26 * fraction}px`);
[...ticks.children].forEach((tick, i) => tick.classList.toggle("is-filled", i + 1 <= position));
value.textContent = `${rate2}\xD7`;
slider.setAttribute("aria-valuetext", rate2 > 5 || rate2 < 1 ? `\u5DF2\u4FDD\u5B58 ${rate2} \u500D\u901F\uFF1B\u6ED1\u52A8\u8303\u56F4 1 \u5230 5 \u500D\u901F` : `${rate2} \u500D\u901F`);
warn.hidden = !(rate2 > 1);
hint.textContent = preview ? "\u677E\u5F00\u4FDD\u5B58" : rate2 > 5 || rate2 < 1 ? "\u539F\u8BBE\u7F6E\u4FDD\u7559\uFF1B\u62D6\u52A8\u540E\u6539\u4E3A 1\u20135\xD7" : "\u677E\u5F00\u5373\u4FDD\u5B58";
};
const sync = () => {
if (previewing) return;
const rate2 = model.value.trim() === "" ? NaN : Number(model.value);
paint(Number.isFinite(rate2) ? rate2 : 1);
};
slider.addEventListener("pointerdown", () => {
track.classList.remove("is-settling");
track.classList.add("is-dragging");
});
slider.addEventListener("pointerup", () => track.classList.remove("is-dragging"));
slider.addEventListener("input", () => {
previewing = true;
paint(Number(slider.value), true);
});
slider.addEventListener("change", () => {
model.value = slider.value;
previewing = false;
save.click();
sync();
settle();
});
slider.addEventListener("pointercancel", () => {
track.classList.remove("is-dragging");
previewing = false;
sync();
});
doc.addEventListener("drip-speed-sync", sync);
sync();
}
var SVG_NS = "http://www.w3.org/2000/svg";
var serial = 0;
var wingOutline = "M35 18 C54 43 94 63 120 82 C136 97 130 121 150 133 L165 135 C149 147 132 151 111 150 L73 148 L53 139 L40 126 L29 112 L32 97 C24 87 21 70 23 49 L33 58 C30 42 30 29 35 18 Z";
function svgNode(tag, attributes = {}) {
const node = document.createElementNS(SVG_NS, tag);
for (const [name, value] of Object.entries(attributes)) node.setAttribute(name, value);
return node;
}
function birdMark(logoUrl) {
const prefix = `lt-bird-${++serial}`;
const svg = svgNode("svg", { viewBox: "0 0 256 256", class: "lt-launcher-mark lt-bird-mark", "aria-hidden": "true", focusable: "false" });
const defs = svgNode("defs");
const wingClip = svgNode("clipPath", { id: `${prefix}-wing`, clipPathUnits: "userSpaceOnUse" });
wingClip.append(svgNode("path", { d: wingOutline }));
const bodyClip = svgNode("clipPath", { id: `${prefix}-body`, clipPathUnits: "userSpaceOnUse" });
bodyClip.append(svgNode("path", { d: `M0 0H256V256H0Z ${wingOutline}`, "clip-rule": "evenodd" }));
defs.append(wingClip, bodyClip);
const image = () => svgNode("image", { href: logoUrl, width: "256", height: "256" });
const wing = svgNode("g", { class: "lt-bird-wing" });
const flap = svgNode("g", { class: "lt-bird-wing-flap" });
const clippedWing = svgNode("g", { "clip-path": `url(#${prefix}-wing)` });
clippedWing.append(image());
flap.append(clippedWing);
wing.append(flap);
const body = svgNode("g", { "clip-path": `url(#${prefix}-body)` });
body.append(image());
const facing = svgNode("g", { class: "lt-bird-facing" });
facing.append(wing, body);
svg.append(defs, facing);
return svg;
}
var SVG_NS2 = "http://www.w3.org/2000/svg";
var prefersReducedMotion = (win) => {
var _a;
return Boolean((_a = win.matchMedia) == null ? void 0 : _a.call(win, "(prefers-reduced-motion: reduce)").matches);
};
function replayClass(el, className, ms) {
if (!el) return;
const win = el.ownerDocument.defaultView;
el.classList.remove(className);
void el.offsetWidth;
el.classList.add(className);
win.clearTimeout(el[`__lt_${className}`]);
el[`__lt_${className}`] = win.setTimeout(() => el.classList.remove(className), ms);
}
function celebrateCourse(doc) {
const win = doc.defaultView;
const lane = doc.querySelector(".lt-course-progress-lane.has-progress");
const bird = lane == null ? void 0 : lane.querySelector(".lt-course-progress-bird");
if (!lane || !bird) return;
replayClass(lane, "is-celebrating", 1600);
if (prefersReducedMotion(win) || !bird.animate) return;
const laneRect = lane.getBoundingClientRect(), birdRect = bird.getBoundingClientRect();
const cx = birdRect.left - laneRect.left + birdRect.width / 2, cy = birdRect.top - laneRect.top + birdRect.height / 2;
for (let i = 0; i < 12; i++) {
const spark = doc.createElement("i");
spark.className = "lt-v31-spark";
spark.style.left = `${cx}px`;
spark.style.top = `${cy}px`;
if (i % 3 === 0) spark.style.background = "#2e9a62";
lane.append(spark);
const angle = i / 12 * Math.PI * 2 + Math.random() * 0.4, distance = 26 + Math.random() * 22;
spark.animate([
{ transform: "translate(0,0) scale(1)", opacity: 1 },
{ transform: `translate(${Math.cos(angle) * distance}px,${Math.sin(angle) * distance}px) scale(.2)`, opacity: 0 }
], { duration: 750 + Math.random() * 300, easing: "cubic-bezier(.16,1,.3,1)" }).onfinish = () => spark.remove();
}
const card = lane.closest(".custom-card") || lane.parentElement;
if (win.getComputedStyle(card).position === "static") card.style.position = "relative";
const cardRect = card.getBoundingClientRect();
const feather = doc.createElementNS(SVG_NS2, "svg");
feather.setAttribute("viewBox", "0 0 14 22");
feather.setAttribute("aria-hidden", "true");
feather.classList.add("lt-v31-feather");
const vane = doc.createElementNS(SVG_NS2, "path");
vane.setAttribute("d", "M7 1C2 6 2 14 7 21C12 14 12 6 7 1Z");
vane.setAttribute("fill", "#e8c23a");
vane.setAttribute("opacity", ".85");
const shaft = doc.createElementNS(SVG_NS2, "path");
shaft.setAttribute("d", "M7 3V20");
shaft.setAttribute("stroke", "#8b6615");
shaft.setAttribute("stroke-width", ".8");
feather.append(vane, shaft);
feather.style.left = `${Math.max(0, birdRect.left - cardRect.left - 10)}px`;
feather.style.top = `${Math.max(0, birdRect.top - cardRect.top - 6)}px`;
card.append(feather);
const width = cardRect.width;
feather.animate([
{ transform: "translate(0,0) rotate(-20deg)", opacity: 0 },
{ transform: `translate(${-width * 0.15}px,40px) rotate(25deg)`, opacity: 1, offset: 0.3 },
{ transform: `translate(${-width * 0.05}px,90px) rotate(-15deg)`, opacity: 0.9, offset: 0.65 },
{ transform: `translate(${-width * 0.22}px,140px) rotate(18deg)`, opacity: 0 }
], { duration: 3200, easing: "ease-in-out" }).onfinish = () => feather.remove();
}
function mountCourseUi(doc) {
const root = doc.querySelector(".main-container");
if (!root || root.dataset.ltCourseMounted) return;
root.dataset.ltCourseMounted = "true";
root.id = "lt-course-ui";
root.classList.add("lt-ui");
doc.body.classList.add("lt-ui", "lt-course-document");
root.dataset.theme = doc.body.dataset.theme = "golden-wing";
for (const el of root.querySelectorAll("[style]")) {
if (el.closest("#log")) continue;
for (const property of ["color", "background", "background-color", "border", "border-color", "border-radius", "box-shadow", "font-family", "font-weight"]) el.style.removeProperty(property);
}
root.firstElementChild.classList.add("lt-course-header");
const brand = doc.createElement("div");
brand.className = "lt-course-brand";
const mark = doc.createElement("img");
mark.src = "data:image/png;base64,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";
mark.alt = "";
const word = doc.createElement("strong");
word.textContent = "\u5927\u9E1F\u5B66\u4E60\u4E2D\u5FC3";
const context = doc.createElement("small");
context.textContent = "\u8BFE\u7A0B\u5B66\u4E60";
context.hidden = true;
brand.append(mark, word, context);
root.firstElementChild.firstElementChild.replaceChildren(brand);
installUiStyles(doc);
mountSpeedSlider(doc, root);
const guard = root.querySelector("#backGround");
guard.parentElement.classList.add("lt-course-guard");
guard.classList.add("lt-toggle");
guard.setAttribute("role", "switch");
guard.setAttribute("aria-label", "\u540E\u53F0\u6302\u673A");
const syncGuard = () => {
guard.setAttribute("aria-checked", String(guard.classList.contains("btn-success")));
if (!guard.querySelector(".lt-toggle-track")) {
const track = doc.createElement("span");
track.className = "lt-toggle-track";
track.setAttribute("aria-hidden", "true");
guard.append(track);
}
};
new MutationObserver(syncGuard).observe(guard, { attributes: true, childList: true, attributeFilter: ["class"] });
syncGuard();
for (const control of [guard, root.querySelector("#updateRateButton"), root.querySelector("#clearLogBtn")]) {
control.setAttribute("role", "button");
control.tabIndex = 0;
control.addEventListener("keydown", (event) => {
if (event.key === "Enter" || event.key === " ") {
event.preventDefault();
control.click();
}
});
}
guard.setAttribute("role", "switch");
const progressFill = root.querySelector("#overviewProgressFill");
const progressTrack = progressFill.parentElement;
progressTrack.classList.add("lt-course-progress-track");
const progressLane = doc.createElement("div");
progressLane.className = "lt-course-progress-lane";
progressTrack.before(progressLane);
progressLane.append(progressTrack);
const progressBird = doc.createElement("span");
progressBird.className = "lt-course-progress-bird";
progressBird.hidden = true;
progressBird.setAttribute("aria-hidden", "true");
progressBird.append(mark.cloneNode(false), birdMark(mark.src));
const progressTrail = doc.createElement("span");
progressTrail.className = "lt-course-progress-trail";
progressTrail.setAttribute("aria-hidden", "true");
progressLane.append(progressTrail, progressBird);
let shownPercent = null;
const syncProgressBird = () => {
const raw = progressFill.getAttribute("data-lt-progress");
const percent = raw === null ? NaN : Number(raw);
const known = Number.isInteger(percent) && percent >= 0 && percent <= 100;
progressLane.classList.toggle("has-progress", known);
progressBird.hidden = !known;
if (!known) return;
if (shownPercent !== null && percent > shownPercent && !prefersReducedMotion(doc.defaultView)) replayClass(progressLane, "is-gliding", 1100);
shownPercent = percent;
progressLane.style.setProperty("--lt-course-progress", `${percent}%`);
};
const progressObserver = new MutationObserver(syncProgressBird);
progressObserver.observe(progressFill, { attributes: true, attributeFilter: ["data-lt-progress"] });
doc.defaultView.addEventListener("pagehide", () => progressObserver.disconnect(), { once: true });
syncProgressBird();
const overview = root.querySelector("#courseOverviewCard");
overview.firstElementChild.classList.add("lt-course-overview-body");
overview.querySelector("details").classList.add("lt-course-estimate");
const estimate = overview.querySelector("summary");
estimate.classList.add("lt-button", "lt-button--ghost");
const tasks = root.querySelector("#joblist").closest(".custom-card");
tasks.classList.add("lt-course-tasks");
const taskIcon = doc.createElement("template");
taskIcon.innerHTML = iconSvg.list;
taskIcon.content.firstElementChild.classList.add("lt-icon");
taskIcon.content.firstElementChild.setAttribute("aria-hidden", "true");
tasks.querySelector(".custom-card-header>span").prepend(taskIcon.content);
const log = root.querySelector("#log"), card = log.closest(".custom-card");
card.classList.add("lt-course-log-card");
const details = doc.createElement("details");
details.className = "lt-course-records lt-disclosure";
const summary = doc.createElement("summary");
summary.className = "lt-button lt-button--ghost";
summary.textContent = "\u8BFE\u7A0B\u8BB0\u5F55\uFF08\u542B AI \u540C\u6B65\u6D88\u606F\uFF09";
const icon = doc.createElement("template");
icon.innerHTML = iconSvg["chevron-down"];
icon.content.firstElementChild.classList.add("lt-icon");
summary.append(icon.content);
const header = card.firstElementChild;
header.firstElementChild.hidden = true;
header.dataset.logHeader = "";
header.nextElementSibling.dataset.logBody = "";
details.append(summary, ...card.children);
card.append(details);
details.open = true;
const clear = root.querySelector("#clearLogBtn");
clear.classList.add("lt-button", "lt-button--ghost");
clear.textContent = "\u6E05\u7A7A";
}
function mountCourseUx(doc, read) {
var _a, _b;
if (doc.getElementById("lt-course-ux")) return;
mountCourseUi(doc);
const style = doc.createElement("style");
style.textContent = tokens_default + `
#lt-course-ux,#lt-course-empty,#lt-course-guard-help{margin:12px 0;line-height:var(--lt-line-body);overflow-wrap:anywhere}
#lt-course-ux{padding:12px 16px;background:var(--lt-color-panel);border:1px solid var(--lt-color-border);border-radius:var(--lt-radius-control)}
#lt-course-ux strong{font-weight:var(--lt-weight-semibold)}
#lt-course-ux p{margin:4px 0 0;color:var(--lt-color-text-secondary)}
#lt-course-ux[data-state=error] strong{color:var(--lt-color-error)}
#lt-course-empty,#lt-course-guard-help{font-size:var(--lt-font-caption);color:var(--lt-color-text-secondary)}
#lt-course-empty{padding:0 20px 16px;margin:0}
#lt-course-guard-help{margin:12px 0 0}
#lt-course-ux[hidden],#lt-course-empty[hidden]{display:none}
`;
doc.head.append(style);
const overview = doc.getElementById("courseOverviewCard");
if (!overview) return;
const box = doc.createElement("section");
box.id = "lt-course-ux";
box.className = "lt-ui";
box.setAttribute("aria-live", "polite");
const title = doc.createElement("strong"), next = doc.createElement("p");
const dot = doc.createElement("span");
dot.className = "lt-pill-dot";
dot.setAttribute("aria-hidden", "true");
const check = doc.createElementNS("http://www.w3.org/2000/svg", "svg");
check.setAttribute("viewBox", "0 0 14 14");
check.setAttribute("class", "lt-pill-check");
check.setAttribute("aria-hidden", "true");
const tick = doc.createElementNS("http://www.w3.org/2000/svg", "path");
for (const [name, value] of Object.entries({ d: "M2.5 7.5l3 3 6-7", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" })) tick.setAttribute(name, value);
check.append(tick);
box.append(dot, check, title, next);
doc.querySelector(".lt-course-header").append(box);
const jobs = doc.getElementById("joblist");
const empty = doc.createElement("p");
empty.id = "lt-course-empty";
empty.className = "lt-ui";
jobs == null ? void 0 : jobs.after(empty);
const guard = doc.getElementById("backGround");
const help = doc.createElement("p");
help.id = "lt-course-guard-help";
help.className = "lt-ui";
help.textContent = "\u540E\u53F0\u6302\u673A\u53EA\u8F85\u52A9\u540E\u53F0\u4FDD\u6D3B\uFF0C\u4E0D\u662F\u8BFE\u7A0B\u5B66\u4E60\u7684\u5F00\u59CB\u6216\u505C\u6B62\u5F00\u5173\u3002\u540E\u53F0\u8FD0\u884C\u4ECD\u53EF\u80FD\u53D7\u6D4F\u89C8\u5668\u9650\u5236\uFF0C\u4E0D\u5EFA\u8BAE\u957F\u65F6\u95F4\u6700\u5C0F\u5316\u3002";
const guardDetails = doc.createElement("details");
guardDetails.className = "lt-v3-guard-help";
const guardSummary = doc.createElement("summary");
guardSummary.textContent = "\u4FDD\u6D3B\u8BF4\u660E";
guardDetails.append(guardSummary, help);
guard == null ? void 0 : guard.parentElement.append(guardDetails);
const taskCards = doc.createElement("div");
taskCards.className = "lt-v3-task-cards";
const taskViews = /* @__PURE__ */ new Map();
for (const [type2, label] of [["video", "\u89C6\u9891\u5B66\u4E60"], ["work", "\u7AE0\u8282\u6D4B\u9A8C"], ["document", "\u8BFE\u4EF6\u9605\u8BFB"]]) {
const card = doc.createElement("div");
card.className = "lt-v3-task-card";
const labelNode = doc.createElement("strong");
labelNode.textContent = label;
const status = doc.createElement("span");
const bar = doc.createElement("span");
bar.className = "lt-v31-task-bar";
bar.hidden = true;
bar.setAttribute("aria-hidden", "true");
bar.append(doc.createElement("i"));
card.append(labelNode, status, bar);
taskCards.append(card);
taskViews.set(type2, { card, status, bar });
}
jobs == null ? void 0 : jobs.before(taskCards);
const estimate = overview.querySelector(".lt-course-estimate");
const estimateValue = doc.getElementById("overviewEstimateTime");
let lastState = null, lastTitle = null, cardsShown = null;
const logTitle = (_b = (_a = doc.getElementById("clearLogBtn")) == null ? void 0 : _a.parentElement.firstElementChild) == null ? void 0 : _b.lastElementChild;
if (logTitle) logTitle.textContent = "\u8BFE\u7A0B\u8BB0\u5F55\uFF08\u542B AI \u540C\u6B65\u6D88\u606F\uFF09";
const setText = (node, text) => {
if (node.textContent !== text) node.textContent = text;
};
const sync = () => {
var _a2;
let input;
try {
input = read();
} catch (e) {
input = { readError: true };
}
const state = courseUxState(input);
const root = doc.getElementById("lt-course-ui");
if (root) root.dataset.courseState = state.state;
box.dataset.state = state.state;
const chapters = input.chapters || [];
const completed = chapters.filter((item) => item.isCompleted === true).length;
const pillText = state.state === "done" && chapters.length ? `\u8BFE\u7A0B\u5DF2\u5B8C\u6210 ${completed}/${chapters.length}` : `\u8BFE\u7A0B\u72B6\u6001\uFF1A${state.title}`;
if (title.textContent !== pillText && lastTitle !== null) replayClass(title, "is-swapping", 450);
setText(title, pillText);
lastTitle = pillText;
setText(next, `\u4E0B\u4E00\u6B65\uFF1A${state.next}`);
next.hidden = state.state !== "error";
if (lastState !== null && lastState !== "done" && state.state === "done") celebrateCourse(doc);
lastState = state.state;
let detected = 0;
for (const [type2, view] of taskViews) {
const tasks = (input.missions || []).filter((item) => item.type === type2);
detected += tasks.length;
const phase = tasks.some((item) => item.failed) ? "error" : tasks.some((item) => item.running && !item.done) ? "running" : tasks.length && tasks.every((item) => item.done) ? "done" : "waiting";
view.card.dataset.state = phase;
setText(view.status, tasks.length ? phase === "done" ? `\u672C\u8282\u5DF2\u5B8C\u6210 ${tasks.length} \u9879` : phase === "error" ? "\u672A\u786E\u8BA4\u5B8C\u6210\uFF0C\u8BF7\u67E5\u770B\u8BB0\u5F55" : phase === "running" ? "\u6B63\u5728\u5904\u7406" : `\u7B49\u5F85\u5904\u7406 \xB7 ${tasks.length} \u9879` : input.tasksReady ? "\u672C\u8282\u672A\u68C0\u6D4B\u5230\u6B64\u7C7B\u4EFB\u52A1" : "\u7B49\u5F85\u8BFB\u53D6\u4EFB\u52A1");
const shares = tasks.map((item) => item.done ? 1 : Number(item.progress)).filter(Number.isFinite);
const share = shares.length === tasks.length && tasks.length ? shares.reduce((sum, value) => sum + Math.min(1, Math.max(0, value)), 0) / tasks.length : NaN;
view.bar.hidden = !Number.isFinite(share);
if (Number.isFinite(share)) view.bar.style.setProperty("--lt-task-progress", `${Math.round(share * 100)}%`);
}
const none = Boolean(input.tasksReady) && detected === 0 && !(input.taskCount > 0);
if (cardsShown !== !none) {
taskCards.hidden = none;
if (!none && cardsShown === false) replayClass(taskCards, "is-entering", 700);
cardsShown = !none;
}
empty.dataset.variant = none ? "none" : "status";
empty.hidden = Boolean(jobs == null ? void 0 : jobs.children.length);
setText(empty, none ? "\u672C\u8282\u6CA1\u6709\u89C6\u9891\u3001\u6D4B\u9A8C\u6216\u6587\u6863\u4EFB\u52A1\u3002" : input.taskCount > 0 ? "\u6B63\u5728\u663E\u793A\u5DF2\u68C0\u6D4B\u5230\u7684\u4EFB\u52A1\uFF0C\u8BF7\u7B49\u5F85\u4EFB\u52A1\u5217\u8868\u66F4\u65B0\u3002" : "\u6B63\u5728\u8BFB\u53D6\u672C\u8282\u4EFB\u52A1\uFF1B\u672A\u8BFB\u53D6\u5230\u4EFB\u52A1\u4E0D\u4EE3\u8868\u5DF2\u5B8C\u6210\u3002");
if (estimate) estimate.dataset.empty = String(!/\d/.test((estimateValue == null ? void 0 : estimateValue.textContent) || ""));
const rawPercent = (_a2 = doc.getElementById("overviewProgressFill")) == null ? void 0 : _a2.getAttribute("data-lt-progress");
const percent = rawPercent === null || rawPercent === void 0 ? null : Number(rawPercent);
const snapshot = JSON.stringify({
...state,
guard: guard.classList.contains("btn-success"),
percent: Number.isInteger(percent) && percent >= 0 && percent <= 100 ? percent : null
});
if (doc.documentElement.dataset.dripUxCourse !== snapshot) doc.documentElement.dataset.dripUxCourse = snapshot;
};
sync();
const guardObserver = new MutationObserver(sync);
guardObserver.observe(guard, { attributes: true, attributeFilter: ["class"] });
const timer = doc.defaultView.setInterval(sync, 1e3);
doc.defaultView.addEventListener("pagehide", () => {
doc.defaultView.clearInterval(timer);
guardObserver.disconnect();
}, { once: true });
}
return __toCommonJS(course_ux_exports);
})();
if (window.__dripLegacyEngineStarted) return;
window.__dripLegacyEngineStarted = true;
var jumpType = 1, disableMonitor = 0, randomDo = 1;
var imgEs, vrefer, strEc;
var rate = GM_getValue("courseRate", "2"), token = GM_getValue("tikutoken", "111"), accuracy = GM_getValue("accuracy", 60), ctUrl = "https://cx.icodef.com/wyn-nb?v=4", getQueryVariable = (variable) => {
let q = _l.search.substring(1), v = q.split("&"), r = false;
for (let i = 0, l = v.length; i < l; i++) {
let p = v[i].split("=");
p[0] == variable && (r = p[1]);
}
return r;
}, getCookie = (name) => `; ${document.cookie}`.split(`; ${name}=`).pop().split(";").shift(), isCat = GM_info.scriptHandler == "ScriptCat", _w = unsafeWindow, _d = _w.document, _l = _w.location, _p = _l.protocol, _h = _l.host, isFf = _w.navigator.userAgent.includes("Firefox"), isMobile = _w.navigator.userAgent.includes("Android"), stop = false, handleImgs = (s) => {
imgEs = s.match(/(
]*)>)/);
if (imgEs) {
for (let j = 0, k = imgEs.length; j < k; j++) {
let urls = imgEs[j].match(
/http[s]?:\/\/(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+/
), url;
if (urls) {
url = urls[0].replace(/http[s]?:\/\//, "");
s = s.replaceAll(imgEs[j], url);
}
}
}
return s;
}, trim = (s) => {
return handleImgs(s).replaceAll("javascript:void(0);", "").replaceAll(" ", "").replaceAll("\uFF0C", ",").replaceAll(
"\u3002",
"."
).replaceAll("\uFF1A", ":").replaceAll(
"\uFF1B",
";"
).replaceAll("\uFF1F", "?").replaceAll("\uFF08", "(").replaceAll("\uFF09", ")").replaceAll("\u201C", '"').replaceAll("\u201D", '"').replaceAll("\uFF01", "!").replaceAll("-", " ").replace(/(<([^>]+)>)/ig, "").replace(/^\s+/ig, "").replace(/\s+$/ig, "");
}, cVersion = 999, classId = getQueryVariable("clazzid") || getQueryVariable("clazzId") || getQueryVariable("classid") || getQueryVariable("classId"), courseId = getQueryVariable("courseid") || getQueryVariable("courseId"), UID = getCookie("_uid") || getCookie("UID"), FID = getCookie("fid"), jq = (() => {
try {
return _w.top.$ || _w.top.jQuery;
} catch (e) {
return _w.$ || _w.jQuery;
}
})();
if (/\/knowledge\/cards|\/mycourse\/studentstudy|\/work\/|\/api\/work|doHomeWork/i.test(_l.pathname)) {
_w.confirm = (msg) => {
return true;
};
setInterval(function() {
_w.confirm = (msg) => {
return true;
};
}, 2e3);
}
function syncLegacySettings() {
var _a;
rate = parseFloat(GM_getValue("courseRate", "2"));
token = GM_getValue("tikutoken", "111");
accuracy = GM_getValue("accuracy", 60);
for (const [key, property, fallback, buttonId] of [
["courseReview", "dripReviewMode", "0", "reviewModeButton"],
["courseDoWork", "dripDoWork", "1", "autoDoWorkButton"],
["courseAutoSubmit", "dripAutoSubmit", "1", "autoSubmitButton"],
["courseAutoSave", "dripAutoSave", "0", "autoSaveButton"]
]) {
const value = GM_getValue(key, fallback) || fallback;
try {
_w.top[property] = value;
} catch (e) {
}
const button = _d.getElementById(buttonId);
if (button) button.setAttribute("class", value == "1" ? "btn btn-success" : "btn btn-default");
}
for (const [id, value] of [["dripRate", rate], ["accuracy", accuracy]]) {
const input = _d.getElementById(id);
if (input && _d.activeElement !== input) input.value = value;
}
_d.querySelectorAll(".speed-pill").forEach((pill) => {
pill.classList.toggle("active", parseFloat(pill.getAttribute("data-speed")) === rate);
});
(_a = _d.dispatchEvent) == null ? void 0 : _a.call(_d, new Event("drip-speed-sync"));
}
syncLegacySettings();
window.addEventListener("drip-legacy-settings-changed", syncLegacySettings);
window.addEventListener("message", (msg) => {
try {
if (msg.data && msg.data.type === "drip-switch-next-tab") {
if (typeof switchNextTabInChapter === "function") switchNextTabInChapter();
}
if (msg.data && msg.data.type === "drip-trigger-chapter-jump") {
if (typeof executeChapterJump === "function") executeChapterJump();
}
} catch (e) {
}
});
function readCourseHomeTasks(doc, pageHref) {
const page = new URL(pageHref);
const param2 = (url, name) => {
var _a;
return (_a = [...url.searchParams].find(([key]) => key.toLowerCase() === name)) == null ? void 0 : _a[1];
};
const course = param2(page, "courseid"), clazz = param2(page, "clazzid");
if (!course || !clazz) return [];
return Array.from(doc.querySelectorAll("h3 a[href]")).flatMap((link) => {
try {
const url = new URL(link.getAttribute("href"), page);
const row = link.closest("h3");
const badge = row == null ? void 0 : row.querySelector(".icon .orange");
if (url.origin !== page.origin || !/\/mycourse\/studentstudy$/.test(url.pathname) || param2(url, "courseid") !== course || param2(url, "clazzid") !== clazz || !/^\d+$/.test(param2(url, "chapterid") || "") || link.getAttribute("aria-disabled") === "true" || row.querySelector(".closedlock, .lock, .blank, .noJob, .openlock") || !badge || !/^\d+$/.test(badge.textContent.trim()) || Number(badge.textContent) <= 0) return [];
return [{ href: url.href, title: (link.getAttribute("aria-label") || link.textContent).trim() }];
} catch (e) {
return [];
}
});
}
class CourseHomeTakeover {
constructor(doc, win) {
this.doc = doc;
this.win = win;
this.timer = null;
const params = new URL(win.location.href).searchParams;
this.pauseKey = "drip7boi.homePaused:" + (params.get("courseId") || params.get("courseid") || "") + ":" + (params.get("clazzid") || params.get("clazzId") || "");
win.addEventListener("drip-course-home-control", () => {
const action = doc.documentElement.dataset.dripCourseHomeAction;
if (action === "stop") this.stop();
if (action === "start") this.start(true);
});
win.addEventListener("pagehide", () => this.clear());
}
clear() {
this.win.clearTimeout(this.timer);
this.timer = null;
}
publish(state, message) {
this.doc.documentElement.dataset.dripCourseHomeState = state;
this.doc.documentElement.dataset.dripCourseHomeMessage = message;
this.win.dispatchEvent(new this.win.CustomEvent("drip-course-home-status"));
}
stop() {
this.clear();
try {
this.win.sessionStorage.setItem(this.pauseKey, "true");
} catch (e) {
}
this.publish("paused", "\u9996\u9875\u63A5\u7BA1\u5DF2\u505C\u6B62\uFF0C\u53EF\u70B9\u51FB\u5F00\u59CB\u5B66\u4E60\u7EE7\u7EED");
}
start(manual = false) {
this.clear();
if (this.win.top !== this.win || !/\/mycourse\/studentcourse$/.test(this.win.location.pathname)) return;
try {
if (!manual && this.win.sessionStorage.getItem(this.pauseKey) === "true") {
this.publish("paused", "\u9996\u9875\u63A5\u7BA1\u5DF2\u505C\u6B62\uFF0C\u53EF\u70B9\u51FB\u5F00\u59CB\u5B66\u4E60\u7EE7\u7EED");
return;
}
this.win.sessionStorage.removeItem(this.pauseKey);
} catch (e) {
}
this.deadline = Date.now() + 15e3;
this.previous = null;
this.publish("running", "\u6B63\u5728\u8BC6\u522B\u8BFE\u7A0B\u76EE\u5F55\u4E2D\u7684\u672A\u5B8C\u6210\u4EFB\u52A1");
this.timer = this.win.setTimeout(() => this.scan(), 500);
}
scan() {
const tasks = readCourseHomeTasks(this.doc, this.win.location.href);
const signature = tasks.map((task) => task.href).join("\n");
if (tasks.length && signature === this.previous) {
const task = tasks[0];
this.publish("running", "\u6B63\u5728\u51C6\u5907\u8FDB\u5165\uFF1A" + task.title);
this.timer = this.win.setTimeout(() => {
const current = readCourseHomeTasks(this.doc, this.win.location.href)[0];
if ((current == null ? void 0 : current.href) !== task.href) {
this.previous = null;
this.scan();
return;
}
this.clear();
try {
this.win.location.assign(current.href);
} catch (e) {
this.publish("paused", "\u7AE0\u8282\u8FDB\u5165\u5931\u8D25\uFF0C\u53EF\u70B9\u51FB\u5F00\u59CB\u5B66\u4E60\u91CD\u8BD5");
}
}, 2200);
return;
}
this.previous = signature;
if (Date.now() >= this.deadline) {
this.clear();
this.publish("idle", "\u672A\u627E\u5230\u53EF\u81EA\u52A8\u8FDB\u5165\u7684\u672A\u5B8C\u6210\u4EFB\u52A1\uFF0C\u8BF7\u68C0\u67E5\u8BFE\u7A0B\u76EE\u5F55");
return;
}
this.timer = this.win.setTimeout(() => this.scan(), 500);
}
}
function getAccessibleDocs() {
const docs = [];
try {
if (typeof document !== "undefined" && document) docs.push(document);
} catch (e) {
}
try {
if (typeof _d !== "undefined" && _d && !docs.includes(_d)) docs.push(_d);
} catch (e) {
}
try {
if (typeof window !== "undefined" && window.parent && window.parent.document && !docs.includes(window.parent.document)) docs.push(window.parent.document);
} catch (e) {
}
try {
if (typeof window !== "undefined" && window.top && window.top.document && !docs.includes(window.top.document)) docs.push(window.top.document);
} catch (e) {
}
return docs;
}
function appendJobRow(doc, text) {
const list = doc && doc.getElementById("joblist");
if (!list) return;
const panel = doc.createElement("div");
panel.className = "panel panel-default";
const body = doc.createElement("div");
body.className = "panel-body";
body.textContent = String(text);
panel.appendChild(body);
list.appendChild(panel);
}
function safeLog(str, color = "black") {
try {
if (typeof logs !== "undefined" && logs && typeof logs.addLog === "function") {
logs.addLog(str, color);
return;
}
} catch (e) {
}
try {
const topDoc = typeof _w !== "undefined" && _w.top && _w.top.document || typeof document !== "undefined" && document;
const cardIframe = topDoc.querySelector("iframe#iframe, iframe[name='iframe']");
const cardWin = cardIframe && cardIframe.contentWindow;
if (cardWin && cardWin.logs && typeof cardWin.logs.addLog === "function") {
cardWin.logs.addLog(str, color);
return;
}
} catch (e) {
}
console.log("[drip7boi] " + str);
}
function hasQuestionsOnPage() {
try {
const docs = getAccessibleDocs();
const all = [];
const collect = (d) => {
if (!d || all.includes(d)) return;
all.push(d);
try {
const iframes = Array.from(d.querySelectorAll("iframe, frame"));
for (const f of iframes) {
try {
if (f.contentDocument) collect(f.contentDocument);
} catch (e) {
}
}
} catch (e) {
}
};
docs.forEach(collect);
for (const doc of all) {
try {
if (doc.querySelector(".mark_table .questionLi, .questionLi, .zquestions .Py-mian1, .TiMu, .stem_answer, .Zy_TItle, [id^='question']")) {
return true;
}
} catch (e) {
}
}
} catch (e) {
}
return false;
}
function getCatalogNodes(doc) {
var _a;
const targetDoc = doc || _w.top && _w.top.document || _w.parent && _w.parent.document || _d;
if (!targetDoc) return [];
let rawList = Array.from(targetDoc.querySelectorAll([
"h4[id^='cur']",
"h5[id^='cur']",
"div[id^='cur']",
"li[id^='cur']",
"[id^='cur']",
"[onclick*='getTeacherAjax']",
"a[href*='getTeacherAjax']",
".posCatalog_select",
"#coursetree li",
".posCatalog li",
".chapter li",
".cells",
".leveltwo"
].join(",")));
const seen = /* @__PURE__ */ new Set();
const nodes = [];
for (const el of rawList) {
if (el.id === "coursetree" || ((_a = el.classList) == null ? void 0 : _a.contains("posCatalog")) || el.tagName === "BODY" || el.tagName === "HTML") continue;
let item = el.closest("[id^='cur']") || el.closest("h4, h5, li, .posCatalog_select, .cells") || el;
if (!seen.has(item)) {
seen.add(item);
nodes.push(item);
}
}
if (nodes.length === 0) {
const spans = Array.from(targetDoc.querySelectorAll("span[style*='cursor:pointer'], span[style*='18px']"));
for (const s of spans) {
const p = s.closest("[id^='cur']") || s.parentNode;
if (p && !seen.has(p)) {
seen.add(p);
nodes.push(p);
}
}
}
return nodes;
}
function parseChapterNode(node) {
var _a, _b, _c, _d2, _e, _f, _g;
if (!node) return null;
const html = node.innerHTML || "";
const text = (node.textContent || "").trim();
const isCompleted = /roundpoint\s+blue/i.test(html) || /roundpoint.*blue/i.test(html) || html.includes("icon_Completed") || html.includes("catalog_points_done") || html.includes("catalog_points_finished") || /roundpointStudent\s+finished/i.test(html) || /已完成/.test(text) && !/待完成/.test(text);
const isLocked = /roundpointStudent\s+lock/i.test(html) || /class="[^"]*lock[^"]*"/i.test(html) || text.includes("\u672A\u5F00\u653E");
let badgeCount = 0;
const orangeMatch = html.match(/class="[^"]*(?:orange|f_orange|catalog_points_yi)[^"]*"[^>]*>(\d+)]*>(\d+)\s*([1-9]\d*)\s*<\/em>/i) || html.match(/>\s*([1-9]\d*)\s*<\/span>/i) || html.match(/\(([1-9]\d*)\)/);
if (orangeMatch) {
badgeCount = parseInt(orangeMatch[1], 10) || 1;
} else if (/orange|f_orange|catalog_points_yi|prevTips/i.test(html)) {
if (!isCompleted && !isLocked) badgeCount = 1;
}
let isActive = ((_a = node.classList) == null ? void 0 : _a.contains("posCatalog_active")) || ((_b = node.classList) == null ? void 0 : _b.contains("currents")) || ((_c = node.classList) == null ? void 0 : _c.contains("active")) || Boolean(node.querySelector && node.querySelector(".posCatalog_active, .currents, .active"));
try {
const curCid = getQueryVariable("chapterId") || getQueryVariable("knowledgeId") || _w.top && (((_e = (_d2 = _w.top).getQueryVariable) == null ? void 0 : _e.call(_d2, "chapterId")) || ((_g = (_f = _w.top).getQueryVariable) == null ? void 0 : _g.call(_f, "knowledgeId")));
if (curCid && (node.id === "cur" + curCid || node.id && node.id.includes(curCid) || (node.outerHTML || "").includes(curCid))) {
isActive = true;
}
} catch (e) {
}
let cid = null;
if (node.id && node.id.includes("cur")) {
const m = node.id.match(/cur(\d+)/);
if (m) cid = m[1];
}
const fullHtml = (node.outerHTML || "") + " " + (node.getAttribute("onclick") || "") + " " + (node.getAttribute("href") || "");
const ajaxMatch = fullHtml.match(/getTeacherAjax\s*\(\s*['"]?(\d+)['"]?\s*,\s*['"]?(\d+)['"]?\s*,\s*['"]?(\d+)['"]?/);
const targetCourseId = ajaxMatch && ajaxMatch[1] || (typeof courseId !== "undefined" ? courseId : "");
const targetClassId = ajaxMatch && ajaxMatch[2] || (typeof classId !== "undefined" ? classId : "");
if (!cid && ajaxMatch && ajaxMatch[3]) cid = ajaxMatch[3];
let title = text.replace(/\s+/g, " ");
if (title.length > 35) title = title.slice(0, 35) + "...";
const isNavigable = Boolean(cid || ajaxMatch || node.querySelector && node.querySelector("a[href*='getTeacherAjax'], a[onclick*='getTeacherAjax'], a[onclick*='toOld'], a[href*='knowledgeId'], a[href*='chapterId'], .posCatalog_name, span.name"));
return {
node,
cid,
targetCourseId,
targetClassId,
title,
isCompleted,
isLocked,
badgeCount,
isActive,
isNavigable,
hasPending: !isCompleted && !isLocked && (badgeCount > 0 || !isCompleted)
};
}
function isTaskChapter(node, item) {
if (!node || !item) return false;
if (node.querySelector && node.querySelector("h4[id^='cur'], h5[id^='cur'], [id^='cur']")) return false;
if (node.querySelector && node.querySelector(".roundpointStudent.noJob")) return false;
if (item.isCompleted || item.badgeCount > 0) return true;
const html = node.innerHTML || "";
const text = (node.textContent || "").trim();
if (node.querySelector && node.querySelector(".leveltwo, .levelthree, ul.chapter, ul.cells, li.cells, h5")) {
return false;
}
if (/^\s*第[0-9一二三四五六七八九十]+[章节部卷篇]/i.test(text) && !/roundpoint|catalog_points|icon_Completed|roundpointStudent/i.test(html)) {
return false;
}
if (/roundpoint|catalog_points|icon_Completed|roundpointStudent|prevTips/i.test(html)) {
return true;
}
if (!item.cid && !/getTeacherAjax/i.test(html)) {
return false;
}
return false;
}
function isCandidateUncompleted(item) {
if (!item || item.isLocked || !item.isNavigable) return false;
if (!isTaskChapter(item.node, item)) return false;
if (_w.top && _w.top.dripReviewMode == "1") return true;
if (item.badgeCount > 0) return true;
if (!item.isCompleted) return true;
return false;
}
function getCourseContext() {
const docs = getAccessibleDocs();
let cId = "", clId = "";
for (const d of docs) {
if (!cId) {
const el = d.querySelector("#courseId, input[name='courseId']");
if (el && el.value) cId = el.value;
}
if (!clId) {
const el = d.querySelector("#clazzId, #classId, input[name='clazzId'], input[name='classId']");
if (el && el.value) clId = el.value;
}
}
return { courseId: cId, classId: clId };
}
function jumpToChapterNode(item) {
var _a, _b, _c, _d2, _e, _f, _g, _h2;
if (!item || !item.node) return false;
try {
const topWin = _w.top && _w.top.window || _w.parent && _w.parent.window || _w;
const ctx = getCourseContext();
const targetCourse = item.targetCourseId || topWin && topWin.courseId || typeof courseId !== "undefined" && courseId || ctx.courseId || getQueryVariable("courseid") || getQueryVariable("courseId") || _w.top && (((_b = (_a = _w.top).getQueryVariable) == null ? void 0 : _b.call(_a, "courseid")) || ((_d2 = (_c = _w.top).getQueryVariable) == null ? void 0 : _d2.call(_c, "courseId"))) || "";
const targetClass = item.targetClassId || topWin && (topWin.clazzId || topWin.classId) || typeof classId !== "undefined" && classId || ctx.classId || getQueryVariable("clazzid") || getQueryVariable("clazzId") || getQueryVariable("classid") || _w.top && (((_f = (_e = _w.top).getQueryVariable) == null ? void 0 : _f.call(_e, "clazzid")) || ((_h2 = (_g = _w.top).getQueryVariable) == null ? void 0 : _h2.call(_g, "clazzId"))) || "";
if (item.cid && typeof topWin.getTeacherAjax === "function" && targetCourse && targetClass) {
safeLog("\u6B63\u5728\u901A\u8FC7\u5B66\u4E60\u901A\u539F\u751F\u901A\u9053\u8DF3\u8F6C\u81F3\u3010" + (item.title || "\u7AE0\u8282 " + item.cid) + "\u3011...", "cyan");
try {
topWin.getTeacherAjax(String(targetCourse), String(targetClass), String(item.cid));
} catch (err) {
console.warn("topWin.getTeacherAjax error:", err);
}
}
const clickable = item.node.querySelector("a, [onclick], .posCatalog_name, .name, span") || item.node;
safeLog("\u6B63\u5728\u70B9\u51FB\u7AE0\u8282\u3010" + (item.title || "\u5F85\u5B8C\u6210\u7AE0\u8282") + "\u3011\u8FDB\u884C\u8DF3\u8F6C...", "cyan");
try {
clickable.dispatchEvent(new MouseEvent("click", { bubbles: true, cancelable: true }));
} catch (e) {
}
try {
clickable.click();
} catch (e) {
}
try {
item.node.click();
} catch (e) {
}
setTimeout(() => {
var _a2, _b2, _c2, _d3;
try {
const curCid = getQueryVariable("chapterId") || getQueryVariable("knowledgeId") || _w.top && (((_b2 = (_a2 = _w.top).getQueryVariable) == null ? void 0 : _b2.call(_a2, "chapterId")) || ((_d3 = (_c2 = _w.top).getQueryVariable) == null ? void 0 : _d3.call(_c2, "knowledgeId")));
if (item.cid && curCid && curCid != item.cid) {
const topDoc = _w.top && _w.top.document || _w.parent && _w.parent.document || _d;
const stillActive = topDoc.querySelector(".posCatalog_active#cur" + curCid + ", #cur" + curCid + ".posCatalog_active");
if (stillActive) {
safeLog("\u68C0\u6D4B\u5230\u7AE0\u8282\u672A\u81EA\u52A8\u5237\u65B0\uFF0C\u6B63\u5728\u5F3A\u5236\u5237\u65B0\u52A0\u8F7D\u76EE\u6807\u7AE0\u8282...", "orange");
const currentHref = topWin.location.href;
const newHref = currentHref.replace(/(chapterId=)[^&]+/, "$1" + item.cid).replace(/(knowledgeId=)[^&]+/, "$1" + item.cid);
if (newHref !== currentHref) {
topWin.location.href = newHref;
}
}
}
} catch (e) {
}
}, 4500);
return true;
} catch (e) {
console.error("jumpToChapterNode error:", e);
try {
item.node.click();
return true;
} catch (err) {
}
}
return false;
}
var chapterJumpLock = false;
function deferredChapters(chapterId2, failures, completedIds = []) {
var _a, _b;
try {
const topWin = _w.top || _w;
const url = new URL(topWin.location.href);
const key = "drip-deferred:" + (url.searchParams.get("courseId") || url.searchParams.get("courseid") || "") + ":" + (url.searchParams.get("clazzid") || url.searchParams.get("clazzId") || "");
const records = JSON.parse(topWin.sessionStorage.getItem(key) || "{}");
for (const id of completedIds) delete records[String(id)];
if (chapterId2 && failures) {
const previousRetries = ((_b = (_a = records[String(chapterId2)]) == null ? void 0 : _a[0]) == null ? void 0 : _b.retryCount) || 0;
records[String(chapterId2)] = failures.map((task) => ({ name: task.name || task.jobid, reason: task.failedReason || task.reason || "\u4EFB\u52A1\u672A\u5B8C\u6210", retryCount: Math.max(previousRetries, task.retryCount || 0) }));
}
if (chapterId2 && failures || completedIds.length) {
topWin.sessionStorage.setItem(key, JSON.stringify(records));
}
return records;
} catch (e) {
return null;
}
}
function deferFailedTasks(failures) {
const id = getQueryVariable("knowledgeid") || getQueryVariable("knowledgeId") || getQueryVariable("chapterId") || String(typeof chapterId !== "undefined" ? chapterId : "");
if (!id || !deferredChapters(id, failures)) {
logs.addLog("\u65E0\u6CD5\u4FDD\u5B58\u5F02\u5E38\u4EFB\u52A1\u8BB0\u5F55\uFF0C\u6682\u505C\u4EE5\u907F\u514D\u91CD\u590D\u8DF3\u8F6C", "red");
return;
}
logs.addLog("\u5DF2\u6682\u7F13 " + failures.length + " \u4E2A\u5F02\u5E38\u4EFB\u52A1\uFF08\u4ECD\u672A\u5B8C\u6210\uFF09\uFF0C\u5148\u7EE7\u7EED\u5176\u4ED6\u4EFB\u52A1\uFF0C\u672B\u5C3E\u56DE\u626B\u4E00\u6B21\uFF1B\u518D\u6B21\u5931\u8D25\u5219\u4FDD\u7559\u539F\u56E0\u4F9B\u68C0\u67E5", "orange");
if (!switchNextTabInChapter()) triggerNextChapter("\u5F02\u5E38\u4EFB\u52A1\u5DF2\u8BB0\u5F55\uFF0C\u7EE7\u7EED\u5904\u7406\u5176\u4ED6\u7AE0\u8282");
}
function executeChapterJump() {
if (chapterJumpLock) return;
chapterJumpLock = true;
setTimeout(() => {
chapterJumpLock = false;
}, 4e3);
safeLog("\u6B63\u5728\u68C0\u67E5\u5168\u8BFE\u5F85\u5B8C\u6210\u4EFB\u52A1\u5E76\u89C4\u5212\u8DF3\u8F6C\u8DEF\u5F84...", "cyan");
try {
const topWin = _w.top && _w.top.window || _w.parent && _w.parent.window || _w;
if (typeof topWin.onReadComplete1 === "function") {
topWin.onReadComplete1();
}
} catch (e) {
console.warn("onReadComplete1 caught:", e);
}
setTimeout(() => {
var _a, _b, _c, _d2;
try {
const docs = getAccessibleDocs();
let catalogElements = [];
for (const d of docs) {
const nodes = getCatalogNodes(d);
if (nodes && nodes.length > 0) {
catalogElements = nodes;
break;
}
}
if (catalogElements.length > 0) {
const parsedList = catalogElements.map(parseChapterNode).filter((item) => item && isTaskChapter(item.node, item));
const deferred = deferredChapters(null, null, parsedList.filter((item) => item.isCompleted && !item.badgeCount).map((item) => item.cid)) || {};
let activeIdx = parsedList.findIndex((item) => item.isActive);
if (activeIdx < 0) {
const curCid = getQueryVariable("chapterId") || getQueryVariable("knowledgeId") || _w.top && (((_b = (_a = _w.top).getQueryVariable) == null ? void 0 : _b.call(_a, "chapterId")) || ((_d2 = (_c = _w.top).getQueryVariable) == null ? void 0 : _d2.call(_c, "knowledgeId")));
if (curCid) {
activeIdx = parsedList.findIndex((item) => item.cid == curCid || item.node && (item.node.id || "").includes(curCid));
}
}
let targetChapter = null;
const startIdx = activeIdx >= 0 ? activeIdx + 1 : 0;
for (let i = startIdx; i < parsedList.length; i++) {
let item = parsedList[i];
if (!deferred[String(item.cid)] && isCandidateUncompleted(item)) {
targetChapter = item;
break;
}
}
if (!targetChapter && activeIdx > 0) {
for (let i = 0; i < activeIdx; i++) {
let item = parsedList[i];
if (item && !deferred[String(item.cid)] && !item.isLocked && item.isNavigable && item.badgeCount > 0) {
targetChapter = item;
safeLog("\u540E\u65B9\u7AE0\u8282\u5DF2\u65E0\u5F85\u529E\u4EFB\u52A1\uFF0C\u68C0\u6D4B\u5230\u524D\u534A\u90E8\u5206\u7AE0\u8282\u3010" + item.title + "\u3011\u4ECD\u6709\u9057\u7559\u4EFB\u52A1\u70B9\uFF08" + item.badgeCount + "\u4E2A\uFF09\uFF0C\u6B63\u5728\u81EA\u52A8\u8FD4\u56DE\u8865\u5237\uFF01", "orange");
break;
}
}
if (!targetChapter) {
for (let i = 0; i < activeIdx; i++) {
let item = parsedList[i];
if (!deferred[String(item.cid)] && isCandidateUncompleted(item)) {
targetChapter = item;
safeLog("\u540E\u65B9\u7AE0\u8282\u5DF2\u65E0\u5F85\u529E\u4EFB\u52A1\uFF0C\u68C0\u6D4B\u5230\u524D\u534A\u90E8\u5206\u7AE0\u8282\u3010" + item.title + "\u3011\u672A\u5B8C\u6210\uFF0C\u6B63\u5728\u81EA\u52A8\u8FD4\u56DE\u8865\u5237\uFF01", "orange");
break;
}
}
}
}
if (targetChapter) {
if (typeof updateCourseOverview === "function") updateCourseOverview();
jumpToChapterNode(targetChapter);
return;
}
if (Object.keys(deferred).length) {
const retry = parsedList.find((item) => deferred[String(item.cid)] && isCandidateUncompleted(item) && !deferred[String(item.cid)].some((task) => task.retryCount >= 1 || /平台限制|平台停止/.test(task.reason || "")));
if (retry) {
const saved = deferredChapters(retry.cid, deferred[String(retry.cid)].map((task) => ({ ...task, retryCount: 1 })));
if (!saved) {
safeLog("\u65E0\u6CD5\u4FDD\u5B58\u56DE\u626B\u6B21\u6570\uFF0C\u6682\u505C\u4EE5\u907F\u514D\u5FAA\u73AF\u91CD\u8BD5", "red");
return;
}
safeLog("\u6B63\u5728\u56DE\u626B\u6682\u7F13\u7AE0\u8282\u3010" + retry.title + "\u3011\uFF08\u6700\u591A\u81EA\u52A8\u91CD\u8BD5\u4E00\u6B21\uFF0C\u4ECD\u4EE5\u5E73\u53F0\u786E\u8BA4\u4E3A\u51C6\uFF09", "orange");
jumpToChapterNode(retry);
return;
}
safeLog("\u672C\u8F6E\u53EF\u7EE7\u7EED\u7684\u7AE0\u8282\u5DF2\u5904\u7406\u5B8C\u6BD5\uFF1B\u6682\u7F13\u8BB0\u5F55\uFF1A" + Object.values(deferred).flat().map((task) => task.name + "\uFF08" + task.reason + "\uFF09").join("\uFF1B") + "\u3002\u8BF7\u4ECE\u76EE\u5F55\u8FD4\u56DE\u68C0\u67E5\uFF0C\u672A\u8BA1\u4E3A\u5B8C\u6210\u3002", "orange");
return;
}
const taskChapters = parsedList.filter((item) => item.isNavigable && isTaskChapter(item.node, item));
if (taskChapters.length && taskChapters.every((item) => item.isCompleted && !item.badgeCount)) {
safeLog("\u6574\u95E8\u8BFE\u7A0B\u6240\u6709\u77E5\u8BC6\u70B9\u5747\u5DF2\u7531\u5E73\u53F0\u786E\u8BA4\u4E3A\u5B8C\u6210", "green");
} else {
safeLog("\u4ECD\u6709\u672A\u5B8C\u6210\u3001\u9501\u5B9A\u6216\u72B6\u6001\u672A\u77E5\u7684\u77E5\u8BC6\u70B9\uFF0C\u5C1A\u672A\u901A\u8FC7\u6574\u8BFE\u5B8C\u6210\u68C0\u67E5", "orange");
}
if (typeof updateCourseOverview === "function") updateCourseOverview();
return;
}
for (const d of docs) {
let but = d.querySelector(".jb_btn.jb_btn_92.fs14.prev_next.next, .orientationright, .prev_next.next, .next");
if (but && but.offsetParent !== null) {
safeLog("\u6B63\u5728\u901A\u8FC7\u4E0B\u4E00\u8282\u6309\u94AE\u8DF3\u8F6C...", "cyan");
but.click();
return;
}
}
safeLog("\u672A\u627E\u5230\u53EF\u6838\u9A8C\u7684\u8BFE\u7A0B\u76EE\u5F55\uFF0C\u4E0D\u80FD\u786E\u8BA4\u6574\u8BFE\u5B8C\u6210", "orange");
if (typeof updateCourseOverview === "function") updateCourseOverview();
} catch (e) {
console.error("executeChapterJump error:", e);
safeLog("\u8DF3\u7AE0\u903B\u8F91\u6267\u884C\u5F02\u5E38: " + (e.message || e), "red");
}
}, 800);
}
function triggerNextChapter(reason = "\u672C\u7AE0\u8282\u4EFB\u52A1\u5DF2\u5168\u90E8\u68C0\u67E5\u5B8C\u6BD5") {
if (jumpType == 2) {
safeLog("\u4EFB\u52A1\u5904\u7406\u5B8C\u6BD5\uFF0C\u7528\u6237\u8BBE\u7F6E\u4E3A\u4E0D\u8DF3\u8F6C", "green");
return;
}
_w.jump = true;
try {
if (_w.top) _w.top.jump = true;
} catch (e) {
}
try {
if (_w.parent) _w.parent.jump = true;
} catch (e) {
}
safeLog(reason + "\uFF0C\u6B63\u5728\u51C6\u5907\u8FDB\u5165\u4E0B\u4E00\u5F85\u5B8C\u6210\u7AE0\u8282...", "green");
const targetWins = [window, window.parent, window.top].filter(Boolean);
targetWins.forEach((win) => {
try {
win.postMessage({ type: "drip-trigger-chapter-jump" }, "*");
} catch (e) {
}
});
setTimeout(() => {
try {
if (typeof _w.executeChapterJump === "function") {
_w.executeChapterJump();
return;
}
} catch (e) {
}
try {
if (typeof _w.top.executeChapterJump === "function") {
_w.top.executeChapterJump();
return;
}
} catch (e) {
}
try {
if (typeof _w.parent.executeChapterJump === "function") {
_w.parent.executeChapterJump();
return;
}
} catch (e) {
}
}, 1200);
}
function switchNextTabInChapter() {
try {
for (const doc of getAccessibleDocs()) {
const selectors = [
".prev_ul li, ul.prev_title li, .card-tabs li, [class*='prev_ul'] li",
".tabtags span, .tabtags a, [class*='tabtags'] span, [class*='tabtags'] a"
];
for (const selector of selectors) {
const candidates = Array.from(doc.querySelectorAll(selector));
const tabs = candidates.filter((el) => !candidates.some((parent) => parent !== el && parent.contains(el)));
if (tabs.length < 2) continue;
const activeIdx = tabs.findIndex(
(el) => el.classList.contains("active") || el.classList.contains("currents") || el.getAttribute("aria-selected") === "true"
);
if (activeIdx < 0) {
safeLog("\u7AE0\u8282\u6807\u7B7E\u5C1A\u672A\u6807\u660E\u5F53\u524D\u4F4D\u7F6E\uFF0C\u4FDD\u6301\u672C\u9875\u7B49\u5F85\u68C0\u67E5", "orange");
return true;
}
const completed = (el) => /icon_Completed|catalog_points_done|roundpoint\s+blue/i.test(el.innerHTML || "");
let targetIdx = tabs.findIndex((el, idx) => idx > activeIdx && !completed(el));
if (targetIdx < 0) {
targetIdx = tabs.findIndex((el, idx) => idx < activeIdx && !completed(el) && (/catalog_points_yi|orange|f_orange|unfinish/.test(el.innerHTML || "") || /\([1-9]\d*\)/.test(el.textContent || "")));
}
if (targetIdx < 0) continue;
const targetTab = tabs[targetIdx];
const targetName = targetTab.textContent.trim().replace(/\s+/g, " ") || "\u6807\u7B7E " + (targetIdx + 1);
safeLog("\u6B63\u5728\u68C0\u67E5\u5F53\u524D\u7AE0\u8282\u540E\u7EED\u6807\u7B7E\u9875\u3010" + targetName + "\u3011...", "cyan");
const clickable = targetTab.hasAttribute("onclick") ? targetTab : targetTab.querySelector("a, [onclick]") || targetTab;
setTimeout(() => {
try {
clickable.click();
} catch (e) {
safeLog("\u6807\u7B7E\u5207\u6362\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u5F53\u524D\u9875\u9762", "orange");
}
}, 1e3);
setTimeout(() => {
if (hasQuestionsOnPage() && _w.top.dripDoWork == "1") {
triggerDirectAiAnswer();
}
}, 3e3);
return true;
}
}
} catch (e) {
console.error("switchNextTabInChapter error:", e);
return true;
}
return false;
}
function isCompletedWorkFrame(frame, jobid, expectedCourse, expectedChapter) {
var _a;
try {
const doc = frame.contentDocument;
const url = new URL(doc.location.href);
return /\/work\/phone\/selectWorkQuestionYiPiYue$/.test(url.pathname) && url.searchParams.get("jobId") === String(jobid) && url.searchParams.get("courseId") === String(expectedCourse) && url.searchParams.get("knowledgeId") === String(expectedChapter) && ((_a = doc.querySelector(".hetNumber .finish")) == null ? void 0 : _a.textContent.trim()) === "\u5DF2\u5B8C\u6210";
} catch (e) {
return false;
}
}
function triggerDirectAiAnswer(taskName) {
taskName = taskName || "\u8BFE\u540E\u6D4B\u9A8C/\u4F5C\u4E1A";
safeLog("\u68C0\u6D4B\u5230\u672C\u9875\u5305\u542B\u6D4B\u9A8C/\u4F5C\u4E1A\u9898\u76EE\uFF0C\u6B63\u5728\u8C03\u7528 AI \u667A\u80FD\u7B54\u9898\u6A21\u5757...", "cyan");
const targetWins = [window, window.top, window.parent].filter(Boolean);
const onDone = (res) => {
const detail = res && res.detail || res && res.data && res.data.detail || res || {};
if (detail.success === true) {
safeLog("AI \u7B54\u9898\u5E76\u63D0\u4EA4\u5B8C\u6210\uFF01\u51C6\u5907\u5207\u6362\u540E\u7EED\u4EFB\u52A1...", "green");
setTimeout(() => {
if (!switchNextTabInChapter()) {
triggerNextChapter("AI \u7B54\u9898\u5DF2\u5B8C\u6210");
}
}, 3e3);
} else {
safeLog("AI \u7B54\u9898\u672A\u5B8C\u6210\u6216\u63D0\u4EA4\u5931\u8D25\uFF0C\u5DF2\u6682\u505C\u81EA\u52A8\u8DF3\u7AE0\uFF01\u4FDD\u6301\u5F53\u524D\u9875\u9762\u4F9B\u68C0\u67E5", "red");
_w.jump = false;
if (_w.top) _w.top.jump = false;
}
};
targetWins.forEach((w) => {
try {
w.addEventListener("drip-ai-work-completed", onDone, { once: true });
} catch (e) {
}
try {
w.dispatchEvent(new CustomEvent("drip-call-ai-work", {
detail: { name: taskName, autoSubmit: true }
}));
w.postMessage({ type: "drip-call-ai-work", detail: { name: taskName, autoSubmit: true } }, "*");
} catch (e) {
}
});
window.addEventListener("message", (msg) => {
if (msg.data && msg.data.type === "drip-ai-work-completed") onDone(msg.data);
}, { once: true });
}
if (_l.href.indexOf("knowledge/cards") > 0) {
let spans = _d.getElementsByTagName("span");
for (let i = 0, l = spans.length; i < l; i++) {
if (spans[i].innerHTML.indexOf("\u7AE0\u8282\u672A\u5F00\u653E") != -1) {
if (_l.href.indexOf("ut=s") != -1) {
_l.href = _l.href.replace("ut=s", "ut=t").replace(/&cpi=[0-9]{1,10}/, "");
} else if (_l.href.indexOf("ut=t") != -1) {
spans[i].innerHTML = "\u6B64\u8BFE\u7A0B\u4E3A\u95EF\u5173\u6A21\u5F0F\uFF0C\u8BF7\u56DE\u5230\u4E0A\u4E00\u7AE0\u8282\u5B8C\u6210\u5B66\u4E60\u4EFB\u52A1\uFF01";
return;
}
break;
}
}
_w.top.dripPageRd = String(Math.random());
if (!isFf) {
try {
cVersion = parseInt(navigator.userAgent.match(/Chrome\/[0-9]{2,3}./)[0].replace("Chrome/", "").replace(".", ""));
} catch (e) {
}
}
var busyThread = 0, getStr = (str, start, end) => {
let res = str.substring(str.indexOf(start), str.indexOf(end)).replace(start, "");
return res;
}, scripts = _d.getElementsByTagName("script"), param = null;
for (let i = 0, l = scripts.length; i < l; i++) {
if (scripts[i].innerHTML.indexOf('mArg = "";') != -1 && scripts[i].innerHTML.indexOf(
"==UserScript=="
) == -1) {
param = getStr(scripts[i].innerHTML, "try{\n mArg = ", ";\n}catch(e){");
}
}
if (param == null) {
return;
}
try {
vrefer = _d.getElementsByClassName("ans-attach-online ans-insertvideo-online")[0].src;
} catch (e) {
vrefer = _p + "//" + _h + "/ananas/modules/video/index.html?v=2022-1118-1729";
}
GM_setValue("vrefer", vrefer);
GM_setValue("host", _h);
var tikutoken = GM_getValue("tikutoken");
if (tikutoken == null) {
tikutoken = "";
}
var base222 = `data:image/png;base64,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`;
_d.getElementsByTagName("html")[0].innerHTML = `
\u5B66\u4E60\u901A\u5C0F\u52A9\u624B
\u8BFE\u7A0B\u5B66\u4E60
\u5927\u9E1F\u5B66\u4E60\u901A\u52A9\u624B
\u8BFB\u53D6\u8BFE\u7A0B\u8FDB\u5EA6
\u8BFE\u7A0B\u7AE0\u8282\u8FDB\u5EA6
--%
(\u5DF2\u5B8C\u6210 -- / \u5171 --)
\u672C\u8282\u4EFB\u52A1: \u68C0\u6D4B\u4E2D...
\u5269\u4F59\u4EFB\u52A1: -- \u4E2A\u4EFB\u52A1\u70B9
\u53C2\u8003\u8017\u65F6
--
\u6309\u6BCF\u4E2A\u4EFB\u52A1 5 \u5206\u949F\u548C\u5F53\u524D\u500D\u901F\u7C97\u7B97\uFF0C\u5B9E\u9645\u4EE5\u4EFB\u52A1\u7C7B\u578B\u4E0E\u5E73\u53F0\u8FDB\u5EA6\u4E3A\u51C6\u3002
\u89C6\u9891\u500D\u901F:
[00:00:00]\u5982\u679C\u6B64\u63D0\u793A\u4E0D\u6D88\u5931\uFF0C\u8BF4\u660E\u9875\u9762\u51FA\u73B0\u4E86\u9519\u8BEF\uFF0C\u8BF7\u8054\u7CFB\u4F5C\u8005
`;
try {
CourseUx.mountCourseUx(_d, () => {
const chapters = getCatalogNodes().map((node) => ({ node, item: parseChapterNode(node) })).filter(({ node, item }) => item && isTaskChapter(node, item)).map(({ item }) => item);
return {
chapters,
missions: typeof missionList === "undefined" ? [] : Object.values(missionList).filter(Boolean),
tasksReady: _d.documentElement.dataset.dripUxTasksReady === "true",
taskCount: typeof jobList === "undefined" ? 0 : jobList.length
};
});
} catch (e) {
console.error(e);
}
var logs = {
"logArry": [],
"addLog": function(str, color = "black") {
var _a;
if (this.logArry.length >= 50) {
this.logArry.splice(0, 1);
}
var nowTime2 = /* @__PURE__ */ new Date();
var nowHour = (Array(2).join(0) + nowTime2.getHours()).slice(-2);
var nowMin = (Array(2).join(0) + nowTime2.getMinutes()).slice(-2);
var nowSec = (Array(2).join(0) + nowTime2.getSeconds()).slice(-2);
const entry = "[" + nowHour + ":" + nowMin + ":" + nowSec + "] " + str + "";
this.logArry.push(entry);
const logTarget = _d.getElementById("log");
if (!logTarget) return;
(_a = logTarget.querySelector("[data-log-placeholder]")) == null ? void 0 : _a.remove();
const line = _d.createElement("div");
line.dataset.legacyLog = "";
line.innerHTML = entry;
logTarget.appendChild(line);
const legacyRows = logTarget.querySelectorAll("[data-legacy-log]");
for (let i = 0; i < legacyRows.length - 50; i++) legacyRows[i].remove();
while (logTarget.children.length > 300) logTarget.firstElementChild.remove();
var scrollTarget = _d.getElementById("result") || logTarget;
if (scrollTarget) {
scrollTarget.scrollTop = scrollTarget.scrollHeight;
}
}
}, htmlHook = setInterval(function() {
if (_d.getElementById("dripRate") && _d.getElementById("updateRateButton") && _d.getElementById("reviewModeButton") && _d.getElementById("autoDoWorkButton") && _d.getElementById("autoSubmitButton") && _d.getElementById("autoSaveButton")) {
let updateBgBtnUI2 = function(active) {
if (!bgBtn) return;
if (active) {
bgBtn.classList.add("btn-success");
bgBtn.setAttribute("title", "\u5173\u95ED\u540E\u53F0\u6302\u673A\uFF1B\u4E0D\u505C\u6B62\u8BFE\u7A0B\u5B66\u4E60");
bgBtn.innerHTML = '\u540E\u53F0\u6302\u673A\uFF1A\u5F00';
} else {
bgBtn.classList.remove("btn-success");
bgBtn.setAttribute("title", "\u5F00\u542F\u540E\u53F0\u6302\u673A\uFF1B\u4E0D\u542F\u52A8\u8BFE\u7A0B\u5B66\u4E60");
bgBtn.innerHTML = '\u540E\u53F0\u6302\u673A\uFF1A\u5173';
}
}, updateCourseOverview3 = function() {
try {
var pFill = _d.getElementById("overviewProgressFill");
var pPercent = _d.getElementById("overviewPercent");
var pCounts = _d.getElementById("overviewCounts");
var pScope = _d.getElementById("overviewScope");
var pSource = _d.getElementById("courseProgressSource");
var pChapter = _d.getElementById("overviewChapterTask");
var pPending = _d.getElementById("overviewPendingCount");
var pTime = _d.getElementById("overviewEstimateTime");
if (!pFill) return;
pFill.removeAttribute("data-lt-progress");
var catalogElements = getCatalogNodes();
var totalChapters = 0;
var completedChapters = 0;
var pendingTaskPoints = 0;
var currentChapterPending = 0;
for (var i = 0; i < catalogElements.length; i++) {
var el = catalogElements[i];
var item = parseChapterNode(el);
if (!item) continue;
if (!isTaskChapter(el, item)) {
continue;
}
totalChapters++;
if (item.isCompleted) {
completedChapters++;
} else if (!item.isLocked) {
pendingTaskPoints += item.badgeCount > 0 ? item.badgeCount : 1;
}
if (item.isActive) {
currentChapterPending = item.badgeCount;
}
}
var allCatalogComplete = totalChapters > 0 && completedChapters === totalChapters;
var doneThisChap = 0;
var totalThisChap = 0;
if (typeof jobList !== "undefined" && Array.isArray(jobList)) {
totalThisChap = jobList.length;
if (typeof missionList !== "undefined") {
for (var k in missionList) {
if (missionList[k] && missionList[k].done) doneThisChap++;
}
}
}
if (pChapter) {
if (totalThisChap > 0) {
pChapter.innerText = "\u5DF2\u5B8C\u6210 " + doneThisChap + "/" + totalThisChap;
} else if (currentChapterPending > 0) {
pChapter.innerText = currentChapterPending + " \u4E2A\u4EFB\u52A1\u70B9\u5F85\u5B8C\u6210";
} else if (allCatalogComplete) {
pChapter.innerText = "\u6574\u95E8\u8BFE\u7A0B\u5DF2\u5168\u90E8\u5B8C\u6210";
} else {
pChapter.innerText = "\u81EA\u52A8\u68C0\u6D4B\u4E2D";
}
}
if (totalChapters > 0) {
var percentVal = Math.min(100, Math.round(completedChapters / totalChapters * 100));
if (allCatalogComplete) {
percentVal = 100;
}
if (pPercent) pPercent.innerText = percentVal + "%";
if (pScope) pScope.innerText = "\u8BFE\u7A0B\u7AE0\u8282\u8FDB\u5EA6";
if (pSource) pSource.innerText = "\u8FDB\u5EA6\u6765\u81EA\u8BFE\u7A0B\u76EE\u5F55";
if (pCounts) pCounts.innerText = "(\u5DF2\u5B8C\u6210 " + completedChapters + " / \u5171 " + totalChapters + " \u4E2A\u7AE0\u8282)";
if (pFill) pFill.style.width = percentVal + "%";
pFill.setAttribute("data-lt-progress", String(percentVal));
if (pPending) {
pPending.innerText = allCatalogComplete ? "0 \u4E2A\u4EFB\u52A1\u70B9 (\u76EE\u5F55\u4EFB\u52A1\u5DF2\u5B8C\u6210)" : pendingTaskPoints <= 0 ? "\u6682\u65E0\u5DF2\u5F00\u653E\u5F85\u5B8C\u6210\u4EFB\u52A1" : pendingTaskPoints + " \u4E2A\u4EFB\u52A1\u70B9";
}
} else {
if (pScope) pScope.innerText = "\u672C\u8282\u4EFB\u52A1\u8FDB\u5EA6";
if (pSource) pSource.innerText = "\u8FDB\u5EA6\u6765\u81EA\u672C\u8282\u4EFB\u52A1";
if (totalThisChap > 0) {
var pVal = Math.min(100, Math.round(doneThisChap / totalThisChap * 100));
if (pPercent) pPercent.innerText = pVal + "%";
if (pCounts) pCounts.innerText = "(\u672C\u8282 " + doneThisChap + " / " + totalThisChap + ")";
if (pFill) pFill.style.width = pVal + "%";
pFill.setAttribute("data-lt-progress", String(pVal));
}
if (pPending) pPending.innerText = totalThisChap - doneThisChap + " \u4E2A\u4EFB\u52A1\u70B9";
}
if (pTime) {
var curRate = typeof rate !== "undefined" && rate > 0 ? rate : 1;
var remainingSec = Math.round(pendingTaskPoints * (300 / curRate));
if (pendingTaskPoints <= 0) {
pTime.innerText = allCatalogComplete ? "\u5DF2\u5168\u90E8\u5B8C\u6210" : "\u6682\u65E0\u5DF2\u5F00\u653E\u5F85\u5B8C\u6210\u4EFB\u52A1";
} else if (remainingSec >= 3600) {
pTime.innerText = "~" + (remainingSec / 3600).toFixed(1) + " \u5C0F\u65F6";
} else {
pTime.innerText = "~" + Math.max(1, Math.round(remainingSec / 60)) + " \u5206\u949F";
}
}
} catch (err) {
var fillOnError = _d.getElementById("overviewProgressFill");
if (fillOnError) fillOnError.removeAttribute("data-lt-progress");
console.error("updateCourseOverview error:", err);
}
};
var updateBgBtnUI = updateBgBtnUI2, updateCourseOverview2 = updateCourseOverview3;
clearInterval(htmlHook);
if (cVersion < 86) {
logs.addLog(
'\u60A8\u7684\u6D4F\u89C8\u5668\u5185\u6838\u8FC7\u8001\uFF0C\u8BF7\u66F4\u65B0\u7248\u672C\u6216\u4F7F\u7528\u4E3B\u6D41\u6D4F\u89C8\u5668\uFF0C\u63A8\u8350edge\u6D4F\u89C8\u5668',
"red"
);
stop = true;
return;
}
if (isMobile) {
logs.addLog("\u624B\u673A\u6D4F\u89C8\u5668\u4E0D\u4FDD\u8BC1\u80FD\u6B63\u5E38\u8FD0\u884C\u6B64\u811A\u672C", "orange");
}
_d.addEventListener("visibilitychange", function() {
let isH = _d.hidden;
if (!isH) {
logs.addLog("\u6302\u673A\u529F\u80FD\u4E0D\u7A33\u5B9A\uFF0C\u4E0D\u5EFA\u8BAE\u957F\u65F6\u95F4\u6700\u5C0F\u5316\u7A97\u53E3", "orange");
}
});
const tokenInput = _d.getElementById("token");
const updateTokenButton = _d.getElementById("updateToken");
if (tokenInput && updateTokenButton) {
tokenInput.value = "";
updateTokenButton.onclick = function() {
var token2 = tokenInput.value;
if (token2.length == 16) {
logs.addLog("\u9898\u5E93token\u5DF2\u66F4\u65B0\u4E3A" + token2, "green");
GM_setValue("tikutoken", token2);
} else {
logs.addLog("\u8BF7\u68C0\u67E5\u9898\u5E93token", "green");
}
};
}
_d.getElementById("accuracy").value = accuracy;
_d.getElementById("updateaccuracy").onclick = function() {
var uaccuracy = _d.getElementById("accuracy").value;
if (parseFloat(uaccuracy) == parseInt(uaccuracy)) {
uaccuracy = parseInt(uaccuracy);
} else {
uaccuracy = parseFloat(uaccuracy);
}
GM_setValue("accuracy", uaccuracy);
accuracy = uaccuracy;
if (uaccuracy >= 0 && uaccuracy <= 100) {
logs.addLog("\u7AE0\u8282\u6D4B\u8BD5\u6B63\u786E\u7387\u5DF2\u66F4\u65B0\u4E3A" + uaccuracy + "%\uFF0C\u5C06\u57283\u79D2\u5185\u751F\u6548", "green");
} else {
logs.addLog("\u5947\u602A\u6B63\u786E\u7387", "orange");
}
};
const syncSpeedPills = (targetRate) => {
const pills = _d.querySelectorAll(".speed-pill");
pills.forEach((pill) => {
if (parseFloat(pill.getAttribute("data-speed")) === parseFloat(targetRate)) {
pill.classList.add("active");
} else {
pill.classList.remove("active");
}
});
_d.dispatchEvent(new Event("drip-speed-sync"));
};
_d.getElementById("dripRate").value = rate;
syncSpeedPills(rate);
_d.getElementById("updateRateButton").onclick = function() {
let urate = _d.getElementById("dripRate").value;
if (parseFloat(urate) == parseInt(urate)) {
urate = parseInt(urate);
} else {
urate = parseFloat(urate);
}
GM_setValue("courseRate", urate);
rate = urate;
syncSpeedPills(urate);
if (typeof updateCourseOverview3 === "function") updateCourseOverview3();
if (urate > 0) {
logs.addLog("\u89C6\u9891\u500D\u901F\u5DF2\u66F4\u65B0\u4E3A" + urate + "\u500D\uFF0C\u5C06\u57283\u79D2\u5185\u751F\u6548", "green");
} else {
logs.addLog("\u5947\u602A\u7684\u500D\u901F\uFF0C\u5C06\u4F1A\u81EA\u52A8\u8DF3\u8FC7\u89C6\u9891\u4EFB\u52A1", "orange");
}
};
const clearBtn = _d.getElementById("clearLogBtn");
if (clearBtn) {
clearBtn.onclick = function() {
logs.logArry = [];
_d.getElementById("log").innerHTML = "";
};
}
const bgBtn = _d.getElementById("backGround");
if (typeof _w.top.backNow === "undefined") {
_w.top.backNow = 1;
}
updateBgBtnUI2(_w.top.backNow == 1);
if (typeof updateCourseOverview3 === "function") {
setTimeout(updateCourseOverview3, 800);
setInterval(updateCourseOverview3, 8e3);
}
bgBtn.onclick = function() {
if (_w.top.backNow == 1) {
_w.top.backNow = 0;
updateBgBtnUI2(false);
logs.addLog("\u5DF2\u5173\u95ED\u540E\u53F0\u6302\u673A\uFF0C\u9875\u9762\u6700\u5C0F\u5316\u65F6\u53EF\u80FD\u6682\u505C", "orange");
try {
if (_w.top.audioPlayer) _w.top.audioPlayer.pause();
if (_w.audioPlayer) _w.audioPlayer.pause();
} catch (e) {
}
try {
if (_d.hidden) {
_d.title = "\u26A0\uFE0F\u8BF7\u5148\u6FC0\u6D3B\u6302\u673A";
if (_w.top.document) _w.top.document.title = "\u26A0\uFE0F\u8BF7\u5148\u6FC0\u6D3B\u6302\u673A";
}
} catch (e) {
}
} else {
_w.top.backNow = 1;
updateBgBtnUI2(true);
logs.addLog("\u540E\u53F0\u6302\u673A\u5DF2\u5F00\u542F\uFF0C\u60A8\u73B0\u5728\u53EF\u4EE5\u6700\u5C0F\u5316\u9875\u9762\u4E86", "green");
try {
var player = _w.top.audioPlayer || _w.audioPlayer;
if (player && (_d.hidden || _w.top.document && _w.top.document.hidden)) {
var p = player.play();
if (p && p.catch) p.catch(function() {
});
}
} catch (e) {
}
}
};
_d.getElementById("reviewModeButton").onclick = function() {
let reviewButton = _d.getElementById("reviewModeButton");
if (reviewButton.getAttribute("class") == "btn btn-default") {
_d.getElementById("reviewModeButton").setAttribute("class", "btn btn-success");
GM_setValue("courseReview", "1");
_w.top.dripReviewMode = "1";
} else {
_d.getElementById("reviewModeButton").setAttribute("class", "btn btn-default");
GM_setValue("courseReview", "0");
_w.top.dripReviewMode = "0";
}
};
_d.getElementById("autoDoWorkButton").onclick = function() {
let autoDoWorkButton = _d.getElementById("autoDoWorkButton");
if (autoDoWorkButton.getAttribute("class") == "btn btn-default") {
_d.getElementById("autoDoWorkButton").setAttribute("class", "btn btn-success");
GM_setValue("courseDoWork", "1");
_w.top.dripDoWork = "1";
} else {
_d.getElementById("autoDoWorkButton").setAttribute("class", "btn btn-default");
GM_setValue("courseDoWork", "0");
_w.top.dripDoWork = "0";
}
};
_d.getElementById("autoSubmitButton").onclick = function() {
let autoSubmitButton = _d.getElementById("autoSubmitButton");
if (autoSubmitButton.getAttribute("class") == "btn btn-default") {
_d.getElementById("autoSubmitButton").setAttribute("class", "btn btn-success");
GM_setValue("courseAutoSubmit", "1");
_w.top.dripAutoSubmit = "1";
} else {
_d.getElementById("autoSubmitButton").setAttribute("class", "btn btn-default");
GM_setValue("courseAutoSubmit", "0");
_w.top.dripAutoSubmit = "0";
}
};
_d.getElementById("autoSaveButton").onclick = function() {
let autoSaveButton = _d.getElementById("autoSaveButton");
if (autoSaveButton.getAttribute("class") == "btn btn-default") {
_d.getElementById("autoSaveButton").setAttribute("class", "btn btn-success");
GM_setValue("courseAutoSave", "1");
_w.top.dripAutoSave = "1";
} else {
_d.getElementById("autoSaveButton").setAttribute("class", "btn btn-default");
GM_setValue("courseAutoSave", "0");
_w.top.dripAutoSave = "0";
}
};
}
}, 100), markMissionFailed = (mission, reason) => {
var _a;
if (!mission || mission.done || mission.failed) return;
mission.failed = true;
mission.failedReason = reason;
mission.running = false;
try {
(_a = mission.cancel) == null ? void 0 : _a.call(mission);
} catch (e) {
}
logs.addLog("\u4EFB\u52A1\u3010" + (mission.name || mission.jobid || "\u672A\u77E5") + "\u3011\u672A\u5B8C\u6210\uFF1A" + reason + "\uFF1B\u7EE7\u7EED\u68C0\u67E5\u672C\u7AE0\u5176\u4ED6\u4EFB\u52A1", "red");
}, loopjob = () => {
if (_w.top.dripScriptList.length > 1) {
logs.addLog("\u60A8\u540C\u65F6\u5F00\u542F\u4E86\u591A\u4E2A\u5237\u8BFE\u811A\u672C\uFF0C\u4F1A\u6302\u79D1\uFF0C\u4F1A\u6302\u79D1\uFF0C\u4F1A\u6302\u79D1\uFF0C\u4F1A\u6302\u79D1\uFF0C\u4F1A\u6302\u79D1\uFF0C\u4F1A\u6302\u79D1\uFF0C\u4F1A\u6302\u79D1\uFF0C\u4F1A\u6302\u79D1", "red");
}
if (cVersion < 8.6 * 10) {
logs.addLog(
'\u60A8\u7684\u6D4F\u89C8\u5668\u5185\u6838\u8FC7\u8001\uFF0C\u8BF7\u66F4\u65B0\u7248\u672C\u6216\u4F7F\u7528\u4E3B\u6D41\u6D4F\u89C8\u5668\uFF0C\u63A8\u8350edge\u6D4F\u89C8\u5668',
"red"
);
stop = true;
return;
}
if (stop) {
return;
}
let missionli = missionList;
if (missionli == []) {
setTimeout(loopjob, 500);
return;
}
for (let itemName in missionli) {
if (missionli[itemName]["running"]) {
const mission = missionli[itemName];
const timeoutMs = mission.type === "work" ? 21e4 : mission.type === "document" ? 9e4 : 3e5;
if (mission.lastProgressAt && Date.now() - mission.lastProgressAt > timeoutMs) {
markMissionFailed(mission, "\u7B49\u5F85\u4EFB\u52A1\u8FDB\u5C55\u8D85\u65F6");
break;
}
setTimeout(loopjob, 500);
return;
}
}
for (let itemName in missionli) {
if (!missionli[itemName]["done"] && !missionli[itemName]["failed"]) {
missionli[itemName].lastProgressAt = Date.now();
switch (missionli[itemName]["type"]) {
case "video":
doVideo(missionli[itemName]);
break;
case "document":
doDocument(missionli[itemName]);
break;
case "work":
doWork(missionli[itemName]);
break;
}
setTimeout(loopjob, 500);
return;
}
}
const failedMissions = Object.values(missionli).filter((mission) => mission.failed);
if (failedMissions.length) {
if (failedMissions.some((mission) => mission.type === "work" || /平台限制|平台停止/.test(mission.failedReason || ""))) {
logs.addLog("\u672C\u9875\u4ECD\u6709\u6D4B\u9A8C\u5931\u8D25\u6216\u5E73\u53F0\u9650\u5236\uFF0C\u8BF7\u68C0\u67E5\u539F\u56E0\u540E\u7EE7\u7EED", "red");
return;
}
deferFailedTasks(failedMissions);
return;
}
if (busyThread <= 0) {
if (switchNextTabInChapter()) {
clearInterval(loopjob);
return;
}
if (jumpType != 2) {
triggerNextChapter("\u672C\u7AE0\u8282\u6240\u6709\u4EFB\u52A1\u5904\u7406\u5B8C\u6BD5");
} else {
logs.addLog("\u6240\u6709\u4EFB\u52A1\u5904\u7406\u5B8C\u6BD5\uFF0C\u7528\u6237\u8BBE\u7F6E\u4E3A\u4E0D\u8DF3\u8F6C", "green");
}
clearInterval(loopjob);
} else {
setTimeout(loopjob, 500);
}
}, readyCheck = () => {
setTimeout(function() {
try {
if (!isCat) {
logs.addLog(
'\u63A8\u8350\u4F7F\u7528\u811A\u672C\u732B\u8FD0\u884C\u6B64\u811A\u672C\uFF0C\u4F7F\u7528\u5176\u4ED6\u811A\u672C\u7BA1\u7406\u5668\u4E0D\u4FDD\u8BC1\u80FD\u6B63\u5E38\u8FD0\u884C',
"orange"
);
}
if (_w.top.dripReviewMode == "1") {
_d.getElementById("reviewModeButton").setAttribute("class", [
"btn btn-default",
"btn btn-success"
][_w.top.dripReviewMode]);
}
if (_w.top.dripDoWork == "1") {
_d.getElementById("autoDoWorkButton").setAttribute("class", [
"btn btn-default",
"btn btn-success"
][_w.top.dripDoWork]);
}
_d.getElementById("autoSubmitButton").setAttribute("class", [
"btn btn-default",
"btn btn-success"
][_w.top.dripAutoSubmit]);
_d.getElementById("autoSaveButton").setAttribute("class", [
"btn btn-default",
"btn btn-success"
][_w.top.dripAutoSave]);
} catch (e) {
console.log(e);
readyCheck();
return;
}
}, 500);
};
readyCheck();
try {
var pageData = JSON.parse(param);
} catch (e) {
if (hasQuestionsOnPage() && _w.top.dripDoWork == "1") {
triggerDirectAiAnswer();
return;
}
if (switchNextTabInChapter()) {
return;
}
if (jumpType != 2) {
triggerNextChapter("\u672C\u7AE0\u8282\u6807\u7B7E\u9875\u5904\u7406\u5B8C\u6BD5");
} else {
logs.addLog("\u6B64\u9875\u65E0\u4EFB\u52A1\uFF0C\u7528\u6237\u8BBE\u7F6E\u4E3A\u4E0D\u8DF3\u8F6C", "green");
}
return;
}
var data = pageData["defaults"], jobList = [], classId = data["clazzId"], chapterId = data["knowledgeid"], reportUrl = data["reportUrl"], ktoken = data["ktoken"];
UID = UID || data["userid"];
FID = FID || data["fid"];
for (let i = 0, l = pageData["attachments"].length; i < l; i++) {
let item = pageData["attachments"][i];
if (item["job"] != true || item["isPassed"] == true) {
if (_w.top.dripReviewMode == "1" && item["type"] == "video") {
jobList.push(item);
}
continue;
} else {
jobList.push(item);
}
}
var video_getReady = (item) => {
let statusUrl = _p + "//" + _h + "/ananas/status/" + item["property"]["objectid"] + "?k=" + FID + "&flag=normal&_dc=" + String(Math.round(/* @__PURE__ */ new Date())), doubleSpeed = item["property"]["doublespeed"];
const mission = missionList["m" + item["jobid"]] = {
type: "video",
jobid: item["jobid"],
name: item["property"]["name"],
done: false,
running: true,
lastProgressAt: Date.now()
};
busyThread += 1;
let settled = false;
const finishStatus = () => {
if (settled) return false;
settled = true;
busyThread -= 1;
return true;
};
GM_xmlhttpRequest({
method: "get",
timeout: 15e3,
headers: {
"Host": _h,
"Referer": vrefer,
"Sec-Fetch-Site": "same-origin"
},
url: statusUrl,
onload: function(res) {
if (!finishStatus() || mission.failed) return;
try {
let videoInfo = JSON.parse(res.responseText), duration = videoInfo["duration"], dtoken = videoInfo["dtoken"];
if (duration == void 0) {
appendJobRow(_d, `[\u65E0\u6548\u89C6\u9891]` + item["property"]["name"]);
markMissionFailed(mission, "\u89C6\u9891\u72B6\u6001\u7F3A\u5C11\u65F6\u957F");
return;
}
Object.assign(mission, {
"module": item["property"]["module"],
"type": "video",
"dtoken": dtoken,
"duration": duration,
"objectId": item["property"]["objectid"],
"rt": item["property"]["rt"] || "0.9",
"otherInfo": item["otherInfo"],
"doublespeed": doubleSpeed,
"jobid": item["jobid"],
"name": item["property"]["name"],
"done": false,
"running": false
});
appendJobRow(_d, `[\u89C6\u9891]` + item["property"]["name"]);
} catch (e) {
markMissionFailed(mission, "\u89C6\u9891\u72B6\u6001\u89E3\u6790\u5931\u8D25");
}
},
onerror: function(err) {
if (!finishStatus()) return;
console.log(err);
if (String((err == null ? void 0 : err.error) || "").includes("@connect list")) {
logs.addLog("\u8BF7\u6DFB\u52A0\u5B89\u5168\u7F51\u5740\uFF0C\u5C06 \u3010 //@connect " + _h + " \u3011\u65B9\u62EC\u53F7\u91CC\u7684\u5185\u5BB9(\u4E0D\u5305\u62EC\u65B9\u62EC\u53F7)\u6DFB\u52A0\u5230\u811A\u672C\u4EE3\u7801\u5185\u6307\u5B9A\u4F4D\u7F6E\uFF0C\u5426\u5219\u811A\u672C\u65E0\u6CD5\u6B63\u5E38\u8FD0\u884C\uFF0C\u5982\u56FE\u6240\u793A\uFF1A", "red");
logs.addLog(
'
'
);
stop = true;
} else {
logs.addLog("\u83B7\u53D6\u4EFB\u52A1\u8BE6\u60C5\u5931\u8D25", "red");
logs.addLog("\u9519\u8BEF\u539F\u56E0\uFF1A" + ((err == null ? void 0 : err.error) || "\u672A\u77E5\u9519\u8BEF"), "red");
}
markMissionFailed(mission, "\u83B7\u53D6\u89C6\u9891\u4EFB\u52A1\u72B6\u6001\u5931\u8D25");
},
ontimeout: function() {
if (!finishStatus()) return;
markMissionFailed(mission, "\u83B7\u53D6\u89C6\u9891\u4EFB\u52A1\u72B6\u6001\u8D85\u65F6");
}
});
}, doVideo = (item) => {
if (rate <= 0) {
markMissionFailed(missionList["m" + item["jobid"]], "\u89C6\u9891\u500D\u901F\u65E0\u6548\uFF0C\u8BF7\u8BBE\u7F6E\u4E3A\u6B63\u6570");
return;
}
const effectiveRate = () => item.doublespeed == 0 ? Math.min(Number(rate), 1) : Number(rate);
if (item.doublespeed == 0 && rate > 1) logs.addLog("\u5F53\u524D\u89C6\u9891\u4E0D\u5141\u8BB8\u500D\u901F\uFF0C\u6309 1.0x \u8FD0\u884C\uFF1B\u5B8C\u6210\u72B6\u6001\u4EE5\u5E73\u53F0\u8FD4\u56DE\u4E3A\u51C6", "orange");
let videojs_id = String(parseInt(Math.random() * 9999999));
_d.cookie = "videojs_id=" + videojs_id + ";path=/";
logs.addLog("\u5F00\u59CB\u5237\u89C6\u9891\uFF1A" + item["name"] + "\uFF0C\u500D\u901F\uFF1A" + String(effectiveRate()) + "\u500D");
logs.addLog("\u89C6\u9891\u89C2\u770B\u4FE1\u606F\u6BCF60\u79D2\u4E0A\u62A5\u4E00\u6B21\uFF0C\u8BF7\u8010\u5FC3\u7B49\u5F85", "green");
logs.addLog("\u5982\u9047\u8FD0\u884C\u5F02\u5E38\uFF0C\u8BF7\u4FDD\u7559\u672C\u9875\u65E5\u5FD7\u5E76\u8054\u7CFB drip7boi\uFF1B\u66F4\u65B0\u52A9\u624B\u540E\u8BF7\u5237\u65B0\u8BFE\u7A0B\u9875\u9762\u3002", "orange");
if (disableMonitor) {
logs.addLog("\u89E3\u9664\u591A\u7AEF\u5B66\u4E60\u76D1\u63A7\u6709\u6E05\u9664\u8FDB\u5EA6\u98CE\u9669\uFF0C\u8BF7\u8C28\u614E\u4F7F\u7528", "orange");
}
let dtype = "Video";
if (item["module"].includes("audio")) {
dtype = "Audio";
rt = "";
}
let playTime = 0, playsTime = 0, isdrag = "3", times = 0, first = true, loop = setInterval(function() {
if (item.failed) {
clearInterval(loop);
return;
}
if (rate <= 0) {
clearInterval(loop);
markMissionFailed(item, "\u89C6\u9891\u500D\u901F\u65E0\u6548\uFF0C\u8BF7\u8BBE\u7F6E\u4E3A\u6B63\u6570");
return;
}
rt = missionList["m" + item["jobid"]]["rt"];
playsTime += effectiveRate();
playTime = Math.ceil(playsTime);
if (times == 0 || times % 30 == 0 || playTime >= item["duration"]) {
let reportProgress = function() {
if (item.failed) return;
strEc = `[${classId}][${UID}][${item["jobid"]}][${item["objectId"]}][${playTime * 1e3}][d_yHJ!$pdA~5][${item["duration"] * 1e3}][0_${item["duration"]}]`;
let enc = jq.md5(strEc);
if (enc.length != 32) {
clearInterval(loop);
markMissionFailed(item, "\u89C6\u9891\u4E0A\u62A5\u53C2\u6570\u65E0\u6548");
return;
}
let reportsUrl = reportUrl + "/" + item["dtoken"] + "?clazzId=" + classId + "&playingTime=" + playTime + "&duration=" + item["duration"] + "&clipTime=0_" + item["duration"] + "&objectId=" + item["objectId"] + "&otherInfo=" + item["otherInfo"] + "&jobid=" + item["jobid"] + "&userid=" + UID + "&isdrag=" + isdrag + "&view=pc&enc=" + enc + "&rt=" + rt + "&dtype=" + dtype + "&_t=" + String(Math.round(/* @__PURE__ */ new Date()));
GM_xmlhttpRequest({
method: "get",
headers: {
"Host": _h,
"Referer": vrefer,
"Sec-Fetch-Site": "same-origin",
"Content-Type": "application/json"
},
url: reportsUrl,
onload: function(res2) {
if (item.failed) return;
try {
let today = /* @__PURE__ */ new Date(), todayStr = today.getFullYear() + "d" + today.getMonth() + "d" + today.getDate(), timelong = GM_getValue(
"courseTimeLong",
{}
);
if (timelong[UID] == void 0 || timelong[UID]["today"] != todayStr) {
timelong[UID] = {
"time": 0,
"today": todayStr
};
} else {
timelong[UID]["time"]++;
}
GM_setValue(
"courseTimeLong",
timelong
);
busyThread -= 1;
item.lastProgressAt = Date.now();
if (timelong[UID]["time"] / 60 > 22 && item["doublespeed"] == 0 && _w.top.dripReviewMode == "0") {
clearInterval(loop);
logs.addLog(
"\u4ECA\u65E5\u5B66\u4E60\u65F6\u95F4\u8FC7\u957F\uFF0C\u7EE7\u7EED\u5B66\u4E60\u4F1A\u5BFC\u81F4\u6E05\u7A7A\u8FDB\u5EA6\uFF0C\u8BF7\u660E\u5929\u518D\u6765",
"red"
);
markMissionFailed(item, "\u4ECA\u65E5\u5B66\u4E60\u65F6\u95F4\u8FBE\u5230\u5E73\u53F0\u9650\u5236");
return;
}
let ispass = JSON.parse(res2.responseText);
first = false;
if (ispass["isPassed"] && _w.top.dripReviewMode == "0") {
logs.addLog("\u89C6\u9891\u4EFB\u52A1\u5DF2\u5B8C\u6210", "green");
missionList["m" + item["jobid"]]["running"] = false;
missionList["m" + item["jobid"]]["done"] = true;
clearInterval(loop);
return;
} else if (isdrag == "4") {
if (_w.top.dripReviewMode == "1") {
logs.addLog("\u89C6\u9891\u5DF2\u89C2\u770B\u5B8C\u6BD5", "green");
} else {
logs.addLog(
"\u89C6\u9891\u5DF2\u89C2\u770B\u5B8C\u6BD5\uFF0C\u4F46\u89C6\u9891\u4EFB\u52A1\u672A\u5B8C\u6210",
"red"
);
}
if (_w.top.dripReviewMode == "1") {
missionList["m" + item["jobid"]]["running"] = false;
missionList["m" + item["jobid"]]["done"] = true;
} else {
markMissionFailed(item, "\u64AD\u653E\u7ED3\u675F\u4F46\u4EFB\u52A1\u70B9\u672A\u5B8C\u6210");
}
try {
clearInterval(loop);
} catch (e) {
}
} else {
missionList["m" + item["jobid"]].progress = item["duration"] > 0 ? Math.min(1, _bold_playTime / item["duration"]) : 0;
logs.addLog(item["name"] + "\u5DF2\u89C2\u770B" + _bold_playTime + "\u79D2\uFF0C\u5269\u4F59\u5927\u7EA6" + String(item["duration"] - _bold_playTime) + "\u79D2");
}
} catch (e) {
console.log(e);
if (res2.responseText.indexOf("\u9A8C\u8BC1\u7801") >= 0) {
logs.addLog(
'\u5DF2\u88AB\u8D85\u661F\u98CE\u63A7\uFF0C\u8BF7\u70B9\u6211\u5904\u7406\uFF0C60\u79D2\u540E\u81EA\u52A8\u5237\u65B0\u9875\u9762',
"red"
);
missionList["m" + item["jobid"]]["running"] = false;
clearInterval(loop);
stop = true;
setTimeout(function() {
_l.reload();
}, 6e4);
return;
}
logs.addLog("\u8D85\u661F\u8FD4\u56DE\u9519\u8BEF\u4FE1\u606F\uFF0C\u5341\u79D2\u540E\u91CD\u8BD5", "red");
times = -10;
return;
}
},
onerror: function(err) {
console.log(err);
if (err.error.indexOf("@connect list") >= 0) {
logs.addLog(
"\u8BF7\u6DFB\u52A0\u5B89\u5168\u7F51\u5740\uFF0C\u5C06 \u3010 //@connect " + _h + " \u3011\u65B9\u62EC\u53F7\u91CC\u7684\u5185\u5BB9(\u4E0D\u5305\u62EC\u65B9\u62EC\u53F7)\u6DFB\u52A0\u5230\u811A\u672C\u4EE3\u7801\u5185\u6307\u5B9A\u4F4D\u7F6E\uFF0C\u5426\u5219\u811A\u672C\u65E0\u6CD5\u6B63\u5E38\u8FD0\u884C\uFF0C\u5982\u56FE\u6240\u793A\uFF1A",
"red"
);
logs.addLog(
'
'
);
stop = true;
} else {
logs.addLog("\u89C2\u770B\u89C6\u9891\u5931\u8D25", "red");
logs.addLog("\u9519\u8BEF\u539F\u56E0\uFF1A" + err.error, "red");
}
missionList["m" + item["jobid"]]["running"] = false;
clearInterval(loop);
markMissionFailed(item, "\u89C6\u9891\u8FDB\u5EA6\u4E0A\u62A5\u5931\u8D25");
}
});
};
if (first) {
playTime = 0;
}
if (playTime >= item["duration"]) {
clearInterval(loop);
playTime = item["duration"];
isdrag = "4";
} else if (playTime > 0) {
isdrag = "0";
}
busyThread += 1;
var _bold_playTime = playTime;
reportProgress();
}
times += 1;
}, 1e3);
missionList["m" + item["jobid"]]["running"] = true;
item.cancel = () => clearInterval(loop);
}, doDocument = (item) => {
missionList["m" + item["jobid"]]["running"] = true;
item.lastProgressAt = Date.now();
logs.addLog("\u5F00\u59CB\u5237\u6587\u6863\uFF1A" + item["name"]);
setTimeout(function() {
busyThread += 1;
GM_xmlhttpRequest({
method: "get",
url: _p + "//" + _h + "/ananas/job/document?jobid=" + item["jobid"] + "&knowledgeid=" + chapterId + "&courseid=" + courseId + "&clazzid=" + classId + "&jtoken=" + item["jtoken"],
timeout: 3e4,
onload: function(res) {
if (item.failed) return;
try {
busyThread -= 1;
let ispass = JSON.parse(res.responseText);
if (ispass["status"]) {
logs.addLog("\u6587\u6863\u4EFB\u52A1\u5DF2\u5B8C\u6210", "green");
item.done = true;
} else {
logs.addLog("\u6587\u6863\u5DF2\u9605\u8BFB\u5B8C\u6210\uFF0C\u4F46\u4EFB\u52A1\u70B9\u672A\u5B8C\u6210", "red");
markMissionFailed(item, "\u5E73\u53F0\u672A\u786E\u8BA4\u6587\u6863\u4EFB\u52A1\u5B8C\u6210");
}
} catch (err) {
console.log(err);
console.log(res.responseText);
logs.addLog("\u89E3\u6790\u6587\u6863\u5185\u5BB9\u5931\u8D25", "red");
markMissionFailed(item, "\u6587\u6863\u8FD4\u56DE\u5185\u5BB9\u65E0\u6CD5\u89E3\u6790");
}
missionList["m" + item["jobid"]]["running"] = false;
},
onerror: function(err) {
if (item.failed) return;
console.log(err);
if (String((err == null ? void 0 : err.error) || "").includes("@connect list")) {
logs.addLog("\u8BF7\u6DFB\u52A0\u5B89\u5168\u7F51\u5740\uFF0C\u5C06 \u3010 //@connect " + _h + " \u3011\u65B9\u62EC\u53F7\u91CC\u7684\u5185\u5BB9(\u4E0D\u5305\u62EC\u65B9\u62EC\u53F7)\u6DFB\u52A0\u5230\u811A\u672C\u4EE3\u7801\u5185\u6307\u5B9A\u4F4D\u7F6E\uFF0C\u5426\u5219\u811A\u672C\u65E0\u6CD5\u6B63\u5E38\u8FD0\u884C\uFF0C\u5982\u56FE\u6240\u793A\uFF1A", "red");
logs.addLog(
'
'
);
stop = true;
} else {
logs.addLog("\u9605\u8BFB\u6587\u6863\u5931\u8D25", "red");
logs.addLog("\u9519\u8BEF\u539F\u56E0\uFF1A" + ((err == null ? void 0 : err.error) || "\u672A\u77E5\u9519\u8BEF"), "red");
}
markMissionFailed(item, "\u8BFB\u53D6\u6587\u6863\u5931\u8D25");
},
ontimeout: function() {
markMissionFailed(item, "\u8BFB\u53D6\u6587\u6863\u8D85\u65F6");
}
});
}, parseInt(Math.random() * 2e3 + 9e3, 10));
}, doWork = (item) => {
missionList["m" + item["jobid"]]["running"] = true;
logs.addLog("\u5F00\u59CB\u5237\u7AE0\u8282\u6D4B\u8BD5\uFF1A" + item["name"]);
logs.addLog("\u6B63\u5728\u52A0\u8F7D\u4F5C\u4E1A\u6846\u67B6\u5E76\u8C03\u7528 AI \u667A\u80FD\u505A\u9898\u6A21\u5757...", "blue");
let workPanel = _d.getElementById("workPanel");
let frameContent = _d.getElementById("frame_content");
if (workPanel) workPanel.style.display = "block";
if (frameContent) {
let workUrl = _p + "//" + _h + "/work/phone/work?workId=" + String(item["jobid"]).replace("work-", "") + "&courseId=" + courseId + "&clazzId=" + classId + "&knowledgeId=" + chapterId + "&jobId=" + item["jobid"] + "&enc=" + (item["enc"] || "");
frameContent.src = workUrl;
}
let finished = false;
const requestId = "work-" + item["jobid"] + "-" + Date.now() + "-" + Math.random().toString(36).slice(2);
const targetWins = [window, window.top, window.parent].filter(Boolean);
let progressTimer, resultTimer, failureTimer, dispatchTimer;
const onAiProgress = () => {
if (finished) return;
item.lastProgressAt = Date.now();
clearTimeout(progressTimer);
progressTimer = setTimeout(() => {
logs.addLog("\u7AE0\u8282\u6D4B\u8BD5\u3010" + item["name"] + "\u3011\u8FDE\u7EED 3 \u5206\u949F\u6CA1\u6709\u4F5C\u7B54\u8FDB\u5C55\uFF0C\u4FDD\u6301\u672C\u9875\u4F9B\u68C0\u67E5", "orange");
completeTask(false);
}, 18e4);
};
const completeTask = (success = true) => {
if (finished) return;
finished = true;
clearTimeout(progressTimer);
clearTimeout(failureTimer);
clearTimeout(dispatchTimer);
clearInterval(resultTimer);
targetWins.forEach((w) => {
try {
w.removeEventListener("message", onAiMessage);
} catch (e) {
}
try {
w.removeEventListener("drip-ai-work-progress", onAiProgress);
} catch (e) {
}
try {
w.removeEventListener("drip-ai-work-completed", onAiDone);
} catch (e) {
}
});
if (success) {
logs.addLog("\u7AE0\u8282\u6D4B\u8BD5\u3010" + item["name"] + "\u3011\u5DF2\u786E\u8BA4\u5B8C\u6210\uFF0C\u7EE7\u7EED\u540E\u7EED\u4EFB\u52A1", "green");
setTimeout(function() {
if (workPanel) workPanel.style.display = "none";
if (frameContent) frameContent.src = "";
missionList["m" + item["jobid"]]["running"] = false;
missionList["m" + item["jobid"]]["done"] = true;
}, 3e3);
} else {
logs.addLog("\u7AE0\u8282\u6D4B\u8BD5\u3010" + item["name"] + "\u3011AI \u4F5C\u7B54\u672A\u5B8C\u6210\u6216\u63D0\u4EA4\u5931\u8D25\uFF0C\u5DF2\u6682\u505C\u81EA\u52A8\u8DF3\u7AE0\uFF01\u4FDD\u6301\u5F53\u524D\u9875\u9762\u4F9B\u68C0\u67E5", "red");
missionList["m" + item["jobid"]]["running"] = false;
missionList["m" + item["jobid"]]["done"] = false;
missionList["m" + item["jobid"]]["failed"] = true;
_w.jump = false;
if (_w.top) _w.top.jump = false;
}
};
const onAiDone = (e) => {
if (finished) return;
const res = e && e.detail || e && e.data && e.data.detail || e || {};
if (res.requestId !== requestId) return;
if (res.success === true || isCompletedWorkFrame(frameContent, item.jobid, courseId, chapterId)) {
completeTask(true);
} else if (!failureTimer) {
failureTimer = setTimeout(() => completeTask(isCompletedWorkFrame(frameContent, item.jobid, courseId, chapterId)), 15e3);
}
};
const onAiMessage = (msg) => {
var _a;
if (msg.origin !== location.origin || !targetWins.includes(msg.source)) return;
if (((_a = msg.data) == null ? void 0 : _a.type) === "drip-ai-work-completed") onAiDone(msg.data);
};
targetWins.forEach((w) => {
try {
w.addEventListener("drip-ai-work-completed", onAiDone);
w.addEventListener("message", onAiMessage);
w.addEventListener("drip-ai-work-progress", onAiProgress);
} catch (err) {
}
});
const dispatchAi = () => targetWins.forEach((w) => {
var _a, _b;
try {
w.dispatchEvent(new CustomEvent("drip-call-ai-work", {
detail: {
jobid: item["jobid"],
requestId,
name: item["name"] || ((_a = item["property"]) == null ? void 0 : _a["title"]) || "\u7AE0\u8282\u6D4B\u8BD5",
autoSubmit: true
}
}));
w.postMessage({
type: "drip-call-ai-work",
detail: {
jobid: item["jobid"],
requestId,
name: item["name"] || ((_b = item["property"]) == null ? void 0 : _b["title"]) || "\u7AE0\u8282\u6D4B\u8BD5",
autoSubmit: true
}
}, "*");
} catch (err) {
}
});
const frameWaitStarted = Date.now();
const waitForWorkFrame = () => {
if (finished) return;
if (isCompletedWorkFrame(frameContent, item.jobid, courseId, chapterId)) {
completeTask(true);
return;
}
try {
const doc = frameContent == null ? void 0 : frameContent.contentDocument;
const url = new URL(doc.location.href);
if (doc.readyState === "complete" && url.searchParams.get("jobId") === String(item.jobid) && url.searchParams.get("courseId") === String(courseId) && url.searchParams.get("knowledgeId") === String(chapterId) && !url.pathname.includes("selectWorkQuestionYiPiYue")) {
dispatchAi();
return;
}
} catch (e) {
}
if (Date.now() - frameWaitStarted >= 3e4) {
logs.addLog("\u6D4B\u9A8C\u9875\u9762\u672A\u80FD\u5C31\u7EEA\uFF0C\u4FDD\u7559\u73B0\u573A\u4F9B\u68C0\u67E5", "red");
completeTask(false);
return;
}
dispatchTimer = setTimeout(waitForWorkFrame, 500);
};
resultTimer = setInterval(() => {
if (!finished && isCompletedWorkFrame(frameContent, item.jobid, courseId, chapterId)) completeTask(true);
}, 500);
dispatchTimer = setTimeout(waitForWorkFrame, 500);
onAiProgress();
}, missionList = [];
_d.documentElement.dataset.dripUxTasksReady = "true";
if (jobList.length <= 0) {
if (hasQuestionsOnPage() && _w.top.dripDoWork == "1") {
triggerDirectAiAnswer();
return;
}
if (switchNextTabInChapter()) {
return;
}
if (jumpType != 2) {
triggerNextChapter("\u672C\u7AE0\u8282\u6240\u6709\u6807\u7B7E\u9875\u5DF2\u68C0\u67E5\u5B8C\u6BD5");
} else {
logs.addLog("\u6B64\u9875\u65E0\u4EFB\u52A1\uFF0C\u7528\u6237\u8BBE\u7F6E\u4E3A\u4E0D\u8DF3\u8F6C", "green");
}
return;
}
for (let i = 0, l = jobList.length; i < l; i++) {
let item = jobList[i];
if (item["type"] == "video") {
video_getReady(item);
} else if (item["type"] == "document") {
missionList["m" + item["jobid"]] = {
"type": "document",
"jtoken": item["jtoken"],
"jobid": item["jobid"],
"name": item["property"]["name"],
"done": false,
"running": false
};
appendJobRow(_d, `[\u6587\u6863]` + item["property"]["name"]);
} else if (item["type"] == "workid" && _w.top.dripDoWork == "1") {
missionList["m" + item["jobid"]] = {
"type": "work",
"workid": item["property"]["workid"],
"jobid": item["jobid"],
"name": item["property"]["title"],
"enc": item["enc"],
"done": false,
"running": false
};
appendJobRow(_d, `[\u7AE0\u8282\u6D4B\u8BD5]` + item["property"]["title"]);
} else {
try {
let jobName = item["property"]["name"];
if (jobName == void 0) {
jobName = item["property"]["title"];
}
appendJobRow(_d, `\u5DF2\u8DF3\u8FC7\uFF1A` + jobName);
} catch (e) {
}
}
}
loopjob();
} else if (/\/mycourse\/studentcourse$/.test(_l.pathname) && _w.top === _w) {
const homeTakeover = new CourseHomeTakeover(_d, _w);
homeTakeover.start();
} else if (_l.href.includes("mycourse/studentstudy")) {
let checkOffline = function() {
let dleft = _d.getElementsByClassName("left");
if (dleft.length == 1) {
let img = dleft[0].getElementsByTagName("img");
if (img.length == 1) {
if (img[0].src.indexOf("loading.gif") != -1) {
return true;
}
}
}
return false;
};
var audiofile = "data:audio/ogg;base64,T2dnUwACAAAAAAAAAABwRPFFAAAAAGFtEqwBHgF2b3JiaXMAAAAAAUAfAAAAAAAAUHgAAAAAAACZAU9nZ1MAAAAAAAAAAAAAcETxRQEAAAA7J4IBDP8F////////////tQN2b3JiaXMvAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxNDAxMjIgKFR1cnBha8OkcsOkamlpbikGAAAAJQAAAEVOQ09ERVI9U291bmQgU3R1ZGlvLCBsaWJWb3JiaXMgMS4zLjEbAAAAQUxCVU0gQVJUSVNUPUFkdmVudHVyZSBMYW5kFAAAAEFMQlVNPUFkdmVudHVyZSBMYW5kIQAAAEVOQ09ESU5HIEFQUExJQ0FUSU9OPVNvdW5kIFN0dWRpbxUAAABBUlRJU1Q9QWR2ZW50dXJlIExhbmQjAAAAVElUTEU9RW1wdHkgTG9vcCBGb3IgSlMgUGVyZm9ybWFuY2UBBXZvcmJpcxJCQ1YBAAABAAxSFCElGVNKYwiVUlIpBR1jUFtHHWPUOUYhZBBTiEkZpXtPKpVYSsgRUlgpRR1TTFNJlVKWKUUdYxRTSCFT1jFloXMUS4ZJCSVsTa50FkvomWOWMUYdY85aSp1j1jFFHWNSUkmhcxg6ZiVkFDpGxehifDA6laJCKL7H3lLpLYWKW4q91xpT6y2EGEtpwQhhc+211dxKasUYY4wxxsXiUyiC0JBVAAABAABABAFCQ1YBAAoAAMJQDEVRgNCQVQBABgCAABRFcRTHcRxHkiTLAkJDVgEAQAAAAgAAKI7hKJIjSZJkWZZlWZameZaouaov+64u667t6roOhIasBADIAAAYhiGH3knMkFOQSSYpVcw5CKH1DjnlFGTSUsaYYoxRzpBTDDEFMYbQKYUQ1E45pQwiCENInWTOIEs96OBi5zgQGrIiAIgCAACMQYwhxpBzDEoGIXKOScggRM45KZ2UTEoorbSWSQktldYi55yUTkompbQWUsuklNZCKwUAAAQ4AAAEWAiFhqwIAKIAABCDkFJIKcSUYk4xh5RSjinHkFLMOcWYcowx6CBUzDHIHIRIKcUYc0455iBkDCrmHIQMMgEAAAEOAAABFkKhISsCgDgBAIMkaZqlaaJoaZooeqaoqqIoqqrleabpmaaqeqKpqqaquq6pqq5seZ5peqaoqp4pqqqpqq5rqqrriqpqy6ar2rbpqrbsyrJuu7Ks256qyrapurJuqq5tu7Js664s27rkearqmabreqbpuqrr2rLqurLtmabriqor26bryrLryratyrKua6bpuqKr2q6purLtyq5tu7Ks+6br6rbqyrquyrLu27au+7KtC7vourauyq6uq7Ks67It67Zs20LJ81TVM03X9UzTdVXXtW3VdW1bM03XNV1XlkXVdWXVlXVddWVb90zTdU1XlWXTVWVZlWXddmVXl0XXtW1Vln1ddWVfl23d92VZ133TdXVblWXbV2VZ92Vd94VZt33dU1VbN11X103X1X1b131htm3fF11X11XZ1oVVlnXf1n1lmHWdMLqurqu27OuqLOu+ruvGMOu6MKy6bfyurQvDq+vGseu+rty+j2rbvvDqtjG8um4cu7Abv+37xrGpqm2brqvrpivrumzrvm/runGMrqvrqiz7uurKvm/ruvDrvi8Mo+vquirLurDasq/Lui4Mu64bw2rbwu7aunDMsi4Mt+8rx68LQ9W2heHVdaOr28ZvC8PSN3a+AACAAQcAgAATykChISsCgDgBAAYhCBVjECrGIIQQUgohpFQxBiFjDkrGHJQQSkkhlNIqxiBkjknIHJMQSmiplNBKKKWlUEpLoZTWUmotptRaDKG0FEpprZTSWmopttRSbBVjEDLnpGSOSSiltFZKaSlzTErGoKQOQiqlpNJKSa1lzknJoKPSOUippNJSSam1UEproZTWSkqxpdJKba3FGkppLaTSWkmptdRSba21WiPGIGSMQcmck1JKSamU0lrmnJQOOiqZg5JKKamVklKsmJPSQSglg4xKSaW1kkoroZTWSkqxhVJaa63VmFJLNZSSWkmpxVBKa621GlMrNYVQUgultBZKaa21VmtqLbZQQmuhpBZLKjG1FmNtrcUYSmmtpBJbKanFFluNrbVYU0s1lpJibK3V2EotOdZaa0ot1tJSjK21mFtMucVYaw0ltBZKaa2U0lpKrcXWWq2hlNZKKrGVklpsrdXYWow1lNJiKSm1kEpsrbVYW2w1ppZibLHVWFKLMcZYc0u11ZRai621WEsrNcYYa2415VIAAMCAAwBAgAlloNCQlQBAFAAAYAxjjEFoFHLMOSmNUs45JyVzDkIIKWXOQQghpc45CKW01DkHoZSUQikppRRbKCWl1losAACgwAEAIMAGTYnFAQoNWQkARAEAIMYoxRiExiClGIPQGKMUYxAqpRhzDkKlFGPOQcgYc85BKRljzkEnJYQQQimlhBBCKKWUAgAAChwAAAJs0JRYHKDQkBUBQBQAAGAMYgwxhiB0UjopEYRMSielkRJaCylllkqKJcbMWomtxNhICa2F1jJrJcbSYkatxFhiKgAA7MABAOzAQig0ZCUAkAcAQBijFGPOOWcQYsw5CCE0CDHmHIQQKsaccw5CCBVjzjkHIYTOOecghBBC55xzEEIIoYMQQgillNJBCCGEUkrpIIQQQimldBBCCKGUUgoAACpwAAAIsFFkc4KRoEJDVgIAeQAAgDFKOSclpUYpxiCkFFujFGMQUmqtYgxCSq3FWDEGIaXWYuwgpNRajLV2EFJqLcZaQ0qtxVhrziGl1mKsNdfUWoy15tx7ai3GWnPOuQAA3AUHALADG0U2JxgJKjRkJQCQBwBAIKQUY4w5h5RijDHnnENKMcaYc84pxhhzzjnnFGOMOeecc4wx55xzzjnGmHPOOeecc84556CDkDnnnHPQQeicc845CCF0zjnnHIQQCgAAKnAAAAiwUWRzgpGgQkNWAgDhAACAMZRSSimllFJKqKOUUkoppZRSAiGllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimVUkoppZRSSimllFJKKaUAIN8KBwD/BxtnWEk6KxwNLjRkJQAQDgAAGMMYhIw5JyWlhjEIpXROSkklNYxBKKVzElJKKYPQWmqlpNJSShmElGILIZWUWgqltFZrKam1lFIoKcUaS0qppdYy5ySkklpLrbaYOQelpNZaaq3FEEJKsbXWUmuxdVJSSa211lptLaSUWmstxtZibCWlllprqcXWWkyptRZbSy3G1mJLrcXYYosxxhoLAOBucACASLBxhpWks8LR4EJDVgIAIQEABDJKOeecgxBCCCFSijHnoIMQQgghREox5pyDEEIIIYSMMecghBBCCKGUkDHmHIQQQgghhFI65yCEUEoJpZRSSucchBBCCKWUUkoJIYQQQiillFJKKSGEEEoppZRSSiklhBBCKKWUUkoppYQQQiillFJKKaWUEEIopZRSSimllBJC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", audioPlayer = new Audio(audiofile);
_w.top.backNow = 1;
audioPlayer.loop = true;
_w.audioPlayer = audioPlayer;
setInterval(function() {
try {
_w.jQuery.fn.viewer.Constructor.prototype.show = () => {
};
} catch (e) {
}
}, 1e3);
try {
_w.dripScriptList.push("drip7boi-legacy");
} catch (e) {
_w.dripScriptList = ["drip7boi-legacy"];
}
setInterval(function() {
if (checkOffline()) {
setTimeout(function() {
if (checkOffline()) {
_l.reload();
}
}, 1e4);
}
}, 3e3);
_d.addEventListener("visibilitychange", function() {
var c = 0;
if (_w.top.backNow == 0) {
_d.title = "\u26A0\uFE0F\u8BF7\u5148\u6FC0\u6D3B\u6302\u673A";
return;
} else {
_d.title = "\u5B66\u751F\u5B66\u4E60\u9875\u9762";
}
if (_d.hidden) {
try {
var p = audioPlayer.play();
if (p && p.catch) p.catch(function() {
});
} catch (e) {
}
var timer = setInterval(function() {
if (!_d.hidden || _w.top.backNow == 0) {
clearInterval(timer);
if (_w.top.backNow == 0) {
_d.title = "\u26A0\uFE0F\u8BF7\u5148\u6FC0\u6D3B\u6302\u673A";
} else {
_d.title = "\u5B66\u751F\u5B66\u4E60\u9875\u9762";
}
return;
}
if (c) {
_d.title = "\u{1F648}\u6302\u673A\u4E2D";
c = 0;
} else {
_d.title = "\u{1F649}\u6302\u673A\u4E2D";
c = 1;
}
}, 1300);
} else {
try {
audioPlayer.pause();
} catch (e) {
}
}
});
_w.dripGetTeacherAjax = _w.getTeacherAjax;
_w.getTeacherAjax = (courseid, classid, cid) => {
if (cid == getQueryVariable("chapterId")) {
return;
}
_w.top.dripPageRd = "";
_w.dripGetTeacherAjax(courseid, classid, cid);
};
if (disableMonitor == 1) {
_w.appendChild = _w.Element.prototype.appendChild;
_w.Element.prototype.appendChild = function() {
try {
if (arguments[0].src.indexOf("detect.chaoxing.com") > 0) {
return;
}
} catch (e) {
}
_w.appendChild.apply(this, arguments);
};
}
_w.jump = false;
const rebindChapterClick = (node) => {
const id = node.getAttribute("id") || "";
if (id.indexOf("cur") < 0) return;
const handler = "getTeacherAjax('" + courseId + "','" + classId + "','" + id.replace("cur", "") + "');";
if (node.getAttribute("onclick") !== handler) node.setAttribute("onclick", handler);
};
setInterval(function() {
if (getQueryVariable("mooc2") == "1") {
let tabs = _d.getElementsByClassName("posCatalog_select");
for (let i = 0, l = tabs.length; i < l; i++) {
if (tabs[i].getAttribute("class") == "posCatalog_select") rebindChapterClick(tabs[i]);
}
} else {
for (const node of _d.querySelectorAll("h4, h5")) rebindChapterClick(node);
}
}, 1e3);
_w.executeChapterJump = executeChapterJump;
try {
if (_w.top) _w.top.executeChapterJump = executeChapterJump;
} catch (e) {
}
_w.jjump = (rd) => {
executeChapterJump();
};
try {
if (_w.top) _w.top.jjump = _w.jjump;
} catch (e) {
}
setInterval(function() {
if (_w.jump || _w.top && _w.top.jump || _w.parent && _w.parent.jump) {
_w.jump = false;
try {
if (_w.top) _w.top.jump = false;
} catch (e) {
}
try {
if (_w.parent) _w.parent.jump = false;
} catch (e) {
}
_w.top.dripDoneWorkId = "";
executeChapterJump();
}
}, 300);
} else if (_l.href.indexOf("work/phone/doHomeWork") > 0) {
var wIdE = _d.getElementById("workLibraryId") || _d.getElementById("oldWorkId"), wid = wIdE.value;
_w.top.dripWorkDone = false;
_w.aalert = _w.alert;
_w.alert = (msg) => {
if (msg == "\u4FDD\u5B58\u6210\u529F") {
_w.top.dripDoneWorkId = getQueryVariable("workId");
return;
}
aalert(msg);
};
if (_w.top.dripDoneWorkId == getQueryVariable("workId")) {
_w.top.dripWorkDone = true;
return;
}
_w.confirm = (msg) => {
return true;
};
var questionList = [], questionsElement = _d.getElementsByClassName("Py-mian1"), questionNum = questionsElement.length, totalQuestionNum = questionNum;
for (let i = 0; i < questionNum; i++) {
let questionElement = questionsElement[i], idElements = questionElement.getElementsByTagName("input"), questionId = "0", question = questionElement.getElementsByClassName("Py-m1-title fs16")[0].innerHTML;
question = handleImgs(question).replace(/(<([^>]+)>)/ig, "").replace(/[0-9]{1,3}.\[(.*?)\]/ig, "").replaceAll(
"\n",
""
).replace(/^\s+/ig, "").replace(/\s+$/ig, "");
for (let z = 0, k = idElements.length; z < k; z++) {
try {
if (idElements[z].getAttribute("name").indexOf("answer") >= 0) {
questionId = idElements[z].getAttribute("name").replace("type", "");
break;
}
} catch (e) {
console.log(e);
continue;
}
}
if (questionId == "0" || question == "") {
continue;
}
typeE = questionElement.getElementsByTagName("input");
if (typeE == null || typeE == []) {
continue;
}
let typeN = "fuckme";
for (let g = 0, h = typeE.length; g < h; g++) {
if (typeE[g].id == "answertype" + questionId.replace("answer", "").replace("check", "")) {
typeN = typeE[g].value;
break;
}
}
if (["0", "1", "3"].indexOf(typeN) < 0) {
continue;
}
type = {
"0": "\u5355\u9009\u9898",
"1": "\u591A\u9009\u9898",
"3": "\u5224\u65AD\u9898"
}[typeN];
let optionList = {
length: 0
};
if (["\u5355\u9009\u9898", "\u591A\u9009\u9898"].indexOf(type) >= 0) {
let answersElements = questionElement.getElementsByClassName("answerList")[0].getElementsByTagName(
"li"
);
for (let x = 0, j = answersElements.length; x < j; x++) {
let optionE = answersElements[x], optionTextE = trim(optionE.innerHTML.replace(/(^\s*)|(\s*$)/g, "")), optionText = optionTextE.slice(1).replace(/(^\s*)|(\s*$)/g, ""), optionValue = optionTextE.slice(0, 1), optionId = optionE.getAttribute("id-param");
if (optionText == "") {
break;
}
optionList[optionText] = {
"id": optionId,
"value": optionValue
};
optionList.length++;
}
if (answersElements.length != optionList.length) {
continue;
}
}
questionList.push({
"question": question,
"type": type,
"questionid": questionId,
"options": optionList
});
}
var qu = null, nowTime = -4e3, busyThread = questionList.length, ctOnload = function(res, quu) {
busyThread -= 1;
var ctResult = {
"code": -1,
"finalUrl": "",
"data": "\u672A\u627E\u5230\u7B54\u6848"
};
if (res) {
try {
var responseText = res.responseText, ctResult = JSON.parse(responseText);
} catch (e) {
console.log(e);
if (res.finalUrl.includes("getAnswer.php")) {
_w.top.dripWorkInfo = "\u67E5\u9898\u9519\u8BEF\uFF0C\u670D\u52A1\u5668\u8FDE\u63A5\u5931\u8D25";
return;
}
}
}
try {
let choiceEs = _d.getElementsByTagName("li");
if (ctResult["code"] == -1) {
try {
if (ctResult["msg"] !== void 0) {
_w.top.dripWorkInfo = "\u9898\u76EE\uFF1A" + quu["question"] + "\uFF1A\u672A\u641C\u7D22\u5230\u7B54\u6848";
}
} catch (e) {
}
return;
} else if (ctResult["code"] == -2) {
_w.top.dripWorkInfo = ctResult["msg"];
return;
}
try {
var result = ctResult["data"];
} catch (e) {
_w.top.dripWorkInfo = "\u7B54\u6848\u89E3\u6790\u5931\u8D25";
return;
}
_w.top.dripWorkInfo = "\u9898\u76EE\uFF1A" + quu["question"] + "\uFF1A" + result;
switch (quu["type"]) {
case "\u5224\u65AD\u9898":
(function() {
let answer = "abaabaaba";
if ("\u6B63\u786E\u662F\u5BF9\u221ATri".indexOf(result) >= 0) {
answer = "true";
} else if ("\u9519\u8BEF\u5426\u9519\xD7Fwr".indexOf(result) >= 0) {
answer = "false";
}
for (let u = 0, k = choiceEs.length; u < k; u++) {
if (choiceEs[u].getAttribute("val-param") == answer && choiceEs[u].getAttribute(
"id-param"
) == quu["questionid"].replace(
"answer",
""
)) {
choiceEs[u].click();
questionNum -= 1;
return;
}
}
if (randomDo == 1 && accuracy < 100) {
_w.top.dripWorkInfo = quu["question"] + "\uFF1A\u672A\u627E\u5230\u6B63\u786E\u7B54\u6848\uFF0C\u81EA\u52A8\u9009\u3010\u9519\u3011";
for (let u = 0, k = choiceEs.length; u < k; u++) {
if (choiceEs[u].getElementsByTagName("em").length < 1) {
continue;
}
if (choiceEs[u].getAttribute("val-param") == "false" && choiceEs[u].getAttribute(
"id-param"
) == quu["questionid"].replace("answer", "")) {
choiceEs[u].click();
return;
}
}
}
})();
break;
case "\u5355\u9009\u9898":
(function() {
let answerData = result;
for (let option in quu["options"]) {
if (trim(option).replace(/\s/ig, "") == trim(answerData).replace(/\s/ig, "") || trim(
option
).replace(/\s/ig, "").includes(trim(answerData).replace(/\s/ig, "")) || trim(answerData).replace(/\s/ig, "").includes(trim(option).replace(/\s/ig, ""))) {
for (let y = 0, j = choiceEs.length; y < j; y++) {
if (choiceEs[y].getElementsByTagName(
"em"
).length < 1) {
continue;
}
if (choiceEs[y].getElementsByTagName(
"em"
)[0].getAttribute(
"id-param"
) == quu["options"][option]["value"] && choiceEs[y].getAttribute("id-param") == quu["questionid"].replace(
"answer",
""
)) {
if (!choiceEs[y].getAttribute(
"class"
).includes("cur")) {
choiceEs[y].click();
}
questionNum -= 1;
return;
}
}
}
}
if (randomDo == 1 && accuracy < 100) {
_w.top.dripWorkInfo = quu["question"] + "\uFF1A\u672A\u627E\u5230\u6B63\u786E\u7B54\u6848\uFF0C\u81EA\u52A8\u9009\u3010B\u3011";
for (let y = 0, j = choiceEs.length; y < j; y++) {
if (choiceEs[y].getElementsByTagName("em").length < 1) {
continue;
}
if (choiceEs[y].getElementsByTagName("em")[0].getAttribute("id-param") == "B" && choiceEs[y].getAttribute(
"id-param"
) == quu["questionid"].replace("answer", "")) {
if (!choiceEs[y].getAttribute("class").includes("cur")) {
choiceEs[y].click();
}
return;
}
}
}
})();
break;
case "\u591A\u9009\u9898":
(function() {
let answerData = trim(result).replace(/\s/ig, ""), hasAnswer = false;
for (let option in quu["options"]) {
if (answerData.includes(trim(option).replace(/\s/ig, ""))) {
for (let y = 0, j = choiceEs.length; y < j; y++) {
if (choiceEs[y].getElementsByTagName(
"em"
).length < 1) {
continue;
}
if (choiceEs[y].getElementsByTagName(
"em"
)[0].getAttribute(
"id-param"
) == quu["options"][option]["value"] && choiceEs[y].getAttribute("id-param") == quu["questionid"].replace(
"answer",
""
)) {
if (!choiceEs[y].getAttribute(
"class"
).includes("cur")) {
choiceEs[y].click();
}
hasAnswer = true;
break;
}
}
}
}
if (hasAnswer) {
questionNum -= 1;
} else if (randomDo == 1 && accuracy < 100) {
_w.top.dripWorkInfo = quu["question"] + "\uFF1A\u672A\u627E\u5230\u6B63\u786E\u7B54\u6848\uFF0C\u81EA\u52A8\u5168\u9009";
for (let y = 0, j = choiceEs.length; y < j; y++) {
if (choiceEs[y].getElementsByTagName("em").length < 1) {
continue;
}
if (choiceEs[y].getAttribute("id-param") == quu["questionid"].replace("answer", "")) {
if (!choiceEs[y].getAttribute("class").includes("cur")) {
choiceEs[y].click();
}
}
}
}
})();
break;
}
} catch (e) {
console.log(e);
}
};
for (let i = 0, l = questionList.length; i < l; i++) {
nowTime += parseInt(Math.random() * 3e3 + 3500, 10);
setTimeout(function() {
qu = questionList[i];
let param2 = "question=" + encodeURIComponent(
qu["question"]
);
if (ctUrl.includes("icodef")) {
param2 += "&type=" + {
"\u5355\u9009\u9898": "0",
"\u591A\u9009\u9898": "1",
"\u5224\u65AD\u9898": "3"
}[qu["type"]] + "&id=" + wid;
}
GM_xmlhttpRequest({
method: "POST",
headers: {
"Content-type": "application/x-www-form-urlencoded",
"Authorization": token
},
url: ctUrl,
timeout: 2e3,
data: param2,
onload: function(res) {
ctOnload(res, qu);
},
onerror: function() {
ctOnload(false, qu);
},
ontimeout: function() {
ctOnload(false, qu);
}
});
}, nowTime);
}
var workInterval = setInterval(function() {
if (busyThread != 0) {
return;
}
clearInterval(workInterval);
if (Math.floor((totalQuestionNum - questionNum) / totalQuestionNum) * 100 >= accuracy && _w.top.dripAutoSubmit == "1") {
_w.top.dripDoneWorkId = getQueryVariable("workId");
_w.top.dripWorkInfo = "\u6B63\u786E\u7387\u7B26\u5408\u6807\u51C6\uFF0C\u5DF2\u63D0\u4EA4\u7B54\u6848";
setTimeout(function() {
submitCheckTimes();
escapeBlank();
submitAction();
}, parseInt(Math.random() * 2e3 + 3e3, 10));
} else if (_w.top.dripAutoSave == 1) {
_w.top.dripWorkInfo = "\u6B63\u786E\u7387\u4E0D\u7B26\u5408\u6807\u51C6\u6216\u672A\u8BBE\u7F6E\u81EA\u52A8\u63D0\u4EA4\uFF0C\u5DF2\u81EA\u52A8\u4FDD\u5B58\u7B54\u6848";
if (Math.floor((totalQuestionNum - questionNum) / totalQuestionNum) >= 0) {
setTimeout(function() {
_w.top.dripDoneWorkId = getQueryVariable("workId");
_w.noSubmit();
}, 2e3);
}
} else {
_w.top.dripWorkInfo = "\u7528\u6237\u8BBE\u7F6E\u4E3A\u4E0D\u81EA\u52A8\u4FDD\u5B58\u7B54\u6848\uFF0C\u8BF7\u624B\u52A8\u63D0\u4EA4\u6216\u4FDD\u5B58\u4F5C\u4E1A";
}
}, 1e3);
} else if (_l.href.includes("work/phone/selectWorkQuestionYiPiYue")) {
_w.top.dripWorkDone = true;
_w.top.dripDoneWorkId = getQueryVariable("workId");
} else if (_l.href.includes("stat2-ans.chaoxing.com/task/s/index")) {
if (_w.top == _w) {
return;
}
_d.getElementsByClassName("page-container studentStatistic")[0].setAttribute("class", "studentStatistic");
_d.getElementsByClassName("page-item item-task-list minHeight390")[0].remove();
_d.getElementsByClassName("subNav clearfix")[0].remove();
setInterval(function() {
_l.reload();
}, 9e4);
}
})();
(() => {
var STORAGE_PREFIX = "drip7boi.";
var DEFAULT_SETTINGS = {
aiAnswerEnabled: true,
autoClick: true,
goodStudent: false,
alterTitle: true,
redo: false,
fuzzyMatch: true,
autoSubmit: false,
forceSubmit: false,
examAutoNext: false,
requestInterval: 1,
answerDelayMin: 1200,
answerDelayMax: 3200,
requestTimeout: 45e3,
maxRetries: 2
};
var LICENSE_CONFIG = {
apiBaseUrl: "https://xxt.491746.xyz/chaoxing-api",
storageKeys: {
installId: "drip7boi.installId",
accessToken: "drip7boi.accessToken",
balancePoints: "drip7boi.balancePoints"
},
clientVersion: "6.10.10"
};
var QUESTION_TYPES = {
SINGLE: "single",
MULTIPLE: "multiple",
JUDGE: "judge",
BLANK: "blank",
TEXT: "text",
WRITING: "writing",
TRANSLATION: "translation",
UNKNOWN: "unknown"
};
var TYPE_NAME_MAP = /* @__PURE__ */ new Map([
["\u5355\u9009\u9898", QUESTION_TYPES.SINGLE],
["\u5355\u9879\u9009\u62E9\u9898", QUESTION_TYPES.SINGLE],
["\u5355\u9009", QUESTION_TYPES.SINGLE],
["\u591A\u9009\u9898", QUESTION_TYPES.MULTIPLE],
["\u591A\u9879\u9009\u62E9\u9898", QUESTION_TYPES.MULTIPLE],
["\u591A\u9009", QUESTION_TYPES.MULTIPLE],
["\u4E0D\u5B9A\u9879\u9009\u62E9\u9898", QUESTION_TYPES.MULTIPLE],
["\u586B\u7A7A\u9898", QUESTION_TYPES.BLANK],
["\u586B\u7A7A", QUESTION_TYPES.BLANK],
["\u5224\u65AD\u9898", QUESTION_TYPES.JUDGE],
["\u662F\u975E\u9898", QUESTION_TYPES.JUDGE],
["\u5224\u65AD", QUESTION_TYPES.JUDGE],
["\u7B80\u7B54", QUESTION_TYPES.TEXT],
["\u7B80\u7B54\u9898", QUESTION_TYPES.TEXT],
["\u95EE\u7B54\u9898", QUESTION_TYPES.TEXT],
["\u540D\u8BCD\u89E3\u91CA", QUESTION_TYPES.TEXT],
["\u8BBA\u8FF0\u9898", QUESTION_TYPES.TEXT],
["\u8BA1\u7B97\u9898", QUESTION_TYPES.TEXT],
["\u8D44\u6599\u9898", QUESTION_TYPES.TEXT],
["\u6750\u6599\u9898", QUESTION_TYPES.TEXT],
["\u9605\u8BFB\u7406\u89E3", QUESTION_TYPES.TEXT],
["\u7EFC\u5408\u9898", QUESTION_TYPES.TEXT],
["\u5199\u4F5C\u9898", QUESTION_TYPES.WRITING],
["\u4F5C\u6587\u9898", QUESTION_TYPES.WRITING],
["\u7FFB\u8BD1\u9898", QUESTION_TYPES.TRANSLATION]
]);
var labels = {
[QUESTION_TYPES.SINGLE]: "\u5355\u9009\u9898",
[QUESTION_TYPES.MULTIPLE]: "\u591A\u9009\u9898",
[QUESTION_TYPES.JUDGE]: "\u5224\u65AD\u9898",
[QUESTION_TYPES.BLANK]: "\u586B\u7A7A\u9898",
[QUESTION_TYPES.TEXT]: "\u7B80\u7B54\u9898",
[QUESTION_TYPES.WRITING]: "\u5199\u4F5C\u9898",
[QUESTION_TYPES.TRANSLATION]: "\u7FFB\u8BD1\u9898",
[QUESTION_TYPES.UNKNOWN]: "\u672A\u77E5\u9898\u578B"
};
var formats = {
[QUESTION_TYPES.SINGLE]: "\u53EA\u8FD4\u56DE\u4E00\u4E2A\u6B63\u786E\u9009\u9879\u7684\u5B8C\u6574\u9009\u9879\u6587\u672C\uFF0C\u4E0D\u8981\u8FD4\u56DE\u5B57\u6BCD\u3002",
[QUESTION_TYPES.MULTIPLE]: "\u53EA\u8FD4\u56DE\u6240\u6709\u6B63\u786E\u9009\u9879\u7684\u5B8C\u6574\u9009\u9879\u6587\u672C\uFF0C\u591A\u4E2A\u7B54\u6848\u7528 | \u5206\u9694\uFF0C\u4E0D\u8981\u8FD4\u56DE\u5B57\u6BCD\u3002",
[QUESTION_TYPES.JUDGE]: "\u53EA\u8FD4\u56DE \u6B63\u786E \u6216 \u9519\u8BEF\u3002",
[QUESTION_TYPES.BLANK]: "\u53EA\u8FD4\u56DE\u586B\u7A7A\u5185\u5BB9\uFF1B\u591A\u4E2A\u7A7A\u7528 | \u5206\u9694\u3002",
[QUESTION_TYPES.TEXT]: "\u53EA\u8FD4\u56DE\u53EF\u76F4\u63A5\u586B\u5199\u7684\u7B54\u6848\uFF0C\u5C3D\u91CF\u7B80\u6D01\u3002",
[QUESTION_TYPES.WRITING]: "\u53EA\u8FD4\u56DE\u4F5C\u6587\u6B63\u6587\u3002",
[QUESTION_TYPES.TRANSLATION]: "\u53EA\u8FD4\u56DE\u7FFB\u8BD1\u7ED3\u679C\u3002"
};
function buildPrompt(question) {
var _a;
const lines = [
`\u9898\u578B\uFF1A${labels[question.type] || question.typeName || labels.unknown}`,
`\u7B54\u9898\u683C\u5F0F\uFF1A${formats[question.type] || formats[QUESTION_TYPES.TEXT]}`,
`\u9898\u76EE\uFF1A${question.stem}`
];
if ((_a = question.options) == null ? void 0 : _a.length) {
lines.push("\u9009\u9879\uFF1A");
question.options.forEach((option, index) => {
lines.push(`${String.fromCharCode(65 + index)}. ${option.text}`);
});
}
lines.push("\u4E25\u683C\u53EA\u8F93\u51FA\u7B54\u6848\u672C\u8EAB\u3002");
return lines.join("\n");
}
function formatHttpFailure(code) {
const status = Number(String(code).replace(/^HTTP_/i, ""));
const descriptions = {
401: "\u4F7F\u7528\u72B6\u6001\u5DF2\u5931\u6548\uFF0C\u8BF7\u5237\u65B0\u9875\u9762\u91CD\u8BD5",
403: "\u670D\u52A1\u62D2\u7EDD\u8BF7\u6C42\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u68C0\u67E5\u8BBF\u95EE\u6743\u9650",
404: "\u670D\u52A1\u63A5\u53E3\u4E0D\u5B58\u5728\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u68C0\u67E5\u5730\u5740",
429: "\u8BF7\u6C42\u8FC7\u5FEB\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",
500: "\u670D\u52A1\u5668\u5904\u7406\u5F02\u5E38\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",
502: "\u7B54\u9898\u670D\u52A1\u8FDE\u63A5\u4E2D\u65AD\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",
503: "\u7B54\u9898\u670D\u52A1\u6682\u4E0D\u53EF\u7528\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",
504: "\u7B54\u9898\u670D\u52A1\u54CD\u5E94\u8D85\u65F6\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5"
};
return (descriptions[status] || "\u670D\u52A1\u8FD4\u56DE\u5F02\u5E38\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5") + "\uFF08HTTP " + status + "\uFF09";
}
function htmlToText(value) {
const template = document.createElement("template");
template.innerHTML = String(value);
return (template.content ? template.content.textContent : template.textContent) || "";
}
function normalizeText(value = "") {
return htmlToText(value).replace(/\u00a0/g, " ").replace(/[ \t\r\n]+/g, " ").replace(/^[A-Z][.、.\s]+/i, "").trim();
}
function normalizeOption(value = "") {
return normalizeText(value).replace(/^[A-Z][.、.\s]*/i, "").replace(/^选项[A-Z][::\s]*/i, "").trim();
}
function stripQuestionPrefix(value = "") {
return normalizeText(value).replace(/^[((【\[]?\s*(单选题|单项选择题|多选题|多项选择题|不定项选择题|判断题|是非题|填空题|简答题|问答题|论述题|材料题|资料题|写作题|作文题|翻译题).*?[))】\]]?\s*/u, "").replace(/^\d+[.、.]\s*/, "").trim();
}
function splitAnswer(value = "") {
return String(value).replace(/[,、;;]+/g, "|").split("|").map((s) => s.trim()).filter(Boolean);
}
function parseJudgeAnswer(value = "") {
const s = String(value).toLowerCase().replace(/[。.,,!!\s]/g, "");
const trueWords = ["\u6B63\u786E", "\u5BF9", "\u662F", "\u221A", "true", "t", "right", "yes"];
const falseWords = ["\u9519\u8BEF", "\u9519", "\u5426", "\u4E0D\u662F", "\xD7", "x", "false", "f", "wrong", "no"];
if (trueWords.includes(s)) return true;
if (falseWords.includes(s)) return false;
if (falseWords.some((word) => s.includes(word))) return false;
if (trueWords.some((word) => s.includes(word))) return true;
return null;
}
function similarity(a = "", b = "") {
const left = normalizeOption(a);
const right = normalizeOption(b);
if (!left || !right) return 0;
if (left === right) return 1;
if (left.includes(right) || right.includes(left)) return 0.92;
const rows = left.length + 1;
const cols = right.length + 1;
const dp = Array.from({ length: rows }, () => Array(cols).fill(0));
for (let i = 0; i < rows; i += 1) dp[i][0] = i;
for (let j = 0; j < cols; j += 1) dp[0][j] = j;
for (let i = 1; i < rows; i += 1) {
for (let j = 1; j < cols; j += 1) {
const cost = left[i - 1] === right[j - 1] ? 0 : 1;
dp[i][j] = Math.min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + cost);
}
}
return 1 - dp[left.length][right.length] / Math.max(left.length, right.length);
}
function matchSingleOption(options, answer, fuzzyEnabled = true, threshold = 0.5) {
const normalized = normalizeOption(answer);
let index = options.findIndex((option) => normalizeOption(option.text) === normalized);
if (index !== -1) return index;
index = options.findIndex((option) => normalized.includes(normalizeOption(option.text)) || normalizeOption(option.text).includes(normalized));
if (index !== -1) return index;
if (!fuzzyEnabled) return -1;
let best = { index: -1, score: 0 };
options.forEach((option, i) => {
const score = similarity(option.text, normalized);
if (score > best.score) best = { index: i, score };
});
return best.score >= threshold ? best.index : -1;
}
function matchMultipleOptions(options, answer, fuzzyEnabled = true) {
const parts = splitAnswer(answer);
const indices = /* @__PURE__ */ new Set();
for (const part of parts.length ? parts : [answer]) {
const index = matchSingleOption(options, part, fuzzyEnabled);
if (index !== -1) indices.add(index);
}
if (indices.size === 0) {
options.forEach((option, index) => {
const optionText = normalizeOption(option.text);
if (optionText && normalizeOption(answer).includes(optionText)) indices.add(index);
});
}
return [...indices];
}
function $(selector, root = document) {
return root.querySelector(selector);
}
function $all(selector, root = document) {
return Array.from(root.querySelectorAll(selector));
}
function clickElement(element) {
if (!element) return false;
element.dispatchEvent(new MouseEvent("mouseover", { bubbles: true }));
element.dispatchEvent(new MouseEvent("mousedown", { bubbles: true }));
element.dispatchEvent(new MouseEvent("mouseup", { bubbles: true }));
element.click();
return true;
}
function setNativeValue(element, value) {
var _a;
if (!element) return;
const ownerWindow = ((_a = element.ownerDocument) == null ? void 0 : _a.defaultView) || window;
const proto = element.tagName === "TEXTAREA" ? ownerWindow.HTMLTextAreaElement.prototype : ownerWindow.HTMLInputElement.prototype;
const descriptor = Object.getOwnPropertyDescriptor(proto, "value");
if (descriptor == null ? void 0 : descriptor.set) descriptor.set.call(element, value);
else element.value = value;
element.dispatchEvent(new ownerWindow.Event("input", { bubbles: true }));
element.dispatchEvent(new ownerWindow.Event("change", { bubbles: true }));
}
function fillEmbeddedEditor(input, value) {
var _a, _b;
const question = (_a = input == null ? void 0 : input.closest) == null ? void 0 : _a.call(input, ".Py-mian1, .singleQuesId, .questionLi, .TiMu, .question-item, .marBom60");
if (!question) return false;
const inputs = $all('textarea[name^="answerEditor"], textarea[name^="answer"], textarea', question);
const frames = $all('iframe[id^="ueditor_"]', question);
const inputIndex = Math.max(0, inputs.indexOf(input));
const frame = frames[inputIndex] || frames[0];
if (!frame) return false;
try {
const editorDocument = frame.contentDocument;
const editorBody = editorDocument == null ? void 0 : editorDocument.body;
if (!editorBody) return false;
editorBody.textContent = "";
const paragraph = editorDocument.createElement("p");
paragraph.textContent = String(value != null ? value : "");
editorBody.appendChild(paragraph);
const EditorEvent = ((_b = editorDocument.defaultView) == null ? void 0 : _b.Event) || Event;
editorBody.dispatchEvent(new EditorEvent("input", { bubbles: true }));
editorBody.dispatchEvent(new EditorEvent("change", { bubbles: true }));
editorBody.dispatchEvent(new EditorEvent("blur", { bubbles: true }));
return true;
} catch (e) {
return false;
}
}
function findSameOriginFrames(root = document) {
return $all("iframe", root).filter((frame) => {
try {
return Boolean(frame.contentDocument);
} catch (e) {
return false;
}
});
}
function findSameOriginDocuments(root = document) {
const documents = [root];
const visit = (doc) => {
for (const frame of findSameOriginFrames(doc)) {
const child = frame.contentDocument;
if (!child || documents.includes(child)) continue;
documents.push(child);
visit(child);
}
};
visit(root);
return documents;
}
var QuestionParser = class {
findQuestions(root = document) {
const groups = [
() => $all(".mark_table .questionLi, .questionLi", root),
() => $all(".zquestions .Py-mian1, .Py-mian1", root),
() => $all(".TiMu", root),
() => $all(".singleQuesId, .question-item, .marBom60", root),
() => $all(".whiteDiv", root).filter((node) => node.querySelector(".stem_answer")),
() => $all(".mark_item", root).filter((node) => node.querySelector(".stem_answer"))
];
for (const getGroup of groups) {
const candidates = this.normalizeCandidates(getGroup());
if (candidates.length) return candidates;
}
return [];
}
normalizeCandidates(nodes) {
return [...new Set(nodes)].filter((node) => this.isQuestionNode(node));
}
isQuestionNode(node) {
var _a;
if (!node || ((_a = node.closest) == null ? void 0 : _a.call(node, "#cxds-panel"))) return false;
const stem = this.getStem(node);
if (!stem || stem.length < 2) return false;
const options = this.getOptions(node);
const inputs = this.getInputs(node);
if (options.length >= 2 || inputs.length > 0) return true;
return Boolean(node.querySelector(".stem_answer, .answerBg, .answerList, .blankList2"));
}
parse(element, index = 0, total = 1) {
const typeName = this.getTypeName(element);
const options = this.getOptions(element);
const inputs = this.getInputs(element);
const type2 = this.detectType(element, typeName, options, inputs);
return {
element,
index,
total,
displayIndex: this.getQuestionNumber(element) || index + 1,
type: type2,
typeName,
stem: this.getStem(element),
options,
inputs,
answered: this.isAnswered(element, inputs)
};
}
getDisplayTotal(root = document, questions = []) {
const navTotal = this.getNavigationTotal(root);
const questionMax = Math.max(0, ...questions.map((node) => this.getQuestionNumber(node) || 0));
return Math.max(navTotal, questionMax, questions.length);
}
getNavigationTotal(root = document) {
var _a, _b;
const contextualNumbers = /* @__PURE__ */ new Set();
const allNumbers = /* @__PURE__ */ new Set();
const nodes = $all("a, button, li, span, div", root);
for (const node of nodes) {
if (((_a = node.closest) == null ? void 0 : _a.call(node, "#cxds-panel")) || ((_b = node.closest) == null ? void 0 : _b.call(node, "#cxds-logo"))) continue;
const text = normalizeText(node.textContent || "");
if (!/^\d{1,4}$/.test(text)) continue;
const n = Number(text);
if (!Number.isInteger(n) || n <= 0 || n > 999) continue;
allNumbers.add(n);
const path = this.contextSignature(node);
if (/(mark|question|ques|card|num|nav|topic|answer|exam|test|tm|题|答|卡|卷|考)/i.test(path)) {
contextualNumbers.add(n);
}
}
const contextualTotal = this.consecutiveTotal(contextualNumbers);
if (contextualTotal >= 5) return contextualTotal;
const broadTotal = this.consecutiveTotal(allNumbers);
return broadTotal >= 10 ? broadTotal : 0;
}
consecutiveTotal(numbers) {
if (!numbers.has(1)) return 0;
let total = 0;
while (numbers.has(total + 1)) total += 1;
return total;
}
contextSignature(node) {
var _a;
const parts = [];
let current = node;
for (let i = 0; current && i < 4; i += 1, current = current.parentElement) {
parts.push(`${current.id || ""} ${current.className || ""} ${((_a = current.getAttribute) == null ? void 0 : _a.call(current, "data")) || ""}`);
}
return parts.join(" ");
}
getQuestionNumber(element) {
const stemNode = element.querySelector(".mark_name, h3.mark_name, .Zy_TItle, .question-title, .Py-m1-title, .tit, .stem");
const raw = normalizeText((stemNode == null ? void 0 : stemNode.textContent) || element.textContent || "");
const match = raw.match(/^\s*(\d{1,4})\s*[.、.]/);
if (!match) return null;
const n = Number(match[1]);
return Number.isInteger(n) && n > 0 ? n : null;
}
getTypeName(element) {
var _a, _b, _c;
const attr = element.getAttribute("typename") || ((_a = element.dataset) == null ? void 0 : _a.typename) || "";
if (attr) return normalizeText(attr);
const label = normalizeText(((_b = element.querySelector(".colorShallow, .type, .question-type, .quesType")) == null ? void 0 : _b.textContent) || "");
const match = label.match(/单选题|单项选择题|多选题|多项选择题|不定项选择题|判断题|是非题|填空题|简答题|简答|问答题|名词解释|论述题|材料题|资料题|写作题|作文题|翻译题/u);
if (match) return match[0];
const title = normalizeText(((_c = element.querySelector(".mark_name, h3.mark_name, .Py-m1-title")) == null ? void 0 : _c.textContent) || "");
const titleMatch = title.match(/单选题|单项选择题|多选题|多项选择题|不定项选择题|判断题|是非题|填空题|简答题|简答|问答题|名词解释|论述题|材料题|资料题|写作题|作文题|翻译题/u);
return (titleMatch == null ? void 0 : titleMatch[0]) || "";
}
getStem(element) {
var _a2;
var _a;
const stemNode = element.querySelector(".workTextWrap, .mark_name, h3.mark_name, .Zy_TItle, .question-title, .Py-m1-title, .tit, .stem");
const cleanStem = (stemNode == null ? void 0 : stemNode.cloneNode) ? stemNode.cloneNode(true) : stemNode;
(_a2 = cleanStem == null ? void 0 : cleanStem.querySelectorAll) == null ? void 0 : _a2.call(cleanStem, ".cxds-answer-note").forEach((note) => note.remove());
return stripQuestionPrefix((cleanStem == null ? void 0 : cleanStem.innerHTML) || ((_a = element.querySelector(".questionStem")) == null ? void 0 : _a.innerHTML) || "");
}
getOptions(element) {
const nodes = $all(".stem_answer .answer_p, .answerBg .answer_p, .answerList li, .ulTop li, .option, label", element).filter((node) => normalizeOption(node.textContent).length > 0);
return [...new Set(nodes)].map((node, index) => ({
node,
clickable: node.closest("li, label, .answerBg, .clearfix, .answer_p") || node,
text: normalizeOption(node.innerHTML || node.textContent),
index
}));
}
getInputs(element) {
return $all('textarea[name^="answerEditor"], textarea[name^="answer"], textarea, input[type="text"], .blankList2 input', element);
}
detectType(element, typeName, options, inputs) {
if (TYPE_NAME_MAP.has(typeName)) return TYPE_NAME_MAP.get(typeName);
if (options.length) {
const hasCheckbox = Boolean(element.querySelector('input[type="checkbox"]'));
const optionText = options.map((o) => o.text).join("|");
if (/正确|错误|对|错|√|×/.test(optionText) && options.length <= 3) return QUESTION_TYPES.JUDGE;
return hasCheckbox ? QUESTION_TYPES.MULTIPLE : QUESTION_TYPES.SINGLE;
}
if (inputs.length > 1 || element.querySelector(".blankList2")) return QUESTION_TYPES.BLANK;
if (inputs.length === 1) return QUESTION_TYPES.TEXT;
return QUESTION_TYPES.UNKNOWN;
}
isAnswered(element, inputs) {
if (element.querySelector('.check_answer, .check_answer_dx, .cur, [aria-checked="true"], input:checked')) return true;
return inputs.some((input) => String(input.value || "").trim().length > 0);
}
};
var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
function randomInt(min, max) {
const low = Math.min(Number(min) || 0, Number(max) || 0);
const high = Math.max(Number(min) || 0, Number(max) || 0);
return Math.floor(Math.random() * (high - low + 1)) + low;
}
function randomDelay(settings) {
return randomInt(settings.answerDelayMin, settings.answerDelayMax);
}
var AnswerEngine = class {
constructor({ aiService, settingsStore, logger }) {
this.aiService = aiService;
this.settingsStore = settingsStore;
this.logger = logger;
this.parser = new QuestionParser();
this.running = false;
this.stopRequested = false;
this.nextQuestionTimer = null;
this.consecutiveRateLimits = 0;
this.answerCache = /* @__PURE__ */ new WeakMap();
}
async scan(root = document, options = {}) {
if (this.settingsStore.get("aiAnswerEnabled") === false) return false;
if (this.isReadOnlyWork(root)) return false;
if (this.running) {
this.logger.log("\u5DF2\u6709\u7B54\u9898\u4EFB\u52A1\u6B63\u5728\u8FD0\u884C", "warn");
return false;
}
const questionNodes = this.parser.findQuestions(root);
const displayTotal = this.parser.getDisplayTotal(root, questionNodes);
const questions = questionNodes.map((element, index) => this.parser.parse(element, index, displayTotal));
if (!questions.length) {
this.logger.log("\u672A\u8BC6\u522B\u5230\u9898\u76EE", "muted");
return false;
}
this.running = true;
this.stopRequested = false;
this.lastErrorCode = "";
this.logger.log(`\u8BC6\u522B\u5230 ${questions.length} \u9053\u53EF\u4F5C\u7B54\u9898\u76EE\uFF0C\u603B\u9898\u53F7 ${displayTotal}\uFF0C\u5F00\u59CB\u5904\u7406`, "success");
const paged = questions.length === 1 && displayTotal > 1;
const reportProgress = (detail) => {
try {
window.dispatchEvent(new CustomEvent("drip-ai-question-progress", { detail }));
} catch (e) {
}
};
let at = 0;
try {
for (const [position, question] of questions.entries()) {
if (this.settingsStore.get("aiAnswerEnabled") === false) this.stopRequested = true;
if (this.stopRequested) break;
at = position;
reportProgress(paged ? { active: true, current: question.displayIndex, total: displayTotal } : { active: true, current: position + 1, total: questions.length });
await this.answer(question);
}
if (this.stopRequested) {
this.logger.log("\u7B54\u9898\u4EFB\u52A1\u5DF2\u505C\u6B62", "info");
return false;
}
if (this.tryNextExam(root, { questions, displayTotal })) {
this.logger.log("\u672C\u9898\u5B8C\u6210\uFF0C\u7EE7\u7EED\u4E0B\u4E00\u9898", "success");
return true;
}
this.logger.log("\u672C\u9875\u9898\u76EE\u5904\u7406\u5B8C\u6210", "success");
const shouldSubmit = options && options.autoSubmit || this.settingsStore.get("autoSubmit");
if (shouldSubmit) {
await sleep(1e3);
if (this.stopRequested || this.settingsStore.get("aiAnswerEnabled") === false) return false;
const submitted = await this.trySubmit(root, { force: true, autoSubmit: true });
if (!submitted) {
return false;
}
} else if (options && options.autoSubmit === false) {
this.logger.log("\u672C\u9875\u5DF2\u586B\u5199\uFF0C\u672A\u63D0\u4EA4\uFF1A\u81EA\u52A8\u63D0\u4EA4\u5DF2\u5173\u95ED\uFF0C\u8BF7\u68C0\u67E5\u540E\u81EA\u884C\u63D0\u4EA4", "info");
}
return true;
} catch (error) {
this.lastErrorCode = error.code || "UNKNOWN_ERROR";
if (error.code === "NOT_ACTIVATED" || error.code === "INSUFFICIENT_BALANCE") {
this.logger.log(error.message, "warn");
if (error.code === "INSUFFICIENT_BALANCE") {
const question = questions[at];
const need = paged ? displayTotal - question.displayIndex + 1 : questions.slice(at).filter((item) => this.isPending(item)).length;
try {
window.dispatchEvent(new CustomEvent("drip7boi:balance-short", { detail: {
phase: "during",
balance: 0,
need: Math.max(1, need),
current: paged ? question.displayIndex : at + 1,
total: paged ? displayTotal : questions.length
} }));
} catch (e) {
}
}
} else {
this.logger.log(`\u7B54\u9898\u4EFB\u52A1\u4E2D\u65AD\uFF1A${error.message}`, "error");
}
return false;
} finally {
this.running = false;
reportProgress({ active: false });
}
}
stop() {
if (!this.running && !this.nextQuestionTimer) return false;
this.stopRequested = true;
if (this.nextQuestionTimer) {
clearTimeout(this.nextQuestionTimer);
this.nextQuestionTimer = null;
}
return true;
}
isReadOnlyWork(root = document) {
const doc = root.ownerDocument || root;
try {
return /\/work\/phone\/selectWorkQuestionYiPiYue\/?$/.test(new URL(doc.location.href).pathname);
} catch (e) {
return false;
}
}
hasQuestions(root = document) {
return !this.isReadOnlyWork(root) && this.parser.findQuestions(root).length > 0;
}
// 会请求 AI(也就会扣积分)的题:没答过(或开了重做)、题型和题干都认得出。
isPending(question) {
return (!question.answered || this.settingsStore.get("redo")) && question.type !== QUESTION_TYPES.UNKNOWN && Boolean(question.stem);
}
// 本页还要花多少积分:一页一题的考试按剩余题号算,其余按本页待答题数算。
countPending(root = document) {
if (this.isReadOnlyWork(root)) return 0;
const nodes = this.parser.findQuestions(root);
const displayTotal = this.parser.getDisplayTotal(root, nodes);
const questions = nodes.map((element, index) => this.parser.parse(element, index, displayTotal));
if (questions.length === 1 && displayTotal > 1) return Math.max(1, displayTotal - questions[0].displayIndex + 1);
return questions.filter((question) => this.isPending(question)).length;
}
async answer(question) {
var _a2;
var _a;
const prefix = `\u7B2C ${question.displayIndex || question.index + 1}/${question.total} \u9898`;
if (question.answered && !this.settingsStore.get("redo")) {
this.logger.log(`${prefix} \u5DF2\u4F5C\u7B54\uFF0C\u8DF3\u8FC7`, "muted");
return;
}
if (question.type === QUESTION_TYPES.UNKNOWN) {
this.logger.log(`${prefix} \u65E0\u6CD5\u8BC6\u522B\u9898\u578B\uFF0C\u8DF3\u8FC7`, "warn");
return;
}
if (!question.stem) {
this.logger.log(`${prefix} \u9898\u5E72\u4E3A\u7A7A\uFF0C\u8DF3\u8FC7`, "warn");
return;
}
await sleep(randomDelay(this.settingsStore.all()));
if (this.stopRequested || this.settingsStore.get("aiAnswerEnabled") === false) return;
const prompt = buildPrompt(question);
const cached = question.element && this.answerCache.get(question.element);
if ((cached == null ? void 0 : cached.prompt) === prompt && !this.settingsStore.get("redo")) {
this.logger.log(`${prefix} \u4F7F\u7528\u672C\u9875\u5DF2\u6709\u7B54\u6848\uFF0C\u4E0D\u91CD\u590D\u8BF7\u6C42 AI`, "muted");
this.annotate(question, cached.answer);
return this.applyAnswer(question, cached.answer);
}
const logRow = this.logger.log(`${prefix} \u8BF7\u6C42 AI`, "muted");
try {
const result = await this.aiService.askAI(prompt, {
type: question.type,
index: question.displayIndex || question.index + 1,
total: question.total
}, { returnFull: true, shouldContinue: () => !this.stopRequested && this.settingsStore.get("aiAnswerEnabled") !== false });
const answer = String((result == null ? void 0 : result.answer) || "").trim();
if (!answer) {
const error = new Error("AI_EMPTY_ANSWER");
error.code = "AI_EMPTY_ANSWER";
throw error;
}
this.consecutiveRateLimits = 0;
if (question.element) this.answerCache.set(question.element, { prompt, answer });
this.logger.update(logRow, `${prefix} \u7B54\u6848\uFF1A${answer}`, "success");
const chargedPoints = (_a2 = result.usage) == null ? void 0 : _a2.consumedPoints;
const remainingPoints = result.balancePoints;
if (Number.isSafeInteger(chargedPoints) && chargedPoints >= 0 && Number.isFinite(remainingPoints) && remainingPoints >= 0) {
const cachedCharge = result.usage.cached === true;
const receiptText = cachedCharge ? `\u79EF\u5206\u8BB0\u5F55\uFF1A${prefix}\u4F7F\u7528\u539F\u8BF7\u6C42\u7ED3\u679C\uFF0C\u672C\u6B21\u672A\u91CD\u590D\u6263\u5206\uFF1B\u539F\u8BF7\u6C42\u6263\u9664 ${chargedPoints} \u79EF\u5206\uFF0C\u4F59\u989D ${remainingPoints} \u79EF\u5206` : `\u672C\u9898\u6D88\u8017 ${chargedPoints} \u79EF\u5206\uFF0C\u5269\u4F59 ${remainingPoints} \u79EF\u5206\uFF08AI \u8BF7\u6C42\u5DF2\u8BA1\u8D39\uFF0C\u586B\u5199\u6216\u63D0\u4EA4\u4ECD\u9700\u786E\u8BA4\uFF09`;
const receiptRow = this.logger.log(receiptText, "muted");
if (!cachedCharge && chargedPoints > 0 && typeof window !== "undefined") window.dispatchEvent(new CustomEvent("drip7boi:ai-charged", { detail: { points: chargedPoints } }));
if (receiptRow == null ? void 0 : receiptRow.dataset) Object.assign(receiptRow.dataset, {
chargePoints: String(chargedPoints),
chargeBalance: String(remainingPoints),
chargeCached: String(cachedCharge),
chargeQuestion: prefix
});
}
if (this.stopRequested) return;
if (this.settingsStore.get("aiAnswerEnabled") === false) return;
this.annotate(question, answer);
await this.applyAnswer(question, answer);
} catch (error) {
if (error.code === "AI_DISABLED") {
this.stopRequested = true;
this.logger.update(logRow, `${prefix} AI \u4F5C\u7B54\u5DF2\u505C\u6B62`, "info");
return;
}
if (error.code === "AI_EMPTY_ANSWER") {
error.message = "AI \u672A\u8FD4\u56DE\u53EF\u5199\u5165\u7684\u7B54\u6848\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5";
}
if (error.code === "ORIGIN_NOT_ALLOWED") {
error.message = "\u5F53\u524D\u6269\u5C55\u6765\u6E90\u672A\u88AB AI \u670D\u52A1\u653E\u884C\uFF0C\u8BF7\u66F4\u65B0\u670D\u52A1\u7AEF\u540E\u91CD\u8BD5";
}
const message = error.code === "NOT_ACTIVATED" ? "\u6B63\u5728\u521D\u59CB\u5316\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" : error.code === "INSUFFICIENT_BALANCE" ? "\u79EF\u5206\u4E0D\u8DB3\uFF0C\u8BF7\u8F93\u5165\u5361\u5BC6\u5151\u6362" : error.code === "DAILY_LIMIT_REACHED" ? "\u4ECA\u65E5\u7B54\u9898\u989D\u5EA6\u5DF2\u7528\u5B8C\uFF0C\u660E\u5929\u6062\u590D\uFF1B\u79EF\u5206\u4F59\u989D\u4ECD\u4FDD\u7559" : error.code === "RATE_LIMITED" ? `\u8BF7\u6C42\u592A\u5FEB\uFF0C\u6682\u505C ${error.retryAfterSeconds || 30} \u79D2\u540E\u7EE7\u7EED` : error.code === "DEVICE_BANNED" ? "\u5F53\u524D\u8BBE\u5907\u5DF2\u88AB\u9650\u5236\uFF0C\u8BF7\u8054\u7CFB\u5356\u5BB6" : error.code === "AI_PROVIDER_ERROR" ? "AI \u670D\u52A1\u6682\u65F6\u5F02\u5E38\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" : error.code === "UNAUTHORIZED" ? "\u4F7F\u7528\u72B6\u6001\u5DF2\u5931\u6548\uFF0C\u8BF7\u5237\u65B0\u9875\u9762\u91CD\u8BD5" : error.message;
this.logger.update(logRow, `${prefix} \u8BF7\u6C42\u5931\u8D25\uFF1A${message}`, "error");
if (error.code === "DAILY_LIMIT_REACHED") {
this.stopRequested = true;
throw error;
}
if (error.code === "RATE_LIMITED") {
this.consecutiveRateLimits += 1;
if (this.consecutiveRateLimits >= 2) {
this.stopRequested = true;
this.logger.log("\u8FDE\u7EED\u89E6\u53D1\u8BF7\u6C42\u9650\u5236\uFF0C\u672C\u8F6E\u7B54\u9898\u5DF2\u505C\u6B62", "warn");
throw error;
}
await sleep(Math.max(1, Number(error.retryAfterSeconds) || 30) * 1e3);
throw error;
}
throw error;
}
}
async applyAnswer(question, answer) {
switch (question.type) {
case QUESTION_TYPES.SINGLE:
return this.applySingle(question, answer);
case QUESTION_TYPES.MULTIPLE:
return this.applyMultiple(question, answer);
case QUESTION_TYPES.JUDGE:
return this.applyJudge(question, answer);
case QUESTION_TYPES.BLANK:
return this.applyBlank(question, answer);
case QUESTION_TYPES.TEXT:
case QUESTION_TYPES.WRITING:
case QUESTION_TYPES.TRANSLATION:
return this.applyText(question, answer);
default:
return void 0;
}
}
applySingle(question, answer) {
const index = matchSingleOption(question.options, answer, this.settingsStore.get("fuzzyMatch"));
if (index === -1) {
this.logger.log("\u672A\u80FD\u5339\u914D\u5230\u9009\u9879\uFF0C\u8BF7\u4EBA\u5DE5\u6838\u5BF9", "warn");
return;
}
this.selectOption(question.options[index]);
}
applyMultiple(question, answer) {
const indices = matchMultipleOptions(question.options, answer, this.settingsStore.get("fuzzyMatch"));
if (!indices.length) {
this.logger.log("\u672A\u80FD\u5339\u914D\u5230\u591A\u9009\u7B54\u6848\uFF0C\u8BF7\u4EBA\u5DE5\u6838\u5BF9", "warn");
return;
}
indices.forEach((index) => this.selectOption(question.options[index]));
}
applyJudge(question, answer) {
const result = parseJudgeAnswer(answer);
if (result === null) {
this.logger.log("\u5224\u65AD\u9898\u7B54\u6848\u65E0\u6CD5\u6807\u51C6\u5316\uFF0C\u8BF7\u4EBA\u5DE5\u6838\u5BF9", "warn");
return;
}
const words = result ? ["\u6B63\u786E", "\u5BF9", "\u662F", "\u221A", "T"] : ["\u9519\u8BEF", "\u9519", "\u5426", "\xD7", "F"];
const index = question.options.findIndex((option) => words.some((word) => option.text.includes(word)));
if (index === -1) {
this.logger.log("\u672A\u627E\u5230\u5224\u65AD\u9898\u5BF9\u5E94\u9009\u9879", "warn");
return;
}
this.selectOption(question.options[index]);
}
applyBlank(question, answer) {
const parts = splitAnswer(answer);
question.inputs.forEach((input, index) => {
this.fillInput(input, parts[index] || parts[0] || answer);
});
}
applyText(question, answer) {
if (!question.inputs.length) {
this.logger.log("\u672A\u627E\u5230\u6587\u672C\u4F5C\u7B54\u533A\u57DF", "warn");
return;
}
question.inputs.forEach((input) => this.fillInput(input, answer));
}
selectOption(option) {
if (!this.settingsStore.get("autoClick")) {
option.clickable.style.fontWeight = "700";
option.clickable.style.outline = "2px solid #2563eb";
return;
}
clickElement(option.clickable);
}
fillInput(input, value) {
var _a, _b;
const editorId = input.id || input.name;
const win = input.ownerDocument.defaultView || window;
try {
const editor = editorId && ((_b = (_a = win.UE) == null ? void 0 : _a.getEditor) == null ? void 0 : _b.call(_a, editorId));
if (editor == null ? void 0 : editor.setContent) {
editor.setContent(value);
return;
}
} catch (e) {
}
fillEmbeddedEditor(input, value);
setNativeValue(input, value);
}
annotate(question, answer) {
if (!this.settingsStore.get("alterTitle")) return;
const stemNode = question.element.querySelector(".workTextWrap, .mark_name, h3.mark_name, .Zy_TItle, .question-title, .Py-m1-title, .tit, .stem");
if (!stemNode || stemNode.querySelector(".cxds-answer-note")) return;
const note = document.createElement("div");
note.className = "cxds-answer-note";
note.style.cssText = "margin-top:6px;color:#2563eb;font-weight:600;";
note.textContent = `AI\u7B54\u6848\uFF1A${answer}`;
stemNode.appendChild(note);
}
tryNextExam(root = document, context = {}) {
const { questions = [], displayTotal = 0 } = context;
const paginatedExam = displayTotal > questions.length;
if (!this.settingsStore.get("examAutoNext") && !paginatedExam) return false;
const next = this.findNextQuestionButton(root) || this.findNextUnansweredNavButton(root, questions);
if (!next) return false;
this.nextQuestionTimer = setTimeout(() => {
this.nextQuestionTimer = null;
if (this.stopRequested || this.settingsStore.get("aiAnswerEnabled") === false) return;
clickElement(next);
this.nextQuestionTimer = setTimeout(() => {
this.nextQuestionTimer = null;
if (!this.stopRequested && this.settingsStore.get("aiAnswerEnabled") !== false) this.scan(root);
}, 1400);
}, 900);
return true;
}
async trySubmit(root = document, options = {}) {
var _a, _b;
if (this.stopRequested || this.settingsStore.get("aiAnswerEnabled") === false) return false;
if (!(options.autoSubmit || options.force || this.settingsStore.get("autoSubmit"))) return false;
const doc = root.ownerDocument || root;
const nodes = this.parser.findQuestions(root);
const total = this.parser.getDisplayTotal(root, nodes);
const questions = nodes.map((node, index) => this.parser.parse(node, index, total));
if (!questions.length || questions.some((q) => !q.answered) || this.hasPendingQuestionNavigation(root, questions, total)) {
this.logger.log("\u4F5C\u4E1A\u6846\u67B6\u4ECD\u6709\u672A\u4F5C\u7B54\u9898\u76EE\uFF0C\u8DF3\u8FC7\u81EA\u52A8\u63D0\u4EA4", "warn");
return false;
}
const dialogSelector = '#cxAlertBox1, .layui-layer-dialog, [role="dialog"], .ui-dialog';
const getDialog = () => Array.from(doc.querySelectorAll(dialogSelector)).find((node) => this.isVisibleAction(node) && /提交|交卷/.test(node.textContent || ""));
const frame = (_a = doc.defaultView) == null ? void 0 : _a.frameElement;
const submittedUrl = (_b = doc.location) == null ? void 0 : _b.href;
let dialog = getDialog();
if (!dialog) {
const submit = this.findSubmitButton(root);
if (!submit) {
this.logger.log("\u4F5C\u4E1A\u6846\u67B6\u672A\u627E\u5230\u63D0\u4EA4\u6309\u94AE\uFF0C\u8BF7\u624B\u52A8\u68C0\u67E5", "warn");
return false;
}
clickElement(submit);
this.logger.log("\u5DF2\u70B9\u51FB\u63D0\u4EA4\uFF0C\u7B49\u5F85\u4F5C\u4E1A\u786E\u8BA4\u5F39\u7A97", "info");
for (let i = 0; i < 10 && !dialog; i++) {
await sleep(300);
if (this.stopRequested || this.settingsStore.get("aiAnswerEnabled") === false) return false;
dialog = getDialog();
}
}
if (dialog) {
if (this.stopRequested || this.settingsStore.get("aiAnswerEnabled") === false) return false;
if (/未.*(?:完成|作答|做完)|未答|漏答/.test(dialog.textContent || "")) {
this.logger.log("\u5E73\u53F0\u63D0\u793A\u5B58\u5728\u672A\u5B8C\u6210\u9898\u76EE\uFF0C\u505C\u6B62\u786E\u8BA4\u63D0\u4EA4", "warn");
return false;
}
const confirm = Array.from(dialog.querySelectorAll('#okBtn, .layui-layer-btn0, button, a, li, [role="button"]')).find((node) => this.isVisibleAction(node) && /^(确认|确定|提交|确认提交|确定提交)$/.test((node.textContent || node.value || "").trim()));
if (!confirm) {
this.logger.log("\u672A\u8BC6\u522B\u5230\u63D0\u4EA4\u786E\u8BA4\u6309\u94AE\uFF0C\u8BF7\u624B\u52A8\u68C0\u67E5", "warn");
return false;
}
clickElement(confirm);
this.logger.log("\u5DF2\u786E\u8BA4\u63D0\u4EA4\uFF0C\u7B49\u5F85\u5E73\u53F0\u8FD4\u56DE\u7ED3\u679C", "info");
}
for (let i = 0; i < 15; i++) {
await sleep(1e3);
let current;
try {
current = frame ? frame.contentDocument : doc;
} catch (e) {
}
if (!current) continue;
const reviewed = this.isReviewedSubmission(current, submittedUrl);
const success = reviewed || Array.from(current.querySelectorAll("span,div,p,h1,h2,h3")).some((node) => !node.closest("#cxds-panel,.questionLi,.TiMu,.Py-mian1") && this.isVisibleAction(node) && /^(提交成功[!!。]?|已提交|待批阅|待批改|已完成)$/.test((node.textContent || "").trim()));
if (success) {
this.logger.log("\u5E73\u53F0\u5DF2\u786E\u8BA4\u63D0\u4EA4\u5B8C\u6210", "success");
return true;
}
}
this.logger.log("\u5C1A\u672A\u6536\u5230\u5E73\u53F0\u63D0\u4EA4\u6210\u529F\u72B6\u6001\uFF0C\u4FDD\u6301\u672C\u9875\u68C0\u67E5", "warn");
return false;
}
isReviewedSubmission(doc, submittedUrl) {
var _a;
try {
const before = new URL(submittedUrl);
const after = new URL(doc.location.href);
return before.origin === after.origin && /\/work\/phone\/selectWorkQuestionYiPiYue$/.test(after.pathname) && ["jobId", "courseId", "knowledgeId"].every((key) => before.searchParams.get(key) && before.searchParams.get(key) === after.searchParams.get(key)) && ((_a = doc.querySelector(".hetNumber .finish")) == null ? void 0 : _a.textContent.trim()) === "\u5DF2\u5B8C\u6210";
} catch (e) {
return false;
}
}
findNextQuestionButton(root = document) {
const doc = root.ownerDocument || root;
const scope = doc === root ? root : doc;
const selectors = [
".nextDiv a.jb_btn",
"#next",
"#nextQuestion",
".nextQuestion",
".next",
'a[onclick*="next"]',
'button[onclick*="next"]',
'[class*="next"]'
];
for (const selector of selectors) {
const found = Array.from(scope.querySelectorAll(selector)).find((node) => this.isVisibleAction(node) && /下一题|下一頁|下一页|下一|next/i.test(`${node.textContent || ""} ${node.value || ""} ${node.title || ""} ${node.className || ""}`));
if (found) return found;
}
return Array.from(scope.querySelectorAll('button,a,div,span,[role="button"]')).find((node) => this.isVisibleAction(node) && /下一题|下一頁|下一页/.test(`${node.textContent || ""} ${node.value || ""} ${node.title || ""}`));
}
hasPendingQuestionNavigation(root = document, questions = [], displayTotal = 0) {
void displayTotal;
return Boolean(this.findNextUnansweredNavButton(root, questions));
}
findNextUnansweredNavButton(root = document, questions = []) {
const currentNumbers = new Set(questions.map((q) => q.displayIndex).filter(Boolean));
const nodes = Array.from(root.querySelectorAll("a,button,li,span,div")).filter((node) => {
var _a;
return !((_a = node.closest) == null ? void 0 : _a.call(node, "#cxds-panel,#cxds-logo"));
}).filter((node) => this.isVisibleAction(node)).filter((node) => /^\d{1,4}$/.test(String(node.textContent || "").trim()));
return nodes.find((node) => {
var _a, _b;
const n = Number(String(node.textContent || "").trim());
if (n <= 0 || currentNumbers.has(n)) return false;
const state = `${node.className || ""} ${((_a = node.parentElement) == null ? void 0 : _a.className) || ""} ${node.title || ""} ${((_b = node.getAttribute) == null ? void 0 : _b.call(node, "aria-label")) || ""}`;
if (/未作答|unanswer|not[-_]?answer|empty/i.test(state)) return true;
if (/answered|done|finish|complete|已作答|已答|完成/i.test(state)) return false;
return /question|mark|nav|num|topic|answer|exam|test/i.test(state);
}) || null;
}
findSubmitButton(root = document) {
const selectors = [
".ZY_sub .btnSubmit",
".ZY_sub .btnBlue",
".zquestions .zsubmit .btn-ok-bottom",
".zsubmit .btn-ok-bottom",
"#submitTest",
"#submitFocus",
"#submitButton",
"#submitBtn",
".submitBtn",
".btnSubmit",
".btn-submit",
".btnOk",
".jb_btn",
'button[type="submit"]',
'input[type="submit"]'
];
for (const selector of selectors) {
const element = root.querySelector(selector);
if (this.isVisibleAction(element)) return element;
}
const textCandidates = Array.from(root.querySelectorAll('button, a, input[type="button"], input[type="submit"], .btn, .jb_btn, [role="button"]'));
return textCandidates.find((element) => {
if (!this.isVisibleAction(element)) return false;
const text = `${element.value || ""} ${element.textContent || ""} ${element.title || ""}`.trim();
return /提交|交卷|保存并提交|确认提交|我要交卷|完成|提交答案/.test(text);
}) || null;
}
isVisibleAction(element) {
if (!element || element.disabled) return false;
const style = window.getComputedStyle(element);
if (style.display === "none" || style.visibility === "hidden" || Number(style.opacity) === 0) return false;
const rect = element.getBoundingClientRect();
return rect.width > 0 && rect.height > 0;
}
};
var PageDetector = class {
current(root = document) {
var _a;
const path = ((_a = root.location) == null ? void 0 : _a.pathname) || location.pathname;
if (SITUATIONAL_DIALOGUE_PATH.test(path)) return "dialogue";
if (/exam|test|paper|preview/i.test(path) || $(".whiteDiv .stem_answer", root)) return "exam";
if (/work|homework|question/i.test(path) || $(".mark_table .questionLi, .questionLi, .zquestions .Py-mian1, .TiMu", root)) return "homework";
if (/knowledge|studentstudy|mycourse|course|video|audio|ztnodedetail/i.test(path) || $("video,audio", root)) return "media";
return "unknown";
}
currentInTree() {
if (this.current(document) !== "unknown") return this.current(document);
for (const frame of findSameOriginFrames(document)) {
const doc = frame.contentDocument;
if (doc && this.current(doc) !== "unknown") return this.current(doc);
}
return "unknown";
}
shouldMount() {
return this.currentInTree() !== "unknown";
}
};
function assertAiAnswerAllowed(settingsStore, options = {}) {
var _a;
if ((settingsStore == null ? void 0 : settingsStore.get("aiAnswerEnabled")) === false || ((_a = options.shouldContinue) == null ? void 0 : _a.call(options)) === false) {
const error = new Error("AI \u4F5C\u7B54\u5DF2\u5173\u95ED");
error.code = "AI_DISABLED";
throw error;
}
}
var AIService = class {
constructor(provider, settingsStore, logger) {
this.provider = provider;
this.settingsStore = settingsStore;
this.logger = logger;
this.nextAllowedAt = 0;
}
async askAI(prompt, meta = {}, options = {}) {
var _a, _b;
assertAiAnswerAllowed(this.settingsStore, options);
window.dispatchEvent(new CustomEvent("drip-ai-work-progress"));
const config = await ((_b = (_a = this.provider.licenseClient) == null ? void 0 : _a.getRemoteConfig) == null ? void 0 : _b.call(_a)) || {};
const intervalMs = Math.max(
Math.max(0, Number(this.settingsStore.get("requestInterval")) || 0) * 1e3,
Math.min(6e4, Math.max(0, Number(config.answerIntervalMs) || 0))
);
const now = Date.now();
const waitMs = Math.max(0, this.nextAllowedAt - now);
this.nextAllowedAt = Math.max(now, this.nextAllowedAt) + intervalMs;
if (waitMs > 0) {
this.logger.log(`\u8BF7\u6C42\u95F4\u9694\u9650\u5236\uFF0C\u7B49\u5F85 ${Math.ceil(waitMs / 1e3)} \u79D2`, "muted");
await new Promise((resolve) => setTimeout(resolve, waitMs));
}
assertAiAnswerAllowed(this.settingsStore, options);
return this.provider.ask(prompt, meta, options);
}
};
var ID_KEYS = [
"_uid",
"UID",
"uid",
"puid",
"PUID",
"userId",
"userid",
"personId",
"personid"
];
function safeRead(fn) {
try {
return fn();
} catch (e) {
return "";
}
}
function normalizeValue(value) {
const text = String(value || "").trim();
return /^\d{5,12}$/.test(text) ? text : "";
}
function fromUrl() {
const params = new URLSearchParams(location.search);
for (const key of ID_KEYS) {
const value = normalizeValue(params.get(key));
if (value) return { key, value };
}
return null;
}
function fromCookie() {
const pairs = String(document.cookie || "").split(";").map((item) => item.trim()).filter(Boolean);
const cookies = new Map(pairs.map((item) => {
const index = item.indexOf("=");
const key = index >= 0 ? item.slice(0, index) : item;
const value = index >= 0 ? decodeURIComponent(item.slice(index + 1)) : "";
return [key, value];
}));
for (const key of ID_KEYS) {
const value = normalizeValue(cookies.get(key));
if (value) return { key, value };
}
return null;
}
function fromStorage(storage) {
if (!storage) return null;
for (const key of ID_KEYS) {
const value = normalizeValue(storage.getItem(key));
if (value) return { key, value };
}
for (let index = 0; index < storage.length; index += 1) {
const key = storage.key(index);
if (!/uid|userid|personid/i.test(key || "") || /uuid/i.test(key || "")) continue;
const value = normalizeValue(storage.getItem(key));
if (value) return { key, value };
}
return null;
}
function fromGlobals(rootWindow) {
if (!rootWindow) return null;
for (const key of ID_KEYS) {
const value = normalizeValue(rootWindow[key]);
if (value) return { key, value };
}
const candidates = [
rootWindow.user,
rootWindow.USER,
rootWindow._user,
rootWindow.Account,
rootWindow.account,
rootWindow.chaoxingUser
];
for (const item of candidates) {
if (!item || typeof item !== "object") continue;
for (const key of ID_KEYS) {
const value = normalizeValue(item[key]);
if (value) return { key, value };
}
}
return null;
}
function getChaoxingIdentity() {
if (!/chaoxing\.com|edu\.cn/i.test(location.hostname)) return "";
const sources = [
() => fromCookie(),
() => fromStorage(window.localStorage),
() => fromStorage(window.sessionStorage),
() => fromGlobals(window),
() => window.top !== window ? fromGlobals(window.top) : null,
() => {
const result = fromUrl();
return result && { ...result, fromUrl: true };
}
];
for (const [index, read] of sources.entries()) {
const result = safeRead(read);
if (result == null ? void 0 : result.value) {
return {
key: result.key,
value: result.value,
fromUrl: Boolean(result.fromUrl),
// 登录 Cookie 里的 _uid / UID 才算可靠;服务端只用它判断“是不是换了学习通号”。
fromCookie: index === 0 && /^(?:_uid|UID)$/.test(result.key),
installId: `chaoxing:${result.key}:${result.value}`
};
}
}
return null;
}
var fallbackPrefix = "drip7boi.";
function fallbackKey(key) {
return `${fallbackPrefix}${key}`;
}
async function readShared(key, fallback = "") {
var _a;
if (typeof GM_getValue === "function") {
return GM_getValue(key, fallback);
}
return (_a = localStorage.getItem(fallbackKey(key))) != null ? _a : fallback;
}
async function writeShared(key, value) {
if (typeof GM_setValue === "function") {
await GM_setValue(key, value);
return;
}
localStorage.setItem(fallbackKey(key), String(value));
}
async function removeShared(key) {
if (typeof GM_deleteValue === "function") {
await GM_deleteValue(key);
return;
}
localStorage.removeItem(fallbackKey(key));
}
function parseChaoxingProfile(doc, expectedUid) {
var _a;
const identity = doc.querySelector("#uid");
const uid = String((identity == null ? void 0 : identity.value) || (identity == null ? void 0 : identity.textContent) || "").trim();
if (!uid || uid !== String(expectedUid)) return null;
const clean = (value) => String(value || "").trim().slice(0, 128);
const units = Array.from(doc.querySelectorAll("#messageFid > li"));
const displayed = units.filter((item) => {
var _a2;
return !Array.from(((_a2 = item.querySelectorAll) == null ? void 0 : _a2.call(item, "a")) || []).some((link) => link.textContent.trim() === "\u8BBE\u7F6E\u4E3A\u663E\u793A\u5355\u4F4D");
});
const unit = units.length === 1 ? units[0] : displayed.length === 1 ? displayed[0] : null;
const schoolName = unit ? clean(Array.from(unit.childNodes).filter((n) => n.nodeType === 3).map((n) => n.textContent).join(" ")) : "";
const readNumber = (item) => {
var _a2, _b;
return clean((_b = (_a2 = item == null ? void 0 : item.querySelector(".xuehao")) == null ? void 0 : _a2.textContent) == null ? void 0 : _b.replace(/^\s*学号\/工号\s*[::]\s*/, ""));
};
const numbers = units.map(readNumber);
const studentNumber = unit ? readNumber(unit) : numbers.length && numbers.every((n) => n && n === numbers[0]) ? numbers[0] : "";
return { displayName: clean((_a = doc.querySelector("#messageName")) == null ? void 0 : _a.textContent), schoolName, studentNumber };
}
function parseChaoxingLoginInfo(text, expectedUid) {
var _a;
let data;
try {
data = JSON.parse(String(text || "").trim().split("\n")[0]);
} catch (e) {
return null;
}
const info = (data == null ? void 0 : data.result) === 1 ? data.msg : null;
if (!info || String((_a = info.puid) != null ? _a : "") !== String(expectedUid)) return null;
const clean = (value) => String(value != null ? value : "").trim().slice(0, 128);
const number = clean(info.uname);
return { displayName: clean(info.name), schoolName: clean(info.schoolname), studentNumber: number && number !== clean(info.phone) ? number : "" };
}
async function readChaoxingPage(url) {
if (typeof __dripExtensionFetch === "function") {
const response = await __dripExtensionFetch(url);
if (!response.ok) throw new Error(`HTTP_${response.status}`);
return response.text();
}
if (typeof GM_xmlhttpRequest !== "function") throw new Error("NO_TRANSPORT");
return new Promise((resolve, reject) => {
GM_xmlhttpRequest({
method: "GET",
url,
timeout: 1e4,
onload: (response) => response.status === 200 ? resolve(response.responseText) : reject(new Error(`HTTP_${response.status}`)),
onerror: () => reject(new Error("NETWORK")),
ontimeout: () => reject(new Error("TIMEOUT"))
});
});
}
async function fetchChaoxingProfile(uid) {
const local = parseChaoxingProfile(document, uid);
if (local) return local;
const reasons = [];
const sources = [
["page", "https://passport2.chaoxing.com/mooc/accountManage", (text) => parseChaoxingProfile(new DOMParser().parseFromString(text, "text/html"), uid)],
["sso", "https://sso.chaoxing.com/apis/login/userLogin4Uname.do", (text) => parseChaoxingLoginInfo(text, uid)]
];
for (const [name, url, parse] of sources) {
try {
const profile = parse(await readChaoxingPage(url));
if (profile && Object.values(profile).some(Boolean)) return profile;
reasons.push(`${name}:${profile ? "EMPTY" : "NO_MATCH"}`);
} catch (error2) {
reasons.push(`${name}:${String((error2 == null ? void 0 : error2.message) || "ERROR").slice(0, 40)}`);
}
}
const error = new Error("PROFILE_UNAVAILABLE");
error.reason = reasons.join(" ");
throw error;
}
var STORE = {
installId: "installId",
accessToken: "accessToken",
balancePoints: "balancePoints",
chaoxingUid: "chaoxingUid",
dailyUsedPoints: "dailyUsedPoints",
dailyLimitPoints: "dailyLimitPoints",
dailyRemainingPoints: "dailyRemainingPoints",
resetAt: "resetAt"
};
var LicenseClient = class {
constructor(config = LICENSE_CONFIG) {
this.config = config;
this.balanceRevision = 0;
this.state = {
installId: "",
accessToken: "",
balancePoints: null,
chaoxingUid: "",
dailyUsedPoints: null,
dailyLimitPoints: null,
dailyRemainingPoints: null,
resetAt: ""
};
this.remoteConfig = null;
this.remoteConfigFetchedAt = 0;
}
get apiBaseUrl() {
return String(this.config.apiBaseUrl || "").replace(/\/+$/, "");
}
getChaoxingIdentity() {
return getChaoxingIdentity();
}
getChaoxingUid() {
const identity = getChaoxingIdentity();
if ((identity == null ? void 0 : identity.fromUrl) && this.state.chaoxingUid && identity.value !== this.state.chaoxingUid) {
return this.state.chaoxingUid;
}
return (identity == null ? void 0 : identity.value) || "";
}
getAccessToken() {
return this.state.accessToken;
}
getCachedBalance() {
return this.state.balancePoints;
}
getAccountSnapshot() {
return {
installId: this.state.installId,
chaoxingUid: this.state.chaoxingUid,
balancePoints: this.state.balancePoints,
dailyUsedPoints: this.state.dailyUsedPoints,
dailyLimitPoints: this.state.dailyLimitPoints,
dailyRemainingPoints: this.state.dailyRemainingPoints,
resetAt: this.state.resetAt
};
}
hasToken() {
return Boolean(this.state.accessToken);
}
async initialize() {
var _a, _b;
for (const key of Object.values(STORE)) this.state[key] = await readShared(key, (_a = this.state[key]) != null ? _a : "");
const uid = this.getChaoxingUid();
if (!uid) return { recognized: false };
const switchedFrom = this.state.chaoxingUid && this.state.chaoxingUid !== uid ? this.state.chaoxingUid : "";
if (switchedFrom) await this.clearAccountSession();
this.state.chaoxingUid = uid;
await writeShared(STORE.chaoxingUid, uid);
if (!this.state.installId) {
this.state.installId = ((_b = crypto.randomUUID) == null ? void 0 : _b.call(crypto)) || `install_${Date.now()}_${Math.random().toString(16).slice(2)}`;
await writeShared(STORE.installId, this.state.installId);
}
if (!await this.useIdentity(uid)) this.deviceSecret = "";
await this.ensureSession();
this.scheduleProfileSync();
if (switchedFrom && window === window.top) window.dispatchEvent(new CustomEvent("drip7boi:uid-switched", { detail: { uid } }));
return { recognized: true, chaoxingUid: uid };
}
async syncProfile() {
var _a;
const uid = this.getChaoxingUid();
const token = this.state.accessToken;
const installId = this.state.installId;
if (!uid || !token) return;
const key = `profileSyncedAt:v2:${installId}:${uid}`;
if (((_a = this.profileRequest) == null ? void 0 : _a.key) === key && this.profileRequest.token === token) return this.profileRequest.promise;
const pending = { key, token };
pending.promise = (async () => {
if (Date.now() - Number(await readShared(key, 0)) < 6e5) return;
let profile = null;
let profileError = "";
try {
profile = await fetchChaoxingProfile(uid);
} catch (error) {
profileError = String((error == null ? void 0 : error.reason) || (error == null ? void 0 : error.message) || "ERROR");
}
if (!profileError && !(profile && Object.values(profile).some(Boolean))) profileError = "EMPTY";
const current = () => this.getChaoxingUid() === uid && this.state.accessToken === token && this.state.installId === installId;
if (!current()) return;
const reportKey = profileError ? `profileErrorAt:v1:${installId}:${uid}` : key;
if (profileError && Date.now() - Number(await readShared(reportKey, 0)) < 6e5) return;
await this.request("/api/profile", {
method: "POST",
headers: { Authorization: `Bearer ${token}` },
body: JSON.stringify(profileError ? { chaoxingUid: uid, profileError } : { ...profile, chaoxingUid: uid })
});
if (current()) await writeShared(reportKey, Date.now());
})();
this.profileRequest = pending;
try {
await pending.promise;
} finally {
if (this.profileRequest === pending) this.profileRequest = null;
}
}
scheduleProfileSync() {
if (window !== window.top) return;
this.syncProfile().catch(() => console.warn("\u8D26\u53F7\u8D44\u6599\u6682\u672A\u540C\u6B65\uFF0C\u53EF\u7A0D\u540E\u5237\u65B0\u4F59\u989D\u91CD\u8BD5"));
}
async clearAccountSession() {
this.balanceRevision += 1;
this.state.accessToken = "";
this.state.balancePoints = null;
this.state.dailyUsedPoints = null;
this.state.dailyLimitPoints = null;
this.state.dailyRemainingPoints = null;
this.state.resetAt = "";
await Promise.all([
removeShared(STORE.accessToken),
removeShared(STORE.balancePoints),
removeShared(STORE.dailyUsedPoints),
removeShared(STORE.dailyLimitPoints),
removeShared(STORE.dailyRemainingPoints),
removeShared(STORE.resetAt)
]);
window.dispatchEvent(new CustomEvent("drip7boi:account-changed"));
}
async ensureSession() {
if (!this.getChaoxingUid()) return null;
if (this.state.accessToken && !this.deviceSecret) await this.clearAccountSession();
if (this.state.accessToken && this.deviceSecret) {
try {
return await this.refreshMe();
} catch (error) {
if (!["UNAUTHORIZED", "BINDING_REQUIRED"].includes(error.code)) throw error;
await this.clearAccountSession();
}
}
return this.startAutomatically();
}
async startAutomatically() {
if (this.startRequest) return this.startRequest;
const pending = (async () => {
const uid = this.getChaoxingUid();
await this.getBindingRequest();
const start = () => this.request("/api/start", { method: "POST", body: JSON.stringify({ installId: this.state.installId, deviceSecret: this.deviceSecret, chaoxingUid: uid, chaoxingUidSource: this.chaoxingUidSource(), clientVersion: this.config.clientVersion }) });
let payload;
try {
payload = await start();
} catch (error) {
if (error.code !== "UID_MISMATCH" || !uid) throw error;
await this.useIdentity(uid, true);
payload = await start();
}
this.state.installId = payload.installId;
this.state.accessToken = payload.accessToken;
await writeShared(STORE.installId, payload.installId);
await writeShared(STORE.accessToken, payload.accessToken);
await this.rememberIdentity(uid, payload.installId);
if (uid && this.state.chaoxingUid !== uid) {
this.state.chaoxingUid = uid;
await writeShared(STORE.chaoxingUid, uid);
}
await this.applyAccountPayload(payload);
window.dispatchEvent(new CustomEvent("drip7boi:account-ready"));
return payload;
})();
this.startRequest = pending;
try {
return await pending;
} finally {
if (this.startRequest === pending) this.startRequest = null;
}
}
async getBindingRequest() {
if (typeof GM_getValue !== "function" || typeof GM_setValue !== "function") throw new Error("\u8BF7\u4F7F\u7528\u6B63\u5F0F\u6269\u5C55\u6216\u652F\u6301\u9694\u79BB\u5B58\u50A8\u7684\u811A\u672C\u7BA1\u7406\u5668");
await this.useIdentity(this.getChaoxingUid());
const bytes = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(this.deviceSecret));
const secretHash = Array.from(new Uint8Array(bytes), (x) => x.toString(16).padStart(2, "0")).join("");
return JSON.stringify({ installId: this.state.installId, secretHash });
}
// 每个学习通号各用一套 installId + 设备密钥,同一浏览器换成别人的号不会再扣原账户的积分。
// 没登记过的号先试原来那套(老用户升级后照常用原账户);服务端认出它属于另一个号时,startAutomatically 再新建一套。
async readIdentities() {
let store = {};
try {
store = JSON.parse(await GM_getValue("bindingIdentities", "") || "{}") || {};
} catch (e) {
store = {};
}
if (!store.legacy) {
let secret = await GM_getValue("bindingDeviceSecret", "");
if (!secret) {
secret = this.newDeviceSecret();
await GM_setValue("bindingDeviceSecret", secret);
}
store.legacy = { installId: this.state.installId || crypto.randomUUID(), secret };
}
store.byUid = store.byUid && typeof store.byUid === "object" ? store.byUid : {};
return store;
}
async useIdentity(uid, fresh = false) {
if (typeof GM_getValue !== "function" || typeof GM_setValue !== "function") return null;
const store = await this.readIdentities();
if (fresh && uid) store.byUid[uid] = { installId: crypto.randomUUID(), secret: this.newDeviceSecret() };
const identity = uid && store.byUid[uid] || store.legacy;
await GM_setValue("bindingIdentities", JSON.stringify(store));
this.deviceSecret = identity.secret;
if (this.state.installId !== identity.installId) {
this.state.installId = identity.installId;
await writeShared(STORE.installId, identity.installId);
}
return identity;
}
async rememberIdentity(uid, installId) {
if (!uid || typeof GM_getValue !== "function" || typeof GM_setValue !== "function") return;
const store = await this.readIdentities();
const identity = { installId, secret: this.deviceSecret };
if (store.legacy.secret === identity.secret) store.legacy = identity;
store.byUid[uid] = identity;
await GM_setValue("bindingIdentities", JSON.stringify(store));
}
newDeviceSecret() {
return btoa(String.fromCharCode(...crypto.getRandomValues(new Uint8Array(32)))).replaceAll("+", "-").replaceAll("/", "_").replace(/=+$/, "");
}
chaoxingUidSource() {
const identity = getChaoxingIdentity();
return (identity == null ? void 0 : identity.fromCookie) && identity.value === this.getChaoxingUid() ? "cookie" : "";
}
async openSession(pairingCode) {
if (!pairingCode) throw Object.assign(new Error("\u6B63\u5728\u521D\u59CB\u5316\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5"), { code: "BINDING_REQUIRED" });
const uid = this.getChaoxingUid();
if (!uid) return null;
await this.getBindingRequest();
const payload = await this.request("/api/session", { method: "POST", body: JSON.stringify({ pairingCode, deviceSecret: this.deviceSecret, installId: this.state.installId, clientVersion: this.config.clientVersion }) });
this.state.accessToken = payload.accessToken;
await writeShared(STORE.accessToken, payload.accessToken);
await this.applyAccountPayload(payload);
window.dispatchEvent(new CustomEvent("drip7boi:account-ready"));
return payload;
}
async setCachedBalance(balancePoints) {
var _a;
this.balanceRevision += 1;
const value = Number(balancePoints);
this.state.balancePoints = Number.isFinite(value) ? Math.max(0, value) : null;
await writeShared(STORE.balancePoints, (_a = this.state.balancePoints) != null ? _a : "");
window.dispatchEvent(new CustomEvent("drip7boi:balance", { detail: this.getAccountSnapshot() }));
return this.state.balancePoints;
}
async applyAccountPayload(payload = {}) {
var _a, _b, _c, _d;
this.balanceRevision += 1;
if (Object.hasOwn(payload, "balancePoints")) {
const balance = Number(payload.balancePoints);
this.state.balancePoints = Number.isFinite(balance) ? Math.max(0, balance) : this.state.balancePoints;
}
for (const key of ["dailyUsedPoints", "dailyLimitPoints"]) {
if (!Object.hasOwn(payload, key)) continue;
const value = Number(payload[key]);
this.state[key] = Number.isFinite(value) ? Math.max(0, value) : null;
}
if (Object.hasOwn(payload, "dailyRemainingPoints")) {
const value = payload.dailyRemainingPoints;
this.state.dailyRemainingPoints = value === null ? null : Math.max(0, Number(value) || 0);
}
if (Object.hasOwn(payload, "resetAt")) this.state.resetAt = String(payload.resetAt || "");
await Promise.all([
writeShared(STORE.balancePoints, (_a = this.state.balancePoints) != null ? _a : ""),
writeShared(STORE.dailyUsedPoints, (_b = this.state.dailyUsedPoints) != null ? _b : ""),
writeShared(STORE.dailyLimitPoints, (_c = this.state.dailyLimitPoints) != null ? _c : ""),
writeShared(STORE.dailyRemainingPoints, (_d = this.state.dailyRemainingPoints) != null ? _d : ""),
writeShared(STORE.resetAt, this.state.resetAt)
]);
window.dispatchEvent(new CustomEvent("drip7boi:balance", { detail: this.getAccountSnapshot() }));
this.scheduleProfileSync();
return this.getAccountSnapshot();
}
async refreshMe() {
var _a;
if (!this.state.accessToken) return this.startAutomatically();
const token = this.state.accessToken;
const revision = this.balanceRevision;
if (((_a = this.meRequest) == null ? void 0 : _a.token) === token && this.meRequest.revision === revision) return this.meRequest.promise;
const pending = { token, revision };
pending.promise = (async () => {
try {
const payload = await this.request("/api/me", { method: "GET", headers: { Authorization: `Bearer ${token}` } });
if (this.state.accessToken !== token || this.balanceRevision !== revision) throw Object.assign(new Error("\u8D26\u6237\u72B6\u6001\u5DF2\u66F4\u65B0\uFF0C\u8BF7\u91CD\u65B0\u5237\u65B0\u4F59\u989D"), { code: "ACCOUNT_CHANGED" });
await this.applyAccountPayload(payload);
return payload;
} catch (error) {
if (this.state.accessToken !== token) throw Object.assign(new Error("\u8D26\u6237\u5DF2\u53D8\u5316\uFF0C\u8BF7\u91CD\u65B0\u5237\u65B0\u4F59\u989D"), { code: "ACCOUNT_CHANGED" });
throw error;
} finally {
if (this.meRequest === pending) this.meRequest = null;
}
})();
this.meRequest = pending;
return pending.promise;
}
async redeemCard(cardCode) {
const uid = this.getChaoxingUid();
if (!uid) {
const error = new Error("ACCOUNT_UNRECOGNIZED");
error.code = "ACCOUNT_UNRECOGNIZED";
throw error;
}
await this.ensureSession();
await this.getBindingRequest();
const payload = await this.request("/api/redeem", { method: "POST", body: JSON.stringify({ installId: this.state.installId, deviceSecret: this.deviceSecret, chaoxingUid: uid, cardCode, clientVersion: this.config.clientVersion }) });
if (payload.installId) {
this.state.installId = payload.installId;
await writeShared(STORE.installId, payload.installId);
}
this.state.accessToken = payload.accessToken;
await writeShared(STORE.accessToken, payload.accessToken);
await this.applyAccountPayload(payload);
window.dispatchEvent(new CustomEvent("drip7boi:account-ready"));
return this.refreshMe();
}
async getInvite() {
await this.ensureSession();
return this.request("/api/invite", { method: "GET" });
}
async bindInvite(code) {
await this.ensureSession();
const payload = await this.request("/api/invite/bind", { method: "POST", body: JSON.stringify({ code }) });
await this.applyAccountPayload(payload);
window.dispatchEvent(new CustomEvent("drip7boi:balance", { detail: this.getAccountSnapshot() }));
return payload;
}
// 面板扫码付款:下单拿付款码;查单时如果已到账,顺手把余额写回本地。
async createPayOrder(packageId, method) {
await this.ensureSession();
return this.request("/api/pay/orders", { method: "POST", body: JSON.stringify({ packageId, method }) });
}
async getPayOrder(orderNo) {
const payload = await this.request(`/api/pay/orders/${encodeURIComponent(orderNo)}`, { method: "GET" });
if (payload.status === "paid" && Number.isFinite(Number(payload.balancePoints))) await this.applyAccountPayload({ balancePoints: payload.balancePoints });
return payload;
}
async ensureUsableBalance() {
const me = await this.refreshMe();
if (Number((me == null ? void 0 : me.balancePoints) || 0) <= 0) {
const error = new Error("INSUFFICIENT_BALANCE");
error.code = "INSUFFICIENT_BALANCE";
throw error;
}
if (Number((me == null ? void 0 : me.dailyLimitPoints) || 0) > 0 && Number((me == null ? void 0 : me.dailyRemainingPoints) || 0) <= 0) {
const error = new Error("DAILY_LIMIT_REACHED");
error.code = "DAILY_LIMIT_REACHED";
error.payload = me;
throw error;
}
return me;
}
async getRemoteConfig({ force = false } = {}) {
const now = Date.now();
if (!force && this.remoteConfig && now - this.remoteConfigFetchedAt < 3e4) return this.remoteConfig;
const payload = await this.request(`/api/config?installId=${encodeURIComponent(this.state.installId || "")}`, { method: "GET" });
this.remoteConfig = payload;
this.remoteConfigFetchedAt = now;
window.__dripLastConfig = payload;
window.dispatchEvent(new CustomEvent("drip7boi:config", { detail: payload }));
return payload;
}
async request(path, options = {}) {
const requestToken = this.state.accessToken;
if (this.state.accessToken && this.deviceSecret) {
options = { ...options, headers: { ...options.headers, Authorization: `Bearer ${this.state.accessToken}`, "x-install-id": this.state.installId, "x-device-secret": this.deviceSecret, ...this.chaoxingUidSource() === "cookie" ? { "x-chaoxing-uid": this.getChaoxingUid() } : {} } };
}
const clientChannel = typeof __dripExtensionFetch === "function" ? "extension" : typeof __dripUserscriptFetch === "function" ? "userscript" : "";
if (clientChannel) options = { ...options, headers: { "x-client-channel": clientChannel, ...options.headers } };
const response = await __dripUserscriptFetch(`${this.apiBaseUrl}${path}`, { ...options, headers: { "Content-Type": "application/json", "x-client-version": this.config.clientVersion, ...options.headers || {} } });
const payload = await response.json().catch(() => ({}));
if (!response.ok || payload.ok === false) {
if (payload.code === "DAILY_LIMIT_REACHED" || payload.error === "DAILY_LIMIT_REACHED") {
await this.applyAccountPayload(payload);
}
const code = payload.code || payload.error || `HTTP_${response.status}`;
const error = new Error(payload.message || code);
error.code = code;
error.status = response.status;
error.payload = payload;
if (["UNAUTHORIZED", "BINDING_REQUIRED", "UID_MISMATCH"].includes(code) && path !== "/api/account" && requestToken && this.state.accessToken === requestToken) {
await this.clearAccountSession();
error.message = code === "UID_MISMATCH" ? payload.message || "\u68C0\u6D4B\u5230\u6362\u4E86\u5B66\u4E60\u901A\u8D26\u53F7\uFF0C\u8BF7\u5237\u65B0\u9875\u9762\u540E\u518D\u7528" : "\u4F7F\u7528\u72B6\u6001\u5DF2\u5931\u6548\uFF0C\u8BF7\u5237\u65B0\u9875\u9762\u91CD\u8BD5\uFF1B\u539F\u6709\u79EF\u5206\u4ECD\u4FDD\u7559";
}
throw error;
}
return payload;
}
};
var PaidProxyProvider = class {
constructor({ licenseClient, timeout, maxRetries, logger }) {
this.licenseClient = licenseClient;
this.timeout = timeout;
this.maxRetries = maxRetries;
this.logger = logger;
}
setConfig({ timeout, maxRetries }) {
if (typeof timeout === "number") this.timeout = timeout;
if (typeof maxRetries === "number") this.maxRetries = maxRetries;
}
async ask(prompt, meta = {}, options = {}) {
var _a, _b, _c;
assertAiAnswerAllowed(null, options);
await this.licenseClient.ensureUsableBalance();
let lastError;
for (let attempt = 0; attempt <= this.maxRetries; attempt += 1) {
assertAiAnswerAllowed(null, options);
try {
const result = await this.requestAnswer(prompt, meta);
return options.returnFull ? result : result.answer;
} catch (error) {
assertAiAnswerAllowed(null, options);
lastError = error;
if (["BINDING_REQUIRED", "PAIRING_INVALID", "UNAUTHORIZED", "DEVICE_BANNED", "AI_PROVIDER_ERROR", "AI_PROVIDER_TIMEOUT", "AI_EMPTY_ANSWER", "INVALID_USAGE", "ACCOUNT_CHANGED", "REQUEST_ID_CONFLICT", "HTTP_502", "HTTP_503"].includes(error.code)) throw error;
if (error.code === "RATE_LIMITED") {
const waitSeconds = Math.max(1, Number((_a = error.payload) == null ? void 0 : _a.retryAfterSeconds) || 30);
(_b = this.logger) == null ? void 0 : _b.log(`\u8BF7\u6C42\u592A\u5FEB\uFF0C\u5DF2\u6682\u505C ${waitSeconds} \u79D2`, "warn");
error.retryAfterSeconds = waitSeconds;
throw error;
}
if (["INSUFFICIENT_BALANCE", "NOT_ACTIVATED", "DAILY_LIMIT_REACHED", "DEVICE_BANNED", "UNAUTHORIZED", "ORIGIN_NOT_ALLOWED"].includes(error.code)) throw error;
if (attempt < this.maxRetries) {
(_c = this.logger) == null ? void 0 : _c.log(`AI \u8BF7\u6C42\u5931\u8D25\uFF0C\u51C6\u5907\u91CD\u8BD5 ${attempt + 1}/${this.maxRetries}: ${error.message}`, "warn");
}
}
}
throw lastError;
}
async requestAnswer(prompt, meta = {}) {
var _a, _b;
const accessToken = this.licenseClient.getAccessToken();
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), this.timeout);
try {
const payload = await this.licenseClient.request("/api/answer", {
method: "POST",
signal: controller.signal,
headers: { Authorization: `Bearer ${accessToken}` },
body: JSON.stringify({
requestId: ((_a = crypto.randomUUID) == null ? void 0 : _a.call(crypto)) || `${Date.now()}-${Math.random().toString(16).slice(2)}`,
model: "deepseek-chat",
prompt,
questionMeta: meta
})
});
const balancePoints = (_b = payload.balancePoints) != null ? _b : payload.balanceTokens;
if (typeof balancePoints === "number") await this.licenseClient.setCachedBalance(balancePoints);
return {
answer: String(payload.answer || "").trim(),
usage: payload.usage || { totalTokens: 0 },
balancePoints
};
} finally {
clearTimeout(timer);
}
}
};
var LOGO_DATA_URL = "data:image/png;base64,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";
var LauncherBird = (() => {
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var extension_ui_exports = {};
__export(extension_ui_exports, {
decoratePanel: () => decoratePanel,
installUiStyles: () => installUiStyles,
mountBirdMotion: () => mountBirdMotion
});
var tokens_default = "/* Opt-in only: importing this sheet does not style the host page. */\n.lt-ui {\n --lt-color-page: #f5f6f8;\n --lt-color-panel: #ffffff;\n --lt-color-secondary: #f5f6f8;\n --lt-color-hover: #eef0f3;\n --lt-color-pressed: #e4e7ec;\n --lt-color-selected: #edf0fc;\n --lt-color-border: #e1e4e8;\n --lt-color-control-border: #89929f;\n --lt-color-text: #20242c;\n --lt-color-text-secondary: #59616e;\n --lt-color-text-muted: #68707e;\n --lt-color-brand: #465acb;\n --lt-color-brand-hover: #3d4fb5;\n --lt-color-brand-pressed: #35459b;\n --lt-color-success: #18724b;\n --lt-color-success-bg: #eef7f1;\n --lt-color-warning: #8c5a0b;\n --lt-color-warning-bg: #fff7e6;\n --lt-color-error: #b42318;\n --lt-color-error-bg: #fff1f0;\n --lt-color-disabled-bg: #f0f1f3;\n --lt-color-disabled-text: #9298a2;\n --lt-color-launcher: rgba(255, 255, 255, .96);\n --lt-space-0: 0px;\n --lt-space-2: 2px;\n --lt-space-4: 4px;\n --lt-space-8: 8px;\n --lt-space-12: 12px;\n --lt-space-16: 16px;\n --lt-space-20: 20px;\n --lt-space-24: 24px;\n --lt-space-32: 32px;\n --lt-radius-badge: 4px;\n --lt-radius-selection: 6px;\n --lt-radius-control: 8px;\n --lt-radius-surface: 12px;\n --lt-radius-round: 999px;\n --lt-border-width: 1px;\n --lt-focus-width: 2px;\n --lt-focus-offset: 2px;\n --lt-size-button: 36px;\n --lt-size-button-min: 64px;\n --lt-size-icon-button: 40px;\n --lt-size-touch: 44px;\n --lt-size-icon: 16px;\n --lt-icon-stroke: 2;\n --lt-size-toggle-width: 36px;\n --lt-size-toggle-height: 20px;\n --lt-size-toggle-thumb: 16px;\n --lt-size-launcher: 48px;\n --lt-size-logo: 32px;\n --lt-size-panel: 352px;\n --lt-size-panel-min: 320px;\n --lt-size-panel-max-height: 560px;\n --lt-size-course: 720px;\n --lt-size-course-custom-input: 64px;\n --lt-size-course-segments: 232px;\n --lt-size-course-guard: 140px;\n --lt-size-header: 48px;\n --lt-size-segment-min: 56px;\n --lt-size-status-dot: 6px;\n --lt-font-family: 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', system-ui, sans-serif;\n --lt-font-mono: ui-monospace, Consolas, monospace;\n --lt-font-title: 14px;\n --lt-font-body: 13px;\n --lt-font-caption: 12px;\n --lt-font-section: 16px;\n --lt-font-balance: 20px;\n --lt-line-body: 20px;\n --lt-line-caption: 18px;\n --lt-line-section: 24px;\n --lt-weight-normal: 400;\n --lt-weight-medium: 500;\n --lt-weight-semibold: 600;\n --lt-shadow-1: 0 1px 2px rgba(15, 23, 42, .06);\n --lt-shadow-2: 0 4px 12px rgba(15, 23, 42, .12);\n --lt-shadow-3: 0 8px 24px rgba(15, 23, 42, .16);\n --lt-duration-press: 90ms;\n --lt-duration-hover: 140ms;\n --lt-duration-state: 180ms;\n --lt-duration-open: 200ms;\n --lt-duration-close: 120ms;\n --lt-duration-snap: 180ms;\n --lt-ease-standard: cubic-bezier(.2, 0, 0, 1);\n --lt-ease-out: cubic-bezier(.16, 1, .3, 1);\n --lt-ease-in: cubic-bezier(.4, 0, 1, 1);\n --lt-scale-launcher-pressed: .97;\n --lt-scale-launcher-lift: 1.04;\n font-family: var(--lt-font-family);\n font-size: var(--lt-font-body);\n line-height: var(--lt-line-body);\n font-weight: var(--lt-weight-normal);\n color: var(--lt-color-text);\n}\n";
var components_default = `/* All component selectors require the explicit .lt-ui boundary. */
.lt-ui :where(*, *::before, *::after) { box-sizing: border-box; }
.lt-ui :where(button, input, summary) { font: inherit; }
.lt-ui [hidden] { display: none !important; }
.lt-ui .lt-icon {
width: var(--lt-size-icon);
height: var(--lt-size-icon);
flex: 0 0 var(--lt-size-icon);
stroke-width: var(--lt-icon-stroke);
vertical-align: middle;
}
.lt-ui .lt-button {
display: inline-flex;
align-items: center;
justify-content: center;
gap: var(--lt-space-8);
min-width: var(--lt-size-button-min);
min-height: var(--lt-size-button);
padding: var(--lt-space-4) var(--lt-space-12);
border: var(--lt-border-width) solid transparent;
border-radius: var(--lt-radius-control);
background: transparent;
color: var(--lt-color-text);
font-weight: var(--lt-weight-medium);
line-height: var(--lt-line-body);
text-decoration: none;
cursor: pointer;
transition: background-color var(--lt-duration-hover) var(--lt-ease-standard),
border-color var(--lt-duration-hover) var(--lt-ease-standard),
color var(--lt-duration-hover) var(--lt-ease-standard);
}
.lt-ui .lt-button--primary { background: var(--lt-color-brand); color: var(--lt-color-panel); }
.lt-ui .lt-button--secondary { background: var(--lt-color-panel); border-color: var(--lt-color-border); }
.lt-ui .lt-button--ghost, .lt-ui .lt-button--icon { color: var(--lt-color-text-secondary); }
.lt-ui .lt-button--icon {
width: var(--lt-size-icon-button);
height: var(--lt-size-icon-button);
min-width: var(--lt-size-icon-button);
padding: var(--lt-space-0);
}
.lt-ui .lt-button:not(:disabled):not([aria-disabled="true"]):is(:hover, [data-ui-state="hover"]) {
background: var(--lt-color-hover);
color: var(--lt-color-text);
}
.lt-ui .lt-button--primary:not(:disabled):not([aria-disabled="true"]):is(:hover, [data-ui-state="hover"]) {
background: var(--lt-color-brand-hover);
color: var(--lt-color-panel);
}
.lt-ui .lt-button:not(:disabled):not([aria-disabled="true"]):is(:active, [data-ui-state="pressed"]) {
background: var(--lt-color-pressed);
transition-duration: var(--lt-duration-press);
}
.lt-ui .lt-button--primary:not(:disabled):not([aria-disabled="true"]):is(:active, [data-ui-state="pressed"]) {
background: var(--lt-color-brand-pressed);
}
.lt-ui .lt-button[aria-expanded="true"] { background: var(--lt-color-selected); }
.lt-ui :is(.lt-button, .lt-toggle, .lt-segment, .lt-launcher, .lt-input):is(:focus-visible, [data-ui-state="focus"]) {
outline: var(--lt-focus-width) solid var(--lt-color-brand);
outline-offset: var(--lt-focus-offset);
}
.lt-ui .lt-button:is(:disabled, [aria-disabled="true"]) {
background: var(--lt-color-disabled-bg);
color: var(--lt-color-disabled-text);
border-color: transparent;
cursor: not-allowed;
}
.lt-ui .lt-button--ghost:is(:disabled, [aria-disabled="true"]),
.lt-ui .lt-button--icon:is(:disabled, [aria-disabled="true"]) { background: transparent; }
.lt-ui .lt-button[aria-busy="true"] { cursor: progress; }
.lt-ui .lt-toggle {
display: inline-flex;
align-items: center;
justify-content: space-between;
gap: var(--lt-space-16);
min-height: var(--lt-size-icon-button);
padding: var(--lt-space-8);
border: var(--lt-border-width) solid transparent;
border-radius: var(--lt-radius-control);
background: transparent;
color: var(--lt-color-text);
cursor: pointer;
transition: background-color var(--lt-duration-hover) var(--lt-ease-standard);
}
.lt-ui .lt-toggle:not(:disabled):is(:hover, [data-ui-state="hover"]) { background: var(--lt-color-hover); }
.lt-ui .lt-toggle-copy { display: flex; flex-direction: column; text-align: left; gap: var(--lt-space-2); }
.lt-ui .lt-toggle-label { font-weight: var(--lt-weight-medium); }
.lt-ui .lt-toggle-value { font-size: var(--lt-font-caption); line-height: var(--lt-line-caption); color: var(--lt-color-text-muted); padding: var(--lt-space-2) var(--lt-space-8); border-radius: var(--lt-radius-badge); background: var(--lt-color-secondary); }
.lt-ui .lt-toggle[aria-checked="true"] .lt-toggle-value { color: var(--lt-color-success); background: var(--lt-color-success-bg); }
.lt-ui .lt-toggle-track {
display: block;
position: relative;
width: var(--lt-size-toggle-width);
height: var(--lt-size-toggle-height);
flex: 0 0 var(--lt-size-toggle-width);
border-radius: var(--lt-radius-round);
background: var(--lt-color-control-border);
transition: background-color var(--lt-duration-state) var(--lt-ease-standard);
}
.lt-ui .lt-toggle-track::after {
content: '';
position: absolute;
width: var(--lt-size-toggle-thumb);
height: var(--lt-size-toggle-thumb);
top: var(--lt-space-2);
left: var(--lt-space-2);
border-radius: var(--lt-radius-round);
background: var(--lt-color-panel);
transition: transform var(--lt-duration-state) var(--lt-ease-standard);
}
.lt-ui .lt-toggle[aria-checked="true"] .lt-toggle-track { background: var(--lt-color-brand); }
.lt-ui .lt-toggle[aria-checked="true"] .lt-toggle-track::after { transform: translateX(var(--lt-size-toggle-thumb)); }
.lt-ui .lt-toggle:not(:disabled):active .lt-toggle-track { background: var(--lt-color-text-secondary); }
.lt-ui .lt-toggle[aria-checked="true"]:not(:disabled):active .lt-toggle-track { background: var(--lt-color-brand-pressed); }
.lt-ui .lt-toggle:disabled { color: var(--lt-color-disabled-text); cursor: not-allowed; }
.lt-ui .lt-toggle:disabled .lt-toggle-track { background: var(--lt-color-disabled-text); }
.lt-ui .lt-segmented {
--lt-segment-count: 4;
--lt-segment-index: 0;
position: relative;
display: grid;
grid-template-columns: repeat(var(--lt-segment-count), minmax(var(--lt-size-segment-min), 1fr));
min-width: 0;
width: 100%;
padding: var(--lt-space-2);
border-radius: var(--lt-radius-control);
background: var(--lt-color-secondary);
isolation: isolate;
}
.lt-ui .lt-segment-indicator {
position: absolute;
z-index: -1;
top: var(--lt-space-2);
bottom: var(--lt-space-2);
left: var(--lt-space-2);
width: calc((100% - var(--lt-space-2) * 2) / var(--lt-segment-count));
border-radius: var(--lt-radius-selection);
background: var(--lt-color-panel);
box-shadow: var(--lt-shadow-1);
transform: translateX(calc(var(--lt-segment-index) * 100%));
transition: transform var(--lt-duration-state) var(--lt-ease-standard);
}
.lt-ui .lt-segment {
position: relative;
min-width: 0;
min-height: calc(var(--lt-size-button) - var(--lt-space-2) * 2);
padding: var(--lt-space-4) var(--lt-space-8);
border: 0;
border-radius: var(--lt-radius-selection);
background: transparent;
color: var(--lt-color-text-secondary);
font-weight: var(--lt-weight-medium);
font-variant-numeric: tabular-nums;
cursor: pointer;
transition: background-color var(--lt-duration-hover) var(--lt-ease-standard);
}
.lt-ui .lt-segment[aria-checked="true"] { color: var(--lt-color-text); font-weight: var(--lt-weight-semibold); }
.lt-ui .lt-segment[aria-checked="false"]:not(:disabled):hover { background: var(--lt-color-hover); }
.lt-ui .lt-segment:not(:disabled):active { background: var(--lt-color-pressed); }
.lt-ui .lt-segment:disabled { color: var(--lt-color-disabled-text); cursor: not-allowed; }
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher) {
display: grid;
place-items: center;
width: var(--lt-size-launcher);
height: var(--lt-size-launcher);
flex: 0 0 var(--lt-size-launcher);
padding: var(--lt-space-0);
border: var(--lt-border-width) solid var(--lt-color-border);
border-radius: var(--lt-radius-surface);
background: var(--lt-color-launcher);
box-shadow: var(--lt-shadow-2);
cursor: pointer;
transition: background-color var(--lt-duration-hover) var(--lt-ease-standard), border-color var(--lt-duration-hover) var(--lt-ease-standard);
}
.lt-ui .lt-launcher-mark {
display: block;
width: var(--lt-size-logo);
height: var(--lt-size-logo);
object-fit: contain;
transition: transform var(--lt-duration-press) var(--lt-ease-standard);
}
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher):is(:hover, [data-ui-state="hover"]) { background: var(--lt-color-hover); }
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher):is(:active, [data-ui-state="pressed"]) .lt-launcher-mark { transform: scale(var(--lt-scale-launcher-pressed)); }
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher)[aria-expanded="true"] { background: var(--lt-color-selected); border-color: var(--lt-color-brand); }
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher)[data-bird-press="true"] .lt-launcher-mark { transform: scale(var(--lt-scale-launcher-pressed)); }
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher)[data-bird-pose="spread"] { box-shadow: var(--lt-shadow-3); }
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher)[data-bird-pose="spread"] .lt-launcher-mark { transform: scale(var(--lt-scale-launcher-lift)); }
:is(.lt-ui .lt-panel, .lt-ui.lt-panel) {
display: flex;
flex-direction: column;
width: min(var(--lt-size-panel), calc(100vw - var(--lt-space-12) * 2));
min-width: min(var(--lt-size-panel-min), calc(100vw - var(--lt-space-12) * 2));
max-width: 100%;
max-height: min(var(--lt-size-panel-max-height), calc(100dvh - var(--lt-space-12) * 2));
overflow: hidden;
border: var(--lt-border-width) solid var(--lt-color-border);
border-radius: var(--lt-radius-surface);
background: var(--lt-color-panel);
box-shadow: var(--lt-shadow-3);
}
.lt-ui .lt-panel-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--lt-space-8);
min-height: var(--lt-size-header);
padding: var(--lt-space-4) var(--lt-space-8) var(--lt-space-0) var(--lt-space-16);
flex-shrink: 0;
}
.lt-ui .lt-panel-title { margin: 0; font-size: var(--lt-font-title); line-height: var(--lt-line-body); font-weight: var(--lt-weight-semibold); }
.lt-ui .lt-panel-body { padding: var(--lt-space-8) var(--lt-space-16) var(--lt-space-16); overflow: auto; min-height: 0; }
.lt-ui .lt-status { display: flex; align-items: center; gap: var(--lt-space-8); font-size: var(--lt-font-caption); line-height: var(--lt-line-caption); font-weight: var(--lt-weight-medium); }
.lt-ui .lt-status-dot { width: var(--lt-size-status-dot); height: var(--lt-size-status-dot); border-radius: var(--lt-radius-round); background: var(--lt-color-control-border); flex-shrink: 0; }
.lt-ui .lt-caption { color: var(--lt-color-text-muted); font-size: var(--lt-font-caption); line-height: var(--lt-line-caption); margin: var(--lt-space-4) 0 0; overflow-wrap: anywhere; }
.lt-ui .lt-help-copy { color: var(--lt-color-text-secondary); font-size: var(--lt-font-body); line-height: var(--lt-line-body); text-align: left; overflow-wrap: anywhere; }
.lt-ui .lt-help-emphasis { color: var(--lt-color-brand); font-weight: var(--lt-weight-medium); }
.lt-ui .lt-help-lead { display: block; margin-bottom: var(--lt-space-4); color: var(--lt-color-brand); font-weight: var(--lt-weight-medium); }
.lt-ui .lt-help-purchase { color: var(--lt-color-warning); }
.lt-ui .lt-help-safe { color: var(--lt-color-success); font-weight: var(--lt-weight-medium); }
.lt-ui .lt-context { margin: var(--lt-space-8) 0 var(--lt-space-16); color: var(--lt-color-text-secondary); }
:is(.lt-ui .lt-panel, .lt-ui.lt-panel) .lt-toggle { width: 100%; padding-inline: 0; min-height: var(--lt-size-launcher); }
.lt-ui .lt-panel-section { padding-top: var(--lt-space-16); margin-top: var(--lt-space-16); border-top: var(--lt-border-width) solid var(--lt-color-border); }
.lt-ui .lt-course-entry { justify-content: flex-start; margin-left: calc(var(--lt-space-8) * -1); padding-inline: var(--lt-space-8); }
.lt-ui .lt-account-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--lt-space-8); }
.lt-ui .lt-account-copy { display: flex; align-items: baseline; gap: var(--lt-space-8); }
.lt-ui .lt-balance { font-size: var(--lt-font-balance); line-height: var(--lt-line-section); font-weight: var(--lt-weight-semibold); font-variant-numeric: tabular-nums; }
.lt-ui .lt-account-actions { display: flex; align-items: center; gap: var(--lt-space-4); }
.lt-ui .lt-disclosure > summary { list-style: none; }
.lt-ui .lt-disclosure > summary::-webkit-details-marker { display: none; }
.lt-ui .lt-disclosure[open] > summary { background: var(--lt-color-selected); }
.lt-ui .lt-disclosure[open] > summary .lt-icon { transform: rotate(180deg); }
.lt-ui .lt-disclosure > summary .lt-icon { transition: transform var(--lt-duration-state) var(--lt-ease-standard); }
.lt-ui .lt-recharge { margin-top: var(--lt-space-8); }
.lt-ui .lt-disclosure-content { padding-top: var(--lt-space-12); }
.lt-ui .lt-field { display: flex; flex-direction: column; gap: var(--lt-space-8); }
.lt-ui .lt-input { width: 100%; height: var(--lt-size-touch); padding: var(--lt-space-8) var(--lt-space-12); border: var(--lt-border-width) solid var(--lt-color-control-border); border-radius: var(--lt-radius-control); background: var(--lt-color-panel); color: var(--lt-color-text); }
.lt-ui .lt-form-actions { display: flex; gap: var(--lt-space-8); margin-top: var(--lt-space-12); }
.lt-ui .lt-log-summary { justify-content: space-between; width: 100%; padding-inline: 0; }
.lt-ui .lt-log-summary-copy { display: flex; flex-direction: column; text-align: left; }
.lt-ui .lt-log-entry { display: flex; gap: var(--lt-space-8); align-items: start; padding-block: var(--lt-space-8); }
.lt-ui .lt-log-entry .lt-icon { color: var(--lt-color-success); margin-top: var(--lt-space-2); }
.lt-ui .lt-log-text { margin: 0; }
@media (pointer: coarse) {
.lt-ui :is(.lt-button, .lt-toggle) { min-height: var(--lt-size-touch); }
.lt-ui .lt-button--icon { width: var(--lt-size-touch); height: var(--lt-size-touch); min-width: var(--lt-size-touch); }
.lt-ui .lt-segment { min-height: calc(var(--lt-size-touch) - var(--lt-space-2) * 2); }
}
@media (prefers-reduced-motion: reduce) {
.lt-ui :is(.lt-button, .lt-toggle, .lt-toggle-track, .lt-toggle-track::after, .lt-segment-indicator, .lt-segment, .lt-launcher, .lt-launcher-mark, .lt-disclosure > summary .lt-icon) { transition: none; }
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher):is(:active, [data-ui-state="pressed"]) .lt-launcher-mark { transform: none; }
:is(.lt-ui .lt-launcher, .lt-ui.lt-launcher):is([data-bird-pose="spread"], [data-bird-press="true"]) .lt-launcher-mark { transform: none; }
}
`;
var runtime_default = `/* Runtime adapters retain the existing hooks; every rule is opt-in and scoped. */
.lt-ui.lt-ux-collapse-toast{position:fixed;z-index:2147483647;width:240px;box-sizing:border-box;margin:0;padding:var(--lt-space-8) var(--lt-space-12);background:var(--lt-color-panel);color:var(--lt-color-text-secondary);border:var(--lt-border-width) solid var(--lt-color-border);border-radius:var(--lt-radius-control);box-shadow:var(--lt-shadow-2);font-size:var(--lt-font-caption);pointer-events:none}
.lt-ui.lt-ux-collapse-toast[hidden]{display:none}
.lt-ui [hidden]{display:none!important}
#cxds-logo.lt-ui{position:fixed;right:var(--lt-space-24);top:74px;z-index:2147483647;touch-action:none;isolation:isolate}
#cxds-logo.lt-ui[data-lt-bird]>.lt-bird-mark{width:var(--lt-size-logo);height:var(--lt-size-logo)}
#cxds-logo.lt-ui.cxds-active{background:var(--lt-color-selected);border-color:var(--lt-color-brand);z-index:2147483645}
#cxds-logo.lt-ui.cxds-dragging{cursor:grabbing;box-shadow:var(--lt-shadow-3)}
#cxds-logo.lt-ui:focus-visible{outline:var(--lt-focus-width) solid var(--lt-color-brand);outline-offset:var(--lt-focus-offset)}
#cxds-panel.lt-ui{box-sizing:border-box;position:fixed;z-index:2147483646;text-align:left;isolation:isolate;color-scheme:light;transition:opacity var(--lt-duration-open) var(--lt-ease-standard)}
#cxds-panel.lt-ui.cxds-hidden{visibility:hidden;opacity:0;pointer-events:none}
#cxds-panel.lt-ui .cxds-header{display:flex;align-items:center;justify-content:space-between;gap:var(--lt-space-8);min-height:var(--lt-size-header);padding:var(--lt-space-4) var(--lt-space-8) 0 var(--lt-space-16);flex-shrink:0}
#cxds-panel.lt-ui .cxds-title strong{font-size:var(--lt-font-title);line-height:var(--lt-line-body);font-weight:var(--lt-weight-semibold)}
#cxds-panel.lt-ui .cxds-title small,#cxds-panel.lt-ui .cxds-status-badge{display:none}
#cxds-panel.lt-ui .cxds-body{padding:var(--lt-space-8) var(--lt-space-16) var(--lt-space-16);overflow:auto;min-height:0;scrollbar-width:thin}
#cxds-panel.lt-ui .lt-runtime-empty{display:none}
#cxds-panel.lt-ui .cxds-status-banner{display:flex;align-items:center;gap:var(--lt-space-8);font-size:var(--lt-font-caption);line-height:var(--lt-line-caption);font-weight:var(--lt-weight-medium);margin:0 0 var(--lt-space-8)}
#cxds-panel.lt-ui .cxds-status-dot{width:var(--lt-size-status-dot);height:var(--lt-size-status-dot);background:var(--lt-color-control-border);border-radius:var(--lt-radius-round);flex-shrink:0}
#cxds-panel.lt-ui .cxds-status-banner:is(.is-warning,.is-error){color:var(--lt-color-warning)}
#cxds-panel.lt-ui .cxds-status-banner.is-error{color:var(--lt-color-error)}
#cxds-panel.lt-ui .cxds-status-banner.is-success{color:var(--lt-color-success)}
#cxds-panel.lt-ui .cxds-status-banner:is(.is-warning,.is-error,.is-success) .cxds-status-dot{background:currentColor}
#cxds-panel.lt-ui .drip-task-context{font-size:var(--lt-font-caption);line-height:var(--lt-line-caption);color:var(--lt-color-text-secondary);margin:0 0 var(--lt-space-12);overflow-wrap:anywhere}
#cxds-panel.lt-ui .drip-current{margin:var(--lt-space-8) 0;padding:var(--lt-space-12);border-radius:var(--lt-radius-control);background:var(--lt-color-secondary);font-size:var(--lt-font-caption)}
#cxds-panel.lt-ui .drip-current-head{display:flex;justify-content:space-between;gap:var(--lt-space-8);color:var(--lt-color-text-secondary)}
#cxds-panel.lt-ui [data-current-title]{display:block;margin-top:var(--lt-space-4);font-weight:var(--lt-weight-medium)}
#cxds-panel.lt-ui [data-current-description]{margin:var(--lt-space-4) 0 0;color:var(--lt-color-text-secondary);overflow-wrap:anywhere}
#cxds-panel.lt-ui .drip-ai-toggle{width:100%;padding-inline:0;min-height:var(--lt-size-launcher)}
#cxds-panel.lt-ui .drip-ai-copy{display:flex;align-items:center;gap:var(--lt-space-8)}
#cxds-panel.lt-ui .drip-ai-copy strong{font-size:var(--lt-font-body);font-weight:var(--lt-weight-medium)}
#cxds-panel.lt-ui .drip-ai-copy small{font-size:var(--lt-font-caption);line-height:var(--lt-line-caption);color:var(--lt-color-text-muted);background:var(--lt-color-secondary);padding:var(--lt-space-2) var(--lt-space-8);border-radius:var(--lt-radius-badge)}
#cxds-panel.lt-ui .drip-ai-toggle[aria-checked="true"] .drip-ai-copy small{color:var(--lt-color-success);background:var(--lt-color-success-bg)}
#cxds-panel.lt-ui #drip-ai-help{margin:0;color:var(--lt-color-text-secondary);font-size:var(--lt-font-body);line-height:var(--lt-line-body)}
#cxds-panel.lt-ui .cxds-notice{margin:var(--lt-space-8) 0;padding:var(--lt-space-8);background:var(--lt-color-warning-bg);color:var(--lt-color-warning);font-size:var(--lt-font-caption);border-radius:var(--lt-radius-badge)}
#cxds-panel.lt-ui .cxds-license-box{margin-top:var(--lt-space-16);padding-top:var(--lt-space-16);border-top:var(--lt-border-width) solid var(--lt-color-border)}
#cxds-panel.lt-ui .lt-runtime-account-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--lt-space-8)}
#cxds-panel.lt-ui .cxds-license-top{display:flex;align-items:baseline;gap:var(--lt-space-8);flex:1;min-width:0;font-size:var(--lt-font-caption);color:var(--lt-color-text-secondary)}
#cxds-panel.lt-ui .drip-balance-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--lt-space-4)}
#cxds-panel.lt-ui [data-balance]{font-size:var(--lt-font-balance);line-height:var(--lt-line-section);color:var(--lt-color-text);font-weight:var(--lt-weight-semibold);font-variant-numeric:tabular-nums}
#cxds-panel.lt-ui .drip-license-status{font-size:var(--lt-font-caption);color:var(--lt-color-text-muted)}
#cxds-panel.lt-ui .drip-warning-icon{display:none}
#cxds-panel.lt-ui [data-license-state][data-ux-state="ready"]{color:var(--lt-color-success)}
#cxds-panel.lt-ui [data-license-state][data-ux-state="warning"]{color:var(--lt-color-warning)}
#cxds-panel.lt-ui [data-balance][data-ux-known="true"]::after{content:' \u79EF\u5206';font-size:var(--lt-font-caption);font-weight:var(--lt-weight-normal)}
#cxds-panel.lt-ui :is(.lt-ux-course,.lt-ux-next,.lt-ux-feedback,.lt-ux-receipt,.lt-ux-collapse){font-size:var(--lt-font-caption);line-height:var(--lt-line-body);overflow-wrap:anywhere;margin:var(--lt-space-4) 0 var(--lt-space-8);color:var(--lt-color-text-secondary)}
#cxds-panel.lt-ui .lt-ux-next{color:var(--lt-color-text);font-weight:var(--lt-weight-medium)}
#cxds-panel.lt-ui .lt-ux-receipt{color:var(--lt-color-brand)}
#cxds-panel.lt-ui .lt-ux-collapse{padding-top:var(--lt-space-8);border-top:var(--lt-border-width) solid var(--lt-color-border);margin-bottom:0}
#cxds-panel.lt-ui .cxds-license-state.is-warning{color:var(--lt-color-warning)}
#cxds-panel.lt-ui .drip-credit-help{margin:var(--lt-space-12) 0 0;font-size:var(--lt-font-body);line-height:var(--lt-line-body);color:var(--lt-color-text-secondary)}
#cxds-panel.lt-ui .drip-recharge{margin-top:var(--lt-space-4)}
#cxds-panel.lt-ui .drip-recharge-content{padding-top:var(--lt-space-12)}
#cxds-panel.lt-ui .cxds-field{display:flex;flex-direction:column;gap:var(--lt-space-8);font-size:var(--lt-font-caption)}
#cxds-panel.lt-ui .cxds-license-actions{display:flex;gap:var(--lt-space-8);margin-top:var(--lt-space-12)}
#cxds-panel.lt-ui .lt-record-details{margin-top:var(--lt-space-16);padding-top:var(--lt-space-12);border-top:var(--lt-border-width) solid var(--lt-color-border)}
#cxds-panel.lt-ui .lt-record-summary-copy{display:flex;flex-direction:column;align-items:flex-start;gap:var(--lt-space-4);min-width:0}
#cxds-panel.lt-ui .lt-record-preview{font-size:var(--lt-font-caption);color:var(--lt-color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:240px}
#cxds-panel.lt-ui .cxds-log-head{display:flex;align-items:center;gap:var(--lt-space-4);margin-top:var(--lt-space-8)}
#cxds-panel.lt-ui .cxds-log-head>span{margin-right:auto;color:var(--lt-color-text-muted);font-size:var(--lt-font-caption)}
#cxds-panel.lt-ui .drip-submission,#cxds-panel.lt-ui .drip-log-history{font-size:var(--lt-font-caption);line-height:var(--lt-line-caption);color:var(--lt-color-text-secondary)}
#cxds-panel.lt-ui .drip-submission[data-confirmed="true"]{color:var(--lt-color-success)}
#cxds-panel.lt-ui .drip-timeline{max-height:240px;overflow:auto;font-size:var(--lt-font-caption);line-height:var(--lt-line-caption)}
#cxds-panel.lt-ui .drip-timeline:empty::after{content:attr(data-empty-copy);display:block;padding:var(--lt-space-8);color:var(--lt-color-text-muted)}
#cxds-panel.lt-ui .drip-timeline-entry{position:relative;padding:var(--lt-space-12) 0 var(--lt-space-12) var(--lt-space-16);border-top:var(--lt-border-width) solid var(--lt-color-border)}
#cxds-panel.lt-ui .drip-timeline-heading{display:flex;justify-content:space-between;align-items:start;gap:var(--lt-space-8)}
#cxds-panel.lt-ui .drip-timeline-heading strong{font-weight:var(--lt-weight-medium)}
#cxds-panel.lt-ui .drip-log-state,#cxds-panel.lt-ui .drip-timeline-entry time{font-size:var(--lt-font-caption);color:var(--lt-color-text-muted);white-space:nowrap}
#cxds-panel.lt-ui .drip-timeline-entry p{margin:var(--lt-space-4) 0;color:var(--lt-color-text-secondary);overflow-wrap:anywhere}
#cxds-panel.lt-ui .drip-timeline-node{position:absolute;left:0;top:var(--lt-space-16);width:var(--lt-size-status-dot);height:var(--lt-size-status-dot);background:var(--lt-color-control-border);border-radius:var(--lt-radius-round)}
#cxds-panel.lt-ui [data-state="done"] .drip-timeline-node{background:var(--lt-color-success)}
#cxds-panel.lt-ui [data-state="paused"] .drip-timeline-node{background:var(--lt-color-warning)}
#cxds-panel.lt-ui [data-state="running"] .drip-timeline-node{background:var(--lt-color-brand)}
#cxds-panel.lt-ui .drip-progress-segments{display:flex;gap:var(--lt-space-4);height:var(--lt-space-4);margin:var(--lt-space-12) 0}
#cxds-panel.lt-ui .drip-progress-segments>span{flex:1;background:var(--lt-color-border);border-radius:var(--lt-radius-badge)}
#cxds-panel.lt-ui .drip-progress-segments>span[data-state="done"]{background:var(--lt-color-success)}
#cxds-panel.lt-ui .drip-progress-segments>span[data-state="running"]{background:var(--lt-color-brand)}
#cxds-panel.lt-ui .drip-progress-caption{display:flex;justify-content:space-between;font-size:var(--lt-font-caption);color:var(--lt-color-text-muted)}
#cxds-panel.lt-ui .lt-button[aria-busy="true"]{background:var(--lt-color-secondary);color:var(--lt-color-text-secondary);min-width:var(--lt-size-button);opacity:1}
#cxds-panel.lt-ui:has(.drip-recharge[open]) [data-action="home-entry"]{background:var(--lt-color-panel);color:var(--lt-color-text);border-color:var(--lt-color-border)}
.lt-course-document.lt-ui{margin:0;background:var(--lt-color-page);padding-bottom:var(--lt-space-32);color-scheme:light}
#lt-course-ui.lt-ui{width:min(var(--lt-size-course),calc(100vw - var(--lt-space-16)*2));max-width:var(--lt-size-course);padding:var(--lt-space-20) var(--lt-space-24);margin:var(--lt-space-20) auto;background:var(--lt-color-panel);border:var(--lt-border-width) solid var(--lt-color-border);border-radius:var(--lt-radius-surface);box-shadow:var(--lt-shadow-1);font-family:var(--lt-font-family);color:var(--lt-color-text)}
#lt-course-ui.lt-ui .lt-course-header{gap:var(--lt-space-12);flex-wrap:wrap}
#lt-course-ui.lt-ui .lt-course-header>div:first-child{font-size:var(--lt-font-section);font-weight:var(--lt-weight-semibold)}
#lt-course-ui.lt-ui .lt-course-header>div:first-child span{font-size:var(--lt-font-caption);font-weight:var(--lt-weight-normal);color:var(--lt-color-text-muted)}
#lt-course-ui.lt-ui #courseProgressSource{color:var(--lt-color-text-secondary);font-size:var(--lt-font-caption)}
#lt-course-ui.lt-ui #courseProgressSource>span{background:var(--lt-color-success);border-radius:var(--lt-radius-round)}
#lt-course-ui.lt-ui #onlineNum{font-size:var(--lt-font-caption);color:var(--lt-color-text-muted)}
#lt-course-ui.lt-ui .custom-card{background:transparent!important;color:var(--lt-color-text)!important;border:0!important;border-radius:0!important;box-shadow:none!important;border-bottom:var(--lt-border-width) solid var(--lt-color-border)!important;margin-bottom:var(--lt-space-8)!important;overflow:visible}
#lt-course-ui.lt-ui .custom-card-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--lt-space-8);background:transparent;border:0;padding:var(--lt-space-12) 0;color:var(--lt-color-text);font-size:var(--lt-font-title);font-weight:var(--lt-weight-semibold)}
#lt-course-ui.lt-ui .custom-card-header>span:last-child{font-size:var(--lt-font-caption);color:var(--lt-color-text-muted);font-weight:var(--lt-weight-normal)}
#lt-course-ui.lt-ui .custom-card-body{padding:var(--lt-space-12) 0}
#lt-course-ui.lt-ui .custom-card-header>span:first-child>span{display:none!important}
#lt-course-ui.lt-ui #courseOverviewCard{background:var(--lt-color-secondary)!important;border-radius:var(--lt-radius-control)!important;border:0!important}
#lt-course-ui.lt-ui .lt-course-overview-body{padding:var(--lt-space-16)!important}
#lt-course-ui.lt-ui .lt-course-overview-body>div:last-child{border:0;padding-top:0!important;font-size:var(--lt-font-caption)}
#lt-course-ui.lt-ui .lt-course-estimate .lt-button{min-width:0;min-height:0;padding:var(--lt-space-2) var(--lt-space-4);font-size:var(--lt-font-caption);color:var(--lt-color-text-muted)}
#lt-course-ui.lt-ui #courseOverviewCard span,#lt-course-ui.lt-ui #courseOverviewCard b,#lt-course-ui.lt-ui #courseOverviewCard details{color:var(--lt-color-text-secondary)!important;font-family:var(--lt-font-family)!important}
#lt-course-ui.lt-ui #overviewPercent{font-weight:var(--lt-weight-semibold);font-variant-numeric:tabular-nums;color:var(--lt-color-text)!important}
#lt-course-ui.lt-ui #overviewProgressFill{background:var(--lt-color-brand)!important;transition:width var(--lt-duration-state) var(--lt-ease-standard)!important}
#lt-course-ui.lt-ui .lt-course-progress-track{background:var(--lt-color-border)!important;border:0!important;height:var(--lt-space-4)!important;padding:0!important;border-radius:var(--lt-radius-round);overflow:hidden}
#lt-course-ui.lt-ui #overviewProgressFill{border-radius:var(--lt-radius-round)}
#lt-course-ui.lt-ui .lt-course-control-row{gap:var(--lt-space-12)!important;align-items:center!important}
#lt-course-ui.lt-ui .lt-course-speed{display:flex!important;align-items:center;flex-wrap:wrap;gap:var(--lt-space-8)!important}
#lt-course-ui.lt-ui .lt-course-speed>span{order:1;font-size:var(--lt-font-caption);color:var(--lt-color-text-secondary)}
#lt-course-ui.lt-ui .lt-course-speed .lt-segmented{order:2;width:var(--lt-size-course-segments);margin:0!important}
#lt-course-ui.lt-ui .lt-course-custom-speed{order:3;display:flex;gap:var(--lt-space-8);align-items:center}
#lt-course-ui.lt-ui .lt-course-custom-label{font-size:var(--lt-font-caption);color:var(--lt-color-text-muted);margin-left:var(--lt-space-4)}
#lt-course-ui.lt-ui .speed-pill{border:0;background:transparent;color:var(--lt-color-text-secondary);height:32px;min-width:0;border-radius:var(--lt-radius-selection);padding:var(--lt-space-4) var(--lt-space-8);font-size:var(--lt-font-body)}
#lt-course-ui.lt-ui .speed-pill.active{background:transparent;border:0;color:var(--lt-color-text);font-weight:var(--lt-weight-semibold)}
#lt-course-ui.lt-ui .speed-pill:not(.active):hover{background:var(--lt-color-hover)}
#lt-course-ui.lt-ui .speed-pill:active{background:var(--lt-color-pressed)}
#lt-course-ui.lt-ui .speed-input{width:var(--lt-size-course-custom-input);height:var(--lt-size-button);border:var(--lt-border-width) solid var(--lt-color-border);border-radius:var(--lt-radius-control);background:var(--lt-color-panel);color:var(--lt-color-text);font-size:var(--lt-font-body);font-variant-numeric:tabular-nums}
#lt-course-ui.lt-ui .speed-input{text-align:center;padding:var(--lt-space-4) var(--lt-space-8)}
#lt-course-ui.lt-ui .speed-input:focus-visible{outline:var(--lt-focus-width) solid var(--lt-color-brand);outline-offset:var(--lt-focus-offset)}
#lt-course-ui.lt-ui .lt-course-guard{width:var(--lt-size-course-guard);margin:0}
#lt-course-ui.lt-ui #backGround{background:transparent!important;border:0!important;color:var(--lt-color-text)!important;padding:0!important;font-weight:var(--lt-weight-normal);justify-content:space-between;box-shadow:none!important;width:100%;height:var(--lt-size-launcher);border-radius:var(--lt-radius-control)}
#lt-course-ui.lt-ui #backGround:not(:disabled):hover{background:var(--lt-color-hover)!important}
#lt-course-ui.lt-ui #backGround:not(:disabled):active{background:var(--lt-color-pressed)!important}
#lt-course-ui.lt-ui #backGround .pulse-dot{display:none}
#lt-course-ui.lt-ui #backGround small{display:none}
#lt-course-ui.lt-ui .lt-course-records>summary{display:flex;align-items:center;justify-content:space-between;min-height:var(--lt-size-touch);list-style:none;cursor:pointer}
#lt-course-ui.lt-ui .lt-course-records>summary::-webkit-details-marker{display:none}
#lt-course-ui.lt-ui .lt-course-log-card div{background:transparent!important;box-shadow:none!important;border-color:var(--lt-color-border)!important}
#lt-course-ui.lt-ui #log{color:var(--lt-color-text-secondary)!important;line-height:var(--lt-line-caption)!important;font-size:var(--lt-font-caption)!important;font-family:var(--lt-font-mono)!important}
#lt-course-ui.lt-ui #log span{color:var(--lt-color-text-secondary)!important}
#lt-course-ui.lt-ui #log span[style*="red"]{color:var(--lt-color-error)!important}
#lt-course-ui.lt-ui #log span[style*="green"]{color:var(--lt-color-success)!important}
#lt-course-ui.lt-ui #log span[style*="orange"]{color:var(--lt-color-warning)!important}
#lt-course-ui.lt-ui #log span a{color:var(--lt-color-brand)!important}
#lt-course-ui.lt-ui #clearLogBtn{font-family:var(--lt-font-family)!important;color:var(--lt-color-text-secondary)!important}
#lt-course-ui.lt-ui #joblist:not(:has(*))::after{content:'\u672C\u8282\u6682\u65E0\u53EF\u663E\u793A\u4EFB\u52A1';color:var(--lt-color-text-muted);font-size:var(--lt-font-caption)}
#lt-course-ui.lt-ui .lt-course-log-card{margin:0!important;border-bottom:0!important}
#lt-course-ui.lt-ui .lt-course-records>summary{padding-inline:0}
#lt-course-ui.lt-ui #joblist>div{border:0!important;box-shadow:none!important;background:transparent!important;border-bottom:var(--lt-border-width) solid var(--lt-color-border)!important}
@media(max-width:540px){#lt-course-ui.lt-ui{padding:var(--lt-space-16);margin-block:var(--lt-space-12)}#lt-course-ui.lt-ui .lt-course-control-row{display:flex;flex-direction:column;align-items:stretch!important}#lt-course-ui.lt-ui .lt-course-speed{display:grid!important;grid-template-columns:1fr;width:100%}#lt-course-ui.lt-ui .lt-course-speed .lt-segmented{width:100%}#lt-course-ui.lt-ui .lt-course-custom-label{margin:0}#lt-course-ui.lt-ui .lt-course-guard{width:100%}}
@media(prefers-reduced-motion:reduce){#lt-course-ui.lt-ui #overviewProgressFill,#cxds-panel.lt-ui{transition:none!important}}
`;
var golden_wing_default = `/* Approved Golden Wing Light. Shared by the owned course iframe and panel.
Opt-in selectors never theme the LearningTong host page. */
.lt-ui[data-theme="golden-wing"] {
--lt-color-page:#f5f2eb; --lt-color-panel:#fffdf7; --lt-color-secondary:#f0ece2;
--lt-color-hover:#eae4d6; --lt-color-pressed:#e0d8c6; --lt-color-selected:#f8f0d5;
--lt-color-border:#ddd8ca; --lt-color-control-border:#9a937f;
--lt-color-text:#24231f; --lt-color-text-secondary:#5e5a4f; --lt-color-text-muted:#7a745f;
--lt-color-brand:#8b6615; --lt-color-brand-hover:#755311; --lt-color-brand-pressed:#61440d;
--lt-color-brand-bright:#e8c23a; --lt-color-on-brand:#fffdf7;
--lt-color-success:#1b7a4c; --lt-color-success-bg:#ecf6ef;
--lt-color-warning:#96520f; --lt-color-warning-bg:#fff3e5;
--lt-color-error:#b5331e; --lt-color-error-bg:#fff0ed;
--lt-color-disabled-bg:#eceae3; --lt-color-disabled-text:#928d7e;
--lt-color-launcher:#fffdf7;
--lt-shadow-1:0 1px 2px rgb(36 35 31 / 5%);
--lt-shadow-2:0 4px 12px rgb(36 35 31 / 9%);
--lt-shadow-3:0 12px 32px rgb(36 35 31 / 12%);
--lt-size-panel:340px; --lt-size-panel-min:280px; --lt-size-panel-max-height:760px;
color-scheme:light;
}
.lt-ui[data-theme="golden-wing"] .lt-button--primary:not(:disabled) {color:var(--lt-color-on-brand)}
.lt-ui[data-theme="golden-wing"] .lt-button--secondary {border-color:var(--lt-color-control-border)}
.lt-ui[data-theme="golden-wing"] .lt-segment-indicator {background:var(--lt-color-selected);box-shadow:none}
.lt-ui[data-theme="golden-wing"] .lt-segment[aria-checked="true"] {color:var(--lt-color-brand)}
#cxds-logo.lt-ui[data-theme="golden-wing"] {top:auto;bottom:var(--lt-space-24);border-color:var(--lt-color-brand)}
#cxds-panel.lt-ui[data-theme="golden-wing"] {color:var(--lt-color-text);max-height:min(760px,calc(100dvh - 104px))}
#cxds-panel.lt-ui[data-theme="golden-wing"] .cxds-header {min-height:52px;padding:6px 6px 6px 14px;border-bottom:1px solid var(--lt-color-border)}
#cxds-panel.lt-ui .lt-brand-lockup {display:flex;align-items:center;gap:7px}
#cxds-panel.lt-ui .lt-brand-lockup img {width:24px;height:24px;object-fit:contain}
#cxds-panel.lt-ui .cxds-body {padding:14px 16px 16px}
#cxds-panel.lt-ui .lt-ux-headline {display:flex;align-items:center;gap:7px;font-size:var(--lt-font-title);font-weight:var(--lt-weight-semibold);margin:0 0 6px;line-height:var(--lt-line-body)}
#cxds-panel.lt-ui .lt-ux-headline::before {content:'';width:6px;height:6px;border-radius:50%;background:var(--lt-color-text-muted);flex-shrink:0}
#cxds-panel.lt-ui .lt-ux-headline[data-state="running"]::before {background:var(--lt-color-brand-bright)}
#cxds-panel.lt-ui .lt-ux-headline[data-state="done"]::before {background:var(--lt-color-success)}
#cxds-panel.lt-ui .lt-ux-headline[data-state="error"] {color:var(--lt-color-error)}
#cxds-panel.lt-ui .lt-ux-headline[data-state="warning"] {color:var(--lt-color-warning)}
#cxds-panel.lt-ui .lt-ux-headline:is([data-state="error"],[data-state="warning"])::before {background:currentColor}
#cxds-panel.lt-ui .lt-ux-next {font-size:var(--lt-font-caption);font-weight:var(--lt-weight-normal);color:var(--lt-color-text-secondary);margin:6px 0 12px;padding-left:13px}
#cxds-panel.lt-ui .lt-ux-course {display:none}
#cxds-panel.lt-ui .lt-runtime-ai-row {display:flex;align-items:center;gap:10px;padding:8px 0}
#cxds-panel.lt-ui .lt-runtime-ai-row .drip-ai-toggle {width:auto;min-width:0;min-height:36px;flex:1;gap:10px}
#cxds-panel.lt-ui .drip-ai-toggle[aria-checked="true"] .drip-ai-copy small {color:var(--lt-color-brand);background:var(--lt-color-selected)}
#cxds-panel.lt-ui .lt-runtime-ai-row .drip-current {margin:0;padding:0;background:transparent;font-size:var(--lt-font-caption);flex-shrink:0}
#cxds-panel.lt-ui .lt-runtime-ai-row .drip-current-head>span:first-child,
#cxds-panel.lt-ui .lt-runtime-ai-row [data-current-title],
#cxds-panel.lt-ui .lt-runtime-ai-row [data-current-description],
#cxds-panel.lt-ui .lt-runtime-ai-row [data-action="show-recharge"] {display:none}
#cxds-panel.lt-ui .drip-current[data-state="running"] [data-current-state] {color:var(--lt-color-brand)}
#cxds-panel.lt-ui .drip-current[data-state="paused"] [data-current-state] {color:var(--lt-color-warning)}
#cxds-panel.lt-ui .drip-current [data-current-state] {color:var(--lt-color-text-secondary)}
#cxds-panel.lt-ui .drip-current[data-confirmed="true"] [data-current-state] {color:var(--lt-color-success)}
#cxds-panel.lt-ui #drip-ai-help,#cxds-panel.lt-ui .lt-ux-ai-switch-note {font-size:var(--lt-font-caption);line-height:var(--lt-line-caption);color:var(--lt-color-text-secondary);margin:0 0 6px}
#cxds-panel.lt-ui #drip-ai-help strong {font-weight:var(--lt-weight-medium);color:var(--lt-color-text)}
#cxds-panel.lt-ui .lt-runtime-account-row {justify-content:space-between}
#cxds-panel.lt-ui .cxds-license-top {flex-direction:column;align-items:flex-start;gap:4px}
#cxds-panel.lt-ui .lt-runtime-balance-row {display:flex;align-items:baseline;gap:6px}
#cxds-panel.lt-ui .drip-balance-line {flex-direction:column;align-items:flex-start;gap:4px}
#cxds-panel.lt-ui .cxds-license-top>span {display:none}
#cxds-panel.lt-ui .lt-runtime-credit-label {color:var(--lt-color-text-secondary);font-size:var(--lt-font-caption)}
#cxds-panel.lt-ui [data-balance] {font-size:22px;line-height:26px}
#cxds-panel.lt-ui .lt-ux-receipt {background:var(--lt-color-secondary);color:var(--lt-color-text-secondary);padding:8px 10px;border-radius:var(--lt-radius-selection);margin:8px 0}
#cxds-panel.lt-ui .lt-billing-details>summary,#cxds-panel.lt-ui .drip-recharge>summary {min-height:28px;padding:0;justify-content:flex-start;font-size:var(--lt-font-caption);gap:4px}
#cxds-panel.lt-ui .lt-billing-details .lt-icon,#cxds-panel.lt-ui .drip-recharge>summary .lt-icon {width:12px;height:12px}
#cxds-panel.lt-ui .lt-billing-content,#cxds-panel.lt-ui .drip-recharge-content {padding-top:8px}
#cxds-panel.lt-ui .lt-billing-content .lt-help-copy {font-size:var(--lt-font-caption);line-height:var(--lt-line-caption);margin:0 0 6px}
#cxds-panel.lt-ui .lt-billing-content .lt-help-lead {color:var(--lt-color-text);font-weight:var(--lt-weight-medium)}
#cxds-panel.lt-ui .lt-payment-essential {font-size:var(--lt-font-caption);line-height:var(--lt-line-caption);color:var(--lt-color-text-secondary);margin:4px 0 0}
#cxds-panel.lt-ui .lt-ux-collapse {margin:0;padding:8px 14px;border-top:1px solid var(--lt-color-border);font-size:var(--lt-font-caption);line-height:var(--lt-line-caption);flex-shrink:0}
#cxds-panel.lt-ui .lt-record-details {margin-top:10px;padding-top:10px}
#cxds-panel.lt-ui .lt-record-details>summary {min-height:28px;padding:0;font-size:var(--lt-font-caption);justify-content:flex-start;gap:4px}
#lt-course-ui.lt-ui {padding:0;overflow:hidden;width:min(820px,calc(100vw - 24px));max-width:820px;margin:20px auto}
#lt-course-ui.lt-ui .lt-course-header {padding:12px 16px;border-bottom:1px solid var(--lt-color-border);margin-bottom:0!important}
#lt-course-ui.lt-ui .lt-course-brand {display:flex;align-items:center;gap:8px;font-size:14px}
#lt-course-ui.lt-ui .lt-course-brand img {width:28px;height:28px;object-fit:contain}
#lt-course-ui.lt-ui .lt-course-brand small {font-size:var(--lt-font-caption);font-weight:var(--lt-weight-normal);border-left:1px solid var(--lt-color-border);padding-left:8px;color:var(--lt-color-text-secondary)}
#lt-course-ui.lt-ui #courseProgressSource {border:0;background:transparent;padding:0;color:var(--lt-color-text-muted)}
#lt-course-ui.lt-ui #lt-course-ux {margin:0;border:0;border-radius:0;padding:16px;background:transparent}
#lt-course-ui.lt-ui #lt-course-ux strong {font-size:15px;line-height:24px}
#lt-course-ui.lt-ui #lt-course-ux p {font-size:var(--lt-font-caption);margin-top:8px;padding-left:10px;border-left:2px solid var(--lt-color-brand-bright)}
#lt-course-ui.lt-ui .custom-card {margin:0!important;border-bottom:1px solid var(--lt-color-border)!important;padding:0 16px}
#lt-course-ui.lt-ui .custom-card:last-child {border-bottom:0!important}
#lt-course-ui.lt-ui .custom-card-header {padding:14px 0 8px}
#lt-course-ui.lt-ui .custom-card-body {padding:8px 0 14px}
#lt-course-ui.lt-ui #courseOverviewCard {background:transparent!important;border-radius:0!important}
#lt-course-ui.lt-ui .lt-course-overview-body {padding:0 0 12px!important}
#lt-course-ui.lt-ui #overviewScope {font-size:var(--lt-font-caption)}
#lt-course-ui.lt-ui .lt-course-overview-body>div:last-child {margin-top:8px!important}
#lt-course-ui.lt-ui .lt-course-progress-track {background:var(--lt-color-secondary)!important}
#lt-course-ui.lt-ui .lt-course-progress-lane {position:relative;--lt-course-progress:0%}
#lt-course-ui.lt-ui .lt-course-progress-lane.has-progress {padding-top:30px}
#lt-course-ui.lt-ui .lt-course-progress-bird {position:absolute;z-index:1;top:0;left:clamp(19px,var(--lt-course-progress),calc(100% - 19px));display:block;width:38px;height:27px;overflow:hidden;pointer-events:none;transform:translateX(-50%);transition:left var(--lt-duration-state) var(--lt-ease-standard)}
#lt-course-ui.lt-ui .lt-course-progress-bird[hidden] {display:none}
#lt-course-ui.lt-ui .lt-course-progress-bird img {display:block;width:38px;height:38px;max-width:none;filter:drop-shadow(0 1px 1px rgb(36 35 31 / 18%))}
#lt-course-ui.lt-ui #overviewProgressFill {background:var(--lt-color-brand-bright)!important}
#lt-course-ui.lt-ui[data-course-state="done"] #overviewProgressFill {background:var(--lt-color-success)!important}
@media(prefers-reduced-motion:reduce){#lt-course-ui.lt-ui .lt-course-progress-bird{transition:none!important}}
#lt-course-ui.lt-ui .speed-pill.active {color:var(--lt-color-brand)}
#lt-course-ui.lt-ui .speed-input {border-color:var(--lt-color-control-border)}
#lt-course-ui.lt-ui .lt-speed-legacy[hidden] {display:none!important}
#lt-course-ui.lt-ui .lt-course-speed {flex:1;min-width:0;width:auto}
#lt-course-ui.lt-ui .lt-speed-control {width:100%;max-width:340px;min-width:180px}
#lt-course-ui.lt-ui .lt-speed-heading {display:flex;align-items:center;justify-content:space-between;margin-bottom:7px;font-size:var(--lt-font-body)}
#lt-course-ui.lt-ui .lt-speed-value {font-size:16px;font-weight:var(--lt-weight-semibold);font-variant-numeric:tabular-nums;color:var(--lt-color-text)}
#lt-course-ui.lt-ui .lt-speed-track {position:relative;height:36px;border-radius:var(--lt-radius-round);background:var(--lt-color-secondary);border:1px solid var(--lt-color-border);overflow:visible;--lt-speed-fill:0%;--lt-speed-offset:13px;transition:border-color 180ms ease,box-shadow 180ms ease}
#lt-course-ui.lt-ui .lt-speed-progress {position:absolute;z-index:0;inset:0 auto 0 0;width:calc(var(--lt-speed-fill) + var(--lt-speed-offset));max-width:100%;border-radius:var(--lt-radius-round);background:var(--lt-color-brand);overflow:hidden;pointer-events:none;transition:width 110ms cubic-bezier(.2,.8,.2,1)}
#lt-course-ui.lt-ui .lt-speed-ticks {position:absolute;z-index:1;inset:0 14px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}
#lt-course-ui.lt-ui .lt-speed-ticks i {width:4px;height:4px;background:var(--lt-color-control-border);border-radius:50%}
#lt-course-ui.lt-ui .lt-speed-ticks i.is-filled {background:var(--lt-color-on-brand);opacity:.55}
#lt-course-ui.lt-ui .lt-speed-knob {position:absolute;z-index:2;left:calc(var(--lt-speed-fill) + var(--lt-speed-offset));top:50%;width:26px;height:26px;background:var(--lt-color-panel);border:1px solid var(--lt-color-border);border-radius:50%;box-shadow:var(--lt-shadow-2);transform:translate(-50%,-50%) scale(1);pointer-events:none;transition:left 110ms cubic-bezier(.2,.8,.2,1),transform 160ms cubic-bezier(.2,.8,.2,1),box-shadow 160ms ease}
#lt-course-ui.lt-ui .lt-speed-track.is-dragging .lt-speed-knob {transform:translate(-50%,-50%) scale(1.17);box-shadow:var(--lt-shadow-3)}
#lt-course-ui.lt-ui .lt-speed-track.is-settling .lt-speed-knob {animation:lt-speed-settle 280ms cubic-bezier(.2,.8,.2,1)}
@keyframes lt-speed-settle {0%{transform:translate(-50%,-50%) scale(1.13)}45%{transform:translate(-50%,-50%) scale(.94)}100%{transform:translate(-50%,-50%) scale(1)}}
#lt-course-ui.lt-ui .lt-speed-control.is-max .lt-speed-value {color:var(--lt-color-brand)}
#lt-course-ui.lt-ui .lt-speed-control.is-max .lt-speed-track {border-color:var(--lt-color-brand);box-shadow:0 0 0 2px var(--lt-color-selected)}
#lt-course-ui.lt-ui .lt-speed-control.is-max .lt-speed-progress {background:linear-gradient(105deg,var(--lt-color-brand-pressed),var(--lt-color-brand) 42%,var(--lt-color-brand-bright) 78%,var(--lt-color-brand))}
#lt-course-ui.lt-ui .lt-speed-control.is-max .lt-speed-progress::before {content:'';position:absolute;inset:0;background:radial-gradient(circle at 12% 68%,var(--lt-color-on-brand) 0 1px,transparent 1.8px),radial-gradient(circle at 29% 30%,var(--lt-color-on-brand) 0 1.5px,transparent 2.2px),radial-gradient(circle at 48% 73%,var(--lt-color-on-brand) 0 1px,transparent 1.8px),radial-gradient(circle at 69% 35%,var(--lt-color-on-brand) 0 1px,transparent 1.8px),radial-gradient(circle at 86% 66%,var(--lt-color-on-brand) 0 1.5px,transparent 2.2px);opacity:.75;pointer-events:none}
#lt-course-ui.lt-ui .lt-speed-control.is-max .lt-speed-knob {border-color:var(--lt-color-brand);box-shadow:var(--lt-shadow-2),0 0 0 3px var(--lt-color-selected)}
#lt-course-ui.lt-ui .lt-speed-control.is-max .lt-speed-track.is-settling .lt-speed-progress::after {content:'';position:absolute;inset:0 auto 0 -28%;width:28%;background:linear-gradient(90deg,transparent,rgb(255 253 247 / 70%),transparent);animation:lt-speed-max-sheen 420ms ease-out both;pointer-events:none}
@keyframes lt-speed-max-sheen {0%{transform:translateX(0);opacity:0}20%{opacity:.7}80%{opacity:.7}100%{transform:translateX(500%);opacity:0}}
#lt-course-ui.lt-ui .lt-speed-track input {appearance:none;-webkit-appearance:none;position:relative;z-index:3;display:block;margin:0;width:100%;height:36px;background:transparent;border:0;cursor:pointer;touch-action:pan-y;border-radius:var(--lt-radius-round);padding:0}
#lt-course-ui.lt-ui .lt-speed-track input::-webkit-slider-runnable-track {height:36px;background:transparent;border:0;border-radius:var(--lt-radius-round)}
#lt-course-ui.lt-ui .lt-speed-track input::-webkit-slider-thumb {appearance:none;-webkit-appearance:none;width:26px;height:26px;margin-top:5px;background:transparent;border:0;border-radius:50%}
#lt-course-ui.lt-ui .lt-speed-track input::-moz-range-track {height:36px;background:transparent;border:0}
#lt-course-ui.lt-ui .lt-speed-track input::-moz-range-thumb {width:24px;height:24px;background:transparent;border:0;border-radius:50%}
#lt-course-ui.lt-ui .lt-speed-track input:focus-visible {outline:2px solid var(--lt-color-brand);outline-offset:3px}
#lt-course-ui.lt-ui .lt-speed-footer {display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:5px;font-size:var(--lt-font-caption);color:var(--lt-color-text-secondary)}
#lt-course-ui.lt-ui #lt-speed-hint {text-align:center;font-size:11px}
#lt-course-ui.lt-ui .lt-speed-warn {margin:8px 0 0;padding:6px 10px;border:1px solid var(--lt-color-warning);border-radius:var(--lt-radius-control);background:var(--lt-color-warning-bg);color:var(--lt-color-warning);font-size:var(--lt-font-caption);line-height:1.5;animation:lt-speed-warn-in 180ms ease-out}
#lt-course-ui.lt-ui .lt-speed-warn[hidden] {display:none}
@keyframes lt-speed-warn-in {from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){#lt-course-ui.lt-ui .lt-speed-track,#lt-course-ui.lt-ui .lt-speed-progress,#lt-course-ui.lt-ui .lt-speed-knob,#lt-course-ui.lt-ui .lt-speed-progress::after{transition:none!important;animation:none!important}}
#lt-course-ui.lt-ui #updateRateButton {color:var(--lt-color-text)!important;background:var(--lt-color-panel)!important}
#lt-course-ui.lt-ui .lt-course-guard {width:auto;min-width:172px}
#lt-course-ui.lt-ui #backGround {gap:12px;min-height:36px;height:auto;font-size:var(--lt-font-body)}
#lt-course-ui.lt-ui .lt-course-records>summary {min-height:36px;font-size:var(--lt-font-title);font-weight:var(--lt-weight-semibold)}
#lt-course-ui.lt-ui .lt-course-records[open]>summary {background:transparent}
#lt-course-ui.lt-ui #joblist:not(:has(*))::after {content:none}
#lt-course-ui.lt-ui .lt-course-log-card {padding-top:4px}
#lt-course-ui.lt-ui .lt-course-log-card #result {max-height:160px!important}
#lt-course-ui.lt-ui .lt-course-log-card [data-log-header] {padding:0!important;border:0!important}
#lt-course-ui.lt-ui .lt-course-log-card [data-log-body] {padding:4px 0 12px!important}
#lt-course-ui.lt-ui #clearLogBtn {font:inherit;color:var(--lt-color-text-secondary)!important;padding:4px 8px!important}
@media(max-width:480px){
#cxds-panel.lt-ui[data-theme="golden-wing"]{width:min(340px,calc(100vw - 48px));min-width:0}
#cxds-panel.lt-ui .cxds-body{padding-inline:12px}
#cxds-panel.lt-ui .lt-runtime-ai-row{gap:6px}
#cxds-panel.lt-ui .drip-ai-copy{gap:4px}
#lt-course-ui.lt-ui{width:calc(100vw - 16px);margin:8px auto}
#lt-course-ui.lt-ui .lt-course-header{padding-inline:12px}
#lt-course-ui.lt-ui .custom-card{padding-inline:12px}
}
`;
var golden_wing_v3_default = '/* Production Golden Wing v3: scoped to owned UI, retaining all original hooks. */\n#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"] {border-radius:14px}\n#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"] .cxds-body {display:flex;flex-direction:column;gap:12px;padding:12px 14px}\n#cxds-panel.lt-ui .lt-v3-ai-card,#cxds-panel.lt-ui .cxds-license-box {\n padding:10px 12px;background:#fbf9f3;border:1px solid #e6dfce;border-radius:10px;margin:0;\n}\n#cxds-panel.lt-ui .lt-runtime-ai-row {padding:0;gap:6px}\n#cxds-panel.lt-ui .drip-ai-copy {flex-wrap:wrap;gap:4px}\n#cxds-panel.lt-ui .drip-ai-copy small {font-size:10px}\n#cxds-panel.lt-ui #drip-ai-help {font-size:11px;line-height:1.6;margin:4px 0 8px}\n#cxds-panel.lt-ui .lt-ux-headline {font-size:12px;line-height:1.6;margin:8px 0 0}\n#cxds-panel.lt-ui .lt-ux-next {font-size:12px;line-height:1.65;margin:6px 0 0;padding:8px 10px;border:1px solid #e2dbca;background:#fffdf7;border-radius:6px;overflow-wrap:anywhere}\n#cxds-panel.lt-ui .lt-runtime-ai-row .drip-current [data-current-state] {font-size:11px;padding:2px 6px;border-radius:999px;background:#ede8dc;max-width:100%}\n#cxds-panel.lt-ui .lt-runtime-ai-row .drip-current[data-state="running"] [data-current-state] {background:#fff4d4;color:#8b6615}\n#cxds-panel.lt-ui .lt-runtime-ai-row .drip-current[data-state="paused"] [data-current-state] {background:#fff0ed;color:#b5331e}\n#cxds-panel.lt-ui .lt-runtime-ai-row .drip-current[data-confirmed="true"] [data-current-state] {background:#ecf6ef;color:#1b7a4c}\n#cxds-panel.lt-ui .lt-runtime-account-row {gap:6px;flex-wrap:wrap}\n#cxds-panel.lt-ui .lt-runtime-credit-label {font-size:11px}\n#cxds-panel.lt-ui [data-balance] {font-size:24px;color:#8b6615}\n#cxds-panel.lt-ui .lt-runtime-balance-row {gap:4px;flex-wrap:wrap}\n#cxds-panel.lt-ui .drip-license-status {font-size:11px}\n#cxds-panel.lt-ui [data-license-state][data-ux-state="ready"] {display:none}\n#cxds-panel.lt-ui .lt-v3-recharge {font-size:11px;min-height:32px;padding:4px 8px;white-space:nowrap}\n#cxds-panel.lt-ui [data-action="show-recharge"] {display:none}\n#cxds-panel.lt-ui .drip-recharge {border:0;margin-top:8px}\n#cxds-panel.lt-ui .drip-recharge:not([open]) {display:none}\n#cxds-panel.lt-ui .drip-recharge>summary {display:none}\n#cxds-panel.lt-ui .drip-recharge[open] .drip-recharge-content {padding-top:8px;border-top:1px dashed #ded7c6}\n#cxds-panel.lt-ui .lt-payment-essential {font-size:11px;margin-top:8px}\n#cxds-panel.lt-ui .lt-ux-receipt {display:flex;align-items:center;flex-wrap:wrap;gap:6px;justify-content:space-between;background:#fff5e8;border:1px solid #e8c23a;color:#8b6615;padding:8px;margin:10px 0 0}\n#cxds-panel.lt-ui .lt-ux-receipt strong {font-size:11px;font-weight:600}\n#cxds-panel.lt-ui .lt-v3-receipt-balance {background:#8b6615;color:#fffdf7;border-radius:4px;padding:1px 6px;font-size:10px;white-space:nowrap}\n#cxds-panel.lt-ui .lt-ux-receipt small {font-size:10px;line-height:1.5;width:100%;color:#7a745f}\n#cxds-panel.lt-ui .lt-billing-details {padding:8px 10px;background:#f7f4ec;border:1px solid #ded7c6;border-radius:8px}\n#cxds-panel.lt-ui .lt-record-details {padding-top:10px;margin-top:0;border-top:1px solid #e6dfce}\n#cxds-panel.lt-ui .lt-record-preview {font-size:11px;overflow-wrap:anywhere}\n#cxds-panel.lt-ui .lt-v3-footer {display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;background:#f5f0e3;font-size:11px}\n#cxds-panel.lt-ui .lt-v3-footer [data-action="courses"] {margin:0;width:auto;min-height:28px;flex-shrink:0;padding:3px 6px;font-size:11px;border:1px solid #d4ccb8;border-radius:6px}\n#cxds-panel.lt-ui .lt-v3-guide {padding:10px 12px;background:#fff8e8;border:1px solid #dcc88f;border-radius:10px;font-size:12px}\n#cxds-panel.lt-ui .lt-v3-guide strong {font-size:12px;color:#8b6615}\n#cxds-panel.lt-ui .lt-v3-guide ul {padding-left:16px;margin:6px 0 8px;font-size:11px;line-height:1.6}\n#cxds-panel.lt-ui .lt-v3-guide button {width:100%;min-height:30px;font-size:11px}\n#cxds-panel.lt-ui .lt-v3-clear-confirm {padding:8px;border:1px solid #dcc88f;border-radius:6px;background:#fff8e8;font-size:12px;display:flex;gap:6px;flex-wrap:wrap}\n#cxds-panel.lt-ui .lt-v3-clear-confirm span {width:100%}\n.lt-ui.lt-v3-launcher-hud {position:fixed;z-index:2147483647;box-sizing:border-box;margin:0;padding:10px 12px;border-radius:8px;background:#24231f;color:#fffdf7;box-shadow:0 6px 20px #0003;font:12px/1.6 var(--lt-font-family);pointer-events:none;overflow-wrap:anywhere}\n.lt-ui.lt-v3-launcher-hud strong {color:#e8c23a}\n.lt-ui.lt-v3-launcher-hud p {margin:4px 0 0}\n.lt-ui.lt-v3-launcher-hud[hidden] {display:none}\n#cxds-logo.lt-ui[data-runtime-state="running"] {border-color:#1b7a4c;box-shadow:0 0 0 4px #1b7a4c22}\n#cxds-logo.lt-ui[data-runtime-state="receipt"] {border-color:#96520f;box-shadow:0 0 0 4px #96520f22}\n#cxds-logo.lt-ui:is([data-runtime-state="warning"],[data-runtime-state="error"]) {border-color:#b5331e;box-shadow:0 0 0 4px #b5331e22}\n#cxds-logo.lt-ui[data-runtime-state="done"] {border-color:#1b7a4c}\n#lt-course-ui.lt-ui .lt-course-header {gap:12px;align-items:center}\n#lt-course-ui.lt-ui #lt-course-ux {width:auto;margin:0;padding:4px 10px;border:1px solid #d4ccb8;border-radius:999px;background:#f3f0e8}\n#lt-course-ui.lt-ui #lt-course-ux strong {font-size:12px;line-height:1.6}\n#lt-course-ui.lt-ui #lt-course-ux p {font-size:12px;margin:6px 0 0;border:0;padding:0}\n#lt-course-ui.lt-ui #lt-course-ux[data-state="running"] {background:#fff8e6;border-color:#dcc88f;color:#8b6615}\n#lt-course-ui.lt-ui #lt-course-ux[data-state="done"] {background:#ecf6ef;border-color:#7ecda6;color:#1b7a4c}\n#lt-course-ui.lt-ui #lt-course-ux[data-state="error"] {background:#fff0ed;border-color:#e4b8ab;border-radius:8px}\n#lt-course-ui.lt-ui .lt-course-progress-lane.has-progress {padding-top:48px;margin-bottom:10px}\n#lt-course-ui.lt-ui .lt-course-progress-bird {width:44px;height:44px;overflow:visible;left:clamp(22px,var(--lt-course-progress),calc(100% - 22px));border:1px solid #8b6615;border-radius:50%;background:#fffdf7;display:flex;align-items:center;justify-content:center;box-sizing:border-box;box-shadow:0 2px 8px #8b661522}\n#lt-course-ui.lt-ui .lt-course-progress-bird img {width:36px;height:36px;object-fit:contain;filter:none}\n#lt-course-ui.lt-ui[data-course-state="done"] .lt-course-progress-bird {border-color:#1b7a4c}\n#lt-course-ui.lt-ui .lt-course-overview-body {margin:14px 0;padding:14px 16px!important;background:#f8f5ed;border:1px solid #e8e2d2;border-radius:10px}\n#lt-course-ui.lt-ui .lt-course-speed {flex:1}\n#lt-course-ui.lt-ui .lt-speed-control {max-width:none}\n#lt-course-ui.lt-ui .lt-course-control-row {padding:12px 14px;border:1px solid #e7e0ce;border-radius:10px;background:#fbf9f2}\n#lt-course-ui.lt-ui .lt-speed-track {height:32px;border:0;background:#e8e2d4}\n#lt-course-ui.lt-ui .lt-speed-progress::after {display:none}\n#lt-course-ui.lt-ui .lt-course-guard {min-width:148px;border-left:1px solid #e2dbca;padding-left:12px}\n#lt-course-ui.lt-ui #backGround {font-size:12px}\n#lt-course-ui.lt-ui .lt-v3-guard-help {font-size:11px;line-height:1.6;color:#7a745f;max-width:220px}\n#lt-course-ui.lt-ui .lt-v3-guard-help summary {cursor:pointer;text-align:right}\n#lt-course-ui.lt-ui #lt-course-guard-help {margin:8px 0 0;font-size:11px}\n#lt-course-ui.lt-ui .lt-v3-task-cards {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:8px 0 12px}\n#lt-course-ui.lt-ui .lt-v3-task-card {padding:8px 10px;border:1px solid #e5ded0;background:#fbf9f2;border-radius:8px;display:flex;flex-direction:column;gap:4px;font-size:12px;overflow-wrap:anywhere}\n#lt-course-ui.lt-ui .lt-v3-task-card span {font-size:11px;color:#7a745f}\n#lt-course-ui.lt-ui .lt-v3-task-card[data-state="running"] {border-color:#e8c23a;background:#fff9ea}\n#lt-course-ui.lt-ui .lt-v3-task-card[data-state="done"] {border-color:#7ecda6;background:#ecf6ef}\n#lt-course-ui.lt-ui .lt-v3-task-card[data-state="error"] {border-color:#e4b8ab;background:#fff0ed}\n@media(max-width:540px){\n #cxds-panel.lt-ui .lt-v3-ai-card,#cxds-panel.lt-ui .cxds-license-box{padding:10px}\n #cxds-panel.lt-ui .lt-runtime-account-row{gap:4px}\n #cxds-panel.lt-ui .lt-runtime-ai-row{flex-wrap:wrap}\n #cxds-panel.lt-ui .lt-v3-footer{flex-wrap:wrap}\n #lt-course-ui.lt-ui .lt-course-guard{width:100%;border-left:0;border-top:1px solid #e2dbca;padding:8px 0 0}\n #lt-course-ui.lt-ui .lt-v3-task-cards{grid-template-columns:1fr}\n #lt-course-ui.lt-ui .lt-v3-task-card{flex-direction:row;justify-content:space-between;gap:8px}\n}\n';
var golden_wing_v31_default = `/* Golden Wing v3.1: layout fixes and motion. Presentation only; every hook stays bound. */
:is(#lt-course-ui,#cxds-panel,#cxds-logo).lt-ui {
--lt-v31-ease-out:cubic-bezier(.16,1,.3,1); --lt-v31-ease-spring:cubic-bezier(.34,1.56,.64,1); --lt-v31-ease-std:cubic-bezier(.2,0,0,1);
--lt-v31-gold:#8b6615; --lt-v31-gold-hi:#e8c23a; --lt-v31-ok:#1b7a4c; --lt-v31-ai:#7a5cc8;
}
/* ---------- course status pill ---------- */
#lt-course-ui.lt-ui #lt-course-ux {display:flex;flex-wrap:wrap;align-items:center;gap:0 6px;overflow:hidden;transition:background-color .4s,border-color .4s,color .4s}
#lt-course-ui.lt-ui #lt-course-ux p {width:100%}
#lt-course-ui.lt-ui .lt-pill-dot {width:7px;height:7px;flex:0 0 7px;border-radius:50%;background:currentColor;opacity:.75}
#lt-course-ui.lt-ui .lt-pill-check {display:none;width:13px;height:13px;flex:0 0 13px}
#lt-course-ui.lt-ui #lt-course-ux[data-state="done"] .lt-pill-dot {display:none}
#lt-course-ui.lt-ui #lt-course-ux[data-state="done"] .lt-pill-check {display:block}
#lt-course-ui.lt-ui #lt-course-ux[data-state="done"] .lt-pill-check path {stroke-dasharray:20;stroke-dashoffset:20;animation:lt-v31-draw .5s .15s var(--lt-v31-ease-out) forwards}
#lt-course-ui.lt-ui #lt-course-ux[data-state="running"] .lt-pill-dot {opacity:1;animation:lt-v31-ping 1.6s var(--lt-v31-ease-out) infinite}
#lt-course-ui.lt-ui #lt-course-ux strong.is-swapping {animation:lt-v31-swap .42s var(--lt-v31-ease-out)}
@keyframes lt-v31-swap {from{transform:translateY(9px);opacity:0;filter:blur(2px)}to{transform:none;opacity:1;filter:none}}
@keyframes lt-v31-ping {0%{box-shadow:0 0 0 0 rgb(232 194 58/65%)}80%,100%{box-shadow:0 0 0 7px rgb(232 194 58/0%)}}
@keyframes lt-v31-draw {to{stroke-dashoffset:0}}
/* ---------- perched progress bird ---------- */
#lt-course-ui.lt-ui .lt-course-progress-lane.has-progress {padding-top:14px;margin-bottom:14px}
#lt-course-ui.lt-ui #overviewProgressFill {transition:width 1.1s var(--lt-v31-ease-out),background .6s!important}
#lt-course-ui.lt-ui .lt-course-progress-bird {top:0;width:32px;height:32px;left:clamp(16px,var(--lt-course-progress),calc(100% - 16px));transform:translateX(-50%);box-shadow:0 2px 6px rgb(36 35 31/18%);transition:left 1.1s var(--lt-v31-ease-out),border-color .5s;overflow:visible}
#lt-course-ui.lt-ui .lt-course-progress-bird .lt-bird-mark {display:block;width:26px;height:26px;overflow:visible;pointer-events:none}
#lt-course-ui.lt-ui .lt-course-progress-bird>img {display:none}
#lt-course-ui.lt-ui .lt-course-progress-bird .lt-bird-wing-flap {transform-box:view-box;transform-origin:60% 53%}
#lt-course-ui.lt-ui .lt-course-progress-lane.is-gliding .lt-bird-wing-flap {animation:lt-v31-flap .52s cubic-bezier(.42,0,.58,1) 2}
@keyframes lt-v31-flap {0%,100%{transform:rotate(0) scaleX(1)}25%{transform:rotate(-20deg) scaleX(1.1)}75%{transform:rotate(14deg) scaleX(.94)}}
#lt-course-ui.lt-ui .lt-course-progress-trail {position:absolute;z-index:0;top:8px;height:16px;width:90px;right:calc(100% - var(--lt-course-progress));background:radial-gradient(60px 8px at 100% 50%,rgb(232 194 58/55%),transparent 70%);opacity:0;pointer-events:none;transition:right 1.1s var(--lt-v31-ease-out),opacity .5s}
#lt-course-ui.lt-ui .lt-course-progress-lane:not(.has-progress) .lt-course-progress-trail {display:none}
#lt-course-ui.lt-ui .lt-course-progress-lane.is-gliding .lt-course-progress-trail {opacity:1;transition:right 1.1s var(--lt-v31-ease-out),opacity .2s}
#lt-course-ui.lt-ui .lt-course-progress-track {position:relative}
#lt-course-ui.lt-ui .lt-course-progress-track::after {content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgb(255 255 255/75%) 50%,transparent 70%);transform:translateX(-100%);pointer-events:none}
#lt-course-ui.lt-ui .lt-course-progress-lane.is-celebrating .lt-course-progress-track::after {animation:lt-v31-sweep 1.1s .35s var(--lt-v31-ease-std)}
#lt-course-ui.lt-ui .lt-course-progress-lane.is-celebrating .lt-course-progress-bird .lt-bird-mark {animation:lt-v31-land .7s var(--lt-v31-ease-spring)}
@keyframes lt-v31-sweep {to{transform:translateX(100%)}}
@keyframes lt-v31-land {0%{transform:translateY(-6px) scale(1.12)}100%{transform:none}}
#lt-course-ui.lt-ui .lt-v31-spark {position:absolute;z-index:3;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#e8c23a;pointer-events:none}
#lt-course-ui.lt-ui .lt-v31-feather {position:absolute;z-index:4;width:14px;height:22px;pointer-events:none}
#lt-course-ui.lt-ui .lt-course-estimate[data-empty="true"] {display:none}
/* ---------- section tasks ---------- */
#lt-course-ui.lt-ui .lt-v3-task-cards[hidden] {display:none}
#lt-course-ui.lt-ui .lt-v3-task-cards.is-entering .lt-v3-task-card {animation:lt-v31-rise .45s var(--lt-v31-ease-out) both}
#lt-course-ui.lt-ui .lt-v3-task-cards.is-entering .lt-v3-task-card:nth-child(2) {animation-delay:.07s}
#lt-course-ui.lt-ui .lt-v3-task-cards.is-entering .lt-v3-task-card:nth-child(3) {animation-delay:.14s}
@keyframes lt-v31-rise {from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
#lt-course-ui.lt-ui .lt-v3-task-card {position:relative;overflow:hidden;transition:background-color .4s,border-color .4s}
#lt-course-ui.lt-ui .lt-v3-task-card[data-state="running"]::before {content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 35%,rgb(232 194 58/18%) 50%,transparent 65%);animation:lt-v31-sheen 2.2s linear infinite;pointer-events:none}
@keyframes lt-v31-sheen {from{transform:translateX(-100%)}to{transform:translateX(100%)}}
#lt-course-ui.lt-ui .lt-v31-task-bar {display:block;height:3px;margin-top:4px;border-radius:3px;background:#ece5d3;overflow:hidden}
#lt-course-ui.lt-ui .lt-v31-task-bar[hidden] {display:none}
#lt-course-ui.lt-ui .lt-v31-task-bar i {display:block;height:100%;width:var(--lt-task-progress,0%);background:#e8c23a;border-radius:3px;transition:width .8s var(--lt-v31-ease-out)}
#lt-course-ui.lt-ui .lt-v3-task-card[data-state="done"] .lt-v31-task-bar i {background:#2e9a62}
#lt-course-ui.lt-ui #lt-course-empty[data-variant="none"] {display:flex;align-items:center;gap:8px;margin:8px 0 12px;padding:8px 12px;border:1px dashed #d9d1bd;border-radius:9px;color:#5c5848;animation:lt-v31-fade .4s var(--lt-v31-ease-out)}
#lt-course-ui.lt-ui #lt-course-empty[data-variant="none"][hidden] {display:none}
#lt-course-ui.lt-ui #lt-course-empty[data-variant="none"]::before {content:"";width:16px;height:16px;flex:0 0 16px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 1.5C4 5 4 10.5 8 14.5C12 10.5 12 5 8 1.5Z' fill='none' stroke='%238b6615' stroke-width='1.3'/%3E%3Cpath d='M8 3.5V14' stroke='%238b6615'/%3E%3C/svg%3E") center/contain no-repeat}
@keyframes lt-v31-fade {from{opacity:0}to{opacity:1}}
/* ---------- course records ---------- */
#lt-course-ui.lt-ui [data-log-header] {display:flex!important;justify-content:flex-end;align-items:center;margin:0 0 4px;padding:0!important;border:0!important;background:none!important}
#lt-course-ui.lt-ui #clearLogBtn {margin-left:auto;font-size:12px!important;min-height:0;min-width:0;padding:2px 12px!important;border:1px solid #d9d1bd!important;border-radius:999px!important;background:#fffdf7;line-height:1.6}
#lt-course-ui.lt-ui #clearLogBtn:hover {border-color:#8b6615!important;color:#8b6615!important}
#lt-course-ui.lt-ui #log>div {border-left:2px solid transparent;padding-left:6px;border-radius:3px;animation:lt-v31-row-in .45s var(--lt-v31-ease-out),lt-v31-row-flash 1.6s var(--lt-v31-ease-std)}
@keyframes lt-v31-row-in {from{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:none}}
@keyframes lt-v31-row-flash {0%{border-left-color:#e8c23a;background:rgb(232 194 58/16%)}100%{border-left-color:transparent;background:transparent}}
/* ---------- speed: drifting gold dust + value pop ---------- */
#lt-course-ui.lt-ui .lt-speed-dust {position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none}
#lt-course-ui.lt-ui .lt-speed-dust i {position:absolute;left:0;width:3px;height:3px;border-radius:50%;background:#fff8d8;opacity:.75;animation:lt-v31-drift var(--lt-speed-drift,2.4s) linear infinite}
@keyframes lt-v31-drift {from{transform:translateX(-12px)}to{transform:translateX(640px)}}
#lt-course-ui.lt-ui .lt-speed-value.is-popping {display:inline-block;animation:lt-v31-pop .35s var(--lt-v31-ease-spring)}
@keyframes lt-v31-pop {50%{transform:scale(1.35)}}
/* ---------- launcher: progress ring, orbit, attention ---------- */
#cxds-logo.lt-ui .lt-launcher-ring {position:absolute;inset:-6px;width:calc(100% + 12px);height:calc(100% + 12px);transform:rotate(-90deg);pointer-events:none;overflow:visible}
#cxds-logo.lt-ui .lt-launcher-ring circle {fill:none;stroke-width:3}
#cxds-logo.lt-ui .lt-launcher-ring .lt-ring-bg {stroke:rgb(139 102 21/16%)}
#cxds-logo.lt-ui .lt-launcher-ring .lt-ring-fg {stroke:#e8c23a;stroke-linecap:round;transition:stroke-dashoffset 1.1s var(--lt-v31-ease-out),stroke .5s}
#cxds-logo.lt-ui:not([data-ring]) .lt-launcher-ring {display:none}
#cxds-logo.lt-ui[data-motion="done"] .lt-ring-fg {stroke:#2e9a62}
#cxds-logo.lt-ui[data-motion="ai"] .lt-ring-fg {stroke:#9a7ee0}
#cxds-logo.lt-ui .lt-launcher-orbit {position:absolute;inset:-6px;border-radius:50%;opacity:0;pointer-events:none;transition:opacity .3s}
#cxds-logo.lt-ui .lt-launcher-orbit::before {content:"";position:absolute;top:-2px;left:50%;width:7px;height:7px;margin-left:-3.5px;border-radius:50%;background:#e8c23a;box-shadow:0 0 8px 2px rgb(232 194 58/80%)}
#cxds-logo.lt-ui:is([data-motion="run"],[data-motion="ai"]) .lt-launcher-orbit {opacity:1;animation:lt-v31-spin 2.4s linear infinite}
#cxds-logo.lt-ui[data-motion="ai"] .lt-launcher-orbit::before {background:#b39cf0;box-shadow:0 0 8px 2px rgb(150 120 230/80%)}
@keyframes lt-v31-spin {to{transform:rotate(360deg)}}
#cxds-logo.lt-ui .lt-launcher-badge {position:absolute;right:-4px;bottom:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:#96520f;color:#fff;font:700 10px/16px var(--lt-font-family);text-align:center;transform:scale(0);transition:transform .3s var(--lt-v31-ease-spring);pointer-events:none}
#cxds-logo.lt-ui[data-attention="true"] .lt-launcher-badge {transform:scale(1)}
#cxds-logo.lt-ui[data-ring]:is([data-runtime-state="running"],[data-runtime-state="done"]) {box-shadow:var(--lt-shadow-2)}
/* ---------- panel unfurls from the launcher ---------- */
#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"] {transform-origin:var(--lt-panel-origin,100% 100%);transition:transform .38s var(--lt-v31-ease-out),opacity .25s,visibility 0s}
#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"].cxds-hidden {transform:scale(.35);transition:transform .22s var(--lt-v31-ease-std),opacity .18s,visibility 0s .22s}
#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"] .cxds-body>* {transition:opacity .3s,transform .4s var(--lt-v31-ease-out)}
#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"].cxds-hidden .cxds-body>* {opacity:0;transform:translateY(-6px)}
#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"] .cxds-body>*:nth-child(2) {transition-delay:.04s}
#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"] .cxds-body>*:nth-child(3) {transition-delay:.08s}
#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"] .cxds-body>*:nth-child(4) {transition-delay:.12s}
#cxds-panel.lt-ui[data-ui-revision="golden-wing-v3"] .cxds-body>*:nth-child(n+5) {transition-delay:.16s}
/* ---------- panel: AI process + account ---------- */
#cxds-panel.lt-ui .lt-ux-ai-idle {margin:8px 0 0;padding:6px 10px;border-radius:8px;background:#fffdf7;border:1px solid #ece5d3;font-size:12px;line-height:1.6;color:#5c5848}
#cxds-panel.lt-ui .lt-ux-ai-idle[hidden] {display:none}
#cxds-panel.lt-ui .lt-ai-thinking {display:none;gap:3px;align-items:center;margin:8px 6px 0 0;vertical-align:middle}
#cxds-panel.lt-ui .lt-v3-ai-card[data-ai="running"] .lt-ai-thinking {display:inline-flex}
#cxds-panel.lt-ui .lt-ai-thinking i {width:5px;height:5px;border-radius:50%;background:#7a5cc8;animation:lt-v31-think 1s infinite}
#cxds-panel.lt-ui .lt-ai-thinking i:nth-child(2) {animation-delay:.15s}
#cxds-panel.lt-ui .lt-ai-thinking i:nth-child(3) {animation-delay:.3s}
@keyframes lt-v31-think {0%,80%,100%{transform:translateY(0);opacity:.35}40%{transform:translateY(-4px);opacity:1}}
#cxds-panel.lt-ui .lt-ai-steps {display:flex;gap:3px;margin-top:8px}
#cxds-panel.lt-ui .lt-ai-steps[hidden] {display:none}
#cxds-panel.lt-ui .lt-ai-steps i {flex:1;height:4px;border-radius:2px;background:#e9e2d0;transition:background-color .3s}
#cxds-panel.lt-ui .lt-ai-steps i[data-step="current"] {background:#7a5cc8}
#cxds-panel.lt-ui .lt-ai-steps i[data-step="done"] {background:#2e9a62}
#cxds-panel.lt-ui .lt-runtime-balance-row {position:relative}
#cxds-panel.lt-ui .lt-balance-delta {position:absolute;left:100%;top:-6px;margin-left:2px;font-size:12px;font-weight:700;color:#b5331e;white-space:nowrap;pointer-events:none;animation:lt-v31-float 1.6s var(--lt-v31-ease-out) forwards}
#cxds-panel.lt-ui .lt-balance-delta.is-gain {color:#1b7a4c}
@keyframes lt-v31-float {0%{opacity:0;transform:translateY(8px)}20%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-16px)}}
#cxds-panel.lt-ui [data-balance] {font-variant-numeric:tabular-nums}
#cxds-panel.lt-ui .lt-ux-receipt:not([hidden]) {animation:lt-v31-receipt .45s var(--lt-v31-ease-out)}
#cxds-panel.lt-ui .lt-ux-receipt.is-new {animation:lt-v31-receipt .45s var(--lt-v31-ease-out)}
@keyframes lt-v31-receipt {from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
#cxds-panel.lt-ui [data-action="refresh-balance"].is-spinning .lt-icon {animation:lt-v31-spin .7s var(--lt-v31-ease-std)}
/* ---------- concise billing / card copy ---------- */
#cxds-panel.lt-ui .lt-help-points {margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px}
#cxds-panel.lt-ui .lt-help-points li {position:relative;padding-left:12px}
#cxds-panel.lt-ui .lt-help-points li::before {content:"";position:absolute;left:2px;top:.65em;width:4px;height:4px;border-radius:50%;background:#c99a2e}
#cxds-panel.lt-ui .lt-help-points strong {color:var(--lt-color-text);font-weight:600}
/* The drawer already states the payment rule; avoid repeating it right below. */
#cxds-panel.lt-ui .drip-recharge[open] ~ .lt-payment-essential {display:none}
@media(prefers-reduced-motion:reduce){
:is(#lt-course-ui,#cxds-panel,#cxds-logo).lt-ui,:is(#lt-course-ui,#cxds-panel,#cxds-logo).lt-ui *,:is(#lt-course-ui,#cxds-panel,#cxds-logo).lt-ui *::before,:is(#lt-course-ui,#cxds-panel,#cxds-logo).lt-ui *::after {animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;transition-delay:0s!important}
#lt-course-ui.lt-ui .lt-v31-spark,#lt-course-ui.lt-ui .lt-v31-feather,#lt-course-ui.lt-ui .lt-speed-dust {display:none}
}
`;
var golden_wing_v4_default = '/* Golden Wing v3.2 simple panel: status first, details on demand. */\n#cxds-panel.lt-ui.lt-v4 .cxds-body {gap:10px}\n\n/* Hidden by default; still present for logic, screen readers get the hero instead. */\n#cxds-panel.lt-ui.lt-v4 :is(#drip-ai-help,.lt-ux-headline,.lt-ux-next,.lt-ux-ai-idle,.drip-current,[data-current-task],.lt-runtime-credit-label,.lt-payment-essential,.lt-ux-feedback,.lt-ux-ai-switch-note,.lt-v3-footer-copy,[data-ai-label]) {display:none!important}\n#cxds-panel.lt-ui.lt-v4 :is(.lt-billing-details,.lt-record-details):not([open]) {display:none}\n\n/* Status hero */\n#cxds-panel.lt-ui.lt-v4 .lt-v4-hero {display:flex;align-items:center;gap:12px;padding:2px 2px 0}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-icon {width:38px;height:38px;flex:0 0 38px;border-radius:12px;display:grid;place-items:center;font-size:17px;font-weight:700;background:#fff4d4;color:#8b6615;transition:background-color .3s,color .3s}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-hero[data-tone="run"] .lt-v4-icon {background:#fff4d4;color:#8b6615}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-hero[data-tone="ai"] .lt-v4-icon {background:#f1ecff;color:#7a5cc8}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-hero[data-tone="ok"] .lt-v4-icon {background:#e8f4ec;color:#1b7a4c}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-hero[data-tone="warn"] .lt-v4-icon {background:#fff1de;color:#96520f}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-copy {min-width:0;display:flex;flex-direction:column}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-title {font-weight:700;font-size:15px;line-height:1.4;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-desc {font-size:12px;line-height:1.5;color:#8a846f;overflow-wrap:anywhere}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-cta {width:100%;min-height:36px;font-size:13px;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-cta[hidden] {display:none}\n\n/* When the hero already offers the main action, the course-home switch steps back. */\n#cxds-panel.lt-ui.lt-v4[data-lt-cta="true"] [data-action="home-entry"] {background:transparent!important;color:#8b6615!important;border:1px solid #d9d1bd!important;min-height:30px;font-weight:500}\n\n/* AI row: flat, one line */\n#cxds-panel.lt-ui.lt-v4 .lt-v3-ai-card {padding:10px 12px}\n#cxds-panel.lt-ui.lt-v4 .lt-runtime-ai-row {display:flex;align-items:center}\n#cxds-panel.lt-ui.lt-v4 [data-action="ai-toggle"] {width:100%;justify-content:space-between}\n#cxds-panel.lt-ui.lt-v4 .drip-ai-copy {display:flex;align-items:baseline;gap:8px;flex-wrap:nowrap;min-width:0}\n#cxds-panel.lt-ui.lt-v4 .drip-ai-copy strong {font-size:13px;white-space:nowrap}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-ai-text {background:none!important;border:0!important;padding:0!important;border-radius:0!important;font-size:11.5px;color:#8a846f;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n#cxds-panel.lt-ui.lt-v4 .lt-ai-thinking {margin:6px 0 0}\n#cxds-panel.lt-ui.lt-v4 .lt-ai-steps {margin-top:8px}\n\n/* Points row */\n#cxds-panel.lt-ui.lt-v4 .cxds-license-box {padding:10px 12px}\n#cxds-panel.lt-ui.lt-v4 [data-balance] {font-size:22px}\n#cxds-panel.lt-ui.lt-v4 .lt-v3-recharge {min-height:30px;padding:3px 14px;font-size:12px}\n#cxds-panel.lt-ui.lt-v4 .lt-ux-receipt {margin-top:8px}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-shop {display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 10px;padding:6px 6px 6px 10px;border-radius:8px;background:#f6f0e1;font-size:12px;color:#6b5a3a}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-shop[hidden] {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-shop-link {min-height:28px;padding:0 10px;font-size:12px;color:#8b6615}\n\n/* Latest record + links */\n#cxds-panel.lt-ui.lt-v4 .lt-v4-last {display:flex;align-items:center;gap:8px;margin:0;padding:0 2px;font-size:12px;color:#5c5848}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-last::before {content:"";width:6px;height:6px;flex:0 0 6px;border-radius:50%;background:#e8c23a}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-last[data-empty="true"] {color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-last[data-empty="true"]::before {background:#d9d1bd}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-last span {overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-links {display:flex;gap:16px;padding:0 2px}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-link {border:0;background:none;padding:0;font:inherit;font-size:12px;color:#8b6615;cursor:pointer}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-link:hover,#cxds-panel.lt-ui.lt-v4 .lt-v4-link[aria-expanded="true"] {text-decoration:underline}\n#cxds-panel.lt-ui.lt-v4 .lt-record-details[open] {padding-top:6px}\n\n/* Footer keeps only the course list button */\n#cxds-panel.lt-ui.lt-v4 .lt-v3-footer {justify-content:flex-end}\n\n/* Timeline: no repeated body line */\n#cxds-panel.lt-ui .drip-timeline-entry p[hidden] {display:none}\n';
var golden_wing_invite_default = "/* \u9080\u8BF7\u540C\u5B66\uFF1A\u5165\u53E3\u3001\u9080\u8BF7\u5361\u3001\u586B\u7801\u63D0\u793A\u4E0E\u7B54\u5B8C\u4E00\u9875\u540E\u7684\u63D0\u793A\uFF0C\u6CBF\u7528\u91D1\u8272\u4E3B\u9898\u3002 */\n#cxds-panel.lt-ui.lt-v4 .lt-v4-links .lt-invite-entry {margin-left:auto;display:inline-flex;align-items:center;gap:5px;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-entry[hidden] {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-badge {font-size:10.5px;font-weight:700;line-height:17px;padding:0 6px;border-radius:999px;background:#fff4d4;color:#8b6615;border:1px solid #f0dc9c;white-space:nowrap}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-card {padding:12px;background:#fbf9f3;border:1px solid #e6dfce;border-radius:10px;position:relative}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-card[hidden] {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-head b {font-size:14px;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-perks {display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-perk {padding:8px 10px;border-radius:8px;background:#fff;border:1px solid #e6dfce;min-width:0}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-perk small {display:block;font-size:11px;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-perk strong {display:block;font-size:16px;line-height:1.3;color:#8b6615}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-perk span {display:block;font-size:11px;color:#5c5848}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-ticket {display:flex;align-items:stretch;margin-top:10px;border:1.5px dashed #d6c28a;border-radius:10px;background:#fffaeb}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-code {flex:1;padding:9px 12px;min-width:0}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-code small {display:block;font-size:11px;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-code code {font:700 20px/1.25 ui-monospace,Consolas,monospace;letter-spacing:4px;color:#24231f;background:none;padding:0}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-copy-code {border:0;border-left:1.5px dashed #d6c28a;border-radius:0 9px 9px 0;background:transparent;color:#8b6615;font:inherit;font-size:12px;font-weight:600;padding:0 14px;cursor:pointer}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-copy-code:hover {background:#fff3d1}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-copy-code.is-done {background:#ecf6ef;color:#1b7a4c}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-share {width:100%;min-height:36px;margin-top:10px;font-size:13px;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-share.is-done,#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge-copy.is-done {background:#1b7a4c}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-stats {display:flex;margin-top:12px;padding-top:10px;border-top:1px solid #e6dfce;text-align:center}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-stats div {flex:1}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-stats div+div {border-left:1px solid #e6dfce}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-stats strong {display:block;font-size:15px;line-height:1.3;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-stats strong.is-gold {color:#8b6615}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-stats small {font-size:11px;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-progress {display:flex;flex-direction:column;gap:6px;margin-top:10px}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-progress:empty {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-row {display:grid;grid-template-columns:52px 1fr 40px;align-items:center;gap:8px;font-size:11.5px;color:#5c5848}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-row em {font-style:normal;text-align:right;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-bar {display:block;height:6px;border-radius:999px;background:#efe8d6;overflow:hidden}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-bar b {display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#e8c23a,#a8812a);transition:width .3s}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-hint {margin:8px 0 0;font-size:11.5px;line-height:1.55;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-hint.is-error {color:#b5331e}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-hint:empty,#cxds-panel.lt-ui.lt-v4 .lt-invite-hint[hidden] {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-toast {position:absolute;left:50%;bottom:-10px;transform:translate(-50%,8px);margin:0;background:#24231f;color:#fffdf7;font-size:12px;padding:6px 12px;border-radius:999px;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;white-space:nowrap}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-toast.is-on {opacity:1;transform:translate(-50%,0)}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-bind {margin:10px 0 0}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-bind[hidden],#cxds-panel.lt-ui.lt-v4 .lt-invite-receipt[hidden],#cxds-panel.lt-ui.lt-v4 .lt-invite-kind[hidden],#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge[hidden] {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-receipt {margin:10px 0 0;padding:8px 10px;border-radius:8px;background:#ecf6ef;border:1px solid #bfe0cb;color:#1b7a4c;font-size:12px;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-kind {margin-left:6px;font-size:11px;font-weight:600;padding:1px 7px;border-radius:999px;background:#fff4d4;color:#8b6615}\n#cxds-panel.lt-ui.lt-v4 #cxds-card-code.lt-invite-input {font-family:ui-monospace,Consolas,monospace;letter-spacing:2px;font-weight:600;text-transform:uppercase}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge {position:relative;padding:10px 32px 10px 12px;border-radius:10px;background:#fff8e6;border:1px solid #ecd793;animation:lt-invite-rise .32s cubic-bezier(.16,1,.3,1)}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge b {display:block;font-size:13px;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge p {margin:2px 0 8px;font-size:12px;color:#6b5a3a}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge-close {position:absolute;right:6px;top:6px;width:24px;height:24px;border:0;border-radius:6px;background:none;color:#8a846f;font-size:16px;line-height:1;cursor:pointer}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge-close:hover {background:#f3e7c4}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge-actions {display:flex;align-items:center;gap:10px}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge-copy {min-height:30px;padding:0 12px;font-size:12px;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge-actions small {font-size:11px;color:#8a846f}\n@keyframes lt-invite-rise {from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}\n@media (prefers-reduced-motion:reduce){#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge{animation:none}#cxds-panel.lt-ui.lt-v4 .lt-invite-bar b,#cxds-panel.lt-ui.lt-v4 .lt-invite-toast{transition:none}}\n";
var golden_wing_pay_default = '/* \u9762\u677F\u5185\u626B\u7801\u4ED8\u6B3E\uFF1A\u5145\u503C\u62BD\u5C49\u3001\u79EF\u5206\u4E0D\u8DB3\u5361\u7247\u3001\u5C0F\u9E1F\u6C14\u6CE1\uFF0C\u6CBF\u7528\u91D1\u8272\u4E3B\u9898\u3002 */\n#cxds-panel.lt-ui.lt-v4 .lt-pay[hidden],#cxds-panel.lt-ui.lt-v4 .lt-pay-alt[hidden],#cxds-panel.lt-ui.lt-v4 .lt-pay-short[hidden],#cxds-panel.lt-ui.lt-v4 .lt-pay-short [hidden] {display:none}\n/* \u5F00\u4E86\u626B\u7801\u4ED8\u6B3E\uFF1A\u5E97\u94FA\u6761\u6536\u8FDB\u5E95\u90E8\u94FE\u63A5\uFF0C\u5361\u5BC6\u8F93\u5165\u6846\u70B9\u201C\u5DF2\u6709\u5361\u5BC6\u201D\u624D\u5C55\u5F00\u3002 */\n#cxds-panel.lt-ui.lt-v4 .lt-pay-on > .lt-v4-shop:not(.lt-invite-bind) {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-on:not(.lt-pay-redeem-open) > :is(.cxds-field,.cxds-license-actions,.drip-credit-help) {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-pay {margin:0 0 4px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-label {display:flex;align-items:baseline;justify-content:space-between;margin-bottom:6px;font-size:12px;font-weight:600;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-label small {font-size:11px;font-weight:400;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-packages {display:grid;grid-template-columns:1fr 1fr;gap:6px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-package {display:block;text-align:left;padding:8px 10px;border-radius:9px;background:#fff;border:1px solid #e6dfce;font:inherit;color:#24231f;cursor:pointer;transition:border-color .14s,background-color .14s,box-shadow .14s}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-package:hover {border-color:#b8995a}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-package[aria-checked="true"] {border-color:#8b6615;background:#fffaeb;box-shadow:inset 0 0 0 1px #8b6615}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-package strong {display:block;font-size:15px;line-height:1.3}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-package strong small {margin-left:2px;font-size:11px;font-weight:500;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-package span {display:block;font-size:12px;font-weight:600;color:#8b6615}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-methods {display:flex;gap:6px;margin-top:8px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-method {flex:1;display:flex;align-items:center;justify-content:center;gap:6px;min-height:32px;border-radius:8px;border:1px solid #e6dfce;background:#fff;font:inherit;font-size:12px;color:#5c5848;cursor:pointer;transition:border-color .14s,color .14s}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-method[aria-checked="true"] {border-color:#8b6615;color:#24231f;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-method i,#cxds-panel.lt-ui.lt-v4 .lt-pay-qr-mark {width:16px;height:16px;border-radius:4px;display:grid;place-items:center;color:#fff;font-style:normal;font-size:10px;font-weight:700}\n#cxds-panel.lt-ui.lt-v4 .is-alipay {background:#1677ff}\n#cxds-panel.lt-ui.lt-v4 .is-wxpay {background:#07c160}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-go {width:100%;min-height:38px;margin-top:10px;font-size:13.5px;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-fine {margin:7px 0 0;font-size:11px;color:#8a846f;text-align:center}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-alt {display:flex;justify-content:space-between;align-items:center;margin:2px 0 8px;padding-top:8px;border-top:1px solid #e6dfce}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-link {border:0;background:none;padding:2px 0;font:inherit;font-size:12px;color:#8b6615;cursor:pointer}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-link:hover {text-decoration:underline}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-link[hidden] {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-loading {padding:24px 0;text-align:center;font-size:12px;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 :is(.lt-pay-pick,.lt-pay-qrbox,.lt-pay-done,.lt-pay-failed,.lt-pay-offer) {animation:lt-pay-rise .28s cubic-bezier(.16,1,.3,1)}\n\n/* \u4E8C\u7EF4\u7801 */\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qrbox {display:flex;flex-direction:column;align-items:center;text-align:center}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qrhead {display:flex;align-items:baseline;gap:6px;margin-bottom:8px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qrhead strong {font-size:22px;letter-spacing:-.3px;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qrhead small {font-size:12px;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qr {position:relative;width:168px;height:168px;padding:8px;box-sizing:border-box;background:#fff;border:1px solid #e6dfce;border-radius:10px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qr svg {display:block;width:100%;height:100%}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qr-mark {position:absolute;left:50%;top:50%;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:6px;font-size:14px;box-shadow:0 0 0 3px #fff}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qr-mask {position:absolute;inset:0;border-radius:10px;background:rgb(255 255 255/93%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;font-size:12px;color:#5c5848}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qr-mask .lt-button {min-height:30px;font-size:12px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-scan {margin-top:8px;font-size:12.5px;color:#5c5848}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-scan b {margin:0 3px;font-weight:600;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-wait {display:flex;align-items:center;justify-content:center;gap:6px;margin-top:4px;font-size:11.5px;color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-wait i,#cxds-panel.lt-ui.lt-v4 .lt-pay-resume i {width:6px;height:6px;border-radius:50%;background:#e8c23a;animation:lt-pay-pulse 1.2s ease-in-out infinite}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qrfoot {display:flex;justify-content:space-between;width:100%;margin-top:8px;padding-top:8px;border-top:1px solid #e6dfce}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qrfoot .lt-pay-link {color:#8a846f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-qrfoot .lt-pay-link:hover {color:#8b6615}\n\n/* \u5230\u8D26 / \u5931\u8D25 */\n#cxds-panel.lt-ui.lt-v4 .lt-pay-done {display:flex;flex-direction:column;align-items:center;text-align:center;padding:6px 0 2px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-done-tick {width:44px;height:44px;border-radius:50%;background:#ecf6ef;color:#1b7a4c;display:grid;place-items:center;font-size:22px;font-weight:700;animation:lt-pay-pop .4s cubic-bezier(.34,1.56,.64,1)}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-done b {margin-top:8px;font-size:15px;color:#1b7a4c}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-done small {font-size:11.5px;color:#8a846f;overflow-wrap:anywhere}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-resume {display:flex;align-items:center;gap:6px;margin-top:8px;padding:5px 10px;border-radius:999px;background:#f1ecff;color:#5b3fb0;font-size:12px;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-resume i {background:#7a5cc8}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-failed {display:flex;flex-direction:column;gap:4px;text-align:center}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-failed b {font-size:14px;color:#96520f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-failed small {font-size:12px;line-height:1.6;color:#5c5848}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-failed-actions {display:flex;gap:6px;justify-content:center;margin-top:6px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-failed-actions .lt-button {min-height:30px;font-size:12px}\n\n/* \u79EF\u5206\u4E0D\u8DB3\u5361\u7247 */\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short {display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:12px;background:#fffaf0;border:1px solid #f0dca8;animation:lt-pay-rise .32s cubic-bezier(.16,1,.3,1)}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short.is-paid {background:#ecf6ef;border-color:#bfe0cb}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short.is-paid .lt-pay-short-head {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-head {display:flex;align-items:flex-start;gap:8px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-head > div {flex:1;min-width:0}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-head b {display:block;font-size:14px;color:#96520f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-head small {display:block;font-size:12px;color:#6b5a3a}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-close {width:24px;height:24px;flex:0 0 24px;border:0;border-radius:6px;background:none;color:#8a846f;font-size:16px;line-height:1;cursor:pointer}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-close:hover {background:#f3e7c4}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-offer-row {display:flex;align-items:center;gap:10px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-offer-amt {flex:1;min-width:0}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-offer-amt b {display:block;font-size:14px;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-offer-amt small {display:block;font-size:11.5px;color:#6b5a3a}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-offer-row .lt-button {min-width:96px;min-height:36px;font-weight:600}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-offer-more {display:flex;justify-content:space-between;margin-top:6px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-offer-more .lt-pay-link {font-size:11.5px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-mini {display:flex;gap:6px;margin-top:8px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-mini button {flex:1;padding:5px 0;border-radius:8px;border:1px solid #e6dfce;background:#fff;font:inherit;font-size:11.5px;line-height:1.3;color:#5c5848;cursor:pointer}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-mini button b {display:block;font-size:12.5px;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-mini button[aria-checked="true"] {border-color:#8b6615;background:#fffaeb;color:#8b6615}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-partial {width:100%;min-height:30px;font-size:12px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-fallback {display:flex;gap:6px}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-fallback:empty {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-pay-short-fallback .lt-button {flex:1;min-height:32px;font-size:12px}\n\n/* \u5C0F\u9E1F\u6C14\u6CE1\uFF08\u9762\u677F\u6536\u8D77\u65F6\uFF09 */\n.lt-ui.lt-pay-bubble {position:fixed;z-index:2147483647;max-width:240px;margin:0;padding:9px 12px;border:0;border-radius:12px 12px 4px 12px;white-space:nowrap;background:#24231f;color:#fffdf7;box-shadow:0 8px 20px rgb(0 0 0/18%);font:12px/1.5 var(--lt-font-family,system-ui);text-align:left;cursor:pointer;animation:lt-pay-rise .36s cubic-bezier(.16,1,.3,1)}\n.lt-ui.lt-pay-bubble[hidden] {display:none}\n.lt-ui.lt-pay-bubble b {display:block;font-size:12.5px;font-weight:600}\n.lt-ui.lt-pay-bubble span {display:block;margin-top:2px;color:#e8c23a}\n.lt-ui.lt-pay-bubble:hover span {text-decoration:underline}\n\n@keyframes lt-pay-rise {from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}\n@keyframes lt-pay-pulse {0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}\n@keyframes lt-pay-pop {from{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}\n@media (prefers-reduced-motion:reduce) {#cxds-panel.lt-ui.lt-v4 [class*="lt-pay"],.lt-ui.lt-pay-bubble,#cxds-panel.lt-ui.lt-v4 [class*="lt-pay"] * {animation:none!important;transition:none!important}}\n';
var golden_wing_close_default = '/* \u5C55\u5F00\u9879\u7EDF\u4E00\u6536\u8D77\u65B9\u5F0F\uFF1A\u91D1\u8272 \xD7\u3001\u5361\u7247\u6807\u9898\u884C\u3001\u5165\u53E3\u5C55\u5F00\u72B6\u6001\u3002 */\n#cxds-panel.lt-ui.lt-v4 .lt-close {display:inline-grid;place-items:center;width:26px;height:26px;min-height:0;flex:0 0 26px;padding:0;border:1px solid transparent;border-radius:8px;background:none;color:#8b6615;cursor:pointer;transition:background .15s,border-color .15s}\n#cxds-panel.lt-ui.lt-v4 .lt-close .lt-icon {width:14px;height:14px;stroke-width:2.2}\n#cxds-panel.lt-ui.lt-v4 .lt-close:hover {background:#f3e7c4;border-color:#e6d3a0}\n#cxds-panel.lt-ui.lt-v4 .lt-close:focus-visible {outline:2px solid #c9a44a;outline-offset:1px}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-nudge-close {right:4px;top:4px}\n\n#cxds-panel.lt-ui.lt-v4 :is(.lt-billing-details,.lt-record-details)>summary {display:none}\n#cxds-panel.lt-ui.lt-v4 .lt-sheet-head {display:flex;align-items:center;justify-content:space-between;gap:8px;margin:-4px -4px 6px 0}\n#cxds-panel.lt-ui.lt-v4 .lt-sheet-head b {font-size:13px;font-weight:600;color:#24231f}\n#cxds-panel.lt-ui.lt-v4 .lt-record-details .lt-sheet-head {margin-top:2px}\n#cxds-panel.lt-ui.lt-v4 .drip-recharge-content>.lt-sheet-head {margin-top:-2px}\n#cxds-panel.lt-ui.lt-v4 .lt-invite-head {display:flex;align-items:center;justify-content:space-between;gap:8px;margin:-4px -4px 0 0}\n\n/* \u5145\u503C\u5C55\u5F00\u540E\u662F\u63CF\u8FB9\u201C\u6536\u8D77 \u2303\u201D\uFF1B\u6587\u5B57\u94FE\u63A5\u5C55\u5F00\u65F6\u662F\u91D1\u8272\u5C0F\u80F6\u56CA\uFF0C\u7BAD\u5934\u671D\u4E0A */\n#cxds-panel.lt-ui.lt-v4 .lt-v3-recharge[aria-expanded="true"] {background:#fffdf7;color:#8b6615;border:1px solid #c9a44a;gap:3px}\n#cxds-panel.lt-ui.lt-v4 .lt-v3-recharge[aria-expanded="true"]:hover {background:#f8f0d5}\n#cxds-panel.lt-ui.lt-v4 .lt-v3-recharge .lt-icon {width:12px;height:12px;stroke-width:2.4;transform:rotate(180deg)}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-links .lt-v4-link {padding:2px 8px;margin:0 -8px;border-radius:999px;text-decoration:none}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-links .lt-v4-link:not(.lt-invite-entry)::after {content:"\u203A";display:inline-block;margin-left:3px;transition:transform .18s}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-links .lt-v4-link[aria-expanded="true"] {background:#f3e7c4;text-decoration:none}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-links .lt-v4-link[aria-expanded="true"]::after {transform:rotate(-90deg)}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-links .lt-v4-link:hover {text-decoration:none;background:#f8f0d5}\n#cxds-panel.lt-ui.lt-v4 .lt-v4-links .lt-invite-entry {margin-left:auto;margin-right:-8px}\n\n/* \u9762\u677F\u6536\u8D77\u65F6\u5C0F\u9E1F\u65C1\u7684\u6C14\u6CE1\uFF1A\u53F3\u4E0A\u89D2\u5C0F \xD7\uFF0C\u53EA\u5173\u6C14\u6CE1 */\n.lt-ui.lt-pay-bubble {padding-right:30px}\n.lt-ui.lt-pay-bubble-close {position:fixed;z-index:2147483647;display:grid;place-items:center;width:20px;height:20px;padding:0;border:0;border-radius:6px;background:none;color:#bdb6a3;cursor:pointer}\n.lt-ui.lt-pay-bubble-close:hover {background:rgb(255 255 255/12%);color:#fffdf7}\n.lt-ui.lt-pay-bubble-close svg {width:12px;height:12px}\n.lt-ui.lt-pay-bubble-close[hidden] {display:none}\n\n@media (prefers-reduced-motion:reduce) {#cxds-panel.lt-ui.lt-v4 .lt-v4-link::after,#cxds-panel.lt-ui.lt-v4 .lt-close {transition:none}}\n';
var golden_wing_rounds_default = "/* AI\u5B9E\u8DF5\u5F00\u804A\u524D\u9009\u8F6E\u6570\u7684\u5F39\u7A97\uFF08\u5C45\u4E2D\u5361\u7247\uFF09\u4E0E\u8D26\u6237\u533A\u7684\u5B66\u4E60\u901A UID\uFF0C\u6CBF\u7528\u91D1\u8272\u4E3B\u9898\u3002 */\n.lt-ui.lt-rounds {position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;padding:16px;background:rgb(36 35 31/32%);backdrop-filter:blur(2px);font:13px/1.5 var(--lt-font-family,system-ui);color:var(--lt-color-text);animation:lt-rounds-fade .18s ease-out}\n.lt-ui.lt-rounds[hidden] {display:none}\n.lt-ui .lt-rounds-card {width:min(340px,100%);padding:20px 20px 16px;border-radius:16px;background:var(--lt-color-panel);border:1px solid var(--lt-color-border);box-shadow:0 18px 48px rgb(36 35 31/22%);animation:lt-rounds-rise .26s cubic-bezier(.16,1,.3,1)}\n.lt-ui .lt-rounds-eyebrow {margin:0;font-size:11.5px;font-weight:600;color:var(--lt-color-brand);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.lt-ui .lt-rounds-title {margin:4px 0 0;font-size:18px;line-height:1.35;font-weight:700;color:var(--lt-color-text)}\n.lt-ui .lt-rounds-desc {margin:6px 0 0;font-size:12.5px;line-height:1.6;color:var(--lt-color-text-secondary)}\n.lt-ui .lt-rounds-stepper {display:flex;align-items:center;justify-content:center;gap:18px;margin:16px 0 0}\n.lt-ui .lt-rounds-step {display:grid;place-items:center;width:40px;height:40px;padding:0;border:1px solid var(--lt-color-border);border-radius:999px;background:var(--lt-color-secondary);color:var(--lt-color-text);font:500 20px/1 var(--lt-font-family,system-ui);cursor:pointer;transition:background .15s,border-color .15s}\n.lt-ui .lt-rounds-step:hover:not(:disabled) {background:var(--lt-color-hover);border-color:var(--lt-color-control-border)}\n.lt-ui .lt-rounds-step:disabled {opacity:.4;cursor:default}\n.lt-ui .lt-rounds-value {display:flex;align-items:baseline;justify-content:center;gap:4px;min-width:84px}\n.lt-ui .lt-rounds-value b {font-size:40px;line-height:1;font-weight:700;color:var(--lt-color-text);font-variant-numeric:tabular-nums}\n.lt-ui .lt-rounds-value span {font-size:13px;color:var(--lt-color-text-muted)}\n.lt-ui .lt-rounds-quick {display:flex;justify-content:center;gap:6px;margin:14px 0 0}\n.lt-ui .lt-rounds-chip {min-width:52px;height:28px;padding:0 10px;border:1px solid var(--lt-color-border);border-radius:999px;background:var(--lt-color-panel);color:var(--lt-color-text-secondary);font:600 12px/1 var(--lt-font-family,system-ui);cursor:pointer;transition:background .15s,border-color .15s,color .15s}\n.lt-ui .lt-rounds-chip:hover:not(:disabled) {border-color:var(--lt-color-control-border);color:var(--lt-color-text)}\n.lt-ui .lt-rounds-chip.is-on {background:var(--lt-color-selected);border-color:#e3c86d;color:var(--lt-color-brand)}\n.lt-ui .lt-rounds-chip:disabled {opacity:.35;cursor:default}\n.lt-ui .lt-rounds-summary {display:flex;justify-content:space-between;align-items:center;margin:16px 0 0;padding:9px 12px;border-radius:10px;background:#fbf9f3;border:1px solid #e6dfce;font-size:12.5px}\n.lt-ui .lt-rounds-summary span:first-child {font-weight:700;color:var(--lt-color-brand)}\n.lt-ui .lt-rounds-balance {color:var(--lt-color-text-muted)}\n.lt-ui .lt-rounds-summary.is-short {background:var(--lt-color-warning-bg);border-color:#f0cfa6}\n.lt-ui .lt-rounds-summary.is-short .lt-rounds-balance {color:var(--lt-color-warning);font-weight:600}\n.lt-ui .lt-rounds-note {margin:8px 0 0;font-size:11.5px;line-height:1.55;color:var(--lt-color-text-muted)}\n.lt-ui .lt-rounds-summary.is-short + .lt-rounds-note {color:var(--lt-color-warning)}\n.lt-ui .lt-rounds-note[hidden] {display:none}\n.lt-ui .lt-rounds-actions {display:flex;gap:8px;margin:16px 0 0}\n.lt-ui .lt-rounds-cancel {flex:0 0 auto;min-height:38px;padding:0 14px}\n.lt-ui .lt-rounds-start {flex:1;min-height:38px;font-size:13.5px;font-weight:600}\n@keyframes lt-rounds-fade {from{opacity:0}to{opacity:1}}\n@keyframes lt-rounds-rise {from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}\n@media (prefers-reduced-motion:reduce) {.lt-ui.lt-rounds,.lt-ui .lt-rounds-card {animation:none}.lt-ui .lt-rounds-step,.lt-ui .lt-rounds-chip {transition:none}}\n\n/* \u8D26\u6237\u533A\u9876\u90E8\u7684\u5B66\u4E60\u901A UID\uFF1A\u79EF\u5206\u6309\u5B66\u4E60\u901A\u53F7\u5206\u5F00\u3002 */\n#cxds-panel.lt-ui .lt-uid-line {display:flex;align-items:center;gap:6px;margin:0 0 8px;font-size:11.5px;line-height:1.4;color:var(--lt-color-text-muted)}\n#cxds-panel.lt-ui .lt-uid-line b {font-weight:600;color:var(--lt-color-text);font-variant-numeric:tabular-nums;letter-spacing:.2px}\n#cxds-panel.lt-ui .lt-uid-line.is-missing b {font-weight:500;color:var(--lt-color-warning)}\n";
function installUiStyles(doc) {
if (doc.getElementById("lt-ui-foundation-style")) return;
const style = doc.createElement("style");
style.id = "lt-ui-foundation-style";
style.textContent = `${tokens_default}
${components_default}
${runtime_default}
${golden_wing_default}
${golden_wing_v3_default}
${golden_wing_v31_default}
${golden_wing_v4_default}
${golden_wing_invite_default}
${golden_wing_pay_default}
${golden_wing_close_default}
${golden_wing_rounds_default}`;
(doc.head || doc.documentElement).append(style);
}
var iconSvg = Object.freeze({
"x": '',
"list": '',
"refresh-cw": '',
"chevron-down": '',
"circle-check": ''
});
function applyPanelHints(panel) {
const aiHelp = panel.querySelector("#drip-ai-help");
aiHelp.classList.add("lt-help-copy");
aiHelp.innerHTML = '\u5F00\u542F\u540E\u81EA\u52A8\u9009\u586B\u53EF\u8BC6\u522B\u7684\u6D4B\u9A8C\u6216\u4F5C\u4E1A\uFF0C\u5E76\u5C1D\u8BD5\u63D0\u4EA4\uFF1BAI \u6BCF\u7B54 1 \u9898\u6263 1 \u79EF\u5206\u3002\u5173\u95ED\u540E\u4E0D\u518D\u4F5C\u7B54\uFF0C\u6B63\u5728\u7B54\u7684\u90A3\u9898\u4ECD\u4F1A\u6263\u5206\u3002';
const [usage, payment] = panel.querySelectorAll(".drip-credit-help");
usage.classList.add("lt-help-copy");
usage.innerHTML = '- AI \u6BCF\u7B54 1 \u9898\u6263 1 \u79EF\u5206\uFF0C\u9898\u76EE\u957F\u77ED\u90FD\u4E00\u6837
- \u5237\u89C6\u9891\u3001\u770B\u6587\u6863\u514D\u8D39\uFF0C\u4E0D\u6263\u79EF\u5206
';
payment.classList.add("lt-help-copy");
payment.innerHTML = '\u5361\u5BC6\u9700\u53E6\u5916\u8D2D\u4E70\uFF0C\u5151\u6362\u53EA\u52A0\u79EF\u5206\uFF0C\u4E0D\u4F1A\u6263\u6B3E\u3002';
}
function accountUxState({ identity, licensed, balance, account = {} }) {
if (!identity) return { state: "warning", title: "\u672A\u8BC6\u522B\u5B66\u4E60\u901A\u8D26\u53F7", next: "\u8BF7\u5148\u767B\u5F55\u5B66\u4E60\u901A\uFF0C\u518D\u5237\u65B0\u9875\u9762\u3002" };
if (!licensed) return { state: "waiting", title: "\u8D26\u6237\u521D\u59CB\u5316\u4E2D", next: "\u7B49\u5F85\u8D26\u6237\u521D\u59CB\u5316\uFF1B\u5DF2\u6709\u5361\u5BC6\u53EF\u5728\u4E0B\u65B9\u5151\u6362\u3002" };
if (!Number.isFinite(balance)) return { state: "waiting", title: "\u79EF\u5206\u540C\u6B65\u4E2D", next: "\u7B49\u5F85\u540C\u6B65\uFF0C\u6216\u70B9\u51FB\u5237\u65B0\u79EF\u5206\uFF1B\u672A\u77E5\u4F59\u989D\u4E0D\u7B49\u4E8E\u96F6\u79EF\u5206\u3002" };
if (Number(account.dailyLimitPoints) > 0 && Number.isFinite(account.dailyRemainingPoints) && account.dailyRemainingPoints <= 0) return { state: "warning", title: "\u4ECA\u65E5 AI \u989D\u5EA6\u5DF2\u7528\u5B8C", next: "\u7B49\u5F85\u989D\u5EA6\u6062\u590D\uFF1B\u4F59\u989D\u4FDD\u7559\uFF0C\u5145\u503C\u4E0D\u4F1A\u6062\u590D\u4ECA\u65E5\u989D\u5EA6\u3002" };
if (balance <= 0) return { state: "warning", title: "AI \u79EF\u5206\u4E0D\u8DB3", next: "AI \u6BCF\u7B54 1 \u9898\u6263 1 \u79EF\u5206\uFF0C\u5151\u6362\u5361\u5BC6\u5373\u53EF\u5145\u503C\uFF1B\u5237\u89C6\u9891\u3001\u770B\u6587\u6863\u514D\u8D39\u3002" };
return { state: "ready", title: "AI \u79EF\u5206\u53EF\u7528", next: "" };
}
function pageNextStep({ path = "", course, account, aiEnabled, aiState, aiBadge, readOnly = false }) {
if (readOnly) return "\u5F53\u524D\u4E3A\u5DF2\u63D0\u4EA4\u6216\u6279\u9605\u7ED3\u679C\u9875\uFF0C\u4E0D\u91CD\u65B0\u53D1\u8D77 AI \u4F5C\u7B54\u3002";
if (aiBadge === "\u5F85\u786E\u8BA4") return "\u4E0B\u4E00\u6B65\uFF1A\u7B49\u5F85\u5E73\u53F0\u786E\u8BA4\u63D0\u4EA4\uFF1B\u5C1A\u672A\u786E\u8BA4\u6210\u529F\u65F6\uFF0C\u5148\u68C0\u67E5\u5F53\u524D\u6D4B\u9A8C\u3002";
if (aiState === "running" || aiState === "paused" || aiState === "done") return "";
if (path === "/base") return "\u4E0B\u4E00\u6B65\uFF1A\u5728\u5B66\u4E60\u901A\u8BFE\u7A0B\u5217\u8868\u4E2D\u9009\u62E9\u4E00\u95E8\u8BFE\u7A0B\u3002";
if (course) return `\u4E0B\u4E00\u6B65\uFF1A${course.next}`;
if (account.state !== "ready") return `\u4E0B\u4E00\u6B65\uFF1A${account.next}`;
if (!aiEnabled) return "AI \u5DF2\u5173\u95ED\uFF1B\u53EF\u624B\u52A8\u4F5C\u7B54\uFF0C\u6216\u4E86\u89E3\u4E0B\u65B9\u8BF4\u660E\u540E\u5F00\u542F AI\u3002";
return "\u4E0B\u4E00\u6B65\uFF1A\u6253\u5F00\u9700\u8981\u5904\u7406\u7684\u6D4B\u9A8C\u6216\u4F5C\u4E1A\uFF1BAI \u4F1A\u81EA\u52A8\u68C0\u6D4B\u9898\u76EE\u3002";
}
function panelUxSummary({ path = "", course, account, aiEnabled, aiState, aiBadge, aiTitle, aiDescription, readOnly = false }) {
const courseActive = course && ["running", "done", "error"].includes(course.state);
let title = courseActive ? course.title : readOnly ? "\u5F53\u524D\u4E3A\u7ED3\u679C\u9875\uFF0C\u4E0D\u91CD\u590D\u4F5C\u7B54" : aiState === "running" || aiState === "paused" || aiBadge === "\u5F85\u786E\u8BA4" ? aiTitle : path === "/base" ? "\u5C1A\u672A\u9009\u62E9\u8BFE\u7A0B" : !aiEnabled ? "AI \u5DF2\u5173\u95ED" : account.state !== "ready" ? account.title : aiTitle || "\u7B49\u5F85\u6D4B\u9A8C\u6216\u4F5C\u4E1A";
const state = courseActive ? course.state : aiBadge === "\u5F85\u786E\u8BA4" ? "waiting" : aiState === "paused" ? "error" : aiState === "running" ? "running" : account.state === "warning" && aiEnabled ? "warning" : "waiting";
let next;
if (readOnly) next = pageNextStep({ readOnly: true });
else if (aiBadge === "\u5F85\u786E\u8BA4") next = pageNextStep({ aiBadge });
else if (aiState === "paused" && aiEnabled) next = "\u4E0B\u4E00\u6B65\uFF1A\u68C0\u67E5\u5F53\u524D\u6D4B\u9A8C\u548C AI \u4E0E\u79EF\u5206\u8BB0\u5F55\uFF1B\u8BF7\u6C42\u8D85\u65F6\u4E0D\u4EE3\u8868\u672A\u6263\u5206\u3002";
else if (aiState === "running") next = aiDescription || "\u7B49\u5F85\u672C\u9898\u7B54\u6848\u8FD4\u56DE\uFF1B\u63D0\u4EA4\u7ED3\u679C\u4ECD\u9700\u5B66\u4E60\u901A\u786E\u8BA4\u3002";
else if (courseActive) next = `\u4E0B\u4E00\u6B65\uFF1A${course.next}`;
else if (aiEnabled && account.state !== "ready") next = `\u4E0B\u4E00\u6B65\uFF1A${account.next}`;
else if (!aiEnabled && path !== "/base") next = "\u53EF\u5728\u5B66\u4E60\u901A\u4E2D\u624B\u52A8\u4F5C\u7B54\uFF1B\u8BFE\u7A0B\u8F85\u52A9\u6309\u539F\u8BBE\u7F6E\u7EE7\u7EED\u8FD0\u884C\u3002";
else next = pageNextStep({ path, course, account, aiEnabled, aiState });
return { title, state, next };
}
function chargeReceipt(usage, balance, question = "") {
const points = usage == null ? void 0 : usage.consumedPoints;
if (!Number.isSafeInteger(points) || points < 0 || !Number.isFinite(balance) || balance < 0) return null;
const cached = usage.cached === true;
return {
points,
balance,
cached,
question,
text: cached ? `${question}\u4F7F\u7528\u539F\u8BF7\u6C42\u7ED3\u679C\uFF0C\u672C\u6B21\u672A\u91CD\u590D\u6263\u5206\uFF1B\u539F\u8BF7\u6C42\u6263\u9664 ${points} \u79EF\u5206\uFF0C\u4F59\u989D ${balance} \u79EF\u5206` : `${question}\u672C\u9898\u6D88\u8017 ${points} \u79EF\u5206\uFF0C\u5269\u4F59 ${balance} \u79EF\u5206\uFF08AI \u8BF7\u6C42\u5DF2\u8BA1\u8D39\uFF0C\u586B\u5199\u6216\u63D0\u4EA4\u4ECD\u9700\u786E\u8BA4\uFF09`
};
}
function mountPanelUx(panel, timeline, callbacks = {}) {
const doc = panel.ownerDocument;
const make = (className, text = "") => {
const el = doc.createElement("p");
el.className = className;
el.textContent = text;
return el;
};
const body = panel.querySelector(".cxds-body");
const course = make("lt-ux-course"), next = make("lt-ux-next");
const headline = make("lt-ux-headline");
headline.dataset.uxHeadline = "";
course.dataset.uxCourse = "";
next.dataset.uxNext = "";
next.setAttribute("aria-live", "polite");
body.prepend(headline, course, next);
const aiIdle = make("lt-ux-ai-idle");
aiIdle.hidden = true;
next.after(aiIdle);
const aiNote = make("lt-ux-ai-switch-note");
aiNote.id = "lt-ux-ai-switch-note";
aiNote.setAttribute("role", "status");
panel.querySelector("#drip-ai-help").after(aiNote);
panel.querySelector('[data-action="ai-toggle"]').setAttribute("aria-describedby", "drip-ai-help lt-ux-ai-switch-note");
const originalStatus = panel.querySelector(".cxds-status-banner");
originalStatus.hidden = true;
const feedback = make("lt-ux-feedback");
feedback.dataset.uxFeedback = "";
feedback.setAttribute("role", "status");
panel.querySelector(".cxds-license-box").append(feedback);
const receipt = make("lt-ux-receipt");
receipt.dataset.uxReceipt = "";
receipt.setAttribute("role", "status");
const receiptCopy = doc.createElement("strong"), receiptBalance = doc.createElement("span"), receiptNote = doc.createElement("small");
receiptBalance.className = "lt-v3-receipt-balance";
receiptNote.textContent = "AI \u8BF7\u6C42\u5DF2\u8BA1\u8D39\uFF1B\u586B\u5199\u6216\u63D0\u4EA4\u4ECD\u9700\u5E73\u53F0\u786E\u8BA4\u3002";
receipt.append(receiptCopy, receiptBalance, receiptNote);
panel.querySelector(".cxds-license-box").append(receipt);
const collapse = make("lt-ux-collapse", "\u6536\u8D77\u9762\u677F\u4E0D\u505C\u6B62\u8FD0\u884C\uFF1BAI \u5F00\u5173\u53EA\u63A7\u5236 AI\uFF0C\u540E\u53F0\u6302\u673A\u4E0D\u63A7\u5236\u8BFE\u7A0B\u5B66\u4E60\u3002");
panel.append(collapse);
panel.querySelector(".lt-runtime-account-row").after(receipt, feedback);
const setText = (el, value) => {
if (el.textContent !== value) el.textContent = value;
};
const hide = (el, value) => {
if (el.hidden !== value) el.hidden = value;
};
const courseObservers = /* @__PURE__ */ new Map();
const render = () => {
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
const context = ((_a = callbacks.getUxContext) == null ? void 0 : _a.call(callbacks)) || { path: doc.location.pathname, documents: [doc] };
let account = accountUxState({
identity: (_b = callbacks.getChaoxingIdentity) == null ? void 0 : _b.call(callbacks),
licensed: (_c = callbacks.hasLicense) == null ? void 0 : _c.call(callbacks),
balance: (_d = callbacks.getBalance) == null ? void 0 : _d.call(callbacks),
account: (_e = callbacks.getAccountSnapshot) == null ? void 0 : _e.call(callbacks)
});
const enabled = panel.querySelector('[data-action="ai-toggle"]').getAttribute("aria-checked") === "true";
let snapshot;
const documents = context.documents || [doc];
const roots = new Set(documents.map((candidate) => candidate.documentElement));
for (const [root, observer] of courseObservers) {
if (!roots.has(root)) {
observer.disconnect();
courseObservers.delete(root);
}
}
for (const candidate of documents) {
if (!candidate.documentElement) continue;
if (!courseObservers.has(candidate.documentElement)) {
const observer = new MutationObserver(render);
observer.observe(candidate.documentElement, { attributes: true, attributeFilter: ["data-drip-ux-course"] });
courseObservers.set(candidate.documentElement, observer);
}
try {
snapshot = JSON.parse(candidate.documentElement.dataset.dripUxCourse || "null");
} catch (e) {
}
if (snapshot) break;
}
if (!snapshot || !["done", "running", "waiting", "error"].includes(snapshot.state) || typeof snapshot.title !== "string" || typeof snapshot.next !== "string") snapshot = null;
setText(course, snapshot ? `\u8BFE\u7A0B\u72B6\u6001\uFF1A${snapshot.title}` : context.path === "/base" ? "\u8BFE\u7A0B\u72B6\u6001\uFF1A\u5C1A\u672A\u9009\u62E9\u8BFE\u7A0B" : "\u8BFE\u7A0B\u72B6\u6001\uFF1A\u7B49\u5F85\u8BFB\u53D6\u5F53\u524D\u4EFB\u52A1");
hide(course, !snapshot && !/studentstudy|studentcourse|^\/base$/.test(context.path));
const statusText = ((_f = originalStatus.querySelector("[data-status-text]")) == null ? void 0 : _f.textContent) || "";
if (/账户同步失败|初始化失败/.test(statusText)) account = { state: "warning", title: "\u8D26\u6237\u540C\u6B65\u5931\u8D25", next: "\u8BF7\u5237\u65B0\u9875\u9762\u91CD\u8BD5\uFF0C\u5F53\u524D\u672A\u786E\u8BA4\u79EF\u5206\u53EF\u7528\u3002" };
const current = panel.querySelector(".drip-current");
const aiState = current.dataset.state;
if (context.readOnly || enabled && aiState === "recorded" && account.state !== "ready") {
setText(current.querySelector("[data-current-title]"), context.readOnly ? "\u5F53\u524D\u4E3A\u7ED3\u679C\u9875\uFF0C\u4E0D\u91CD\u590D\u4F5C\u7B54" : account.title);
setText(current.querySelector("[data-current-description]"), context.readOnly ? "\u7ED3\u679C\u9875\u4E0D\u4F1A\u91CD\u65B0\u8BF7\u6C42 AI\uFF1B\u53EF\u67E5\u770B\u5B66\u4E60\u901A\u8FD4\u56DE\u7684\u7ED3\u679C\u3002" : account.next);
setText(current.querySelector("[data-current-state]"), context.readOnly ? "\u4E0D\u4F5C\u7B54" : "\u5F85\u5C31\u7EEA");
}
const summary = panelUxSummary({
...context,
course: snapshot,
account,
aiEnabled: enabled,
aiState,
aiBadge: current.querySelector("[data-current-state]").textContent,
aiTitle: current.querySelector("[data-current-title]").textContent,
aiDescription: current.querySelector("[data-current-description]").textContent
});
setText(headline, summary.title);
headline.dataset.state = summary.state;
setText(next, summary.next);
const badge = current.querySelector("[data-current-state]").textContent;
const courseShown = Boolean(snapshot) && /\/mycourse\/studentstudy$/.test(context.path) && !context.readOnly && enabled && account.state === "ready" && !["running", "paused"].includes(aiState) && badge !== "\u5F85\u786E\u8BA4";
hide(headline, courseShown);
hide(next, courseShown || !summary.next);
setText(aiIdle, "AI \u5F85\u547D\uFF1A\u68C0\u6D4B\u5230\u6D4B\u9A8C\u6216\u4F5C\u4E1A\u4F1A\u81EA\u52A8\u5904\u7406\u3002\u8BFE\u7A0B\u8FDB\u5EA6\u89C1\u5DE6\u4FA7\u8BFE\u7A0B\u533A\u3002");
hide(aiIdle, !courseShown);
panel.dataset.courseState = (snapshot == null ? void 0 : snapshot.state) || "unknown";
panel.dataset.coursePercent = Number.isInteger(snapshot == null ? void 0 : snapshot.percent) && snapshot.percent >= 0 && snapshot.percent <= 100 ? String(snapshot.percent) : "";
setText(aiNote, enabled ? "\u5173\u6389 AI \u540E\uFF0C\u6B63\u5728\u7B54\u7684\u90A3\u9898\u4ECD\u4F1A\u6263 1 \u79EF\u5206\u3002" : "AI \u5DF2\u5173\u95ED\uFF0C\u4E4B\u540E\u4E0D\u518D\u6263\u79EF\u5206\u3002");
current.dataset.confirmed = String(panel.querySelector("[data-submission-state]").dataset.confirmed === "true" && current.querySelector("[data-current-state]").textContent !== "\u5F85\u786E\u8BA4");
const balanceState = panel.querySelector("[data-license-state]");
setText(balanceState, account.title);
balanceState.dataset.uxState = account.state;
const operation = [...timeline.source.children].findLast((row) => /积分已刷新|兑换成功|卡密无效|卡密已|请输入卡密/.test(row.textContent) || row.classList.contains("cxds-error") && !/第\s*\d+\s*\/\s*\d+\s*题/.test(row.textContent));
const operationText = (operation == null ? void 0 : operation.textContent.replace(/^\[\d{2}:\d{2}:\d{2}\]\s*/, "")) || "";
const meaningful = Boolean(operationText) || Boolean(statusText.trim()) && !/^(准备就绪|正在运行|AI 正在处理作业|平台已确认提交完成)$/.test(statusText) && !/查看运行日志|正在初始化|积分不足/.test(statusText);
setText(feedback, meaningful ? `\u64CD\u4F5C\u53CD\u9988\uFF1A${operationText || statusText}` : "");
hide(feedback, !meaningful);
const latest = [...timeline.source.children].findLast((row) => row.dataset.chargePoints !== void 0);
const data = latest == null ? void 0 : latest.dataset;
const confirmed = data && chargeReceipt({ consumedPoints: Number(data.chargePoints), cached: data.chargeCached === "true" }, Number(data.chargeBalance), data.chargeQuestion + " \xB7 ");
if (confirmed) {
setText(receiptCopy, confirmed.cached ? `${data.chargeQuestion} \xB7 \u6CBF\u7528\u539F\u8BF7\u6C42\uFF0C\u672C\u6B21\u4E0D\u91CD\u590D\u6263\u8D39` : `${data.chargeQuestion} \xB7 \u672C\u6B21\u6D88\u8017 ${confirmed.points} \u79EF\u5206`);
setText(receiptBalance, `\u4F59\u989D ${confirmed.balance}`);
if (receipt.title !== confirmed.text) receipt.title = confirmed.text;
}
hide(receipt, !confirmed);
panel.querySelector("[data-balance]").dataset.uxKnown = String(Boolean((_g = callbacks.hasLicense) == null ? void 0 : _g.call(callbacks)) && Number.isFinite((_h = callbacks.getBalance) == null ? void 0 : _h.call(callbacks)));
if (!((_i = callbacks.hasLicense) == null ? void 0 : _i.call(callbacks)) || !Number.isFinite((_j = callbacks.getBalance) == null ? void 0 : _j.call(callbacks))) setText(panel.querySelector("[data-balance]"), "\u2014");
const courses = panel.querySelector('[data-action="courses"]');
if (((_k = courses.lastChild) == null ? void 0 : _k.nodeType) === 3) {
if (courses.lastChild.textContent !== "\u8BFE\u7A0B\u5217\u8868") courses.lastChild.textContent = "\u8BFE\u7A0B\u5217\u8868";
} else courses.append(doc.createTextNode("\u8BFE\u7A0B\u5217\u8868"));
panel.querySelector(".drip-current").hidden = false;
panel.dataset.courseGuard = typeof (snapshot == null ? void 0 : snapshot.guard) === "boolean" ? String(snapshot.guard) : "unknown";
panel.dispatchEvent(new doc.defaultView.CustomEvent("drip-ux-state"));
};
panel.addEventListener("drip-ux-refresh", render);
render();
const timer = doc.defaultView.setInterval(() => {
if (!doc.hidden) render();
}, 1e3);
const onVisible = () => {
if (!doc.hidden) render();
};
doc.addEventListener("visibilitychange", onVisible);
doc.defaultView.addEventListener("pagehide", () => {
doc.defaultView.clearInterval(timer);
doc.removeEventListener("visibilitychange", onVisible);
courseObservers.forEach((observer) => observer.disconnect());
}, { once: true });
}
function mountPanelV3(panel, logo, callbacks = {}) {
const doc = panel.ownerDocument;
const win = doc.defaultView;
const node = (tag, className, text = "") => {
const el = doc.createElement(tag);
el.className = className;
el.textContent = text;
return el;
};
const action = (name) => panel.querySelector(`[data-action="${name}"]`);
const body = panel.querySelector(".cxds-body");
panel.dataset.uiRevision = "golden-wing-v3";
const aiCard = node("section", "lt-v3-ai-card");
const aiRow = panel.querySelector(".lt-runtime-ai-row");
aiRow.before(aiCard);
const help = panel.querySelector("#drip-ai-help");
help.textContent = "AI \u6BCF\u7B54 1 \u9898\u6263 1 \u79EF\u5206\uFF1B\u5237\u89C6\u9891\u3001\u770B\u6587\u6863\u514D\u8D39\u3002";
const billing = panel.querySelector(".lt-billing-details");
const aiNote = panel.querySelector(".lt-ux-ai-switch-note");
billing.querySelector(".lt-billing-content").append(aiNote);
const headline = panel.querySelector(".lt-ux-headline");
const next = panel.querySelector(".lt-ux-next");
aiCard.append(aiRow, help, headline, next, panel.querySelector(".lt-ux-ai-idle"));
action("ai-toggle").querySelector("strong").textContent = "AI \u667A\u80FD\u7B54\u9898";
const account = panel.querySelector(".cxds-license-box");
account.querySelector(".lt-runtime-credit-label").textContent = "\u8D26\u6237\u79EF\u5206";
const quickRecharge = node("button", "lt-button lt-button--primary lt-v3-recharge", "\u5151\u6362\u5361\u5BC6");
quickRecharge.type = "button";
const recharge = panel.querySelector(".drip-recharge");
recharge.id = "lt-v3-recharge";
quickRecharge.setAttribute("aria-controls", recharge.id);
const updateRecharge = () => quickRecharge.setAttribute("aria-expanded", String(recharge.open));
quickRecharge.addEventListener("click", () => {
if (recharge.open) recharge.open = false;
else action("show-recharge").click();
updateRecharge();
});
recharge.addEventListener("toggle", updateRecharge);
updateRecharge();
account.querySelector(".lt-runtime-account-row").append(quickRecharge);
account.after(billing);
const footer = panel.querySelector(".lt-ux-collapse");
footer.classList.add("lt-v3-footer");
footer.replaceChildren();
const footerCopy = node("span", "lt-v3-footer-copy", "\u6536\u8D77\u9762\u677F\u4E0D\u505C\u6B62\u8FD0\u884C");
footer.append(footerCopy, action("courses"));
const clampFloatingUi = () => {
for (const element of [logo, panel]) {
const rect = element.getBoundingClientRect();
const left = Math.max(8, Math.min(rect.left, win.innerWidth - rect.width - 8));
const top = Math.max(8, Math.min(rect.top, win.innerHeight - rect.height - 8));
if (rect.left < 8 || rect.right > win.innerWidth - 8) element.style.left = left + "px";
if (rect.top < 8 || rect.bottom > win.innerHeight - 8) element.style.top = top + "px";
}
};
clampFloatingUi();
win.addEventListener("resize", clampFloatingUi);
const guide = node("aside", "lt-v3-guide");
const title = node("strong", "", "\u7B2C\u4E00\u6B21\u4F7F\u7528\uFF0C\u5148\u4E86\u89E3\u8FD9\u4E09\u70B9");
const list = node("ul", "");
for (const copy of ["AI \u6BCF\u7B54 1 \u9898\u6263 1 \u79EF\u5206\uFF0C\u5148\u6263\u5206\u518D\u586B\u5199\u3002", "\u5237\u89C6\u9891\u3001\u770B\u6587\u6863\u514D\u8D39\uFF0C\u4E0D\u6263\u79EF\u5206\u3002", "\u7B54\u6848\u8FD4\u56DE\u4E0D\u7B49\u4E8E\u63D0\u4EA4\u6210\u529F\uFF0C\u4EE5\u5B66\u4E60\u901A\u786E\u8BA4\u7ED3\u679C\u4E3A\u51C6\u3002"]) list.append(node("li", "", copy));
const dismiss = node("button", "lt-button lt-button--primary", "\u4E86\u89E3\u4E86");
dismiss.type = "button";
guide.append(title, list, dismiss);
let acknowledged = false;
try {
acknowledged = win.localStorage.getItem("lt-golden-wing-guide-v1") === "seen";
} catch (e) {
}
guide.hidden = acknowledged;
dismiss.addEventListener("click", () => {
guide.hidden = true;
try {
win.localStorage.setItem("lt-golden-wing-guide-v1", "seen");
} catch (e) {
}
action("ai-toggle").focus();
});
body.prepend(guide);
const clear = action("clear-log");
const confirm = node("div", "lt-v3-clear-confirm");
confirm.hidden = true;
const message = node("span", "", "\u6E05\u7A7A\u672C\u9875\u663E\u793A\u8BB0\u5F55\uFF1F\u8D26\u6237\u6263\u8D39\u8BB0\u5F55\u4E0D\u53D7\u5F71\u54CD\u3002");
const accept = node("button", "lt-button lt-button--ghost", "\u786E\u8BA4\u6E05\u7A7A");
accept.type = "button";
const cancel = node("button", "lt-button lt-button--ghost", "\u53D6\u6D88");
cancel.type = "button";
confirm.append(message, accept, cancel);
clear.parentElement.after(confirm);
let accepted = false;
clear.addEventListener("click", (event) => {
if (accepted) return;
event.preventDefault();
event.stopImmediatePropagation();
confirm.hidden = false;
accept.focus();
}, true);
accept.addEventListener("click", () => {
accepted = true;
try {
clear.click();
} finally {
accepted = false;
confirm.hidden = true;
clear.focus();
}
});
cancel.addEventListener("click", () => {
confirm.hidden = true;
clear.focus();
});
const hud = node("aside", "lt-ui lt-v3-launcher-hud");
hud.dataset.theme = "golden-wing";
hud.id = "lt-launcher-hud";
hud.hidden = true;
hud.setAttribute("role", "tooltip");
const hudTitle = node("strong", ""), hudState = node("p", ""), hudAccount = node("p", "");
hud.append(hudTitle, hudState, hudAccount);
doc.body.append(hud);
logo.setAttribute("aria-describedby", hud.id);
const setText = (el, text) => {
if (el.textContent !== text) el.textContent = text;
};
const sync = () => {
var _a;
const summary = panel.querySelector(".lt-ux-headline");
const badge = panel.querySelector("[data-current-state]").textContent;
const state = badge === "\u5F85\u786E\u8BA4" ? "receipt" : summary.dataset.state || "waiting";
logo.dataset.runtimeState = state;
setText(hudTitle, summary.textContent || "\u7B49\u5F85\u8BFB\u53D6\u5F53\u524D\u4EFB\u52A1");
const enabled = action("ai-toggle").getAttribute("aria-checked") === "true";
setText(hudState, `AI ${enabled ? "\u5DF2\u5F00\u542F" : "\u5DF2\u5173\u95ED"} \xB7 ${badge}`);
const known = panel.querySelector("[data-balance]").dataset.uxKnown === "true";
const balance = (_a = callbacks.getBalance) == null ? void 0 : _a.call(callbacks);
setText(hudAccount, known && Number.isFinite(balance) ? `\u79EF\u5206\u4F59\u989D\uFF1A${balance}` : "\u79EF\u5206\u4F59\u989D\uFF1A\u5F85\u540C\u6B65");
const guard = panel.dataset.courseGuard;
setText(footerCopy, guard === "true" ? "\u6302\u673A\u5DF2\u5F00\u542F \xB7 \u6536\u8D77\u4E0D\u505C\u6B62\u8FD0\u884C" : guard === "false" ? "\u6302\u673A\u5DF2\u5173\u95ED \xB7 \u6536\u8D77\u4E0D\u505C\u6B62\u8FD0\u884C" : "\u6536\u8D77\u9762\u677F\u4E0D\u505C\u6B62\u8FD0\u884C");
};
panel.addEventListener("drip-ux-state", sync);
sync();
let hoverTimer;
const showHud = () => {
sync();
const rect = logo.getBoundingClientRect();
const width = Math.min(260, win.innerWidth - 16);
hud.style.width = width + "px";
hud.hidden = false;
hud.style.left = Math.max(8, Math.min(rect.right - width, win.innerWidth - width - 8)) + "px";
hud.style.top = Math.max(8, Math.min(rect.top - hud.offsetHeight - 10, win.innerHeight - hud.offsetHeight - 8)) + "px";
};
const hideHud = () => {
win.clearTimeout(hoverTimer);
hud.hidden = true;
};
logo.addEventListener("pointerenter", () => {
hoverTimer = win.setTimeout(showHud, 300);
});
logo.addEventListener("pointerleave", () => {
if (doc.activeElement !== logo) hideHud();
});
logo.addEventListener("focus", showHud);
logo.addEventListener("blur", hideHud);
logo.addEventListener("pointerdown", hideHud);
logo.addEventListener("keydown", (event) => {
if (event.key === "Escape") hideHud();
});
action("hide").addEventListener("click", () => {
logo.focus();
hideHud();
});
logo.addEventListener("click", () => {
hideHud();
if (!panel.classList.contains("cxds-hidden")) action("hide").focus();
});
win.addEventListener("resize", hideHud);
win.addEventListener("pagehide", () => {
win.clearTimeout(hoverTimer);
hud.remove();
}, { once: true });
}
var SVG_NS = "http://www.w3.org/2000/svg";
var RING_LENGTH = 2 * Math.PI * 30;
function mountPanelMotion(panel, logo, timeline) {
var _a, _b;
const doc = panel.ownerDocument;
const win = doc.defaultView;
const reduced = () => {
var _a2;
return Boolean((_a2 = win.matchMedia) == null ? void 0 : _a2.call(win, "(prefers-reduced-motion: reduce)").matches);
};
const node = (tag, className) => {
const el = doc.createElement(tag);
el.className = className;
return el;
};
const ring = doc.createElementNS(SVG_NS, "svg");
ring.setAttribute("viewBox", "0 0 64 64");
ring.setAttribute("class", "lt-launcher-ring");
ring.setAttribute("aria-hidden", "true");
const circle = (attrs) => {
const c = doc.createElementNS(SVG_NS, "circle");
for (const k in attrs) c.setAttribute(k, attrs[k]);
return c;
};
const ringFg = circle({ class: "lt-ring-fg", cx: 32, cy: 32, r: 30, "stroke-dasharray": RING_LENGTH.toFixed(2), "stroke-dashoffset": RING_LENGTH.toFixed(2) });
ring.append(circle({ class: "lt-ring-bg", cx: 32, cy: 32, r: 30 }), ringFg);
const orbit = node("span", "lt-launcher-orbit");
orbit.setAttribute("aria-hidden", "true");
const badge = node("span", "lt-launcher-badge");
badge.textContent = "!";
badge.setAttribute("aria-hidden", "true");
logo.append(ring, orbit, badge);
const aiCard = panel.querySelector(".lt-v3-ai-card");
const thinking = node("span", "lt-ai-thinking");
thinking.setAttribute("aria-hidden", "true");
thinking.append(doc.createElement("i"), doc.createElement("i"), doc.createElement("i"));
const steps = node("div", "lt-ai-steps");
steps.hidden = true;
steps.setAttribute("aria-hidden", "true");
(_a = aiCard == null ? void 0 : aiCard.querySelector(".lt-runtime-ai-row")) == null ? void 0 : _a.after(thinking);
aiCard == null ? void 0 : aiCard.append(steps);
let reported = null;
win.addEventListener("drip-ai-question-progress", (event) => {
const detail = event.detail || {};
const current = Number(detail.current), total = Number(detail.total);
reported = detail.active && Number.isInteger(current) && Number.isInteger(total) && total > 0 && total <= 200 && current >= 1 && current <= total ? { current, total } : null;
sync();
});
const questionProgress = () => {
var _a2;
if (reported) return reported;
const rows = [...((_a2 = timeline == null ? void 0 : timeline.source) == null ? void 0 : _a2.children) || []];
const start = rows.findLastIndex((row) => /收到挂机任务|\[自动答题\]|识别到\s*\d+\s*道/.test(row.textContent));
let current = 0, total = 0;
for (const row of rows.slice(Math.max(0, start))) {
const match = row.textContent.match(/第\s*(\d+)\s*\/\s*(\d+)\s*题/);
if (match) {
current = Math.max(current, Number(match[1]));
total = Number(match[2]);
}
}
return total > 0 && total <= 200 ? { current, total } : null;
};
const sync = () => {
var _a2, _b2, _c;
const current = panel.querySelector(".drip-current");
const rawAiState = (current == null ? void 0 : current.dataset.state) || "";
const progressNow = rawAiState === "running" ? questionProgress() : null;
const aiState = rawAiState === "running" && !progressNow && !/题|轮/.test(((_a2 = current == null ? void 0 : current.querySelector("[data-current-title]")) == null ? void 0 : _a2.textContent) || "") ? "recorded" : rawAiState;
const badgeText = ((_b2 = current == null ? void 0 : current.querySelector("[data-current-state]")) == null ? void 0 : _b2.textContent) || "";
const courseState = panel.dataset.courseState;
const headlineState = (_c = panel.querySelector(".lt-ux-headline")) == null ? void 0 : _c.dataset.state;
const motion = aiState === "running" ? "ai" : courseState === "running" ? "run" : courseState === "done" ? "done" : "wait";
if (logo.dataset.motion !== motion) logo.dataset.motion = motion;
const attention = aiState === "paused" || badgeText === "\u5F85\u786E\u8BA4" || ["warning", "error"].includes(headlineState) || courseState === "error";
if (logo.dataset.attention !== String(attention)) logo.dataset.attention = String(attention);
const percent = panel.dataset.coursePercent === "" ? NaN : Number(panel.dataset.coursePercent);
if (Number.isFinite(percent)) {
logo.dataset.ring = "";
const offset = (RING_LENGTH * (1 - percent / 100)).toFixed(2);
if (ringFg.getAttribute("stroke-dashoffset") !== offset) ringFg.setAttribute("stroke-dashoffset", offset);
} else delete logo.dataset.ring;
if (aiCard && aiCard.dataset.ai !== aiState) aiCard.dataset.ai = aiState;
const progress = aiState === "running" ? progressNow : null;
steps.hidden = !progress;
if (progress) {
if (steps.children.length !== progress.total) steps.replaceChildren(...Array.from({ length: progress.total }, () => doc.createElement("i")));
[...steps.children].forEach((step, index) => {
const value = index < progress.current - 1 ? "done" : index === progress.current - 1 ? "current" : "";
if ((step.dataset.step || "") !== value) step.dataset.step = value;
});
}
tryDock();
placeOrigin();
};
const placeOrigin = () => {
const left = parseFloat(panel.style.left), top = parseFloat(panel.style.top), l = logo.getBoundingClientRect();
if (!Number.isFinite(left) || !Number.isFinite(top)) return;
const origin = `${Math.round(l.left + l.width / 2 - left)}px ${Math.round(l.top + l.height / 2 - top)}px`;
if (panel.style.getPropertyValue("--lt-panel-origin") !== origin) panel.style.setProperty("--lt-panel-origin", origin);
};
const catalog = () => {
const tree = doc.getElementById("coursetree");
const rect = tree == null ? void 0 : tree.getBoundingClientRect();
return rect && rect.width > 0 && rect.height > 0 ? rect : null;
};
const dockBesideCatalog = () => {
const cat = catalog();
if (!cat) return false;
const l = logo.getBoundingClientRect();
const overlaps = l.right > cat.left && l.left < cat.right && l.bottom > cat.top && l.top < cat.bottom;
if (!overlaps) return true;
const left = Math.max(8, cat.left - l.width - 16);
logo.style.left = `${left}px`;
logo.style.top = `${Math.max(8, l.top)}px`;
logo.style.right = "auto";
logo.style.bottom = "auto";
return true;
};
let dragged = false, downAt = null;
const tryDock = () => {
if (!dragged) dockBesideCatalog();
};
logo.addEventListener("pointerdown", () => {
const r = logo.getBoundingClientRect();
downAt = `${r.left},${r.top}`;
});
logo.addEventListener("pointerup", () => {
const r = logo.getBoundingClientRect();
if (downAt !== null && downAt !== `${r.left},${r.top}`) dragged = true;
downAt = null;
});
tryDock();
win.addEventListener("resize", () => win.setTimeout(tryDock, 0));
const balance = panel.querySelector("[data-balance]");
let shown = Number(balance == null ? void 0 : balance.textContent), frame = 0, balanceWatch = null;
const rollTo = (from, to) => {
win.cancelAnimationFrame(frame);
const delta = to - from;
if (delta !== 0 && Number.isFinite(from)) {
const chip = node("span", `lt-balance-delta${delta > 0 ? " is-gain" : ""}`);
chip.textContent = `${delta > 0 ? "+" : "\u2212"}${Math.abs(delta)} \u79EF\u5206`;
balance.parentElement.append(chip);
win.setTimeout(() => chip.remove(), 1700);
}
if (reduced() || !Number.isFinite(from)) return;
const started = win.performance.now();
const step = (now) => {
const k = Math.min(1, (now - started) / 900), eased = 1 - Math.pow(1 - k, 3);
balance.textContent = String(Math.round(from + delta * eased));
balanceWatch == null ? void 0 : balanceWatch.takeRecords();
if (k < 1) frame = win.requestAnimationFrame(step);
};
frame = win.requestAnimationFrame(step);
};
if (balance) (balanceWatch = new MutationObserver(() => {
const next = Number(balance.textContent);
if (!Number.isFinite(next) || balance.textContent.trim() === "") {
win.cancelAnimationFrame(frame);
shown = NaN;
return;
}
if (next === shown) return;
const from = shown;
shown = next;
if (Number.isFinite(from)) rollTo(from, next);
})).observe(balance, { childList: true, characterData: true, subtree: true });
const receiptCopy = panel.querySelector(".lt-ux-receipt strong");
if (receiptCopy) new MutationObserver(() => {
const receipt = receiptCopy.closest(".lt-ux-receipt");
receipt.classList.remove("is-new");
void receipt.offsetWidth;
receipt.classList.add("is-new");
}).observe(receiptCopy, { childList: true, characterData: true, subtree: true });
(_b = panel.querySelector('[data-action="refresh-balance"]')) == null ? void 0 : _b.addEventListener("click", (event) => {
const button = event.currentTarget;
button.classList.remove("is-spinning");
void button.offsetWidth;
button.classList.add("is-spinning");
win.setTimeout(() => button.classList.remove("is-spinning"), 800);
});
panel.addEventListener("drip-ux-state", sync);
new MutationObserver(placeOrigin).observe(panel, { attributes: true, attributeFilter: ["class"] });
logo.addEventListener("pointerup", () => win.setTimeout(placeOrigin, 0));
sync();
}
function mountPanelSimple(panel) {
var _a;
const doc = panel.ownerDocument;
const win = doc.defaultView;
const node = (tag, className, text = "") => {
const el = doc.createElement(tag);
el.className = className;
el.textContent = text;
return el;
};
const action = (name) => panel.querySelector(`[data-action="${name}"]`);
const body = panel.querySelector(".cxds-body");
panel.classList.add("lt-v4");
const hero = node("section", "lt-v4-hero");
hero.setAttribute("aria-live", "polite");
const icon = node("span", "lt-v4-icon");
icon.setAttribute("aria-hidden", "true");
const copy = node("div", "lt-v4-copy");
const title = node("b", "lt-v4-title");
const desc = node("small", "lt-v4-desc");
copy.append(title, desc);
const cta = node("button", "lt-button lt-button--primary lt-v4-cta");
cta.type = "button";
cta.hidden = true;
hero.append(icon, copy);
const guide = body.querySelector(".lt-v3-guide");
(guide ? guide.after.bind(guide) : body.prepend.bind(body))(hero);
hero.after(cta);
let ctaAction = null;
cta.addEventListener("click", () => ctaAction == null ? void 0 : ctaAction.click());
const aiToggle = action("ai-toggle");
aiToggle.querySelector("strong").textContent = "AI \u7B54\u9898";
const aiRow = panel.querySelector(".lt-runtime-ai-row");
const aiText = node("small", "lt-v4-ai-text");
(_a = aiToggle.querySelector(".drip-ai-copy")) == null ? void 0 : _a.append(aiText);
const recharge = panel.querySelector(".lt-v3-recharge");
if (recharge) recharge.textContent = "\u5145\u503C";
const drawer = panel.querySelector(".drip-recharge-content");
const paymentHelp = drawer == null ? void 0 : drawer.querySelector(".drip-credit-help");
const paymentHelpHtml = (paymentHelp == null ? void 0 : paymentHelp.innerHTML) || "";
const shopRow = node("div", "lt-v4-shop");
const shopText = node("span", "", "\u8FD8\u6CA1\u6709\u5361\u5BC6\uFF1F\u8BF7\u8054\u7CFB\u5356\u5BB6\u8D2D\u4E70");
const shopButton = node("button", "lt-button lt-button--ghost lt-v4-shop-link", "\u53BB\u5E97\u94FA\u8D2D\u4E70 \u2197");
shopButton.type = "button";
shopButton.hidden = true;
shopRow.append(shopText, shopButton);
drawer == null ? void 0 : drawer.prepend(shopRow);
let shopUrl = "";
shopButton.addEventListener("click", () => {
if (shopUrl) win.open(shopUrl, "_blank", "noopener,noreferrer");
});
const safeShopUrl = (value) => {
try {
const url = new URL(String(value || ""));
return url.protocol === "https:" && !url.username && !url.password ? url.href : "";
} catch (e) {
return "";
}
};
const applyConfig = (config) => {
shopUrl = safeShopUrl(config == null ? void 0 : config.shopUrl);
shopButton.hidden = !shopUrl;
shopText.textContent = shopUrl ? "\u8FD8\u6CA1\u6709\u5361\u5BC6\uFF1F" : "\u8FD8\u6CA1\u6709\u5361\u5BC6\uFF1F\u8BF7\u8054\u7CFB\u5356\u5BB6\u8D2D\u4E70";
if (paymentHelp) paymentHelp.innerHTML = shopUrl ? '\u4ED8\u6B3E\u540E\u5E97\u94FA\u81EA\u52A8\u53D1\u5361\uFF0C\u590D\u5236\u56DE\u6765\u7C98\u8D34\u5151\u6362\uFF1B\u5151\u6362\u53EA\u52A0\u79EF\u5206\uFF0C\u4E0D\u4F1A\u6263\u6B3E\u3002' : paymentHelpHtml;
};
win.addEventListener("drip7boi:config", (event) => applyConfig(event.detail));
if (win.__dripLastConfig) applyConfig(win.__dripLastConfig);
const last = node("p", "lt-v4-last");
const lastText = node("span", "");
last.append(lastText);
const links = node("div", "lt-v4-links");
const billing = panel.querySelector(".lt-billing-details");
const records = panel.querySelector(".lt-record-details");
const link = (label, details) => {
const button = node("button", "lt-v4-link", label);
button.type = "button";
button.setAttribute("aria-expanded", "false");
button.addEventListener("click", () => {
details.open = !details.open;
if (details.open) win.requestAnimationFrame(() => details.scrollIntoView({ block: "nearest", behavior: "smooth" }));
});
details.addEventListener("toggle", () => button.setAttribute("aria-expanded", String(details.open)));
return button;
};
if (billing) billing.open = false;
if (records) records.open = false;
links.append(link("\u8BA1\u8D39\u8BF4\u660E", billing), link("\u5168\u90E8\u8BB0\u5F55", records));
const account = panel.querySelector(".cxds-license-box");
account.after(last, links);
const strip = (text) => String(text || "").replace(/^下一步:/, "").replace(/。$/, "");
const setText = (el, text) => {
if (el.textContent !== text) el.textContent = text;
};
const sync = () => {
var _a2, _b, _c, _d, _e;
const current = panel.querySelector(".drip-current");
const aiState = (current == null ? void 0 : current.dataset.state) || "";
const badge = ((_a2 = current == null ? void 0 : current.querySelector("[data-current-state]")) == null ? void 0 : _a2.textContent) || "";
const currentTitle = ((_b = current == null ? void 0 : current.querySelector("[data-current-title]")) == null ? void 0 : _b.textContent) || "";
const enabled = aiToggle.getAttribute("aria-checked") === "true";
const headline = panel.querySelector(".lt-ux-headline");
const next = strip((_c = panel.querySelector(".lt-ux-next")) == null ? void 0 : _c.textContent);
const courseState = panel.dataset.courseState;
const task = String(((_d = panel.querySelector("[data-current-task]")) == null ? void 0 : _d.textContent) || "").replace(/^当前(章节|测验)\s*·\s*/, "");
const steps = panel.querySelector(".lt-ai-steps");
const progress = steps && !steps.hidden ? `${steps.querySelectorAll('[data-step="done"], [data-step="current"]').length} / ${steps.children.length}` : "";
const personalSpace = win.location.hostname === "i.chaoxing.com" && win.location.pathname === "/base";
const answering = aiState === "running" && (Boolean(progress) || /题/.test(currentTitle));
const home = doc.documentElement.dataset.dripCourseHomeState;
let view;
if (answering) view = ["ai", "\u270E", "AI \u6B63\u5728\u7B54\u9898", progress ? `\u7B2C ${progress} \u9898` : currentTitle || "\u6B63\u5728\u5904\u7406\u672C\u9875\u9898\u76EE"];
else if (badge === "\u5F85\u786E\u8BA4") view = ["warn", "!", "\u7B49\u5F85\u5B66\u4E60\u901A\u786E\u8BA4\u63D0\u4EA4", "\u786E\u8BA4\u524D\u5148\u522B\u79BB\u5F00\u8FD9\u4E2A\u6D4B\u9A8C"];
else if (home === "running") view = ["run", "\u25B6", "\u6B63\u5728\u627E\u8981\u5B66\u7684\u7AE0\u8282", "\u627E\u5230\u540E\u4F1A\u81EA\u52A8\u8FDB\u5165"];
else if (home === "idle") view = ["ok", "\u2713", "\u6CA1\u6709\u5F85\u5B66\u7684\u7AE0\u8282", "\u4EFB\u52A1\u90FD\u5B8C\u6210\u4E86\uFF0C\u6216\u8FD8\u6CA1\u5F00\u653E", "courses", "\u6362\u4E00\u95E8\u8BFE"];
else if (home === "paused") view = ["wait", "\u2016", "\u5DF2\u505C\u6B62\u81EA\u52A8\u8FDB\u5165", "\u70B9\u201C\u5F00\u59CB\u5B66\u4E60\u201D\u7EE7\u7EED"];
else if (aiState === "paused") view = ["warn", "!", (headline == null ? void 0 : headline.textContent) || "AI \u5DF2\u6682\u505C", next || currentTitle];
else if (courseState === "running") view = ["run", "\u25B6", "\u6B63\u5728\u5237\u8BFE", task || "\u4FDD\u6301\u9875\u9762\u6253\u5F00\u5373\u53EF"];
else if (courseState === "done") view = ["ok", "\u2713", "\u8FD9\u95E8\u8BFE\u5DF2\u5B8C\u6210", "\u53EF\u4EE5\u6362\u4E00\u95E8\u8BFE\u7EE7\u7EED", "courses", "\u6362\u4E00\u95E8\u8BFE"];
else if (courseState === "error") view = ["warn", "!", (headline == null ? void 0 : headline.textContent) || "\u8BFE\u7A0B\u4EFB\u52A1\u6CA1\u5B8C\u6210", next];
else if (personalSpace) view = ["wait", "\u2197", "\u5148\u9009\u4E00\u95E8\u8BFE\u7A0B", "\u6253\u5F00\u8BFE\u7A0B\u540E\u4F1A\u81EA\u52A8\u5237\u89C6\u9891\u3001\u8DF3\u7AE0\u8282", "courses", "\u53BB\u9009\u8BFE\u7A0B"];
else if ((headline == null ? void 0 : headline.dataset.state) === "warning") view = ["warn", "!", headline.textContent, next];
else if (courseState === "waiting") view = ["wait", "\u2026", task ? "\u6B63\u5728\u68C0\u67E5\u672C\u8282\u4EFB\u52A1" : (headline == null ? void 0 : headline.textContent) || "\u6B63\u5728\u68C0\u67E5\u8BFE\u7A0B\u4EFB\u52A1", task || "\u4FDD\u6301\u9875\u9762\u6253\u5F00\uFF0C\u4F1A\u81EA\u52A8\u5904\u7406"];
else if (/结果页/.test((headline == null ? void 0 : headline.textContent) || "")) view = ["ok", "\u2713", "\u8FD9\u662F\u7ED3\u679C\u9875", "\u4E0D\u4F1A\u91CD\u590D\u4F5C\u7B54"];
else view = enabled ? ["wait", "\u270E", "\u7B49\u5F85\u6D4B\u9A8C\u6216\u4F5C\u4E1A", "\u6253\u5F00\u6D4B\u9A8C\u6216\u4F5C\u4E1A\uFF0CAI \u4F1A\u81EA\u52A8\u4F5C\u7B54"] : ["wait", "\u2013", "AI \u5DF2\u5173\u95ED", "\u53EF\u4EE5\u81EA\u5DF1\u4F5C\u7B54\uFF0C\u5237\u8BFE\u7167\u5E38\u8FD0\u884C"];
const [tone, mark, heading, sub, ctaName, ctaLabel] = view;
if (hero.dataset.tone !== tone) hero.dataset.tone = tone;
setText(icon, mark);
setText(title, heading);
setText(desc, sub || "");
ctaAction = ctaName ? action(ctaName) : null;
cta.hidden = !ctaAction;
const ctaOn = String(!cta.hidden);
if (panel.dataset.ltCta !== ctaOn) panel.dataset.ltCta = ctaOn;
if (ctaLabel) setText(cta, ctaLabel);
setText(aiText, !enabled ? "\u5DF2\u5173\u95ED\uFF0C\u53EA\u5237\u8BFE" : answering ? progress ? `\u7B2C ${progress} \u9898` : "\u7B54\u9898\u4E2D" : "\u9047\u5230\u6D4B\u9A8C\u81EA\u52A8\u4F5C\u7B54");
const preview = ((_e = panel.querySelector(".lt-record-preview")) == null ? void 0 : _e.textContent) || "";
setText(lastText, preview && !/暂无/.test(preview) ? preview : "\u8FD8\u6CA1\u6709\u8BB0\u5F55");
last.dataset.empty = String(!preview || /暂无/.test(preview));
};
panel.addEventListener("drip-ux-state", sync);
sync();
}
var INVITE_CODE = /^YQ[A-HJ-NP-Z2-9]{4}$/i;
var NUDGE_KEY = "drip7boi:invite-nudge";
var NUDGE_EVERY_MS = 3 * 24 * 60 * 6e4;
var NUDGE_AFTER_ANSWERS = 10;
var NUDGE_QUIET_MS = 5e3;
function mountPanelInvite(panel, callbacks = {}) {
var _a, _b, _c, _d;
const doc = panel.ownerDocument;
const win = doc.defaultView;
const node = (tag, className, text = "") => {
const el = doc.createElement(tag);
if (className) el.className = className;
if (text) el.textContent = text;
return el;
};
const button = (className, text) => {
const el = node("button", className, text);
el.type = "button";
return el;
};
const links = panel.querySelector(".lt-v4-links");
const account = panel.querySelector(".cxds-license-box");
const recharge = panel.querySelector(".drip-recharge");
const input = panel.querySelector("#cxds-card-code");
const redeem = panel.querySelector('[data-action="redeem-card"]');
if (!links || !account || !input || !redeem || !callbacks.getInvite) return;
let info = null;
let loading = null;
const entry = button("lt-v4-link lt-invite-entry", "\u9080\u8BF7\u540C\u5B66");
const badge = node("span", "lt-invite-badge");
entry.append(badge);
entry.hidden = true;
entry.setAttribute("aria-expanded", "false");
links.append(entry);
const card = node("section", "lt-invite-card");
card.hidden = true;
card.id = "lt-invite-card";
entry.setAttribute("aria-controls", card.id);
const head = node("div", "lt-invite-head");
head.append(node("b", "", "\u9080\u8BF7\u540C\u5B66\uFF0C\u4E00\u8D77\u7701\u65F6\u95F4"));
const perks = node("div", "lt-invite-perks");
const perk = (who) => {
const box = node("div", "lt-invite-perk");
const value = node("strong");
const note = node("span");
box.append(node("small", "", who), value, note);
perks.append(box);
return { value, note };
};
const friendPerk = perk("\u540C\u5B66");
const selfPerk = perk("\u4F60");
const ticket = node("div", "lt-invite-ticket");
const codeBox = node("div", "lt-invite-code");
const codeText = node("code");
codeBox.append(node("small", "", "\u6211\u7684\u9080\u8BF7\u7801"), codeText);
const copyCode = button("lt-invite-copy-code", "\u590D\u5236\u7801");
ticket.append(codeBox, copyCode);
const share = button("lt-button lt-button--primary lt-invite-share", "\u590D\u5236\u9080\u8BF7\u8BDD\u672F\uFF0C\u53D1\u7ED9\u540C\u5B66");
const stats = node("div", "lt-invite-stats");
const stat = (label) => {
const box = node("div");
const value = node("strong", "", "0");
box.append(value, node("small", "", label));
stats.append(box);
return value;
};
const invitedValue = stat("\u5DF2\u9080\u8BF7");
const activatedValue = stat("\u5DF2\u751F\u6548");
const earnedValue = stat("\u5171\u5F97\u79EF\u5206");
earnedValue.classList.add("is-gold");
const progress = node("div", "lt-invite-progress");
const hint = node("p", "lt-invite-hint");
const toast = node("p", "lt-invite-toast");
toast.setAttribute("role", "status");
card.append(head, perks, ticket, share, stats, progress, hint, toast);
links.after(card);
const setOpen = (open) => {
card.hidden = !open;
entry.setAttribute("aria-expanded", String(open));
if (open) {
load(true);
win.requestAnimationFrame(() => card.scrollIntoView({ block: "nearest", behavior: "smooth" }));
}
};
entry.addEventListener("click", () => setOpen(card.hidden));
const bindStrip = node("div", "lt-v4-shop lt-invite-bind");
const bindText = node("span");
const bindLink = button("lt-button lt-button--ghost lt-v4-shop-link", "\u586B\u5199 \u203A");
bindStrip.append(bindText, bindLink);
bindStrip.hidden = true;
(_a = account.querySelector(".lt-runtime-account-row") || account.firstElementChild) == null ? void 0 : _a.after(bindStrip);
bindLink.addEventListener("click", () => {
var _a2;
if (recharge && !recharge.open) (_a2 = panel.querySelector('[data-action="show-recharge"]')) == null ? void 0 : _a2.click();
if (recharge) recharge.open = true;
win.requestAnimationFrame(() => input.focus());
});
recharge == null ? void 0 : recharge.addEventListener("toggle", () => {
if (info) bindStrip.hidden = !(info.enabled && info.canBind) || recharge.open;
});
const receipt = node("p", "lt-invite-receipt");
receipt.hidden = true;
bindStrip.after(receipt);
const fieldLabel = (_b = input.closest("label")) == null ? void 0 : _b.querySelector("span");
const kind = node("span", "lt-invite-kind", "\u9080\u8BF7\u7801");
kind.hidden = true;
fieldLabel == null ? void 0 : fieldLabel.append(kind);
const codeHint = node("p", "lt-invite-hint lt-invite-code-hint");
codeHint.hidden = true;
(_c = input.closest("label")) == null ? void 0 : _c.after(codeHint);
const redeemLabel = redeem.textContent;
const syncInput = () => {
var _a2;
const isInvite = INVITE_CODE.test(input.value.trim());
input.classList.toggle("lt-invite-input", isInvite);
codeHint.classList.remove("is-error");
kind.hidden = !isInvite;
codeHint.hidden = !isInvite;
const bonus = (_a2 = info == null ? void 0 : info.inviteeBonus) != null ? _a2 : 50;
codeHint.textContent = (info == null ? void 0 : info.canBind) === false ? "\u4F60\u5DF2\u7ECF\u586B\u8FC7\u9080\u8BF7\u7801\uFF0C\u6216\u6CE8\u518C\u5DF2\u8D85\u8FC7 7 \u5929\uFF0C\u4E0D\u80FD\u518D\u586B\u4E86\u3002" : `\u586B\u540C\u5B66\u7684\u9080\u8BF7\u7801\uFF0C\u4F60\u7ACB\u5373\u591A\u5F97 ${bonus} \u79EF\u5206\u3002\u6BCF\u4EBA\u53EA\u80FD\u586B\u4E00\u6B21\u3002`;
syncLabel();
};
const syncLabel = () => {
var _a2;
const isInvite = INVITE_CODE.test(input.value.trim());
redeem.textContent = isInvite ? `\u9886\u53D6 ${(_a2 = info == null ? void 0 : info.inviteeBonus) != null ? _a2 : 50} \u79EF\u5206` : redeemLabel;
};
input.addEventListener("input", syncInput);
new win.MutationObserver(() => {
if (!redeem.hasAttribute("aria-busy")) syncLabel();
}).observe(redeem, { attributes: true, attributeFilter: ["aria-busy"] });
const render = () => {
var _a2;
if (!info) return;
entry.hidden = !info.enabled;
if (!info.enabled) card.hidden = true;
badge.textContent = `+${info.inviterBonus} \u79EF\u5206`;
friendPerk.value.textContent = `+${info.inviteeBonus} \u79EF\u5206`;
friendPerk.note.textContent = "\u586B\u4F60\u7684\u7801\u7ACB\u5373\u5230\u8D26";
selfPerk.value.textContent = `+${info.inviterBonus} \u79EF\u5206`;
selfPerk.note.textContent = `\u540C\u5B66\u7B54\u6EE1 ${info.activateAnswers} \u9898\u540E`;
codeText.textContent = info.code;
invitedValue.textContent = String(info.invited);
activatedValue.textContent = String(info.activated);
earnedValue.textContent = String(info.earned);
progress.replaceChildren(...(info.pending || []).map((row) => {
const line = node("div", "lt-invite-row");
const bar = node("i", "lt-invite-bar");
const fill = node("b");
fill.style.width = `${Math.round(row.answers / info.activateAnswers * 100)}%`;
bar.append(fill);
line.append(node("span", "", row.label), bar, node("em", "", `${row.answers}/${info.activateAnswers}`));
return line;
}));
hint.textContent = info.purchasePercent > 0 ? `\u540C\u5B66\u9996\u6B21\u4E70\u5361\uFF0C\u4F60\u518D\u5F97\u4ED6\u6240\u4E70\u79EF\u5206\u7684 ${info.purchasePercent}%` : "";
bindStrip.hidden = !(info.enabled && info.canBind) || Boolean(recharge == null ? void 0 : recharge.open);
bindText.textContent = `\u540C\u5B66\u7ED9\u4E86\u9080\u8BF7\u7801\uFF1F\u591A\u5F97 ${info.inviteeBonus} \u79EF\u5206`;
if (info.canBind && ((_a2 = fieldLabel == null ? void 0 : fieldLabel.firstChild) == null ? void 0 : _a2.nodeType) === 3) fieldLabel.firstChild.nodeValue = "\u5361\u5BC6\u6216\u9080\u8BF7\u7801";
if (info.canBind) input.placeholder = "\u7C98\u8D34\u5361\u5BC6\uFF0C\u6216\u586B\u540C\u5B66\u7684\u9080\u8BF7\u7801";
syncInput();
};
const load = (force = false) => {
if (loading || info && !force) return loading;
if (callbacks.hasLicense && !callbacks.hasLicense()) return null;
loading = Promise.resolve(callbacks.getInvite()).then((data) => {
if (data == null ? void 0 : data.code) {
info = data;
render();
}
}).catch(() => {
}).finally(() => {
loading = null;
});
return loading;
};
const showToast = (text) => {
toast.textContent = text;
toast.classList.add("is-on");
win.clearTimeout(toast.timer);
toast.timer = win.setTimeout(() => toast.classList.remove("is-on"), 1800);
};
const copy = async (text, target, doneText) => {
let ok = false;
try {
await win.navigator.clipboard.writeText(text);
ok = true;
} catch (e) {
const area = node("textarea");
area.value = text;
area.setAttribute("readonly", "");
area.style.position = "fixed";
area.style.opacity = "0";
doc.body.append(area);
area.select();
try {
ok = doc.execCommand("copy");
} catch (e2) {
ok = false;
}
area.remove();
}
if (!ok) {
card.hidden = false;
const range = doc.createRange();
range.selectNodeContents(codeText);
const selection = win.getSelection();
selection.removeAllRanges();
selection.addRange(range);
showToast("\u6D4F\u89C8\u5668\u4E0D\u8BA9\u81EA\u52A8\u590D\u5236\uFF0C\u9080\u8BF7\u7801\u5DF2\u9009\u4E2D\uFF0C\u6309 Ctrl+C \u590D\u5236");
return false;
}
const label = target.textContent;
target.classList.add("is-done");
target.textContent = doneText;
win.setTimeout(() => {
target.classList.remove("is-done");
target.textContent = label;
}, 1600);
return true;
};
copyCode.addEventListener("click", async () => {
if (info && await copy(info.code, copyCode, "\u5DF2\u590D\u5236")) showToast("\u9080\u8BF7\u7801\u5DF2\u590D\u5236");
});
share.addEventListener("click", async () => {
if (info && await copy(info.shareText, share, "\u5DF2\u590D\u5236 \u2713")) showToast("\u5DF2\u590D\u5236\uFF0C\u53BB\u73ED\u7EA7\u7FA4\u7C98\u8D34\u5427");
});
panel.addEventListener("drip-invite-failed", (event) => {
var _a2;
codeHint.hidden = false;
codeHint.classList.add("is-error");
codeHint.textContent = ((_a2 = event.detail) == null ? void 0 : _a2.message) || "\u586B\u5199\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5";
});
panel.addEventListener("drip-invite-bound", (event) => {
var _a2;
const points = Number(((_a2 = event.detail) == null ? void 0 : _a2.inviteePoints) || 0);
receipt.hidden = false;
receipt.textContent = points > 0 ? `\u5DF2\u7ED1\u5B9A\u540C\u5B66\u7684\u9080\u8BF7\uFF0C\u591A\u5F97 ${points} \u79EF\u5206` : "\u5DF2\u7ED1\u5B9A\u540C\u5B66\u7684\u9080\u8BF7";
bindStrip.hidden = true;
if (recharge) recharge.open = false;
load(true);
});
const nudge = node("section", "lt-invite-nudge");
nudge.hidden = true;
const close = button("lt-invite-nudge-close", "\xD7");
close.setAttribute("aria-label", "\u5173\u95ED\u9080\u8BF7\u63D0\u793A");
const nudgeTitle = node("b", "", "\u540C\u5B66\u4E5F\u5728\u8D76\u8FD9\u4EFD\u4F5C\u4E1A\uFF1F");
const nudgeText = node("p");
const nudgeActions = node("div", "lt-invite-nudge-actions");
const nudgeCopy = button("lt-button lt-button--primary lt-invite-nudge-copy", "\u590D\u5236\u9080\u8BF7\u8BDD\u672F");
const nudgeCode = node("small");
nudgeActions.append(nudgeCopy, nudgeCode);
nudge.append(close, nudgeTitle, nudgeText, nudgeActions);
(_d = panel.querySelector(".lt-v4-cta") || panel.querySelector(".lt-v4-hero")) == null ? void 0 : _d.after(nudge);
const readNudge = () => {
try {
return JSON.parse(win.localStorage.getItem(NUDGE_KEY) || "{}");
} catch (e) {
return {};
}
};
const writeNudge = (value) => {
try {
win.localStorage.setItem(NUDGE_KEY, JSON.stringify(value));
} catch (e) {
}
};
let charged = 0;
let quietTimer = 0;
const maybeNudge = async () => {
const state = readNudge();
if ((state.dismissed || 0) >= 2 || Date.now() - (state.lastShown || 0) < NUDGE_EVERY_MS) return;
await load();
if (!(info == null ? void 0 : info.enabled)) return;
nudgeText.textContent = `\u53D1\u7ED9\u4ED6\uFF1A\u4ED6\u591A\u5F97 ${info.inviteeBonus} \u79EF\u5206\uFF0C\u4F60\u5F97 ${info.inviterBonus} \u79EF\u5206`;
nudgeCode.textContent = `\u9080\u8BF7\u7801 ${info.code}`;
nudge.hidden = false;
writeNudge({ ...state, lastShown: Date.now() });
};
win.addEventListener("drip7boi:ai-charged", () => {
charged += 1;
win.clearTimeout(quietTimer);
if (charged >= NUDGE_AFTER_ANSWERS) quietTimer = win.setTimeout(maybeNudge, NUDGE_QUIET_MS);
});
close.addEventListener("click", () => {
nudge.hidden = true;
const state = readNudge();
writeNudge({ ...state, dismissed: (state.dismissed || 0) + 1 });
});
nudgeCopy.addEventListener("click", async () => {
if (info && await copy(info.shareText, nudgeCopy, "\u5DF2\u590D\u5236 \u2713")) {
nudge.hidden = true;
}
});
win.addEventListener("drip7boi:account-ready", () => load(true));
win.addEventListener("drip7boi:balance", () => {
if (!info) load();
});
load();
}
var qrcode = function(typeNumber, errorCorrectionLevel) {
const PAD0 = 236;
const PAD1 = 17;
let _typeNumber = typeNumber;
const _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];
let _modules = null;
let _moduleCount = 0;
let _dataCache = null;
const _dataList = [];
const _this = {};
const makeImpl = function(test, maskPattern) {
_moduleCount = _typeNumber * 4 + 17;
_modules = (function(moduleCount) {
const modules = new Array(moduleCount);
for (let row = 0; row < moduleCount; row += 1) {
modules[row] = new Array(moduleCount);
for (let col = 0; col < moduleCount; col += 1) {
modules[row][col] = null;
}
}
return modules;
})(_moduleCount);
setupPositionProbePattern(0, 0);
setupPositionProbePattern(_moduleCount - 7, 0);
setupPositionProbePattern(0, _moduleCount - 7);
setupPositionAdjustPattern();
setupTimingPattern();
setupTypeInfo(test, maskPattern);
if (_typeNumber >= 7) {
setupTypeNumber(test);
}
if (_dataCache == null) {
_dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);
}
mapData(_dataCache, maskPattern);
};
const setupPositionProbePattern = function(row, col) {
for (let r = -1; r <= 7; r += 1) {
if (row + r <= -1 || _moduleCount <= row + r) continue;
for (let c = -1; c <= 7; c += 1) {
if (col + c <= -1 || _moduleCount <= col + c) continue;
if (0 <= r && r <= 6 && (c == 0 || c == 6) || 0 <= c && c <= 6 && (r == 0 || r == 6) || 2 <= r && r <= 4 && 2 <= c && c <= 4) {
_modules[row + r][col + c] = true;
} else {
_modules[row + r][col + c] = false;
}
}
}
};
const getBestMaskPattern = function() {
let minLostPoint = 0;
let pattern = 0;
for (let i = 0; i < 8; i += 1) {
makeImpl(true, i);
const lostPoint = QRUtil.getLostPoint(_this);
if (i == 0 || minLostPoint > lostPoint) {
minLostPoint = lostPoint;
pattern = i;
}
}
return pattern;
};
const setupTimingPattern = function() {
for (let r = 8; r < _moduleCount - 8; r += 1) {
if (_modules[r][6] != null) {
continue;
}
_modules[r][6] = r % 2 == 0;
}
for (let c = 8; c < _moduleCount - 8; c += 1) {
if (_modules[6][c] != null) {
continue;
}
_modules[6][c] = c % 2 == 0;
}
};
const setupPositionAdjustPattern = function() {
const pos = QRUtil.getPatternPosition(_typeNumber);
for (let i = 0; i < pos.length; i += 1) {
for (let j = 0; j < pos.length; j += 1) {
const row = pos[i];
const col = pos[j];
if (_modules[row][col] != null) {
continue;
}
for (let r = -2; r <= 2; r += 1) {
for (let c = -2; c <= 2; c += 1) {
if (r == -2 || r == 2 || c == -2 || c == 2 || r == 0 && c == 0) {
_modules[row + r][col + c] = true;
} else {
_modules[row + r][col + c] = false;
}
}
}
}
}
};
const setupTypeNumber = function(test) {
const bits = QRUtil.getBCHTypeNumber(_typeNumber);
for (let i = 0; i < 18; i += 1) {
const mod = !test && (bits >> i & 1) == 1;
_modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;
}
for (let i = 0; i < 18; i += 1) {
const mod = !test && (bits >> i & 1) == 1;
_modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;
}
};
const setupTypeInfo = function(test, maskPattern) {
const data = _errorCorrectionLevel << 3 | maskPattern;
const bits = QRUtil.getBCHTypeInfo(data);
for (let i = 0; i < 15; i += 1) {
const mod = !test && (bits >> i & 1) == 1;
if (i < 6) {
_modules[i][8] = mod;
} else if (i < 8) {
_modules[i + 1][8] = mod;
} else {
_modules[_moduleCount - 15 + i][8] = mod;
}
}
for (let i = 0; i < 15; i += 1) {
const mod = !test && (bits >> i & 1) == 1;
if (i < 8) {
_modules[8][_moduleCount - i - 1] = mod;
} else if (i < 9) {
_modules[8][15 - i - 1 + 1] = mod;
} else {
_modules[8][15 - i - 1] = mod;
}
}
_modules[_moduleCount - 8][8] = !test;
};
const mapData = function(data, maskPattern) {
let inc = -1;
let row = _moduleCount - 1;
let bitIndex = 7;
let byteIndex = 0;
const maskFunc = QRUtil.getMaskFunction(maskPattern);
for (let col = _moduleCount - 1; col > 0; col -= 2) {
if (col == 6) col -= 1;
while (true) {
for (let c = 0; c < 2; c += 1) {
if (_modules[row][col - c] == null) {
let dark = false;
if (byteIndex < data.length) {
dark = (data[byteIndex] >>> bitIndex & 1) == 1;
}
const mask = maskFunc(row, col - c);
if (mask) {
dark = !dark;
}
_modules[row][col - c] = dark;
bitIndex -= 1;
if (bitIndex == -1) {
byteIndex += 1;
bitIndex = 7;
}
}
}
row += inc;
if (row < 0 || _moduleCount <= row) {
row -= inc;
inc = -inc;
break;
}
}
}
};
const createBytes = function(buffer, rsBlocks) {
let offset = 0;
let maxDcCount = 0;
let maxEcCount = 0;
const dcdata = new Array(rsBlocks.length);
const ecdata = new Array(rsBlocks.length);
for (let r = 0; r < rsBlocks.length; r += 1) {
const dcCount = rsBlocks[r].dataCount;
const ecCount = rsBlocks[r].totalCount - dcCount;
maxDcCount = Math.max(maxDcCount, dcCount);
maxEcCount = Math.max(maxEcCount, ecCount);
dcdata[r] = new Array(dcCount);
for (let i = 0; i < dcdata[r].length; i += 1) {
dcdata[r][i] = 255 & buffer.getBuffer()[i + offset];
}
offset += dcCount;
const rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);
const rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);
const modPoly = rawPoly.mod(rsPoly);
ecdata[r] = new Array(rsPoly.getLength() - 1);
for (let i = 0; i < ecdata[r].length; i += 1) {
const modIndex = i + modPoly.getLength() - ecdata[r].length;
ecdata[r][i] = modIndex >= 0 ? modPoly.getAt(modIndex) : 0;
}
}
let totalCodeCount = 0;
for (let i = 0; i < rsBlocks.length; i += 1) {
totalCodeCount += rsBlocks[i].totalCount;
}
const data = new Array(totalCodeCount);
let index = 0;
for (let i = 0; i < maxDcCount; i += 1) {
for (let r = 0; r < rsBlocks.length; r += 1) {
if (i < dcdata[r].length) {
data[index] = dcdata[r][i];
index += 1;
}
}
}
for (let i = 0; i < maxEcCount; i += 1) {
for (let r = 0; r < rsBlocks.length; r += 1) {
if (i < ecdata[r].length) {
data[index] = ecdata[r][i];
index += 1;
}
}
}
return data;
};
const createData = function(typeNumber2, errorCorrectionLevel2, dataList) {
const rsBlocks = QRRSBlock.getRSBlocks(typeNumber2, errorCorrectionLevel2);
const buffer = qrBitBuffer();
for (let i = 0; i < dataList.length; i += 1) {
const data = dataList[i];
buffer.put(data.getMode(), 4);
buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber2));
data.write(buffer);
}
let totalDataCount = 0;
for (let i = 0; i < rsBlocks.length; i += 1) {
totalDataCount += rsBlocks[i].dataCount;
}
if (buffer.getLengthInBits() > totalDataCount * 8) {
throw "code length overflow. (" + buffer.getLengthInBits() + ">" + totalDataCount * 8 + ")";
}
if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {
buffer.put(0, 4);
}
while (buffer.getLengthInBits() % 8 != 0) {
buffer.putBit(false);
}
while (true) {
if (buffer.getLengthInBits() >= totalDataCount * 8) {
break;
}
buffer.put(PAD0, 8);
if (buffer.getLengthInBits() >= totalDataCount * 8) {
break;
}
buffer.put(PAD1, 8);
}
return createBytes(buffer, rsBlocks);
};
_this.addData = function(data, mode) {
mode = mode || "Byte";
let newData = null;
switch (mode) {
case "Numeric":
newData = qrNumber(data);
break;
case "Alphanumeric":
newData = qrAlphaNum(data);
break;
case "Byte":
newData = qr8BitByte(data);
break;
case "Kanji":
newData = qrKanji(data);
break;
default:
throw "mode:" + mode;
}
_dataList.push(newData);
_dataCache = null;
};
_this.isDark = function(row, col) {
if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {
throw row + "," + col;
}
return _modules[row][col];
};
_this.getModuleCount = function() {
return _moduleCount;
};
_this.make = function() {
if (_typeNumber < 1) {
let typeNumber2 = 1;
for (; typeNumber2 < 40; typeNumber2++) {
const rsBlocks = QRRSBlock.getRSBlocks(typeNumber2, _errorCorrectionLevel);
const buffer = qrBitBuffer();
for (let i = 0; i < _dataList.length; i++) {
const data = _dataList[i];
buffer.put(data.getMode(), 4);
buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber2));
data.write(buffer);
}
let totalDataCount = 0;
for (let i = 0; i < rsBlocks.length; i++) {
totalDataCount += rsBlocks[i].dataCount;
}
if (buffer.getLengthInBits() <= totalDataCount * 8) {
break;
}
}
_typeNumber = typeNumber2;
}
makeImpl(false, getBestMaskPattern());
};
_this.createTableTag = function(cellSize, margin) {
cellSize = cellSize || 2;
margin = typeof margin == "undefined" ? cellSize * 4 : margin;
let qrHtml = "";
qrHtml += '';
qrHtml += "";
for (let r = 0; r < _this.getModuleCount(); r += 1) {
qrHtml += "";
for (let c = 0; c < _this.getModuleCount(); c += 1) {
qrHtml += ' | ';
}
qrHtml += "
";
}
qrHtml += "";
qrHtml += "
";
return qrHtml;
};
_this.createSvgTag = function(cellSize, margin, alt, title) {
let opts = {};
if (typeof arguments[0] == "object") {
opts = arguments[0];
cellSize = opts.cellSize;
margin = opts.margin;
alt = opts.alt;
title = opts.title;
}
cellSize = cellSize || 2;
margin = typeof margin == "undefined" ? cellSize * 4 : margin;
alt = typeof alt === "string" ? { text: alt } : alt || {};
alt.text = alt.text || null;
alt.id = alt.text ? alt.id || "qrcode-description" : null;
title = typeof title === "string" ? { text: title } : title || {};
title.text = title.text || null;
title.id = title.text ? title.id || "qrcode-title" : null;
const size = _this.getModuleCount() * cellSize + margin * 2;
let c, mc, r, mr, qrSvg = "", rect;
rect = "l" + cellSize + ",0 0," + cellSize + " -" + cellSize + ",0 0,-" + cellSize + "z ";
qrSvg += '";
return qrSvg;
};
_this.createDataURL = function(cellSize, margin) {
cellSize = cellSize || 2;
margin = typeof margin == "undefined" ? cellSize * 4 : margin;
const size = _this.getModuleCount() * cellSize + margin * 2;
const min = margin;
const max = size - margin;
return createDataURL(size, size, function(x, y) {
if (min <= x && x < max && min <= y && y < max) {
const c = Math.floor((x - min) / cellSize);
const r = Math.floor((y - min) / cellSize);
return _this.isDark(r, c) ? 0 : 1;
} else {
return 1;
}
});
};
_this.createImgTag = function(cellSize, margin, alt) {
cellSize = cellSize || 2;
margin = typeof margin == "undefined" ? cellSize * 4 : margin;
const size = _this.getModuleCount() * cellSize + margin * 2;
let img = "";
img += "
";
return img;
};
const escapeXml = function(s) {
let escaped = "";
for (let i = 0; i < s.length; i += 1) {
const c = s.charAt(i);
switch (c) {
case "<":
escaped += "<";
break;
case ">":
escaped += ">";
break;
case "&":
escaped += "&";
break;
case '"':
escaped += """;
break;
default:
escaped += c;
break;
}
}
return escaped;
};
const _createHalfASCII = function(margin) {
const cellSize = 1;
margin = typeof margin == "undefined" ? cellSize * 2 : margin;
const size = _this.getModuleCount() * cellSize + margin * 2;
const min = margin;
const max = size - margin;
let y, x, r1, r2, p;
const blocks = {
"\u2588\u2588": "\u2588",
"\u2588 ": "\u2580",
" \u2588": "\u2584",
" ": " "
};
const blocksLastLineNoMargin = {
"\u2588\u2588": "\u2580",
"\u2588 ": "\u2580",
" \u2588": " ",
" ": " "
};
let ascii = "";
for (y = 0; y < size; y += 2) {
r1 = Math.floor((y - min) / cellSize);
r2 = Math.floor((y + 1 - min) / cellSize);
for (x = 0; x < size; x += 1) {
p = "\u2588";
if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {
p = " ";
}
if (min <= x && x < max && min <= y + 1 && y + 1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {
p += " ";
} else {
p += "\u2588";
}
ascii += margin < 1 && y + 1 >= max ? blocksLastLineNoMargin[p] : blocks[p];
}
ascii += "\n";
}
if (size % 2 && margin > 0) {
return ascii.substring(0, ascii.length - size - 1) + Array(size + 1).join("\u2580");
}
return ascii.substring(0, ascii.length - 1);
};
_this.createASCII = function(cellSize, margin) {
cellSize = cellSize || 1;
if (cellSize < 2) {
return _createHalfASCII(margin);
}
cellSize -= 1;
margin = typeof margin == "undefined" ? cellSize * 2 : margin;
const size = _this.getModuleCount() * cellSize + margin * 2;
const min = margin;
const max = size - margin;
let y, x, r, p;
const white = Array(cellSize + 1).join("\u2588\u2588");
const black = Array(cellSize + 1).join(" ");
let ascii = "";
let line = "";
for (y = 0; y < size; y += 1) {
r = Math.floor((y - min) / cellSize);
line = "";
for (x = 0; x < size; x += 1) {
p = 1;
if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {
p = 0;
}
line += p ? white : black;
}
for (r = 0; r < cellSize; r += 1) {
ascii += line + "\n";
}
}
return ascii.substring(0, ascii.length - 1);
};
_this.renderTo2dContext = function(context, cellSize) {
cellSize = cellSize || 2;
const length = _this.getModuleCount();
for (let row = 0; row < length; row++) {
for (let col = 0; col < length; col++) {
context.fillStyle = _this.isDark(row, col) ? "black" : "white";
context.fillRect(col * cellSize, row * cellSize, cellSize, cellSize);
}
}
};
return _this;
};
qrcode.stringToBytes = function(s) {
const bytes = [];
for (let i = 0; i < s.length; i += 1) {
const c = s.charCodeAt(i);
bytes.push(c & 255);
}
return bytes;
};
qrcode.createStringToBytes = function(unicodeData, numChars) {
const unicodeMap = (function() {
const bin = base64DecodeInputStream(unicodeData);
const read = function() {
const b = bin.read();
if (b == -1) throw "eof";
return b;
};
let count = 0;
const unicodeMap2 = {};
while (true) {
const b0 = bin.read();
if (b0 == -1) break;
const b1 = read();
const b2 = read();
const b3 = read();
const k = String.fromCharCode(b0 << 8 | b1);
const v = b2 << 8 | b3;
unicodeMap2[k] = v;
count += 1;
}
if (count != numChars) {
throw count + " != " + numChars;
}
return unicodeMap2;
})();
const unknownChar = "?".charCodeAt(0);
return function(s) {
const bytes = [];
for (let i = 0; i < s.length; i += 1) {
const c = s.charCodeAt(i);
if (c < 128) {
bytes.push(c);
} else {
const b = unicodeMap[s.charAt(i)];
if (typeof b == "number") {
if ((b & 255) == b) {
bytes.push(b);
} else {
bytes.push(b >>> 8);
bytes.push(b & 255);
}
} else {
bytes.push(unknownChar);
}
}
}
return bytes;
};
};
var QRMode = {
MODE_NUMBER: 1 << 0,
MODE_ALPHA_NUM: 1 << 1,
MODE_8BIT_BYTE: 1 << 2,
MODE_KANJI: 1 << 3
};
var QRErrorCorrectionLevel = {
L: 1,
M: 0,
Q: 3,
H: 2
};
var QRMaskPattern = {
PATTERN000: 0,
PATTERN001: 1,
PATTERN010: 2,
PATTERN011: 3,
PATTERN100: 4,
PATTERN101: 5,
PATTERN110: 6,
PATTERN111: 7
};
var QRUtil = (function() {
const PATTERN_POSITION_TABLE = [
[],
[6, 18],
[6, 22],
[6, 26],
[6, 30],
[6, 34],
[6, 22, 38],
[6, 24, 42],
[6, 26, 46],
[6, 28, 50],
[6, 30, 54],
[6, 32, 58],
[6, 34, 62],
[6, 26, 46, 66],
[6, 26, 48, 70],
[6, 26, 50, 74],
[6, 30, 54, 78],
[6, 30, 56, 82],
[6, 30, 58, 86],
[6, 34, 62, 90],
[6, 28, 50, 72, 94],
[6, 26, 50, 74, 98],
[6, 30, 54, 78, 102],
[6, 28, 54, 80, 106],
[6, 32, 58, 84, 110],
[6, 30, 58, 86, 114],
[6, 34, 62, 90, 118],
[6, 26, 50, 74, 98, 122],
[6, 30, 54, 78, 102, 126],
[6, 26, 52, 78, 104, 130],
[6, 30, 56, 82, 108, 134],
[6, 34, 60, 86, 112, 138],
[6, 30, 58, 86, 114, 142],
[6, 34, 62, 90, 118, 146],
[6, 30, 54, 78, 102, 126, 150],
[6, 24, 50, 76, 102, 128, 154],
[6, 28, 54, 80, 106, 132, 158],
[6, 32, 58, 84, 110, 136, 162],
[6, 26, 54, 82, 110, 138, 166],
[6, 30, 58, 86, 114, 142, 170]
];
const G15 = 1 << 10 | 1 << 8 | 1 << 5 | 1 << 4 | 1 << 2 | 1 << 1 | 1 << 0;
const G18 = 1 << 12 | 1 << 11 | 1 << 10 | 1 << 9 | 1 << 8 | 1 << 5 | 1 << 2 | 1 << 0;
const G15_MASK = 1 << 14 | 1 << 12 | 1 << 10 | 1 << 4 | 1 << 1;
const _this = {};
const getBCHDigit = function(data) {
let digit = 0;
while (data != 0) {
digit += 1;
data >>>= 1;
}
return digit;
};
_this.getBCHTypeInfo = function(data) {
let d = data << 10;
while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {
d ^= G15 << getBCHDigit(d) - getBCHDigit(G15);
}
return (data << 10 | d) ^ G15_MASK;
};
_this.getBCHTypeNumber = function(data) {
let d = data << 12;
while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {
d ^= G18 << getBCHDigit(d) - getBCHDigit(G18);
}
return data << 12 | d;
};
_this.getPatternPosition = function(typeNumber) {
return PATTERN_POSITION_TABLE[typeNumber - 1];
};
_this.getMaskFunction = function(maskPattern) {
switch (maskPattern) {
case QRMaskPattern.PATTERN000:
return function(i, j) {
return (i + j) % 2 == 0;
};
case QRMaskPattern.PATTERN001:
return function(i, j) {
return i % 2 == 0;
};
case QRMaskPattern.PATTERN010:
return function(i, j) {
return j % 3 == 0;
};
case QRMaskPattern.PATTERN011:
return function(i, j) {
return (i + j) % 3 == 0;
};
case QRMaskPattern.PATTERN100:
return function(i, j) {
return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0;
};
case QRMaskPattern.PATTERN101:
return function(i, j) {
return i * j % 2 + i * j % 3 == 0;
};
case QRMaskPattern.PATTERN110:
return function(i, j) {
return (i * j % 2 + i * j % 3) % 2 == 0;
};
case QRMaskPattern.PATTERN111:
return function(i, j) {
return (i * j % 3 + (i + j) % 2) % 2 == 0;
};
default:
throw "bad maskPattern:" + maskPattern;
}
};
_this.getErrorCorrectPolynomial = function(errorCorrectLength) {
let a = qrPolynomial([1], 0);
for (let i = 0; i < errorCorrectLength; i += 1) {
a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0));
}
return a;
};
_this.getLengthInBits = function(mode, type2) {
if (1 <= type2 && type2 < 10) {
switch (mode) {
case QRMode.MODE_NUMBER:
return 10;
case QRMode.MODE_ALPHA_NUM:
return 9;
case QRMode.MODE_8BIT_BYTE:
return 8;
case QRMode.MODE_KANJI:
return 8;
default:
throw "mode:" + mode;
}
} else if (type2 < 27) {
switch (mode) {
case QRMode.MODE_NUMBER:
return 12;
case QRMode.MODE_ALPHA_NUM:
return 11;
case QRMode.MODE_8BIT_BYTE:
return 16;
case QRMode.MODE_KANJI:
return 10;
default:
throw "mode:" + mode;
}
} else if (type2 < 41) {
switch (mode) {
case QRMode.MODE_NUMBER:
return 14;
case QRMode.MODE_ALPHA_NUM:
return 13;
case QRMode.MODE_8BIT_BYTE:
return 16;
case QRMode.MODE_KANJI:
return 12;
default:
throw "mode:" + mode;
}
} else {
throw "type:" + type2;
}
};
_this.getLostPoint = function(qrcode2) {
const moduleCount = qrcode2.getModuleCount();
let lostPoint = 0;
for (let row = 0; row < moduleCount; row += 1) {
for (let col = 0; col < moduleCount; col += 1) {
let sameCount = 0;
const dark = qrcode2.isDark(row, col);
for (let r = -1; r <= 1; r += 1) {
if (row + r < 0 || moduleCount <= row + r) {
continue;
}
for (let c = -1; c <= 1; c += 1) {
if (col + c < 0 || moduleCount <= col + c) {
continue;
}
if (r == 0 && c == 0) {
continue;
}
if (dark == qrcode2.isDark(row + r, col + c)) {
sameCount += 1;
}
}
}
if (sameCount > 5) {
lostPoint += 3 + sameCount - 5;
}
}
}
;
for (let row = 0; row < moduleCount - 1; row += 1) {
for (let col = 0; col < moduleCount - 1; col += 1) {
let count = 0;
if (qrcode2.isDark(row, col)) count += 1;
if (qrcode2.isDark(row + 1, col)) count += 1;
if (qrcode2.isDark(row, col + 1)) count += 1;
if (qrcode2.isDark(row + 1, col + 1)) count += 1;
if (count == 0 || count == 4) {
lostPoint += 3;
}
}
}
for (let row = 0; row < moduleCount; row += 1) {
for (let col = 0; col < moduleCount - 6; col += 1) {
if (qrcode2.isDark(row, col) && !qrcode2.isDark(row, col + 1) && qrcode2.isDark(row, col + 2) && qrcode2.isDark(row, col + 3) && qrcode2.isDark(row, col + 4) && !qrcode2.isDark(row, col + 5) && qrcode2.isDark(row, col + 6)) {
lostPoint += 40;
}
}
}
for (let col = 0; col < moduleCount; col += 1) {
for (let row = 0; row < moduleCount - 6; row += 1) {
if (qrcode2.isDark(row, col) && !qrcode2.isDark(row + 1, col) && qrcode2.isDark(row + 2, col) && qrcode2.isDark(row + 3, col) && qrcode2.isDark(row + 4, col) && !qrcode2.isDark(row + 5, col) && qrcode2.isDark(row + 6, col)) {
lostPoint += 40;
}
}
}
let darkCount = 0;
for (let col = 0; col < moduleCount; col += 1) {
for (let row = 0; row < moduleCount; row += 1) {
if (qrcode2.isDark(row, col)) {
darkCount += 1;
}
}
}
const ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;
lostPoint += ratio * 10;
return lostPoint;
};
return _this;
})();
var QRMath = (function() {
const EXP_TABLE = new Array(256);
const LOG_TABLE = new Array(256);
for (let i = 0; i < 8; i += 1) {
EXP_TABLE[i] = 1 << i;
}
for (let i = 8; i < 256; i += 1) {
EXP_TABLE[i] = EXP_TABLE[i - 4] ^ EXP_TABLE[i - 5] ^ EXP_TABLE[i - 6] ^ EXP_TABLE[i - 8];
}
for (let i = 0; i < 255; i += 1) {
LOG_TABLE[EXP_TABLE[i]] = i;
}
const _this = {};
_this.glog = function(n) {
if (n < 1) {
throw "glog(" + n + ")";
}
return LOG_TABLE[n];
};
_this.gexp = function(n) {
while (n < 0) {
n += 255;
}
while (n >= 256) {
n -= 255;
}
return EXP_TABLE[n];
};
return _this;
})();
var qrPolynomial = function(num, shift) {
if (typeof num.length == "undefined") {
throw num.length + "/" + shift;
}
const _num = (function() {
let offset = 0;
while (offset < num.length && num[offset] == 0) {
offset += 1;
}
const _num2 = new Array(num.length - offset + shift);
for (let i = 0; i < num.length - offset; i += 1) {
_num2[i] = num[i + offset];
}
return _num2;
})();
const _this = {};
_this.getAt = function(index) {
return _num[index];
};
_this.getLength = function() {
return _num.length;
};
_this.multiply = function(e) {
const num2 = new Array(_this.getLength() + e.getLength() - 1);
for (let i = 0; i < _this.getLength(); i += 1) {
for (let j = 0; j < e.getLength(); j += 1) {
num2[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i)) + QRMath.glog(e.getAt(j)));
}
}
return qrPolynomial(num2, 0);
};
_this.mod = function(e) {
if (_this.getLength() - e.getLength() < 0) {
return _this;
}
const ratio = QRMath.glog(_this.getAt(0)) - QRMath.glog(e.getAt(0));
const num2 = new Array(_this.getLength());
for (let i = 0; i < _this.getLength(); i += 1) {
num2[i] = _this.getAt(i);
}
for (let i = 0; i < e.getLength(); i += 1) {
num2[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i)) + ratio);
}
return qrPolynomial(num2, 0).mod(e);
};
return _this;
};
var QRRSBlock = (function() {
const RS_BLOCK_TABLE = [
// L
// M
// Q
// H
// 1
[1, 26, 19],
[1, 26, 16],
[1, 26, 13],
[1, 26, 9],
// 2
[1, 44, 34],
[1, 44, 28],
[1, 44, 22],
[1, 44, 16],
// 3
[1, 70, 55],
[1, 70, 44],
[2, 35, 17],
[2, 35, 13],
// 4
[1, 100, 80],
[2, 50, 32],
[2, 50, 24],
[4, 25, 9],
// 5
[1, 134, 108],
[2, 67, 43],
[2, 33, 15, 2, 34, 16],
[2, 33, 11, 2, 34, 12],
// 6
[2, 86, 68],
[4, 43, 27],
[4, 43, 19],
[4, 43, 15],
// 7
[2, 98, 78],
[4, 49, 31],
[2, 32, 14, 4, 33, 15],
[4, 39, 13, 1, 40, 14],
// 8
[2, 121, 97],
[2, 60, 38, 2, 61, 39],
[4, 40, 18, 2, 41, 19],
[4, 40, 14, 2, 41, 15],
// 9
[2, 146, 116],
[3, 58, 36, 2, 59, 37],
[4, 36, 16, 4, 37, 17],
[4, 36, 12, 4, 37, 13],
// 10
[2, 86, 68, 2, 87, 69],
[4, 69, 43, 1, 70, 44],
[6, 43, 19, 2, 44, 20],
[6, 43, 15, 2, 44, 16],
// 11
[4, 101, 81],
[1, 80, 50, 4, 81, 51],
[4, 50, 22, 4, 51, 23],
[3, 36, 12, 8, 37, 13],
// 12
[2, 116, 92, 2, 117, 93],
[6, 58, 36, 2, 59, 37],
[4, 46, 20, 6, 47, 21],
[7, 42, 14, 4, 43, 15],
// 13
[4, 133, 107],
[8, 59, 37, 1, 60, 38],
[8, 44, 20, 4, 45, 21],
[12, 33, 11, 4, 34, 12],
// 14
[3, 145, 115, 1, 146, 116],
[4, 64, 40, 5, 65, 41],
[11, 36, 16, 5, 37, 17],
[11, 36, 12, 5, 37, 13],
// 15
[5, 109, 87, 1, 110, 88],
[5, 65, 41, 5, 66, 42],
[5, 54, 24, 7, 55, 25],
[11, 36, 12, 7, 37, 13],
// 16
[5, 122, 98, 1, 123, 99],
[7, 73, 45, 3, 74, 46],
[15, 43, 19, 2, 44, 20],
[3, 45, 15, 13, 46, 16],
// 17
[1, 135, 107, 5, 136, 108],
[10, 74, 46, 1, 75, 47],
[1, 50, 22, 15, 51, 23],
[2, 42, 14, 17, 43, 15],
// 18
[5, 150, 120, 1, 151, 121],
[9, 69, 43, 4, 70, 44],
[17, 50, 22, 1, 51, 23],
[2, 42, 14, 19, 43, 15],
// 19
[3, 141, 113, 4, 142, 114],
[3, 70, 44, 11, 71, 45],
[17, 47, 21, 4, 48, 22],
[9, 39, 13, 16, 40, 14],
// 20
[3, 135, 107, 5, 136, 108],
[3, 67, 41, 13, 68, 42],
[15, 54, 24, 5, 55, 25],
[15, 43, 15, 10, 44, 16],
// 21
[4, 144, 116, 4, 145, 117],
[17, 68, 42],
[17, 50, 22, 6, 51, 23],
[19, 46, 16, 6, 47, 17],
// 22
[2, 139, 111, 7, 140, 112],
[17, 74, 46],
[7, 54, 24, 16, 55, 25],
[34, 37, 13],
// 23
[4, 151, 121, 5, 152, 122],
[4, 75, 47, 14, 76, 48],
[11, 54, 24, 14, 55, 25],
[16, 45, 15, 14, 46, 16],
// 24
[6, 147, 117, 4, 148, 118],
[6, 73, 45, 14, 74, 46],
[11, 54, 24, 16, 55, 25],
[30, 46, 16, 2, 47, 17],
// 25
[8, 132, 106, 4, 133, 107],
[8, 75, 47, 13, 76, 48],
[7, 54, 24, 22, 55, 25],
[22, 45, 15, 13, 46, 16],
// 26
[10, 142, 114, 2, 143, 115],
[19, 74, 46, 4, 75, 47],
[28, 50, 22, 6, 51, 23],
[33, 46, 16, 4, 47, 17],
// 27
[8, 152, 122, 4, 153, 123],
[22, 73, 45, 3, 74, 46],
[8, 53, 23, 26, 54, 24],
[12, 45, 15, 28, 46, 16],
// 28
[3, 147, 117, 10, 148, 118],
[3, 73, 45, 23, 74, 46],
[4, 54, 24, 31, 55, 25],
[11, 45, 15, 31, 46, 16],
// 29
[7, 146, 116, 7, 147, 117],
[21, 73, 45, 7, 74, 46],
[1, 53, 23, 37, 54, 24],
[19, 45, 15, 26, 46, 16],
// 30
[5, 145, 115, 10, 146, 116],
[19, 75, 47, 10, 76, 48],
[15, 54, 24, 25, 55, 25],
[23, 45, 15, 25, 46, 16],
// 31
[13, 145, 115, 3, 146, 116],
[2, 74, 46, 29, 75, 47],
[42, 54, 24, 1, 55, 25],
[23, 45, 15, 28, 46, 16],
// 32
[17, 145, 115],
[10, 74, 46, 23, 75, 47],
[10, 54, 24, 35, 55, 25],
[19, 45, 15, 35, 46, 16],
// 33
[17, 145, 115, 1, 146, 116],
[14, 74, 46, 21, 75, 47],
[29, 54, 24, 19, 55, 25],
[11, 45, 15, 46, 46, 16],
// 34
[13, 145, 115, 6, 146, 116],
[14, 74, 46, 23, 75, 47],
[44, 54, 24, 7, 55, 25],
[59, 46, 16, 1, 47, 17],
// 35
[12, 151, 121, 7, 152, 122],
[12, 75, 47, 26, 76, 48],
[39, 54, 24, 14, 55, 25],
[22, 45, 15, 41, 46, 16],
// 36
[6, 151, 121, 14, 152, 122],
[6, 75, 47, 34, 76, 48],
[46, 54, 24, 10, 55, 25],
[2, 45, 15, 64, 46, 16],
// 37
[17, 152, 122, 4, 153, 123],
[29, 74, 46, 14, 75, 47],
[49, 54, 24, 10, 55, 25],
[24, 45, 15, 46, 46, 16],
// 38
[4, 152, 122, 18, 153, 123],
[13, 74, 46, 32, 75, 47],
[48, 54, 24, 14, 55, 25],
[42, 45, 15, 32, 46, 16],
// 39
[20, 147, 117, 4, 148, 118],
[40, 75, 47, 7, 76, 48],
[43, 54, 24, 22, 55, 25],
[10, 45, 15, 67, 46, 16],
// 40
[19, 148, 118, 6, 149, 119],
[18, 75, 47, 31, 76, 48],
[34, 54, 24, 34, 55, 25],
[20, 45, 15, 61, 46, 16]
];
const qrRSBlock = function(totalCount, dataCount) {
const _this2 = {};
_this2.totalCount = totalCount;
_this2.dataCount = dataCount;
return _this2;
};
const _this = {};
const getRsBlockTable = function(typeNumber, errorCorrectionLevel) {
switch (errorCorrectionLevel) {
case QRErrorCorrectionLevel.L:
return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];
case QRErrorCorrectionLevel.M:
return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];
case QRErrorCorrectionLevel.Q:
return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];
case QRErrorCorrectionLevel.H:
return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];
default:
return void 0;
}
};
_this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {
const rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);
if (typeof rsBlock == "undefined") {
throw "bad rs block @ typeNumber:" + typeNumber + "/errorCorrectionLevel:" + errorCorrectionLevel;
}
const length = rsBlock.length / 3;
const list = [];
for (let i = 0; i < length; i += 1) {
const count = rsBlock[i * 3 + 0];
const totalCount = rsBlock[i * 3 + 1];
const dataCount = rsBlock[i * 3 + 2];
for (let j = 0; j < count; j += 1) {
list.push(qrRSBlock(totalCount, dataCount));
}
}
return list;
};
return _this;
})();
var qrBitBuffer = function() {
const _buffer = [];
let _length = 0;
const _this = {};
_this.getBuffer = function() {
return _buffer;
};
_this.getAt = function(index) {
const bufIndex = Math.floor(index / 8);
return (_buffer[bufIndex] >>> 7 - index % 8 & 1) == 1;
};
_this.put = function(num, length) {
for (let i = 0; i < length; i += 1) {
_this.putBit((num >>> length - i - 1 & 1) == 1);
}
};
_this.getLengthInBits = function() {
return _length;
};
_this.putBit = function(bit) {
const bufIndex = Math.floor(_length / 8);
if (_buffer.length <= bufIndex) {
_buffer.push(0);
}
if (bit) {
_buffer[bufIndex] |= 128 >>> _length % 8;
}
_length += 1;
};
return _this;
};
var qrNumber = function(data) {
const _mode = QRMode.MODE_NUMBER;
const _data = data;
const _this = {};
_this.getMode = function() {
return _mode;
};
_this.getLength = function(buffer) {
return _data.length;
};
_this.write = function(buffer) {
const data2 = _data;
let i = 0;
while (i + 2 < data2.length) {
buffer.put(strToNum(data2.substring(i, i + 3)), 10);
i += 3;
}
if (i < data2.length) {
if (data2.length - i == 1) {
buffer.put(strToNum(data2.substring(i, i + 1)), 4);
} else if (data2.length - i == 2) {
buffer.put(strToNum(data2.substring(i, i + 2)), 7);
}
}
};
const strToNum = function(s) {
let num = 0;
for (let i = 0; i < s.length; i += 1) {
num = num * 10 + chatToNum(s.charAt(i));
}
return num;
};
const chatToNum = function(c) {
if ("0" <= c && c <= "9") {
return c.charCodeAt(0) - "0".charCodeAt(0);
}
throw "illegal char :" + c;
};
return _this;
};
var qrAlphaNum = function(data) {
const _mode = QRMode.MODE_ALPHA_NUM;
const _data = data;
const _this = {};
_this.getMode = function() {
return _mode;
};
_this.getLength = function(buffer) {
return _data.length;
};
_this.write = function(buffer) {
const s = _data;
let i = 0;
while (i + 1 < s.length) {
buffer.put(
getCode(s.charAt(i)) * 45 + getCode(s.charAt(i + 1)),
11
);
i += 2;
}
if (i < s.length) {
buffer.put(getCode(s.charAt(i)), 6);
}
};
const getCode = function(c) {
if ("0" <= c && c <= "9") {
return c.charCodeAt(0) - "0".charCodeAt(0);
} else if ("A" <= c && c <= "Z") {
return c.charCodeAt(0) - "A".charCodeAt(0) + 10;
} else {
switch (c) {
case " ":
return 36;
case "$":
return 37;
case "%":
return 38;
case "*":
return 39;
case "+":
return 40;
case "-":
return 41;
case ".":
return 42;
case "/":
return 43;
case ":":
return 44;
default:
throw "illegal char :" + c;
}
}
};
return _this;
};
var qr8BitByte = function(data) {
const _mode = QRMode.MODE_8BIT_BYTE;
const _data = data;
const _bytes = qrcode.stringToBytes(data);
const _this = {};
_this.getMode = function() {
return _mode;
};
_this.getLength = function(buffer) {
return _bytes.length;
};
_this.write = function(buffer) {
for (let i = 0; i < _bytes.length; i += 1) {
buffer.put(_bytes[i], 8);
}
};
return _this;
};
var qrKanji = function(data) {
const _mode = QRMode.MODE_KANJI;
const _data = data;
const stringToBytes2 = qrcode.stringToBytes;
!(function(c, code) {
const test = stringToBytes2(c);
if (test.length != 2 || (test[0] << 8 | test[1]) != code) {
throw "sjis not supported.";
}
})("\u53CB", 38726);
const _bytes = stringToBytes2(data);
const _this = {};
_this.getMode = function() {
return _mode;
};
_this.getLength = function(buffer) {
return ~~(_bytes.length / 2);
};
_this.write = function(buffer) {
const data2 = _bytes;
let i = 0;
while (i + 1 < data2.length) {
let c = (255 & data2[i]) << 8 | 255 & data2[i + 1];
if (33088 <= c && c <= 40956) {
c -= 33088;
} else if (57408 <= c && c <= 60351) {
c -= 49472;
} else {
throw "illegal char at " + (i + 1) + "/" + c;
}
c = (c >>> 8 & 255) * 192 + (c & 255);
buffer.put(c, 13);
i += 2;
}
if (i < data2.length) {
throw "illegal char at " + (i + 1);
}
};
return _this;
};
var byteArrayOutputStream = function() {
const _bytes = [];
const _this = {};
_this.writeByte = function(b) {
_bytes.push(b & 255);
};
_this.writeShort = function(i) {
_this.writeByte(i);
_this.writeByte(i >>> 8);
};
_this.writeBytes = function(b, off, len) {
off = off || 0;
len = len || b.length;
for (let i = 0; i < len; i += 1) {
_this.writeByte(b[i + off]);
}
};
_this.writeString = function(s) {
for (let i = 0; i < s.length; i += 1) {
_this.writeByte(s.charCodeAt(i));
}
};
_this.toByteArray = function() {
return _bytes;
};
_this.toString = function() {
let s = "";
s += "[";
for (let i = 0; i < _bytes.length; i += 1) {
if (i > 0) {
s += ",";
}
s += _bytes[i];
}
s += "]";
return s;
};
return _this;
};
var base64EncodeOutputStream = function() {
let _buffer = 0;
let _buflen = 0;
let _length = 0;
let _base64 = "";
const _this = {};
const writeEncoded = function(b) {
_base64 += String.fromCharCode(encode(b & 63));
};
const encode = function(n) {
if (n < 0) {
throw "n:" + n;
} else if (n < 26) {
return 65 + n;
} else if (n < 52) {
return 97 + (n - 26);
} else if (n < 62) {
return 48 + (n - 52);
} else if (n == 62) {
return 43;
} else if (n == 63) {
return 47;
} else {
throw "n:" + n;
}
};
_this.writeByte = function(n) {
_buffer = _buffer << 8 | n & 255;
_buflen += 8;
_length += 1;
while (_buflen >= 6) {
writeEncoded(_buffer >>> _buflen - 6);
_buflen -= 6;
}
};
_this.flush = function() {
if (_buflen > 0) {
writeEncoded(_buffer << 6 - _buflen);
_buffer = 0;
_buflen = 0;
}
if (_length % 3 != 0) {
const padlen = 3 - _length % 3;
for (let i = 0; i < padlen; i += 1) {
_base64 += "=";
}
}
};
_this.toString = function() {
return _base64;
};
return _this;
};
var base64DecodeInputStream = function(str) {
const _str = str;
let _pos = 0;
let _buffer = 0;
let _buflen = 0;
const _this = {};
_this.read = function() {
while (_buflen < 8) {
if (_pos >= _str.length) {
if (_buflen == 0) {
return -1;
}
throw "unexpected end of file./" + _buflen;
}
const c = _str.charAt(_pos);
_pos += 1;
if (c == "=") {
_buflen = 0;
return -1;
} else if (c.match(/^\s$/)) {
continue;
}
_buffer = _buffer << 6 | decode(c.charCodeAt(0));
_buflen += 6;
}
const n = _buffer >>> _buflen - 8 & 255;
_buflen -= 8;
return n;
};
const decode = function(c) {
if (65 <= c && c <= 90) {
return c - 65;
} else if (97 <= c && c <= 122) {
return c - 97 + 26;
} else if (48 <= c && c <= 57) {
return c - 48 + 52;
} else if (c == 43) {
return 62;
} else if (c == 47) {
return 63;
} else {
throw "c:" + c;
}
};
return _this;
};
var gifImage = function(width, height) {
const _width = width;
const _height = height;
const _data = new Array(width * height);
const _this = {};
_this.setPixel = function(x, y, pixel) {
_data[y * _width + x] = pixel;
};
_this.write = function(out) {
out.writeString("GIF87a");
out.writeShort(_width);
out.writeShort(_height);
out.writeByte(128);
out.writeByte(0);
out.writeByte(0);
out.writeByte(0);
out.writeByte(0);
out.writeByte(0);
out.writeByte(255);
out.writeByte(255);
out.writeByte(255);
out.writeString(",");
out.writeShort(0);
out.writeShort(0);
out.writeShort(_width);
out.writeShort(_height);
out.writeByte(0);
const lzwMinCodeSize = 2;
const raster = getLZWRaster(lzwMinCodeSize);
out.writeByte(lzwMinCodeSize);
let offset = 0;
while (raster.length - offset > 255) {
out.writeByte(255);
out.writeBytes(raster, offset, 255);
offset += 255;
}
out.writeByte(raster.length - offset);
out.writeBytes(raster, offset, raster.length - offset);
out.writeByte(0);
out.writeString(";");
};
const bitOutputStream = function(out) {
const _out = out;
let _bitLength = 0;
let _bitBuffer = 0;
const _this2 = {};
_this2.write = function(data, length) {
if (data >>> length != 0) {
throw "length over";
}
while (_bitLength + length >= 8) {
_out.writeByte(255 & (data << _bitLength | _bitBuffer));
length -= 8 - _bitLength;
data >>>= 8 - _bitLength;
_bitBuffer = 0;
_bitLength = 0;
}
_bitBuffer = data << _bitLength | _bitBuffer;
_bitLength = _bitLength + length;
};
_this2.flush = function() {
if (_bitLength > 0) {
_out.writeByte(_bitBuffer);
}
};
return _this2;
};
const getLZWRaster = function(lzwMinCodeSize) {
const clearCode = 1 << lzwMinCodeSize;
const endCode = (1 << lzwMinCodeSize) + 1;
let bitLength = lzwMinCodeSize + 1;
const table = lzwTable();
for (let i = 0; i < clearCode; i += 1) {
table.add(String.fromCharCode(i));
}
table.add(String.fromCharCode(clearCode));
table.add(String.fromCharCode(endCode));
const byteOut = byteArrayOutputStream();
const bitOut = bitOutputStream(byteOut);
bitOut.write(clearCode, bitLength);
let dataIndex = 0;
let s = String.fromCharCode(_data[dataIndex]);
dataIndex += 1;
while (dataIndex < _data.length) {
const c = String.fromCharCode(_data[dataIndex]);
dataIndex += 1;
if (table.contains(s + c)) {
s = s + c;
} else {
bitOut.write(table.indexOf(s), bitLength);
if (table.size() < 4095) {
if (table.size() == 1 << bitLength) {
bitLength += 1;
}
table.add(s + c);
}
s = c;
}
}
bitOut.write(table.indexOf(s), bitLength);
bitOut.write(endCode, bitLength);
bitOut.flush();
return byteOut.toByteArray();
};
const lzwTable = function() {
const _map = {};
let _size = 0;
const _this2 = {};
_this2.add = function(key) {
if (_this2.contains(key)) {
throw "dup key:" + key;
}
_map[key] = _size;
_size += 1;
};
_this2.size = function() {
return _size;
};
_this2.indexOf = function(key) {
return _map[key];
};
_this2.contains = function(key) {
return typeof _map[key] != "undefined";
};
return _this2;
};
return _this;
};
var createDataURL = function(width, height, getPixel) {
const gif = gifImage(width, height);
for (let y = 0; y < height; y += 1) {
for (let x = 0; x < width; x += 1) {
gif.setPixel(x, y, getPixel(x, y));
}
}
const b = byteArrayOutputStream();
gif.write(b);
const base64 = base64EncodeOutputStream();
const bytes = b.toByteArray();
for (let i = 0; i < bytes.length; i += 1) {
base64.writeByte(bytes[i]);
}
base64.flush();
return "data:image/gif;base64," + base64;
};
var stringToBytes = qrcode.stringToBytes;
var METHODS = { alipay: { name: "\u652F\u4ED8\u5B9D", mark: "\u652F" }, wxpay: { name: "\u5FAE\u4FE1", mark: "\u5FAE" } };
var METHOD_KEY = "drip7boi:pay-method";
var POLL_MS = 2e3;
var POLL_HIDDEN_MS = 5e3;
var LATE_CHECK_MS = 2 * 6e4;
var SVG_NS2 = "http://www.w3.org/2000/svg";
function mountPanelPay(panel, logo, callbacks = {}) {
const doc = panel.ownerDocument;
const win = doc.defaultView;
const drawer = panel.querySelector(".drip-recharge-content");
const recharge = panel.querySelector(".drip-recharge");
if (!drawer || !recharge || !callbacks.createPayOrder || !callbacks.getPayOrder) return;
const h = (tag, className = "", text = "", ...children) => {
const el = doc.createElement(tag);
if (className) el.className = className;
if (text) el.textContent = text;
el.append(...children.filter(Boolean));
return el;
};
const button = (className, text, ...children) => {
const el = h("button", className, text, ...children);
el.type = "button";
return el;
};
const yuan = (value) => `\xA5${Number(value || 0).toFixed(2)}`;
const shortYuan = (value) => `\xA5${Number(value || 0).toFixed(Number.isInteger(Number(value)) ? 0 : 2)}`;
let config = { enabled: false, methods: [], packages: [] };
let shopUrl = "";
let method = "alipay";
try {
method = win.localStorage.getItem(METHOD_KEY) || "alipay";
} catch (e) {
}
const pickMethod = () => config.methods.includes(method) ? method : config.methods[0] || "alipay";
const rememberMethod = (value) => {
method = value;
try {
win.localStorage.setItem(METHOD_KEY, value);
} catch (e) {
}
};
const fit = (need) => config.packages.find((pkg) => pkg.points >= need) || config.packages[config.packages.length - 1];
let activeFlow = null;
const qrSvg = (text, mark) => {
var _a;
const qr = qrcode(0, "H");
qr.addData(text);
qr.make();
const count = qr.getModuleCount();
const svg = doc.createElementNS(SVG_NS2, "svg");
svg.setAttribute("viewBox", `0 0 ${count} ${count}`);
svg.setAttribute("shape-rendering", "crispEdges");
svg.setAttribute("role", "img");
svg.setAttribute("aria-label", "\u4ED8\u6B3E\u4E8C\u7EF4\u7801");
let d = "";
for (let r = 0; r < count; r += 1) for (let c = 0; c < count; c += 1) if (qr.isDark(r, c)) d += `M${c} ${r}h1v1h-1z`;
const path = doc.createElementNS(SVG_NS2, "path");
path.setAttribute("d", d);
path.setAttribute("fill", "#1f1d18");
svg.append(path);
const box = h("div", "lt-pay-qr");
box.append(svg, h("span", `lt-pay-qr-mark is-${mark}`, ((_a = METHODS[mark]) == null ? void 0 : _a.mark) || ""));
return box;
};
const methodRow = (onPick) => {
const row = h("div", "lt-pay-methods");
row.setAttribute("role", "radiogroup");
row.setAttribute("aria-label", "\u652F\u4ED8\u65B9\u5F0F");
for (const key of config.methods) {
const item = button("lt-pay-method", "", h("i", `is-${key}`, METHODS[key].mark), doc.createTextNode(METHODS[key].name));
item.setAttribute("role", "radio");
item.setAttribute("aria-checked", String(pickMethod() === key));
item.addEventListener("click", () => {
rememberMethod(key);
onPick();
});
row.append(item);
}
return row;
};
function createFlow(host, { mode, onPaid, onBack }) {
const flow = { host, mode, pkg: null, order: null, timer: 0, view: "", need: 0, more: false };
const stop = () => {
win.clearTimeout(flow.timer);
flow.timer = 0;
};
const show = (...nodes) => {
host.replaceChildren(...nodes);
};
flow.reset = (need = 0) => {
stop();
flow.order = null;
flow.need = need;
flow.more = false;
flow.pkg = need ? fit(need) : flow.pkg && config.packages.find((pkg) => pkg.id === flow.pkg.id) || config.packages[Math.min(1, config.packages.length - 1)];
render(mode === "drawer" ? "pick" : "offer");
};
flow.stop = stop;
function render(view, extra = {}) {
flow.view = view;
host.dataset.view = view;
if (["qr", "paid", "failed"].includes(view)) win.requestAnimationFrame(() => host.scrollIntoView({ block: "nearest", behavior: "smooth" }));
if (view === "pick") return show(pickView());
if (view === "offer") return show(offerView());
if (view === "qr" || view === "expired") return show(qrView(view === "expired"));
if (view === "paid") return show(paidView());
if (view === "failed") return show(failedView(extra.message));
if (view === "loading") return show(h("div", "lt-pay-loading", "\u6B63\u5728\u751F\u6210\u4ED8\u6B3E\u7801\u2026"));
}
function pickView() {
var _a;
const wrap = h("div", "lt-pay-pick");
const head = h("div", "lt-pay-label", "\u9009\u4E2A\u5957\u9910", h("small", "", "\u6BCF\u7B54 1 \u9898\u6263 1 \u79EF\u5206"));
const grid = h("div", "lt-pay-packages");
grid.setAttribute("role", "radiogroup");
grid.setAttribute("aria-label", "\u79EF\u5206\u5957\u9910");
for (const pkg of config.packages) {
const item = button("lt-pay-package", "", h("strong", "", String(pkg.points), h("small", "", "\u79EF\u5206")), h("span", "", shortYuan(pkg.priceYuan)));
item.setAttribute("role", "radio");
item.setAttribute("aria-checked", String(pkg === flow.pkg));
item.addEventListener("click", () => {
var _a2;
flow.pkg = pkg;
render("pick");
(_a2 = host.querySelector('[aria-checked="true"]')) == null ? void 0 : _a2.focus();
});
grid.append(item);
}
const go = button("lt-button lt-button--primary lt-pay-go", `${METHODS[pickMethod()].name}\u626B\u7801\u4ED8 ${yuan((_a = flow.pkg) == null ? void 0 : _a.priceYuan)}`);
go.addEventListener("click", () => start());
wrap.append(head, grid, methodRow(() => render("pick")), go, h("p", "lt-pay-fine", "\u4ED8\u6B3E\u540E\u79EF\u5206\u7ACB\u5373\u5230\u8D26\uFF0C\u4E0D\u7528\u5361\u5BC6"));
return wrap;
}
function offerView() {
const pkg = flow.pkg;
const wrap = h("div", "lt-pay-offer");
const go = button("lt-button lt-button--primary", `${METHODS[pickMethod()].name} ${shortYuan(pkg.priceYuan)}`);
go.addEventListener("click", () => start());
const enough = pkg.points >= flow.need;
wrap.append(h(
"div",
"lt-pay-offer-row",
"",
h(
"div",
"lt-pay-offer-amt",
"",
h("b", "", `\u8865 ${pkg.points} \u79EF\u5206 \xB7 ${shortYuan(pkg.priceYuan)}`),
h("small", "", enough ? `\u591F\u7B54\u5B8C\u5269\u4E0B\u7684 ${flow.need} \u9898` : `\u8FD8\u5DEE ${flow.need - pkg.points} \u9898`)
),
go
));
if (flow.more) {
const list = h("div", "lt-pay-mini");
list.setAttribute("role", "radiogroup");
list.setAttribute("aria-label", "\u79EF\u5206\u5957\u9910");
for (const item of config.packages) {
const choice = button("", "", h("b", "", shortYuan(item.priceYuan)), doc.createTextNode(String(item.points)));
choice.setAttribute("role", "radio");
choice.setAttribute("aria-checked", String(item === pkg));
choice.addEventListener("click", () => {
flow.pkg = item;
render("offer");
});
list.append(choice);
}
wrap.append(list);
}
const more = button("lt-pay-link", flow.more ? "\u6536\u8D77" : "\u6362\u4E2A\u5957\u9910 \u203A");
more.addEventListener("click", () => {
flow.more = !flow.more;
render("offer");
});
const actions = h("div", "lt-pay-offer-more", "", more);
const other = config.methods.find((key) => key !== pickMethod());
if (other) {
const swap = button("lt-pay-link", `\u6539\u7528${METHODS[other].name}`);
swap.addEventListener("click", () => {
rememberMethod(other);
render("offer");
});
actions.append(swap);
}
wrap.append(actions);
return wrap;
}
function qrView(expired) {
var _a;
const order = flow.order;
const box = h("div", "lt-pay-qrbox");
const head = h("div", "lt-pay-qrhead", "", h("strong", "", yuan(order.amountYuan)), h("small", "", `${order.points} \u79EF\u5206`));
const code = qrSvg(order.payInfo || " ", order.method);
if (expired) {
const renew = button("lt-button lt-button--primary", "\u6362\u4E2A\u65B0\u7801");
renew.addEventListener("click", () => start());
code.append(h("div", "lt-pay-qr-mask", "", h("span", "", "\u4E8C\u7EF4\u7801\u5DF2\u8FC7\u671F"), renew));
}
const scan = h("div", "lt-pay-scan", "\u6253\u5F00", h("b", "", ((_a = METHODS[order.method]) == null ? void 0 : _a.name) || ""), doc.createTextNode("\u626B\u4E00\u626B"));
const wait = h("div", "lt-pay-wait", "", h("i"), h("span", "", ""));
const tick = () => {
const left = Math.max(0, Math.round((Date.parse(order.expiresAt) - Date.now()) / 1e3));
wait.lastChild.textContent = expired ? "\u5DF2\u7ECF\u4ED8\u8FC7\u6B3E\u7684\u8BDD\uFF0C\u5230\u8D26\u4F1A\u81EA\u52A8\u663E\u793A" : `\u7B49\u5F85\u4ED8\u6B3E \xB7 ${Math.floor(left / 60)}:${String(left % 60).padStart(2, "0")} \u5185\u6709\u6548`;
};
tick();
flow.tick = tick;
const foot = h("div", "lt-pay-qrfoot");
const back = button("lt-pay-link", mode === "drawer" ? "\u2039 \u6362\u5957\u9910" : "\u2039 \u8FD4\u56DE");
back.addEventListener("click", () => {
stop();
flow.order = null;
render(mode === "drawer" ? "pick" : "offer");
onBack == null ? void 0 : onBack();
});
foot.append(back);
const other = config.methods.find((key) => key !== order.method);
if (other) {
const swap = button("lt-pay-link", `\u6539\u7528${METHODS[other].name}`);
swap.addEventListener("click", () => {
rememberMethod(other);
start();
});
foot.append(swap);
}
box.append(head, code, scan, wait, foot);
return box;
}
function paidView() {
const order = flow.order;
const wrap = h("div", "lt-pay-done");
const tickIcon = h("span", "lt-pay-done-tick", "\u2713");
tickIcon.setAttribute("aria-hidden", "true");
wrap.append(tickIcon, h("b", "", `+${order.points} \u79EF\u5206\u5DF2\u5230\u8D26`), h("small", "", `${yuan(order.amountYuan)} \xB7 \u8BA2\u5355 ${order.orderNo}`));
if (flow.resumeText) wrap.append(h("span", "lt-pay-resume", "", h("i"), doc.createTextNode(flow.resumeText)));
return wrap;
}
function failedView(message) {
const wrap = h("div", "lt-pay-failed");
wrap.append(h("b", "", "\u73B0\u5728\u4E0B\u4E0D\u4E86\u5355"), h("small", "", message || "\u652F\u4ED8\u901A\u9053\u6682\u65F6\u8FDE\u4E0D\u4E0A\uFF0C\u94B1\u6CA1\u6709\u6263\u3002"));
const retry = button("lt-button lt-button--secondary", "\u518D\u8BD5\u4E00\u6B21");
retry.addEventListener("click", () => start());
const row = h("div", "lt-pay-failed-actions", "", retry);
if (shopUrl && mode === "inline") {
const shop = button("lt-button lt-button--ghost", "\u53BB\u5E97\u94FA\u4E70\u5361\u5BC6 \u2197");
shop.addEventListener("click", () => win.open(shopUrl, "_blank", "noopener,noreferrer"));
row.append(shop);
}
wrap.append(row);
return wrap;
}
async function start() {
if (activeFlow && activeFlow !== flow) activeFlow.stop();
activeFlow = flow;
stop();
const chosen = pickMethod();
render("loading");
try {
flow.order = await callbacks.createPayOrder(flow.pkg.id, chosen);
render("qr");
poll();
} catch (error) {
render("failed", { message: (error == null ? void 0 : error.code) === "RATE_LIMITED" ? "\u4E0B\u5355\u592A\u9891\u7E41\u4E86\uFF0C\u8FC7\u4E00\u4F1A\u513F\u518D\u8BD5\u3002" : error == null ? void 0 : error.message });
}
}
function poll() {
stop();
const order = flow.order;
if (!order) return;
const expiredFor = Date.now() - Date.parse(order.expiresAt);
if (expiredFor > LATE_CHECK_MS) return;
if (expiredFor > 0 && flow.view === "qr") render("expired");
flow.timer = win.setTimeout(async () => {
var _a;
if (flow.order !== order) return;
try {
const status = await callbacks.getPayOrder(order.orderNo);
if (flow.order !== order) return;
if (status.status === "paid") {
flow.order = { ...order, ...status };
flow.resumeText = await (onPaid == null ? void 0 : onPaid(flow.order)) || "";
render("paid");
return;
}
if (status.status === "failed") {
render("failed");
return;
}
} catch (e) {
}
(_a = flow.tick) == null ? void 0 : _a.call(flow);
poll();
}, doc.hidden ? POLL_HIDDEN_MS : POLL_MS);
}
return flow;
}
const payBox = h("section", "lt-pay");
payBox.hidden = true;
drawer.prepend(payBox);
const alt = h("div", "lt-pay-alt");
const redeemToggle = button("lt-pay-link", "\u5DF2\u6709\u5361\u5BC6\uFF1F\u5151\u6362 \u203A");
const shopLink = button("lt-pay-link", "\u53BB\u5E97\u94FA\u8D2D\u4E70 \u2197");
alt.append(redeemToggle, shopLink);
payBox.after(alt);
alt.hidden = true;
redeemToggle.addEventListener("click", () => {
var _a;
const open = !drawer.classList.contains("lt-pay-redeem-open");
drawer.classList.toggle("lt-pay-redeem-open", open);
redeemToggle.textContent = open ? "\u6536\u8D77\u5361\u5BC6\u5151\u6362" : "\u5DF2\u6709\u5361\u5BC6\uFF1F\u5151\u6362 \u203A";
if (open) (_a = panel.querySelector("#cxds-card-code")) == null ? void 0 : _a.focus();
});
shopLink.addEventListener("click", () => {
if (shopUrl) win.open(shopUrl, "_blank", "noopener,noreferrer");
});
const drawerFlow = createFlow(payBox, {
mode: "drawer",
onPaid: async (order) => {
var _a;
await ((_a = callbacks.payCompleted) == null ? void 0 : _a.call(callbacks, order));
return "";
}
});
recharge.addEventListener("toggle", () => {
if (!config.enabled) return;
if (recharge.open) {
if (!drawerFlow.order || drawerFlow.view === "paid" || drawerFlow.view === "failed") drawerFlow.reset();
win.requestAnimationFrame(() => {
var _a;
return (_a = payBox.querySelector(".lt-pay-go")) == null ? void 0 : _a.focus();
});
}
});
const short = h("section", "lt-pay-short");
short.hidden = true;
short.setAttribute("aria-live", "polite");
const shortHead = h("div", "lt-pay-short-head");
const shortTitle = h("b");
const shortDesc = h("small");
const shortClose = button("lt-pay-short-close", "\xD7");
shortClose.setAttribute("aria-label", "\u5173\u95ED");
shortHead.append(h("div", "", "", shortTitle, shortDesc), shortClose);
const shortHost = h("div", "lt-pay-short-flow");
const partial = button("lt-button lt-button--ghost lt-pay-partial", "");
const fallback = h("div", "lt-pay-short-fallback");
short.append(shortHead, shortHost, partial, fallback);
const anchor = panel.querySelector(".lt-v4-cta") || panel.querySelector(".lt-v4-hero");
(anchor ? anchor.after.bind(anchor) : panel.querySelector(".cxds-body").prepend.bind(panel.querySelector(".cxds-body")))(short);
let shortDetail = null;
const decide = (action) => {
if ((shortDetail == null ? void 0 : shortDetail.phase) !== "before" || shortDetail.decided) return;
shortDetail.decided = true;
win.dispatchEvent(new CustomEvent("drip7boi:balance-short-decision", { detail: { id: shortDetail.id, action } }));
};
const hideShort = () => {
short.hidden = true;
shortFlow.stop();
bubble.hidden = true;
shortDetail = null;
};
const shortFlow = createFlow(shortHost, {
mode: "inline",
onPaid: async (order) => {
var _a, _b;
const detail = shortDetail;
await ((_a = callbacks.payCompleted) == null ? void 0 : _a.call(callbacks, order));
short.classList.add("is-paid");
partial.hidden = true;
bubble.hidden = true;
if ((detail == null ? void 0 : detail.phase) === "before") decide("paid");
else if ((detail == null ? void 0 : detail.phase) === "during") (_b = callbacks.resumeAnswering) == null ? void 0 : _b.call(callbacks);
win.setTimeout(() => {
if (shortDetail === detail) hideShort();
}, 3500);
return (detail == null ? void 0 : detail.phase) === "during" && detail.current ? `AI \u5DF2\u7EE7\u7EED\uFF0C\u6B63\u5728\u7B54\u7B2C ${detail.current} \u9898` : (detail == null ? void 0 : detail.phase) === "before" ? "AI \u5F00\u59CB\u4F5C\u7B54" : "";
}
});
partial.addEventListener("click", () => {
decide("partial");
hideShort();
});
shortClose.addEventListener("click", () => {
decide("partial");
hideShort();
});
const renderFallback = () => {
fallback.replaceChildren();
if (config.enabled) return;
const open = button("lt-button lt-button--primary", "\u5151\u6362\u5361\u5BC6");
open.addEventListener("click", () => {
var _a;
recharge.open = true;
(_a = panel.querySelector("#cxds-card-code")) == null ? void 0 : _a.focus();
});
fallback.append(open);
if (shopUrl) {
const shop = button("lt-button lt-button--ghost", "\u53BB\u5E97\u94FA\u4E70 \u2197");
shop.addEventListener("click", () => win.open(shopUrl, "_blank", "noopener,noreferrer"));
fallback.append(shop);
}
};
win.addEventListener("drip7boi:balance-short", (event) => {
const detail = event.detail || {};
const need = Math.max(1, Number(detail.need) || 1);
shortDetail = { ...detail, need };
bubbleDismissed = false;
short.classList.remove("is-paid");
if (detail.phase === "before") {
shortTitle.textContent = `\u79EF\u5206\u53EA\u591F\u7B54 ${detail.balance} \u9898`;
shortDesc.textContent = `\u672C\u9875\u8FD8\u6709 ${detail.total} \u9898\u6CA1\u7B54\uFF0C\u8FD8\u5DEE ${need} \u79EF\u5206`;
partial.textContent = `\u5148\u7B54\u524D ${detail.balance} \u9898`;
partial.hidden = false;
} else {
shortTitle.textContent = detail.current && detail.total ? `\u7B2C ${detail.current} / ${detail.total} \u9898 \xB7 \u79EF\u5206\u7528\u5B8C\u4E86` : "\u79EF\u5206\u7528\u5B8C\u4E86";
shortDesc.textContent = detail.current > 1 ? `\u5DF2\u6682\u505C\uFF0C\u524D ${detail.current - 1} \u9898\u5DF2\u7ECF\u586B\u597D` : "AI \u4F5C\u7B54\u5DF2\u6682\u505C";
partial.hidden = true;
}
renderFallback();
shortHost.hidden = !config.enabled;
if (config.enabled) shortFlow.reset(need);
short.hidden = false;
if (panel.classList.contains("cxds-hidden")) showBubble();
});
win.addEventListener("drip7boi:balance-short-clear", () => {
if (shortDetail && !short.classList.contains("is-paid")) hideShort();
});
const bubble = h("button", "lt-ui lt-pay-bubble");
bubble.type = "button";
bubble.dataset.theme = "golden-wing";
bubble.hidden = true;
const bubbleTitle = h("b");
const bubbleAction = h("span");
bubble.append(bubbleTitle, bubbleAction);
const bubbleClose = button("lt-ui lt-pay-bubble-close", "");
bubbleClose.dataset.theme = "golden-wing";
bubbleClose.setAttribute("aria-label", "\u5173\u95ED\u63D0\u793A");
bubbleClose.title = "\u5173\u95ED\u63D0\u793A";
bubbleClose.innerHTML = '';
bubbleClose.hidden = true;
doc.body.append(bubble, bubbleClose);
new win.MutationObserver(() => {
bubbleClose.hidden = bubble.hidden;
}).observe(bubble, { attributes: true, attributeFilter: ["hidden"] });
let bubbleDismissed = false;
bubbleClose.addEventListener("click", () => {
bubbleDismissed = true;
bubble.hidden = true;
});
function showBubble() {
if (!shortDetail || bubbleDismissed) return;
bubbleTitle.textContent = shortDetail.phase === "during" && shortDetail.current ? `\u79EF\u5206\u7528\u5B8C\u4E86\uFF0C\u505C\u5728\u7B2C ${shortDetail.current} \u9898` : `\u79EF\u5206\u53EA\u591F\u7B54 ${shortDetail.balance} \u9898`;
const pkg = config.enabled ? fit(shortDetail.need) : null;
bubbleAction.textContent = pkg ? `\u8865 ${shortYuan(pkg.priceYuan)} \u63A5\u7740\u7B54 \u203A` : "\u70B9\u8FD9\u91CC\u5145\u503C \u203A";
const rect = logo.getBoundingClientRect();
bubble.hidden = false;
const width = bubble.offsetWidth || 220;
const height = bubble.offsetHeight || 52;
const top = rect.top - height - 8 >= 8 ? rect.top - height - 8 : rect.bottom + 8;
bubble.style.left = `${Math.max(8, Math.min(rect.right - width, win.innerWidth - width - 8))}px`;
bubble.style.top = `${Math.max(8, Math.min(top, win.innerHeight - height - 8))}px`;
bubbleClose.style.left = `${parseFloat(bubble.style.left) + width - 25}px`;
bubbleClose.style.top = `${parseFloat(bubble.style.top) + 5}px`;
}
bubble.addEventListener("click", () => {
bubble.hidden = true;
if (panel.classList.contains("cxds-hidden")) logo.click();
win.requestAnimationFrame(() => short.scrollIntoView({ block: "nearest", behavior: "smooth" }));
});
new win.MutationObserver(() => {
if (!panel.classList.contains("cxds-hidden")) bubble.hidden = true;
else if (!short.hidden && !short.classList.contains("is-paid")) showBubble();
}).observe(panel, { attributes: true, attributeFilter: ["class"] });
const applyConfig = (detail) => {
const pay = (detail == null ? void 0 : detail.panelPay) || {};
const packages = Array.isArray(pay.packages) ? pay.packages.map((pkg) => ({ id: Number(pkg.id), points: Number(pkg.points), priceYuan: Number(pkg.priceYuan) })).filter((pkg) => pkg.id > 0 && pkg.points > 0 && pkg.priceYuan > 0) : [];
const methods = Array.isArray(pay.methods) ? pay.methods.filter((key) => METHODS[key]) : [];
config = { enabled: Boolean(pay.enabled) && packages.length > 0 && methods.length > 0, methods, packages };
try {
const url = new URL(String((detail == null ? void 0 : detail.shopUrl) || ""));
shopUrl = url.protocol === "https:" && !url.username && !url.password ? url.href : "";
} catch (e) {
shopUrl = "";
}
panel.dataset.ltPay = String(config.enabled);
drawer.classList.toggle("lt-pay-on", config.enabled);
payBox.hidden = alt.hidden = !config.enabled;
shopLink.hidden = !shopUrl;
if (config.enabled && (!drawerFlow.order || drawerFlow.view === "pick")) drawerFlow.reset();
};
win.addEventListener("drip7boi:config", (event) => applyConfig(event.detail));
if (win.__dripLastConfig) applyConfig(win.__dripLastConfig);
}
function mountPanelClose(panel) {
const doc = panel.ownerDocument;
const node = (tag, className, text = "") => {
const el = doc.createElement(tag);
el.className = className;
if (text) el.textContent = text;
return el;
};
const icon = (name) => {
const template = doc.createElement("template");
template.innerHTML = iconSvg[name];
const svg = template.content.firstElementChild;
svg.classList.add("lt-icon");
svg.setAttribute("aria-hidden", "true");
return svg;
};
const closeButton = (label) => {
const button = node("button", "lt-close");
button.type = "button";
button.append(icon("x"));
button.setAttribute("aria-label", label);
button.title = label;
return button;
};
const recharge = panel.querySelector(".drip-recharge");
const rechargeEntry = panel.querySelector(".lt-v3-recharge");
const [billingEntry, recordsEntry] = panel.querySelectorAll(".lt-v4-links .lt-v4-link");
const invite = panel.querySelector(".lt-invite-card");
const inviteEntry = panel.querySelector(".lt-invite-entry");
const layers = [];
let order = [];
const opened = (layer) => {
order = order.filter((item) => item !== layer);
if (layer.isOpen()) {
order.push(layer);
for (const other of layers) if (other !== layer && other.isOpen()) other.shut();
}
syncRechargeEntry();
};
const close = (layer) => {
var _a, _b;
layer.shut();
(_a = layer.entry) == null ? void 0 : _a.focus({ preventScroll: true });
(_b = layer.entry) == null ? void 0 : _b.scrollIntoView({ block: "nearest", behavior: "smooth" });
};
const addLayer = (layer) => {
layers.push(layer);
layer.close.addEventListener("click", () => close(layer));
};
const addDetails = (details, entry, title, host) => {
if (!details) return;
const head = node("div", "lt-sheet-head");
const button = closeButton(`\u6536\u8D77${title}`);
head.append(node("b", "", title), button);
if (host) host.prepend(head);
else details.querySelector("summary").after(head);
const layer = { entry, close: button, isOpen: () => details.open, shut: () => {
details.open = false;
} };
addLayer(layer);
details.addEventListener("toggle", () => opened(layer));
};
addDetails(recharge, rechargeEntry, "\u5145\u503C\u79EF\u5206", recharge == null ? void 0 : recharge.querySelector(".drip-recharge-content"));
addDetails(panel.querySelector(".lt-billing-details"), billingEntry, "\u8BA1\u8D39\u8BF4\u660E");
addDetails(panel.querySelector(".lt-record-details"), recordsEntry, "\u5168\u90E8\u8BB0\u5F55");
if (invite && inviteEntry) {
const button = closeButton("\u6536\u8D77\u9080\u8BF7\u5361");
invite.querySelector(".lt-invite-head").append(button);
const layer = { entry: inviteEntry, close: button, isOpen: () => !invite.hidden, shut: () => {
if (!invite.hidden) inviteEntry.click();
} };
addLayer(layer);
new doc.defaultView.MutationObserver(() => opened(layer)).observe(invite, { attributes: true, attributeFilter: ["hidden"] });
}
for (const old of panel.querySelectorAll(".lt-pay-short-close, .lt-invite-nudge-close")) {
old.classList.add("lt-close");
old.replaceChildren(icon("x"));
}
function syncRechargeEntry() {
if (!rechargeEntry || !recharge) return;
const label = recharge.open ? "\u6536\u8D77" : "\u5145\u503C";
if (rechargeEntry.textContent.trim() === label) return;
rechargeEntry.replaceChildren(doc.createTextNode(label));
if (recharge.open) rechargeEntry.append(icon("chevron-down"));
}
syncRechargeEntry();
doc.addEventListener("keydown", (event) => {
var _a, _b;
if (event.key !== "Escape" || panel.classList.contains("cxds-hidden") || !panel.contains(doc.activeElement)) return;
event.preventDefault();
const confirm = panel.querySelector(".lt-v3-clear-confirm");
if (confirm && !confirm.hidden) {
(_a = confirm.querySelector("button:last-child")) == null ? void 0 : _a.click();
return;
}
const top = order.filter((layer) => layer.isOpen()).pop();
if (top) {
close(top);
return;
}
(_b = panel.querySelector('[data-action="hide"]')) == null ? void 0 : _b.click();
});
}
var REMEMBER_KEY = "drip7boi:dialogue-rounds";
var QUICK = [3, 5, 8, 10];
function mountPanelRounds(panel) {
const doc = panel.ownerDocument;
const win = doc.defaultView;
const h = (tag, className = "", text = "") => {
const el = doc.createElement(tag);
if (className) el.className = className;
if (text) el.textContent = text;
return el;
};
const button = (className, text) => {
const el = h("button", className, text);
el.type = "button";
return el;
};
const root = h("div", "lt-ui lt-rounds");
root.dataset.theme = "golden-wing";
root.hidden = true;
const card = h("div", "lt-rounds-card");
card.setAttribute("role", "dialog");
card.setAttribute("aria-modal", "true");
card.setAttribute("aria-labelledby", "lt-rounds-title");
const eyebrow = h("p", "lt-rounds-eyebrow");
const title = h("h2", "lt-rounds-title", "\u8FD9\u6B21\u804A\u51E0\u8F6E\uFF1F");
title.id = "lt-rounds-title";
const desc = h("p", "lt-rounds-desc", "AI \u4EE5\u4F60\u7684\u8EAB\u4EFD\u53D1\u4E00\u6761\u6D88\u606F\u7B97\u4E00\u8F6E\uFF0C\u6BCF\u8F6E\u6263 1 \u79EF\u5206\u3002\u591A\u804A\u51E0\u8F6E\uFF0C\u8BA8\u8BBA\u66F4\u5145\u5206\u3002");
const stepper = h("div", "lt-rounds-stepper");
const minus = button("lt-rounds-step", "\u2212");
minus.setAttribute("aria-label", "\u5C11\u4E00\u8F6E");
const plus = button("lt-rounds-step", "+");
plus.setAttribute("aria-label", "\u591A\u4E00\u8F6E");
const value = h("output", "lt-rounds-value");
const count = h("b");
value.append(count, h("span", "", "\u8F6E"));
stepper.append(minus, value, plus);
const quick = h("div", "lt-rounds-quick");
const chips = QUICK.map((n) => {
const chip = button("lt-rounds-chip", `${n} \u8F6E`);
chip.dataset.rounds = String(n);
quick.append(chip);
return chip;
});
const summary = h("div", "lt-rounds-summary");
const cost = h("span");
const balanceText = h("span", "lt-rounds-balance");
summary.append(cost, balanceText);
const note = h("p", "lt-rounds-note");
const actions = h("div", "lt-rounds-actions");
const cancel = button("lt-button lt-button--ghost lt-rounds-cancel", "\u4E0D\u7528\u4E86");
const start = button("lt-button lt-button--primary lt-rounds-start", "");
actions.append(cancel, start);
card.append(eyebrow, title, desc, stepper, quick, summary, note, actions);
root.append(card);
doc.body.append(root);
let detail = null;
let rounds = 5;
const min = () => Math.max(1, ((detail == null ? void 0 : detail.selfCount) || 0) + 1);
const max = () => Math.max(min(), Number(detail == null ? void 0 : detail.max) || 20);
const render = () => {
const done = (detail == null ? void 0 : detail.selfCount) || 0;
const charge = Math.max(0, rounds - done);
const balance = Number(detail == null ? void 0 : detail.balance);
count.textContent = String(rounds);
minus.disabled = rounds <= min();
plus.disabled = rounds >= max();
for (const chip of chips) {
const n = Number(chip.dataset.rounds);
chip.disabled = n < min() || n > max();
chip.classList.toggle("is-on", n === rounds);
chip.setAttribute("aria-pressed", String(n === rounds));
}
cost.textContent = `\u5171\u6263 ${charge} \u79EF\u5206`;
const known = Number.isFinite(balance) && (detail == null ? void 0 : detail.balance) !== null && (detail == null ? void 0 : detail.balance) !== "";
balanceText.textContent = known ? `\u4F59\u989D ${balance} \u79EF\u5206` : "";
const short = known && balance < charge;
summary.classList.toggle("is-short", short);
note.textContent = short ? `\u4F59\u989D\u53EA\u591F\u518D\u804A ${Math.max(0, balance)} \u8F6E\uFF0C\u804A\u5230\u4E00\u534A\u79EF\u5206\u7528\u5B8C\u4F1A\u6682\u505C\uFF0C\u53EF\u4EE5\u5148\u5145\u503C\u6216\u5C11\u804A\u51E0\u8F6E` : done ? `\u5DF2\u7ECF\u804A\u4E86 ${done} \u8F6E\uFF0C\u8FD9\u6B21\u53EA\u6263\u65B0\u589E\u7684 ${charge} \u8F6E` : "";
note.hidden = !note.textContent;
start.textContent = `\u5F00\u59CB\uFF0C\u6263 ${charge} \u79EF\u5206`;
};
const set = (n) => {
rounds = Math.min(max(), Math.max(min(), Math.round(n) || min()));
render();
};
const close = () => {
root.hidden = true;
detail = null;
win.removeEventListener("keydown", onKey, true);
};
const decide = (chosen) => {
if (!detail) return;
const id = detail.id;
if (chosen) {
try {
win.localStorage.setItem(REMEMBER_KEY, String(chosen));
} catch (e) {
}
}
close();
win.dispatchEvent(new CustomEvent("drip7boi:dialogue-rounds-decision", { detail: { id, rounds: chosen } }));
};
const trusted = (handler) => (event) => {
if (event.isTrusted) handler(event);
};
minus.addEventListener("click", trusted(() => set(rounds - 1)));
plus.addEventListener("click", trusted(() => set(rounds + 1)));
quick.addEventListener("click", trusted((event) => {
var _a, _b;
const chip = (_b = (_a = event.target).closest) == null ? void 0 : _b.call(_a, ".lt-rounds-chip");
if (chip && !chip.disabled) set(Number(chip.dataset.rounds));
}));
start.addEventListener("click", trusted(() => decide(rounds)));
cancel.addEventListener("click", trusted(() => decide(null)));
root.addEventListener("click", trusted((event) => {
if (event.target === root) decide(null);
}));
function onKey(event) {
if (!event.isTrusted || root.hidden) return;
if (event.key === "Escape") {
event.preventDefault();
decide(null);
} else if (event.key === "ArrowUp" || event.key === "ArrowRight") {
event.preventDefault();
set(rounds + 1);
} else if (event.key === "ArrowDown" || event.key === "ArrowLeft") {
event.preventDefault();
set(rounds - 1);
}
}
win.addEventListener("drip7boi:dialogue-rounds", (event) => {
const next = event.detail;
if (!(next == null ? void 0 : next.id)) return;
detail = next;
let remembered = NaN;
try {
remembered = Number(win.localStorage.getItem(REMEMBER_KEY));
} catch (e) {
}
eyebrow.textContent = next.agentName ? `AI \u5B9E\u8DF5 \xB7 \u548C\u201C${next.agentName}\u201D\u5BF9\u8BDD` : "AI \u5B9E\u8DF5\u5BF9\u8BDD";
title.textContent = next.selfCount ? "\u63A5\u7740\u804A\uFF0C\u4E00\u5171\u51E0\u8F6E\uFF1F" : "\u8FD9\u6B21\u804A\u51E0\u8F6E\uFF1F";
set(Number.isFinite(remembered) && remembered > 0 ? remembered : Number(next.rounds) || 5);
root.hidden = false;
win.addEventListener("keydown", onKey, true);
start.focus({ preventScroll: true });
});
win.addEventListener("drip7boi:dialogue-rounds-clear", close);
}
function mountPanelUid(panel, callbacks = {}) {
const doc = panel.ownerDocument;
const win = doc.defaultView;
const account = panel.querySelector(".cxds-license-box");
if (!account || !callbacks.getAccountSnapshot) return;
const h = (tag, className = "", text = "") => {
const el = doc.createElement(tag);
if (className) el.className = className;
if (text) el.textContent = text;
return el;
};
const line = h("div", "lt-uid-line");
const value = h("b");
line.append(h("span", "", "\u5B66\u4E60\u901A UID"), value);
account.prepend(line);
const snapshot = () => callbacks.getAccountSnapshot() || {};
const currentUid = () => {
const uid = String(snapshot().chaoxingUid || "");
return /^\d{5,12}$/.test(uid) ? uid : "";
};
const render = () => {
const uid = currentUid();
value.textContent = uid || "\u672A\u8BC6\u522B\uFF0C\u8BF7\u5237\u65B0\u6216\u91CD\u65B0\u767B\u5F55\u5B66\u4E60\u901A";
line.classList.toggle("is-missing", !uid);
};
render();
for (const type2 of ["drip7boi:balance", "drip7boi:account-changed", "drip7boi:account-ready"]) win.addEventListener(type2, render);
const root = h("div", "lt-ui lt-rounds lt-uid-notice");
root.dataset.theme = "golden-wing";
root.hidden = true;
const card = h("div", "lt-rounds-card");
card.setAttribute("role", "dialog");
card.setAttribute("aria-modal", "true");
card.setAttribute("aria-labelledby", "lt-uid-notice-title");
const title = h("h2", "lt-rounds-title", "\u5B66\u4E60\u901A\u8D26\u53F7\u5DF2\u66F4\u6362");
title.id = "lt-uid-notice-title";
const desc = h("p", "lt-rounds-desc", "\u79EF\u5206\u6309\u5B66\u4E60\u901A\u8D26\u53F7\u5206\u5F00\u8BA1\u7B97\u3002\u73B0\u5728\u7528\u7684\u662F\u8FD9\u4E2A\u8D26\u53F7\u81EA\u5DF1\u7684\u79EF\u5206\uFF0C\u539F\u6765\u8D26\u53F7\u7684\u79EF\u5206\u4E0D\u53D7\u5F71\u54CD\uFF0C\u6362\u56DE\u53BB\u5C31\u80FD\u63A5\u7740\u7528\u3002");
const summary = h("div", "lt-rounds-summary");
const uidText = h("span");
const balanceText = h("span", "lt-rounds-balance");
summary.append(uidText, balanceText);
const actions = h("div", "lt-rounds-actions");
const ok = h("button", "lt-button lt-button--ghost lt-rounds-cancel", "\u77E5\u9053\u4E86");
ok.type = "button";
const recharge = h("button", "lt-button lt-button--primary lt-rounds-start", "\u7ED9\u8FD9\u4E2A\u8D26\u53F7\u5145\u503C");
recharge.type = "button";
actions.append(ok, recharge);
card.append(h("p", "lt-rounds-eyebrow", "\u5927\u9E1F\u52A9\u624B"), title, desc, summary, actions);
root.append(card);
doc.body.append(root);
const fill = () => {
uidText.textContent = `\u5F53\u524D UID ${currentUid() || "\u672A\u8BC6\u522B"}`;
const balance = snapshot().balancePoints;
balanceText.textContent = balance === null || balance === void 0 || balance === "" ? "" : `\u4F59\u989D ${balance} \u79EF\u5206`;
};
const close = () => {
root.hidden = true;
win.removeEventListener("keydown", onKey, true);
};
function onKey(event) {
if (event.isTrusted && event.key === "Escape") {
event.preventDefault();
close();
}
}
ok.addEventListener("click", (event) => {
if (event.isTrusted) close();
});
root.addEventListener("click", (event) => {
if (event.isTrusted && event.target === root) close();
});
recharge.addEventListener("click", (event) => {
var _a, _b;
if (!event.isTrusted) return;
close();
if (panel.classList.contains("cxds-hidden")) (_a = doc.getElementById("cxds-logo")) == null ? void 0 : _a.click();
const drawer = panel.querySelector(".drip-recharge");
if (drawer && !drawer.open) (_b = panel.querySelector('[data-action="show-recharge"]')) == null ? void 0 : _b.click();
});
win.addEventListener("drip7boi:uid-switched", () => {
fill();
root.hidden = false;
win.addEventListener("keydown", onKey, true);
ok.focus({ preventScroll: true });
});
win.addEventListener("drip7boi:balance", () => {
if (!root.hidden) fill();
});
}
var SVG_NS3 = "http://www.w3.org/2000/svg";
var serial = 0;
var wingOutline = "M35 18 C54 43 94 63 120 82 C136 97 130 121 150 133 L165 135 C149 147 132 151 111 150 L73 148 L53 139 L40 126 L29 112 L32 97 C24 87 21 70 23 49 L33 58 C30 42 30 29 35 18 Z";
function svgNode(tag, attributes = {}) {
const node = document.createElementNS(SVG_NS3, tag);
for (const [name, value] of Object.entries(attributes)) node.setAttribute(name, value);
return node;
}
function birdMark(logoUrl) {
const prefix = `lt-bird-${++serial}`;
const svg = svgNode("svg", { viewBox: "0 0 256 256", class: "lt-launcher-mark lt-bird-mark", "aria-hidden": "true", focusable: "false" });
const defs = svgNode("defs");
const wingClip = svgNode("clipPath", { id: `${prefix}-wing`, clipPathUnits: "userSpaceOnUse" });
wingClip.append(svgNode("path", { d: wingOutline }));
const bodyClip = svgNode("clipPath", { id: `${prefix}-body`, clipPathUnits: "userSpaceOnUse" });
bodyClip.append(svgNode("path", { d: `M0 0H256V256H0Z ${wingOutline}`, "clip-rule": "evenodd" }));
defs.append(wingClip, bodyClip);
const image = () => svgNode("image", { href: logoUrl, width: "256", height: "256" });
const wing = svgNode("g", { class: "lt-bird-wing" });
const flap = svgNode("g", { class: "lt-bird-wing-flap" });
const clippedWing = svgNode("g", { "clip-path": `url(#${prefix}-wing)` });
clippedWing.append(image());
flap.append(clippedWing);
wing.append(flap);
const body = svgNode("g", { "clip-path": `url(#${prefix}-body)` });
body.append(image());
const facing = svgNode("g", { class: "lt-bird-facing" });
facing.append(wing, body);
svg.append(defs, facing);
return svg;
}
var birdCss = `
[data-lt-bird]{
--lt-duration-wing-open:150ms;--lt-duration-wing-close:180ms;--lt-duration-wing-flap:520ms;
--lt-ease-wing-open:cubic-bezier(.2,0,0,1);--lt-ease-wing-flap:cubic-bezier(.42,0,.58,1);
--lt-bird-wing-angle:-30deg;--lt-bird-wing-scale:1.2;--lt-bird-wing-origin:60% 53%;
--lt-bird-wing-flap-up:-20deg;--lt-bird-wing-flap-down:14deg;
--lt-bird-wing-flap-stretch:1.1;--lt-bird-wing-flap-compress:.94;
}
[data-lt-bird] .lt-bird-mark{overflow:visible;pointer-events:none}
[data-lt-bird] .lt-bird-facing{transform-box:view-box;transform-origin:50% 50%;transform:scaleX(1)}
[data-lt-bird][data-bird-facing="left"] .lt-bird-facing{transform:scaleX(-1)}
[data-lt-bird] :is(.lt-bird-wing,.lt-bird-wing-flap){transform-box:view-box;transform-origin:var(--lt-bird-wing-origin);transform:rotate(0deg) scaleX(1)}
[data-lt-bird] .lt-bird-wing{transition:transform var(--lt-duration-wing-close) var(--lt-ease-wing-open)}
[data-lt-bird][data-bird-pose="spread"] .lt-bird-wing{transform:rotate(var(--lt-bird-wing-angle)) scaleX(var(--lt-bird-wing-scale));transition-duration:var(--lt-duration-wing-open)}
#cxds-logo.drip-launcher[data-lt-bird]{overflow:visible}
.lt-ui [data-lt-bird]>img,#cxds-logo.drip-launcher[data-lt-bird]>img{display:none}
#cxds-logo.drip-launcher[data-lt-bird]>.lt-bird-mark{display:block;width:100%;height:100%}
@media(prefers-reduced-motion:reduce){
[data-lt-bird] .lt-bird-wing,[data-lt-bird][data-bird-pose="spread"] .lt-bird-wing{transition:none}
}
`;
function mountBirdMotion(logo, logoUrl, { bindEvents = true } = {}) {
const doc = logo.ownerDocument;
if (!doc.getElementById("lt-bird-motion-style")) {
const style = doc.createElement("style");
style.id = "lt-bird-motion-style";
style.textContent = birdCss;
(doc.head || doc.documentElement).append(style);
}
logo.append(birdMark(logoUrl));
logo.dataset.ltBird = "";
logo.dataset.birdPose = "rest";
logo.dataset.birdFacing = "right";
if (!logo.hasAttribute("aria-label")) logo.setAttribute("aria-label", logo.title || "\u663E\u793A/\u9690\u85CF\u5B66\u4E60\u52A9\u624B");
const flap = logo.querySelector(".lt-bird-wing-flap");
const win = doc.defaultView;
const reducedMotion = win.matchMedia("(prefers-reduced-motion: reduce)");
const token = (name) => win.getComputedStyle(logo).getPropertyValue(name).trim();
let animation = null;
let expanded = false;
let pointer = null;
let directionAnchor = 0;
const setFacing = (direction) => {
if (direction === "left" || direction === "right") logo.dataset.birdFacing = direction;
};
const beginDirection = (x) => {
directionAnchor = x;
};
const trackDirection = (x) => {
const dx = x - directionAnchor;
if (Math.abs(dx) <= 4) return;
setFacing(dx < 0 ? "left" : "right");
directionAnchor = x;
};
const animateFlap = (open) => {
const current = win.getComputedStyle(flap).transform;
animation == null ? void 0 : animation.cancel();
animation = null;
if (reducedMotion.matches || !flap.animate) return;
if (open) {
animation = flap.animate([
{ transform: "rotate(0deg) scaleX(1)", offset: 0 },
{ transform: `rotate(${token("--lt-bird-wing-flap-up")}) scaleX(${token("--lt-bird-wing-flap-stretch")})`, offset: 0.25 },
{ transform: `rotate(${token("--lt-bird-wing-flap-down")}) scaleX(${token("--lt-bird-wing-flap-compress")})`, offset: 0.75 },
{ transform: "rotate(0deg) scaleX(1)", offset: 1 }
], { duration: parseFloat(token("--lt-duration-wing-flap")), iterations: Infinity, easing: token("--lt-ease-wing-flap") });
} else {
animation = flap.animate(
[{ transform: current }, { transform: "rotate(0deg) scaleX(1)" }],
{ duration: parseFloat(token("--lt-duration-wing-close")), easing: token("--lt-ease-wing-open") }
);
}
};
const setPose = (open) => {
if (expanded !== open) animateFlap(open);
expanded = open;
logo.dataset.birdPose = open ? "spread" : "rest";
};
reducedMotion.addEventListener("change", () => {
if (expanded || animation) animateFlap(expanded);
});
if (bindEvents) {
logo.addEventListener("pointerdown", (event) => {
if (event.button !== 0 || pointer !== null) return;
pointer = event.pointerId;
beginDirection(event.clientX);
setPose(true);
});
logo.addEventListener("pointermove", (event) => {
if (event.pointerId === pointer) trackDirection(event.clientX);
});
const finish = (event) => {
if (event.pointerId !== pointer) return;
pointer = null;
setPose(false);
};
for (const type2 of ["pointerup", "pointercancel", "lostpointercapture"]) logo.addEventListener(type2, finish);
const reset = () => {
pointer = null;
setPose(false);
};
logo.addEventListener("keydown", (event) => {
if (event.key === " " || event.key === "Enter") setPose(true);
});
logo.addEventListener("keyup", (event) => {
if (event.key === " " || event.key === "Enter") setPose(false);
});
logo.addEventListener("blur", reset);
win.addEventListener("blur", reset);
doc.addEventListener("visibilitychange", () => {
if (doc.hidden) reset();
});
}
return { setPose, beginDirection, trackDirection };
}
function localIcon(doc, name) {
const template = doc.createElement("template");
template.innerHTML = iconSvg[name];
const svg = template.content.firstElementChild;
svg.classList.add("lt-icon");
svg.setAttribute("aria-hidden", "true");
return svg;
}
function decoratePanel(panel, logo, timeline, logger, callbacks) {
panel.dataset.theme = logo.dataset.theme = "golden-wing";
applyPanelHints(panel);
const doc = panel.ownerDocument;
const node = (tag, className) => {
const el = doc.createElement(tag);
el.className = className;
return el;
};
const action = (name) => panel.querySelector(`[data-action="${name}"]`);
const brand = panel.querySelector(".cxds-title");
brand.classList.add("lt-brand-lockup");
const mark = doc.createElement("img");
mark.src = logo.querySelector("img").src;
mark.alt = "";
brand.prepend(mark);
brand.querySelector("strong").firstChild.textContent = "\u5927\u9E1F\u52A9\u624B ";
const styleButton = (button, variant, iconName) => {
button.classList.add("lt-button", `lt-button--${variant}`);
if (iconName) {
const label2 = button.getAttribute("aria-label") || button.textContent.trim();
button.replaceChildren(localIcon(doc, iconName));
button.setAttribute("aria-label", label2);
button.title = label2;
}
};
styleButton(action("hide"), "icon", "x");
action("hide").title = "\u6536\u8D77\u9762\u677F\uFF0C\u8FD0\u884C\u4FDD\u6301\u539F\u72B6\u6001";
action("hide").setAttribute("aria-label", "\u6536\u8D77\u9762\u677F\uFF0C\u8FD0\u884C\u4FDD\u6301\u539F\u72B6\u6001");
styleButton(action("courses"), "ghost");
action("courses").prepend(localIcon(doc, "list"));
action("courses").classList.add("lt-course-entry");
styleButton(action("home-entry"), "secondary");
styleButton(action("redeem-card"), "primary");
styleButton(action("show-recharge"), "ghost");
styleButton(action("refresh-balance"), "icon", "refresh-cw");
styleButton(action("clear-log"), "ghost");
styleButton(action("log-detail"), "ghost");
panel.querySelector("#cxds-card-code").classList.add("lt-input");
const ai = action("ai-toggle");
ai.classList.add("lt-toggle");
ai.querySelector(".drip-toggle-track").classList.add("lt-toggle-track");
const recharge = panel.querySelector(".drip-recharge");
recharge.classList.add("lt-disclosure");
const rechargeSummary = recharge.querySelector("summary");
rechargeSummary.classList.add("lt-button", "lt-button--ghost");
rechargeSummary.querySelector("svg").replaceWith(localIcon(doc, "chevron-down"));
const account = panel.querySelector(".cxds-license-box");
const accountRow = node("div", "lt-runtime-account-row");
accountRow.append(panel.querySelector(".cxds-license-top"), action("refresh-balance"));
account.prepend(accountRow);
accountRow.after(action("show-recharge"));
const balanceRow = node("div", "lt-runtime-balance-row");
const creditLabel = node("span", "lt-runtime-credit-label");
creditLabel.textContent = "AI \u79EF\u5206";
const balance = account.querySelector("[data-balance]");
balance.parentElement.prepend(balanceRow);
balanceRow.append(creditLabel, balance);
const logs = panel.querySelector(".cxds-log-panel");
logs.hidden = false;
const records = node("details", "lt-record-details lt-disclosure");
const summary = node("summary", "lt-button lt-button--ghost lt-log-summary");
const summaryCopy = node("span", "lt-record-summary-copy");
const label = node("span", "");
label.textContent = "AI \u4E0E\u79EF\u5206\u8BB0\u5F55\uFF08\u672C\u9875\uFF09";
const last = node("span", "lt-record-preview");
last.textContent = "\u672C\u9875\u6682\u65E0 AI \u4F5C\u7B54\u6216\u79EF\u5206\u64CD\u4F5C\u8BB0\u5F55";
summaryCopy.append(label, last);
summary.append(summaryCopy, localIcon(doc, "chevron-down"));
records.append(summary, logs);
const body = panel.querySelector(".cxds-body");
const status = panel.querySelector(".cxds-status-banner");
body.prepend(status, panel.querySelector("[data-current-task]"), action("home-entry"), action("courses"), ai, panel.querySelector("#drip-ai-help"), panel.querySelector(".drip-current"));
body.append(account, records);
for (const selector of [".drip-start", ".cxds-main", ".cxds-actionbar"]) panel.querySelector(selector).classList.add("lt-runtime-empty");
const sync = () => {
var _a;
const entry = (_a = [...logs.querySelectorAll(".drip-timeline-entry")].findLast((row) => !row.hidden)) == null ? void 0 : _a.querySelector("strong");
const text = (entry == null ? void 0 : entry.textContent) || "\u672C\u9875\u6682\u65E0 AI \u4F5C\u7B54\u6216\u79EF\u5206\u64CD\u4F5C\u8BB0\u5F55";
if (last.textContent !== text) last.textContent = text;
const home = action("home-entry");
const primary = home.dataset.running === "false";
if (home.classList.contains("lt-button--primary") !== primary) home.classList.toggle("lt-button--primary", primary);
if (home.classList.contains("lt-button--secondary") === primary) home.classList.toggle("lt-button--secondary", !primary);
logo.setAttribute("aria-expanded", String(!panel.classList.contains("cxds-hidden")));
};
new MutationObserver(sync).observe(panel, { subtree: true, childList: true, characterData: true, attributes: true, attributeFilter: ["aria-checked", "data-running", "class"] });
action("log-detail").addEventListener("click", () => {
timeline.detailed = !timeline.detailed;
action("log-detail").setAttribute("aria-pressed", String(timeline.detailed));
action("log-detail").textContent = timeline.detailed ? "\u6536\u8D77\u8BE6\u60C5" : "\u67E5\u770B\u8BE6\u7EC6\u8BB0\u5F55";
timeline.render();
});
action("clear-log").addEventListener("click", () => logger.clear());
const collapsedNote = node("p", "lt-ui lt-ux-collapse-toast");
collapsedNote.textContent = "\u5DF2\u6536\u8D77\uFF1B\u8BFE\u7A0B\u548C AI \u4ECD\u6309\u539F\u8BBE\u7F6E\u8FD0\u884C\u3002";
collapsedNote.dataset.theme = "golden-wing";
collapsedNote.hidden = true;
doc.body.append(collapsedNote);
let noteTimer;
const showCollapsedNote = () => {
if (!panel.classList.contains("cxds-hidden")) {
collapsedNote.hidden = true;
doc.defaultView.clearTimeout(noteTimer);
return;
}
const rect = logo.getBoundingClientRect();
collapsedNote.style.left = Math.max(8, Math.min(rect.left - 200, doc.defaultView.innerWidth - 264)) + "px";
collapsedNote.style.top = Math.max(8, Math.min(rect.bottom + 8, doc.defaultView.innerHeight - 68)) + "px";
collapsedNote.hidden = false;
doc.defaultView.clearTimeout(noteTimer);
noteTimer = doc.defaultView.setTimeout(() => {
collapsedNote.hidden = true;
}, 3e3);
};
action("hide").addEventListener("click", showCollapsedNote);
logo.addEventListener("click", showCollapsedNote);
sync();
mountPanelUx(panel, timeline, callbacks);
const aiRow = node("div", "lt-runtime-ai-row");
ai.before(aiRow);
aiRow.append(ai, panel.querySelector(".drip-current"));
panel.querySelector("#drip-ai-help").innerHTML = "\u5F00\u542F\u540E\u81EA\u52A8\u9009\u586B\u53EF\u8BC6\u522B\u7684\u6D4B\u9A8C\u6216\u4F5C\u4E1A\u5E76\u5C1D\u8BD5\u63D0\u4EA4\u3002AI \u6BCF\u7B54 1 \u9898\u6263 1 \u79EF\u5206\uFF0C\u6263\u5206\u65E9\u4E8E\u586B\u5199\u6216\u63D0\u4EA4\u3002";
const billing = node("details", "lt-billing-details lt-disclosure");
const billingSummary = node("summary", "lt-button lt-button--ghost");
billingSummary.append(doc.createTextNode("\u8BA1\u8D39\u8BF4\u660E"), localIcon(doc, "chevron-down"));
const billingContent = node("div", "lt-billing-content");
const [usage, payment] = panel.querySelectorAll(".drip-credit-help");
billingContent.append(usage);
billing.append(billingSummary, billingContent);
recharge.before(billing);
recharge.querySelector(".drip-recharge-content").append(payment);
rechargeSummary.firstChild.textContent = "\u5151\u6362\u5361\u5BC6\uFF08\u5F00\u901A / \u5145\u503C\uFF09 ";
const essential = node("p", "lt-payment-essential");
essential.textContent = "\u5361\u5BC6\u9700\u53E6\u884C\u8D2D\u4E70\uFF1B\u6B64\u5904\u5151\u6362\u4E0D\u4F1A\u81EA\u52A8\u4ED8\u6B3E\u3002";
recharge.after(essential);
mountPanelV3(panel, logo, callbacks);
mountPanelMotion(panel, logo, timeline);
mountPanelSimple(panel);
mountPanelInvite(panel, callbacks);
mountPanelPay(panel, logo, callbacks);
mountPanelClose(panel);
mountPanelRounds(panel);
mountPanelUid(panel, callbacks);
}
return __toCommonJS(extension_ui_exports);
})();
var ControlPanel = class {
constructor(settingsStore, logger, callbacks = {}) {
this.store = settingsStore;
this.logger = logger;
this.callbacks = callbacks;
}
mount() {
var _a, _b, _c, _d;
if (document.getElementById("cxds-panel")) return;
this.injectStyle();
const logo = document.createElement("button");
logo.id = "cxds-logo";
logo.className = "drip-launcher lt-ui lt-launcher";
logo.dataset.theme = "golden-wing";
logo.type = "button";
logo.title = "\u663E\u793A/\u9690\u85CF \u5927\u9E1F\u5B66\u4E60\u901A\u52A9\u624B";
logo.innerHTML = `
`;
document.body.appendChild(logo);
LauncherBird.mountBirdMotion(logo, LOGO_DATA_URL);
const panel = document.createElement("section");
panel.id = "cxds-panel";
panel.className = "drip-panel lt-ui lt-panel";
panel.dataset.theme = "golden-wing";
panel.innerHTML = this.template();
document.body.appendChild(panel);
this.logger.bind(panel.querySelector(".cxds-logs"), {
statusBadge: panel.querySelector("[data-status-badge]"),
statusBanner: panel.querySelector("[data-status-banner]"),
quickStatus: panel.querySelector("[data-quick-status]")
});
this.timeline = new LogTimeline(panel);
this.timeline.mount();
this.bind(panel, logo);
LauncherBird.decoratePanel(panel, logo, this.timeline, this.logger, this.callbacks);
this.placePanelNearLogo(panel, logo);
this.updateLicenseState(panel);
this.updateStatus(panel);
if ((_b = (_a = this.callbacks).hasLicense) == null ? void 0 : _b.call(_a)) {
(_d = (_c = this.callbacks).refreshBalance) == null ? void 0 : _d.call(_c).then(() => this.updateLicenseState(panel)).catch(() => this.updateLicenseState(panel));
}
}
template() {
var _a, _b, _c, _d;
const rawBalance = (_b = (_a = this.callbacks).getBalance) == null ? void 0 : _b.call(_a);
const balance = Number(rawBalance || 0);
const chaoxingIdentity = (_d = (_c = this.callbacks).getChaoxingIdentity) == null ? void 0 : _d.call(_c);
const chaoxingUuid = (chaoxingIdentity == null ? void 0 : chaoxingIdentity.value) || "\u672A\u8BC6\u522B";
return `
\u5F00\u542F\u540E\u81EA\u52A8\u8BC6\u522B\u5E76\u5904\u7406\u5F53\u524D\u6D4B\u9A8C\u6216\u4F5C\u4E1A\u3002
AI \u72B6\u6001
\u7B49\u5F85\u6D4B\u9A8C\u6216\u4F5C\u4E1A
\u8FDB\u5165\u6D4B\u9A8C\u6216\u4F5C\u4E1A\u9875\u9762\u540E\uFF0C\u81EA\u52A8\u8BC6\u522B\u9898\u76EE\u3002
\u51C6\u5907\u5C31\u7EEA
AI \u4F5C\u7B54\u79EF\u5206
${this.formatTokens(balance)}
\u6B63\u5728\u521D\u59CB\u5316
\u5151\u6362\u5361\u5BC6
\u53EA\u6709 AI \u7B54\u9898\u6263\u79EF\u5206\uFF0C\u6BCF\u9898 1 \u79EF\u5206\uFF0C\u660E\u7EC6\u89C1\u8FD0\u884C\u8BB0\u5F55\u3002
\u5361\u5BC6\u9700\u8D2D\u4E70\uFF1B\u5728\u8FD9\u91CC\u5151\u6362\u4E0D\u4F1A\u81EA\u52A8\u4ED8\u6B3E\u3002
`;
}
switchRow(name, title, description = "") {
return `
`;
}
numberField(name, label, min, max, step) {
return `
`;
}
bind(panel, logo) {
var _a;
const togglePanel = () => {
const hidden = panel.classList.toggle("cxds-hidden");
logo.classList.toggle("cxds-active", !hidden);
localStorage.setItem("drip7boi.panelHidden", hidden ? "true" : "false");
};
if (localStorage.getItem("drip7boi.panelHidden") === "true") {
panel.classList.add("cxds-hidden");
} else {
logo.classList.add("cxds-active");
}
this.restoreLogoPosition(logo);
const placePanel = () => this.placePanelNearLogo(panel, logo);
placePanel();
this.makeLogoDraggable(logo, togglePanel, placePanel);
window.addEventListener("resize", () => {
this.restoreLogoPosition(logo);
placePanel();
});
this.resizeObserver = new ResizeObserver(placePanel);
this.resizeObserver.observe(panel);
panel.querySelector('[data-action="hide"]').addEventListener("click", togglePanel);
const syncTaskContext = () => {
var _a2, _b;
const target = findStudentWorkTarget(findSameOriginDocuments(document));
const task = panel.querySelector("[data-current-task]");
const title = target || /\/mycourse\/studentstudy$/.test(location.pathname) ? ((_a2 = target == null ? void 0 : target.ownerDocument.querySelector("h3")) == null ? void 0 : _a2.textContent.trim()) || ((_b = document.querySelector("h1")) == null ? void 0 : _b.textContent.trim()) : "";
const text = title ? `${target ? "\u5F53\u524D\u6D4B\u9A8C" : "\u5F53\u524D\u7AE0\u8282"} \xB7 ${title}` : "";
if (task.textContent !== text) task.textContent = text;
task.title = title || "";
task.hidden = !text;
this.timeline.syncTaskSummary();
placePanel();
};
syncTaskContext();
this.taskContextTimer = setInterval(() => {
if (!document.hidden) syncTaskContext();
}, 1e3);
document.addEventListener("visibilitychange", () => {
if (!document.hidden) syncTaskContext();
});
panel.querySelector('[data-action="show-recharge"]').addEventListener("click", () => {
panel.querySelector(".drip-recharge").open = true;
panel.querySelector("#cxds-card-code").focus();
});
panel.querySelector(".drip-recharge").addEventListener("toggle", (event) => {
if (!event.currentTarget.open) panel.querySelector(".cxds-body").scrollTop = 0;
});
const COURSE_LIST_HASH = "#drip-courses";
const isPersonalSpace = location.hostname === "i.chaoxing.com" && location.pathname === "/base";
const openCourseMenu = () => {
const item = Array.from(document.querySelectorAll('[id^="first"].label-item, [id^="first"]')).find((node) => node.textContent.replace(/\s+/g, "") === "\u8BFE\u7A0B") || document.getElementById("first3621803");
item == null ? void 0 : item.click();
return Boolean(item);
};
if (isPersonalSpace && location.hash === COURSE_LIST_HASH) {
let tries = 0;
const pending = setInterval(() => {
if (openCourseMenu() || ++tries >= 40) {
clearInterval(pending);
try {
history.replaceState(history.state, "", location.pathname + location.search);
} catch (e) {
}
}
}, 300);
}
panel.querySelector('[data-action="courses"]').addEventListener("click", () => {
if (isPersonalSpace) {
if (!panel.classList.contains("cxds-hidden")) togglePanel();
openCourseMenu();
} else {
window.open("https://i.chaoxing.com/base" + COURSE_LIST_HASH, "_blank", "noopener,noreferrer");
}
});
const aiToggle = panel.querySelector('[data-action="ai-toggle"]');
const syncAiState = () => {
const enabled = this.store.get("aiAnswerEnabled");
aiToggle.setAttribute("aria-checked", String(enabled));
aiToggle.querySelector("[data-ai-label]").textContent = enabled ? "\u5DF2\u5F00\u542F" : "\u5DF2\u5173\u95ED";
aiToggle.title = enabled ? "\u5173\u95ED AI \u81EA\u52A8\u7B54\u9898" : "\u5F00\u542F AI \u81EA\u52A8\u7B54\u9898";
this.timeline.render();
};
aiToggle.addEventListener("click", () => {
var _a2, _b;
return (_b = (_a2 = this.callbacks).setAiAnswerEnabled) == null ? void 0 : _b.call(_a2, !this.store.get("aiAnswerEnabled"));
});
window.addEventListener("drip7boi:ai-answer-changed", syncAiState);
syncAiState();
const homeButton = panel.querySelector('[data-action="home-entry"]');
if (/\/mycourse\/studentcourse$/.test(location.pathname)) {
homeButton.hidden = false;
let previousMessage = "";
const syncHomeState = () => {
const { dripCourseHomeState: state, dripCourseHomeMessage: message } = document.documentElement.dataset;
const running = state === "running";
homeButton.dataset.running = String(running);
homeButton.textContent = running ? "\u505C\u6B62\u63A5\u7BA1" : "\u7EE7\u7EED\u63A5\u7BA1";
if (message && message !== previousMessage) {
previousMessage = message;
this.logger.log(message, state === "paused" ? "warn" : state === "running" ? "info" : "muted");
}
};
window.addEventListener("drip-course-home-status", syncHomeState);
syncHomeState();
}
homeButton.addEventListener("click", () => {
document.documentElement.dataset.dripCourseHomeAction = homeButton.dataset.running === "true" ? "stop" : "start";
window.dispatchEvent(new CustomEvent("drip-course-home-control"));
});
panel.querySelector('[data-action="redeem-card"]').addEventListener("click", (event) => {
if (!event.isTrusted) return;
return this.withButtonLoading(event.currentTarget, "\u5151\u6362\u4E2D...", () => this.redeemCard(panel));
});
panel.querySelector('[data-action="refresh-balance"]').addEventListener("click", (event) => this.withButtonLoading(event.currentTarget, "\u5237\u65B0\u4E2D...", () => this.refreshBalance(panel)));
panel.querySelectorAll("[data-setting]").forEach((input) => {
input.addEventListener("change", () => {
this.save(panel, false);
this.updateStatus(panel);
});
});
this.refreshConfigNotice(panel);
window.addEventListener("drip7boi:balance", () => {
this.updateLicenseState(panel);
this.updateStatus(panel);
});
window.addEventListener("drip7boi:account-changed", () => {
this.updateLicenseState(panel);
this.updateStatus(panel);
});
window.addEventListener("drip7boi:config", (event) => {
this.renderConfigNotice(panel, event.detail || {});
});
document.addEventListener("keydown", (event) => {
if (event.key === "F9") togglePanel();
});
}
async withButtonLoading(button, label, action) {
if (!button || button.disabled) return;
const original = button.innerHTML;
button.disabled = true;
button.setAttribute("aria-busy", "true");
button.textContent = button.classList.contains("lt-button--icon") ? "\u2026" : label;
this.logger.setStatus("running", "\u8FD0\u884C\u4E2D", label.replace("...", ""));
try {
await (action == null ? void 0 : action());
} finally {
setTimeout(() => {
button.innerHTML = original;
button.removeAttribute("aria-busy");
button.disabled = false;
this.updateStatus(document.getElementById("cxds-panel"));
}, 650);
}
}
updateLicenseState(panel) {
var _a2;
var _a, _b, _c, _d, _e, _f;
const rawBalance = (_b = (_a = this.callbacks).getBalance) == null ? void 0 : _b.call(_a);
const balance = Number(rawBalance || 0);
const hasLicense = Boolean((_d = (_c = this.callbacks).hasLicense) == null ? void 0 : _d.call(_c));
const account = ((_f = (_e = this.callbacks).getAccountSnapshot) == null ? void 0 : _f.call(_e)) || {};
const quotaExhausted = this.isDailyQuotaExhausted(account);
const stateText = !hasLicense ? "\u6B63\u5728\u521D\u59CB\u5316" : rawBalance === null ? "\u6B63\u5728\u540C\u6B65\u79EF\u5206" : quotaExhausted ? "\u4ECA\u65E5\u989D\u5EA6\u5DF2\u7528\u5B8C" : balance > 0 ? "\u53EF\u7528" : "\u79EF\u5206\u4E0D\u8DB3";
panel.querySelectorAll("[data-balance],[data-balance-mini]").forEach((node) => {
node.textContent = !hasLicense ? "\u521D\u59CB\u5316\u4E2D" : rawBalance === null ? "\u540C\u6B65\u4E2D" : this.formatTokens(balance);
node.classList.toggle("is-ready", balance > 0);
});
const state = panel.querySelector("[data-license-state]");
if (state) {
state.textContent = stateText;
state.classList.toggle("is-ready", hasLicense && balance > 0 && !quotaExhausted);
state.classList.toggle("is-warning", hasLicense && (balance <= 0 || quotaExhausted));
}
if (typeof CustomEvent !== "undefined") (_a2 = panel.dispatchEvent) == null ? void 0 : _a2.call(panel, new CustomEvent("drip-ux-refresh"));
}
updateStatus(panel) {
var _a, _b, _c, _d, _e, _f, _g, _h;
if (!panel) return;
if (!((_b = (_a = this.callbacks).getChaoxingIdentity) == null ? void 0 : _b.call(_a))) {
this.logger.setStatus("warning", "\u672A\u8BC6\u522B\u8D26\u53F7", "\u672A\u8BC6\u522B\u5B66\u4E60\u901A\u8D26\u53F7\uFF0C\u8BF7\u5237\u65B0\u6216\u91CD\u65B0\u767B\u5F55\u5B66\u4E60\u901A");
return;
}
if (!((_d = (_c = this.callbacks).hasLicense) == null ? void 0 : _d.call(_c))) {
this.logger.setStatus("warning", "\u6B63\u5728\u521D\u59CB\u5316", "\u6B63\u5728\u521D\u59CB\u5316\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5");
return;
}
if (Number(((_f = (_e = this.callbacks).getBalance) == null ? void 0 : _f.call(_e)) || 0) <= 0) {
this.logger.setStatus("warning", "\u79EF\u5206\u4E0D\u8DB3", "\u79EF\u5206\u4E0D\u8DB3\uFF0C\u8BF7\u8F93\u5165\u5361\u5BC6\u5151\u6362");
return;
}
const account = ((_h = (_g = this.callbacks).getAccountSnapshot) == null ? void 0 : _h.call(_g)) || {};
if (this.isDailyQuotaExhausted(account)) {
this.logger.setStatus(
"warning",
"\u4ECA\u65E5\u989D\u5EA6\u5DF2\u7528\u5B8C",
`\u4ECA\u65E5\u7B54\u9898\u989D\u5EA6\u5DF2\u7528\u5B8C\uFF0C\u660E\u5929\u6062\u590D\uFF1B\u4F60\u7684\u79EF\u5206\u4F59\u989D\u4ECD\u4E3A ${this.formatTokens(account.balancePoints)} \u70B9`
);
return;
}
this.logger.setStatus("ready", "\u51C6\u5907\u5C31\u7EEA", "\u51C6\u5907\u5C31\u7EEA");
}
save(panel, announce = true) {
var _a, _b;
panel.querySelectorAll("[data-setting]").forEach((input) => {
const key = input.dataset.setting;
const fallback = DEFAULT_SETTINGS[key];
const value = input.type === "checkbox" ? input.checked : typeof fallback === "number" ? Number(input.value) : input.value;
this.store.set(key, value);
});
(_b = (_a = this.callbacks).settingsChanged) == null ? void 0 : _b.call(_a);
this.updateLicenseState(panel);
this.updateStatus(panel);
if (announce) this.logger.log("\u8BBE\u7F6E\u5DF2\u4FDD\u5B58", "success");
}
async redeemCard(panel) {
var _a, _b, _c, _d, _e;
const input = panel.querySelector("#cxds-card-code");
const cardCode = (_a = input == null ? void 0 : input.value) == null ? void 0 : _a.trim();
if (!cardCode) {
this.logger.log("\u8BF7\u8F93\u5165\u5361\u5BC6", "warn");
return;
}
if (/^YQ[A-HJ-NP-Z2-9]{4}$/i.test(cardCode) && this.callbacks.bindInvite) {
try {
const bound = await this.callbacks.bindInvite(cardCode);
if (input) input.value = "";
input == null ? void 0 : input.dispatchEvent(new Event("input"));
this.updateLicenseState(panel);
this.updateStatus(panel);
this.logger.log((bound == null ? void 0 : bound.inviteePoints) > 0 ? `\u5DF2\u7ED1\u5B9A\u540C\u5B66\u7684\u9080\u8BF7\uFF0C\u591A\u5F97 ${bound.inviteePoints} \u79EF\u5206` : "\u5DF2\u7ED1\u5B9A\u540C\u5B66\u7684\u9080\u8BF7", "success");
panel.dispatchEvent(new CustomEvent("drip-invite-bound", { detail: bound }));
} catch (error) {
panel.dispatchEvent(new CustomEvent("drip-invite-failed", { detail: { message: this.licenseErrorMessage(error) } }));
}
return;
}
try {
await ((_c = (_b = this.callbacks).redeemCard) == null ? void 0 : _c.call(_b, cardCode));
if (input) input.value = "";
this.updateLicenseState(panel);
this.updateStatus(panel);
this.logger.log("\u5151\u6362\u6210\u529F", "success");
} catch (error) {
this.logger.log(this.licenseErrorMessage(error), "error");
}
}
async refreshBalance(panel) {
var _a, _b;
try {
await ((_b = (_a = this.callbacks).refreshBalance) == null ? void 0 : _b.call(_a));
this.updateLicenseState(panel);
this.updateStatus(panel);
this.logger.log("\u79EF\u5206\u5DF2\u5237\u65B0", "success");
} catch (error) {
this.logger.log(this.licenseErrorMessage(error), "error");
}
}
licenseErrorMessage(error) {
var _a, _b, _c;
if (["BINDING_REQUIRED", "PAIRING_INVALID"].includes(error == null ? void 0 : error.code)) return error.message;
if ((error == null ? void 0 : error.code) === "INVALID_CARD") return "\u5361\u5BC6\u65E0\u6548";
if ((error == null ? void 0 : error.code) === "CARD_ALREADY_USED") return "\u5361\u5BC6\u5DF2\u88AB\u4F7F\u7528";
if ((error == null ? void 0 : error.code) === "CARD_DISABLED") return "\u5361\u5BC6\u5DF2\u7981\u7528";
if ((error == null ? void 0 : error.code) === "CARD_EXPIRED") return "\u5361\u5BC6\u5DF2\u8FC7\u671F";
if ((error == null ? void 0 : error.code) === "INSUFFICIENT_BALANCE") return "\u79EF\u5206\u4E0D\u8DB3\uFF0C\u8BF7\u8054\u7CFB\u5356\u5BB6\u8D2D\u4E70\u5361\u5BC6";
if ((error == null ? void 0 : error.code) === "DAILY_LIMIT_REACHED") {
const balance = (_b = (_a = this.callbacks).getBalance) == null ? void 0 : _b.call(_a);
return `\u4ECA\u65E5\u7B54\u9898\u989D\u5EA6\u5DF2\u7528\u5B8C\uFF0C\u660E\u5929\u6062\u590D\uFF1B\u4F60\u7684\u79EF\u5206\u4F59\u989D\u4ECD\u4E3A ${this.formatTokens(balance)} \u70B9`;
}
if ((error == null ? void 0 : error.code) === "ACCOUNT_UNRECOGNIZED") return "\u672A\u8BC6\u522B\u5B66\u4E60\u901A\u8D26\u53F7\uFF0C\u8BF7\u5237\u65B0\u6216\u91CD\u65B0\u767B\u5F55\u5B66\u4E60\u901A";
if ((error == null ? void 0 : error.code) === "RATE_LIMITED") return `\u8BF7\u6C42\u592A\u5FEB\uFF0C\u8BF7\u7B49\u5F85 ${((_c = error.payload) == null ? void 0 : _c.retryAfterSeconds) || 30} \u79D2\u540E\u91CD\u8BD5`;
if ((error == null ? void 0 : error.code) === "UNAUTHORIZED") return "\u4F7F\u7528\u72B6\u6001\u5DF2\u5931\u6548\uFF0C\u8BF7\u5237\u65B0\u9875\u9762\u91CD\u8BD5";
if ((error == null ? void 0 : error.code) === "DEVICE_BANNED") return "\u5F53\u524D\u8BBE\u5907\u5DF2\u88AB\u9650\u5236\uFF0C\u8BF7\u8054\u7CFB\u5356\u5BB6";
if ((error == null ? void 0 : error.code) === "AI_PROVIDER_ERROR") return "AI \u670D\u52A1\u6682\u65F6\u5F02\u5E38\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5";
if ((error == null ? void 0 : error.code) === "NOT_ACTIVATED") return "\u6B63\u5728\u521D\u59CB\u5316\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5";
if ((error == null ? void 0 : error.code) === "MAINTENANCE") return "\u7CFB\u7EDF\u7EF4\u62A4\u4E2D\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5";
if ((error == null ? void 0 : error.code) === "CLIENT_VERSION_TOO_OLD") return "\u5F53\u524D\u7248\u672C\u8FC7\u4F4E\uFF0C\u8BF7\u66F4\u65B0\u540E\u7EE7\u7EED\u4F7F\u7528";
return (error == null ? void 0 : error.message) || "\u8BF7\u6C42\u5931\u8D25";
}
async refreshConfigNotice(panel, attempt = 0) {
var _a, _b;
try {
const config = await ((_b = (_a = this.callbacks).refreshConfig) == null ? void 0 : _b.call(_a));
this.renderConfigNotice(panel, config || {});
} catch (e) {
if (attempt < 3) setTimeout(() => this.refreshConfigNotice(panel, attempt + 1), 15e3 * (attempt + 1));
}
}
renderConfigNotice(panel, config) {
const node = panel == null ? void 0 : panel.querySelector("[data-config-notice]");
if (!node) return;
const text = config.maintenance && !config.maintenanceAllowed ? "\u7CFB\u7EDF\u7EF4\u62A4\u4E2D\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5" : config.clientNotice || config.notice || "";
node.textContent = text;
node.hidden = !text;
}
formatTokens(value) {
return new Intl.NumberFormat("zh-CN").format(Math.max(0, Number(value) || 0));
}
isDailyQuotaExhausted(account = {}) {
return Number(account.dailyLimitPoints || 0) > 0 && Number(account.dailyRemainingPoints || 0) <= 0;
}
restoreLogoPosition(logo) {
try {
const saved = JSON.parse(localStorage.getItem("drip7boi.logoPosition") || "null");
if (!saved || typeof saved.left !== "number" || typeof saved.top !== "number") return;
const maxLeft = Math.max(0, document.documentElement.clientWidth - logo.offsetWidth);
const maxTop = Math.max(0, window.innerHeight - logo.offsetHeight);
logo.style.left = `${Math.min(Math.max(0, saved.left), maxLeft)}px`;
logo.style.top = `${Math.min(Math.max(0, saved.top), maxTop)}px`;
logo.style.right = "auto";
} catch (e) {
}
}
placePanelNearLogo(panel, logo) {
var _a;
const gap = 12;
const logoRect = logo.getBoundingClientRect();
const width = panel.offsetWidth || 620;
panel.style.maxHeight = `${Math.max(280, Math.min(760, window.innerHeight - 104))}px`;
let height = panel.offsetHeight || 500;
const viewportWidth = document.documentElement.clientWidth;
const catalog = (_a = document.getElementById("coursetree")) == null ? void 0 : _a.getBoundingClientRect();
const rightEdge = (catalog == null ? void 0 : catalog.width) > 0 && catalog.left > width + 24 ? Math.min(viewportWidth - 12, catalog.left - 12) : viewportWidth - 12;
let left = logoRect.right - width;
if (left + width > rightEdge) {
left = rightEdge - width;
}
if (left < 12) left = Math.min(viewportWidth - width - 12, 12);
let top = logoRect.top - height - gap;
if (top < 12) {
top = Math.max(12, Math.min(logoRect.bottom + gap, window.innerHeight - height - 12));
if (top < logoRect.bottom + gap) {
if (logoRect.left - width - gap >= 12) left = logoRect.left - width - gap;
else if (logoRect.right + gap + width <= rightEdge) left = logoRect.right + gap;
else if (window.innerHeight - logoRect.bottom - gap - 12 >= 280) {
panel.style.maxHeight = `${window.innerHeight - logoRect.bottom - gap - 12}px`;
height = panel.offsetHeight;
top = logoRect.bottom + gap;
}
}
}
panel.style.left = `${Math.max(12, Math.min(left, viewportWidth - width - 12))}px`;
panel.style.top = `${Math.max(12, top)}px`;
panel.style.right = "auto";
}
makeLogoDraggable(logo, onClick, onMove) {
let dragging = false;
let moved = false;
let startX = 0;
let startY = 0;
let startLeft = 0;
let startTop = 0;
const moveTo = (left, top) => {
const maxLeft = Math.max(0, document.documentElement.clientWidth - logo.offsetWidth);
const maxTop = Math.max(0, window.innerHeight - logo.offsetHeight);
logo.style.left = `${Math.min(Math.max(0, left), maxLeft)}px`;
logo.style.top = `${Math.min(Math.max(0, top), maxTop)}px`;
logo.style.right = "auto";
onMove == null ? void 0 : onMove();
};
logo.addEventListener("pointerdown", (event) => {
var _a;
if (event.button !== 0) return;
dragging = true;
moved = false;
const rect = logo.getBoundingClientRect();
startX = event.clientX;
startY = event.clientY;
startLeft = rect.left;
startTop = rect.top;
(_a = logo.setPointerCapture) == null ? void 0 : _a.call(logo, event.pointerId);
logo.classList.add("cxds-dragging");
event.preventDefault();
});
logo.addEventListener("pointermove", (event) => {
if (!dragging) return;
const dx = event.clientX - startX;
const dy = event.clientY - startY;
if (Math.abs(dx) + Math.abs(dy) > 4) moved = true;
moveTo(startLeft + dx, startTop + dy);
});
const finish = (event) => {
var _a;
if (!dragging) return;
dragging = false;
(_a = logo.releasePointerCapture) == null ? void 0 : _a.call(logo, event.pointerId);
logo.classList.remove("cxds-dragging");
const rect = logo.getBoundingClientRect();
localStorage.setItem("drip7boi.logoPosition", JSON.stringify({ left: rect.left, top: rect.top }));
onMove == null ? void 0 : onMove();
if (!moved && event.type !== "pointercancel") onClick();
};
logo.addEventListener("pointerup", finish);
logo.addEventListener("pointercancel", finish);
logo.addEventListener("click", (event) => {
if (event.detail === 0) onClick();
});
}
injectStyle() {
LauncherBird.installUiStyles(document);
}
escape(value) {
return String(value).replace(/[&<>"']/g, (c) => ({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" })[c]);
}
};
function describeTimelineLog(row) {
const raw = row.textContent || "";
const stamp = raw.match(/^\[([^\]]+)\]\s*/);
const message = stamp ? raw.slice(stamp[0].length) : raw;
const question = message.match(/第\s*(\d+)\s*\/\s*(\d+)\s*题/);
const paused = /cxds-(?:warn|error)\b/.test(row.className) || /已暂停|已停止|停止答题|积分不足|请求失败/.test(message);
const done = !paused && (/cxds-success\b/.test(row.className) || /已作答|使用本页已有答案/.test(message));
const running = !paused && !done && /请求\s*AI|正在|开始处理|等待|处理中/.test(message);
const state = paused ? "paused" : done ? "done" : running ? "running" : "recorded";
let title;
if (question) {
const stage = paused ? /积分不足/.test(message) ? "\u79EF\u5206\u4E0D\u8DB3" : "\u7B49\u5F85\u5904\u7406" : done ? /已作答/.test(message) ? "\u5DF2\u4F5C\u7B54" : "\u7B54\u6848\u5DF2\u8FD4\u56DE" : running ? "\u6B63\u5728\u83B7\u53D6\u7B54\u6848" : "\u7B54\u9898\u8BB0\u5F55";
title = `\u7B2C ${question[1]} / ${question[2]} \u9898 \xB7 ${stage}`;
} else if (/积分不足/.test(message)) title = "\u79EF\u5206\u4E0D\u8DB3";
else if (/平台已确认提交完成/.test(message)) title = "\u63D0\u4EA4\u5B8C\u6210";
else if (/识别到.*道.*题/.test(message)) title = "\u9898\u76EE\u8BC6\u522B\u5B8C\u6210";
else if (/本题消耗|本轮消耗/.test(message)) title = "\u79EF\u5206\u8BB0\u5F55";
else if (/^\[构建\]/.test(message)) title = "\u8FD0\u884C\u51C6\u5907";
else if (/当前页面/.test(message)) title = "\u9875\u9762\u72B6\u6001";
else title = message.split(/[::,,;;\n]/)[0].slice(0, 36) || "\u8FD0\u884C\u8BB0\u5F55";
return {
message,
time: (stamp == null ? void 0 : stamp[1]) || "",
title,
state,
question: question ? { index: Number(question[1]), total: Number(question[2]) } : null
};
}
function timelineProgress(entries, previous = {}) {
let total = previous.total || 0;
let questions = new Map(previous.questions || []);
let current = previous.current || 0;
for (const entry of entries) {
const scan = entry.message.match(/识别到\s*(\d+)\s*道.*?总题号\s*(\d+)/);
if (scan) {
const nextTotal = Number(scan[2]);
if (nextTotal !== total || Number(scan[1]) === nextTotal) {
questions = /* @__PURE__ */ new Map();
current = 0;
}
total = nextTotal;
}
if (entry.question) {
if (total !== entry.question.total) {
total = entry.question.total;
questions = /* @__PURE__ */ new Map();
}
current = entry.question.index;
questions.set(current, entry.state);
} else if (entry.state === "paused" && current && questions.get(current) === "running") {
questions.set(current, "paused");
}
}
return { total, current, questions, completed: [...questions.values()].filter((state) => state === "done").length };
}
function studentWorkVisible(node) {
var _a, _b, _c, _d, _e;
for (let current = node; current; current = (_b = (_a = current.ownerDocument) == null ? void 0 : _a.defaultView) == null ? void 0 : _b.frameElement) {
if (!current.getClientRects().length || ((_e = (_d = (_c = current.ownerDocument) == null ? void 0 : _c.defaultView) == null ? void 0 : _d.getComputedStyle) == null ? void 0 : _e.call(_d, current).visibility) === "hidden") return false;
}
return Boolean(node);
}
function findStudentWorkTarget(documents) {
for (const doc of documents) {
const panel = doc.querySelector("#workPanel");
const frame = panel == null ? void 0 : panel.querySelector("#frame_content");
if (studentWorkVisible(panel) && (frame == null ? void 0 : frame.getAttribute("src"))) return panel;
const question = doc.querySelector(".mark_table .questionLi, .questionLi, .zquestions .Py-mian1, .TiMu");
if (studentWorkVisible(question)) return question;
}
return null;
}
function studentVisibleLogIndexes(entries, detailed = false, limit = 3) {
const indexes = entries.map((entry, index) => detailed || !studentTimelineEntry(entry).hidden ? index : -1).filter((index) => index >= 0);
return new Set(detailed ? indexes : indexes.slice(-limit));
}
function studentTimelineEntry(entry) {
var _a, _b;
const m = entry.message;
const result = { ...entry, hidden: /^\[构建\]|当前页面|在\s*\d+\s*个框架中/.test(m) };
if (entry.origin === "course") {
if (/正在检查当前章节后续标签页/.test(m)) result.hidden = true;
else if (/开始刷章节测试/.test(m)) {
result.title = "\u5DF2\u627E\u5230\u7AE0\u8282\u6D4B\u9A8C";
result.message = m.replace(/^开始刷章节测试[::]\s*/, "");
result.state = "recorded";
} else if (/正在加载作业框架/.test(m)) {
result.title = "\u6D4B\u9A8C\u9875\u9762\u52A0\u8F7D\u8BB0\u5F55";
result.message = "\u5DF2\u8FDB\u5165\u6D4B\u9A8C\u9875\u9762\uFF0C\u51C6\u5907\u8BC6\u522B\u9898\u76EE\u3002";
result.state = "recorded";
} else if (/挂机功能不稳定/.test(m)) {
result.title = "\u4FDD\u6301\u8BFE\u7A0B\u9875\u9762\u6253\u5F00";
result.message = "\u957F\u65F6\u95F4\u6700\u5C0F\u5316\u7A97\u53E3\u53EF\u80FD\u5F71\u54CD\u4EFB\u52A1\u68C0\u6D4B\u3002";
result.state = "recorded";
result.notice = true;
}
return result;
}
if (entry.question) {
result.message = m.replace(/^第\s*\d+\s*\/\s*\d+\s*题\s*/, "");
if (/积分不足/.test(m)) result.message = "AI \u79EF\u5206\u4E0D\u8DB3\uFF0C\u672C\u9898\u5C1A\u672A\u5B8C\u6210\u3002\u8BF7\u5145\u503C\u540E\u7EE7\u7EED\u5904\u7406\u3002";
else if (/已作答.*跳过/.test(m)) result.message = "\u672C\u9898\u5DF2\u6709\u7B54\u6848\uFF0C\u7EE7\u7EED\u5904\u7406\u4E0B\u4E00\u9898\u3002";
else if (/请求\s*AI/.test(m)) result.message = "\u6B63\u5728\u83B7\u53D6\u672C\u9898\u7B54\u6848\uFF0C\u8BF7\u7A0D\u5019\u3002";
} else if (/收到挂机任务|\[自动答题\]/.test(m)) {
result.title = "\u5F00\u59CB\u5904\u7406\u6D4B\u9A8C";
const task = m.match(/【([^】]+)】/);
result.message = task ? task[1] : "\u5DF2\u53D1\u73B0\u672A\u5B8C\u6210\u7684\u6D4B\u9A8C\u6216\u4F5C\u4E1A\uFF0C\u5F00\u59CB\u8BC6\u522B\u9898\u76EE\u3002";
result.state = "running";
} else if (/识别到\s*\d+\s*道.*题/.test(m)) {
result.title = "\u9898\u76EE\u5DF2\u8BC6\u522B";
result.message = `\u672C\u6B21\u5171 ${((_a = m.match(/总题号\s*(\d+)/)) == null ? void 0 : _a[1]) || ((_b = m.match(/识别到\s*(\d+)/)) == null ? void 0 : _b[1])} \u9898\uFF0C\u6309\u987A\u5E8F\u5904\u7406\u3002`;
} else if (/^积分不足$/.test(m)) {
result.hidden = true;
} else if (/平台已确认提交完成/.test(m)) {
result.title = "\u6D4B\u9A8C\u5DF2\u63D0\u4EA4";
result.message = "\u5DF2\u6536\u5230\u5E73\u53F0\u7684\u63D0\u4EA4\u6210\u529F\u786E\u8BA4\u3002";
} else if (/已点击提交|已确认提交/.test(m)) {
result.title = "\u7B49\u5F85\u63D0\u4EA4\u7ED3\u679C";
result.message = "\u63D0\u4EA4\u64CD\u4F5C\u5DF2\u53D1\u51FA\uFF0C\u6B63\u5728\u7B49\u5F85\u5E73\u53F0\u786E\u8BA4\u3002";
result.state = "running";
}
return result;
}
function studentTaskSummary(entries, enabled = true) {
var _a;
if (!enabled) return { state: "recorded", title: "AI \u4F5C\u7B54\u5DF2\u5173\u95ED", description: "\u53EF\u624B\u52A8\u4F5C\u7B54\uFF1B\u5F00\u542F AI \u5F00\u5173\u540E\u81EA\u52A8\u8BC6\u522B\u9898\u76EE\u3002", badge: "\u5DF2\u5173\u95ED" };
const relevant = entries.filter((entry) => !studentTimelineEntry(entry).hidden && !/本题消耗|本轮消耗|积分记录|积分已刷新|兑换成功/.test(entry.message) && !/^(卡密|请输入卡密|账户同步失败)/.test(entry.message));
const latest = relevant.at(-1);
const question = (_a = entries.findLast((entry) => entry.question)) == null ? void 0 : _a.question;
const blocker = entries.at(-1);
if (blocker && /^积分不足$/.test(blocker.message) || latest && /积分不足/.test(latest.message)) {
return { state: "paused", title: question ? `\u7B2C ${question.index} / ${question.total} \u9898 \xB7 AI \u79EF\u5206\u4E0D\u8DB3` : "AI \u79EF\u5206\u4E0D\u8DB3", description: "AI \u4F5C\u7B54\u5DF2\u6682\u505C\u3002\u8BF7\u5145\u503C\u79EF\u5206\uFF0C\u518D\u7EE7\u7EED\u5904\u7406\u672C\u6B21\u6D4B\u9A8C\u3002", recharge: true };
}
if (latest && /^AI 实践对话/.test(latest.message)) return studentDialogueSummary(relevant, latest.message);
if (latest && /平台已确认提交完成/.test(latest.message)) return { state: "done", title: "\u6D4B\u9A8C\u5DF2\u63D0\u4EA4", description: "\u5E73\u53F0\u5DF2\u786E\u8BA4\u63D0\u4EA4\u5B8C\u6210\uFF0C\u53EF\u67E5\u770B\u6D4B\u9A8C\u7ED3\u679C\u3002" };
if (latest && /AI 作答已开启/.test(latest.message)) return { state: "recorded", title: "\u7B49\u5F85\u6D4B\u9A8C\u6216\u4F5C\u4E1A", description: "AI \u4F5C\u7B54\u5DF2\u5F00\u542F\uFF0C\u8FDB\u5165\u6D4B\u9A8C\u6216\u4F5C\u4E1A\u9875\u9762\u540E\u81EA\u52A8\u8BC6\u522B\u9898\u76EE\u3002" };
if (latest && /识别到.*题.*开始处理|自动答题.*探测到/.test(latest.message)) return { state: "running", title: "\u5DF2\u8BC6\u522B\u9898\u76EE\uFF0C\u51C6\u5907\u4F5C\u7B54", description: "\u7B49\u5F85\u5141\u8BB8\u7684\u8BF7\u6C42\u95F4\u9694\u4E0E\u9898\u76EE\u5904\u7406\uFF1B\u5C1A\u672A\u786E\u8BA4\u5B8C\u6210\u6216\u63D0\u4EA4\u3002" };
if (latest) {
const shown = studentTimelineEntry(latest);
if (shown.state === "paused" && /请求失败|异常|失败/.test(latest.message)) return { state: "paused", title: "AI \u5904\u7406\u672A\u5B8C\u6210", badge: "\u9700\u68C0\u67E5", description: shown.message + "\uFF1B\u8BF7\u68C0\u67E5\u5F53\u524D\u6D4B\u9A8C\uFF0C\u5FC5\u8981\u65F6\u5237\u65B0\u9875\u9762\u91CD\u8BD5\u3002\u6263\u5206\u4EE5\u670D\u52A1\u56DE\u6267\u4E3A\u51C6\u3002" };
if (shown.state === "paused") return { state: "paused", title: shown.title, description: shown.message };
if (shown.state === "running") return { state: "running", title: shown.title, description: shown.message };
if (latest.question || /本页题目处理完成/.test(latest.message)) return { state: "recorded", title: "\u7B54\u6848\u5DF2\u8FD4\u56DE\uFF0C\u63D0\u4EA4\u5F85\u786E\u8BA4", badge: "\u5F85\u786E\u8BA4", description: "\u5DF2\u6709\u7B54\u6848\u4E0D\u4EE3\u8868\u5DF2\u63D0\u4EA4\uFF0C\u8BF7\u7B49\u5F85\u540E\u7EED\u5904\u7406\u548C\u5E73\u53F0\u786E\u8BA4\u3002" };
}
return { state: "recorded", title: "\u7B49\u5F85\u6D4B\u9A8C\u6216\u4F5C\u4E1A", description: "\u8FDB\u5165\u6D4B\u9A8C\u6216\u4F5C\u4E1A\u9875\u9762\u540E\uFF0C\u81EA\u52A8\u8BC6\u522B\u9898\u76EE\u3002" };
}
function studentDialogueSummary(entries, message) {
var _a;
const roles = entries.map((entry) => entry.message.match(/正在以“(.+?)”的身份回复“(.+?)”/)).findLast(Boolean);
const agent = (roles == null ? void 0 : roles[2]) || "\u5BF9\u65B9";
const rounds = (_a = entries.map((entry) => entry.message.match(/^AI 实践对话已完成 (\d+) 轮/)).findLast(Boolean)) == null ? void 0 : _a[1];
const doneTitle = rounds ? `AI \u5B9E\u8DF5\u5BF9\u8BDD\u5DF2\u5B8C\u6210 ${rounds} \u8F6E` : "AI \u5B9E\u8DF5\u5BF9\u8BDD\u5DF2\u5B8C\u6210";
if (/已点击结束/.test(message)) return { state: "done", title: doneTitle, description: "\u5DF2\u70B9\u51FB\u7ED3\u675F\u6309\u94AE\uFF0C\u7B49\u5F85\u5E73\u53F0\u8BC4\u5206\u3002", badge: "\u5DF2\u5B8C\u6210" };
if (/未找到结束按钮/.test(message)) return { state: "done", title: doneTitle, description: "\u9700\u8981\u8BC4\u5206\u65F6\u8BF7\u81EA\u5DF1\u70B9\u9875\u9762\u4E0A\u7684\u7ED3\u675F\u6309\u94AE\u3002", badge: "\u5DF2\u5B8C\u6210" };
if (/^AI 实践对话已完成/.test(message)) return { state: "running", title: doneTitle, description: "\u6B63\u5728\u70B9\u51FB\u7ED3\u675F\u6309\u94AE\u3002" };
const round = message.match(/第 (\d+) \/ (\d+) 轮/);
const title = round ? `AI \u5B9E\u8DF5\u5BF9\u8BDD \xB7 \u7B2C ${round[1]} / ${round[2]} \u8F6E` : "AI \u5B9E\u8DF5\u5BF9\u8BDD";
const reason = message.replace(/^AI 实践对话(?: 第 \d+ \/ \d+ 轮)?(?:请求失败)?[::]\s*/, "");
if (/已停止/.test(message)) return { state: "paused", title, description: reason };
if (/请求失败|超时|未能发送|异常/.test(message)) return { state: "paused", title: "AI \u5B9E\u8DF5\u5BF9\u8BDD\u5DF2\u6682\u505C", badge: "\u9700\u68C0\u67E5", description: reason };
if (/已发送/.test(message)) return { state: "running", title, description: `\u5DF2\u53D1\u9001\uFF0C\u7B49\u5F85\u201C${agent}\u201D\u56DE\u590D\u2026` };
if (roles && /正在以/.test(message)) return { state: "running", title, description: `\u6B63\u5728\u4EE5\u201C${roles[1]}\u201D\u7684\u8EAB\u4EFD\u56DE\u590D\u201C${roles[2]}\u201D\uFF0C\u6BCF\u8F6E\u6263 1 \u79EF\u5206` };
return { state: "running", title, description: reason };
}
function studentCurrentTaskRows(rows, contexts, key) {
return rows.filter((row) => {
if (!contexts.has(row)) contexts.set(row, key);
return key !== null && contexts.get(row) === key;
});
}
function studentSubmissionState(entries, total) {
const confirmed = entries.findLastIndex((entry) => /平台已确认提交完成/.test(entry.message));
const newTask = entries.findLastIndex((entry) => /收到挂机任务|\[自动答题\]|识别到\s*\d+\s*道.*总题号/.test(entry.message));
const submitted = confirmed >= 0 && confirmed > newTask;
return { confirmed: submitted, text: submitted ? "\u5E73\u53F0\u5DF2\u786E\u8BA4\u63D0\u4EA4\u5B8C\u6210" : total ? "\u672C\u6B21\u6D4B\u9A8C \xB7 \u5C1A\u672A\u786E\u8BA4\u63D0\u4EA4" : "\u7B49\u5F85\u8BC6\u522B\u672C\u6B21\u6D4B\u9A8C" };
}
function studentCourseLogRows(documents) {
return documents.flatMap((doc) => {
var _a;
return [...((_a = doc.querySelector("#log")) == null ? void 0 : _a.querySelectorAll("[data-legacy-log]")) || []];
}).filter((row) => !row.hasAttribute("data-ai-log-id"));
}
function studentLogEntry(row, isAI) {
var _a;
if (isAI) return describeTimelineLog(row);
const color = ((_a = row.querySelector("span")) == null ? void 0 : _a.style.color) || "";
const entry = describeTimelineLog({ textContent: row.textContent, className: /red/.test(color) ? "cxds-error" : /green/.test(color) ? "cxds-success" : "" });
return { ...entry, origin: "course", question: null, state: entry.state === "running" ? "recorded" : entry.state };
}
function studentLogOrder(rows, now = /* @__PURE__ */ new Date()) {
const seconds = now.getHours() * 3600 + now.getMinutes() * 60 + now.getSeconds();
const age = (row) => {
const match = (row.textContent || "").match(/^\[(\d{1,2}):(\d{2}):(\d{2})\]/);
return match ? (seconds - (+match[1] * 3600 + +match[2] * 60 + +match[3]) + 86400) % 86400 : 0;
};
return [...rows].sort((a, b) => age(b) - age(a));
}
var LogTimeline = class {
constructor(panel) {
this.panel = panel;
this.source = panel.querySelector(".cxds-logs");
this.logRoot = panel.querySelector(".cxds-log-panel");
this.view = this.logRoot.querySelector(".drip-timeline");
this.nodes = /* @__PURE__ */ new Map();
this.seen = /* @__PURE__ */ new WeakMap();
this.summaryContexts = /* @__PURE__ */ new WeakMap();
}
mount() {
this.render();
this.observer = new MutationObserver((records) => {
if (records.some((record) => record.target === this.source && record.type === "childList" && record.removedNodes.length && !record.addedNodes.length && !record.previousSibling && !record.nextSibling)) this.progress = {};
this.render();
});
this.observer.observe(this.source, { childList: true, subtree: true, characterData: true, attributes: true, attributeFilter: ["class"] });
}
render() {
const atEnd = this.view.scrollHeight - this.view.scrollTop - this.view.clientHeight < 40;
const aiRows = [...this.source.children];
const rows = aiRows;
const rawEntries = rows.map(describeTimelineLog);
const entries = rawEntries.map((entry) => this.detailed ? { ...entry, hidden: false } : studentTimelineEntry(entry));
const visible = studentVisibleLogIndexes(rawEntries, this.detailed);
const enabled = this.panel.querySelector('[data-action="ai-toggle"]').getAttribute("aria-checked") === "true";
this.view.dataset.emptyCopy = "\u672C\u9875\u6682\u65E0 AI \u4F5C\u7B54\u6216\u79EF\u5206\u64CD\u4F5C\u8BB0\u5F55";
this.logRoot.dataset.detailed = String(Boolean(this.detailed));
const lastPaused = entries.findLastIndex((entry) => entry.state === "paused");
const lastRunning = entries.findLastIndex((entry) => entry.state === "running");
const lastDone = entries.findLastIndex((entry) => entry.state === "done");
const active = lastRunning > Math.max(lastPaused, lastDone) && enabled ? lastRunning : -1;
const retained = new Set(rows);
for (const [row, node] of this.nodes) {
if (!retained.has(row)) {
node.remove();
this.nodes.delete(row);
}
}
rows.forEach((row, index) => {
var _a;
const entry = entries[index];
if (entry.hidden || !visible.has(index)) {
(_a = this.nodes.get(row)) == null ? void 0 : _a.remove();
this.nodes.delete(row);
return;
}
const state = entry.state === "running" && index !== active ? "recorded" : entry.state;
let node = this.nodes.get(row);
if (!node) {
node = document.createElement("article");
node.className = "drip-timeline-entry";
node.innerHTML = '
';
this.nodes.set(row, node);
this.view.appendChild(node);
}
node.dataset.state = state;
const setText = (selector, text) => {
const target = node.querySelector(selector);
if (target.textContent !== text) target.textContent = text;
};
setText("strong", entry.title);
setText(".drip-log-state", entry.notice ? "\u63D0\u793A" : state === "done" && /识别到\s*\d+\s*道.*题|本次共 \d+ 题/.test(entry.message) ? "\u8BC6\u522B\u6210\u529F" : entry.question && state === "done" ? /已作答/.test(entry.message) || /本题已有答案/.test(entry.message) ? "\u5DF2\u6709\u7B54\u6848" : "\u5DF2\u8FD4\u56DE" : { done: "\u5DF2\u5B8C\u6210", paused: "\u5DF2\u6682\u505C", running: "\u8FDB\u884C\u4E2D", recorded: "\u8BB0\u5F55" }[state]);
const body = entry.message === entry.title || entry.message.startsWith(entry.title) && entry.message.length - entry.title.length < 12 ? "" : entry.message;
setText("p", body);
node.querySelector("p").hidden = !body;
const courseRow = entry.origin === "course" || /课程|章节|目录|任务点|视频/.test(entry.message) && !/AI|题|积分/.test(entry.message);
setText("time", `${courseRow ? "\u8BFE\u7A0B\u5B66\u4E60" : "AI \u4F5C\u7B54"} \xB7 ${entry.time}`);
});
let previous = null;
for (const row of rows) {
const node = this.nodes.get(row);
if (!node) continue;
if (previous ? previous.nextElementSibling !== node : this.view.firstElementChild !== node) this.view.insertBefore(node, previous ? previous.nextElementSibling : this.view.firstElementChild);
previous = node;
}
const meaningful = rawEntries.filter((entry) => !studentTimelineEntry(entry).hidden).length;
const count = this.detailed ? rawEntries.length : meaningful;
this.logRoot.querySelector("[data-log-count]").textContent = count ? `${count} \u6761` : "";
this.logRoot.querySelector('[data-action="log-detail"]').hidden = !rawEntries.length;
this.logRoot.querySelector('[data-action="clear-log"]').hidden = !rawEntries.length;
this.logRoot.querySelector("[data-log-history]").hidden = true;
const changes = aiRows.map(describeTimelineLog).filter((entry, index) => {
const row = aiRows[index];
const signature = `${row.className}|${row.textContent}`;
if (this.seen.get(row) === signature) return false;
this.seen.set(row, signature);
return true;
});
this.progress = timelineProgress(changes, aiRows.length ? this.progress : {});
this.renderProgress(this.progress);
this.syncTaskSummary();
if (atEnd) this.view.scrollTop = this.view.scrollHeight;
}
renderProgress({ total, current, questions, completed }) {
const segments = this.logRoot.querySelector("[data-question-segments]");
const label = this.logRoot.querySelector("[data-progress-label]");
const count = this.logRoot.querySelector("[data-question-progress]");
this.logRoot.querySelector(".drip-progress").hidden = !total;
label.textContent = total ? "\u672C\u6B21\u6D4B\u9A8C \xB7 \u5DF2\u6709\u7B54\u6848" : "";
count.textContent = total ? `${completed} / ${total}` : "";
const signature = JSON.stringify([total, current, [...questions]]);
if (signature === this.progressSignature) return;
this.progressSignature = signature;
segments.replaceChildren();
for (let index = 1; index <= total; index++) {
const state = questions.get(index) || "pending";
const segment = document.createElement("span");
segment.dataset.state = state;
const status = { done: "\u7B54\u6848\u5DF2\u8FD4\u56DE\u6216\u5DF2\u4F5C\u7B54", paused: "\u5DF2\u6682\u505C", running: "\u8FDB\u884C\u4E2D", recorded: "\u5F85\u68C0\u67E5", pending: "\u5F85\u5904\u7406" }[state];
segment.title = `\u7B2C ${index} \u9898 \xB7 ${status}`;
segment.setAttribute("aria-label", segment.title);
if (index === current) segment.setAttribute("aria-current", "step");
segments.appendChild(segment);
}
}
syncTaskSummary() {
const work = findStudentWorkTarget(findSameOriginDocuments(document));
const url = new URL(location.href);
const study = /\/mycourse\/studentstudy$/.test(url.pathname);
const key = study && !work ? null : `${url.pathname}:${url.searchParams.get("chapterId") || url.searchParams.get("workId") || ""}`;
const rows = studentCurrentTaskRows([...this.source.children], this.summaryContexts, key);
this.renderSummary(rows.map(describeTimelineLog));
}
renderSummary(entries) {
var _a, _b, _c, _d;
const summary = studentTaskSummary(entries, this.panel.querySelector('[data-action="ai-toggle"]').getAttribute("aria-checked") === "true");
const root = this.panel.querySelector(".drip-current");
root.dataset.state = summary.state;
root.hidden = false;
const setText = (selector, text) => {
const node = this.panel.querySelector(selector) || this.logRoot.querySelector(selector);
if (node.textContent !== text) node.textContent = text;
};
setText("[data-current-title]", summary.title);
setText("[data-current-description]", summary.description);
setText("[data-current-state]", summary.badge || { recorded: "\u7B49\u5F85\u9898\u76EE", running: "\u8FDB\u884C\u4E2D", paused: "\u5DF2\u6682\u505C", done: "\u5DF2\u63D0\u4EA4" }[summary.state]);
this.panel.querySelector('[data-action="show-recharge"]').hidden = !summary.recharge;
const submission = studentSubmissionState(entries, (_a = this.progress) == null ? void 0 : _a.total);
this.logRoot.querySelector("[data-submission-state]").hidden = !((_b = this.progress) == null ? void 0 : _b.total) && !submission.confirmed;
setText("[data-submission-state]", submission.text);
this.logRoot.querySelector("[data-submission-state]").dataset.confirmed = String(submission.confirmed);
if (typeof CustomEvent !== "undefined") (_d = (_c = this.panel).dispatchEvent) == null ? void 0 : _d.call(_c, new CustomEvent("drip-ux-refresh"));
}
};
function syncTaskLog(row) {
if (!row || window.top !== window) return;
try {
for (const doc of findSameOriginDocuments(document)) {
const target = doc.querySelector("#log");
if (!target) continue;
const id = row.dataset.taskLogId || (row.dataset.taskLogId = "ai-" + Date.now() + "-" + Math.random().toString(36).slice(2));
let mirror = target.querySelector('[data-ai-log-id="' + id + '"]');
if (!mirror) {
mirror = doc.createElement("div");
mirror.dataset.aiLogId = id;
target.appendChild(mirror);
}
mirror.textContent = row.textContent;
mirror.style.whiteSpace = "pre-wrap";
mirror.style.color = row.className.includes("error") ? "#f87171" : row.className.includes("warn") ? "#fbbf24" : row.className.includes("success") ? "#86efac" : "#cbd5e1";
while (target.children.length > 300) target.firstElementChild.remove();
target.scrollTop = target.scrollHeight;
}
} catch (e) {
}
}
var Logger = class {
constructor() {
this.container = null;
this.statusBadge = null;
this.statusBanner = null;
this.quickStatus = null;
this.lastKey = "";
this.lastRow = null;
this.repeatCount = 1;
}
bind(container, targets = {}) {
this.container = container;
this.statusBadge = targets.statusBadge || null;
this.statusBanner = targets.statusBanner || null;
this.quickStatus = targets.quickStatus || null;
}
log(message, level = "info") {
var _a;
const normalizedLevel = this.normalizeLevel(level);
const displayMessage = this.sanitizeMessage(message);
const key = this.repeatKey(displayMessage, normalizedLevel);
console.log(`[drip7boi] ${displayMessage}`);
if (!this.container) {
this.updateStatusFromLog(displayMessage, normalizedLevel);
return null;
}
if (key && key === this.lastKey && this.lastRow) {
this.repeatCount += 1;
this.lastRow.textContent = this.formatMessage(displayMessage, this.repeatCount);
syncTaskLog(this.lastRow);
this.container.scrollTop = this.container.scrollHeight;
this.updateStatusFromLog(displayMessage, normalizedLevel);
return this.lastRow;
}
this.repeatCount = 1;
this.lastKey = key;
const row = document.createElement("div");
row.className = `cxds-log cxds-${normalizedLevel}`;
row.textContent = this.formatMessage(displayMessage);
this.container.appendChild(row);
syncTaskLog(row);
while (this.container.childElementCount > 150) (_a = this.container.firstElementChild) == null ? void 0 : _a.remove();
this.container.scrollTop = this.container.scrollHeight;
this.lastRow = row;
this.updateStatusFromLog(displayMessage, normalizedLevel);
return row;
}
update(row, message, level = "info") {
if (!row) return this.log(message, level);
const normalizedLevel = this.normalizeLevel(level);
const displayMessage = this.sanitizeMessage(message);
row.className = `cxds-log cxds-${normalizedLevel}`;
row.textContent = this.formatMessage(displayMessage);
this.updateStatusFromLog(displayMessage, normalizedLevel);
syncTaskLog(row);
return row;
}
clear() {
if (!this.container) return;
this.container.textContent = "";
this.lastKey = "";
this.lastRow = null;
this.repeatCount = 1;
}
setStatus(type2 = "ready", badgeText = "\u51C6\u5907\u5C31\u7EEA", bannerText = "") {
const config = this.statusConfig(type2, badgeText, bannerText);
if (this.statusBadge) {
this.statusBadge.textContent = config.badge;
this.statusBadge.className = `cxds-status-badge cxds-status-${config.type}`;
}
if (this.quickStatus) {
this.quickStatus.textContent = config.badge;
this.quickStatus.className = `cxds-status-${config.type}`;
}
if (this.statusBanner) {
this.statusBanner.className = `cxds-status-banner ${config.bannerClass}`;
const text = this.statusBanner.querySelector("[data-status-text]");
if (text) text.textContent = config.banner;
}
}
updateStatusFromLog(message, level) {
if (/收到挂机任务|第.*题.*请求.*AI/.test(String(message))) {
this.setStatus("running", "\u5904\u7406\u4E2D", "AI \u6B63\u5728\u5904\u7406\u4F5C\u4E1A");
return;
}
if (/平台已确认提交完成/.test(String(message))) {
this.setStatus("ready", "\u5DF2\u63D0\u4EA4", "\u5E73\u53F0\u5DF2\u786E\u8BA4\u63D0\u4EA4\u5B8C\u6210");
return;
}
if (/尚未收到平台提交成功|作业框架仍有未作答/.test(String(message))) {
this.setStatus("warning", "\u5F85\u68C0\u67E5", String(message));
return;
}
const text = String(message || "");
if (/卡密|未激活|NOT_ACTIVATED/.test(text)) {
this.setStatus("warning", "\u6B63\u5728\u521D\u59CB\u5316", "\u6B63\u5728\u521D\u59CB\u5316\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5");
return;
}
if (/积分不足|INSUFFICIENT_BALANCE|积分积分不足/.test(text)) {
this.setStatus("warning", "\u79EF\u5206\u4E0D\u8DB3", "\u79EF\u5206\u4E0D\u8DB3\uFF0C\u8BF7\u8F93\u5165\u5361\u5BC6\u5151\u6362");
return;
}
if (/今日.*额度.*用完|DAILY_LIMIT_REACHED/.test(text)) {
this.setStatus("warning", "\u4ECA\u65E5\u989D\u5EA6\u5DF2\u7528\u5B8C", "\u4ECA\u65E5\u7B54\u9898\u989D\u5EA6\u5DF2\u7528\u5B8C\uFF0C\u660E\u5929\u6062\u590D\uFF1B\u79EF\u5206\u4F59\u989D\u4ECD\u4FDD\u7559");
return;
}
if (/请求太快|RATE_LIMITED|请求限制/.test(text)) {
this.setStatus("warning", "\u8BF7\u6C42\u8FC7\u5FEB", "\u8BF7\u6C42\u592A\u5FEB\uFF0C\u5DF2\u6682\u505C\u7247\u523B\u540E\u7EE7\u7EED");
return;
}
if (/未找到可接管的视频|No video|未找到视频/.test(text)) {
this.setStatus("warning", "\u672A\u627E\u5230\u89C6\u9891", "\u5F53\u524D\u9875\u9762\u672A\u627E\u5230\u53EF\u63A5\u7BA1\u89C6\u9891");
return;
}
if (/内嵌页面/.test(text) && /未找到|受限|跨域|允许/.test(text)) {
this.setStatus("warning", "\u672A\u627E\u5230\u89C6\u9891", "\u5F53\u524D\u9875\u9762\u4F4D\u4E8E\u5185\u5D4C\u9875\u9762\u4E2D\uFF0C\u90E8\u5206\u529F\u80FD\u53EF\u80FD\u53D7\u9650");
return;
}
if (level === "error") {
this.setStatus("error", "\u9519\u8BEF", "\u51FA\u73B0\u9519\u8BEF\uFF0C\u8BF7\u67E5\u770B\u8FD0\u884C\u65E5\u5FD7");
return;
}
if (/开始|处理中|请求|扫描|接管|Running/i.test(text)) {
this.setStatus("running", "\u8FD0\u884C\u4E2D", "\u6B63\u5728\u8FD0\u884C");
return;
}
if (level === "success") this.setStatus("ready", "\u51C6\u5907\u5C31\u7EEA", "\u51C6\u5907\u5C31\u7EEA");
}
normalizeLevel(level) {
if (level === "warn" || level === "warning") return "warn";
if (level === "success" || level === "error" || level === "muted") return level;
return "info";
}
repeatKey(message, level) {
const text = String(message || "").replace(/\d+/g, "#").trim();
if (/iframe|内嵌页面|未找到可接管的视频|未找到视频|No video|未识别到题目|扫描/.test(text)) {
return `${level}:${text}`;
}
return "";
}
formatMessage(message, repeat = 1) {
const time = (/* @__PURE__ */ new Date()).toLocaleTimeString();
const suffix = repeat > 1 ? `\uFF08\u91CD\u590D ${repeat} \u6B21\uFF09` : "";
return `[${time}] ${message}${suffix}`;
}
sanitizeMessage(message) {
const text = String(message || "").replace(/DAILY_LIMIT_REACHED/gi, "\u4ECA\u65E5\u7B54\u9898\u989D\u5EA6\u5DF2\u7528\u5B8C").replace(/RATE_LIMITED/gi, "\u8BF7\u6C42\u8FC7\u5FEB").replace(/INSUFFICIENT_BALANCE/gi, "\u79EF\u5206\u4E0D\u8DB3").replace(/DEVICE_BANNED/gi, "\u5F53\u524D\u8BBE\u5907\u5DF2\u88AB\u9650\u5236").replace(/UNAUTHORIZED/gi, "\u767B\u5F55\u72B6\u6001\u5931\u6548").replace(/AI_PROVIDER_ERROR/gi, "AI \u670D\u52A1\u6682\u65F6\u5F02\u5E38").replace(/NOT_ACTIVATED/gi, "\u6B63\u5728\u521D\u59CB\u5316").replace(/Failed to fetch/gi, "\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u540E\u91CD\u8BD5").replace(/NetworkError/gi, "\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25").replace(/AbortError/gi, "\u8BF7\u6C42\u8D85\u65F6").replace(/HTTP_\d+/gi, formatHttpFailure).replace(/\biframe\b/gi, "\u5185\u5D4C\u9875\u9762").replace(/\bNo video\b/gi, "\u672A\u627E\u5230\u89C6\u9891").replace(/\bRunning\b/gi, "\u8FD0\u884C\u4E2D").replace(/\bReady\b/gi, "\u51C6\u5907\u5C31\u7EEA").replace(/\bError\b/gi, "\u9519\u8BEF");
if (/\b(TypeError|ReferenceError|SyntaxError)\b/i.test(text)) {
return "\u811A\u672C\u8FD0\u884C\u5F02\u5E38\uFF0C\u8BF7\u5237\u65B0\u9875\u9762\u540E\u91CD\u8BD5";
}
return text;
}
statusConfig(type2, badgeText, bannerText) {
if (type2 === "missing") return { type: "missing", badge: badgeText, banner: bannerText || "\u6B63\u5728\u521D\u59CB\u5316\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5", bannerClass: "is-error" };
if (type2 === "error") return { type: "error", badge: badgeText, banner: bannerText || "\u51FA\u73B0\u9519\u8BEF", bannerClass: "is-error" };
if (type2 === "warning") return { type: "warning", badge: badgeText, banner: bannerText || "\u9700\u8981\u6CE8\u610F", bannerClass: "is-warning" };
if (type2 === "running") return { type: "running", badge: badgeText, banner: bannerText || "\u6B63\u5728\u8FD0\u884C", bannerClass: "is-running" };
return { type: "ready", badge: badgeText || "\u51C6\u5907\u5C31\u7EEA", banner: bannerText || "\u51C6\u5907\u5C31\u7EEA", bannerClass: "is-success" };
}
};
var SettingsStore = class {
constructor(storage = window.localStorage) {
this.storage = storage;
this.aiPreferenceRevision = 0;
this.aiPendingWrites = 0;
if (typeof window !== "undefined") window.addEventListener("drip7boi:ai-preference", (event) => {
if (this.aiPendingWrites) return;
this.aiPreferenceRevision++;
this.storage.setItem(this.key("aiAnswerEnabled"), String(event.detail.enabled));
});
}
async initializeAiAnswer() {
if (!this.aiPreferenceReady) this.aiPreferenceReady = (async () => {
const revision = this.aiPreferenceRevision;
if (typeof GM_getValue !== "function") return;
try {
const value = await GM_getValue(this.key("aiAnswerEnabled"), this.get("aiAnswerEnabled"));
if (this.aiPreferenceRevision === revision) this.storage.setItem(this.key("aiAnswerEnabled"), String(value === true || value === "true"));
} catch (e) {
}
})();
return this.aiPreferenceReady;
}
key(name) {
return `${STORAGE_PREFIX}${name}`;
}
get(name) {
if (["autoClick", "fuzzyMatch", "alterTitle"].includes(name)) return true;
const fallback = DEFAULT_SETTINGS[name];
const raw = this.storage.getItem(this.key(name));
if (raw === null) return fallback;
if (typeof fallback === "boolean") return raw === "true";
if (typeof fallback === "number") {
const n = Number(raw);
return Number.isFinite(n) ? n : fallback;
}
return raw;
}
set(name, value) {
this.storage.setItem(this.key(name), String(value));
if (name === "aiAnswerEnabled") {
this.aiPreferenceRevision++;
if (typeof GM_setValue === "function") {
this.aiPendingWrites++;
try {
Promise.resolve(GM_setValue(this.key(name), Boolean(value))).catch(() => {
}).finally(() => {
this.aiPendingWrites--;
});
} catch (e) {
this.aiPendingWrites--;
}
}
}
}
all() {
return Object.fromEntries(Object.keys(DEFAULT_SETTINGS).map((key) => [key, this.get(key)]));
}
};
var SITUATIONAL_DIALOGUE_PATH = /\/situationalDialogue\/chat/i;
var DIALOGUE_DEFAULT_ROUNDS = 5;
var DIALOGUE_MAX_ROUNDS = 20;
var DIALOGUE_CANCELLED_MESSAGE = "\u5DF2\u53D6\u6D88\u672C\u6B21 AI \u5B9E\u8DF5\u5BF9\u8BDD\uFF0C\u6CA1\u6709\u6263\u79EF\u5206\uFF1B\u60F3\u8BA9 AI \u4F5C\u7B54\u65F6\uFF0C\u628A AI \u4F5C\u7B54\u5F00\u5173\u5173\u6389\u518D\u6253\u5F00";
var DIALOGUE_REPLY_TIMEOUT_MS = 12e4;
var DIALOGUE_REPLY_STABLE_MS = 1500;
var DIALOGUE_SCENARIO_WAIT_MS = 6e3;
var DIALOGUE_NO_SCENARIO_MESSAGE = "AI \u5B9E\u8DF5\u5BF9\u8BDD\uFF1A\u9875\u9762\u60C5\u666F\u672A\u52A0\u8F7D\uFF08\u76F4\u63A5\u5237\u65B0\u9875\u9762\u4F1A\u4E22\u5931\uFF09\uFF0C\u5E73\u53F0\u65E0\u6CD5\u5F00\u59CB\u5BF9\u8BDD\uFF0C\u672A\u6263\u79EF\u5206\u3002\u8BF7\u56DE\u5230\u4EFB\u52A1\u5217\u8868\u91CD\u65B0\u70B9\u8FDB\u672C\u6B21 AI\u5B9E\u8DF5";
var DIALOGUE_MAX_RATE_LIMIT_RETRIES = 3;
var DIALOGUE_PROMPT_BUDGET = 6500;
function isSituationalDialoguePage(loc = typeof location !== "undefined" ? location : null) {
return SITUATIONAL_DIALOGUE_PATH.test(String((loc == null ? void 0 : loc.pathname) || ""));
}
function dialogueText(node) {
var _a;
if (!node) return "";
const clone = node.cloneNode ? node.cloneNode(true) : node;
(_a = clone.querySelectorAll) == null ? void 0 : _a.call(clone, ".message-bubble__loading").forEach((item) => item.remove());
return String(clone.textContent || "").replace(/\s+/g, " ").trim();
}
function clipText(text, limit) {
const value = String(text || "").trim();
return value.length > limit ? `${value.slice(0, limit)}\u2026` : value;
}
function readDialogueContext(doc = document) {
const text = (selector) => {
var _a;
return String(((_a = doc.querySelector(selector)) == null ? void 0 : _a.textContent) || "").replace(/\s+/g, " ").trim();
};
const roleName = (kind) => text(`.task-detail__role-avatar--${kind} ~ .task-detail__role-info .task-detail__role-name`);
const names = Array.from(doc.querySelectorAll(".task-detail__role-name")).map((node) => String(node.textContent || "").trim());
const selfName = roleName("self") || names[0] || "\u6211";
const agentName = roleName("agent") || names[1] || "\u5BF9\u65B9";
const rows = Array.from(doc.querySelectorAll(".message-list .message-row"));
const messages = rows.map((row) => {
const self = row.classList.contains("message-row--user");
const bubble = row.querySelector(".message-bubble") || row;
return {
role: self ? "self" : "agent",
text: dialogueText(bubble),
loading: Boolean(row.querySelector(".message-bubble__loading"))
};
});
return {
title: text(".task-detail__title"),
description: text(".task-detail__description"),
scenario: text(".task-detail__scenario-text"),
selfName,
agentName,
messages,
selfCount: messages.filter((message) => message.role === "self").length
};
}
function buildDialoguePrompt(context, round, total) {
const head = [
"\u4F60\u6B63\u5728\u5B66\u4E60\u901A\u201CAI\u5B9E\u8DF5\u201D\u60C5\u666F\u5BF9\u8BDD\u7EC3\u4E60\u4E2D\u626E\u6F14\u4E00\u4E2A\u89D2\u8272\uFF0C\u4E0E\u667A\u80FD\u4F53\u626E\u6F14\u7684\u53E6\u4E00\u65B9\u591A\u8F6E\u5BF9\u8BDD\uFF0C\u5E73\u53F0\u4F1A\u6309\u5BF9\u8BDD\u8D28\u91CF\u8BC4\u5206\u3002",
context.title ? `\u4EFB\u52A1\uFF1A${clipText(context.title, 200)}` : "",
context.description ? `\u4EFB\u52A1\u8BF4\u660E\uFF1A${clipText(context.description, 1500)}` : "",
context.scenario ? `\u60C5\u666F\uFF1A${clipText(context.scenario, 1500)}` : "",
`\u4F60\u626E\u6F14\uFF1A${context.selfName}\uFF1B\u5BF9\u65B9\uFF08\u667A\u80FD\u4F53\uFF09\uFF1A${context.agentName}`
].filter(Boolean);
const tail = [
`\u73B0\u5728\u662F\u4F60\u7684\u7B2C ${round} / ${total} \u6B21\u53D1\u8A00\u3002${round >= total ? "\u8FD9\u662F\u6700\u540E\u4E00\u6B21\u53D1\u8A00\uFF0C\u8BF7\u5BF9\u524D\u9762\u7684\u8BA8\u8BBA\u505A\u603B\u7ED3\uFF0C\u7ED9\u51FA\u660E\u786E\u7684\u7ED3\u8BBA\u548C\u4E0B\u4E00\u6B65\u5EFA\u8BAE\u3002" : "\u8BF7\u56DE\u5E94\u5BF9\u65B9\u6700\u540E\u8BF4\u7684\u8BDD\uFF0C\u63A8\u8FDB\u95EE\u9898\u89E3\u51B3\uFF0C\u5FC5\u8981\u65F6\u8FFD\u95EE\u5173\u952E\u4E8B\u5B9E\u3002"}`,
`\u8981\u6C42\uFF1A\u4EE5\u201C${context.selfName}\u201D\u7684\u8EAB\u4EFD\u7528\u7B2C\u4E00\u4EBA\u79F0\u76F4\u63A5\u5BF9\u201C${context.agentName}\u201D\u8BF4\u8BDD\uFF1B\u53E3\u8BED\u5316\u3001\u4E13\u4E1A\u3001\u6709\u9488\u5BF9\u6027\uFF0C\u7D27\u6263\u4EFB\u52A1\u8BF4\u660E\u6D89\u53CA\u7684\u77E5\u8BC6\u70B9\uFF08\u5FC5\u8981\u65F6\u8BF4\u660E\u4F9D\u636E\uFF0C\u5982\u76F8\u5173\u6CD5\u5F8B\u6761\u6587\u6216\u539F\u7406\uFF09\uFF1B200 \u5B57\u4EE5\u5185\uFF1B\u53EA\u8F93\u51FA\u8981\u53D1\u9001\u7684\u8FD9\u6BB5\u8BDD\uFF0C\u4E0D\u8981\u52A0\u89D2\u8272\u540D\u3001\u5F15\u53F7\u3001\u52A8\u4F5C\u63CF\u5199\u6216\u4EFB\u4F55\u89E3\u91CA\u3002`
];
const lines = context.messages.filter((message) => message.text).map((message) => `${message.role === "self" ? context.selfName : context.agentName}\uFF1A${clipText(message.text, 1200)}`);
const fixed = head.join("\n").length + tail.join("\n").length + 20;
while (lines.length > 1 && fixed + lines.join("\n").length > DIALOGUE_PROMPT_BUDGET) lines.shift();
return [...head, "\u5BF9\u8BDD\u8BB0\u5F55\uFF1A", ...lines, ...tail].join("\n");
}
function cleanDialogueReply(answer, context) {
let reply = String(answer || "").trim();
const prefix = new RegExp(`^(?:${[context.selfName, "\u6211"].filter(Boolean).map((name) => name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})\\s*[\uFF1A:]\\s*`);
reply = reply.replace(prefix, "").trim();
if (/^[“"「].*[”"」]$/s.test(reply)) reply = reply.slice(1, -1).trim();
return reply;
}
function dialogueErrorMessage(error) {
const code = error == null ? void 0 : error.code;
if (code === "NOT_ACTIVATED") return "\u6B63\u5728\u521D\u59CB\u5316\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5";
if (code === "INSUFFICIENT_BALANCE") return "\u79EF\u5206\u4E0D\u8DB3\uFF0C\u8BF7\u8F93\u5165\u5361\u5BC6\u5151\u6362";
if (code === "DAILY_LIMIT_REACHED") return "\u4ECA\u65E5\u7B54\u9898\u989D\u5EA6\u5DF2\u7528\u5B8C\uFF0C\u660E\u5929\u6062\u590D\uFF1B\u79EF\u5206\u4F59\u989D\u4ECD\u4FDD\u7559";
if (code === "RATE_LIMITED") return `\u8BF7\u6C42\u592A\u5FEB\uFF0C\u6682\u505C ${error.retryAfterSeconds || 30} \u79D2\u540E\u7EE7\u7EED`;
if (code === "DEVICE_BANNED") return "\u5F53\u524D\u8BBE\u5907\u5DF2\u88AB\u9650\u5236\uFF0C\u8BF7\u8054\u7CFB\u5356\u5BB6";
if (code === "AI_PROVIDER_ERROR") return "AI \u670D\u52A1\u6682\u65F6\u5F02\u5E38\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5";
if (code === "UNAUTHORIZED") return "\u4F7F\u7528\u72B6\u6001\u5DF2\u5931\u6548\uFF0C\u8BF7\u5237\u65B0\u9875\u9762\u91CD\u8BD5";
if (code === "AI_EMPTY_ANSWER") return "AI \u672A\u8FD4\u56DE\u53EF\u53D1\u9001\u7684\u56DE\u590D\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5";
if (code === "ORIGIN_NOT_ALLOWED") return "\u5F53\u524D\u6269\u5C55\u6765\u6E90\u672A\u88AB AI \u670D\u52A1\u653E\u884C\uFF0C\u8BF7\u66F4\u65B0\u670D\u52A1\u7AEF\u540E\u91CD\u8BD5";
return (error == null ? void 0 : error.message) || "\u8BF7\u6C42\u5F02\u5E38";
}
var SituationalDialogueRunner = class {
// chooseRounds:开聊前问用户聊几轮(每轮扣 1 积分),返回轮数或 null(不聊);不传时按默认轮数直接开始。
constructor({ aiService, settingsStore, logger, doc = document, wait = sleep, now = () => Date.now(), rounds = DIALOGUE_DEFAULT_ROUNDS, chooseRounds = null }) {
this.aiService = aiService;
this.settingsStore = settingsStore;
this.logger = logger;
this.doc = doc;
this.wait = wait;
this.now = now;
this.rounds = rounds;
this.chooseRounds = chooseRounds;
this.roundsChosen = !chooseRounds;
this.running = false;
this.finished = false;
this.halted = false;
}
// 完成或出错后不再自动重试;开关重新打开、账户就绪时由 App 调用 reset。
reset() {
if (this.halted && this.chooseRounds) this.roundsChosen = false;
this.halted = false;
if (this.finished && readDialogueContext(this.doc).selfCount < this.rounds) this.finished = this.completedLogged = false;
}
async run(shouldContinue = () => true) {
if (this.running || this.finished || this.halted) return false;
this.running = true;
try {
return await this.loop(shouldContinue);
} finally {
this.running = false;
}
}
async loop(shouldContinue) {
var _a;
let rateLimitRetries = 0;
while (shouldContinue()) {
if (!await this.waitForAgentReply(shouldContinue)) return false;
if (!await this.waitForScenario(shouldContinue)) return false;
const context = readDialogueContext(this.doc);
if (!this.roundsChosen && this.doc.querySelector(".chat-footer textarea.input-textarea, textarea.input-textarea")) {
const chosen = Math.floor(Number(await this.chooseRounds({ rounds: this.rounds, selfCount: context.selfCount, max: DIALOGUE_MAX_ROUNDS, agentName: context.agentName })));
if (!shouldContinue()) return false;
if (!Number.isFinite(chosen) || chosen < 1) {
this.halt(DIALOGUE_CANCELLED_MESSAGE);
return false;
}
this.rounds = Math.min(DIALOGUE_MAX_ROUNDS, Math.max(context.selfCount + 1, chosen));
this.roundsChosen = true;
this.logger.log(`AI \u5B9E\u8DF5\u5BF9\u8BDD\uFF1A\u672C\u6B21\u5171\u804A ${this.rounds} \u8F6E\uFF0C\u6BCF\u8F6E\u6263 1 \u79EF\u5206`, "info");
continue;
}
if (context.selfCount >= this.rounds) return this.complete(context, shouldContinue);
const round = context.selfCount + 1;
const prefix = `AI \u5B9E\u8DF5\u5BF9\u8BDD \u7B2C ${round} / ${this.rounds} \u8F6E`;
const row = this.logger.log(`${prefix}\uFF1A\u6B63\u5728\u4EE5\u201C${context.selfName}\u201D\u7684\u8EAB\u4EFD\u56DE\u590D\u201C${context.agentName}\u201D`, "info");
let result;
try {
result = await this.aiService.askAI(buildDialoguePrompt(context, round, this.rounds), {
type: "dialogue",
index: round,
total: this.rounds
}, { returnFull: true, shouldContinue });
} catch (error) {
if (error.code === "AI_DISABLED") {
this.logger.update(row, `${prefix}\uFF1AAI \u4F5C\u7B54\u5DF2\u505C\u6B62`, "info");
return false;
}
this.logger.update(row, `${prefix}\u8BF7\u6C42\u5931\u8D25\uFF1A${dialogueErrorMessage(error)}`, "error");
if (error.code === "RATE_LIMITED" && rateLimitRetries < DIALOGUE_MAX_RATE_LIMIT_RETRIES) {
rateLimitRetries++;
await this.wait((error.retryAfterSeconds || 30) * 1e3);
continue;
}
this.halted = true;
return false;
}
rateLimitRetries = 0;
this.logReceipt(result, prefix);
const reply = cleanDialogueReply(result == null ? void 0 : result.answer, context);
if (!reply) {
this.logger.update(row, `${prefix}\u8BF7\u6C42\u5931\u8D25\uFF1A${dialogueErrorMessage({ code: "AI_EMPTY_ANSWER" })}`, "error");
this.halted = true;
return false;
}
if (!shouldContinue()) {
this.logger.update(row, `${prefix}\uFF1AAI \u4F5C\u7B54\u5DF2\u505C\u6B62\uFF0C\u56DE\u590D\u672A\u53D1\u9001`, "info");
return false;
}
if (!await this.send(reply, context.selfCount)) {
const initFailed = /初始化对话失败/.test(String(((_a = this.doc.querySelector(".el-message")) == null ? void 0 : _a.textContent) || ""));
this.logger.update(row, initFailed ? `${prefix}\uFF1A\u5E73\u53F0\u521D\u59CB\u5316\u5BF9\u8BDD\u5931\u8D25\uFF0C\u56DE\u590D\u672A\u53D1\u51FA\u3002\u8BF7\u56DE\u5230\u4EFB\u52A1\u5217\u8868\u91CD\u65B0\u70B9\u8FDB\u672C\u6B21 AI\u5B9E\u8DF5` : `${prefix}\uFF1A\u672A\u80FD\u53D1\u9001\u56DE\u590D\uFF0C\u8BF7\u68C0\u67E5\u8F93\u5165\u6846\u540E\u4ECE\u4EFB\u52A1\u5217\u8868\u91CD\u65B0\u8FDB\u5165`, "error");
this.halted = true;
return false;
}
this.logger.update(row, `${prefix}\u5DF2\u53D1\u9001\uFF1A${clipText(reply, 30)}`, "success");
}
return false;
}
logReceipt(result, prefix) {
var _a;
const chargedPoints = (_a = result == null ? void 0 : result.usage) == null ? void 0 : _a.consumedPoints;
const remainingPoints = result == null ? void 0 : result.balancePoints;
if (!Number.isSafeInteger(chargedPoints) || chargedPoints < 0 || !Number.isFinite(remainingPoints) || remainingPoints < 0) return;
const cached = result.usage.cached === true;
const receiptRow = this.logger.log(cached ? `\u79EF\u5206\u8BB0\u5F55\uFF1A\u672C\u8F6E\u4F7F\u7528\u539F\u8BF7\u6C42\u7ED3\u679C\uFF0C\u672A\u91CD\u590D\u6263\u5206\uFF1B\u4F59\u989D ${remainingPoints} \u79EF\u5206` : `\u672C\u8F6E\u6D88\u8017 ${chargedPoints} \u79EF\u5206\uFF0C\u5269\u4F59 ${remainingPoints} \u79EF\u5206`, "muted");
if (receiptRow == null ? void 0 : receiptRow.dataset) Object.assign(receiptRow.dataset, {
chargePoints: String(chargedPoints),
chargeBalance: String(remainingPoints),
chargeCached: String(cached),
chargeQuestion: prefix
});
if (!cached && chargedPoints > 0 && typeof window !== "undefined") window.dispatchEvent(new CustomEvent("drip7boi:ai-charged", { detail: { points: chargedPoints } }));
}
// 最后一条是智能体、已无加载动画、文字 3 秒不再变化,才算对方说完。
async waitForAgentReply(shouldContinue) {
const deadline = this.now() + DIALOGUE_REPLY_TIMEOUT_MS;
let signature = "";
let stableSince = 0;
while (shouldContinue()) {
const context = readDialogueContext(this.doc);
const last = context.messages.at(-1);
const ready = last && last.role === "agent" && !last.loading && last.text;
const nextSignature = `${context.messages.length}:${(last == null ? void 0 : last.text) || ""}`;
if (nextSignature !== signature) {
signature = nextSignature;
stableSince = this.now();
}
if (ready && this.now() - stableSince >= DIALOGUE_REPLY_STABLE_MS) return true;
if (this.now() >= deadline) {
this.halt(`AI \u5B9E\u8DF5\u5BF9\u8BDD\uFF1A\u7B49\u5F85\u201C${context.agentName}\u201D\u56DE\u590D\u8D85\u65F6\uFF0C\u5DF2\u6682\u505C\uFF0C\u53EF\u4ECE\u4EFB\u52A1\u5217\u8868\u91CD\u65B0\u8FDB\u5165\u540E\u7EE7\u7EED`);
return false;
}
await this.wait(500);
}
return false;
}
// 还没有我方发言时,情景为空就不请求 AI(平台初始化必然失败,白扣积分)。
async waitForScenario(shouldContinue) {
const deadline = this.now() + DIALOGUE_SCENARIO_WAIT_MS;
while (shouldContinue()) {
const context = readDialogueContext(this.doc);
if (context.scenario || context.selfCount > 0) return true;
if (this.now() >= deadline) {
this.halt(DIALOGUE_NO_SCENARIO_MESSAGE);
return false;
}
await this.wait(500);
}
return false;
}
async send(reply, selfCountBefore) {
var _a, _b, _c;
const input = this.doc.querySelector(".chat-footer textarea.input-textarea, textarea.input-textarea");
if (!input) return false;
(_a = input.focus) == null ? void 0 : _a.call(input);
setNativeValue(input, reply);
const button = () => this.doc.querySelector(".chat-footer .send-button, .send-button");
for (let attempt = 0; attempt < 10 && ((_b = button()) == null ? void 0 : _b.disabled); attempt++) await this.wait(300);
const sendButton = button();
if (sendButton && !sendButton.disabled) clickElement(sendButton);
else {
const KeyboardEventClass = ((_c = this.doc.defaultView) == null ? void 0 : _c.KeyboardEvent) || KeyboardEvent;
input.dispatchEvent(new KeyboardEventClass("keydown", { key: "Enter", code: "Enter", keyCode: 13, which: 13, bubbles: true }));
}
for (let attempt = 0; attempt < 20; attempt++) {
if (readDialogueContext(this.doc).selfCount > selfCountBefore) return true;
await this.wait(500);
}
return false;
}
async complete(context, shouldContinue) {
if (!this.completedLogged) this.logger.log(`AI \u5B9E\u8DF5\u5BF9\u8BDD\u5DF2\u5B8C\u6210 ${this.rounds} \u8F6E`, "success");
this.completedLogged = true;
for (let attempt = 0; attempt < 20 && shouldContinue(); attempt++) {
const finish = this.doc.querySelector(".finish-button");
if (finish && !finish.disabled) {
clickElement(finish);
await this.wait(800);
const confirm = this.doc.querySelector(".el-message-box__wrapper .el-message-box__btns .el-button--primary");
if (confirm) clickElement(confirm);
this.finished = true;
this.logger.log("AI \u5B9E\u8DF5\u5BF9\u8BDD\u5DF2\u70B9\u51FB\u7ED3\u675F\uFF0C\u7B49\u5F85\u5E73\u53F0\u8BC4\u5206", "success");
return true;
}
await this.wait(500);
}
if (!shouldContinue()) return false;
this.finished = true;
this.logger.log("AI \u5B9E\u8DF5\u5BF9\u8BDD\u672A\u627E\u5230\u7ED3\u675F\u6309\u94AE\uFF0C\u9700\u8981\u8BC4\u5206\u65F6\u8BF7\u81EA\u5DF1\u70B9\u9875\u9762\u4E0A\u7684\u7ED3\u675F\u6309\u94AE", "warn");
return true;
}
halt(message) {
this.halted = true;
this.logger.log(message, "warn");
}
};
var App = class {
constructor() {
this.store = new SettingsStore();
this.logger = new Logger();
this.licenseClient = new LicenseClient();
this.provider = new PaidProxyProvider({
licenseClient: this.licenseClient,
timeout: this.store.get("requestTimeout"),
maxRetries: this.store.get("maxRetries"),
logger: this.logger
});
this.aiService = new AIService(this.provider, this.store, this.logger);
this.answerEngine = new AnswerEngine({ aiService: this.aiService, settingsStore: this.store, logger: this.logger });
this.detector = new PageDetector();
this.aiRunEpoch = 0;
}
start() {
const isTop = window.top === window;
const pageType = this.detector.currentInTree();
this.aiAnswerEnabled = this.store.get("aiAnswerEnabled");
window.addEventListener("drip7boi:ai-preference", (event) => {
if (this.store.get("aiAnswerEnabled") === event.detail.enabled) this.setAiAnswerEnabled(event.detail.enabled, false);
});
let panel = null;
if (isTop) {
panel = new ControlPanel(this.store, this.logger, {
setAiAnswerEnabled: (enabled) => this.setAiAnswerEnabled(enabled),
redeemCard: (cardCode) => this.licenseClient.redeemCard(cardCode),
getInvite: () => this.licenseClient.getInvite(),
bindInvite: (code) => this.licenseClient.bindInvite(code),
createPayOrder: (packageId, method) => this.licenseClient.createPayOrder(packageId, method),
getPayOrder: (orderNo) => this.licenseClient.getPayOrder(orderNo),
payCompleted: () => this.licenseClient.refreshMe().catch(() => null),
resumeAnswering: () => {
var _a;
return (_a = this.resumeAiDetection) == null ? void 0 : _a.call(this);
},
refreshBalance: () => this.licenseClient.refreshMe(),
refreshConfig: () => this.licenseClient.getRemoteConfig({ force: true }),
getBalance: () => this.licenseClient.getCachedBalance(),
getUxContext: () => {
const documents = findSameOriginDocuments(document);
const work = findStudentWorkTarget(documents);
return { path: location.pathname, documents, readOnly: this.answerEngine.isReadOnlyWork((work == null ? void 0 : work.ownerDocument) || document) };
},
getAccountSnapshot: () => this.licenseClient.getAccountSnapshot(),
getChaoxingIdentity: () => this.licenseClient.getChaoxingIdentity(),
hasLicense: () => this.licenseClient.hasToken(),
settingsChanged: () => this.refreshProvider()
});
panel.mount();
}
this.refreshProvider();
if (isTop) {
this.logger.log(pageType === "unknown" ? "\u5F53\u524D\u9875\u9762\u6682\u672A\u8BC6\u522B\u9898\u76EE\uFF0C\u53EF\u624B\u52A8\u6253\u5F00\u9762\u677F\u64CD\u4F5C" : `\u5F53\u524D\u9875\u9762\u7C7B\u578B\uFF1A${pageType}`, "muted");
this.logger.log("[\u6784\u5EFA] \u65E5\u5FD7\u540C\u6B65 0916-c\uFF1A\u5171\u4EAB\u8FDB\u5EA6 / \u4EFB\u52A1\u7ED3\u679C\u5173\u8054", "info");
}
const legacyAutoSubmitEnabled = async () => {
try {
return String(await GM_getValue("courseAutoSubmit", "1")) !== "0";
} catch (e) {
return true;
}
};
const handleAiWorkCall = async (event) => {
if (!isTop || this.store.get("aiAnswerEnabled") === false || this.workCallRunning) return;
this.workCallRunning = true;
const detail = event && event.detail || event && event.data && event.data.detail || {};
this.logger.log(`[\u81EA\u52A8\u8054\u52A8] \u6536\u5230\u6302\u673A\u4EFB\u52A1\u3010${detail.name || "\u7AE0\u8282\u6D4B\u9A8C"}\u3011\uFF0CAI \u667A\u80FD\u505A\u9898\u6A21\u5757\u5F00\u59CB\u5904\u7406...`, "info");
try {
const success = await this.run({ autoSubmit: await legacyAutoSubmitEnabled() });
const targetWins = [window, window.parent, window.top].filter(Boolean);
targetWins.forEach((w) => {
try {
w.dispatchEvent(new CustomEvent("drip-ai-work-completed", {
detail: { success: Boolean(success), name: detail.name, requestId: detail.requestId }
}));
} catch (e) {
}
try {
w.postMessage({
type: "drip-ai-work-completed",
detail: { success: Boolean(success), name: detail.name, requestId: detail.requestId }
}, "*");
} catch (e) {
}
});
} catch (err) {
this.logger.log(`[\u81EA\u52A8\u8054\u52A8] AI \u7B54\u9898\u5F02\u5E38: ${err.message}`, "error");
const targetWins = [window, window.parent, window.top].filter(Boolean);
targetWins.forEach((w) => {
try {
w.dispatchEvent(new CustomEvent("drip-ai-work-completed", {
detail: { success: false, error: err.message, name: detail.name, requestId: detail.requestId }
}));
} catch (e) {
}
try {
w.postMessage({
type: "drip-ai-work-completed",
detail: { success: false, error: err.message, name: detail.name, requestId: detail.requestId }
}, "*");
} catch (e) {
}
});
} finally {
this.workCallRunning = false;
}
};
window.addEventListener("drip-call-ai-work", handleAiWorkCall);
document.addEventListener("drip-call-ai-work", handleAiWorkCall);
const isTrustedWorkCaller = (msg) => {
if (!msg.source || msg.origin !== location.origin) return false;
try {
return findSameOriginDocuments(document).some((doc) => doc.defaultView === msg.source);
} catch (e) {
return false;
}
};
window.addEventListener("message", (msg) => {
if (msg.data && msg.data.type === "drip-call-ai-work" && isTrustedWorkCaller(msg)) {
handleAiWorkCall(msg);
}
});
let autoAnswerDebounce = false;
let attemptedDocuments = /* @__PURE__ */ new WeakSet();
const HIDDEN_CHECK_INTERVAL_MS = 2e4;
let lastHiddenCheckAt = 0;
window.addEventListener("drip7boi:account-ready", () => {
var _a;
this.accountInitialized = true;
if (["BINDING_REQUIRED", "UNAUTHORIZED"].includes(this.answerEngine.lastErrorCode)) this.answerEngine.lastErrorCode = "";
attemptedDocuments = /* @__PURE__ */ new WeakSet();
autoAnswerDebounce = false;
(_a = this.dialogue) == null ? void 0 : _a.reset();
});
const autoCheckQuestions = async () => {
if (!isTop || this.store.get("aiAnswerEnabled") === false || !this.accountInitialized || !this.licenseClient.hasToken() || this.runPromise || this.answerEngine.running || autoAnswerDebounce || this.answerEngine.lastErrorCode) return;
if (document.hidden) {
if (Date.now() - lastHiddenCheckAt < HIDDEN_CHECK_INTERVAL_MS) return;
lastHiddenCheckAt = Date.now();
}
try {
const docs = findSameOriginDocuments(document);
const targetDoc = docs.find((d) => this.answerEngine.hasQuestions(d));
if (targetDoc && !attemptedDocuments.has(targetDoc)) {
attemptedDocuments.add(targetDoc);
autoAnswerDebounce = true;
this.logger.log("[\u81EA\u52A8\u7B54\u9898] \u63A2\u6D4B\u5230\u5F53\u524D\u6846\u67B6\u5B58\u5728\u672A\u5B8C\u6210\u6D4B\u9A8C/\u4F5C\u4E1A\uFF0CAI \u6A21\u5757\u542F\u52A8...", "info");
const success = await this.run({ autoSubmit: await legacyAutoSubmitEnabled() });
const targetWins = [window, window.parent, window.top].filter(Boolean);
targetWins.forEach((w) => {
try {
w.dispatchEvent(new CustomEvent("drip-ai-work-completed", {
detail: { success: Boolean(success), name: "\u7AE0\u8282\u6D4B\u9A8C" }
}));
} catch (e) {
}
try {
w.postMessage({
type: "drip-ai-work-completed",
detail: { success: Boolean(success), name: "\u7AE0\u8282\u6D4B\u9A8C" }
}, "*");
} catch (e) {
}
});
if (this.answerEngine.lastErrorCode === "ORIGIN_NOT_ALLOWED") {
this.logger.log("[\u81EA\u52A8\u7B54\u9898] AI \u670D\u52A1\u672A\u653E\u884C\u5F53\u524D\u6269\u5C55\uFF0C\u5DF2\u505C\u6B62\u81EA\u52A8\u91CD\u8BD5\u548C\u63D0\u4EA4", "error");
} else {
setTimeout(() => {
autoAnswerDebounce = false;
}, 8e3);
}
}
} catch (e) {
}
};
this.resumeAiDetection = () => {
var _a;
attemptedDocuments = /* @__PURE__ */ new WeakSet();
autoAnswerDebounce = false;
this.answerEngine.lastErrorCode = "";
autoCheckQuestions();
(_a = this.dialogue) == null ? void 0 : _a.reset();
this.runDialogue();
};
if (isTop) {
setTimeout(autoCheckQuestions, 2500);
setInterval(autoCheckQuestions, 4e3);
}
if (isTop) {
const checkDialogue = () => {
if (!this.dialogue && this.onDialoguePage()) this.dialogue = new SituationalDialogueRunner({ aiService: this.aiService, settingsStore: this.store, logger: this.logger, chooseRounds: (info) => this.askDialogueRounds(info) });
this.runDialogue();
};
setTimeout(checkDialogue, 1e3);
setInterval(checkDialogue, 2e3);
}
this.initialization = this.licenseClient.initialize();
this.initialization.then((identity) => {
this.accountInitialized = true;
if (!identity.recognized) {
this.logger.setStatus("warning", "\u672A\u8BC6\u522B\u8D26\u53F7", "\u672A\u8BC6\u522B\u5B66\u4E60\u901A\u8D26\u53F7\uFF0C\u8BF7\u5237\u65B0\u6216\u91CD\u65B0\u767B\u5F55\u5B66\u4E60\u901A");
return;
}
if (panel) {
const panelRoot = document.getElementById("cxds-panel");
panel.updateLicenseState(panelRoot);
panel.updateStatus(panelRoot);
}
}).catch((error) => {
this.logger.setStatus("warning", "\u540C\u6B65\u5931\u8D25", "\u8D26\u6237\u540C\u6B65\u5931\u8D25\uFF0C\u8BF7\u5237\u65B0\u9875\u9762\u540E\u91CD\u8BD5");
this.logger.log(`\u8D26\u6237\u540C\u6B65\u5931\u8D25\uFF1A${error.message || "\u8BF7\u6C42\u5F02\u5E38"}`, "warn");
});
return true;
}
refreshProvider() {
this.provider.setConfig({
timeout: this.store.get("requestTimeout"),
maxRetries: this.store.get("maxRetries")
});
}
run(options = {}) {
if (this.store.get("aiAnswerEnabled") === false) return Promise.resolve(false);
if (this.runPromise) return this.runPromise;
const epoch = this.aiRunEpoch;
this.runPromise = this.runOnce(options, epoch).finally(() => {
var _a;
this.runPromise = null;
if (epoch !== this.aiRunEpoch && this.store.get("aiAnswerEnabled") !== false) (_a = this.resumeAiDetection) == null ? void 0 : _a.call(this);
});
return this.runPromise;
}
async runOnce(options = {}, epoch = this.aiRunEpoch) {
var _a;
const cancelled = () => epoch !== this.aiRunEpoch || this.store.get("aiAnswerEnabled") === false;
if (cancelled()) return false;
try {
await this.initialization;
} catch (e) {
this.logger.setStatus("warning", "\u540C\u6B65\u5931\u8D25", "\u521D\u59CB\u5316\u5931\u8D25\uFF0C\u8BF7\u5237\u65B0\u9875\u9762\u540E\u91CD\u8BD5");
return false;
}
if (cancelled()) return false;
if (!this.licenseClient.hasToken()) {
this.logger.setStatus("warning", "\u6B63\u5728\u521D\u59CB\u5316", "\u6B63\u5728\u521D\u59CB\u5316\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5");
const panelRoot = document.getElementById("cxds-panel");
panelRoot == null ? void 0 : panelRoot.classList.remove("cxds-hidden");
return false;
}
this.refreshProvider();
let targets = [];
for (let attempt = 0; attempt < 12; attempt++) {
if (cancelled()) return false;
const documents = findSameOriginDocuments(document);
targets = documents.filter((doc) => this.answerEngine.hasQuestions(doc));
if (targets.length > 0) break;
await sleep(1e3);
}
if (cancelled()) return false;
if (!targets.length) {
this.logger.log("\u672A\u5728\u9875\u9762\u53CA\u6240\u6709\u5B50\u6846\u67B6\u4E2D\u8BC6\u522B\u5230\u9898\u76EE", "muted");
return false;
}
this.logger.log(`\u5728 ${targets.length} \u4E2A\u6846\u67B6\u4E2D\u8BC6\u522B\u5230\u9898\u76EE\uFF0C\u5F00\u59CB\u4F5C\u7B54...`, "info");
await ((_a = this.checkBalanceBefore) == null ? void 0 : _a.call(this, targets));
if (cancelled()) return false;
let allSucceeded = true;
for (const target of targets) {
if (cancelled()) return false;
const ok = await this.answerEngine.scan(target, options);
if (ok === false) allSucceeded = false;
}
return !cancelled() && allSucceeded;
}
onDialoguePage() {
var _a;
return /\/situationalDialogue\/chat/i.test(((_a = window.location) == null ? void 0 : _a.pathname) || "");
}
runDialogue() {
if (!this.dialogue || !this.onDialoguePage() || this.store.get("aiAnswerEnabled") === false || !this.accountInitialized || !this.licenseClient.hasToken()) return;
const epoch = this.aiRunEpoch;
this.refreshProvider();
this.dialogue.run(() => epoch === this.aiRunEpoch && this.store.get("aiAnswerEnabled") !== false && this.onDialoguePage()).catch((error) => this.logger.log(`AI \u5B9E\u8DF5\u5BF9\u8BDD\u5F02\u5E38\uFF1A${error.message}`, "error"));
}
// AI实践开聊前弹窗问聊几轮(面板层 panel-rounds.mjs 负责显示);AI 开关关掉就收起弹窗、按“不聊”处理。
askDialogueRounds(info) {
const id = Array.from(crypto.getRandomValues(new Uint8Array(12)), (x) => x.toString(16).padStart(2, "0")).join("");
return new Promise((resolve) => {
const done = (rounds) => {
window.removeEventListener("drip7boi:dialogue-rounds-decision", onDecision);
window.removeEventListener("drip7boi:ai-answer-changed", onSwitch);
resolve(rounds);
};
const onDecision = (event) => {
var _a;
if (((_a = event.detail) == null ? void 0 : _a.id) === id) done(Number(event.detail.rounds) || null);
};
const onSwitch = () => {
if (this.store.get("aiAnswerEnabled") !== false) return;
window.dispatchEvent(new CustomEvent("drip7boi:dialogue-rounds-clear"));
done(null);
};
window.addEventListener("drip7boi:dialogue-rounds-decision", onDecision);
window.addEventListener("drip7boi:ai-answer-changed", onSwitch);
window.dispatchEvent(new CustomEvent("drip7boi:dialogue-rounds", { detail: { id, ...info, balance: this.licenseClient.getCachedBalance() } }));
});
}
// 开答前算一下余额够不够答完本页:不够就在面板里先问一句(补积分,或先答能答的),最多等 2 分钟。
// 只在开了扫码付款、余额大于 0 时问;余额为 0 时第一题就会停下,走答题中积分不足的提示。同一页只问一次。
async checkBalanceBefore(targets) {
var _a, _b;
if (!((_b = (_a = this.licenseClient.remoteConfig) == null ? void 0 : _a.panelPay) == null ? void 0 : _b.enabled)) return;
const balance = Number(this.licenseClient.getCachedBalance());
if (!Number.isFinite(balance) || balance <= 0) return;
const pending = targets.reduce((sum, doc) => sum + this.answerEngine.countPending(doc), 0);
if (pending <= balance) return;
const key = targets.map((doc) => {
try {
return doc.location.href;
} catch (e) {
return "";
}
}).join("|");
if (this.balancePromptKey === key) return;
this.balancePromptKey = key;
const id = `${Date.now()}`;
await new Promise((resolve) => {
const done = () => {
clearTimeout(timer);
window.removeEventListener("drip7boi:balance-short-decision", onDecision);
window.removeEventListener("drip7boi:ai-answer-changed", done);
resolve();
};
const onDecision = (event) => {
var _a2;
if (((_a2 = event.detail) == null ? void 0 : _a2.id) === id) done();
};
const timer = setTimeout(done, 12e4);
window.addEventListener("drip7boi:balance-short-decision", onDecision);
window.addEventListener("drip7boi:ai-answer-changed", done);
window.dispatchEvent(new CustomEvent("drip7boi:balance-short", { detail: { id, phase: "before", balance, total: pending, need: pending - balance } }));
});
}
setAiAnswerEnabled(enabled, persist = true) {
var _a;
enabled = Boolean(enabled);
if (persist) this.store.set("aiAnswerEnabled", enabled);
if (this.aiAnswerEnabled === enabled) return;
this.aiAnswerEnabled = enabled;
this.aiRunEpoch++;
if (!enabled) {
this.stopAnswer();
window.dispatchEvent(new CustomEvent("drip7boi:balance-short-clear"));
}
this.logger.log(enabled ? "AI \u4F5C\u7B54\u5DF2\u5F00\u542F\uFF0C\u81EA\u52A8\u8BC6\u522B\u6D4B\u9A8C\u4E0E\u4F5C\u4E1A" : "AI \u4F5C\u7B54\u5DF2\u5173\u95ED\uFF0C\u505C\u6B62\u5F53\u524D\u7B54\u9898\u4E0E\u540E\u7EED\u81EA\u52A8\u4F5C\u7B54", "info");
window.dispatchEvent(new CustomEvent("drip7boi:ai-answer-changed"));
if (enabled) (_a = this.resumeAiDetection) == null ? void 0 : _a.call(this);
}
stopAnswer() {
const stopped = this.answerEngine.stop();
if (stopped) this.logger.log("\u6B63\u5728\u505C\u6B62\u7B54\u9898\u4EFB\u52A1", "info");
return stopped;
}
};
async function bootstrap() {
if (!/chaoxing\.com|edu\.cn/i.test(location.hostname)) return;
if (window.top !== window) return;
if (window.__drip7boiAppStarted) return;
const app = window.__drip7boiApp || new App();
window.__drip7boiApp = app;
await app.store.initializeAiAnswer();
if (app.start()) window.__drip7boiAppStarted = true;
}
var bootstrapTries = 0;
async function bootstrapUntilReady() {
await bootstrap();
if (!window.__drip7boiAppStarted && bootstrapTries < 60) {
bootstrapTries += 1;
setTimeout(bootstrapUntilReady, 1e3);
}
}
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", bootstrapUntilReady, { once: true });
} else {
bootstrapUntilReady();
}
})();
})();