// ==UserScript== // @name 全网影视收藏助手 // @namespace FBin001-JVideoCollector // @version 2.0.4 // @description 跨站点影视追剧收藏工具:追剧片单、想看/已看标记,自动记录观看集数与播放进度,海报墙浏览,豆瓣评分,全网搜索与跨站直达,站点换域名也能照常跳转。支持低端影视(低调影视/ddrk)、厂长资源(czzy)、嘀嗒影视、韩剧TV(hanjuc)、LIBVIO、毒舌电影、注视影视、片库、开心影院、追影、太乙电影、极速追剧、懂片帝、韩剧网等站点 video watchlist drama tracker // @author FBin001 // @match *://*/* // @match *://*.didahd.xyz/* // @match *://*.4kcz.com/* // @match *://*.czzy.top/* // @match *://*.cz4k.com/* // @match *://*.hanjuc.com/* // @match *://*.hantv.net/* // @match *://*.hantvz.com/* // @match *://*.ddys.app/* // @match *://*.ddys.ai/* // @match *://*.libvio.host/* // @match *://*.libvio.mov/* // @match *://*.libvios.com/* // @match *://*.libhd.com/* // @match *://*.libviobd.com/* // @match *://*.libvio.in/* // @match *://*.libvio.io/* // @match *://*.duse2.com/* // @match *://*.duse3.com/* // @match *://*.duse4.com/* // @match *://*.dushe3.app/* // @match *://*.dushe05.com/* // @match *://*.dushe06.com/* // @match *://*.gaze.red/* // @match *://*.gazes.store/* // @match *://*.gazes.top/* // @match *://*.gaze.show/* // @match *://*.gazes.host/* // @include /^https?:\/\/([^/]*\.)?didahd\./ // @include /^https?:\/\/([^/]*\.)?(4kcz|czzy|cz4k)\./ // @include /^https?:\/\/([^/]*\.)?(hantv[a-z]?|hanju[a-z])\./ // @include /^https?:\/\/([^/]*\.)?ddys\./ // @include /^https?:\/\/([^/]*\.)?(libvio|libvios|libviobd|libhd)\./ // @include /^https?:\/\/([^/]*\.)?dush?e\d+\./ // @include /^https?:\/\/([^/]*\.)?gazes?\d*\./ // @connect * // @connect www.didahd.xyz // @connect www.4kcz.com // @connect czzy.top // @connect www.cz4k.com // @connect hanjuc.com // @connect hantv.net // @connect www.hantv.net // @connect hantvz.com // @connect www.hantvz.com // @connect ddys.app // @connect ddys.ai // @connect libvio.host // @connect www.libvio.mov // @connect www.libvios.com // @connect www.libhd.com // @connect libviobd.com // @connect www.libvio.in // @connect www.libvio.io // @connect www.duse2.com // @connect www.duse3.com // @connect www.duse4.com // @connect www.dushe3.app // @connect www.dushe05.com // @connect www.dushe06.com // @connect gaze.red // @connect gazes.store // @connect gazes.top // @connect gaze.show // @connect gazes.host // @connect 4k01.pianku.online // @connect 4k.pianku.online // @connect 4k02.pianku.online // @connect 4k03.pianku.online // @connect tv.time1080.xyz // @connect zndy.top // @connect zhuiying3.cc // @connect www.vv3nwjk.com // @connect jisuzhuiju.com // @connect www.kankanya.me // @connect www.kxyy1.cc // @connect dmxq30.com // @connect gitee.com // @connect raw.giteeusercontent.com // @connect api.douban.com // @connect movie.douban.com // @connect frodo.douban.com // @license MIT // @grant GM_setValue // @grant GM_getValue // @grant GM_addValueChangeListener // @grant GM_registerMenuCommand // @grant GM_xmlhttpRequest // @run-at document-start // ==/UserScript== (()=>{var _f=Object.defineProperty; var o=(e,t)=>_f(e,"name",{value:t,configurable:true}); function fr(e,t){return e.replace(/\{\{(\w+)\}\}/g,(n,r)=>t[r]??"")} o(fr,"interpolate"); var kf={"&":"&","<":"<",">":">",'"':""","'":"'"}; function he(e){if(e===void 0||e===null)return"";return String(e).replace(/[&<>"']/g,t=>kf[t])} o(he,"escapeHtml"); function _n(e){const t=String(e||"").trim();return/^(https?:\/\/|data:image\/|blob:)/i.test(t)?t:""} o(_n,"safeUrl"); function tn(e){const t=typeof e==="string"?e:e?JSON.stringify(e)||"":"";try{return new TextEncoder().encode(t).length}catch(n){return t.length}} o(tn,"utf8Bytes"); function Ue(e){const t=Number(e)||0;if(t>=1024*1024)return(t/1024/1024).toFixed(2)+"MB";return(t/1024).toFixed(1)+"KB"} o(Ue,"formatBytes"); function Mc(e){if(!e)return"";const t=new Date(e);const n=o(r=>String(r).padStart(2,"0"),"pad");return`${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`} o(Mc,"formatDateShort"); function Ic(e){if(!e)return"";const t=new Date(e);const n=o(r=>String(r).padStart(2,"0"),"pad");return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`} o(Ic,"formatDateFull"); function xt(e){if(!e||e<=0)return"";const t=Math.floor(e);const n=o(r=>String(r).padStart(2,"0"),"pad");return`${n(Math.floor(t/3600))}:${n(Math.floor(t%3600/60))}:${n(t%60)}`} o(xt,"formatDuration"); function nn(e){return(e||"").replace(/\s*[((][^))]*[))]\s*/g,"").trim()} o(nn,"stripParens"); function pr(e){if(e===null||e===void 0)return"";return typeof e==="string"?e:String(e)} o(pr,"asText"); var Cc={\u96F6:0,\u4E00:1,\u4E8C:2,\u4E24:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9}; function Tf(e){let t=0,n=0,r=false;for(const i of String(e)){if(i in Cc){n=Cc[i];r=true}else if(i==="\u5341"){t+=(n||1)*10;n=0;r=true}else if(i==="\u767E"){t+=(n||1)*100;n=0;r=true}else return NaN}return r?t+n:NaN} o(Tf,"cnToNumber"); function Mo(e){const t=String(e==null?"":e);if(/^[0-9]+$/.test(t))return Number(t);return Tf(t)} o(Mo,"epNumber"); var dr="0-9\u96F6\u4E00\u4E8C\u4E24\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341\u767E"; function kn(e){const t=pr(e).trim().match(new RegExp(`^\u7B2C?\\s*([${dr}]+)\\s*\u96C6?$`));if(!t)return"";const n=Mo(t[1]);return n>0?`\u7B2C${n}\u96C6`:""} o(kn,"numberToEpisode"); function mr(e){const t=pr(e).trim();return kn(t)||t} o(mr,"episodeLabel"); function Tn(e){const t=pr(e).trim();return new RegExp(`^\u7B2C\\s*[${dr}]+\\s*\u96C6$`).test(t)||/^S\d+E\d+$/i.test(t)||/^S\d+\s*第\s*\d+\s*集$/i.test(t)} o(Tn,"isEpisodeLabel"); function qe(e){const t=pr(e).trim();const n=o(f=>String(f).padStart(2,"0"),"pad");const r=t.match(/^S(\d{1,2})\s*第\s*(\d{1,3})\s*集$/i)||t.match(/^S(\d{1,2})E(\d{1,3})$/i);if(r)return`S${n(r[1])}E${n(r[2])}`;const i=t.match(/^S(\d{1,2})$/i);if(i)return`S${n(i[1])}`;const c=t.match(new RegExp(`^\u7B2C?\\s*([${dr}]+)\\s*\u96C6?$`));if(c){const f=Mo(c[1]);return f>0?`E${n(f)}`:t}const a=t.match(new RegExp(`\u7B2C\\s*([${dr}]+)\\s*\u96C6\\s*$`));if(!a)return t;const s=Mo(a[1]);if(!(s>0))return t;const l=Io(J(t));if(l)return`S${n(l)}E${n(s)}`;const d=t.slice(0,a.index).trim();return d?`${d} E${n(s)}`:`E${n(s)}`} o(qe,"formatEpisodeShort"); function Pc(e){const t=(e||"").match(/background-image:\s*url\(["']?([^"')]+)["']?\)/i);return t?t[1]:""} o(Pc,"parseBgImage"); function ke(e){if(!e)return true;if(/load\.gif|loading\.gif|placeholder|^data:image|\.svg$/i.test(e))return true;if(/favicon|(?:^|[/_.-])(?:site[-_]?)?(?:logo|ico|icon|default|blank|loading|placeholder|spacer|avatar|no-?(?:img|pic|poster|cover|image))\d*[.\-_/]/i.test(e))return true;if(/(?:^|[/_.-])(?:banner|ads?|adv)\//i.test(e))return true;return false} o(ke,"isPlaceholderImage"); var De={OK:"ok",MISSING:"missing",BROKEN:"broken",ABANDONED:"abandoned"}; var vr={PAGE:"page"}; function Af(e){const t=e&&e.coverState;return t===De.BROKEN||t===De.MISSING||t===De.ABANDONED} o(Af,"isCoverUnusable"); function An(e){return!!(e&&e.cover&&!ke(e.cover)&&!Af(e))} o(An,"isCoverUsable"); var Lf=/更新至|更新到|全集|完结|在线观看|在线播放|免费观看|抢先版|正版资源|未删减|高清片|中字/g; var Cf=/(4k|8k|1080p?|2160p?|720p?|hdr10?|hdr|dv|杜比视界|杜比全景声|atmos|remux|blu-?ray|bdrip|web-?dl|webrip|hdts|hdtv|hdrip|x26[45]|h\.?26[45])/gi; var Mf=/[\u4e00-\u9fff0-9][::||]+/; var If=/[\u4e00-\u9fff][\s\-()()【】\[\]]+/; var Pf=2; var Of=/[!?!?]+\s*[0-9]{1,2}$/; function Rf(e){return e.replace(Of,"").trim()} o(Rf,"stripSequelSuffix"); function Df(e){const t=Mf.exec(e);const n=If.exec(e);let r=null;if(t&&n)r=t.index<=n.index?t:n;else r=t||n;if(!r)return e;const i=e.slice(0,r.index+1).trim();return i.length>=Pf?i:e} o(Df,"headOfName"); function hr(e){const t=String(e||"").replace(/\s+/g," ").trim();if(!t)return[];const n=Rf(Df(t));return[t,n,n.replace(Lf," ").replace(Cf," ")].map(r=>r.replace(/\s+/g," ").trim()).filter((r,i,c)=>r.length>=2&&c.indexOf(r)===i)} o(hr,"searchVariants"); var Nf={"\u2160":"1","\u2161":"2","\u2162":"3","\u2163":"4","\u2164":"5","\u2165":"6","\u2166":"7","\u2167":"8","\u2168":"9","\u2169":"10","\u216A":"11","\u216B":"12","\u2170":"1","\u2171":"2","\u2172":"3","\u2173":"4","\u2174":"5","\u2175":"6","\u2176":"7","\u2177":"8","\u2178":"9","\u2179":"10","\u217A":"11","\u217B":"12"}; var En={"\u3007":0,"\u4E00":1,"\u4E8C":2,"\u4E09":3,"\u56DB":4,"\u4E94":5,"\u516D":6,"\u4E03":7,"\u516B":8,"\u4E5D":9}; function qf(e){if(e==="\u5341")return 10;const t=/^([一二三四五六七八九])?十([一二三四五六七八九])?$/.exec(e);if(t)return(t[1]?En[t[1]]:1)*10+(t[2]?En[t[2]]:0);if(/^[〇一二三四五六七八九]+$/.test(e)){return Number(Array.from(e).map(n=>En[n]).join(""))}return En[e]!=null?En[e]:null} o(qf,"cnNumToInt"); var Ff=/[\s\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e\u2018\u2019\u201c\u201d\u2020-\u2027\u3000-\u3006\u3008-\u303f\uffe5]/g; function J(e){if(!e)return"";let t=String(e);t=t.replace(/[!-~]/g,n=>String.fromCharCode(n.charCodeAt(0)-65248));t=t.replace(/[Ⅰ-Ⅻⅰ-ⅻ]/g,n=>Nf[n]||n);t=t.replace(/第([〇一二三四五六七八九十]+)(季|集)/g,(n,r,i)=>{const c=qf(r);return c?"\u7B2C"+c+i:n});t=t.replace(Ff,"").toLowerCase();t=t.replace(/([\u4e00-\u9fff])0*(\d{1,2})$/,(n,r,i)=>r+"s"+Number(i));t=t.replace(/第0*(\d{1,2})季/g,(n,r)=>"s"+Number(r));t=t.replace(/season0*(\d{1,2})/g,(n,r)=>"s"+Number(r));t=t.replace(/(^|[^a-z])s0*(\d{1,2})(?![a-z0-9])/g,(n,r,i)=>r+"s"+Number(i));return t} o(J,"normalizeName"); function Io(e){const t=e.match(/(^|[^a-z])s(\d{1,2})(?![a-z0-9])/);return t?Number(t[2]):null} o(Io,"seasonOf"); var Bf=6; function Po(e){return e.replace(/(^|[^a-z])s\d{1,2}(?![a-z0-9])/g,"$1")} o(Po,"stripSeason"); var jf=["\u7279\u522B\u7BC7","\u7279\u522B\u7248","\u7279\u522B\u5B63","\u756A\u5916\u7BC7","\u756A\u5916","\u5916\u4F20","\u524D\u4F20","\u540E\u4F20","\u5267\u573A\u7248","\u7535\u5F71\u7248","\u771F\u4EBA\u7248","\u91CD\u5236\u7248","ova","oad","sp"]; function Oo(e){for(const t of jf){if(e.length>t.length&&e.endsWith(t)){return{base:e.slice(0,e.length-t.length),tag:t}}}return{base:e,tag:""}} o(Oo,"splitSuffix"); function jt(e,t){return Ro(J(e),J(t))} o(jt,"isSameName"); function Ro(e,t){if(!e||!t)return false;if(e===t)return true;const n=Oo(e);const r=Oo(t);if(n.tag!==r.tag)return false;const i=n.base;const c=r.base;if(i===c)return true;const a=Io(i);const s=Io(c);const l=a===null&&s===1||a===1&&s===null;if(a!==s&&!l)return false;if(Po(i)===Po(c))return true;const d=i.length<=c.length?i:c;const f=d===i?c:i;return d.length>=Bf&&f.startsWith(d)} o(Ro,"sameNormalizedName"); function Do(){const e=new Map;function t(c){const a=c||"";let s=e.get(a);if(s)return s;const l=J(a);s={norm:l,stripped:l?Po(Oo(l).base):""};e.set(a,s);return s}o(t,"compile");function n(c,a){if(!c.norm||!a.norm)return false;if(c.norm===a.norm)return true;const s=c.stripped.length<=a.stripped.length?c.stripped:a.stripped;const l=s===c.stripped?a.stripped:c.stripped;return l.startsWith(s)}o(n,"mayMatch");function r(c,a){const s=t(a);if(!s.norm)return-1;for(let l=0;l{};if(wt.some(r=>r.node===e))return()=>{};wt.push({node:e,parent:t});if(!No){No=new MutationObserver(()=>{if(wt.some(r=>!r.node.isConnected))$f()});No.observe(document.body,{childList:true})}const n=wt[wt.length-1];return()=>{const r=wt.indexOf(n);if(r>=0)wt.splice(r,1)}} o(St,"keepMounted"); function $f(){wt.forEach(({node:e,parent:t})=>{if(e.isConnected)return;const n=t&&t.isConnected?t:document.body;if(n&&n.isConnected)n.appendChild(e)})} o($f,"remountAll"); function Q(e){if(!e||!e.getAttribute)return"";const t=[e.getAttribute("data-original"),e.getAttribute("data-src"),e.getAttribute("data-lazy-src")];if(e.tagName==="IMG")t.push(e.getAttribute("src"),e.src);return t.find(n=>!ke(n))||""} o(Q,"pickImageSrc"); var Rc=".vc-preview-img"; var Oc="vc-preview-enter"; var Ln=0; function zf(e){let t=document.querySelector(".vc-image-preview");if(!t){t=document.createElement("div");t.className="vc-image-preview";t.addEventListener("click",qo);document.body.appendChild(t)}if(e||!t.querySelector(Rc)){t.replaceChildren();[0,1].forEach(()=>{const n=document.createElement("img");n.className="vc-preview-img";n.alt="\u5C01\u9762\u9884\u89C8";t.appendChild(n)})}return t} o(zf,"ensurePreviewEl"); function Dc(e){return Array.from(e.querySelectorAll(Rc))} o(Dc,"previewLayers"); function qo(){const e=document.querySelector(".vc-image-preview");if(e)e.classList.remove("vc-show");Ln++} o(qo,"closeImagePreview"); function Fo(e){const t=zf(true);Ln++;if(e){const n=Dc(t);if(n[0]){n[0].classList.add("vc-active");n[0].src=e}}void t.offsetWidth;t.classList.add("vc-show")} o(Fo,"openImagePreview"); function Bo(e){const t=document.querySelector(".vc-image-preview");if(!e||!t||!t.classList.contains("vc-show"))return;const n=Dc(t);const r=n.find(l=>l.classList.contains("vc-active"))||n[0];const i=n.find(l=>l!==r);if(!r||!i||r.getAttribute("src")===e)return;const c=++Ln;const a=o(()=>{if(c!==Ln)return;if(!t.classList.contains("vc-show"))return;i.classList.add(Oc);i.addEventListener("animationend",()=>i.classList.remove(Oc),{once:true});i.classList.add("vc-active");r.classList.remove("vc-active")},"swap");const s=new Image;s.onload=()=>{i.src=e;const l=typeof i.decode==="function"?i.decode().catch(()=>{}):Promise.resolve();l.then(()=>{if(c!==Ln)return;requestAnimationFrame(()=>requestAnimationFrame(a))})};s.src=e} o(Bo,"updateImagePreview"); var Hf=/^(?:豆瓣\s*[::]?\s*)?(\d+(?:\.\d+)?)\s*分?$/; var Uf=/^豆瓣\s*[::]?\s*(\d+(?:\.\d+)?)\s*分?$/; function Nc(e){if(!e)return"";const t=Number(e[1]);if(!(t>0&&t<=10))return"";return String(t)} o(Nc,"scoreOf"); function br(e){return Nc(Hf.exec(String(e||"").trim()))} o(br,"parseDoubanScore"); function jo(e){return Nc(Uf.exec(String(e||"").trim()))} o(jo,"parseDoubanLabeledScore"); function $o(e){const t=/movie\.douban\.com\/subject\/(\d+)/.exec(String(e||""));return t?t[1]:""} o($o,"doubanSubjectId"); function zo(e){const t=$o(e);return t?"https://movie.douban.com/subject/"+t+"/":""} o(zo,"doubanSubjectUrl"); function Vf(e){const t=e&&e.querySelector?e.querySelector('a[href*="movie.douban.com/subject/"]'):null;if(!t)return null;const n=zo(t.getAttribute("href"));if(!n)return null;return{score:br(t.textContent),url:n}} o(Vf,"findDoubanLink"); function Gf(e){if(!e||!e.querySelectorAll)return null;const t=e.querySelectorAll("span, div, a, em, p, h1, h2, h3, h4, h5");for(const n of t){if(n.children.length)continue;const r=jo(n.textContent);if(r)return{score:r}}return null} o(Gf,"findByDoubanText"); function Ve(e,t,n){if(!e)return null;let r=e;if(e===document){if(!n)return null;r=document.querySelector(n);if(!r)return null}const i=Vf(r);if(i&&i.score)return i;if(Array.isArray(t)){for(const a of t){const s=r.querySelector(a);const l=br(s&&s.textContent);if(l)return{score:l,url:i?i.url:""}}}const c=Gf(r);if(c)return{score:c.score,url:i?i.url:""};return null} o(Ve,"readDoubanRating"); var Kf=72; var gr=2; function rn(e,t,n){const r=t.getBoundingClientRect();const i=e.getBoundingClientRect();let c=0;e.querySelectorAll(n).forEach(a=>{const s=a.getBoundingClientRect();if(!s.width||!s.height)return;const l=s.bottom-i.top;if(l>Kf)return;const d=s.leftr.left-gr&&s.topr.top-gr;if(d)c=Math.max(c,l)});return Math.round(c)} o(rn,"overlappingTagBottom"); function qc(e){if(!e)return false;const t=o(()=>{const n=document.createElement("textarea");n.value=e;n.style.position="fixed";n.style.opacity="0";document.body.appendChild(n);n.select();let r=false;try{r=document.execCommand("copy")}catch(i){r=false}document.body.removeChild(n);return r},"fallback");if(navigator.clipboard&&window.isSecureContext){navigator.clipboard.writeText(e).catch(()=>t());return true}return t()} o(qc,"copyText"); var Fc={id:"dida",name:"\u5600\u55D2\u5F71\u89C6",domains:["www.didahd.xyz"],matches:["*://*.didahd.xyz/*"],include:["/^https?:\\/\\/([^/]*\\.)?didahd\\./"],searchPath:o(e=>"/search/-------------.html?wd="+encodeURIComponent(e),"searchPath"),pageType(){const e=location.pathname;if(e.startsWith("/detail/"))return"detail";if(e.startsWith("/play/"))return"play";if(e.startsWith("/search/"))return"search";if(document.querySelector(".myui-vodlist"))return"list";return"other"},listCardSelector:".myui-vodlist__box, #searchList li",getListCards(){const e=[];const t=new Set;document.querySelectorAll(".myui-vodlist__box").forEach(n=>{if(t.has(n))return;const r=n.querySelector("a.myui-vodlist__thumb");if(!r)return;const i=(r.getAttribute("title")||"").trim();const c=Q(r)||Q(r.querySelector("img"));if(i){t.add(n);e.push({element:n,name:i,cover:c,path:r.pathname})}});document.querySelectorAll("#searchList li").forEach(n=>{if(t.has(n))return;const r=n.querySelector("a.myui-vodlist__thumb");if(!r)return;const i=n.querySelector("a.searchkey");const c=((i==null?void 0:i.textContent)||r.getAttribute("title")||"").trim();const a=Q(r)||Q(r.querySelector("img"));if(c){t.add(n);e.push({element:n,name:c,cover:a,path:r.pathname})}});return e},getDetailInfo(){const e=document.querySelector(".myui-content__thumb img");const t=document.querySelector(".myui-content__detail .title");const n=document.querySelector(".myui-content__thumb a");const r=((t==null?void 0:t.textContent)||"").trim();if(!r)return null;const i=Q(e);const c=(n==null?void 0:n.getAttribute("href"))||location.pathname;return{name:r,cover:i,path:c}},getSiteRating(e){if(!e||e===document){return Ve(document,["#rating .branch",".branch"],".myui-content__detail, #desc")}return Ve(e,[".pic-tag-right",".pic-tag"])},getPlayInfo(){const e=document.querySelector("#player-sidebar .myui-panel__head h3.title");let t="";if(e){const n=e.cloneNode(true);n.querySelectorAll("small").forEach(r=>r.remove());t=n.textContent.trim()}if(!t)return null;return{name:t,path:location.pathname}}}; var Bc={id:"czzy",name:"\u5382\u957F\u8D44\u6E90",domains:["www.4kcz.com","czzy.top","www.cz4k.com"],matches:["*://*.4kcz.com/*","*://*.czzy.top/*","*://*.cz4k.com/*"],include:["/^https?:\\/\\/([^/]*\\.)?(4kcz|czzy|cz4k)\\./"],searchPath:o(e=>"/#vc-search="+encodeURIComponent(e),"searchPath"),onPageReady(){const e=location.hash.match(/vc-search=([^&]+)/);if(!e)return;const t=decodeURIComponent(e[1]);let n=0;const r=o(()=>{if(n++>10)return;const i=document.querySelector("#sosuobox form, form.w-search-form");const c=i==null?void 0:i.querySelector("input[name]");const a=i==null?void 0:i.getAttribute("action");if(i&&c&&a){const s=new URL(a,location.href);s.searchParams.set(c.getAttribute("name"),t);location.href=s.href;return}setTimeout(r,300)},"trySearch");r()},pageType(){const e=location.pathname;if(e.startsWith("/movie/"))return"detail";if(e.startsWith("/v_play/"))return"play";if(/^\/(boss1O1|nimasile)\b/.test(e))return"search";if(document.querySelector(".bt_img, .bt_image"))return"list";return"other"},listCardSelector:".bt_img li, .bt_image li",statusOffset(e,t){const n=rn(e,t,".hdinfo, .furk, .jidi");return n?{top:n+6,left:8}:null},getSiteRating(e){if(!e||e===document){return Ve(document,[".dbpingfen"],".mi_ne_kd.dypre")}return Ve(e,[".rating"])},getListCards(){const e=[];const t=new Set;document.querySelectorAll(".bt_img li, .bt_image li").forEach(n=>{if(t.has(n))return;const r=n.querySelector("a");const i=n.querySelector("img");const c=n.querySelector(".dytit");if(!r)return;const a=((c==null?void 0:c.textContent)||(i==null?void 0:i.alt)||"").trim();const s=Q(i);if(a){t.add(n);e.push({element:n,name:a,cover:s,path:r.pathname})}});return e},getDetailInfo(){const e=document.querySelector(".dyimg img");const t=document.querySelector(".dytext h1");const n=document.querySelector(".paly_list_btn a");const r=((t==null?void 0:t.textContent)||"").trim();if(!r)return null;const i=Q(e);const c=(n==null?void 0:n.getAttribute("href"))||location.pathname;return{name:r,cover:i,path:c}},getPlayInfo(){const e=document.querySelector(".ptit a");if(!e)return null;const t=(e.textContent||"").trim();if(!t)return null;return{name:t,path:e.pathname}}}; var Ho=".myui-vodbox-content"; var jc={id:"hantv",name:"\u97E9\u5267tv",domains:["hanjuc.com","hantv.net","www.hantv.net","hantvz.com","www.hantvz.com"],matches:["*://*.hanjuc.com/*","*://*.hantv.net/*","*://*.hantvz.com/*"],include:["/^https?:\\/\\/([^/]*\\.)?(hantv[a-z]?|hanju[a-z])\\./"],searchPath:o(e=>"/vodsearch.html?wd="+encodeURIComponent(e),"searchPath"),pageType(){const e=location.pathname;if(e.startsWith("/nf-detail/"))return"detail";if(e.startsWith("/nf-play/"))return"play";if(e.startsWith("/vodsearch"))return"search";if(document.querySelector(Ho))return"list";return"other"},listCardSelector:Ho,getListCards(){const e=[];document.querySelectorAll(Ho).forEach(t=>{var i;const n=t.querySelector('a[href*="/nf-detail/"]');if(!n)return;const r=(((i=n.querySelector(".card-info .title"))==null?void 0:i.textContent)||"").trim();if(!r)return;e.push({element:t.querySelector(".content-card")||n,name:r,cover:Q(n.querySelector(".myui-vodlist__thumb img")),path:n.pathname})});return e},statusOffset(e,t){const n=rn(e,t,".tag-box");return n?{top:n+6,left:8}:null},getDetailInfo(){var n;const e=document.querySelector(".vod-detail-box");if(!e)return null;const t=(((n=e.querySelector(".title-box h1.title"))==null?void 0:n.textContent)||"").trim();if(!t)return null;return{name:t,cover:Q(e.querySelector(".img-box img")),path:location.pathname}},getPlayInfo(){var r;const e=document.querySelector("h1.title_name");const t=e==null?void 0:e.closest('a[href*="/nf-detail/"]');const n=((e==null?void 0:e.textContent)||"").trim()||(((r=document.querySelector(".player-head .video_title"))==null?void 0:r.textContent)||"").trim();if(!n)return null;return{name:n,path:t?t.pathname:Yf()}}}; function Yf(){var t;const e=(t=location.pathname.match(/^\/nf-play\/(\d+)/))==null?void 0:t[1];return e?`/nf-detail/${e}.html`:location.pathname} o(Yf,"detailPathFromPlay"); var Uo=15; var $c=200; var zc=3e3; var Hc=120; var Uc=400; var Vc=300; var Gc=120; var Kc="vc_debug_log"; var Yc=["javbus.com","www.javbus.com","javlibrary.com","www.javlibrary.com"]; var Wc="video_collector_drama_data"; var Xc="video_collector_drama_position"; var Vo="video_collector_drama_fab_pos"; var Cn="video_collector_drama_xjump_pos"; var Mn="video_collector_drama_img_cache"; var In="vc_drama_play_tabs_alive"; var Jc="video_collector_drama_domain_alive"; var Zc="video_collector_drama_last_domain"; var $t="video_collector_drama_playback"; var Go="video_collector_drama_playback_bak"; var on="video_collector_drama_meta"; var yr="video_collector_drama_meta_hits"; var Ko="video_collector_drama_meta_block"; var Qc="https://frodo.douban.com/api/v2/search/movie?q="; var ea="0ac44ae016490db2204ce0a042db2916"; var ta="MicroMessenger/"; var na="https://servicewechat.com/wx2f9b06c1de1ccfca"; var ra="https://movie.douban.com/j/subject_abstract?subject_id="; var oa=/异常请求|检测到有异常请求|登录豆瓣|验证码|安全验证|人机验证|滑动验证/i; var Yo=10; var Wo=.05; var ia=3e4; var ca=5; var aa=30; var xr="video_collector_drama_player_probe"; var Xo="https://raw.giteeusercontent.com/xiaobin90/jVideoCollector/raw/main/sites-domains.json"; var wr="video_collector_drama_domain_list"; var Pn="video_collector_drama_web_search_excluded"; var On=[{id:"pianku",name:"\u7247\u5E93",domains:["4k01.pianku.online","4k.pianku.online","4k02.pianku.online","4k03.pianku.online"],searchPath:o(e=>"/vodsearch/-------------.html?wd="+encodeURIComponent(e),"searchPath")},{id:"shiguang",name:"\u62FE\u5149\u5F71\u89C6",domains:["tv.time1080.xyz"],fold:true,searchPath:o(e=>"/search.php?wd="+encodeURIComponent(e),"searchPath")},{id:"zndy",name:"\u5B85\u7537\u5F71\u89C6",domains:["zndy.top"],fold:true,searchPath:o(e=>"/index.php?wd="+encodeURIComponent(e)+"&source=official","searchPath")},{id:"zhuiying",name:"\u8FFD\u5F71",domains:["zhuiying3.cc"],fold:true,searchPath:o(e=>"/vod/search/wd/"+encodeURIComponent(e)+".html","searchPath")},{id:"jinpai",name:"\u91D1\u724C\u5F71\u9662",domains:["www.vv3nwjk.com"],fold:true,searchPath:o(e=>"/vod/search/"+encodeURIComponent(e),"searchPath")},{id:"jisu",name:"\u6781\u901F\u8FFD\u5267",domains:["jisuzhuiju.com"],fold:true,searchPath:o(e=>"/search?keyword="+encodeURIComponent(e),"searchPath")},{id:"kankanya",name:"\u770B\u770B\u9E2D",domains:["www.kankanya.me"],fold:true,searchPath:o(e=>"/search/-------------.html?wd="+encodeURIComponent(e),"searchPath")},{id:"kxyy",name:"\u5F00\u5FC3\u5F71\u9662",domains:["www.kxyy1.cc"],fold:true,searchPath:o(e=>"/vodsearch/-------------.html?wd="+encodeURIComponent(e),"searchPath")},{id:"dmxq",name:"\u5927\u7C73\u661F\u7403",domains:["dmxq30.com"],fold:true,searchPath:o(e=>"/vodsearch/-------------.html?wd="+encodeURIComponent(e),"searchPath")}]; var gt="video_collector_drama_engine_enabled"; var Sr="video_collector_drama_site_names"; var Jo="video_collector_drama_video_hosts"; var Qo=/第\s*(\d{1,2})\s*季/; var Wf="v2"; var Zo="ddys_auto_node"; var Xf=/(ova|oad|特别篇|特别版|剧场版|番外|外传)/; function Rn(e){const t=String(e||"").match(/[((][^))]*[))]/g)||[];for(const n of t){const r=Qo.exec(n);if(r)return Number(r[1])}return 0} o(Rn,"seasonFromTitle"); function Er(){const e=document.querySelector(".ddys-season-menu .ddys-season-tab.is-active");const t=e?Qo.exec(e.textContent||""):null;return t?Number(t[1]):0} o(Er,"seasonFromTab"); function _r(e,t){const n=nn(e);return t?n+" \u7B2C"+t+"\u5B63":n} o(_r,"nameWithSeason"); function Jf(e,t){const n=e.querySelector(".title");const r=n?n.textContent||"":"";const i=J(r);if(!i||!t)return 0;if(Xf.test(i))return 0;if(i.indexOf(t)!==0)return 0;const c=/^(?:s(\d{1,2})|(\d{1,2}))(?!\d)/.exec(i.slice(t.length));return c?Number(c[1]||c[2]):1} o(Jf,"seasonOfBlock"); function sa(e,t,n){const r=e.filter(c=>Jf(c,n)===t);if(!r.length)return null;const i=r.filter(c=>!/part/.test(J((c.querySelector(".title")||{}).textContent||"")));return i[0]||r[0]} o(sa,"pickSeasonBlock"); var la=["ddys.app","ddys.ai"]; function pa(){try{const e=JSON.parse(GM_getValue($t,"{}"));return e&&typeof e==="object"?e:{}}catch(e){return{}}} o(pa,"readRecords"); function Zf(e){const t=String(e||"");const n=/[Ss]\d{1,2}[Ee](\d{1,3})/.exec(t)||/第\s*(\d{1,3})\s*集/.exec(t);return n?Number(n[1]):0} o(Zf,"episodeNo"); function Qf(){const e=document.querySelector("script.ddys-playlist-data");if(!e)return[];try{return(JSON.parse(e.textContent||"{}").seasons||[]).map(t=>{const n=Qo.exec(String(t.title||""));return n?Number(n[1]):0}).filter(t=>t>0)}catch(t){return[]}} o(Qf,"allSeasons"); function ep(e,t){const n=pa();let r=null;for(const i of Qf()){if(i===e)continue;const c=n[_r(t,i)];if(!c)continue;const a=Zf(c[0]);if(!a)continue;const s=Number(c[5])||0;if(!r||s>r.at)r={season:i,episode:a,at:s}}return r} o(ep,"seasonWithRecord"); function ua(){var i;if(new URLSearchParams(location.search).has("ep"))return"";const e=((i=document.querySelector(".post-title"))==null?void 0:i.textContent)||"";if(!e)return"";const t=Er()||Rn(e);if(pa()[_r(e,t)])return"";const n=ep(t,e);if(!n)return"";const r="S"+String(n.season).padStart(2,"0")+"E"+String(n.episode).padStart(2,"0");return location.pathname+"?ep="+r} o(ua,"planSeasonSwitch"); function ma(e){const t=document.querySelector('.ddys-node-menu button[data-node-id="'+e+'"]');if(!t||t.disabled||t.classList.contains("is-active"))return;t.click()} o(ma,"clickNode"); function da(){try{sessionStorage.setItem(Zo,Wf)}catch(e){}} o(da,"markAutoNode"); function fa(){let e="";try{e=sessionStorage.getItem(Zo)||"";sessionStorage.removeItem(Zo)}catch(t){return}if(!e)return;[0,300,800,1500,3e3].forEach(t=>setTimeout(()=>ma(e),t))} o(fa,"consumeAutoNode"); var va={id:"ddys",name:"\u4F4E\u7AEF\u5F71\u89C6",domains:la,matches:["*://*.ddys.app/*","*://*.ddys.ai/*"],include:["/^https?:\\/\\/([^/]*\\.)?ddys\\./"],searchPath:o(e=>"/?s="+encodeURIComponent(e)+"&post_type=post","searchPath"),coverReferer:o((e,t)=>(t||"https://"+la[0])+(e||"/"),"coverReferer"),trackPlaybackOnDetail:true,pageType(){if(new URLSearchParams(location.search).has("s"))return"search";if(document.querySelector(".post-title"))return"detail";if(document.querySelector(".post-box"))return"list";return"other"},listCardSelector:".post-box",getListCards(){const e=[];document.querySelectorAll(".post-box").forEach(t=>{const n=t.querySelector(".post-box-title a")||t.querySelector("a");if(!n)return;const r=t.querySelector(".post-box-title");const i=(r==null?void 0:r.textContent)||"";const c=_r(i,Rn(i));const a=t.querySelector(".post-box-image");const s=Pc((a==null?void 0:a.getAttribute("style"))||"")||Q(a==null?void 0:a.querySelector("img"));if(c){e.push({element:t,name:c,cover:s,path:n.pathname});if(s&&!t.dataset.vcDdysCoverBound){t.dataset.vcDdysCoverBound="1";t.addEventListener("click",()=>{try{sessionStorage.setItem("ddys_cover_"+nn(i),s)}catch(l){}})}}});return e},getDetailInfo(){var r;const e=((r=document.querySelector(".post-title"))==null?void 0:r.textContent)||"";const t=_r(e,Er()||Rn(e));if(!t)return null;let n="";try{n=sessionStorage.getItem("ddys_cover_"+nn(e))||""}catch(i){}if(!n){const i=Array.from(document.querySelectorAll(".doulist-item"));const c=J(nn(e));const a=sa(i,Er()||Rn(e)||1,c);const s=a||i[i.length-1];if(s)n=Q(s.querySelector("img"))}return{name:t,cover:n,path:location.pathname}},getSiteRating(e){var t;if(!e||e===document){const n=Array.from(document.querySelectorAll(".doulist-item"));if(!n.length)return null;const r=((t=document.querySelector(".post-title"))==null?void 0:t.textContent)||"";const i=Er()||Rn(r);const c=sa(n,i||1,J(nn(r)));if(!c)return null;const a=c.querySelector('a.wpd-rating-source[href*="movie.douban.com"]');if(!a)return null;const s=a.parentElement?a.parentElement.querySelector(".rating_nums"):null;const l=br(s&&s.textContent);const d=zo(a.getAttribute("href"));if(!l&&!d)return null;return{score:l,url:d}}return null},onPageReady(){fa();const e=ua();if(!e)return;da();location.href=e},planSeasonSwitch:ua,markAutoNode:da,consumeAutoNode:fa,clickNode:ma}; var ha={id:"libvio",name:"LIBVIO",domains:["libvio.host","www.libvio.mov","www.libvios.com","www.libhd.com","libviobd.com","www.libvio.in","www.libvio.io"],matches:["*://*.libvio.host/*","*://*.libvio.mov/*","*://*.libvios.com/*","*://*.libhd.com/*","*://*.libviobd.com/*","*://*.libvio.in/*","*://*.libvio.io/*"],include:["/^https?:\\/\\/([^/]*\\.)?(libvio|libvios|libviobd|libhd)\\./"],searchPath:o(e=>"/search/-------------.html?wd="+encodeURIComponent(e),"searchPath"),pageType(){const e=location.pathname;if(e.startsWith("/detail/"))return"detail";if(e.startsWith("/w/"))return"play";if(e.startsWith("/search/"))return"search";if(document.querySelector(".stui-vodlist"))return"list";return"other"},listCardSelector:".stui-vodlist__box",getListCards(){const e=[];document.querySelectorAll(".stui-vodlist__box").forEach(t=>{const n=t.querySelector("a.stui-vodlist__thumb");const r=t.querySelector(".stui-vodlist__detail .title");if(!n)return;const i=((r==null?void 0:r.textContent)||n.getAttribute("title")||"").trim();const c=Q(n)||Q(n.querySelector("img"));if(i)e.push({element:t,name:i,cover:c,path:n.pathname})});return e},getDetailInfo(){const e=document.querySelector(".vod-poster img");const t=document.querySelector(".vod-info .title");const n=document.querySelector(".vod-info a");const r=((t==null?void 0:t.textContent)||"").trim();if(!r)return null;const i=Q(e);const c=(n==null?void 0:n.getAttribute("href"))||location.pathname;return{name:r,cover:i,path:c}},getPlayInfo(){const e=document.querySelector(".stui-player__detail .title");const t=((e==null?void 0:e.textContent)||"").trim();if(!t)return null;return{name:t,path:location.pathname}},getSiteRating(e){if(!e||e===document){return Ve(document,[".vod-rating-mobile"],".vod-hero__inner, .stui-player__detail")}return Ve(e,[".pic-tag-top",".pic-tag"])}}; function tp(e){if(!e.length)return"";const t=e.filter(r=>r.id!=="noneCoverImg"&&!ke(Q(r)));const n=t.length?t[t.length-1]:e[e.length-1];return n.id==="noneCoverImg"?"":Q(n)} o(tp,"pickCover"); var ga={id:"duse",name:"\u6BD2\u820C\u7535\u5F71",domains:["www.duse2.com","www.duse3.com","www.duse4.com","www.dushe3.app","www.dushe05.com","www.dushe06.com"],matches:["*://*.duse2.com/*","*://*.duse3.com/*","*://*.duse4.com/*","*://*.dushe3.app/*","*://*.dushe05.com/*","*://*.dushe06.com/*"],include:["/^https?:\\/\\/([^/]*\\.)?dush?e\\d+\\./"],searchPath:o(e=>"/#vc-search="+encodeURIComponent(e),"searchPath"),isPlayUrl(e){return/\/play\//.test(e||"")},onPageReady(){const e=location.hash.match(/vc-search=([^&]+)/);if(!e)return;const t=decodeURIComponent(e[1]);let n=0;const r=o(()=>{if(n++>30)return;const i=document.querySelector('input[name="t"], input#t');if(i&&i.value){location.href="/search?t="+encodeURIComponent(i.value)+"&k="+encodeURIComponent(t);return}const c=document.querySelectorAll("script:not([src])");for(const l of c){const d=l.textContent.match(/["']?t["']?\s*[:=]\s*["']([A-Za-z0-9+/=]{16,})["']/);if(d){location.href="/search?t="+encodeURIComponent(d[1])+"&k="+encodeURIComponent(t);return}}let a=document.querySelector('input[type="search"], input[placeholder*="\u641C"], input[placeholder*="Search" i], input[name="wd"], input[name="search"], input[name="q"], input[name="k"]');if(!a){a=Array.from(document.querySelectorAll('input[type="text"]')).find(l=>/search|搜索|搜|片名/.test(l.placeholder||"")||/search|wd|keyword|q|k/.test(l.name||""))}if(!a){const l=document.querySelector('[class*="search" i] i, [class*="search" i] svg, .search-icon, .icon-search, [aria-label*="search" i]');if(l)l.click();setTimeout(r,300);return}const s=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set;s.call(a,t);a.dispatchEvent(new Event("input",{bubbles:true}));a.dispatchEvent(new Event("change",{bubbles:true}));a.focus();setTimeout(()=>{a.dispatchEvent(new KeyboardEvent("keydown",{key:"Enter",code:"Enter",keyCode:13,which:13,bubbles:true}));a.dispatchEvent(new KeyboardEvent("keyup",{key:"Enter",code:"Enter",keyCode:13,which:13,bubbles:true}));const l=document.querySelector('button[type="submit"], .search-btn, [class*="search" i] button');if(l)l.click();const d=a.closest("form");if(d)d.dispatchEvent(new Event("submit",{bubbles:true,cancelable:true}))},200)},"trySearch");r()},pageType(){const e=location.pathname;if(e.startsWith("/detail/"))return"detail";if(e.startsWith("/play/"))return"play";if(e.startsWith("/search"))return"search";if(document.querySelector("a.v-item"))return"list";return"other"},listCardSelector:"a.v-item",statusOffset(e,t){const n=rn(e,t,".v-item-top");return n?{top:n+6}:null},getSiteRating(e){if(!e||e===document)return null;return Ve(e,[".v-item-top-left"])},getListCards(){const e=[];document.querySelectorAll("a.v-item").forEach(t=>{let n="";t.querySelectorAll(".v-item-footer .v-item-title").forEach(c=>{if(n)return;if(c.style.display!=="none")n=c.textContent.trim()});if(!n)return;const r=Array.from(t.querySelectorAll(".v-item-cover img"));const i=tp(r);e.push({element:t,name:n,cover:i,path:t.pathname})});return e},getDetailInfo(){const e=document.querySelector(".detail-pic img");const t=((e==null?void 0:e.getAttribute("alt"))||"").trim();if(!t)return null;return{name:t,cover:Q(e),path:location.pathname}},getPlayInfo(){const e=document.querySelector(".detail-title a");if(!e)return null;const t=(e.textContent||"").trim();if(!t)return null;return{name:t,path:e.pathname}}}; function np(){const e=Array.from(document.querySelectorAll("h5")).find(t=>!/^豆瓣/.test(t.textContent.trim()));return((e==null?void 0:e.textContent)||"").trim()} o(np,"titleFromPage"); function rp(){const e=Array.from(document.querySelectorAll("h5")).find(n=>/^豆瓣/.test(n.textContent.trim()));const t=jo(e&&e.textContent);return t?{score:t}:null} o(rp,"ratingFromPage"); function op(){var t;const e=((t=document.querySelector("video-player"))==null?void 0:t.getAttribute("content-title"))||"";return e.replace(/第\s*\d+\s*集\s*$/,"").trim()} o(op,"titleFromPlayer"); function ip(e,t){var c;const n=e.querySelector("h3, h2, h1");const r=((n==null?void 0:n.textContent)||"").trim();if(r)return r;const i=(t.getAttribute("aria-label")||"").trim().replace(/^播放\s*/,"");if(i)return i;return(((c=e.querySelector("img"))==null?void 0:c.getAttribute("alt"))||"").trim()} o(ip,"cardName"); function cp(e){const t=e.getAttribute("href")||"";if(!t)return"";if(/^https?:/i.test(t)){try{return new URL(t).pathname}catch(n){return""}}return t.startsWith("/")?t:"/"+t} o(cp,"playPath"); function ap(e){if(e){const n=Array.from(document.querySelectorAll("img")).find(i=>(i.getAttribute("alt")||"").trim()===e);const r=Q(n);if(r)return r}const t=Q(document.querySelector("img.jN, img.jO"));if(t)return t;for(const n of document.querySelectorAll("img")){if(n.closest("article"))continue;const r=Q(n);if(r)return r}return""} o(ap,"pickPlayCover"); var sp=72; var lp=.5; var ba={top:null,left:null}; function up(e){if(!e)return null;const t=Array.from(e.querySelectorAll("div, span")).find(s=>!s.children.length&&/^豆瓣/.test((s.textContent||"").trim()));if(!t)return null;let n="";try{const s=t.ownerDocument&&t.ownerDocument.defaultView;if(s&&typeof s.getComputedStyle==="function")n=s.getComputedStyle(t).position||""}catch(s){n=""}if(n==="absolute"||n==="fixed")return ba;const r=t.parentElement;if(!r)return null;const i=e.getBoundingClientRect();const c=r.getBoundingClientRect();if(!i.height||!c.height)return null;if(c.height>sp||c.height>i.height*lp)return ba;const a=Math.round(c.bottom-i.top);return a>0?{top:a+6,left:0}:null} o(up,"badgeOffset"); var ya={id:"gaze",name:"\u6CE8\u89C6\u5F71\u89C6",domains:["gaze.red","gazes.store","gazes.top","gaze.show","gazes.host"],matches:["*://*.gaze.red/*","*://*.gazes.store/*","*://*.gazes.top/*","*://*.gaze.show/*","*://*.gazes.host/*"],include:["/^https?:\\/\\/([^/]*\\.)?gazes?\\d*\\./"],searchPath:o(e=>"/filter?search="+encodeURIComponent(e),"searchPath"),pageType(){if(location.pathname.startsWith("/play/")||document.querySelector("video-player"))return"play";if(document.querySelector('a[href*="play/"]'))return"list";return"other"},listCardSelector:"article",statusOffset(e){return up(e)},getSiteRating(e){if(!e||e===document)return rp();return Ve(e,[])},getListCards(){const e=[];document.querySelectorAll("article").forEach(t=>{const n=t.querySelector('a[href*="play/"]');if(!n)return;const r=ip(t,n);if(!r)return;e.push({element:t,name:r,cover:Q(t.querySelector("img")),path:cp(n)})});return e},getPlayInfo(){const e=np()||op();if(!e)return null;return{name:e,cover:ap(e),path:location.pathname}}}; function ue(e){return(e||"").replace(/^www\./,"")} o(ue,"normalizeHost"); var dp=800; var fp=6*60*60*1e3; function xa({lastDomainKey:e,aliveCacheKey:t,probeDeadline:n=dp,ttl:r=fp,isProbeable:i=o(()=>true,"isProbeable")}){let c=null;function a(){if(c===null){try{c=JSON.parse(GM_getValue(e,"{}"))}catch(h){c={}}}return c}o(a,"loadMap");function s(h,M){if(!h||!M)return;const D=a();if(D[h]===M)return;D[h]=M;GM_setValue(e,JSON.stringify(D))}o(s,"recordWorkingDomain");function l(h){return a()[h]||""}o(l,"getLastWorking");function d(h){if(!h||!h.domains||!h.domains.length)return"";const M=l(h.id);if(M&&h.domains.some(D=>ue(D)===ue(M)))return M;return h.domains[0]}o(d,"pickDomain");let f=null;const k=new Map;function g(){if(f)return f;try{f=GM_getValue(t,{})||{}}catch(h){f={}}return f}o(g,"loadAliveCache");function _(){try{GM_setValue(t,f)}catch(h){}}o(_,"saveAliveCache");try{if(typeof GM_addValueChangeListener==="function"){GM_addValueChangeListener(t,(h,M,D)=>{f=D||{}})}}catch(h){}function b(h){const M=g()[h];if(!M||Date.now()-M.ts>=r)return void 0;return!!M.alive}o(b,"cachedAlive");function q(h){const M=b(h);if(M!==void 0)return Promise.resolve(M);if(k.has(h))return k.get(h);const D=new Promise($=>{const T=g();let R=false;const z=o(B=>{if(R)return;R=true;T[h]={alive:B,ts:Date.now()};_();$(B)},"finish");try{GM_xmlhttpRequest({method:"HEAD",url:"https://"+h+"/",timeout:3e3,onload:o(()=>z(true),"onload"),onerror:o(()=>z(false),"onerror"),ontimeout:o(()=>z(false),"ontimeout")})}catch(B){z(false)}}).then($=>{k.delete(h);return $});k.set(h,D);return D}o(q,"probeDomain");function x(h){const M=l(h.id);if(M&&h.domains.some(D=>ue(D)===ue(M))){return[M,...h.domains.filter(D=>ue(D)!==ue(M))]}return h.domains}o(x,"candidateDomains");function F(h){if(!h||!h.domains||!h.domains.length)return Promise.resolve("");const M=x(h);const D=M.find(R=>b(R)===true);if(D)return Promise.resolve(D);const $=M.filter(R=>i(h,R)&&b(R)===void 0);const T=M.find(R=>!i(h,R));if(!$.length)return Promise.resolve(T||M[0]);return new Promise(R=>{let z=null;let B=false;let A=$.length;const w=o((y,C)=>{if(B)return;B=true;clearTimeout(z);R(y);if(!C)return;try{if(l(h.id)!==y)s(h.id,y)}catch(S){}},"settle");z=setTimeout(()=>w(d(h)||M[0],false),n);$.forEach(y=>{q(y).then(C=>{if(C){w(y,true)}else if(--A===0){w(T||M[0],false)}})})})}o(F,"findAliveDomain");return{recordWorkingDomain:s,getLastWorking:l,pickDomain:d,findAliveDomain:F}} o(xa,"createDomainResolver"); var ei=new Map; function pp(e,t){if(e&&e.__fallback)return true;const n=ei.get(e.id);return!n||n.has(ue(t))} o(pp,"isProbeable"); var mp=xa({lastDomainKey:Zc,aliveCacheKey:Jc,isProbeable:pp}); var{recordWorkingDomain:wa,getLastWorking:bb,pickDomain:Et,findAliveDomain:cn} =mp; var vp=200; var Dn=null; function Sa(){if(Dn)return Dn;try{const e=JSON.parse(GM_getValue(Jo,"[]"));Dn=Array.isArray(e)?e:[]}catch(e){Dn=[]}return Dn} o(Sa,"readVideoHosts"); function Ea(e){const t=ue(e);return!!t&&Sa().includes(t)} o(Ea,"isKnownVideoHost"); function _a(e){const t=ue(e);if(!t)return;const n=Sa();if(n.includes(t))return;if(n.length>=vp)return;n.push(t);try{GM_setValue(Jo,JSON.stringify(n))}catch(r){}} o(_a,"rememberVideoHost"); var hp=24*60*60*1e3; function gp(){try{const e=JSON.parse(GM_getValue(wr,"{}"));return e&&e.sites||{}}catch(e){return{}}} o(gp,"loadRemoteDomains"); var bp=30; function yp(e){return typeof e==="string"&&e.length>0&&e.length<=253&&e.includes(".")&&/^[a-z0-9]([a-z0-9.-]*[a-z0-9])?$/i.test(e)} o(yp,"isDomainLike"); function ti(e){if(!ei.has(e.id))ei.set(e.id,new Set(e.domains.map(ue)));const t=gp()[e.id];if(!Array.isArray(t)||!t.length)return;const n=new Set(e.domains.map(i=>ue(i)));const r=t.filter(i=>yp(i)&&!n.has(ue(i))).slice(0,bp);if(r.length)e.domains.push(...r)} o(ti,"mergeRemoteDomains"); function ka(){if(!Xo)return Promise.resolve();try{const e=JSON.parse(GM_getValue(wr,"{}"));if(e&&e.ts&&Date.now()-e.ts{try{GM_xmlhttpRequest({method:"GET",url:Xo,timeout:1e4,onload:o(t=>{try{const n=JSON.parse(t.responseText);if(n&&typeof n.sites==="object"){GM_setValue(wr,JSON.stringify({ts:Date.now(),sites:n.sites}))}}catch(n){}e()},"onload"),onerror:o(()=>e(),"onerror"),ontimeout:o(()=>e(),"ontimeout")})}catch(t){e()}})} o(ka,"refreshDomainList"); var Ta=/hls\.js|dplayer|ckplayer|artplayer|xgplayer|video\.js|videojs|player\.js|playerconfig/i; var Aa=/id=["']player["']|class=["'][^"']*player[^"']*["']|player-loading|player-wrapper|player-container|player-episodes/i; var La=/\/vodplay\/|\/vod\/play\/|play\.php|\/play\/|\/w\/[\w]+-[\d]+-[\d]+/i; var Ca=/\/voddetail\/|\/detail\/|\/vod\/detail\/|\/movie\/|\/series\/|\/vod\/\d+\.html|\/video\/[\w-]+\.html|\/\w*detail\//i; var Ma=/\/vodsearch\/|\/search\/|\?s=|\/index\.php\/vod\/search/i; var Ia=/\/voddetail\/|\/detail\/|\/vod\/|\/video\/[\w-]+\.html|\b(?:play|detail|vod|show|video|movie|view)[\w-]*\.php\?[^"'#<>\s]*\b(?:id|vid)=\d+|\/movie\/[\w-]+|\/tv\/[\w-]+|\/watch\/\d+|\/neirong\/\d+|\/20\d{6}\/?(?:[?#]|$)/i; var Pa='[class*="poster"], [class*="Poster"]'; var Oa=6; var ni=6; var Ra=6; var Da=2; var Na=100; var qa=.25; var Fa=/影视|电影|电视剧|剧集|动漫|综艺|在线观看|追剧|美剧|韩剧|日剧|港剧|番剧/g; var xp=/^[A-Za-z0-9_]{10,}$/; function kr(e){return String(e||"").replace(/^https?:\/\/[^/]+/i,"").replace(/[?#].*$/,"").split("/").map(t=>xp.test(t)?"#":t.replace(/\d+/g,"#")).join("/").slice(0,60)} o(kr,"shapeKeyOf"); function Tr(e){return String(e||"").indexOf("#")>=0||/\.(?:html?|php|aspx?)(?:\/|$)/i.test(String(e||""))} o(Tr,"isContentShape"); function Ar(e,t){const n=o(c=>String(c||"").toLowerCase().replace(/^www\./,"").split(".").slice(-2).join("."),"tail");let r="";let i="";try{r=new URL(String(e||""),t).hostname}catch(c){return false}try{i=new URL(String(t||""),t).hostname}catch(c){i=""}if(!i)return true;return!!r&&n(r)===n(i)} o(Ar,"isSameSite"); var Lr=/\/(?:tag|tags|category|categories|page|pages|search|login|logout|register|user|users|member|account|author|news|article|blog|archive|archives|sitemap|about|help|faq|privacy|contact|rss|feed|comment|guestbook)(?:\/|$)|^\/?(?:#|javascript|mailto|\?)/i; var Cr=[".vod-item",".stui-vodlist__box",".myui-vodlist__box",".module-item",".public-list-box",".movie-card",".video-item",".fed-list-item",".content-card",".home-feed-card",".br-card"]; var Ba=["h1",".vod-info .title",".vod-title",".video-title",".video-name"]; var ja=[".title",".name"]; var $a=[".detail-pic img",".vod-pic img",".vod-img img",".poster img",".thumb img",".cover img"]; var za=[".vod-poster__wrap img",".stui-player__detail img",".myui-content__thumb img",".module-info-poster img",".movie-poster img",".detail-pic img",".dyimg img",".detail-poster-card img",".play-poster img",".poster img","#detail-poster"]; var Ha=/^vc-/; var ri=/(?:^|[\s_-])(?:recommend|related|similar|guess|like|hot|rank|tj|more|swiper|carousel|slider|public-r)(?:[\s_-]|$)/i; var Ua=/相关推荐|相关影片|猜你喜欢|热门推荐|为你推荐|相似影片|更多推荐|推荐影片|本周热门|热门榜单|同类推荐|精选推荐/; var Va=[[/nid\/(\d+)/i,"url:nid"],[/\/vodplay\/[\d]+-[\d]+-(\d+)/i,"url:vodplay"],[/\/ep(\d+)/i,"url:ep"],[/\/episode[_\-/](\d+)/i,"url:episode"],[/[/_-]e(\d{1,4})(?:[/_-]|$)/i,"url:e"]]; var Ga=[[/第\s*(\d+)\s*[集话回]/,"\u7B2CN\u96C6"],[/E[Pp]?\.?\s*(\d+)/i,"EP"],[/S\d+E(\d+)/i,"S01E02"],[/【(\d+)】/,"\u3010N\u3011"],[/\[(\d+)\]/,"[N]"],[/((\d+))/,"\uFF08N\uFF09"],[/\((\d+)\)/,"(N)"],[/#\s*(\d+)/,"#N"],[/_(\d+)_/,"_N_"],[/-(\d+)-/,"-N-"],[/(\d+)\s*[集话]/,"N\u96C6"]]; var Ka={}; var Ya=[{id:"movie-episode-kit",probe:".movie-episode-desktop-grid, .movie-episode-quick-tab",selectors:[".movie-episode-desktop-grid .movie-button-primary",".movie-episode-quick-tab.movie-button-primary"]}]; var Mr=[{id:"maccms-voddetail",name:"MacCMS(voddetail)",detail:/\/voddetail\/\d+/i,play:/\/vodplay\/[\d]+-[\d]+-[\d]+/i,struct:/\bvod-item\b|\bvod-pic\b|\/vodtype\/|\/vodsearch\//i,cardSelector:".vod-item",searchPath:o(e=>"/vodsearch/-------------.html?wd="+encodeURIComponent(e),"searchPath"),detailFromPlay:o(e=>{const t=String(e||"").match(/^\/vodplay\/(\d+)/i);return t?`/voddetail/${t[1]}.html`:""},"detailFromPlay")},{id:"maccms-indexphp",name:"MacCMS(index.php)",detail:/\/index\.php\/vod\/detail\//i,play:/\/index\.php\/vod\/play\//i,struct:/\/index\.php\/vod\//i,cardSelector:".public-list-box, .module-item",searchPath:null,detailFromPlay:o(e=>{const t=String(e||"").match(/\/vod\/play\/id\/(\d+)/i);return t?`/index.php/vod/detail/id/${t[1]}.html`:""},"detailFromPlay")}]; var oi="\u6B63\u7247"; var ii="spa"; var ci=[[/防火墙正在检查|正在检查您的访问|安全检查中|访问验证|Just a moment|Checking your browser|cf-browser-verification/i,"waf"],[/^加载中\.*$|^Loading\.*$|正在加载中/i,ii],[/Access Denied|403 Forbidden|网站维护|站点维护中|暂停访问|域名暂时停止/i,"denied"]]; var Wa=[/\byoutube\.com$/,/\bbilibili\.com$/,/\bb23\.tv$/,/\bdouyin\.com$/,/\bixigua\.com$/,/\biqiyi\.com$/,/\bv\.qq\.com$/,/\byouku\.com$/,/\bmgtv\.com$/,/\bsohu\.com$/,/\bnetflix\.com$/,/\bdisneyplus\.com$/,/\bprimevideo\.com$/,/\bhbomax\.com$/,/\bhulu\.com$/,/\btwitter\.com$/,/\bx\.com$/,/\bfacebook\.com$/,/\binstagram\.com$/,/\bweibo\.com$/,/\bzhihu\.com$/,/\bbaidu\.com$/,/\btaobao\.com$/,/\bjd\.com$/,/\btmall\.com$/,/\bgoogle\.com$/,/\bbing\.com$/,/\bgithub\.com$/,/\bgreasyfork\.org$/,/\bdouban\.com$/,/\byinghezhinan\.com$/,/\bcodepen\.io$/,/\blink3\.cc$/]; var Xa=Yc.map(e=>new RegExp(`\\b${e.replace(/^www\./,"").replace(/\./g,"\\.")}$`)); function Ja(e,t){const n=String(t||"");for(const i of Mr){if(i.detail&&i.detail.test(n)||i.play&&i.play.test(n))return i}for(const i of Mr){try{if(i.cardSelector&&e.querySelector(i.cardSelector))return i}catch(c){}}let r="";for(const i of Mr){if(!i.struct)continue;if(!r){try{r=e.body?e.body.innerHTML.slice(0,4e4):""}catch(c){r=""}}if(r&&i.struct.test(r))return i}return null} o(Ja,"detectFamily"); function zt(e,t){const n=String(t||"");if(Ma.test(n))return"search";if(La.test(n))return"play";if(Ca.test(n))return"detail";let r=false;try{r=Aa.test(e.body?e.body.innerHTML.slice(0,4e4):"")}catch(i){}if(!r){try{r=[...e.querySelectorAll("script[src]")].some(i=>Ta.test(i.src||""))}catch(i){}}if(r&&/play/i.test(n))return"play";return"other"} o(zt,"detectPageType"); function Nn(e,t,n){try{const r=String(t||e.location&&e.location.href||"");const i=n&&n.minLinks||6;const c=o(q=>Ar(q,r),"inSite");let a=0;for(const q of e.querySelectorAll("a[href]")){const x=q.getAttribute("href")||"";if(Ia.test(x)&&c(x)){a++;if(a>=i)return true}}if(Cr.some(q=>{try{return e.querySelectorAll(q).length>=6}catch(x){return false}}))return true;let s=0;for(const q of e.querySelectorAll(Pa)){if(q.querySelector("img")){s++;if(s>=Oa)return true}}const l=new Map;let d=0;let f=0;let k=0;for(const q of e.querySelectorAll("a[href]")){const x=q.getAttribute("href")||"";if(!x||Lr.test(x))continue;if(!c(x))continue;const F=kr(x);if(!F||F==="/"||F==="#"||F==="/#")continue;if(!Tr(F))continue;const h=q.parentElement;const M=!!q.querySelector("img")||!!(h&&h.querySelector("img"));const D=l.get(F)||{n:0,img:0};const $={n:D.n+1,img:D.img+(M?1:0)};l.set(F,$);if($.img>d)d=$.img;if($.n>f){f=$.n;k=$.img}}if(di!==ii):ci;const r=[];try{if(e.title)r.push(e.title);const i=e.querySelector("h1");if(i)r.push(i.textContent||"");if(e.body)r.push((e.body.textContent||"").slice(0,1500))}catch(i){}for(const i of r){const c=String(i||"").trim();if(!c)continue;for(const[a,s]of n){if(a.test(c))return s}}return""} o(Ir,"detectBlocked"); var wp=/\/vodsearch\/|\/search\/|search\.php|[?&](?:wd|q|kw|keyword)=/i; function ai(e){return wp.test(String(e||""))} o(ai,"isSearchUrl"); var Sp=/\.(json|png|jpe?g|gif|svg|css|js|mjs|ico|woff2?|ttf|txt|xml|pdf|zip|rar|mp4|m3u8)$/i; function Ep(e){return String(e||"").toLowerCase().replace(/^www\./,"")} o(Ep,"normHost"); function Pr({ignoreEngineSwitch:e=false}={}){try{if(!/^https?:$/.test(location.protocol))return false;if(Sp.test(location.pathname))return false;const t=Ep(location.hostname);if(!t||!t.includes("."))return false;if(Xa.some(n=>n.test(t)))return false;if(Wa.some(n=>n.test(t)))return false;if(!e&&GM_getValue(gt,true)===false)return false;return true}catch(t){return false}} o(Pr,"quickPass"); function Za(e){try{if(!e||!e.body)return false;const t=zt(e,location.href);if(Ir(e,{ignoreSpa:t!=="other"}))return false;if(t!=="other")return true;if(Nn(e,location.href))return true;if(ai(location.href)&&Ea(location.hostname)&&Nn(e,location.href,{minLinks:1}))return true;return false}catch(t){return false}} o(Za,"deepPass"); function Ht(e,t){let n=t;for(let r=0;r<12&&n&&n.parentElement;r++){if(n.parentElement.tagName==="BODY"&&Ha.test(String(n.className||"")))return true;n=n.parentElement}return false} o(Ht,"isOwnUi"); function ns(e,t){let n=t;for(let r=0;r<8&&n&&n!==e.body;r++){if(ri.test(String(n.className||""))||ri.test(String(n.id||"")))return true;const i=n.previousElementSibling;if(i&&Ua.test(String(i.textContent||"").replace(/\s+/g,"").slice(0,30)))return true;n=n.parentElement}return false} o(ns,"inRecommendBlock"); function Or(e,t){if(!t)return false;if(Ht(e,t))return false;if(ns(e,t))return false;return true} o(Or,"usableImgNode"); var qn=o(e=>/^(19|20)\d{2}$/.test(String(e)),"isYear"); var si=/^(简介|剧情|剧情介绍|返回|返回详情|返回列表|返回首页|返回上页|查看详情|详情页|首页|主页|评论|网友评论|相关推荐|猜你喜欢|热门推荐|最新|最新电影|播放列表|选集|下载|收藏|登录|注册|搜索|更多|详情|影片参数|在线播放|观看历史|推荐|资源|资源列表|播放记录|剧情简介|温馨提示|影片介绍|播放地址|线路|线路选择|片源|加载中|正在加载中|Loading)$/; var _p=/(?:\s*(?:\d+\s*集全|全剧集|共\s*\d+\s*集|更新至\s*\d+\s*[集期话]|更新第\s*\d+\s*[集期话]|更新至|更新到|第\s*\d+\s*期|已完结|完结|全集|全季|正片|高清完整版|完整版|在线观看|播放列表|超清|蓝光|标清|原画|抢先版|清晰版|修复版|4K|8K|1080[Pp]?|720[Pp]?|H[Dd]|HDR|杜比视界))*$/; var kp=/\s*[-_·|]?\s*(?:第\s*\d+\s*[集话回期]|E[Pp]?\s*\d{1,4}|S\d+\s*E\d+)\s*$/; var Tp=/^(?:正在播放|在线播放|播放中|播放|观看)\s*/; var Ap=/\s*\d*\s*[A-Za-z\u4e00-\u9fa5]{0,6}源线路\s*/g; var Lp=/^(?:官方中字|中文字幕|双语字幕|高清中字|内嵌字幕|外挂字幕|无字幕|免费|在线观看|在线看|高清|超清|完整版|正片|详情|详情介绍|动作|冒险|科幻|恐怖|喜剧|爱情|剧情|悬疑|犯罪|战争|奇幻|动画|纪录片|综艺|电影|电视剧|动漫|美剧|韩剧|日剧|港剧|台剧|短片|预告)$/; function Rr(e,t,n){try{const r=e.querySelector(`meta[${t}="${n}"]`);return r?String(r.getAttribute("content")||"").trim():""}catch(r){return""}} o(Rr,"metaContent"); function dt(e,t){let n=String(e||"").replace(/\s+/g," ").trim();const r=o(g=>{const _=/^《([^》]{2,40})》/.exec(String(g).trim());return _?_[1]:null},"takeQuoted");const i=r(n);if(i)n=i;if(si.test(n.replace(/[《》]/g,"")))return"";n=n.replace(Tp,"").replace(Ap," ");const c=r(n);if(c)n=c;n=n.replace(/[《》]/g,"");const a=n.split(/[-_|·]/).map(g=>g.trim()).filter(Boolean);const s=a.filter(g=>{if(!g)return false;if(t&&g===t)return false;if(a.length>1&&/^\d{1,4}$/.test(g))return false;if(/^(最新|热门|全集|高清|蓝光|秒播|无广告|免费|在线观看|电影|电视剧|影片|动漫|综艺|纪录片|影视大全|详情介绍|高清完整版)$/.test(g))return false;return true});const l=new Set;const d=(s.length?s:a).filter(g=>{const _=g.replace(/\s/g,"");if(l.has(_))return false;l.add(_);return true});n=d.join(" ").trim();n=n.replace(/[((【\[]\s*(?:19|20)\d{2}\s*[))】\]]/g," ");const f=n.split(/\s+/).filter(Boolean).filter(g=>!/^(?:19|20)\d{2}$/.test(g));if(f.length)n=f.join(" ");n=n.replace(/在线观看|高清完整版|免费观看|全集免费|迅雷下载|详情介绍|在线播放|手机观看|剧情介绍|高清|完整版|免费在线/g,"");n=n.replace(/在线看|官方中字|中文字幕|双语字幕|高清中字|内嵌字幕|详情/g,"");n=n.replace(kp,"").replace(_p,"");n=n.replace(/\s*[-_|·]\s*\d{1,4}\s*$/g,"");n=n.replace(/^(?:电影|电视剧|影片|动漫|综艺|纪录片)\s*/,"").replace(/\s*(?:电影|电视剧|影片|动漫|综艺|纪录片)$/,"");const k=o(g=>{const _=String(g||"").split(/[/、,,|]/).map(b=>b.trim()).filter(Boolean);return _.length>0&&_.every(b=>Lp.test(b))},"isTagNoise");n=n.replace(/^[【\[]\s*([^【\[\]】]{1,20})\s*[】\]]\s*/,(g,_)=>k(_)?"":g);n=n.replace(/\s*[【\[]\s*([^【\[\]】]{1,20})\s*[】\]]\s*$/,(g,_)=>k(_)?"":g);n=n.replace(/[((]\s*[))]/g,"").replace(/[【\[]\s*[】\]]/g,"");n=n.replace(/^[\s\-_|·、,,::.。]+|[\s\-_|·、,,::.。&\s]+$/g,"");return n.trim()} o(dt,"cleanTitle"); function Fn(e){if(!e)return true;if(si.test(e))return true;const t=String(e).split(/[\s::]/)[0];return!!t&&si.test(t)} o(Fn,"isUiHeading"); function rs(e){const t=String(e||"");const n=t.match(/\/vodplay\/(\d+)/i)||t.match(/\/vod\/play\/id\/(\d+)/i)||t.match(/\/play\/(\d+)/i)||t.match(/[?&](?:id|vid)=(\d+)/i);return n?n[1]:""} o(rs,"showIdFromUrl"); function Cp(e){const t=o(a=>String(a||"").replace(/\s+/g," ").trim(),"clean");const n=o(a=>a.length>=2&&a.length<=60&&!Fn(a),"usable");let r="";for(const a of["h1","h2","h3",'[class*="title" i]']){const s=e.querySelector(a);const l=t(s&&s.textContent);if(n(l)){r=l;break}}const i=t(e.textContent);const c=t(e.getAttribute("title"));if(n(r))return{name:r,src:"inner"};if(n(i))return{name:i,src:"text"};if(n(c))return{name:c,src:"title-attr"};return{name:i||c,src:"fallback"}} o(Cp,"selfLinkName"); var Mp=/更多信息|详细信息|详情|简介|介绍|上映|主演|导演|评分|更新至|全集|完结|播放列表/; function Ip(e,t,n){let r=0;if(t==="inner")r+=3;else if(t==="text"||t==="title-attr")r+=1;if(n&&e.replace(/\s/g,"")===n.replace(/\s/g,""))r+=10;if(/^\d/.test(e))r-=5;if(/[::,,。;;!!??]/.test(e))r-=3;if(e.length>30)r-=3;if(Mp.test(e))r-=3;return r} o(Ip,"scoreSelfLink"); function li(e,t){if(!t)return null;const n=new RegExp("(?:^|[^0-9])"+t+"(?:[^0-9]|$)");let r="";try{r=dt(String(e.title||"").split(/[-_|]/)[0],"")}catch(c){r=""}let i=null;try{for(const c of e.querySelectorAll("a[href]")){const a=c.getAttribute("href")||"";if(!/\/voddetail\/|\/detail\/|\/vod\/detail\//i.test(a))continue;if(!n.test(a))continue;const{name:s,src:l}=Cp(c);if(!s||s.length<2||s.length>60)continue;const d=Ip(dt(s,"")||s,l,r);if(!i||d>i.score)i={name:s,href:a,score:d}}}catch(c){}return i&&i.score>0?{name:i.name,href:i.href}:null} o(li,"findSelfDetailLink"); var Qa=/[\uAC00-\uD7AF\u1100-\u11FF\u3040-\u30FF\u0400-\u04FF]|[A-Za-z]/; function Pp(e,t){const n=String(e.title||"").replace(/\s+/g," ").trim();if(!n)return"";const r=dt(n.split(/[-_|]/)[0].trim(),t);return r&&!Fn(r)?r:""} o(Pp,"nameFromDocTitle"); function Dr(e,t,n){const r=rs(n);const i=li(e,r);if(i){const f=dt(i.name,t);if(f&&!Fn(f))return{name:f,src:"detail-link"}}const c=Pp(e,t);const a=o(f=>{for(const k of f){try{for(const g of e.querySelectorAll(k)){if(Ht(e,g))continue;const _=String(g.textContent||"").replace(/\s+/g," ").trim();if(_.length<2||_.length>60)continue;const b=dt(_,t);if(b&&!Fn(b))return{name:b,src:k}}}catch(g){}}return null},"bySelectors");const s=a(Ba);if(s&&c&&s.name!==c&&Qa.test(s.name)&&!Qa.test(c)){return{name:c,src:"title(\u6536\u655B\u5916\u6587\u526F\u6807\u9898)"}}if(s)return s;if(c)return{name:c,src:"title"};const l=Rr(e,"property","og:title");if(l){const f=dt(l,t);if(f&&!Fn(f))return{name:f,src:"og:title"}}const d=a(ja);if(d)return d;return{name:"",src:""}} o(Dr,"extractTitle"); function os(e){const t=Number(e.getAttribute("width"))||e.naturalWidth||0;const n=Number(e.getAttribute("height"))||e.naturalHeight||0;if(t&&n)return t<100||n<100;if(t)return t<100;if(n)return n<100;return false} o(os,"tooSmallImage"); var Op=150; var Rp=/[?&,/_=-](?:w|width)[_=]?(\d{2,4})\b/i; var Dp=/[?&,/_=-](?:h|height)[_=]?(\d{2,4})\b/i; function is(e){const t=Number(e.getAttribute("width"))||e.naturalWidth||0;const n=Number(e.getAttribute("height"))||e.naturalHeight||0;if(t||n)return[t,n];const r=e.currentSrc||e.getAttribute("src")||e.getAttribute("data-src")||e.getAttribute("data-original")||"";const i=Rp.exec(r);const c=Dp.exec(r);return[i?Number(i[1]):0,c?Number(c[1]):0]} o(is,"imgSizeOf"); function Np(e,t){const[n,r]=is(e);return!!n&&nr){r=d;n=a}}return n||i} o(cs,"pickRepairCover"); function as(e,t){const n=Rr(e,"property","og:image");if(n&&!ke(n))return{cover:n,src:"og:image"};const r=Rr(e,"name","twitter:image");if(r&&!ke(r))return{cover:r,src:"twitter:image"};if(t){try{for(const i of e.querySelectorAll("img")){if(!String(i.getAttribute("alt")||"").includes(t))continue;if(!Or(e,i))continue;const c=Q(i);if(c)return{cover:c,src:"img[alt*=name]"}}}catch(i){}}for(const i of $a){try{for(const c of e.querySelectorAll(i)){if(!Or(e,c))continue;const a=Q(c);if(a)return{cover:a,src:i}}}catch(c){}}try{for(const i of e.querySelectorAll("img")){if(os(i))continue;if(!Or(e,i))continue;const c=Q(i);if(c)return{cover:c,src:"img(any)"}}}catch(i){}try{const i=e.querySelector("video[poster]");const c=i?i.getAttribute("poster"):"";if(c&&!ke(c))return{cover:c,src:"video[poster]"}}catch(i){}return{cover:"",src:""}} o(as,"extractCover"); function Nr(e){for(const t of za){try{for(const n of e.querySelectorAll(t)){if(!n||n.tagName!=="IMG")continue;if(os(n))continue;if(!Or(e,n))continue;const r=Q(n);if(r&&!ke(r))return{cover:r,src:t}}}catch(n){}}return{cover:"",src:""}} o(Nr,"extractPlayCover"); function qp(e){const t=String(e||"");let n=t.match(/nid\/(\d+)/i);if(n&&!qn(n[1]))return{ep:n[1],src:"url:nid"};n=t.match(/\/vodplay\/\d+-(\d+)-(\d+)/i);if(n&&!qn(n[2]))return{ep:n[2],src:"url:vodplay"};for(const[r,i]of Va){const c=r.exec(t);if(c&&c[1]&&!qn(c[1]))return{ep:c[1],src:i}}return null} o(qp,"episodeFromUrl"); var Fp=/^(?:第\s*(\d{1,4})\s*[集话回期]|(\d{1,4}))$/; function Bn(e){const t=Fp.exec(String(e||"").replace(/\s+/g," ").trim());if(!t)return"";const n=t[1]||t[2];return n&&!qn(n)?n:""} o(Bn,"epFromLabel"); function Bp(e){let t=0;for(const n of e.children){if(Bn(n.textContent)&&++t>=2)return true}return false} o(Bp,"episodeListAt"); function qr(e){let t=e.parentElement;for(let n=0;n<3&&t;n++,t=t.parentElement){if(Bp(t))return true}return false} o(qr,"inEpisodeList"); function jp(e){try{for(const t of e.querySelectorAll("a, button, li")){if(Bn(t.textContent)&&qr(t))return true}}catch(t){}return false} o(jp,"hasEpisodeList"); function $p(e){const t=String(e||"").match(/^[a-z][a-z0-9+.-]*:\/\/([^/?#]+)/i);return t?t[1].toLowerCase().replace(/^www\./,""):""} o($p,"hostOf"); function zp(e,t){const n=$p(t);if(!n)return"";for(const[r,i]of Object.entries(Ka)){if(!r.split("|").some(c=>n===c||n.endsWith("."+c)))continue;for(const c of i){let a=null;try{a=e.querySelector(c)}catch(l){a=null}if(!a)continue;const s=Bn(a.textContent);if(s&&qr(a))return s}}return""} o(zp,"episodeByHostSelector"); function Hp(e){for(const t of Ya){let n=false;try{n=!!e.querySelector(t.probe)}catch(r){n=false}if(!n)continue;for(const r of t.selectors){let i=null;try{i=e.querySelector(r)}catch(a){i=null}if(!i)continue;const c=Bn(i.textContent);if(c&&qr(i))return c}}return""} o(Hp,"episodeByComponentSelector"); function es(e,t,n){if(Number(n)>1)return false;const r=t?new RegExp("(?:^|[^0-9])"+t+"(?:[^0-9]|$)"):null;const i=new Set;let c=0;try{for(const a of e.querySelectorAll("a[href]")){const s=a.getAttribute("href")||"";if(r&&!r.test(s))continue;let l="";const d=s.match(/nid\/(\d+)/i);if(d)l=d[1];else{const k=s.match(/\/vodplay\/\d+-\d+-(\d+)/i);if(k)l=k[1]}if(!l)continue;i.add(l);const f=String(a.textContent||"").replace(/\s+/g," ").trim();if(/^0?\d{1,4}$/.test(f)||/第\s*\d+\s*[集话回期]/.test(f))c++}}catch(a){}if(i.size>=2||c>=2)return false;if(i.size)return true;return!jp(e)} o(es,"looksLikeMovie"); function ss(e,t,n){const r=rs(t);const i=qp(t);if(i){const l=es(e,r,i.ep);return l?{ep:"",label:oi,movie:true,src:"movie"}:{ep:i.ep,label:`\u7B2C${i.ep}\u96C6`,movie:false,src:i.src}}const c=[Dr(e,n,t).name,String(e.title||""),Rr(e,"name","keywords")];for(const l of c){if(!l)continue;for(const[d,f]of Ga){const k=d.exec(String(l));if(k&&k[1]&&!qn(k[1]))return{ep:k[1],label:`\u7B2C${k[1]}\u96C6`,movie:false,src:`text:${f}`}}}const a=zp(e,t);if(a)return{ep:a,label:`\u7B2C${a}\u96C6`,movie:false,src:"ep-active(\u7AD9\u70B9\u7EA7)"};const s=Hp(e);if(s)return{ep:s,label:`\u7B2C${s}\u96C6`,movie:false,src:"ep-active(\u7EC4\u4EF6\u7EA7)"};try{const l=e.querySelectorAll('[class*="active"], [class*="current"], [class*="selected"], [aria-current="true"]');for(const d of l){const f=Bn(d.textContent);if(!f||!qr(d))continue;return{ep:f,label:`\u7B2C${f}\u96C6`,movie:false,src:"active-ep"}}}catch(l){}if(es(e,r,""))return{ep:"",label:oi,movie:true,src:"movie(\u515C\u5E95)"};return{ep:"",label:"",movie:false,src:""}} o(ss,"extractEpisode"); var Up=/favicon|(?:^|[/_.-])(?:site[-_]?)?(?:logo|ico|icon|default|loading|blank|placeholder|spacer|avatar|no-?(?:img|pic|poster|cover|image))\d*[.\-_/]|(?:^|[/_.-])(?:banner|ads?|adv)\//i; var Vp=[".card-title",".title",".vod-info .title",'[class*="-title"]:not([class*="sub-"])','[class*="_title"]:not([class*="sub_"])',".name","h3","h2"]; function Fr(e,t){for(const c of Vp){const a=e.querySelector(c);const s=a?String(a.textContent||"").replace(/\s+/g," ").trim():"";if(s&&s.length>=2&&s.length<=60)return s}const n=String(t.getAttribute("title")||"").trim();if(n)return n;const r=e.querySelector("img");const i=r?String(r.getAttribute("alt")||"").trim():"";if(i)return i;return String(t.textContent||"").replace(/\s+/g," ").trim().slice(0,60)} o(Fr,"cardName"); function ls(e,t){try{const n=new URL(e,t);return n.pathname+n.search}catch(n){return e}} o(ls,"pathFromHref"); function ui(e,t){return ls(e.getAttribute("href")||"",t)} o(ui,"pathOf"); function Gp(e,t,n){const r=[];let i;try{i=e.querySelectorAll(t)}catch(c){return r}for(const c of i){if(Ht(e,c))continue;const a=c.matches&&c.matches("a[href]")?c:c.querySelector("a[href]");if(!a)continue;const s=dt(Fr(c,a));if(!s)continue;r.push({element:c,name:s,cover:Q(c.querySelector("img")),path:ui(a,n)});if(r.length>=200)break}return r} o(Gp,"cardsFromSelector"); var Kp='.title, [class*="-title"]:not([class*="sub-"]), [class*="_title"]:not([class*="sub_"])'; var us=/\/voddetail\/|\/detail\/[\w-]|\/vod\/detail\/|\/movie\/[\w-]|\/vod\/\d+\.html|\/video\/[\w-]+\.html|\b(?:play|detail|vod|show|video|movie|view)[\w-]*\.php\?[^"'#<>\s]*\b(?:id|vid)=\d+/i; function ds(e){let t=e;for(let n=0;n<5&&t&&t.tagName!=="BODY";n++){if(t.querySelector("img")){try{if(t.querySelector(Kp))return t}catch(i){}const r=String(t.textContent||"").replace(/\s+/g," ").trim();if(r.length<=140)return t}t=t.parentElement}return null} o(ds,"cardBoxOf"); function Yp(e,t){const n=[];const r=new Set;let i;try{i=e.querySelectorAll("a[href]")}catch(c){return n}for(const c of i){if(Ht(e,c))continue;const a=c.getAttribute("href")||"";if(!us.test(a))continue;const s=ds(c);if(!s||r.has(s))continue;r.add(s);const l=dt(Fr(s,c));if(!l)continue;n.push({element:s,name:l,cover:Q(s.querySelector("img")),path:ui(c,t)});if(n.length>=200)break}return n} o(Yp,"cardsFromLinks"); function Wp(e,t){const n=new Map;let r;try{r=e.querySelectorAll("a[href]")}catch(a){return[]}for(const a of r){if(Ht(e,a))continue;const s=a.getAttribute("href")||"";if(!s||Lr.test(s))continue;if(!Ar(s,t))continue;const l=kr(s);if(!l||l==="/"||l==="#"||l==="/#")continue;if(!Tr(l))continue;if(!n.has(l))n.set(l,[]);n.get(l).push(a)}const i=[];const c=new Set;for(const a of n.values()){if(a.length=200)return i}}return i} o(Wp,"cardsFromShapeGroups"); var ts=["data-detail","data-href","data-url","data-link","data-play"]; function Xp(e,t){const n=[];let r;try{r=e.querySelectorAll(ts.map(i=>"["+i+"]").join(","))}catch(i){return n}for(const i of r){if(Ht(e,i))continue;let c="";for(const l of ts){const d=String(i.getAttribute(l)||"").trim();if(d){c=d;break}}if(!c||!/^(?:\/|https?:)/i.test(c))continue;if(!us.test(c))continue;const a=String(i.getAttribute("data-title")||"").replace(/\s+/g," ").trim();const s=dt(a||Fr(i,i));if(!s)continue;n.push({element:i,name:s,cover:Q(i.querySelector("img")),path:ls(c,t)});if(n.length>=200)break}return n} o(Xp,"cardsFromDataAttrs"); function fs(e,t,{contentPage:n=false}={}){const r=e.location?e.location.href:"";let i=t;if(!i){i=Cr.find(f=>{try{return e.querySelector(f)}catch(k){return false}})}let c=i?Gp(e,i,r):[];const a=!n;if(a){const f=Yp(e,r);if(f.length){const k=o(g=>c.some(_=>_.element===g||_.element.contains(g)||g.contains(_.element)),"dup");for(const g of f)if(!k(g.element))c.push(g)}}if(a){const f=Xp(e,r);if(f.length){const k=new Set(c.map(g=>g.element));for(const g of f)if(!k.has(g.element))c.push(g)}}if(a&&c.length<6){const f=Wp(e,r);if(f.length>c.length){const k=new Set(c.map(g=>g.element));for(const g of f)if(!k.has(g.element))c.push(g)}}const s=new Set(c.map(f=>f.element));const l=o(f=>f===e.body||f===e.documentElement,"isRoot");const d=new Set;for(const f of c){let k=f.element.parentElement;while(k&&!l(k)){if(s.has(k)){d.add(f.element);break}k=k.parentElement}}if(d.size)c=c.filter(f=>!d.has(f.element));for(const f of c){if(f.cover&&Up.test(f.cover))f.cover=""}return c} o(fs,"extractListCards"); var _t="fb:"; var di=/^[a-z0-9-]+(\.[a-z0-9-]+)+$/i; var Br=/(?:版|版本)$|推荐$|^(?:极简|纯净|简洁|无广告|免广告|免费|高清|超清|蓝光|秒播|在线观看|全集|最新|热播)$/i; function Jp(e,t,n){const r=o(f=>!!f&&f.length<=20&&!di.test(f)&&!/^\d+$/.test(f),"ok");const i=String(e||"").split(/[-–—·・]/).map(f=>f.trim()).filter(Boolean);if(!i.length)return"";const c=i[i.length-1];const a=c.split(/_/).map(f=>f.trim()).filter(Boolean);if(i.length<2&&a.length<2)return"";if(t&&a.length>1){const f=a.find(k=>k===t&&r(k));if(f)return f}let s=a.length>1?a[0]:c;if(Br.test(s)){for(let f=i.length-2;f>=0;f--){const k=i[f].trim();if(!k||Br.test(k))continue;s=k;break}}if(n&&s===n)return"";if(r(s))return s;const l=i[0]||"";if(l.indexOf("_")>=0)return"";const d=l.trim();return r(d)?d:""} o(Jp,"siteNameFromTitle"); var Zp=['header a[class*="logo"]','header [class*="logo"]',".logo","#logo",'a[class*="logo"]',"header img[alt]"]; var Qp=/^(tabler|bootstrap|tailwind|element|ant design|layui|vue|react|next\.?js|nuxt)$/i; function em(e){for(const t of Zp){let n;try{n=e.querySelector(t)}catch(a){continue}if(!n)continue;const r=n.querySelector?n.querySelector("img[alt]"):null;const i=String(n.getAttribute&&n.getAttribute("alt")||r&&r.getAttribute("alt")||n.textContent||"").replace(/\s+/g," ").trim();if(!i)continue;const c=i.split(/[-–—|·]/)[0].trim();if(!c||c.length>20||di.test(c)||Qp.test(c))continue;return c}return""} o(em,"logoNameOf"); function tm(e,t){let n="";try{const c=e.querySelector('meta[property="og:site_name"]');n=c?String(c.getAttribute("content")||"").trim():""}catch(c){n=""}n=n.replace(/[((][^))]*[))]\s*$/,"").trim();if(n&&n.length<=20&&!di.test(n))return n;const r=em(e);const i=String(e.title||"").replace(/\s+/g," ").trim();if(i){let c="";try{const s=zt(e,String(location.href||""));if(s==="detail"||s==="play"){const l=e.querySelector("h1");const d=l?String(l.textContent||"").replace(/\s+/g," ").trim():"";if(d&&d.length>=2&&d.length<=60)c=d}}catch(s){}const a=Jp(i,r,c);if(a)return a}if(r&&i&&(r===i||i.indexOf(r)===0||r.indexOf(i)===0)){return r.length<=i.length?r:i}return t} o(tm,"siteNameOf"); function ps(){let e="";try{e=String(location.hostname||"").replace(/^www\./,"")}catch(h){return null}if(!e)return null;const t=document;if(!t||!t.body)return null;const n=location.href;const r=o(()=>{try{return location.href}catch(h){return n}},"nowUrl");if(Ir(t,{ignoreSpa:zt(t,n)!=="other"}))return null;const i=o(()=>{const h=r();return(h.match(/\/vodplay\/(\d+)/i)||h.match(/\/vod\/play\/id\/(\d+)/i)||h.match(/\/play\/(\d+)/i)||h.match(/[?&](?:id|vid)=(\d+)/i)||[])[1]||""},"showIdOf");let c=null;let a=false;let s="";let l=null;let d=0;const f=o(()=>{try{return t.querySelectorAll("a[href]").length}catch(h){return 0}},"countAnchors");const k=o(()=>!!l.length&&l.every(h=>h.element&&h.element.isConnected)&&f()===d,"cardsStillValid");const g=tm(t,e);const _=o(h=>!h||h===g,"badName");const b=o(()=>{try{return li(t,i())}catch(h){return null}},"selfLink");const q=o(()=>{const h=b();if(h&&h.href){try{return new URL(h.href,n).pathname}catch(D){}}const M=x.__family?x.__family():null;if(M&&typeof M.detailFromPlay==="function"){const D=M.detailFromPlay(location.pathname);if(D)return D}return location.pathname+location.search},"playPath");const x={id:_t+e,name:g,domains:[location.hostname],matches:[],include:[],__fallback:true,crossSiteTarget:false,pageType(){const h=r();let M=zt(t,h);if(M==="other"&&Nn(t,h))M="list";return M==="list"&&/\/vodsearch\/|\/search\//i.test(h)?"search":M},getDetailInfo(){const h=Dr(t,g,r());if(_(h.name))return null;return{name:h.name,cover:as(t,h.name).cover,path:location.pathname+location.search}},getPlayInfo(){const h=Dr(t,g,r());if(_(h.name))return null;return{name:h.name,cover:Nr(t).cover,path:q()}},getListCards(){if(l&&k())return l;const h=this.__family();const M=zt(t,r());l=fs(t,h?h.cardSelector:null,{contentPage:M==="play"||M==="detail"});d=f();return l},getPlaybackInfo(){const h=ss(t,r(),g);return h.label?{episode:h.label}:null},__family(){const h=r();if(!a||s!==h){c=Ja(t,h);a=true;s=h}return c}};const F=x.__family();if(F&&typeof F.searchPath==="function"){x.searchPath=F.searchPath;delete x.crossSiteTarget}return x} o(ps,"createFallbackAdapter"); var it=[Fc,Bc,jc,va,ha,ga,ya]; var kt=void 0; function nm(e){const t=location.href;return(e.include||[]).some(n=>{const r=/^\/(.*)\/$/.exec(n);if(!r)return false;try{return new RegExp(r[1]).test(t)}catch(i){return false}})} o(nm,"matchInclude"); var rm=200; var an=null; function sn(){if(an)return an;try{const e=JSON.parse(GM_getValue(Sr,"{}"));an=e&&typeof e==="object"?e:{}}catch(e){an={}}return an} o(sn,"readSiteNames"); var Ut=null; function om(){if(!Ut){Ut=new Map;for(const[e,t]of Object.entries(sn())){if(typeof e!=="string"||e.indexOf(_t)!==0)continue;const n=e.slice(_t.length);if(!n)continue;const r=Ut.get(t);if(r)r.push(n);else Ut.set(t,[n])}}return Ut} o(om,"readFamilyBySiteName"); function im(e,t){if(!t||t===e)return[e];const n=om().get(t);if(!n||n.length<=1)return[e];return[e,...n.filter(r=>r!==e)]} o(im,"familyDomains"); function cm(e,t){if(!e||!t||t===e.slice(_t.length))return;const n=sn();if(n[e]===t)return;if(n[e]===void 0&&Object.keys(n).length>=rm)return;n[e]=t;Ut=null;try{GM_setValue(Sr,JSON.stringify(n))}catch(r){}} o(cm,"rememberSiteName"); function ms(){return{...sn()}} o(ms,"exportSiteNames"); function vs(e){if(!e||typeof e!=="object")return;const t=sn();let n=false;Object.keys(e).forEach(r=>{const i=e[r];if(typeof i!=="string"||!i||t[r]===i)return;t[r]=i;n=true});if(!n)return;try{GM_setValue(Sr,JSON.stringify(t))}catch(r){}an=t;Ut=null;it.forEach(r=>{if(r&&r.__fallback&&t[r.id]&&r.name!==t[r.id])r.name=t[r.id]})} o(vs,"importSiteNames"); function Vt(e){if(!e)return null;const t=it.find(i=>i.id===e);if(t)return t;if(typeof e!=="string"||e.indexOf(_t)!==0)return null;const n=e.slice(_t.length);if(!n)return null;const r=sn()[e]||n;return{id:e,name:r,domains:im(n,r),__fallback:true}} o(Vt,"findSiteById"); function am(){try{if(!Pr()||!Za(document))return null;const e=ps();if(!e)return null;const t=sn()[e.id];const n=e.id.slice(_t.length);const r=!t||t===n||Br.test(t);if(t&&!r)e.name=t;it.push(e);cm(e.id,e.name);if(!ai(location.href))_a(n);return e}catch(e){return null}} o(am,"resolveFallback"); function hs(){if(!kt)kt=void 0} o(hs,"resetCurrentSite"); function xe(){if(kt!==void 0)return kt;const e=location.hostname;const t=it.find(n=>n.domains.some(r=>ue(r)===ue(e))||nm(n))||null;if(t){kt=t;wa(t.id,e);return kt}kt=am();return kt} o(xe,"getCurrentSite"); var Oe={currentTab:"want",currentPage:{want:1,watched:1,history:1},renderedTabs:new Set,searchKeyword:"",siteFilter:""}; var sm=location.hostname==="127.0.0.1"||location.hostname==="localhost"; var lm=typeof __VC_DEV_BUILD__!=="undefined"&&__VC_DEV_BUILD__===true; var jr=null; function fi(){if(jr!==null)return jr;let e=null;try{e=GM_getValue(Kc,null)}catch(t){e=null}jr=e===null?sm||lm:e===true;return jr} o(fi,"isDebugLogEnabled"); function jn(...e){if(fi())console.debug(...e)} o(jn,"debug"); function V(...e){if(fi())console.log(...e)} o(V,"log"); function gs(...e){if(fi())console.warn(...e)} o(gs,"warn"); function $r(...e){console.error(...e)} o($r,"error"); var um={jav:"JAV \u89C6\u9891",drama:"\u5F71\u89C6"}; var bs=3*1024*1024; var dm=.9; var fm=30*1e3; var pm=["element"]; var mm=["addTime"]; function ws(e){return typeof e==="function"||e&&typeof e==="object"&&typeof e.nodeType==="number"} o(ws,"isRuntimeValue"); function mi(e){return pm.indexOf(e)>=0||mm.indexOf(e)>=0} o(mi,"isDroppedField"); function pi(e){if(!e||typeof e!=="object")return e;let t=false;const n={};Object.keys(e).forEach(r=>{const i=e[r];if(mi(r)){t=true;return}if(ws(i)){t=true;return}n[r]=i});return t?n:e} o(pi,"sanitizeItem"); function ys(e,t){const n=t.map(i=>e[i]===void 0?"":e[i]);const r={};Object.keys(e).forEach(i=>{if(t.indexOf(i)>=0||mi(i))return;if(ws(e[i]))return;r[i]=e[i]});if(Object.keys(r).length)n.push(r);return n} o(ys,"encodeItem"); function xs(e,t){if(!Array.isArray(e))return pi(e);const n={};t.forEach((i,c)=>{const a=e[c];if(a!==""&&a!==void 0&&a!==null)n[i]=a});const r=e[t.length];if(r&&typeof r==="object"){Object.keys(r).forEach(i=>{if(!mi(i))n[i]=r[i]})}return n} o(xs,"decodeItem"); function ln(e){try{return tn(e)}catch(t){return 0}} o(ln,"jsonBytes"); function Ss({storageKey:e,backupFileName:t,moduleId:n,itemIdField:r,itemFields:i,showAlert:c,confirmExport:a,chooseImportStrategy:s,playbackLoadFn:l,playbackSaveFn:d,ratingsLoadFn:f,ratingsSaveFn:k,prefsLoadFn:g,prefsSaveFn:_,siteNamesLoadFn:b,siteNamesSaveFn:q,budgetKeys:x,reclaimRatingsFn:F,onBudgetNotice:h}){const M=300;let D=null;let $=0;let T=0;let R=0;function z(E){return{want:[...E.want||[]],watched:[...E.watched||[]]}}o(z,"snapshot");function B(E){return{want:(E.want||[]).map(O=>ys(O,i)),watched:(E.watched||[]).map(O=>ys(O,i))}}o(B,"packLists");function A(E){return{want:(E&&E.want||[]).map(O=>xs(O,i)),watched:(E&&E.watched||[]).map(O=>xs(O,i))}}o(A,"unpackLists");function w(){const E=Date.now();if(D&&E-D.atK+E[G],0);$=O;T=E.\u6536\u85CF||0;R=Date.now();return{parts:E,total:O,budget:bs}}o(y,"usage");const C=["\u8BC4\u5206\u7F13\u5B58","\u56FE\u7247\u7F13\u5B58"];function S(){return Object.keys(y().parts).filter(E=>C.indexOf(E)<0)}o(S,"keptNames");function p(){const E=y();if(E.total<=E.budget)return E;if(F){const O=F(Math.floor(E.budget*dm))||{};if(O.removed>0){const K=y();V("[\u5B58\u50A8] \u6570\u636E "+Ue(E.total)+" \u8D85\u8FC7\u9884\u7B97 "+Ue(E.budget)+"\uFF0C\u5DF2\u56DE\u6536 "+O.removed+" \u6761\u8BC4\u5206\u7F13\u5B58\uFF08\u6309\u91CD\u5EFA\u6210\u672C\u4ECE\u4F4E\u5230\u9AD8\uFF1A\u67E5\u4E0D\u5230 \u2192 \u7AD9\u70B9\u76F4\u8BFB \u2192 \u63A5\u53E3\uFF09\uFF0C\u73B0\u5728 "+Ue(K.total)+"\uFF1B"+S().join("\u4E0E")+"\u672A\u52A8");if(h)h("\u5B58\u50A8\u63A5\u8FD1\u4E0A\u9650\uFF0C\u5DF2\u56DE\u6536 "+O.removed+" \u6761\u8BC4\u5206\u7F13\u5B58\uFF08"+S().join("\u4E0E")+"\u672A\u52A8\uFF09");if(K.total<=E.budget)return K}}V("[\u5B58\u50A8] \u6570\u636E "+Ue(E.total)+" \u8D85\u8FC7\u9884\u7B97 "+Ue(E.budget)+"\uFF1A"+(F?"\u8BC4\u5206\u7F13\u5B58\u5DF2\u5C3D\u91CF\u56DE\u6536\uFF0C":"")+S().join("\u4E0E")+"\u4E0D\u4F1A\u81EA\u52A8\u5220\u9664\uFF0C\u8BF7\u5BFC\u51FA\u5907\u4EFD\u540E\u6E05\u7406");if(h)h("\u5B58\u50A8\u5DF2\u8D85\u4E0A\u9650\uFF0C\u8BF7\u5BFC\u51FA\u5907\u4EFD\u540E\u6E05\u7406\u90E8\u5206\u5185\u5BB9\uFF08"+S().join("\u4E0E")+"\u4E0D\u4F1A\u88AB\u81EA\u52A8\u5220\u9664\uFF09");return y()}o(p,"enforceBudget");function P(E){const O=y();if(O.total<=O.budget)return O;V("[\u5B58\u50A8] "+E+"\u540E\u6570\u636E "+Ue(O.total)+" \u8D85\u8FC7\u9884\u7B97 "+Ue(O.budget)+"\uFF1A\u8D85\u51FA\u90E8\u5206\u4E0D\u4F1A\u81EA\u52A8\u5220\u9664\uFF08"+S().join("\u4E0E")+"\u59CB\u7EC8\u4FDD\u7559\uFF09\uFF0C\u53EF\u5BFC\u51FA\u5907\u4EFD\u540E\u6E05\u7406");if(h)h(E+"\u540E\u6570\u636E "+Ue(O.total)+" \u8D85\u8FC7\u9884\u7B97 "+Ue(O.budget)+"\uFF0C"+S().join("\u4E0E")+"\u4E0D\u4F1A\u88AB\u81EA\u52A8\u5220\u9664");return O}o(P,"reportBudget");function U(E,O){const K={want:(E.want||[]).map(pi),watched:(E.watched||[]).map(pi)};let G="";try{G=JSON.stringify(B(K))}catch(ae){D=null;c("\u4FDD\u5B58\u5931\u8D25\uFF1A\u6570\u636E\u4E2D\u5B58\u5728\u65E0\u6CD5\u5E8F\u5217\u5316\u7684\u5185\u5BB9");return false}try{GM_setValue(e,G);D={data:K,at:Date.now()}}catch(ae){D=null;c("\u4FDD\u5B58\u5931\u8D25\uFF1A\u5B58\u50A8\u7A7A\u95F4\u4E0D\u8DB3\uFF0C\u8BF7\u5148\u5BFC\u51FA\u5907\u4EFD\u5E76\u6E05\u7406\u90E8\u5206\u6536\u85CF");return false}if(!(O&&O.skipBudget))ne(ln(G));return true}o(U,"saveData");function ne(E){const O=$-T+E;if(O{const te=ae[le];if(!te||typeof te!=="object"||!te.score)return;if(K!=="local"||!G[le])G[le]=te});return G}o(ie,"mergeRatings");function Ee(E){if(Array.isArray(E.playback))return E.playback;return Array.isArray(E.history)?E.history:null}o(Ee,"readPlaybackOf");function pe(E){return E.ratings&&typeof E.ratings==="object"?E.ratings:null}o(pe,"readRatingsOf");function st(E){return E.prefs&&typeof E.prefs==="object"?E.prefs:null}o(st,"readPrefsOf");function Xe(E){return E.siteNames&&typeof E.siteNames==="object"?E.siteNames:null}o(Xe,"readSiteNamesOf");function Ne(E,O,K){if(K==="replace")return{...O||{}};const G={...E||{}};Object.keys(O||{}).forEach(ae=>{if(K==="local"&&Object.prototype.hasOwnProperty.call(G,ae))return;G[ae]=O[ae]});return G}o(Ne,"mergePrefs");async function Je(){const E=w();const O={module:n,schema:3,want:E.want,watched:E.watched};if(l)O.playback=l();if(f)O.ratings=f();if(g)O.prefs=g();if(b)O.siteNames=b();const K=O.want.length+O.watched.length;const G=O.playback?O.playback.length:0;const ae=O.ratings?Object.keys(O.ratings).length:0;if(!K&&!G){c("\u6682\u65E0\u53EF\u5BFC\u51FA\u7684\u6536\u85CF\u6570\u636E");return}const le=[`\u5171 ${K} \u6761\u6536\u85CF`,G?`${G} \u6761\u89C2\u770B\u8BB0\u5F55`:"",ae?`${ae} \u6761\u8BC4\u5206\u7F13\u5B58`:""].filter(Boolean).join("\u3001");if(a&&!await a(`\u786E\u5B9A\u5BFC\u51FA\u6536\u85CF\u5907\u4EFD\u5417\uFF1F${le}\uFF0C\u5C06\u4E0B\u8F7D\u4E3A JSON \u6587\u4EF6`))return;const te=new Blob([JSON.stringify(O,null,2)],{type:"application/json"});const me=URL.createObjectURL(te);const fe=document.createElement("a");fe.href=me;fe.download=`${t}_${new Date().toLocaleDateString().replace(/\//g,"-")}.json`;fe.click();URL.revokeObjectURL(me)}o(Je,"exportData");function Ce(E){return!!E&&typeof E==="object"&&E[r]!==void 0&&E[r]!==null&&E[r]!==""}o(Ce,"isValidItem");function lt(E){if(!E||!Array.isArray(E.want)||!Array.isArray(E.watched)){return"\u6587\u4EF6\u683C\u5F0F\u4E0D\u6B63\u786E"}if(E.module&&E.module!==n){return`\u8BE5\u5907\u4EFD\u5C5E\u4E8E\u300C${um[E.module]||E.module}\u300D\u6A21\u5757\uFF0C\u4E0D\u80FD\u5BFC\u5165\u5230\u5F53\u524D\u6A21\u5757`}const O=E.want[0]||E.watched[0];if(O&&!(r in O)){return"\u5907\u4EFD\u6570\u636E\u4E0E\u5F53\u524D\u6A21\u5757\u4E0D\u5339\u914D\uFF0C\u8BF7\u68C0\u67E5\u6587\u4EF6"}return""}o(lt,"validateImported");function j(E,O,K){const G=[...E];const ae=new Map(G.map((le,te)=>[le[r],te]));for(const le of O){if(!Ce(le))continue;const te=le[r];if(ae.has(te)){if(K==="import")G[ae.get(te)]=le}else{G.push(le);ae.set(te,G.length-1)}}return G}o(j,"mergeList");function Te(E,O,K){const G={added:0,duplicates:0,errors:0};if(K==="replace"){const le=o(te=>te.filter(me=>Ce(me)?(G.added++,true):(G.errors++,false)),"clean");return{data:{want:le(O.want),watched:le(O.watched)},stats:G}}const ae=o((le,te)=>{const me=[];for(const L of te){if(Ce(L))me.push(L);else G.errors++}const fe=j(le,me,K);const be=fe.length-le.length;G.added+=be;G.duplicates+=me.length-be;return fe},"mergeOne");return{data:{want:ae(E.want,O.want),watched:ae(E.watched,O.watched)},stats:G}}o(Te,"buildMergedData");function Me(E,O){const K=[O==="replace"?`\u5BFC\u5165 ${E.added} \u6761\u6536\u85CF`:`\u65B0\u589E ${E.added} \u6761\uFF0C\u91CD\u590D ${E.duplicates} \u6761`];if(E.errors)K.push(`\u8DF3\u8FC7\u9519\u8BEF ${E.errors} \u6761`);if(E.playback!=null)K.push(`${E.playback} \u6761\u89C2\u770B\u8BB0\u5F55`);if(E.ratings!=null)K.push(`${E.ratings} \u6761\u8BC4\u5206\u7F13\u5B58`);if(E.prefs!=null)K.push(`${E.prefs} \u9879\u8BBE\u7F6E`);if(E.siteNames!=null)K.push(`${E.siteNames} \u4E2A\u7AD9\u540D`);return`\u5BFC\u5165\u5B8C\u6210\uFF1A${K.join("\uFF0C")}`}o(Me,"formatResult");function Ze(E){const O=document.createElement("input");O.type="file";O.accept="application/json";O.onchange=K=>{const G=K.target.files[0];if(!G)return;const ae=new FileReader;ae.onload=async le=>{try{const te=JSON.parse(le.target.result);const me=lt(te);if(me){c(me);return}const fe=await s();if(!fe)return;const be=w();const{data:L,stats:X}=Te(be,te,fe);U(L,{skipBudget:true});const Y=Ee(te);if(l&&d&&Y){const ve=fe==="replace"?Y.filter(Ce):j(l(),Y,fe);d(ve);X.playback=ve.length}const ee=pe(te);if(f&&k&&ee){const ve=ie(f(),ee,fe);k(ve);X.ratings=Object.keys(ve).length}const Ae=st(te);if(g&&_&&Ae){const ve=Ne(g(),Ae,fe);_(ve);X.prefs=Object.keys(ve).length}const se=Xe(te);if(b&&q&&se){const ve={...se,...b()||{}};q(ve);X.siteNames=Object.keys(ve).length}P("\u5BFC\u5165");if(E)E();c(Me(X,fe))}catch(te){c("\u6587\u4EF6\u89E3\u6790\u5931\u8D25")}};ae.readAsText(G)};O.click()}o(Ze,"importData");return{loadData:w,saveData:U,exportData:Je,importData:Ze,usageInfo:y,enforceBudget:p}} o(Ss,"createStorageHelper"); var ks=new Set(["video","audio"]); var vm=1e3; var zr=null; var Es=0; function $n(e){const t=[];if(!e||typeof e.querySelectorAll!=="function")return t;e.querySelectorAll("*").forEach(n=>{if(n.tagName.indexOf("-")<0)return;const r=n.shadowRoot;if(!r)return;ks.forEach(i=>r.querySelectorAll(i).forEach(c=>t.push(c)))});return t} o($n,"queryShadowMediaIn"); function hm(e,t){const n=o(c=>t==="video"?c.filter(a=>a.tagName==="VIDEO"):t==="audio"?c.filter(a=>a.tagName==="AUDIO"):c,"pick");const r=zr?zr.filter(c=>c.isConnected):[];if(r.length)return n(r);if(Date.now()t.push(a));c.querySelectorAll("iframe").forEach(a=>{try{const s=a.contentDocument;if(s&&!i.has(s)){i.add(s);r.push(s)}}catch(s){}})}if(!t.length&&ks.has(e))return hm(n,e);return t} o(ct,"queryAllInFrames"); function Ts(){const e=[window];const t=new Set([document]);const n=[document];while(n.length){const r=n.shift();r.querySelectorAll("iframe").forEach(i=>{try{const c=i.contentDocument;if(c&&!t.has(c)){t.add(c);if(c.defaultView)e.push(c.defaultView);n.push(c)}}catch(c){}})}return e} o(Ts,"listSameOriginWindows"); function Hr(){const e=ct("video")[0]||null;if(!e)return{video:null,frame:null};let t=null;try{t=e.ownerDocument.defaultView.frameElement||null}catch(n){t=null}return{video:e,frame:t}} o(Hr,"findPlayerVideo"); function As(e){if(!e||typeof e.focus!=="function")return false;if(e.tabIndex<0&&!e.hasAttribute("tabindex"))e.tabIndex=-1;try{e.focus({preventScroll:true})}catch(t){return false}return e.ownerDocument.activeElement===e} o(As,"focusEl"); function gm(e){const t=e.getBoundingClientRect();return t.width>=200&&t.height>=120} o(gm,"isVisibleFrame"); function bm(e){try{return!e.contentDocument}catch(t){return true}} o(bm,"isCrossOriginFrame"); function vi(e){let t=null;let n=0;e.forEach(r=>{const i=r.getBoundingClientRect();const c=i.width*i.height;if(c>n){n=c;t=r}});return t} o(vi,"largestOf"); function un(e){const t=Array.from(document.querySelectorAll("iframe")).filter(gm);if(!t.length)return null;if(e){const i=t.filter(c=>{try{return c.matches(e)}catch(a){return false}});if(i.length)return vi(i)}const n=t.filter(i=>/player|play\.php|\/vod\//i.test(i.getAttribute("src")||""));if(n.length)return vi(n);const r=t.filter(bm);return vi(r.length?r:t)} o(un,"pickPlayerFrame"); function _s(e){if(!e)return false;const t=As(e);try{e.contentWindow.focus()}catch(n){}return t||document.activeElement===e} o(_s,"focusFrame"); function zn(e,{force:t=false}={}){const n=document.activeElement;if(n&&n!==document.body&&n!==document.documentElement){if(!t||n.tagName!=="IFRAME")return false}const{video:r,frame:i}=Hr();if(i)return _s(i);if(r)return As(r);return _s(un(e))} o(zn,"focusPlayer"); var hi=false; function dn(){hi=true} o(dn,"markVolumeTouched"); function Ls(){hi=false} o(Ls,"resetVolumeTouched"); function fn(){return hi} o(fn,"isVolumeTouched"); var Cs=new WeakMap; function Gt(e,t,{unmute:n=false}={}){const r=Math.max(0,Math.min(1,Math.round(Number(t)*100)/100));Cs.set(e,r);e.volume=r;if(n&&e.muted)e.muted=false;return r} o(Gt,"setVideoVolume"); function Ms(e){if(!e)return false;const t=Cs.get(e);if(t===void 0)return true;return Math.abs(Number(e.volume)-t)>.01} o(Ms,"isExternalVolumeChange"); var ym=500; var xm=24; var wm=3e3; var Hn=null; function Is(e){Hn=typeof e==="function"?e:null} o(Is,"setRemoteVolume"); function Ps(e){if(fn())return 0;const t=ct("video");let n=0;t.forEach(r=>{try{Gt(r,e,{unmute:false});n++}catch(i){}});if(Hn){try{if(Hn(e)!==false)n++}catch(r){}}return n} o(Ps,"applyVolumeNow"); function Os({getVolume:e}){let t=null;let n=0;let r=false;let i=false;let c=0;const a=new Set;const s=o(()=>{if(fn())return;d(i)},"onPlay");function l(_){const b=_&&(_.currentTarget||_.target);if(!b||!Ms(b))return;if(Date.now()-c>wm)return;dn();g()}o(l,"onVolumeChange");function d(_){const b=e();if(!(b>=0))return 0;const q=ct("video");let x=0;q.forEach(F=>{if(!a.has(F)){a.add(F);try{F.addEventListener("play",s)}catch(h){}try{F.addEventListener("volumechange",l)}catch(h){}}try{Gt(F,b,{unmute:_});x++}catch(h){}});if(Hn){try{if(Hn(b)!==false)x++}catch(F){}}return x}o(d,"apply");function f(){c=Date.now();if(i)return;i=true;if(!fn())d(true)}o(f,"onGesture");function k(){window.removeEventListener("pointerdown",f,true);window.removeEventListener("keydown",f,true)}o(k,"removeGestureListeners");function g(){if(!t)return;clearInterval(t);t=null}o(g,"stopPolling");return{start(){if(r)return;r=true;n=0;window.addEventListener("pointerdown",f,true);window.addEventListener("keydown",f,true);if(!fn())d(false);g();t=setInterval(()=>{n++;if(fn()){g();return}d(i);if(n>=xm)g()},ym)},stop(){if(!r)return;r=false;g();k();a.forEach(_=>{try{_.removeEventListener("play",s)}catch(b){}try{_.removeEventListener("volumechange",l)}catch(b){}});a.clear()}}} o(Os,"createVolumeSync"); var tt={favPeekOpacity:{key:"video_collector_ui_fav_peek_opacity",def:55,min:10,max:100,step:5},favSize:{key:"video_collector_ui_fav_size",def:"small"},favMark:{key:"video_collector_ui_fav_mark",def:true},ratingRemote:{key:"video_collector_ui_rating_remote",def:true},xjumpOpacity:{key:"video_collector_ui_xjump_opacity",def:100,min:0,max:100,step:5},xjumpSize:{key:"video_collector_ui_xjump_size",def:"large"},volume:{key:"video_collector_ui_volume",def:100,min:0,max:100,step:5}}; var Rs="vc-ui-style"; function je(e){const t=tt[e];const n=GM_getValue(t.key,t.def);if(typeof t.def==="boolean")return n===true;if(t.min!=null){const r=Number(n);return Number.isFinite(r)?Math.min(t.max,Math.max(t.min,r)):t.def}return n==="small"?"small":"large"} o(je,"getUiSetting"); function Tt(){const e=Number(je("favPeekOpacity"))/100;const t=Number(je("xjumpOpacity"))/100;let n=document.getElementById(Rs);if(!n){n=document.createElement("style");n.id=Rs;(document.head||document.documentElement).appendChild(n)}n.textContent=`:root{--vc-fav-peek-opacity:${e};--vc-xjump-opacity:${t};}`;document.documentElement.classList.toggle("vc-fav-sm",je("favSize")==="small");document.documentElement.classList.toggle("vc-fav-nomark",je("favMark")===false);document.documentElement.classList.toggle("vc-xjump-sm",je("xjumpSize")==="small")} o(Tt,"applyUiStyles"); function Ds(e){GM_setValue(tt.favPeekOpacity.key,Number(e));Tt()} o(Ds,"setFavPeekOpacity"); function Ns(e){GM_setValue(tt.favSize.key,e);Tt()} o(Ns,"setFavSize"); function qs(e){GM_setValue(tt.favMark.key,e===true);Tt()} o(qs,"setFavMark"); function gi(){return je("ratingRemote")!==false} o(gi,"getRatingRemote"); function Fs(e){GM_setValue(tt.ratingRemote.key,e===true)} o(Fs,"setRatingRemote"); function Bs(e){GM_setValue(tt.xjumpOpacity.key,Number(e));Tt()} o(Bs,"setXjumpOpacity"); function js(e){GM_setValue(tt.xjumpSize.key,e);Tt()} o(js,"setXjumpSize"); function $s(e){const t=Math.round(Number(e));GM_setValue(tt.volume.key,t);Ls();Ps(t/100)} o($s,"setVolume"); function zs(){const e={};Object.keys(tt).forEach(t=>{e[tt[t].key]=je(t)});return e} o(zs,"exportUiSettings"); function Hs(e){if(!e||typeof e!=="object")return;let t=false;Object.keys(tt).forEach(n=>{const r=tt[n].key;if(!Object.prototype.hasOwnProperty.call(e,r))return;GM_setValue(r,e[r]);t=true});if(t)Tt()} o(Hs,"importUiSettings"); var Us=`.ad-box, .bcpic2 { display: none !important; } iframe[src*="jads.co"], iframe[src*="adshow.php"] { display: none !important; } .topbanner1, #topbanner11 { display: none !important; } .sidebanner1, #sidebanner11 { display: none !important; } #middlebanner11, #middletextbanner { display: none !important; } #float-ad { display: none !important; } #fuck-u { display: none !important; } .artplayer-plugin-ads { display: none !important; } .t-img-box, #iaujwnefhw { display: none !important; } .mi_btcon.ad, .module-adslist, .ads_w, .footerad, .right-ad, .close-ads, .gg-icon { display: none !important; } a[data-gaze-ad-banner], a[href*="ad.wyspg.com"] { display: none !important; } [class*="video-ad-pause__Container"], .play-ad, .ad-row, .ec-ad, .ec-ad-double, .small-icon-container, a[href*="mitnpkwxvfr.com"], a[href*="taiee.xyz"] { display: none !important; } .site-promo-card, a[href*="mitnpkwxvfr.com"] { display: none !important; }`; var At="video_collector_adblock"; var Em="adBlockEnabled"; var Vs=false; function _m(){if(Vs)return;Vs=true;try{if(GM_getValue(At,null)!==null)return;const e=GM_getValue(Em,null);if(e!==null)GM_setValue(At,!!e)}catch(e){}} o(_m,"migrateLegacyKey"); function Ur(){_m();return GM_getValue(At,true)} o(Ur,"isAdBlockEnabled"); function Vr(){const e="vc-adblock-style";if(!Ur()){const r=document.getElementById(e);if(r)r.remove();return}if(document.getElementById(e))return;const t=document.createElement("style");t.id=e;t.textContent=Us;const n=o(()=>{const r=document.head||document.documentElement;if(r){r.appendChild(t);return true}return false},"tryInject");if(!n()){const r=new MutationObserver(()=>{if(n())r.disconnect()});try{r.observe(document,{childList:true,subtree:true})}catch(i){requestAnimationFrame(n)}setTimeout(()=>r.disconnect(),3e3)}} o(Vr,"applyAdBlock"); function Gs(e){GM_setValue(At,!!e);Vr()} o(Gs,"setAdBlockEnabled"); function Ks(){return{[At]:Ur()}} o(Ks,"exportAdblock"); function Ys(e){if(!e||typeof e!=="object")return;if(!Object.prototype.hasOwnProperty.call(e,At))return;GM_setValue(At,!!e[At]);Vr()} o(Ys,"importAdblock"); var km=15e3; function Ws(e,t){return new Promise(n=>{const r=o(i=>{gs("[\u5F71\u89C6\u6536\u85CF] \u5C01\u9762\u6293\u53D6\u5931\u8D25\uFF1A",i,e);n(null)},"fail");try{GM_xmlhttpRequest({method:"GET",url:e,headers:t?{Referer:t}:{},responseType:"arraybuffer",timeout:km,onload:o(i=>{const c=i.response;if(!c||i.status&&i.status>=400){r(i.status);return}try{n(new Blob([c]))}catch(a){r("Blob \u6784\u9020\u5931\u8D25")}},"onload"),onerror:o(()=>r("\u7F51\u7EDC\u9519\u8BEF"),"onerror"),ontimeout:o(()=>r("\u8D85\u65F6"),"ontimeout")})}catch(i){n(null)}})} o(Ws,"fetchImageBlob"); function Gr(e){return(e||"").replace(/^http:\/\//i,"https://")} o(Gr,"toHttps"); function Ge(e,t){const n=e||"";if(!n||/^[a-z][a-z0-9+.-]*:/i.test(n))return n;try{return new URL(n,t||location.href).href}catch(r){return n}} o(Ge,"toAbsoluteUrl"); var Xs=`
`; var Js=`
选择导入方式
`; function Zs(){const e=document.createElement("div");e.className="vc-confirm-mask";e.innerHTML=Xs;document.body.appendChild(e);requestAnimationFrame(()=>e.classList.add("vc-show"));function t(){e.classList.remove("vc-show");setTimeout(()=>e.remove(),150)}o(t,"close");return{mask:e,close:t}} o(Zs,"createModal"); function Lt(e,{danger:t=false}={}){return new Promise(n=>{const{mask:r,close:i}=Zs();r.querySelector(".vc-confirm-text").textContent=e;if(t)r.querySelector(".vc-confirm-ok").classList.add("vc-danger");function c(a){i();n(a)}o(c,"finish");r.querySelector(".vc-confirm-cancel").onclick=()=>c(false);r.querySelector(".vc-confirm-ok").onclick=()=>c(true);r.onclick=a=>{if(a.target===r)c(false)}})} o(Lt,"showConfirm"); function Qs(e){return new Promise(t=>{const{mask:n,close:r}=Zs();n.querySelector(".vc-confirm-text").textContent=e;n.querySelector(".vc-confirm-cancel").style.display="none";n.querySelector(".vc-confirm-ok").onclick=()=>{r();t()};n.onclick=i=>{if(i.target===n){r();t()}}})} o(Qs,"showAlert"); function el(){return new Promise(e=>{const t=document.createElement("div");t.className="vc-confirm-mask";t.innerHTML=Js;document.body.appendChild(t);requestAnimationFrame(()=>t.classList.add("vc-show"));function n(r){t.classList.remove("vc-show");setTimeout(()=>t.remove(),150);e(r)}o(n,"close");t.querySelectorAll(".vc-import-option").forEach(r=>{r.onclick=()=>n(r.dataset.vcStrategy)});t.querySelector(".vc-confirm-cancel").onclick=()=>n(null);t.onclick=r=>{if(r.target===t)n(null)}})} o(el,"showImportStrategyDialog"); var tl=2e3; var nl=2e3; var rl=4e3; var ol=8e3; var il=60; var cl=8; var al=1e4; var sl=1e4; var Lm=''; function Cm(e){let t=0;for(const n of String(e||"")){const r=n.codePointAt(0);const i=r>=11904&&r<=40959||r>=63744&&r<=64255||r>=65280&&r<=65376||r>=12288&&r<=12351;t+=i?1:.5}return Math.ceil(t)} o(Cm,"readableLength"); function Mm(e,{tone:t="info",duration:n=0,clickable:r=false}={}){const i=Number(n);if(Number.isFinite(i)&&i>0)return i;const c=t==="error"?ol:t==="warn"?rl:t==="ok"?nl:tl;const a=Math.max(0,Cm(e)-cl)*il;const s=Math.min(al,c+a);return r?Math.max(s,sl):s} o(Mm,"toastDuration"); function oe(e,{tone:t="info",duration:n=0,icon:r="",variant:i="",emphasis:c="",onClick:a=null,linkText:s=""}={}){let l=document.querySelector(".vc-toast");if(!l){l=document.createElement("div");l.className="vc-toast";l.innerHTML=` ${Lm} `;l.querySelector(".vc-toast-close").addEventListener("click",()=>{l.classList.remove("vc-show")});l.addEventListener("click",_=>{if(_.target.closest(".vc-toast-close"))return;if(typeof l._onClick!=="function")return;const b=l._onClick;l._onClick=null;l.classList.remove("vc-toast-clickable");l.classList.remove("vc-show");b()});document.body.appendChild(l)}l._onClick=typeof a==="function"?a:null;l.classList.toggle("vc-toast-clickable",!!l._onClick);l.classList.remove("vc-show");void l.offsetWidth;l.classList.toggle("vc-toast-primary",i==="primary");l.querySelector(".vc-toast-icon").style.display=r==="play"?"":"none";const d=l.querySelector(".vc-toast-text");const f=[];const k=o((_,b)=>{const q=_?e.indexOf(_):-1;if(q>=0)f.push({at:q,len:_.length,cls:b})},"mark");k(c,"vc-toast-emph");k(s,"vc-toast-link");f.sort((_,b)=>_.at-b.at);d.textContent="";if(!f.length){d.textContent=e}else{let _=0;f.forEach(b=>{if(b.at<_)return;if(b.at>_)d.append(document.createTextNode(e.slice(_,b.at)));const q=document.createElement("span");q.className=b.cls;q.textContent=e.slice(b.at,b.at+b.len);d.append(q);_=b.at+b.len});if(_l.classList.remove("vc-show"),g)} o(oe,"showToast"); var Ct=24*60*60*1e3; var ll=[30*Ct,60*Ct]; var Yr=Infinity; var bl=90*Ct; var Im=3; var Si=2*Ct; var Pm=3*Ct; var Om=1*Ct; var Rm=45*1e3; var bi=5*60*1e3; var ul=3; var dl=[20*60*1e3,2*60*60*1e3,6*60*60*1e3,24*60*60*1e3]; var Dm=24*60*60*1e3; var Nm=3; var Kn=24; var Ei=10*60*1e3; var Wr=30; var qm=1; var Fm=8e3; var Bm=4e3; var yl=1e4; var pn=3; var fl=24; var nt=null; var ge=[]; var Yn=new Map; var yi=new Set; var Re=new Set; var Vn=0; var Gn=null; var Kr=0; var mn=0; var pl=false; var xi=null; function xl(e){xi=e} o(xl,"setBudgetGuard"); function Mt(){let e=null;try{e=JSON.parse(GM_getValue(Ko,""))||null}catch(t){e=null}if(!e||typeof e.until!=="number"){return{until:0,kind:"soft",level:0,reason:"",at:0}}if(e.level&&Date.now()-(e.at||0)>Dm){e={until:0,kind:e.kind,level:0,reason:e.reason,at:e.at}}return e} o(Mt,"loadBlock"); function _i(e){try{GM_setValue(Ko,JSON.stringify(e))}catch(t){}} o(_i,"commitBlock"); function wi(e,t,n,r){const i=Date.now();_i({until:i+n,kind:e,level:t,reason:r,at:i});if(e==="soft")Ml()} o(wi,"applyBlock"); function wl(e){const t=Mt();return t.kind===e?t.level:0} o(wl,"baseLevel"); function Sl(e){return typeof e==="string"&&e.length>0&&oa.test(e)} o(Sl,"isBlockPage"); function Ke(){if(nt)return nt;try{nt=JSON.parse(GM_getValue(on,"{}"))||{}}catch(e){nt={}}if(!pl){pl=true;let e=0,t=0;const n=Date.now();Object.keys(nt).forEach(r=>{const i=nt[r];if(!i||!i.miss)return;if(i.v!==pn){delete nt[r];e++;return}if(n-(i.ts||0)>=Si){delete nt[r];t++}});if(e){V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u6E05\u7406 "+e+' \u6761\u65E7\u6570\u636E\u6E90\u7559\u4E0B\u7684"\u672A\u547D\u4E2D"\u7F13\u5B58\uFF0C\u4F1A\u91CD\u65B0\u67E5\u4E00\u6B21')}if(t){V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u6E05\u7406 "+t+' \u6761\u5DF2\u8FC7\u51B7\u5374\u671F\u7684"\u672A\u547D\u4E2D"\u7F13\u5B58')}if(e||t)bt(nt)}return nt} o(Ke,"load"); function bt(e){nt=e;try{GM_setValue(on,JSON.stringify(e))}catch(t){}if(xi)xi()} o(bt,"commit"); var ml=500; function jm(e){try{return tn(JSON.stringify(e))}catch(t){return 0}} o(jm,"storeBytes"); function El(e){const t=Ke();let n=jm(t);if(n<=e)return{removed:0,bytes:n};const r=Date.now();const i=[],c=[],a=[];Object.keys(t).forEach(d=>{const f=t[d];if(!f)return;if(f.miss){if(r-(f.ts||0)>=Si)i.push(d);return}if(f.src==="dom")c.push(d);else a.push(d)});const s=o((d,f)=>(t[d].ts||0)-(t[f].ts||0),"byOldest");i.sort(s);c.sort(s);a.sort(s);let l=0;for(const d of[i,c,a]){for(const f of d){if(n<=e||l>=ml)break;try{n-=tn(f)+tn(JSON.stringify(t[f]))+3}catch(k){n-=60}delete t[f];l++}if(n<=e||l>=ml)break}if(l)bt(t);return{removed:l,bytes:n}} o(El,"reclaimRatings"); function _l(e,t){const n=Number(e),r=Number(t);return n>0&&n===r} o(_l,"sameScore"); function Wn(e){if(!e)return 0;if(e.norate)return Pm;if(!e.score)return 0;if(e.src==="dom")return(e.n||0)>=Im?Yr:bl;const t=(e.n||1)-1;return t=Wn(t)} o(kl,"isStale"); function Tl(){return Ke()} o(Tl,"loadRatingMap"); function Al(e){bt(e||{})} o(Al,"saveRatingMap"); function Ti(e){return"https://search.douban.com/movie/subject_search?search_text="+encodeURIComponent(e||"")} o(Ti,"searchUrlOf"); function Jr(e){return e?"https://movie.douban.com/subject/"+e+"/":""} o(Jr,"subjectUrlOf"); var $m=/^https?:\/\/movie\.douban\.com\/(?:subject|movie|tv)\/(\d+)\/?$/; var zm=/\/(?:subject|movie|tv)\/(\d{4,})/; function Zr(e,t){const n=String(e||"").trim();if(/^https:\/\/movie\.douban\.com\/subject\/\d+\/?$/.test(n))return n;const r=n.match($m)||n.match(/^(\d{4,})$/)||n.match(zm);return Jr(r&&r[1]||t)} o(Zr,"sanitizeDoubanUrl"); function Ll(){nt={};const e=Mt();if(e.until>Date.now()&&e.kind==="hard"){V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u672C\u673A\u6B63\u88AB\u8C46\u74E3\u62E6\u4E0B\uFF08"+(e.reason||"HTTP 403")+"\uFF09\uFF0C\u8FD8\u6709 "+Math.ceil((e.until-Date.now())/6e4)+" \u5206\u949F\u81EA\u52A8\u6062\u590D \u2014\u2014 \u6E05\u9664\u7F13\u5B58\u4E0D\u4F1A\u63D0\u524D\u653E\u884C")}else{_i({until:0,kind:"soft",level:0,reason:"",at:e.at})}clearTimeout(Gn);Gn=null;Re.clear();mn=0;try{GM_setValue(yr,"[]")}catch(t){}try{GM_setValue(on,"{}")}catch(t){}} o(Ll,"clearRatingCache"); function Hm(e){const t=Ke();t[J(e)]={miss:true,ts:Date.now(),v:pn};bt(t);$e(e,null)} o(Hm,"markMiss"); function Um(e,t){const n=Ke();const r=J(e);const i=n[r];const c=t&&t.id?String(t.id):"";const a={score:"",title:t&&t.title||e,url:Zr(t&&t.url,c)||Jr(c)||Ti(e),ts:Date.now(),miss:false,norate:true,v:pn,src:"api"};if(c)a.did=c;else if(i&&i.did)a.did=i.did;n[r]=a;bt(n);$e(e,n[r])} o(Um,"markNoRate"); function Cl(e,t){return Ai([{name:e,rating:t}])} o(Cl,"putSiteRating"); function Ai(e){const t=(e||[]).filter(s=>s&&s.name&&s.rating);if(!t.length)return 0;const n=Ke();let r=0;let i=0;let c=0;const a=[];t.forEach(s=>{const l=Vm(n,s.name,s.rating);if(l==="score"){r++;a.push(s.name)}else if(l==="flag"){i++}else if(l==="id"){c++}});if(!r&&!i&&!c)return 0;bt(n);if(r){V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u7AD9\u70B9\u81EA\u5E26 "+r+" \u6761\uFF1A"+a.slice(0,6).map(s=>s+" \u2192 "+n[J(s)].score).join("\uFF0C")+(a.length>6?" \u7B49":""))}if(c){V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A"+c+" \u6761\u7AD9\u70B9\u9875\u9762\u6CA1\u5370\u5206\uFF0C\u4F46\u7ED9\u4E86\u8C46\u74E3\u6761\u76EE \u2014\u2014 \u6253\u5F00\u9762\u677F\u65F6\u6309\u6761\u76EE\u7CBE\u786E\u67E5\u4E00\u6B21\uFF08\u4E0D\u9760\u7247\u540D\u731C\uFF09")}a.forEach(s=>$e(s,n[J(s)]));return r} o(Ai,"putSiteRatings"); function Vm(e,t,n){const r=String(n&&n.score||"");const i=$o(n&&n.url);const c=J(t);const a=e[c];if(!(Number(r)>0)){if(!i)return"";if(a&&!a.miss&&(a.score||a.did===i))return"";e[c]={score:"",did:i,ts:Date.now(),miss:false,v:pn,src:"dom"};return"id"}if(a&&!a.miss){if(_l(a.score,r))return"";if(a.src==="api"){if(Wn(a)===Yr)return"";const l=Date.now();if(a.conflict&&l-a.conflictul){V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u8FDE\u7EED "+ul+" \u8F6E\u88AB\u6321\uFF0C\u672C\u8F6E\u653E\u5F03\u5269\u4E0B\u7684 "+ge.length+" \u90E8\uFF0C"+Math.round(bi/1e3)+" \u79D2\u540E\u91CD\u65B0\u8D77\u7B97");while(ge.length)$e(ge.shift(),null);wi("soft",0,bi,e);return}const r=Math.min(Rm*Math.pow(2,n-1),bi);wi("soft",n,r,e);V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A"+e+"\uFF08"+t+"\uFF09\u2014\u2014 \u7B2C "+n+" \u8F6E\u88AB\u6321\uFF0C"+Math.round(r/1e3)+" \u79D2\u540E\u7EE7\u7EED\u67E5\u961F\u5217\u91CC\u5269\u4E0B\u7684 "+ge.length+' \u90E8\u3002\u8FD9\u662F\u8C46\u74E3\u63A5\u53E3\u4E34\u65F6\u4E0D\u53EF\u7528\uFF0C\u4E0D\u662F"\u8FD9\u90E8\u7247\u67E5\u4E0D\u5230"')} o(ft,"markBlocked"); function Xr(e,t){const n=wl("hard")+1;const r=dl[Math.min(n-1,dl.length-1)];wi("hard",n,r,e);const i=Math.round(r/6e4);V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A"+e+"\uFF08"+t+"\uFF09\u2014\u2014 \u8C46\u74E3\u63A5\u53E3\u5DF2\u62E6\u4E0B\u672C\u673A\u7684\u67E5\u8BE2\uFF0C\u7B2C "+n+" \u6B21\uFF0C\u6682\u505C "+(i>=60?Math.round(i/60)+" \u5C0F\u65F6":i+" \u5206\u949F")+'\u540E\u81EA\u52A8\u91CD\u8BD5\uFF08\u5237\u65B0\u9875\u9762\u4E5F\u4E0D\u4F1A\u63D0\u524D\u653E\u884C\uFF0C\u5426\u5219\u8D8A\u6253\u5C01\u5F97\u8D8A\u4E45\uFF09\u3002\u8FD9\u4E0D\u662F"\u8FD9\u90E8\u7247\u67E5\u4E0D\u5230"\uFF0C\u4E5F\u4E0D\u4F1A\u5199\u8FDB\u7F13\u5B58');$e(t,null);while(ge.length)$e(ge.shift(),null)} o(Xr,"markHardBlocked"); function Ml(){clearTimeout(Gn);Gn=setTimeout(()=>{Gn=null;Qr()},Math.max(1e3,Mt().until-Date.now()+150))} o(Ml,"ensureResume"); function Il(){Kr=0;const e=Mt();if(e.level||e.until)_i({until:0,kind:"soft",level:0,reason:"",at:e.at})} o(Il,"resetBackoff"); var vl={\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9}; function Gm(e){if(/^\d+$/.test(e))return Number(e);if(e==="\u5341")return 10;const t=e.match(/^十([一二三四五六七八九])$/);if(t)return 10+vl[t[1]];return vl[e]||0} o(Gm,"cnToInt"); function Un(e){const t=String(e||"");const n=t.match(/s(\d{1,2})(?![a-z0-9])/)||t.match(/第\s*([0-9]{1,2}|[一二三四五六七八九十]{1,3})\s*(?:季|部|期|篇)/);return n?String(Gm(n[1])):""} o(Un,"seasonOf"); function hl(e){return String(e||"").replace(/(^|[^a-z])s\d{1,2}(?![a-z0-9])/g,"$1").replace(/第\s*[0-9一二三四五六七八九十]{1,3}\s*(?:季|部|期|篇)/g,"").replace(/\s+/g," ").trim()} o(hl,"stripSeasonTag"); function Km(e,t,n){const r=J(n||t);if(!r)return null;const i=e.filter(g=>J(g.title||"")===r);const c=i.find(g=>g.rate);if(c)return c;const a=o(g=>g.rate?0:50,"ratePenalty");const s=hl(r);if(s){const g=e.filter(_=>{const b=J(_.title||"");if(hl(b)!==s)return false;const q=Un(b);const x=Un(r);return!(q&&x&&q!==x)});if(g.length){g.sort((_,b)=>a(_)-a(b)||J(_.title||"").length-J(b.title||"").length);return g[0]}}const l=Un(J(t))||Un(r);const d=Math.max(3,Math.round(r.length*.6));const f=100;let k=null;e.forEach(g=>{const _=J(g.title||"");if(!_)return;if(_.indexOf(r)===-1&&r.indexOf(_)===-1)return;const b=Un(_);if(l&&b&&l!==b)return;const q=Math.abs(_.length-r.length);if(q>d)return;const x=q+a(g)+(Boolean(l)!==Boolean(b)?f:0);if(!k||x{const r=n&&n.target;if(!r||!r.id)return;if(n.target_type!=="movie"&&n.target_type!=="tv")return;t.push({title:r.title||"",rate:r.rating&&r.rating.value?String(r.rating.value):"",id:String(r.id),url:Jr(r.id)})});return t} o(Ym,"mapSearchItems"); function Wm(e){const t=J(e);const n=Ke()[t];if(!n||n.miss||n.src!=="dom")return false;const r=Ke();r[t]={...n,ts:Date.now(),n:(n.n||0)+1};bt(r);V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u300C"+e+"\u300D\u63A5\u53E3\u6CA1\u5BF9\u4E0A\uFF0C\u4FDD\u7559\u7AD9\u70B9\u9875\u9762\u7684 "+n.score+" \u5206\uFF08\u5DF2\u6838\u5BF9 "+r[t].n+" \u6B21\uFF09");$e(e,r[t]);return true} o(Wm,"keepSiteScore"); function Pl(e){const t=[];hr(e).forEach(n=>{let r=n.length>fl?n.slice(0,fl).trim():n;if(r.length>=2&&t.indexOf(r)===-1)t.push(r)});return t} o(Pl,"buildQueries"); function Xm(e,t){const n=Pl(e).find(r=>r.length{Vn--;setTimeout(Qr,ql())});return"sent"} o(Xm,"retryShorter"); function Jm(e,t,n,r){if(t===403||t===429){Xr("HTTP "+t,e);return null}if(t!==200){ft("HTTP "+t,e);return null}let i=null;try{i=JSON.parse(n)}catch(l){i=null}const c=i&&Array.isArray(i.items)?i.items:null;if(!c){if(Sl(n)){Xr("\u8C46\u74E3\u8FD4\u56DE\u9A8C\u8BC1\u9875",e);return null}ft(i&&(i.msg||"code "+i.code)||"\u54CD\u5E94\u683C\u5F0F\u5F02\u5E38",e);return null}const a=Ym(c);if(a.length){Il()}else{Kr++;if(Kr>=Nm){ft("\u8FDE\u7EED "+Kr+" \u6B21\u7A7A\u7ED3\u679C\uFF08\u8C46\u74E3\u591A\u534A\u5728\u8F6F\u9650\u6D41\u6216\u62D2\u7EDD\u672C\u673A\uFF09",e);return null}}const s=Km(a,e,r);if(s&&s.rate){Ol(e,s,"");return null}if(!a.length){const l=Xm(e,r);if(l==="sent")return null;if(l==="gated"){$e(e,null);return null}}if(Wm(e))return null;if(s){V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u300C"+e+"\u300D\u547D\u4E2D\u6761\u76EE "+s.id+"\uFF08"+(s.title||"")+"\uFF09\u4F46\u8C46\u74E3\u6682\u65E0\u8BC4\u5206\uFF08\u5C1A\u672A\u5F00\u5206\uFF09");Um(e,s);return null}V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u672A\u547D\u4E2D\u300C"+e+"\u300D\uFF0C\u8FD4\u56DE "+a.length+" \u6761\u5019\u9009\uFF1A"+a.slice(0,6).map(l=>l.title).join(" / "));Hm(e);return null} o(Jm,"applyResult"); function Ol(e,t,n,r){const i=Ke();const c=J(e);const a=i[c];const s=a&&!a.miss&&a.src==="api"&&_l(a.score,t.rate);const l={score:String(t.rate),title:t.title||e,url:Zr(t.url,t.id)||Ti(e),ts:Date.now(),miss:false,v:pn,src:"api",n:s?(a.n||1)+1:1};if(n)l.did=String(n);else if(a&&a.did)l.did=a.did;i[c]=l;bt(i);V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A"+e+" \u2192 "+t.rate+"\uFF08"+t.title+(r?"\uFF0C\u6309\u8C46\u74E3\u6761\u76EE "+r+" \u53D6\u5230":"")+"\uFF0C\u7B2C "+i[c].n+" \u6B21\u786E\u8BA4"+(s?"\uFF0C\u6709\u6548\u671F\u5347\u5230 "+(Wn(i[c])===Yr?"\u4E0D\u8FC7\u671F":Math.round(Wn(i[c])/Ct)+" \u5929"):"")+"\uFF09");$e(e,i[c])} o(Ol,"commitHit"); function Zm(e,t){const n=Ke();const r=J(e);const i=n[r];if(!i||i.miss)return;if(i.did&&String(i.did)!==String(t))return;if(i.score)delete i.did;else delete n[r];bt(n)} o(Zm,"dropDid"); function $e(e,t){const n=Yn.get(J(e));if(!n)return;Yn.delete(J(e));n.forEach(r=>{try{r(t)}catch(i){}})} o($e,"fire"); function Rl(e,t){const n=t?"":Qm(e);return n?ev(e,n):nv(e,t)} o(Rl,"run"); function Qm(e){const t=Ke()[J(e)];return t&&!t.miss&&t.did?String(t.did):""} o(Qm,"didOf"); function ev(e,t){return new Promise(n=>{let r=false;const i=o(()=>{if(r)return;r=true;n()},"done");try{mn++;Dl();GM_xmlhttpRequest({method:"GET",url:ra+encodeURIComponent(t),timeout:yl,onload:o(c=>{const a=tv(e,c.status,c.responseText,t);if(a)a.then(i);else i()},"onload"),onerror:o(c=>{ft("\u8BF7\u6C42\u5931\u8D25 "+(c&&c.error||""),e);i()},"onerror"),ontimeout:o(()=>{ft("\u8BF7\u6C42\u8D85\u65F6",e);i()},"ontimeout")})}catch(c){ft("\u65E0\u6CD5\u53D1\u8D77\u8BF7\u6C42\uFF08"+(c&&c.message)+"\uFF09",e);i()}})} o(ev,"runById"); function tv(e,t,n,r){if(t===403||t===429){Xr("HTTP "+t,e);return}if(t!==200){ft("HTTP "+t,e);return}if(Sl(n)){Xr("\u8C46\u74E3\u8FD4\u56DE\u9A8C\u8BC1\u9875",e);return}Il();let i=null;try{i=JSON.parse(n)}catch(s){i=null}const c=i&&i.r===0&&i.subject?i.subject:null;const a=c?String(c.rate||"").trim():"";if(!(Number(a)>0)){Zm(e,r);V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u300C"+e+"\u300D\u7684\u8C46\u74E3\u6761\u76EE "+r+" \u53D6\u4E0D\u5230\u8BC4\u5206\uFF08"+(c?"\u8BE5\u6761\u76EE\u6682\u65E0\u8BC4\u5206":"\u6761\u76EE\u4E0D\u5B58\u5728\u6216\u5DF2\u5408\u5E76")+"\uFF09\uFF0C\u6539\u7528\u7247\u540D\u641C\u7D22");if(ge.indexOf(e)===-1)ge.push(e);return}Ol(e,{rate:a,title:c.title||e,url:Zr(c.url,r)||Jr(r),id:r},r,r)} o(tv,"applyIdResult"); function nv(e,t){return new Promise(n=>{let r=false;const i=o(()=>{if(r)return;r=true;n()},"done");const c=t||Pl(e)[0]||e;try{mn++;Dl();GM_xmlhttpRequest({method:"GET",headers:{"User-Agent":ta,Referer:na},url:Qc+encodeURIComponent(c)+"&apikey="+encodeURIComponent(ea),timeout:yl,onload:o(a=>{Jm(e,a.status,a.responseText,c);i()},"onload"),onerror:o(a=>{ft("\u8BF7\u6C42\u5931\u8D25 "+(a&&a.error||""),e);i()},"onerror"),ontimeout:o(()=>{ft("\u8BF7\u6C42\u8D85\u65F6",e);i()},"ontimeout")})}catch(a){ft("\u65E0\u6CD5\u53D1\u8D77\u8BF7\u6C42\uFF08"+(a&&a.message)+"\uFF09",e);i()}})} o(nv,"runSearch"); function Li(){let e=[];try{e=JSON.parse(GM_getValue(yr,"[]"))||[]}catch(n){e=[]}const t=Date.now();return e.filter(n=>typeof n==="number"&&t-n=Kn){if(!Re.has("session-max")){Re.add("session-max");V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u672C\u6B21\u4F1A\u8BDD\u5DF2\u53D1\u51FA "+Kn+" \u6B21\u8BF7\u6C42\uFF0C\u5269\u4E0B\u7684\u5237\u65B0\u9875\u9762\u540E\u63A5\u7740\u67E5\uFF08\u4E00\u6B21\u6253\u592A\u591A\u4F1A\u62DB\u6765\u8C46\u74E3\u7684\u9650\u6D41\u4E0E\u5C01\u7981\uFF09")}return false}if(Li().length>=Wr){if(!Re.has("window-max")){Re.add("window-max");V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u6700\u8FD1 "+Math.round(Ei/6e4)+" \u5206\u949F\u5DF2\u7D2F\u8BA1\u53D1\u51FA "+Wr+" \u6B21\u8BF7\u6C42\uFF08\u8DE8\u5237\u65B0\u4E00\u8D77\u7B97\uFF1B\u6309\u540D\u5B57\u67E5\u4E00\u90E8\u6700\u591A\u4E24\u53D1\uFF09\uFF0C\u5148\u6B47\u4E00\u4F1A\u513F \u2014\u2014 \u7A97\u53E3\u6ED1\u8FC7\u53BB\u540E\u5F00\u9762\u677F\u4F1A\u81EA\u52A8\u63A5\u7740\u67E5")}return false}return true} o(Ci,"budgetLeft"); function Nl(){const e=Date.now();const t=Mt();let n=0;if(t.until>e)n=t.kind==="hard"?-1:Math.ceil((t.until-e)/1e3);const r=Ke()||{};let i=0;Object.keys(r).forEach(c=>{const a=r[c];if(a&&!a.miss&&Number(a.score)>0)i++});return{sessionLeft:Math.max(0,Kn-mn),sessionMax:Kn,windowLeft:Math.max(0,Wr-Li().length),windowMax:Wr,windowMinutes:Math.round(Ei/6e4),pausedSec:n,cached:Object.keys(r).length,scored:i}} o(Nl,"budgetStatus"); function rv(){return Date.now()>=Mt().until&&Ci()} o(rv,"canSendMore"); function ql(){return Fm+Math.random()*Bm} o(ql,"gapDelay"); function Qr(){if(Date.now(){Vn--;yi.delete(J(e));const t=ql();V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u95F4\u9694 "+(t/1e3).toFixed(1)+"s \u540E\u7EE7\u7EED\uFF08\u961F\u5217\u8FD8\u5269 "+ge.length+" \u90E8\uFF0C\u672C\u4F1A\u8BDD\u5DF2\u53D1 "+mn+"/"+Kn+"\uFF09");setTimeout(Qr,t)})}} o(Qr,"pump"); var gl=0; function Fl(){if(!ge.length)return;const e=ge.length;ge.forEach(n=>Yn.delete(J(n)));ge.length=0;const t=Date.now();if(t-gl>1e4){gl=t;V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u91CD\u7ED8\uFF0C\u4E22\u5F03\u8FD8\u6CA1\u53D1\u51FA\u7684 "+e+" \u4E2A\u4EFB\u52A1\uFF08\u4E0B\u6B21\u6E32\u67D3\u4F1A\u91CD\u65B0\u6392\uFF09")}} o(Fl,"dropPending"); function Bl(e,t,{force:n=false}={}){if(!e)return;const r=J(e);if(t){const a=Yn.get(r)||[];a.push(t);Yn.set(r,a)}if(!Ci()){$e(e,null);return}const i=Mt();if(i.until>Date.now()){if(i.kind==="hard"){if(!Re.has("403")){Re.add("403");V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u672C\u673A\u6B63\u88AB\u8C46\u74E3\u62E6\u4E0B\uFF08"+(i.reason||"HTTP 403")+"\uFF09\uFF0C\u8FD8\u6709 "+Math.ceil((i.until-Date.now())/6e4)+" \u5206\u949F\u81EA\u52A8\u6062\u590D\uFF1B\u5237\u65B0\u9875\u9762\u4E5F\u4E0D\u4F1A\u63D0\u524D\u653E\u884C\uFF0C\u5426\u5219\u8D8A\u6253\u5C01\u5F97\u8D8A\u4E45")}$e(e,null);return}if(ge.indexOf(e)===-1)ge.push(e);if(!Re.has("blocked")){Re.add("blocked");V("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u6B63\u5904\u5728\u88AB\u6321\u540E\u7684\u6682\u505C\u671F\uFF0C\u5269\u4E0B\u7684\u7247\u540D\u4F1A\u9694\u4E00\u4F1A\u513F\u81EA\u52A8\u63A5\u7740\u67E5")}Ml();return}const c=Ke()[r];if(!n){if(c&&c.miss&&Date.now()-(c.ts||0)-1||yi.has(r))return;ge.push(e);Qr()} o(Bl,"requestRating"); var ov=["name","cover","path","siteId","createTime","updateTime"]; var $l=[gt]; var zl=[Pn]; function iv(e,t){try{const n=GM_getValue(e,null);if(n==null)return t;const r=JSON.parse(n);return Array.isArray(r)?r:t}catch(n){return t}} o(iv,"readJsonKey"); function cv(){const e={...zs(),...Ks()};$l.forEach(t=>{e[t]=GM_getValue(t,true)!==false});zl.forEach(t=>{e[t]=iv(t,[])});return e} o(cv,"loadPrefs"); function av(e){if(!e||typeof e!=="object")return;Hs(e);Ys(e);$l.forEach(t=>{if(Object.prototype.hasOwnProperty.call(e,t))GM_setValue(t,e[t]!==false)});zl.forEach(t=>{if(!Object.prototype.hasOwnProperty.call(e,t))return;const n=Array.isArray(e[t])?e[t]:[];GM_setValue(t,JSON.stringify(n))})} o(av,"savePrefs"); var Mi=Ss({storageKey:Wc,backupFileName:"\u5168\u7F51\u5F71\u89C6\u6536\u85CF\u5907\u4EFD",moduleId:"drama",itemIdField:"name",itemFields:ov,showAlert:Qs,confirmExport:Lt,chooseImportStrategy:el,playbackLoadFn:dv,playbackSaveFn:fv,ratingsLoadFn:Tl,ratingsSaveFn:Al,prefsLoadFn:cv,prefsSaveFn:av,siteNamesLoadFn:ms,siteNamesSaveFn:vs,budgetKeys:{playback:$t,ratings:on,images:Mn,imageTabs:In},reclaimRatingsFn:El,onBudgetNotice:o(e=>{oe(e,{tone:"error"});Oe.renderedTabs.clear()},"onBudgetNotice")}); xl(()=>Mi.enforceBudget()); var{loadData:Le,saveData:Ye,exportData:Hl,importData:Ul} =Mi; var Vl=Mi.usageInfo; function Xn(e,t,n){try{GM_setValue(e,t);return true}catch(r){$r("[\u5F71\u89C6\u6536\u85CF] "+n+"\u5199\u5165\u5931\u8D25",r);oe("\u5B58\u50A8\u5199\u5165\u5931\u8D25\uFF08"+n+"\uFF09\uFF0C\u8BF7\u5BFC\u51FA\u5907\u4EFD\u540E\u6E05\u7406\u90E8\u5206\u5185\u5BB9",{tone:"error"});return false}} o(Xn,"safeSetValue"); function Fe(e,t){return t.findIndex(n=>jt(n.name,e))} o(Fe,"findItem"); function Ii(){try{return JSON.parse(GM_getValue(Mn,"{}"))}catch(e){return{}}} o(Ii,"loadImageCache"); function It(e,t){if(!e||ke(t))return;const n=Ii();n[e]=Ge(t);Xn(Mn,JSON.stringify(n),"\u56FE\u7247\u7F13\u5B58")} o(It,"setImageCache"); function Jn(e){const t=Ii();const n=t[e]?e:Object.keys(t).find(i=>jt(i,e));const r=n?t[n]:"";if(!r)return"";return typeof r==="string"?r:r.cover||""} o(Jn,"readImageCache"); function Zn(e){const t=Le();for(const r of["want","watched"]){const i=Fe(e,t[r]);if(i>-1&&An(t[r][i]))return t[r][i].cover}const n=at(e);return An(n)?n.cover:""} o(Zn,"getCoverFromExisting"); function Pi(){try{return JSON.parse(GM_getValue(In,"{}"))}catch(e){return{}}} o(Pi,"loadPlayTabsAlive"); function Oi(e){if(!e)return;const t=Pi();t[e]=Date.now();Xn(In,JSON.stringify(t),"\u64AD\u653E\u72B6\u6001")} o(Oi,"markPlayTabAlive"); function Gl(e){if(!e)return;const t=Pi();t[e]=0;Xn(In,JSON.stringify(t),"\u64AD\u653E\u72B6\u6001")} o(Gl,"expirePlayTabAlive"); function Kl(e=""){const t=Pi();const n=Ii();let r=false;Object.keys(n).forEach(i=>{if(jt(i,e))return;if(t[i]===0){delete n[i];r=true}});if(r)Xn(Mn,JSON.stringify(n),"\u56FE\u7247\u7F13\u5B58")} o(Kl,"handlePageCache"); var eo=["episode","time","cover","path","siteId","updateTime"]; function sv(e){const t=eo.map(r=>e[r]===void 0?"":e[r]);const n={};Object.keys(e).forEach(r=>{if(eo.indexOf(r)>=0||r==="name")return;n[r]=e[r]});if(Object.keys(n).length)t.push(n);return t} o(sv,"encodeRecord"); function lv(e,t){if(!Array.isArray(t))return{name:e,...t};const n={name:e};eo.forEach((i,c)=>{const a=t[c];if(a!==""&&a!==void 0&&a!==null)n[i]=a});const r=t[eo.length];if(r&&typeof r==="object")Object.keys(r).forEach(i=>{n[i]=r[i]});return n} o(lv,"decodeRecord"); var Yl=false; var jl=false; function uv(){try{if(GM_getValue(Go,""))return false;const e=String(GM_getValue($t,"")||"");if(!e)return false;GM_setValue(Go,e);return true}catch(e){$r("[\u5F71\u89C6\u6536\u85CF] \u89C2\u770B\u8BB0\u5F55\u539F\u6587\u5907\u4EFD\u5931\u8D25",e);return false}} o(uv,"backupBrokenPlayback"); function Qn(e){if(Yl&&uv()&&!jl){jl=true;oe("\u89C2\u770B\u8BB0\u5F55\u8BFB\u53D6\u5F02\u5E38\uFF1A\u539F\u6587\u5DF2\u5907\u4EFD\uFF0C\u65B0\u8FDB\u5EA6\u7167\u5E38\u8BB0\u5F55\uFF08\u5EFA\u8BAE\u5BFC\u51FA\u5907\u4EFD\u540E\u6392\u67E5\uFF09",{tone:"error"})}const t={};Object.keys(e).forEach(n=>{t[n]=sv(e[n])});Xn($t,JSON.stringify(t),"\u64AD\u653E\u8BB0\u5F55");Oe.renderedTabs.clear()} o(Qn,"writeRecords"); function yt(){let e=null;try{e=JSON.parse(GM_getValue($t,"{}"))}catch(n){Yl=true;$r("[\u5F71\u89C6\u6536\u85CF] \u89C2\u770B\u8BB0\u5F55\u89E3\u6790\u5931\u8D25\uFF08\u539F\u6587\u5DF2\u7559\u7ED9 writeRecords \u5907\u4EFD\uFF09",n);return{}}if(!e||typeof e!=="object")return{};const t={};Object.keys(e).forEach(n=>{t[n]=lv(n,e[n])});return t} o(yt,"loadPlaybackRecords"); function to(e,t){if(!t||!e)return"";if(e[t])return t;return Object.keys(e).find(n=>jt(n,t))||""} o(to,"findRecordKey"); function at(e){const t=yt();const n=to(t,e);return n?t[n]:null} o(at,"getPlaybackRecord"); function Wl(e,{episode:t="",time:n=0,cover:r="",path:i="",siteId:c=""}={}){if(!e)return;const a=yt();const s=to(a,e)||e;a[s]={name:s,episode:t,time:n,cover:r,path:i,siteId:c,updateTime:Date.now()};Qn(a)} o(Wl,"savePlaybackRecord"); function Xl(e){Qn(e)} o(Xl,"savePlaybackRecords"); function Ri(e,t={}){if(!e)return;const n=yt();const r=to(n,e);if(!r)return;n[r]={...n[r],...t};Qn(n)} o(Ri,"patchPlaybackRecord"); function Di(e){const t=yt();const n=to(t,e);if(!n)return;delete t[n];Qn(t)} o(Di,"deletePlaybackRecord"); function Jl(){const e=yt();const t=Le();const n=new Map;const r=new Map;t.want.forEach(c=>{const a=J(c.name);n.set(a,c.cover);r.set(a,"want")});t.watched.forEach(c=>{const a=J(c.name);if(!n.has(a))n.set(a,c.cover);if(!r.has(a))r.set(a,"watched")});const i=new Map;Object.entries(e).forEach(([c,a])=>{const s=a.name||c;const l=J(s);const d=i.get(l);if(d&&(d.updateTime||0)>=(a.updateTime||0))return;i.set(l,{name:s,...a,cover:a.cover||n.get(l)||"",category:r.get(l)||""})});return Array.from(i.values()).sort((c,a)=>(a.updateTime||0)-(c.updateTime||0))} o(Jl,"loadPlaybackList"); function dv(){return Object.entries(yt()).map(([e,t])=>({name:e,...t}))} o(dv,"loadPlaybackExportList"); function fv(e=[]){const t={};e.forEach(n=>{if(!n||!n.name)return;const r={...n};delete r.category;r.episode=r.episode||"";r.time=r.time||0;r.cover=r.cover||"";r.path=r.path||"";r.siteId=r.siteId||"";r.updateTime=r.updateTime||Date.now();t[n.name]=r});Qn(t)} o(fv,"savePlaybackList"); var Ni=[0,5*60*1e3,30*60*1e3,2*60*60*1e3,6*60*60*1e3]; var tu=Ni.length; var pv=7*24*60*60*1e3; var Pt=new Set; function no(e){const t={state:"",fail:0,ts:0,cover:"",siteId:"",coverFrom:"",coverSrc:""};if(!e)return t;const n=Le();for(const i of["want","watched"]){const c=Fe(e,n[i]);if(c>-1){const a=n[i][c];return{state:a.coverState||"",fail:a.coverFail||0,ts:a.coverTs||0,cover:a.cover||"",siteId:a.siteId||"",coverFrom:a.coverFrom||"",coverSrc:a.coverSrc||""}}}const r=at(e);if(!r)return t;return{state:r.coverState||"",fail:r.coverFail||0,ts:r.coverTs||0,cover:r.cover||"",siteId:r.siteId||"",coverFrom:r.coverFrom||"",coverSrc:r.coverSrc||""}} o(no,"readHealth"); function nu(e,t){if(!e)return false;const n=e.state||"";const r=e.cover||"";if(!n)return!r||ke(r);if(n===De.OK)return false;if(n===De.ABANDONED)return t-(e.ts||0)>=pv;const i=Math.min(Math.max((e.fail||0)-1,0),Ni.length-1);return t-(e.ts||0)>=Ni[i]} o(nu,"canRepair"); var mv=/^fb:/; function ru(e){if(!e)return false;if(!e.cover||ke(e.cover))return true;if(e.coverSrc===vr.PAGE)return false;return mv.test(String(e.coverFrom||""))} o(ru,"isGuessedCover"); function Zl(e,t){if(!e)return false;if(ru(e))return true;return nu({state:e.coverState||"",fail:e.coverFail||0,ts:e.coverTs||0,cover:e.cover||""},t)} o(Zl,"isRepairable"); var tr=new Set; function ou(){tr=vv();return tr} o(ou,"refreshRepairNames"); function iu(e){if(e)tr.add(e)} o(iu,"addRepairName"); function cu(e){if(!e)return"";if(tr.has(e))return e;for(const t of tr){if(jt(t,e))return t}return""} o(cu,"findRepairName"); function vv(){const e=new Set;const t=Date.now();const n=Le();["want","watched"].forEach(r=>{(n[r]||[]).forEach(i=>{if(i&&i.name&&Zl(i,t))e.add(i.name)})});Object.values(yt()).forEach(r=>{const i=r&&r.name;if(i&&Zl(r,t))e.add(i)});return e} o(vv,"listRepairNames"); var qi=null; var er=new Map; function ro(e,t){er.set(e,{...er.get(e)||{},...t});if(qi)return;qi=setTimeout(hv,300)} o(ro,"enqueue"); function hv(){qi=null;if(!er.size)return;const e=Le();let t=false;er.forEach((n,r)=>{["want","watched"].forEach(i=>{const c=Fe(r,e[i]);if(c>-1){e[i][c]={...e[i][c],...n};t=true}});Ri(r,n)});er.clear();if(t)Ye(e)} o(hv,"flushPending"); function au(e,t,n=""){const r={cover:e,coverState:De.OK,coverFail:0,coverTs:Date.now()};if(t)r.coverFrom=t;if(n)r.coverSrc=n;return r} o(au,"coverPatch"); var gv=10*60*1e3; function su(e,t=false){if(!e||t)return;const n="broken:"+e;if(Pt.has(n))return;Pt.add(n);const r=no(e);const i=Date.now();if((r.state===De.BROKEN||r.state===De.ABANDONED)&&i-(r.ts||0)tu?De.ABANDONED:De.BROKEN,coverFail:c,coverTs:i})} o(su,"markBroken"); function lu(){const e=o(c=>{if(!c)return false;const a=(c.coverFail||0)>tu;if(c.coverState!==De.ABANDONED&&!a)return false;c.coverState=De.BROKEN;c.coverFail=1;c.coverTs=Date.now();return true},"fix");const t=Le();let n=false;["want","watched"].forEach(c=>{(t[c]||[]).forEach(a=>{if(e(a))n=true})});if(n)Ye(t);const r=yt();let i=false;Object.keys(r).forEach(c=>{if(e(r[c]))i=true});if(i)Xl(r)} o(lu,"healOvercountedCovers"); function uu(e){if(!e)return;const t="missing:"+e;if(Pt.has(t))return;Pt.add(t);const n=no(e);if(n.state)return;ro(e,{coverState:De.MISSING,coverFail:0,coverTs:Date.now()})} o(uu,"markMissing"); function du(e){if(!e)return;const t="ok:"+e;if(Pt.has(t))return;Pt.add(t);const n=no(e);if(n.state===De.OK)return;ro(e,{coverState:De.OK,coverFail:0,coverTs:Date.now()})} o(du,"markOk"); function Ql(e,t,n="",r=""){if(!e||!t||ke(t))return false;const i=Ge(t);const c="ok:"+e;Pt.add(c);ro(e,au(i,n,r));It(e,i);return true} o(Ql,"applyRepair"); function Fi(e,t,n=""){if(!e||!t||ke(t))return;const r=Ge(t);Ri(e,au(r,n));It(e,r);Pt.add("ok:"+e)} o(Fi,"syncCover"); function eu(e,t,n=""){jn("[\u5F71\u89C6\u6536\u85CF] \u5C01\u9762\u672A\u66F4\u65B0\uFF1A"+t,e,n||"")} o(eu,"debugSkip"); function vn(e,t,n="",r=false){if(!e)return false;if(!t||ke(t)){eu(e,"\u5F53\u524D\u9875\u9762\u7ED9\u7684\u5C01\u9762\u662F\u5360\u4F4D\u56FE");return false}const i=no(e);if(!nu(i,Date.now())){if(!r||!ru(i)){eu(e,"\u8BE5\u5267\u4E0D\u5728\u5F85\u4FEE\u72B6\u6001",`state=${i.state||"unknown"} fail=${i.fail}`);return false}jn("[\u5F71\u89C6\u6536\u85CF] \u901A\u7528\u7AD9\u70B9\u731C\u7684\u5C01\u9762\u5DF2\u6362\u6210\u9875\u9762\u81EA\u8EAB\u7684\u5C01\u9762\uFF1A",e);return Ql(e,t,n,vr.PAGE)}return Ql(e,t,n,vr.PAGE)} o(vn,"tryRepair"); var bv=12; var mu=3; var yv=6; function ji(e){const t=String(e==null?"":e).replace(/\s+/g," ").trim();if(!t||t.length>bv)return"";if(!kn(t)&&!Tn(t))return"";return qe(t)} o(ji,"epKey"); function xv(e){if(!e||e.disabled)return false;return!/(^|\s)vc-/.test(String(e.className||""))} o(xv,"usable"); function Bi(e){if(!e)return false;if(typeof e.getClientRects==="function"&&e.getClientRects().length)return true;try{const t=e.ownerDocument&&e.ownerDocument.defaultView;if(t&&t.getComputedStyle){let n=e;while(n&&n.nodeType===1){const r=t.getComputedStyle(n);if(r&&(r.display==="none"||r.visibility==="hidden"))return false;n=n.parentElement}}}catch(t){}return true} o(Bi,"visible"); function wv(){const e=[];document.querySelectorAll("*").forEach(t=>{if(t.children.length)return;if(!xv(t))return;const n=ji(t.textContent);if(n)e.push({el:t,key:n})});return e} o(wv,"collectAll"); function Sv(e){const t=new Map;e.forEach(r=>{let i=r.el.parentElement,c=0;while(i&&c{let i=r.el.parentElement;while(i){if((t.get(i)||0)>=mu){if(!n.has(i))n.set(i,[]);n.get(i).push(r);return}i=i.parentElement}});return[...n.values()]} o(Sv,"groupByList"); function Ev(e){const t=/^S(\d+)E(\d+)$/.exec(e);if(t)return{season:t[1],ep:Number(t[2])};const n=/^E(\d+)$/.exec(e);if(n)return{season:"0",ep:Number(n[1])};return null} o(Ev,"parseKey"); function _v(e){const t=new Map;e.forEach(n=>{const r=Ev(n.key);if(!r||!(r.ep>0))return;if(!t.has(r.season))t.set(r.season,[]);t.get(r.season).push(r.ep)});for(const n of t.values()){const r=[...new Set(n)].sort((i,c)=>i-c);if(r.length>=mu&&r[r.length-1]-r[0]+1===r.length)return true}return false} o(_v,"looksLikeEpisodeList"); var fu=/drawer|modal|popup|sheet|overlay|dialog|panel/i; function kv(){try{return(location.pathname||"").replace(/[-/]\d+(?=\.[a-z]+$|$)/i,"").replace(/\/+$/,"")}catch(e){return""}} o(kv,"currentShowKey"); function Tv(e){return String(e||"").replace(/[-/]\d+(?=\.[a-z]+$|$)/i,"").replace(/\/+$/,"")} o(Tv,"pathKey"); function Av(e){const t=e&&e.closest&&e.closest("a[href]");if(!t)return false;const n=t.getAttribute("href")||"";if(!n||n==="#"||n.startsWith("javascript:"))return false;const r=kv();if(!r)return false;let i;try{i=new URL(n,location.href).pathname}catch(c){return false}return Tv(i)===r} o(Av,"sameShowHref"); function Lv(e){let t=e;for(let n=0;n<10&&t&&t!==document.body;n++){if(fu.test(String(t.className||""))||fu.test(String(t.id||"")))return true;t=t.parentElement}return false} o(Lv,"inDrawer"); function Cv(e){const t=Math.ceil(e.length/2);let n=0;for(const r of e){if(Av(r.el)||Lv(r.el))n++;if(n>=t)return true}return false} o(Cv,"groupClickable"); function pu(e,t){const n=o(c=>{const a=/第\s*(\d{1,2})\s*季/.exec(c)||/^S(\d{1,2})E/i.exec(c);const s=/第\s*(\d{1,3})\s*集/.exec(c)||/E(\d{1,3})$/i.exec(c);return{season:a?Number(a[1]):0,ep:s?Number(s[1]):0}},"pick");const r=n(String(e||""));const i=n(String(t||""));if(r.season&&r.ep&&i.season&&r.season===i.season)return`\u7B2C${r.ep}\u96C6`;return e} o(pu,"withinSeason"); function vu({target:e,current:t}={}){const n=ji(pu(e,t));if(!n)return null;const r=ji(pu(t,t));if(r&&r===n)return null;const i=Sv(wv()).filter(d=>_v(d));if(!i.length)return null;const c=i.filter(d=>Cv(d));const a=c.length?c.slice().sort((d,f)=>Number(Bi(f[0].el))-Number(Bi(d[0].el))):i.filter(d=>Bi(d[0].el));if(!a.length)return null;const s=r?a.filter(d=>d.some(f=>f.key===r)):[];const l=s.concat(a.filter(d=>s.indexOf(d)<0));for(const d of l){const f=d.find(k=>k.key===n&&(!r||k.key!==r));if(f)return{el:f.el,via:"list"}}return null} o(vu,"findEpisodeControl"); function Kt(e){const t=document.querySelector(e);return t?t.textContent.trim():""} o(Kt,"text"); function Mv(e){const t=(e||"").match(/第\s*\d+\s*集/);return t?t[0].replace(/\s+/g,""):""} o(Mv,"episodeFromText"); var Hi="\u6B63\u7247"; var Iv={czzy:o(()=>{const e=Array.from(document.querySelectorAll(".juji_list a"));if(e.length){const t=e.find(r=>r.classList.contains("pbplay"))||(e.length===1?e[0]:null);const n=((t==null?void 0:t.textContent)||"").trim();if(n)return mr(n)}return kn(Kt(".mikd .ptit span"))||Hi},"czzy"),duse:o(()=>Kt(".episode-list .episode-item-active span"),"duse"),dida:o(()=>mr(Kt(".myui-content__list.playlist li.active a")),"dida"),ddys:o(()=>{let e=[];const t=Kt("script.ddys-playlist-data");if(t){try{e=JSON.parse(t).seasons||[]}catch(d){}}const n=Kt(".ddys-season-tab.is-active");const r=/第\s*(\d{1,2})\s*季/.exec(n);const i=r?Number(r[1]):0;const c=i?e.find(d=>Number(d.season)===i):null;const a=c?c.tracks||[]:e.flatMap(d=>d.tracks||[]);const s=Array.from(document.querySelectorAll(".ddys-playlist-item"));let l=0;if(s.length){const d=s.findIndex(f=>f.classList.contains("ddys-playlist-playing"));l=d>=0&&a[d]?Number(a[d].episode):0}else if(a.length===1){l=Number(a[0].episode)||0}if(l<=0)return"";return n?`${n} \u7B2C${l}\u96C6`:`\u7B2C${l}\u96C6`},"ddys"),hantv:o(()=>Kt(".player-list-body .listitem.active a"),"hantv"),libvio:o(()=>Kt(".stui-play__list li.active a"),"libvio"),gaze:o(()=>{var n;const e=document.querySelector(".fJ.bB.dE .playbtn.ji");const t=mr(((e==null?void 0:e.textContent)||"").trim());if(t&&Tn(t))return t;return Mv((n=document.querySelector("video-player"))==null?void 0:n.getAttribute("content-title"))},"gaze")}; var Pv={ddys:o(()=>new URLSearchParams(location.search).get("ep")||"","ddys"),dida:o(()=>$i(location.pathname),"dida"),hantv:o(()=>$i(location.pathname),"hantv"),libvio:o(()=>$i(location.pathname),"libvio")}; function $i(e){const t=e.match(/(\d+)(?:\.html?)?$/);return t?`\u7B2C${t[1]}\u96C6`:""} o($i,"lastEpisodeFromPath"); function Yt(e){if(typeof e.getPlaybackInfo==="function"){const r=e.getPlaybackInfo();if(r&&r.episode)return r.episode}const t=Iv[e.id];if(t){const r=t();if(r)return r}const n=Pv[e.id];if(n){const r=n();if(r)return r}return""} o(Yt,"resolveEpisode"); function Ov(){return ct("video")[0]||null} o(Ov,"findPlayerEl"); var or=null; function wu(e){or=typeof e==="function"?e:null} o(wu,"setRemoteTimeSource"); var Ui=null; function Su(e){Ui=typeof e==="function"?e:null} o(Su,"setRemoteSeek"); var Vi=null; function Eu(e){Vi=typeof e==="function"?e:null} o(Eu,"setBeforeNavigate"); var co="vc_drama_resume_intent"; var Rv=5*60*1e3; function Dv(e,t,n){try{sessionStorage.setItem(co,JSON.stringify({name:e,time:t,episode:n||"",ts:Date.now()}))}catch(r){}} o(Dv,"writeResumeIntent"); function Nv(){try{sessionStorage.removeItem(co)}catch(e){}} o(Nv,"clearResumeIntent"); function qv(e,t){let n="";try{n=sessionStorage.getItem(co)||""}catch(r){return 0}if(!n)return 0;try{sessionStorage.removeItem(co)}catch(r){}try{const r=JSON.parse(n);if(!r||r.name!==e){V("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u63A5\u529B\uFF1A\u610F\u56FE\u4E0D\u662F\u8FD9\u90E8\u5267\uFF08"+(r&&r.name||"?")+" \u2260 "+e+"\uFF09\uFF0C\u4E22\u5F03");return 0}if(!(Date.now()-Number(r.ts)0?Number(r.time):0;if(i)V("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u63A5\u529B\uFF1A\u63A5\u5230\u8DF3\u8F6C\u610F\u56FE \u2192 "+xt(i)+"\uFF08"+(r.episode||"\u65E0\u96C6\u6570")+"\uFF09");return i}catch(r){return 0}} o(qv,"consumeResumeIntent"); var Fv=8e3; var nr=null; function hn(){const e=ct("video");if(!e.length)return null;const t=e.find(r=>{try{return!r.paused&&r.currentTime>0}catch(i){return false}});if(t)return t;let n=null;e.forEach(r=>{const i=(r.videoWidth||0)*(r.videoHeight||0);if(i>0&&(!n||i>n.area))n={v:r,area:i}});return n?n.v:e[0]} o(hn,"pickSeekTarget"); function Gi(e){const t=Number(e);if(!(t>0))return"fail";const n=o(s=>{try{s.currentTime=t;return"done"}catch(l){return"fail"}},"apply");const r=hn();if(!r){return Ui&&Ui(t)!==false?"wait":"fail"}if(r.readyState>=1)return n(r);if(nr)clearTimeout(nr);let i=false;const c=o(s=>{if(i)return;i=true;clearTimeout(nr);nr=null;r.removeEventListener("loadedmetadata",a);r.removeEventListener("canplay",a);if(s==="done")oe(`\u5DF2\u8DF3\u5230 ${xt(t)}`,{tone:"ok",icon:"play"});else if(s==="wait")oe("\u64AD\u653E\u5668\u6B63\u5728\u52A0\u8F7D\uFF0C\u7A0D\u540E\u81EA\u52A8\u8DF3\u8F6C\u2026",{tone:"warn",icon:"play"});else oe("\u64AD\u653E\u5668\u4E00\u76F4\u6CA1\u52A0\u8F7D\u597D\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",{tone:"warn",icon:"play"})},"finish");const a=o(()=>c(n(r)),"onReady");r.addEventListener("loadedmetadata",a);r.addEventListener("canplay",a);nr=setTimeout(()=>c("fail"),Fv);return"wait"} o(Gi,"seekTo"); var Bv=60*1e3; var jv=2e3; function $v(e,t){return!!e&&Number(e.deadline)>Number(t)} o($v,"pendingAlive"); function zv(e,t){if(!e)return false;const n=qe(e.episode||"");if(!n)return true;const r=qe(t||"");if(!r)return true;return n===r} o(zv,"stillTargetEpisode"); function Hv(e,t){const n=Number(e)||0;const r=Number(t)||0;if(n<=0)return false;return r=1)return true;return Uv()} o(gu,"canSettleNow"); function zi(){const e=hn();if(!e){if(Ki){try{Ki()}catch(t){}}return false}if(e.readyState<1)return false;if(!e.paused)return true;try{const t=e.play();if(t&&typeof t.then==="function")t.catch(()=>hu(e));return true}catch(t){return hu(e)}} o(zi,"tryStartPlayback"); function bu(e){const t=hn();if(!t)return;const n=o(()=>{t.removeEventListener("play",n);setTimeout(()=>{try{if(Hv(e,t.currentTime))t.currentTime=e}catch(r){}},350)},"onPlay");t.addEventListener("play",n)} o(bu,"guardAfterPlay"); function ku(e,t,n){if(gu()){V("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u843D\u70B9\uFF1A\u5C31\u7EEA\uFF0C\u843D\u5230 "+xt(e)+"\uFF08\u8D77\u64AD\u7559\u7ED9\u7528\u6237\u70B9\uFF1A\u8DE8\u57DF\u6846\u67B6\u91CC\u811A\u672C\u7684 play() \u4F1A\u88AB\u6D4F\u89C8\u5668\u62D2\u7EDD\uFF0C\u8FD9\u662F\u9884\u671F\u5185\uFF09");Gi(e);zi();bu(e);return"done"}rr();oo={time:e,episode:t,site:n,deadline:Date.now()+Bv};V("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u843D\u70B9\uFF1A\u89C6\u9891\u8FD8\u6CA1\u5C31\u7EEA\uFF08"+(t||"\u65E0\u96C6\u6570")+"\uFF09\uFF0C\u767B\u8BB0\u5F85\u5151\u73B0 "+xt(e)+"\uFF081 \u5206\u949F\u5185\u5C31\u7EEA\u5C31\u843D\uFF09");io=setInterval(()=>{if(!$v(oo,Date.now())){V("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u843D\u70B9\uFF1A\u7B49\u4E86 1 \u5206\u949F\u89C6\u9891\u4ECD\u672A\u5C31\u7EEA\uFF0C\u653E\u5F03");rr();return}zi();const r=oo;if(!r)return;if(!zv(r,Yt(r.site))){V("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u843D\u70B9\uFF1A\u5F53\u524D\u96C6\u5DF2\u4E0D\u662F\u76EE\u6807\u96C6\uFF0C\u653E\u5F03");rr();return}if(!gu())return;rr();V("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u843D\u70B9\uFF1A\u5C31\u7EEA\uFF0C\u843D\u5230 "+xt(r.time)+"\uFF08\u8D77\u64AD\u7559\u7ED9\u7528\u6237\u70B9\uFF1A\u8DE8\u57DF\u6846\u67B6\u91CC\u811A\u672C\u7684 play() \u4F1A\u88AB\u6D4F\u89C8\u5668\u62D2\u7EDD\uFF0C\u8FD9\u662F\u9884\u671F\u5185\uFF09");Gi(r.time);zi();bu(r.time)},jv);return"pending"} o(ku,"requestSettle"); var Vv=250; var Gv=1e4; function Kv(e,t,n,r,i){const c=hn();const a=c?String(c.currentSrc||""):"";if(Vi)Vi();Dv(n,t,r);try{e.click()}catch(d){return Promise.resolve("fail")}const s=qe(r);const l=o(()=>{if(!s)return false;const d=qe(Yt(i)||"");return!!d&&d===s},"switchedByEpisode");return new Promise(d=>{const f=Date.now();const k=o(()=>{const g=hn();const _=g?String(g.currentSrc||""):"";const b=l()||!!(g&&(g!==c||_&&_!==a));if(b){d(ku(t,r,i));return}if(Date.now()-f>=Gv){d("timeout");return}setTimeout(k,Vv)},"tick");k()})} o(Kv,"clickEpisode"); function Yv(e){try{const t=String(e||"");if(!t)return false;return t.includes("?")?location.pathname+location.search===t:location.pathname===t}catch(t){return false}} o(Yv,"isSamePath"); function Wv(e,t){if(!e)return false;const n=qe(Yt(t));const r=qe(e.episode||"");if(n&&r)return n===r||Xv(n,r);return Yv(e.path)} o(Wv,"isSameSpot"); function Xv(e,t){const n=qe("\u7B2C1\u96C6");return e===Hi&&t===n||t===Hi&&e===n} o(Xv,"isMoviePlaceholderPair"); function Jv(e){const t=String(e==null?"":e).trim();if(!t)return false;return/第\s*\d{1,3}\s*集/.test(t)||/^S\d{1,2}E\d{1,3}$/i.test(t)||/^S\d{1,2}\s*第\s*\d{1,3}\s*集$/i.test(t)||/^\d{1,3}$/.test(t)} o(Jv,"hasEpisodeNumber"); function Zv(e,t){if(!e)return true;const n=qe(e.episode||"");const r=qe(t||"");if(n&&r&&n!==r)return true;return!(e.time>0)} o(Zv,"shouldResetToZero"); function Qv(){const e=Ov();if(e)return{time:e.currentTime,ended:!!e.ended};if(or){const t=or();if(t)return t}return null} o(Qv,"readPlayerTime"); function eh(e){try{if(e&&e.__fallback&&typeof e.getPlayInfo==="function"){const t=e.getPlayInfo();if(t&&t.path)return t.path}}catch(t){}return location.pathname} o(eh,"playbackPath"); function yu(){try{const e=Nr(document).cover;return e?Ge(e):""}catch(e){return""}} o(yu,"coverFromPage"); var Yi="vc_drama_watching_context"; function Wi(){try{sessionStorage.removeItem(Yi)}catch(e){}} o(Wi,"markWatchingLeft"); function th(e){try{const t=sessionStorage.getItem(Yi)===e;sessionStorage.setItem(Yi,e);return t}catch(t){return false}} o(th,"isSameWatchingContext"); function xu(e){if(!e)return"";for(const t of document.querySelectorAll("img")){if((t.getAttribute("alt")||"").trim()!==e)continue;const n=t.getAttribute("data-src")||t.getAttribute("data-original")||t.src||"";if(!ke(n))return Ge(n)}return""} o(xu,"coverFromAlt"); function Tu(e,t){if(!t)return()=>{};Oi(t);const n=o(()=>{Gl(t);Wi()},"onPageHide");const r=o(()=>{if(!document.hidden)Oi(t)},"onVisibilityChange");document.addEventListener("pagehide",n);document.addEventListener("visibilitychange",r);let i=Yt(e);const c=at(t);const a=An(c)?c.cover:"";const s=a||Zn(t)||Jn(t)||yu()||xu(t);const l=yu()||xu(t);if(l&&l!==a)vn(t,l,e.id);const d=qv(t,Yt(e));const f=th(t);if(!d&&!f&&c){const b=c.episode||"";const q=Tn(b)?b:"";if(c.time>aa){const x=xt(c.time);const F=b?`\u4E0A\u6B21\u64AD\u653E\u5230 ${b} \xB7 ${x}`:`\u4E0A\u6B21\u64AD\u653E\u5230 ${x}`;oe(F,{tone:"warn",icon:"play",variant:"primary",linkText:b?`${b} \xB7 ${x}`:x,onClick:o(()=>{if(Wv(c,e)){Gi(c.time);return}const h=vu({target:b,current:Yt(e)});if(!h){if(!b){oe("\u8FD9\u6761\u89C2\u770B\u8BB0\u5F55\u91CC\u6CA1\u6709\u96C6\u6570\u4FE1\u606F\uFF0C\u8BF7\u624B\u52A8\u5207\u6362",{tone:"warn",icon:"play",variant:"primary"})}else if(!Jv(b)){oe(`\u4E0A\u6B21\u662F\u5728\u300C${b}\u300D\u4E0A\u770B\u7684\uFF0C\u8BF7\u624B\u52A8\u5207\u6362`,{tone:"warn",icon:"play",variant:"primary"})}else{oe(`\u6CA1\u627E\u5230 ${b} \u7684\u5165\u53E3\uFF1B\u82E5\u9009\u96C6\u9762\u677F\u6536\u7740\uFF0C\u8BF7\u5148\u5C55\u5F00\u5B83`,{tone:"warn",icon:"play",variant:"primary"})}return}oe(`\u6B63\u5728\u5207\u6362 ${b}\u2026`,{tone:"info",icon:"play",variant:"primary"});Kv(h.el,c.time,t,b,e).then(M=>{Nv();if(M==="pending"){oe(`\u5DF2\u5207\u6362\u5230 ${b}\uFF0C\u70B9\u64AD\u653E\u540E\u4F1A\u4ECE\u4E0A\u6B21\u4F4D\u7F6E\u7EE7\u7EED`,{tone:"warn",icon:"play",variant:"primary"})}else if(M==="timeout"){oe("\u70B9\u4E86\u6CA1\u5207\u8FC7\u53BB\uFF1B\u82E5\u9009\u96C6\u9762\u677F\u6536\u7740\uFF0C\u8BF7\u5148\u5C55\u5F00\u5B83\u518D\u5207",{tone:"warn",icon:"play",variant:"primary"})}})},"onClick")})}else if(b){oe(`\u4E0A\u6B21\u89C2\u770B\u5230 ${b}`,{tone:"warn",icon:"play",variant:"primary",emphasis:q})}}if(d)ku(d,c&&c.episode||"",e);const k=o((b,q)=>{const x=at(t);Wl(t,{episode:q||i,time:b,cover:x&&x.cover||s,path:eh(e),siteId:e.id})},"saveNow");let g=false;const _=setInterval(()=>{const b=Yt(e)||i;if(b&&b!==i){i=b;g=false}const q=Qv();if(q&&q.ended)return;if(q&&q.time>ca){g=true;k(q.time,i)}else if(!q&&!g&&i){if(document.hidden)return;g=true;if(!Zv(at(t),i))return;k(0,i)}},ia);return()=>{clearInterval(_);rr();document.removeEventListener("pagehide",n);document.removeEventListener("visibilitychange",r)}} o(Tu,"initPlayback"); function Au(e){if(!e)return"";const t=xt(e.time);return[qe(e.episode),t].filter(Boolean).join(" \xB7 ")} o(Au,"formatPlayback"); var nh={"same-origin":"\u540C\u6E90 video\uFF08\u7236\u6587\u6863\u76F4\u8FDE\uFF09","cross-origin":"iframe \u64AD\u653E\u5668\uFF08\u8D70\u6865\u63A5\uFF09",none:"\u6CA1\u627E\u5230 video"}; var Cu=""; var Lu=0; var rh=3; function Mu(){try{const e=JSON.parse(GM_getValue(xr,"{}"));return e&&typeof e==="object"?e:{}}catch(e){return{}}} o(Mu,"readMap"); function oh(e){if(!e)return"";try{return new URL(e.getAttribute("src")||"",location.href).origin}catch(t){return""}} o(oh,"originOf"); function ih(e){if(ct("video").length)return"same-origin";const t=un(e&&e.playerFrameSelector);if(t)return"cross-origin";return"none"} o(ih,"detectKind"); function ch(e,t,n){Cu=t;const r=Mu();r[e.id]={host:location.hostname,kind:t,origin:n,ts:Date.now()};try{GM_setValue(xr,JSON.stringify(r))}catch(i){}V("[\u5F71\u89C6\u6536\u85CF] \u64AD\u653E\u9875\u63A2\u9488\uFF1A"+e.id+"\uFF08"+location.hostname+"\uFF09= "+(nh[t]||t)+(n?"\uFF0C\u64AD\u653E\u5668\u6E90 "+n:""))} o(ch,"settle"); function Iu(e,t){if(!e)return;const n=Number(t)||0;const r=Mu();const i=r[e]||{};if(i.depth===n)return;r[e]=Object.assign({host:location.hostname,kind:"cross-origin"},i,{depth:n,ts:Date.now()});try{GM_setValue(xr,JSON.stringify(r))}catch(c){}V("[\u5F71\u89C6\u6536\u85CF] \u64AD\u653E\u9875\u63A2\u9488\uFF1A"+e+" \u7684\u64AD\u653E\u5668"+(n?"\u5D4C\u5728\u7B2C "+(n+1)+" \u5C42\uFF08\u4E2D\u7EE7\u8F6C\u53D1\uFF09":"\u5C31\u5728\u7B2C\u4E00\u5C42"))} o(Iu,"notePlayerDepth"); function Xi(e){if(!e||!e.id||Cu)return;Lu++;const t=ih(e);if(t!=="none"||Lu>=rh){const n=t==="cross-origin"?un(e.playerFrameSelector):null;ch(e,t,oh(n))}} o(Xi,"probePlayer"); var Pu="__vc_bridge__"; var de={BOOT:"boot",READY:"ready",STATE:"state",HELLO:"hello",CMD:"cmd",RELEASE:"release",KEY:"key"}; var ze={VOLUME:"volume",SEEK:"seek",SEEK_BY:"seek_by",PLAY:"play",PAUSE:"pause",STATE:"state"}; function rt(e,t){return Object.assign({[Pu]:1,t:e},t||{})} o(rt,"pack"); function ao(e){if(!e||typeof e!=="object"||e[Pu]!==1)return null;return e} o(ao,"unpack"); function Ji(){return"vc"+Date.now().toString(36)+Math.random().toString(36).slice(2,8)} o(Ji,"makeNonce"); var ah=60; var sh=2e3; var lh=15; var Ou=new Set; function ir(e,t){if(Ou.has(e))return;Ou.add(e);V(t)} o(ir,"logOnce"); function uh(e){try{const t=String(e.getAttribute("src")||"");return new URL(t,location.href).origin||t}catch(t){return String(e.getAttribute("src")||"")}} o(uh,"originOf"); var dh=8; function Ru(){let e=null;let t="";let n=null;let r=false;let i=null;let c=null;let a=null;let s="";let l=null;let d=null;let f=null;let k="";const g=[];function _(A,w){try{e.contentWindow.postMessage(rt(A,Object.assign({nonce:t},w||{})),"*");return true}catch(y){return false}}o(_,"post");function b(A,w,{queue:y=false}={}){if(!e||!t){if(y){const C=g[g.length-1];if(C&&C.t===A&&C.data&&w&&C.data.op===w.op){g[g.length-1]={t:A,data:w}}else if(g.length{if(n){h();return}A++;if(A>lh){h();ir("no-reply","[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u591A\u6B21\u8BA4\u9886\u90FD\u6CA1\u6709\u56DE\u5E94 \u2014\u2014 \u5B50\u9875\u9762\u91CC\u6CA1\u6709\u811A\u672C\u5728\u8DD1\u3002\u5148\u5237\u65B0\u9875\u9762\u8BA9 iframe \u91CD\u65B0\u52A0\u8F7D\uFF1B\u4ECD\u65E0\u6548\u518D\u68C0\u67E5\u6CB9\u7334\u662F\u5426\u5141\u8BB8\u811A\u672C\u5728\u6846\u67B6\u4E2D\u8FD0\u884C");return}x()},sh)}o(F,"startHelloRetry");function h(){if(!a)return;clearInterval(a);a=null}o(h,"stopHelloRetry");function M(){return Array.prototype.map.call(document.querySelectorAll("iframe"),A=>String(A.getAttribute("src")||"")).join("|")}o(M,"frameSignature");function D(){if(d||typeof MutationObserver!=="function"||!document.documentElement)return;k=M();d=new MutationObserver(()=>{if(f)return;f=setTimeout(()=>{f=null;const A=M();if(A===k)return;k=A;if(l)B(l)},300)});d.observe(document.documentElement,{childList:true,subtree:true})}o(D,"ensureFrameWatch");function $(){if(f){clearTimeout(f);f=null}if(d){d.disconnect();d=null}}o($,"stopFrameWatch");function T(){if(r)return;r=true;window.addEventListener("message",A=>{const w=ao(A.data);if(!w||!e)return;if(A.source!==e.contentWindow)return;if(w.t===de.BOOT){ir("boot","[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u5B50\u9875\u9762\u811A\u672C\u5DF2\u542F\u52A8\uFF08"+(w.host||"")+"\uFF09\uFF0C\u7B49\u5B83\u627E video");n=null;x();return}if(w.t===de.READY){if(w.dur&&w.dur!!n&&!!e&&e.isConnected!==false,"ready"),time:o(()=>n?n.time:0,"time"),duration:o(()=>n?n.dur:0,"duration"),paused:o(()=>n?n.paused:true,"paused"),volume:o(()=>n?n.vol:1,"volume"),onState(A){i=A},onKey(A){c=A},applyVolume:R,bumpVolume:z,seek(A){return b(de.CMD,{op:ze.SEEK,to:A},{queue:true})},seekBy(A){return b(de.CMD,{op:ze.SEEK_BY,by:A})},play(){return b(de.CMD,{op:ze.PLAY})},pause(){return b(de.CMD,{op:ze.PAUSE})},requestState(){return b(de.CMD,{op:ze.STATE})}}} o(Ru,"createPlayerBridge"); function Zi(){const e=ue(location.hostname);return[...it,...On].filter(t=>t.crossSiteTarget!==false&&typeof t.searchPath==="function").filter(t=>!(t.domains||[]).some(n=>ue(n)===e))} o(Zi,"jumpableSites"); var so=null; function Du(){if(so)return so;let e=null;try{e=JSON.parse(GM_getValue(Pn,"[]"))}catch(t){e=null}so=Array.isArray(e)?e:[];return so} o(Du,"excludedList"); function fh(e){return Du().indexOf(e)<0} o(fh,"isEnabled"); function Nu(e,t){const n=Du();const r=n.indexOf(e);if(t&&r>=0)n.splice(r,1);else if(!t&&r<0)n.push(e);else return;GM_setValue(Pn,JSON.stringify(n))} o(Nu,"setEnabled"); function qu(e){const t=(e||"").trim();return Zi().map(n=>{const r=Et(n);return{id:n.id,name:n.name,domain:r,url:t?"https://"+r+n.searchPath(t):"",enabled:fh(n.id),fold:!!n.fold}})} o(qu,"listTargets"); function Fu(e){const t=Zi().find(n=>n.id===e);return t?Promise.resolve(cn(t)).catch(()=>""):Promise.resolve("")} o(Fu,"warmDomain"); function Bu(e,t){const n=Zi().find(c=>c.id===e);const r=(t||"").trim();if(!n||!r)return Promise.resolve("");const i="https://"+Et(n)+n.searchPath(r);return Promise.resolve(cn(n)).then(c=>c?"https://"+c+n.searchPath(r):i).catch(()=>i)} o(Bu,"resolveUrl"); function pt(){const e=xe();if(!e)return"";const t=e.pageType();if(t==="detail"&&e.getDetailInfo)return(e.getDetailInfo()||{}).name||"";if(t==="play"&&e.getPlayInfo)return(e.getPlayInfo()||{}).name||"";return""} o(pt,"getCurrentName"); function fo(){const e=xe();if(!e||e.pageType()!=="detail"||!e.getDetailInfo)return;const t=e.getDetailInfo();if(!t||!t.name)return;if(t.cover){It(t.name,t.cover);vn(t.name,t.cover,e.id,true);return}uu(t.name)} o(fo,"cacheCurrentDetailImage"); function po(e,t){const n=Le();return Fe(e,n[t])>-1} o(po,"isFavorited"); function $u(e,t){const n=Le();const r=t==="want"?"watched":"want";const i=Fe(e.name,n[t]);const c=Fe(e.name,n[r]);if(c>-1)n[r].splice(c,1);if(i>-1){n[t].splice(i,1)}else{e.updateTime=Date.now();n[t].unshift(e);if(e.cover)Fi(e.name,e.cover,e.siteId)}Ye(n);Oe.renderedTabs.clear()} o($u,"toggleFavorite"); function lo(e){const t=xe();if(!t)return;const n=t.pageType();let r=null;if(n==="detail")r=t.getDetailInfo?t.getDetailInfo():null;else if(n==="play")r=t.getPlayInfo?t.getPlayInfo():null;if(!r||!r.name)return;const i=r.name;const c=Le();const a=Fe(i,c[e]);if(a>-1){c[e].splice(a,1);Ye(c)}else{let s="";const l=Ge(r.cover);if(n==="detail"){s=l||Zn(i)||Jn(i);It(i,s)}else if(n==="play"){s=Zn(i)||Jn(i)||l}const d=e==="want"?"watched":"want";const f=Fe(i,c[d]);if(f>-1)c[d].splice(f,1);c[e].unshift({name:i,cover:s,path:r.path||location.pathname,siteId:t.id,createTime:Date.now(),updateTime:Date.now()});Ye(c);Fi(i,s,t.id);zu(i,t)}Oe.renderedTabs.clear();Be()} o(lo,"toggleDrama"); var ju=[1500,5e3]; function zu(e,t,n=0){if(!t||typeof t.getSiteRating!=="function")return;const r=t.getSiteRating(document);if(r){Cl(e,r);return}if(n>=ju.length)return;setTimeout(()=>zu(e,t,n+1),ju[n])} o(zu,"adoptSiteRating"); function Hu(){lo("want")} o(Hu,"toggleWant"); function Uu(){lo("watched")} o(Uu,"toggleWatched"); var Ot={name:"",type:""}; function Vu(){const e=pt();if(!e)return;const t=cr(e);if(t){Ot={name:e,type:t};lo(t);return}const n=Ot.name===e&&Ot.type?Ot.type:"want";lo(n);Ot={name:"",type:""}} o(Vu,"togglePrimary"); function Gu(){const e=pt();if(!e||cr(e))return"";return Ot.name===e&&Ot.type?Ot.type:"want"} o(Gu,"primaryIntent"); function Ku(e,t){if(t==="history"){Di(e);Oe.renderedTabs.clear();Be();return}const n=Le();const r=Fe(e,n[t]);if(r>-1){n[t].splice(r,1);Ye(n);Oe.renderedTabs.clear();Be()}} o(Ku,"deleteItem"); function cr(e){if(!e)return null;const t=Le();if(Fe(e,t.want)>-1)return"want";if(Fe(e,t.watched)>-1)return"watched";return null} o(cr,"statusOfName"); function uo(e,t,n){return n?n.findIndex(t,e):Fe(e,t)} o(uo,"indexOf"); function Yu(e,t,n){if(!e)return null;if(uo(e,t.want,n)>-1)return"want";if(uo(e,t.watched,n)>-1)return"watched";return null} o(Yu,"statusOf"); function ot(e,t,n,r){if(!n)return null;const i=uo(e,t[n],r);return i>-1?t[n].splice(i,1)[0]:null} o(ot,"removeFrom"); function Wu(e){const t=at(e);if(!t)return null;return{name:e,cover:t.cover||"",path:t.path||"",siteId:t.siteId||"",createTime:Date.now(),updateTime:Date.now()}} o(Wu,"buildFromPlayback"); function ph(e,t,n){if(!n)return null;const r=Fe(e,t[n]);if(r===-1)return null;return{index:r,prevId:r>0?t[n][r-1].name||"":"",item:{...t[n][r]}}} o(ph,"capture"); function mh(e,t){if(t.prevId){const n=e.findIndex(r=>r.name===t.prevId);if(n>-1)return n+1}return Math.max(0,Math.min(t.index,e.length))} o(mh,"restoreIndex"); function Xu(e,t){const n=Le();const r=Yu(e,n);if(r===t)return{ok:false,from:r};const i=ph(e,n,r);if(!t){ot(e,n,"want");ot(e,n,"watched");Ye(n);Oe.renderedTabs.clear();Be();return{ok:true,from:r,snapshot:i}}const c=ot(e,n,r)||Wu(e);if(!c)return{ok:false,from:r};ot(e,n,"want");ot(e,n,"watched");c.updateTime=Date.now();n[t].unshift(c);Ye(n);Oe.renderedTabs.clear();Be();return{ok:true,from:r,snapshot:i}} o(Xu,"setStatus"); function Ju(e,t,n){if(!t||!n)return false;const r=Le();ot(e,r,"want");ot(e,r,"watched");r[t].splice(mh(r[t],n),0,{...n.item});Ye(r);Oe.renderedTabs.clear();Be();return true} o(Ju,"restoreStatus"); function Zu(e,t){const n=Le();const r=Do();let i=0;for(const c of e){const a=Yu(c,n,r);if(a===t)continue;if(!t){ot(c,n,"want",r);ot(c,n,"watched",r);i++;continue}const s=ot(c,n,a,r)||Wu(c);if(!s)continue;ot(c,n,"want",r);ot(c,n,"watched",r);s.updateTime=Date.now();n[t].unshift(s);i++}if(i>0){Ye(n);Oe.renderedTabs.clear();Be()}return i} o(Zu,"batchSetStatus"); function Qi(){const e=xe();if(!e)return false;const t=e.pageType();return t==="detail"||t==="play"} o(Qi,"isDetailOrPlay"); function Qu(e,t){if(t==="history"){e.forEach(i=>Di(i));Oe.renderedTabs.clear();Be();return}const n=Le();const r=Do();for(const i of e){const c=uo(i,n[t],r);if(c>-1)n[t].splice(c,1)}Ye(n);Oe.renderedTabs.clear();Be()} o(Qu,"batchDeleteItems"); var vh=/^(input|textarea|select)$/i; var hh=/^(button|a|summary)$/i; var ec=[" ","Spacebar"]; var gh=["media-controls","media-container","video-player","video-skin",".dplayer-controller",".dplayer-btn",".dplayer-progress",".art-controls",".art-control",".art-video-player",".vjs-control-bar",".vjs-big-play-button",".jw-control-bar",".jw-icon-display"].join(", "); var ed=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"," ","Spacebar"]; var bh=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"]; function tc({getVideo:e,step:t=5,volumeStep:n=.05,onAction:r,onNoVideo:i,remote:c,exclusive:a=false,win:s=window}){const l=s&&s.document||document;let d=false;const f=o(()=>!!(c&&typeof c.ready==="function"&&c.ready()),"remoteReady");function k(p){if(p==="ArrowRight"){c.seek(t);return`\u5FEB\u8FDB ${t} \u79D2`}if(p==="ArrowLeft"){c.seek(-t);return`\u5FEB\u9000 ${t} \u79D2`}if(p==="ArrowUp")return`\u97F3\u91CF ${Math.round(c.volume(n)*100)}%`;if(p==="ArrowDown")return`\u97F3\u91CF ${Math.round(c.volume(-n)*100)}%`;if(p===" "||p==="Spacebar"){c.toggle();return"\u64AD\u653E / \u6682\u505C"}return null}o(k,"remoteAction");function g(p){if(!p||!p.tagName)return false;return vh.test(p.tagName)||p.isContentEditable===true}o(g,"isEditable");function _(p){if(!p||!p.tagName)return false;return hh.test(p.tagName)}o(_,"isActivatable");function b(p){if(!p||!p.tagName)return false;if(typeof p.closest==="function"&&p.closest('[class*="vc-"], [id^="vc-"]'))return false;if(p.tagName.toLowerCase()==="input")return String(p.type||"").toLowerCase()==="range";return typeof p.getAttribute==="function"&&p.getAttribute("role")==="slider"}o(b,"isSlider");function q(p){if(!p||typeof p.closest!=="function")return false;return!!p.closest(gh)}o(q,"isPlayerControl");function x(p){const P=typeof p.composedPath==="function"?p.composedPath():null;return(P&&P.length?P[0]:p.target)||null}o(x,"realTarget");function F(p){if(p.tabIndex<0&&!p.hasAttribute("tabindex"))p.tabIndex=-1;try{p.focus({preventScroll:true})}catch(P){}}o(F,"focusVideo");function h(p){if(p.paused){Promise.resolve(p.play()).catch(()=>{});return"\u64AD\u653E"}p.pause();return"\u6682\u505C"}o(h,"togglePaused");function M(p,P){const U=p.muted;const ne=Gt(p,P,{unmute:true});dn();const ie=`\u97F3\u91CF ${Math.round(ne*100)}%`;return U?`\u5DF2\u53D6\u6D88\u9759\u97F3 \xB7 ${ie}`:ie}o(M,"setVolume");function D(p,P){switch(p){case"ArrowRight":return()=>{P.currentTime+=t;return`\u5FEB\u8FDB ${t} \u79D2`};case"ArrowLeft":return()=>{P.currentTime=Math.max(0,P.currentTime-t);return`\u5FEB\u9000 ${t} \u79D2`};case"ArrowUp":return()=>M(P,P.volume+n);case"ArrowDown":return()=>M(P,P.volume-n);case" ":case"Spacebar":return()=>h(P);default:return null}}o(D,"actionFor");function $(p){if(p.defaultPrevented)return;if(p.ctrlKey||p.altKey||p.metaKey)return;const P=x(p)||p.target;if(g(P))return;if(ec.includes(p.key)&&_(P)&&!q(P))return;if(!ed.includes(p.key))return;const U=e();if(!U||!U.isConnected){if(f()){const Ee=k(p.key);p.preventDefault();if(Ee&&r)r(Ee);return}p.preventDefault();if(i)i();return}const ne=D(p.key,U);if(!ne)return;const ie=ne();p.preventDefault();if(ie&&r)r(ie)}o($,"onKeyDown");function T(p){if(!p)return false;if(b(p))return true;if(g(p))return false;return q(p)}o(T,"shouldTakeOverSpace");function R(p,P){if(!p)return false;if(b(p))return true;return!!(P&&P.controls&&p===P)}o(R,"shouldTakeOverEarly");function z(p){if(!a)return false;if(g(p))return false;if(f())return false;return true}o(z,"exclusiveWantsKey");function B(p){if(p.ctrlKey||p.altKey||p.metaKey)return;if(!ed.includes(p.key))return;const P=x(p)||l.activeElement;const U=e();if(ec.includes(p.key)){if(!T(P)&&!R(P,U)){if(!z(P))return}p.preventDefault();p.stopPropagation();if(!U||!U.isConnected){if(i)i();return}F(U);const Ee=h(U);if(Ee&&r)r(Ee);return}if(!bh.includes(p.key))return;if(!R(P,U)&&!z(P))return;p.preventDefault();p.stopPropagation();if(!U||!U.isConnected){if(i)i();return}const ne=D(p.key,U);if(!ne)return;const ie=ne();if(ie&&r)r(ie)}o(B,"onKeyDownCapture");function A(p){if(!ec.includes(p.key)||p.ctrlKey||p.altKey||p.metaKey)return;const P=x(p)||l.activeElement;if(!T(P)&&!z(P))return;p.preventDefault();p.stopPropagation()}o(A,"onKeyUpCapture");let w=0;function y(){w=Date.now()}o(y,"onPointerDown");function C(p){try{if(p.matches(":hover"))return true}catch(P){}return Date.now()-w<800}o(C,"pointerLikelyOn");function S(p){const P=x(p)||p.target;if(!P||!P.tagName||P.tagName.toLowerCase()!=="video")return;const U=e();if(!U||P!==U)return;if(!C(P))return;try{P.blur()}catch(ne){}}o(S,"onFocusIn");return{handleRemoteKey(p){if(!f())return;const P=k(p);if(P&&r)r(P)},enable(){if(d)return;d=true;l.addEventListener("pointerdown",y,true);l.addEventListener("focusin",S,true);s.addEventListener("keydown",B,true);s.addEventListener("keyup",A,true);s.addEventListener("keydown",$)},disable(){if(!d)return;d=false;l.removeEventListener("pointerdown",y,true);l.removeEventListener("focusin",S,true);s.removeEventListener("keydown",B,true);s.removeEventListener("keyup",A,true);s.removeEventListener("keydown",$)}}} o(tc,"createPlayerKeyboard"); var yh=.6; function rd(){const e=xh();if(e!==null)return e>yh;return _h()} o(rd,"isLightPage"); function xh(){const e=wh();if(e!==null)return e;for(const t of[document.body,document.documentElement]){if(!t)continue;const n=od(t);if(n!==null)return n}return Sh()} o(xh,"pageBrightness"); function wh(){let e=null;try{e=document.elementFromPoint(window.innerWidth/2,window.innerHeight/2)}catch{}const t=window.innerWidth*window.innerHeight*.5;for(let n=e;n;n=n.parentElement){const r=od(n);if(r===null)continue;const i=n.getBoundingClientRect();if(i.width*i.height>=t)return r}return null} o(wh,"backgroundAtPanelSpot"); function od(e){const t=mo(getComputedStyle(e).backgroundColor);if(t!==null)return t;const n=td(getComputedStyle(e).backgroundImage);if(n!==null)return n;for(const r of["::before","::after"]){const i=getComputedStyle(e,r);if(!i||i.content==="none"||i.display==="none")continue;const c=mo(i.backgroundColor);if(c!==null)return c;const a=td(i.backgroundImage);if(a!==null)return a}return null} o(od,"nodeBrightness"); function td(e){const t=String(e||"");if(!t||t==="none")return null;const n=/#[0-9a-f]{3,8}\b|rgba?\([^)]*\)|(?:lab|lch|oklab|oklch|hsla?|color)\([^)]*\)/i.exec(t);return n?mo(n[0]):null} o(td,"gradientBrightness"); function Sh(){const e=document.body||document.documentElement;if(!e)return null;const t=mo(getComputedStyle(e).color);if(t===null)return null;if(t>.75)return .2;if(t<.35)return .9;return null} o(Sh,"textBrightnessHint"); function mo(e){const t=String(e||"").trim().toLowerCase();if(!t||t==="transparent"||t==="currentcolor"||t==="none")return null;const n=/^([a-z-]+)\(([^)]*)\)$/.exec(t);if(!n)return Eh(t);const r=n[1];const i=n[2].split("/");if(i[1]!==void 0&&nd(i[1])<.5)return null;if(i[0].indexOf("var(")>=0)return null;const c=i[0].match(/-?[\d.]+%?/g)||[];const a=o(l=>{const d=c[l];if(d===void 0)return null;return d.indexOf("%")>=0?parseFloat(d)/100:parseFloat(d)},"num");const s=o(l=>c.length>=l&&c.slice(0,l).every(d=>d!==""),"has");switch(r){case"rgb":case"rgba":{if(!s(3))return null;if(c.length>=4&&nd(c[3])<.5)return null;const l=c.slice(0,3).map(d=>d.indexOf("%")>=0?parseFloat(d)*2.55:parseFloat(d));return nc(l)}case"hsl":case"hsla":return s(3)?a(2):null;case"lab":case"lch":{if(!s(1))return null;return c[0].indexOf("%")>=0?a(0):a(0)/100}case"oklab":case"oklch":{const l=a(0);return l===null?null:l>1?l/100:l}case"color":{if(c.length<3)return null;return nc([a(0)*255,a(1)*255,a(2)*255])}default:return null}} o(mo,"brightnessOf"); function Eh(e){const t=/^#([0-9a-f]{3}|[0-9a-f]{6})$/.exec(e);if(!t)return null;let n=t[1];if(n.length===3)n=n.split("").map(r=>r+r).join("");return nc([parseInt(n.slice(0,2),16),parseInt(n.slice(2,4),16),parseInt(n.slice(4,6),16)])} o(Eh,"hexBrightness"); function nd(e){const t=String(e).trim();return t.indexOf("%")>=0?parseFloat(t)/100:parseFloat(t)} o(nd,"alphaOf"); function nc([e,t,n]){return(.299*e+.587*t+.114*n)/255} o(nc,"luminance"); function _h(){if(!window.matchMedia)return false;return!window.matchMedia("(prefers-color-scheme: dark)").matches} o(_h,"prefersLight"); var we={openDuration:600,closeDuration:500,openEase:"outCubic",closeEase:"inCubic",panelRadius:16,buttonRadius:14,slices:200,cornerSlices:32,genieSpread:1.6,verticalThresholdRatio:.18,fallbackPad:260,zIndex:100002,closeHandoffRatio:.55,canvasPad:8,maxDpr:2,fill:"rgba(30, 32, 44, 0.72)",highlight:"rgba(255, 255, 255, 0.14)",highlightHeight:2,stroke:"rgba(255, 255, 255, 0.16)"}; var id={outCubic:o(e=>1-Math.pow(1-e,3),"outCubic"),inCubic:o(e=>e*e*e,"inCubic"),linear:o(e=>e,"linear")}; function kh(){return!!(window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches)} o(kh,"prefersReducedMotion"); function rc({panelRect:e,buttonRect:t,reverse:n,canvasZ:r,fill:i,highlight:c,stroke:a,onHandoff:s,onDone:l}){const d=n?we.openDuration:we.closeDuration;const f=id[n?we.openEase:we.closeEase]||id.linear;const k=i||we.fill;const g=c||we.highlight;const _=a||we.stroke;const b=e&&t&&e.width>0&&e.height>0&&t.width>0&&t.height>0;if(!b||kh()||d<=0){if(l)l();return}const q=we.canvasPad;const x=Math.floor(Math.min(e.left,t.left)-q);const F=Math.floor(Math.min(e.top,t.top)-q);const h=Math.ceil(Math.max(e.right,t.right)+q-x);const M=Math.ceil(Math.max(e.bottom,t.bottom)+q-F);const D=Math.min(we.maxDpr,Math.max(1,window.devicePixelRatio||1));const $=document.createElement("canvas");$.width=Math.round(h*D);$.height=Math.round(M*D);$.style.cssText=`position:fixed;left:${x}px;top:${F}px;width:${h}px;height:${M}px;pointer-events:none;z-index:${r||we.zIndex};`;document.body.appendChild($);const T=$.getContext("2d");T.setTransform(D,0,0,D,-x*D,-F*D);T.lineJoin="round";const R=e.left;const z=e.top;const B=e.width;const A=e.height;const w=R+B/2;const y=z+A/2;const C=t.left;const S=t.top;const p=t.width;const P=t.height;const U=C+p/2;const ne=S+P/2;const ie=U-w;const Ee=ne-y;const pe=Math.abs(Ee)>A*we.verticalThresholdRatio;const st=pe?Ee>=0:ie>=0;const Xe=we.slices;const Ne=we.cornerSlices;const Je=Xe-2*Ne;const Ce=Xe+1;const lt=new Float32Array(Ce);const j=new Float32Array(Ce);const Te=new Float32Array(Ce);let Me=null;function Ze(me){const fe=A+(P-A)*me;const be=B+(p-B)*me;const L=we.panelRadius+(we.buttonRadius-we.panelRadius)*me;const X=pe?fe:be;const Y=X>0?Math.min(.45,L/X):0;let ee=Infinity,Ae=-Infinity,se=Infinity,ve=-Infinity;for(let Z=0;Z=Xe-Ne)ye=1-(Xe-Z)/Ne*Y;else ye=Y+(Z-Ne)/Je*(1-2*Y);const wo=st?ye:1-ye;let Qe=me*(1+wo*we.genieSpread);if(Qe>1)Qe=1;const qt=B+(p-B)*Qe;const wn=A+(P-A)*Qe;let Pe=0;let ut,mt,He;if(pe){const Ft=z+ye*A;const Qt=S+ye*P;const Sn=Ft+(Qt-Ft)*Qe;const Bt=w+(U-w)*Qe;if(ye1-Y){const _e=(ye-(1-Y))*fe;Pe=L-Math.sqrt(Math.max(0,L*L-_e*_e))}const vt=qt/2-.5;if(Pe>vt)Pe=vt>0?vt:0;ut=Bt-qt/2+Pe;mt=Bt+qt/2-Pe;He=Sn;if(utAe)Ae=mt;if(Heve)ve=He}else{const Ft=R+ye*B;const Qt=C+ye*p;const Sn=Ft+(Qt-Ft)*Qe;const Bt=y+(ne-y)*Qe;if(ye1-Y){const _e=(ye-(1-Y))*be;Pe=L-Math.sqrt(Math.max(0,L*L-_e*_e))}const vt=wn/2-.5;if(Pe>vt)Pe=vt>0?vt:0;ut=Bt-wn/2+Pe;mt=Bt+wn/2-Pe;He=Sn;if(HeAe)Ae=He;if(utve)ve=mt}lt[Z]=ut;j[Z]=mt;Te[Z]=He}if(Me){T.clearRect(Me.x0-2,Me.y0-2,Me.x1-Me.x0+4,Me.y1-Me.y0+4)}else{T.clearRect(x,F,h,M)}Me={x0:ee,x1:Ae,y0:se,y1:ve};T.beginPath();if(pe){T.moveTo(j[0],Te[0]);for(let Z=1;Z=0;Z--)T.lineTo(lt[Z],Te[Z])}else{T.moveTo(Te[0],lt[0]);for(let Z=1;Z=0;Z--)T.lineTo(Te[Z],j[Z])}T.closePath();T.fillStyle=k;T.fill();if(g&&we.highlightHeight>0){const Z=T.createLinearGradient(0,se,0,se+we.highlightHeight);Z.addColorStop(0,g);Z.addColorStop(1,"rgba(255, 255, 255, 0)");T.save();T.globalCompositeOperation="source-atop";T.fillStyle=Z;T.fillRect(ee,se,Ae-ee,we.highlightHeight);T.restore()}if(_){T.lineWidth=1;T.strokeStyle=_;T.stroke()}}o(Ze,"drawFrame");let E=false;let O=0;let K=0;function G(){if(E)return;E=true;cancelAnimationFrame(O);clearTimeout(K);$.remove();if(l)l()}o(G,"finish");Ze(n?1:0);const ae=performance.now();let le=false;function te(me){if(E)return;const fe=Math.min(1,(me-ae)/d);const be=f(fe);if(!n&&!le&&fe>=we.closeHandoffRatio){le=true;if(s)s()}Ze(n?1-be:be);if(fe<1)O=requestAnimationFrame(te);else G()}o(te,"frame");O=requestAnimationFrame(te);K=setTimeout(G,d+we.fallbackPad)} o(rc,"runGenie"); var vo=[{set:"want",icon:"\u2B50",label:"\u60F3\u770B"},{set:"watched",icon:"\u2713",label:"\u5DF2\u770B"}]; var Wt=vo.reduce((e,t)=>{e[t.set]=t.label;return e},{}); function cd(e){return vo.map(t=>{const n=e?"vc-status-btn "+e:"vc-status-btn";return``}).join("")} o(cd,"statusButtonsHtml"); function ad(e){const t=getComputedStyle(e);return{fill:t.backgroundColor,highlight:t.getPropertyValue("--vc-top-highlight").trim(),stroke:t.borderTopColor}} o(ad,"panelShapeColors"); var Th=1e3; function sd(e){const{state:t,pageSize:n,loadFn:r,filterFn:i,getId:c,getTitle:a,getTitleHintFn:s,getUrl:l,resolveUrlFn:d,getSiteName:f,getTime:k,getAvcode:g,getStatus:_,setStatusFn:b,restoreStatusFn:q,deleteFn:x,batchSetStatusFn:F,batchDeleteFn:h,exportFn:M,importFn:D,updateButtonStateFn:$,openSettingsFn:T,openWebSearchFn:R,getExtraInfo:z,resolveSiteIdFn:B,resolveCoverFn:A,resolveCoverFallbackFn:w,onCoverFailed:y,onCoverLoaded:C,resolveCoverClassFn:S,getCoverFitFn:p,resolvePreviewFn:P,hasHistory:U,emptyText:ne,templates:ie,getOriginRectFn:Ee,setFloatPanelFn:pe,getMetaFn:st,metaStaleFn:Xe,requestMetaFn:Ne,metaEnabledFn:Je,resetRatingQueueFn:Ce}=e;const lt={want:"\u60F3\u770B",watched:"\u5DF2\u770B",history:"\u89C2\u770B\u8BB0\u5F55"};let j=null;let Te=false;let Me=false;let Ze=null;let E=false;const O=new Set;const K=new Map;function G(){const u=document.createElement("div");u.className="vc-mask";u.onclick=I=>{if(I.target===u)Lo()};const m=document.createElement("div");m.className="vc-panel";m.innerHTML=ie.panelTemplate;if(!U){const I=m.querySelector('.vc-tab[data-vc-type="history"]');const N=m.querySelector('.vc-list-wrap[data-vc-type="history"]');if(I)I.style.display="none";if(N)N.style.display="none"}u.appendChild(m);document.body.appendChild(u);j=u;St(u,document.body);Co();ae(m);let v=null;window.addEventListener("resize",()=>{clearTimeout(v);v=setTimeout(()=>Sc(j),200)})}o(G,"createPanel");function ae(u){u.querySelector(".vc-close").onclick=Lo;le(u);te(u);fe(u);X(u);Y(u)}o(ae,"bindPanelEvents");function le(u){u.querySelectorAll(".vc-tab").forEach(m=>{m.onclick=()=>{if(Te)en();u.querySelectorAll(".vc-tab").forEach(v=>v.classList.remove("vc-active"));m.classList.add("vc-active");_e();t.currentTab=m.dataset.vcType;Ae(m.dataset.vcType)}})}o(le,"bindTabEvents");function te(u){const m=u.querySelector(".vc-search");const v=o(()=>{t.searchKeyword=m.value.trim();t.currentPage[t.currentTab]=1;t.renderedTabs.clear();_e();se()},"runSearch");let I=null;m.oninput=()=>{clearTimeout(I);I=setTimeout(v,$c)};const N=u.querySelector(".vc-search-clear");if(N){N.onclick=()=>{if(!m.value)return;m.value="";v();m.focus()}}}o(te,"bindSearchEvents");let me=null;function fe(u){const m=u.querySelector("#vc-refresh");m.onclick=()=>{t.renderedTabs.clear();_e();se();L(m);oe("\u5217\u8868\u5DF2\u5237\u65B0",{tone:"ok"})};const v=u.querySelector(".vc-header-menu-wrap");u.querySelector("#vc-more").onclick=()=>{be(!u.querySelector("#vc-header-menu").classList.contains("vc-show"))};const I=!!(window.matchMedia&&window.matchMedia("(hover: hover) and (pointer: fine)").matches);if(I){v.addEventListener("mouseenter",()=>{clearTimeout(me);be(true)});v.addEventListener("mouseleave",()=>{clearTimeout(me);me=setTimeout(()=>be(false),Vc)})}const N=o(W=>()=>{be(false);W()},"runFromMenu");u.querySelector("#vc-export").onclick=N(M);u.querySelector("#vc-import").onclick=N(()=>{D(()=>{t.renderedTabs.clear();_e();se();if($)$()})});u.querySelector("#vc-settings").onclick=()=>{if(T)T()};const H=u.querySelector("#vc-web-search");if(R)H.onclick=N(()=>R());else H.style.display="none";document.addEventListener("click",W=>{if(!v.contains(W.target))be(false)})}o(fe,"bindHeaderActions");function be(u){const m=j&&j.querySelector("#vc-header-menu");if(!m)return;if(m.classList.contains("vc-show")===u)return;m.classList.toggle("vc-show",u);j.querySelector("#vc-more").setAttribute("aria-expanded",u?"true":"false")}o(be,"setHeaderMenu");function L(u){u.classList.remove("vc-spin");void u.offsetWidth;u.classList.add("vc-spin");u.addEventListener("animationend",()=>u.classList.remove("vc-spin"),{once:true})}o(L,"playRefreshSpin");function X(u){u.querySelector("#vc-first").onclick=()=>Pe(1);u.querySelector("#vc-prev").onclick=()=>Pe(t.currentPage[t.currentTab]-1);u.querySelector("#vc-next").onclick=()=>Pe(t.currentPage[t.currentTab]+1);u.querySelector("#vc-last").onclick=()=>Pe(qt(t.currentTab));const m=u.querySelector("#vc-site-select");m.addEventListener("change",()=>{t.siteFilter=m.value;t.currentPage[t.currentTab]=1;t.renderedTabs.clear();_e();se()})}o(X,"bindPagerEvents");function Y(u){u.querySelector("#vc-batch-toggle").onclick=()=>{if(Te)en();else hf()};u.querySelector("#vc-batch-selectall").onchange=m=>{const v=u.querySelector(`#vc-grid-${t.currentTab}`);const I=v?v.querySelectorAll(".vc-card"):[];I.forEach(N=>{const H=N.dataset.vcId;const W=N.querySelector(".vc-card-check");if(m.target.checked){O.add(H);N.classList.add("vc-selected");if(W)W.checked=true}else{O.delete(H);N.classList.remove("vc-selected");if(W)W.checked=false}});To()};u.querySelector("#vc-batch-move-want").onclick=()=>ee("want");u.querySelector("#vc-batch-move-watched").onclick=()=>ee("watched");u.querySelector("#vc-batch-delete").onclick=async()=>{if(O.size===0)return;const m=t.currentTab;const v=m==="history"?"\u89C2\u770B\u8BB0\u5F55":"\u6536\u85CF";const I=await Lt(`\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u7684 ${O.size} \u6761${v}\u5417\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002`,{danger:true});if(!I)return;h(Array.from(O),m);en()};u.querySelector("#vc-batch-cancel").onclick=()=>en()}o(Y,"bindBatchEvents");async function ee(u){if(O.size===0)return;const m=u?`\u79FB\u5230${Wt[u]}`:"\u53D6\u6D88\u6536\u85CF";const v=await Lt(`\u786E\u5B9A\u5C06\u9009\u4E2D\u7684 ${O.size} \u6761${m}\u5417\uFF1F`);if(!v)return;const I=F?F(Array.from(O),u):0;_e();en();oe(`\u5DF2${m} ${I} \u6761`,{tone:"ok"})}o(ee,"runBatchStatus");function Ae(u){j.querySelectorAll(".vc-list-wrap").forEach(m=>{m.classList.toggle("vc-active",m.dataset.vcType===u)});if(!t.renderedTabs.has(u)){wc(u);t.renderedTabs.add(u)}Ao()}o(Ae,"switchTab");function se(){wn();wc(t.currentTab);t.renderedTabs.add(t.currentTab);Ao();if(Te)To();if(E){E=false;Z()}}o(se,"renderActiveList");function ve(u){const m=B?B(u):u.siteId||"";return m||""}o(ve,"siteIdOf");function Z(){const u=j.querySelector(".vc-panel");if(!u)return;u.classList.add("vc-content-enter");void u.offsetWidth;u.classList.remove("vc-content-enter")}o(Z,"playContentEnter");function ye(u){const m=new Map;u.forEach(v=>{const I=ve(v);if(!I||m.has(I))return;m.set(I,f(v)||I)});return Array.from(m,([v,I])=>({id:v,name:I}))}o(ye,"collectSiteFilters");function wo(u){const m=j.querySelector("#vc-site-select");if(!m)return;const v=[{id:"",name:"\u5168\u90E8"},...u];m.innerHTML=v.map(I=>``).join("");if(!u.some(I=>I.id===t.siteFilter))t.siteFilter="";m.value=t.siteFilter}o(wo,"renderSiteSelect");function Qe(u){let m=i(u,t.searchKeyword);if(t.siteFilter)m=m.filter(v=>ve(v)===t.siteFilter);return m}o(Qe,"applyFilters");function qt(u){const m=r();const v=Qe(m[u]||[]);return Math.ceil(v.length/n)||1}o(qt,"getTotalPages");function wn(){const u=qt(t.currentTab);const m=t.currentPage[t.currentTab]||1;const v=Math.max(1,Math.min(m,u));if(v!==m)t.currentPage[t.currentTab]=v}o(wn,"clampCurrentPage");function Pe(u){const m=qt(t.currentTab);const v=Math.max(1,Math.min(u,m));if(v===t.currentPage[t.currentTab])return;t.currentPage[t.currentTab]=v;t.renderedTabs.clear();_e();se()}o(Pe,"jumpToPage");function ut(u){return u==="want"||u==="watched"?u:null}o(ut,"normalizeStatus");function mt(u){const m=u.querySelector(".vc-card-status");return m?ut(m.dataset.vcStatus):null}o(mt,"getCardStatus");function He(u,m){const v=u.querySelector(".vc-card-status");if(v)v.dataset.vcStatus=m||"none"}o(He,"applyCardStatus");function Ft(u,m,v){const I=mt(u);const N=I===v?null:v;const H=b?b(m,N):null;if(!H||!H.ok)return;t.renderedTabs.clear();if($)$();if(t.currentTab==="history"){He(u,N);oe(N?`\u5DF2\u52A0\u5165${Wt[N]}`:"\u5DF2\u53D6\u6D88\u6536\u85CF",{tone:"ok"});return}K.set(m,{from:H.from,to:N,snapshot:H.snapshot});Qt(u,N)}o(Ft,"changeCardStatus");function Qt(u,m){u.classList.add("vc-pending");const v=u.querySelector(".vc-card-actions");if(v)v.remove();if(u.querySelector(".vc-card-pending"))return;const I=document.createElement("div");I.className="vc-card-pending";const N=document.createElement("span");N.className="vc-card-pending-text";N.textContent=m?`\u5DF2\u79FB\u5230${Wt[m]}`:"\u5DF2\u53D6\u6D88\u6536\u85CF";const H=document.createElement("button");H.className="vc-card-undo";H.type="button";H.textContent="\u64A4\u9500";H.addEventListener("click",W=>{W.stopPropagation();Bt(u.dataset.vcId)});I.appendChild(N);I.appendChild(H);u.appendChild(I)}o(Qt,"applyPendingCard");function Sn(u){if(K.size===0)return;u.querySelectorAll(".vc-card").forEach(m=>{const v=K.get(m.dataset.vcId);if(v)Qt(m,v.to)})}o(Sn,"restorePendingCards");function Bt(u){const m=K.get(u);if(!m)return;if(q)q(u,m.from,m.snapshot);K.delete(u);t.renderedTabs.clear();if($)$();se()}o(Bt,"undoPendingChange");function vt(u,m,v){x(m,v);t.renderedTabs.clear();if($)$();const I=u.parentElement;u.remove();Ao();if(I&&!I.querySelector(".vc-card")){const N=document.createElement("div");N.className="vc-empty";N.textContent=ne;I.appendChild(N)}}o(vt,"removeCard");function _e(){K.clear()}o(_e,"invalidatePending");const So=new Set;function yc(u,m){return[u,m?"vc-cover-ready":""].filter(Boolean).join(" ")}o(yc,"joinCoverClass");function xc(u,m){return typeof S==="function"?S(u,!!m)||"":""}o(xc,"coverClassOf");function wc(u){const m=r();const v=m[u]||[];wo(ye(v));const I=Qe(v);const N=t.currentPage[u];const H=(N-1)*n;const W=I.slice(H,H+n);const ce=j.querySelector(`#vc-grid-${u}`);if(I.length===0){ce.innerHTML="";const re=document.createElement("div");re.className="vc-empty";re.textContent=ne;ce.appendChild(re);return}ce.innerHTML=W.map(re=>{const ht=A?A(re):re.cover||"";const et=_n(ht);const wf=et?fr(ie.coverImageTemplate,{cover:he(et),title:he(a(re)),coverClass:he(yc(xc(re),So.has(ht)))}):ie.defaultCoverTemplate;const Ac=g?g(re):re.avcode||"";const Sf=Ac?``:"";const Ef=ut(_?_(re):null);const Lc=a(re);return fr(ie.cardTemplate,{id:he(c(re)),title:he(Lc),titleHint:he(lf(re,Lc)),url:he(l(re)),siteName:he(f(re)),dateStr:he(Mc(k(re))),dateFull:he(Ic(k(re))),lastPlayed:he(z?z(re):""),status:he(Ef||"none"),statusButtons:cd("vc-card-status-btn"),rateHtml:ur(Zd(re))||Qd(re),coverHtml:wf,copyBtnHtml:Sf})}).join("");rf(ce,m,u);Sn(ce);ef(ce,W)}o(wc,"renderList");function Zd(u){if(!st||!Je||!Je())return null;return st(u)||null}o(Zd,"metaOf");function ur(u){if(!u||u.miss)return"";if(!u.score&&u.norate){const I=_n(u.url);const N="\u8C46\u74E3\u5DF2\u6536\u5F55\u8FD9\u4E00\u90E8\uFF0C\u6682\u65E0\u8BC4\u5206\uFF08\u5C1A\u672A\u5F00\u5206\uFF09";return I?`\u8C46\u74E3 --`:`\u8C46\u74E3 --`}if(!u.score)return"";const m=he(u.score);const v=_n(u.url);return v?`\u8C46\u74E3 ${m}`:`\u8C46\u74E3 ${m}`}o(ur,"rateHtmlOf");function Qd(u){if(!Ne||!Je||!Je())return"";const m=String(c(u)??"");if(!m)return"";return``}o(Qd,"rateFetchHtml");function ef(u,m){if(!Ne||!Je||!Je())return;if(Ce)Ce();m.forEach(v=>{if(st&&st(v)&&!(Xe&&Xe(v)))return;const I=String(c(v)??"");if(!I)return;Ne(I,N=>{if(!N||N.miss)return;const H=Array.prototype.filter.call(u.children,ce=>ce.dataset.vcId===I)[0];const W=H&&H.querySelector(".vc-card-rate");if(W)W.innerHTML=ur(N)})})}o(ef,"primeRatings");function tf(u,m){const v=u.parentElement;if(!v)return;const I=u.closest(".vc-card");const N=I?m.find(H=>String(c(H))===I.dataset.vcId):null;if(v.dataset.vcCoverTried){v.innerHTML=ie.defaultCoverTemplate;if(N&&y)y(N,_o(u));return}v.dataset.vcCoverTried="1";v.innerHTML=ie.defaultCoverTemplate;if(N&&y)y(N,_o(u));if(!w||!N){Eo(u,v,m);return}Promise.resolve(w(N)).then(H=>{if(!v.isConnected)return;if(!H){Eo(u,v,m);return}const W=_n(H);if(!W)return;v.innerHTML=fr(ie.coverImageTemplate,{cover:he(W),title:he(a(N)),coverClass:he(yc(xc(N,true),So.has(W)))});ko(v,m)}).catch(()=>{Eo(u,v,m)})}o(tf,"handleCoverError");function Eo(u,m,v){if(!m.isConnected)return;const I=_o(u);if(!I)return;const N=document.createElement("img");N.referrerPolicy="no-referrer";N.alt=u.getAttribute("alt")||"";N.className=u.className.replace(/\bvc-cover-ready\b/g,"").trim();N.src=I;m.innerHTML="";m.appendChild(N);ko(m,v)}o(Eo,"retryWithoutReferer");function _o(u){return u.currentSrc||u.src||""}o(_o,"imgSrc");function ko(u,m){u.querySelectorAll(".vc-card-cover img").forEach(v=>{if(v.dataset.vcCoverBound)return;v.dataset.vcCoverBound="1";const I=o(()=>{if(v.classList.contains("vc-cover-ready"))return;void v.offsetWidth;v.classList.add("vc-cover-ready");const ce=v.getAttribute("src");if(ce&&v.naturalWidth)So.add(ce)},"fadeIn");const N=400;const H=o(()=>{if(typeof v.decode!=="function"){I();return}let ce=false;const re=o(()=>{if(ce)return;ce=true;I()},"done");const ht=setTimeout(re,N);const et=o(()=>{clearTimeout(ht);re()},"finish");v.decode().then(et).catch(et)},"fadeInWhenDecoded");if(v.complete&&v.naturalWidth){H()}else{v.addEventListener("load",H,{once:true})}v.addEventListener("error",()=>tf(v,m));if(!C)return;const W=o(()=>{if(!v.naturalWidth)return;const ce=v.closest(".vc-card");const re=ce?m.find(ht=>String(c(ht))===ce.dataset.vcId):null;if(re)C(re)},"reportLoaded");v.addEventListener("load",W);if(v.complete)W()})}o(ko,"bindCoverEvents");function Sc(u){if(!u||typeof u.querySelectorAll!=="function")return;u.querySelectorAll(".vc-card-title").forEach(m=>{const v=m.scrollHeight;if(v)m.style.setProperty("--vc-title-full",`${v}px`)})}o(Sc,"measureTitles");function nf(u,m,v){if(u.detail===0)return false;return Math.abs(u.clientX-m)>3||Math.abs(u.clientY-v)>3}o(nf,"isTextSelect");function rf(u,m,v){Sc(u);u.querySelectorAll(".vc-card").forEach(I=>{const N=I.dataset.vcId;const H=I.dataset.vcUrl;const W=m[v].find(et=>c(et)===N);let ce=0,re=0;I.addEventListener("mousedown",et=>{ce=et.clientX;re=et.clientY});const ht=o(et=>nf(et,ce,re),"isDownSelect");if(Te)of(I,N,ht);else cf(I,N,W,H,v,ht)});ko(u,m[v]||[])}o(rf,"bindCardEvents");function of(u,m,v){const I=u.querySelector(".vc-card-check");u.addEventListener("click",N=>{if(N.target.closest(".vc-card-checkbox"))return;if(v(N))return;kc(u,m)});if(I){I.addEventListener("change",()=>{kc(u,m,I.checked)})}if(O.has(m)){u.classList.add("vc-selected");if(I)I.checked=true}}o(of,"bindBatchCardEvents");function cf(u,m,v,I,N,H){if(d){u.addEventListener("mouseenter",()=>{Promise.resolve(d(v,I)).catch(()=>{})},{once:true})}u.addEventListener("click",async W=>{if(H(W))return;if(W.target.closest(".vc-card-actions, .vc-card-status, .vc-card-rate"))return;if(W.target.closest(".vc-card-cover")){uf(W.target,v);return}Ec(v,I)});df(u,m);ff(u);mf(u,v,I,H);af(u,v);vf(u,m,N)}o(cf,"bindNormalCardEvents");function af(u,m){const v=u.querySelector(".vc-card-rate-fetch");if(!v)return;v.addEventListener("click",I=>{I.stopPropagation();if(v.dataset.vcBusy==="1")return;v.dataset.vcBusy="1";v.textContent="\u67E5\u8BE2\u4E2D\u2026";const N=v.dataset.vcId||String(c(m)??"");Ne(N,H=>{v.dataset.vcBusy="";if(H&&!H.miss&&H.score){const ce=v.parentElement;if(ce)ce.innerHTML=ur(H);return}if(H&&H.norate){const ce=v.parentElement;if(ce)ce.innerHTML=ur(H);oe("\u8C46\u74E3\u5DF2\u6536\u5F55\u8FD9\u4E00\u90E8\uFF0C\u6682\u65E0\u8BC4\u5206\uFF08\u5C1A\u672A\u5F00\u5206\uFF09",{tone:"warn"});return}v.textContent="\u8C46\u74E3 ?";const W=!!(H&&H.miss);v.title=W?"\u8C46\u74E3\u6CA1\u6709\u8FD9\u4E00\u90E8\u7684\u8BC4\u5206\uFF08\u53EF\u518D\u70B9\u4E00\u6B21\u91CD\u8BD5\uFF09":"\u6CA1\u67E5\u5230\u8C46\u74E3\u8BC4\u5206\uFF08\u53EF\u518D\u70B9\u4E00\u6B21\u91CD\u8BD5\uFF09";oe(W?"\u8C46\u74E3\u6CA1\u6709\u8FD9\u4E00\u90E8\u7684\u8BC4\u5206":"\u6CA1\u67E5\u5230\u8C46\u74E3\u8BC4\u5206\uFF1A\u989D\u5EA6\u7528\u5C3D\u6216\u88AB\u98CE\u63A7\u65F6\u4F1A\u67E5\u4E0D\u52A8\uFF08\u72B6\u6001\u89C1\u8BBE\u7F6E \u2192\u300C\u5F71\u89C6\u4FE1\u606F\u300D\uFF09",{tone:W?"warn":"error"})},{force:true})})}o(af,"bindRatingFetch");async function Ec(u,m){let v=m;if(d){try{v=await d(u,m)||m}catch(I){v=m}}if(v)window.open(v,"_blank","noopener,noreferrer")}o(Ec,"openItem");function sf(u){const m=g?g(u):u.avcode||"";return m||a(u)||""}o(sf,"copyTextOf");function lf(u,m){const v=typeof s==="function"?s(u):m;const I=g?g(u):u.avcode||"";return`${v}\uFF08\u53CC\u51FB\u590D\u5236${I?"\u756A\u53F7":""}\uFF09`}o(lf,"titleHintOf");function uf(u,m){if(!(u&&u.tagName==="IMG"&&(m==null?void 0:m.cover)))return;const v=u.src||m.cover;if(!P){Fo(v);return}Fo();const I=Promise.resolve(P(m)).catch(()=>"");const N=new Promise(H=>setTimeout(()=>H(""),Th));Promise.race([I,N]).then(H=>Bo(H||v));I.then(H=>{if(H)Bo(H)})}o(uf,"openCoverPreview");function df(u,m){u.querySelectorAll(".vc-card-status-btn").forEach(v=>{v.addEventListener("click",I=>{I.stopPropagation();Ft(u,m,v.dataset.vcSet)})})}o(df,"bindStatusButtons");function ff(u){const m=u.querySelector(".vc-card-copy");if(!m)return;m.addEventListener("click",v=>{v.stopPropagation();_c(u,m.dataset.vcAvcode||"")})}o(ff,"bindCopyButton");const pf=250;function mf(u,m,v,I){const N=u.querySelector(".vc-card-title");if(!N)return;const H=sf(m);if(!H)return;let W=null;N.addEventListener("click",ce=>{if(I(ce))return;ce.stopPropagation();if(W)return;W=setTimeout(()=>{W=null;Ec(m,v)},pf)});N.addEventListener("dblclick",ce=>{ce.stopPropagation();if(W){clearTimeout(W);W=null}const re=window.getSelection();if(re)re.removeAllRanges();_c(u,H)})}o(mf,"bindTitleDblClick");function _c(u,m){if(!qc(m))return;const v=u.querySelector(".vc-card-copy");if(!v){oe("\u5DF2\u590D\u5236\uFF1A"+m,{tone:"ok"});return}v.textContent="\u2705";clearTimeout(v._copyTimer);v._copyTimer=setTimeout(()=>{v.textContent="\u{1F4CB}"},zc)}o(_c,"copyAndFeedback");function vf(u,m,v){const I=v==="history"?"\u786E\u5B9A\u5220\u9664\u8FD9\u6761\u89C2\u770B\u8BB0\u5F55\u5417\uFF1F":"\u786E\u5B9A\u5220\u9664\u8FD9\u6761\u6536\u85CF\u5417\uFF1F";u.querySelector(".vc-card-delete-btn").addEventListener("click",N=>{N.stopPropagation();Lt(I,{danger:true}).then(H=>{if(H)vt(u,m,v)})})}o(vf,"bindDeleteButton");function kc(u,m,v){const I=u.querySelector(".vc-card-check");const N=v!==void 0?v:!O.has(m);if(N){O.add(m);u.classList.add("vc-selected");if(I)I.checked=true}else{O.delete(m);u.classList.remove("vc-selected");if(I)I.checked=false}To()}o(kc,"toggleCardSelected");function hf(){Te=true;O.clear();j.querySelector(".vc-panel").classList.add("vc-batch-mode");j.querySelector("#vc-batch-bar").style.display="";Tc(true);t.renderedTabs.clear();_e();se()}o(hf,"enterBatchMode");function en(){Te=false;O.clear();j.querySelector(".vc-panel").classList.remove("vc-batch-mode");j.querySelector("#vc-batch-bar").style.display="none";j.querySelector("#vc-batch-selectall").checked=false;Tc(false);t.renderedTabs.clear();se()}o(en,"exitBatchMode");function Tc(u){const m=j.querySelector("#vc-batch-toggle");const v=u?"\u9000\u51FA\u6279\u91CF":"\u6279\u91CF\u9009\u62E9";m.title=v;m.setAttribute("aria-label",v);m.setAttribute("aria-pressed",u?"true":"false")}o(Tc,"setBatchToggleLabel");function To(){const u=t.currentTab;const m=j.querySelector(`#vc-grid-${u}`);const v=m?m.querySelectorAll(".vc-card"):[];const I=v.length;let N=0;v.forEach(W=>{if(O.has(W.dataset.vcId))N++});j.querySelector("#vc-batch-count").textContent=`\u5DF2\u9009 ${O.size} \u6761`;j.querySelector("#vc-batch-selectall").checked=I>0&&N===I;const H=O.size>0;j.querySelector("#vc-batch-delete").disabled=!H;j.querySelector("#vc-batch-move-want").disabled=!H||u==="want";j.querySelector("#vc-batch-move-watched").disabled=!H||u==="watched"}o(To,"updateBatchUI");function Ao(){const u=r();const m=Qe(u[t.currentTab]||[]);const v=m.length;const I=Math.max(1,Math.ceil(v/n));const N=t.currentPage[t.currentTab];const H=lt[t.currentTab]||"";j.querySelector("#vc-count-info").textContent=`\u5171 ${v} \u6761${H}`;j.querySelector("#vc-page-info").textContent=`${N} / ${I}`;j.querySelector("#vc-first").disabled=N<=1;j.querySelector("#vc-prev").disabled=N<=1;j.querySelector("#vc-next").disabled=N>=I;j.querySelector("#vc-last").disabled=N>=I}o(Ao,"updatePagination");function gf(){if(Me||j&&j.classList.contains("vc-show"))return;if(!j)G();Me=true;be(false);const u=j.querySelector(".vc-panel");u.classList.toggle("vc-panel-light",rd());Co();j.classList.remove("vc-scrim-out");j.classList.add("vc-show");j.classList.add("vc-scrim-in");u.classList.add("vc-genie-hidden");const m=u.getBoundingClientRect();const v=typeof Ee==="function"?Ee():null;if(v)Ze=v;if(typeof pe==="function")pe(true);rc({panelRect:m,buttonRect:Ze,reverse:true,...ad(u),onDone(){_e();E=true;se();j.querySelector(".vc-panel").classList.remove("vc-genie-hidden");j.classList.remove("vc-scrim-in");Me=false}})}o(gf,"openPanel");function Lo(){if(Me||!j||!j.classList.contains("vc-show"))return;Me=true;if(Te)en();be(false);const u=j.querySelector(".vc-panel");const m=u.getBoundingClientRect();const v=ad(u);u.classList.add("vc-genie-hidden");j.classList.remove("vc-scrim-in");j.classList.add("vc-scrim-out");j.style.zIndex="99997";rc({panelRect:m,buttonRect:Ze,reverse:false,...v,canvasZ:99998,onHandoff(){if(typeof pe==="function")pe(false)},onDone(){j.classList.remove("vc-show");j.classList.remove("vc-scrim-out");j.querySelector(".vc-panel").classList.remove("vc-genie-hidden");j.style.zIndex="";if(typeof pe==="function")pe(false);Me=false}})}o(Lo,"closePanel");function Co(){if(!j)return;const u=j.querySelector(".vc-panel");if(u)u.classList.toggle("vc-cover-fit-off",typeof p==="function"&&!p())}o(Co,"applyCoverFit");function bf(){return j}o(bf,"getPanelEl");function yf(){return!!j&&j.classList.contains("vc-show")}o(yf,"isPanelOpen");function xf(){const u=j&&j.querySelector(".vc-search");return u?u.value.trim():""}o(xf,"getSearchKeyword");return{createPanel:G,openPanel:gf,closePanel:Lo,renderActiveList:se,getPanelEl:bf,isPanelOpen:yf,applyCoverFit:Co,getSearchKeyword:xf}} o(sd,"createPanelController"); var Ah=5; function ld(e,t,n){const{size:r,getPos:i,setPos:c,layout:a,onStart:s,onEnd:l}=n;let d=false,f=false,k=null;let g=0,_=0,b=0,q=0;let x=null,F=0,h=0;function M(T){if(d)return;if(T.pointerType==="mouse"&&T.button!==0)return;const R=a(i());d=true;f=false;k=T.pointerId;g=T.clientX;_=T.clientY;b=T.clientX-R.left;q=T.clientY-R.top;F=R.left;h=R.top;t.classList.add("vc-fab-dragging");t.style.left=R.left+"px";t.style.top=R.top+"px";if(s)s();window.addEventListener("pointermove",D);window.addEventListener("pointerup",$);window.addEventListener("pointercancel",$);T.preventDefault()}o(M,"onDown");function D(T){if(!d||k!==null&&T.pointerId!==k)return;const R=T.clientX-g;const z=T.clientY-_;if(!f&&Math.abs(R)+Math.abs(z){x=null;t.style.left=F+"px";t.style.top=h+"px"})}}o(D,"onMove");function $(){if(!d)return;d=false;k=null;window.removeEventListener("pointermove",D);window.removeEventListener("pointerup",$);window.removeEventListener("pointercancel",$);if(x!==null){cancelAnimationFrame(x);x=null}t.style.left=F+"px";t.style.top=h+"px";t.classList.remove("vc-fab-dragging");if(f){const T=document.documentElement.clientWidth||window.innerWidth;const R=F+r/2;c({side:Rd,"isDragging")}} o(ld,"initSnapDrag"); function ud(e,t,n){let r=false,i=false,c,a,s,l;let d=0,f=0,k=null,g=0,_=0;function b(x){if(!r)return;const F=x.clientX-c,h=x.clientY-a;if(Math.abs(F)>3||Math.abs(h)>3)i=true;g=Math.max(0,Math.min(window.innerWidth-d,s-F));_=Math.max(0,Math.min(window.innerHeight-f,l+h));if(k===null){k=requestAnimationFrame(()=>{k=null;t.style.right=g+"px";t.style.top=_+"px"})}}o(b,"onMove");function q(){if(!r)return;r=false;document.removeEventListener("mousemove",b);document.removeEventListener("mouseup",q);document.body.style.cursor="";if(k!==null){cancelAnimationFrame(k);k=null;t.style.right=g+"px";t.style.top=_+"px"}t.classList.remove("vc-dragging");GM_setValue(n(),{right:parseFloat(t.style.right)||0,top:parseFloat(t.style.top)||0})}o(q,"onUp");e.addEventListener("mousedown",x=>{if(!t)return;r=true;i=false;c=x.clientX;a=x.clientY;s=parseFloat(t.style.right)||0;l=parseFloat(t.style.top)||0;d=t.offsetWidth;f=t.offsetHeight;t.classList.add("vc-dragging");document.body.style.cursor="grabbing";document.addEventListener("mousemove",b);document.addEventListener("mouseup",q);x.preventDefault()});e.addEventListener("click",x=>{if(i){x.preventDefault();x.stopPropagation();i=false}},true)} o(ud,"initXjumpDrag"); var Rt=48; var Lh=38; var Ch=9; var oc=9; var Dt=14; var Mh=26; var wx=Dt+Rt-Mh; var gn=12; var Ih=Hc; var ic=Uc; var Ph={side:"right",top:280}; var ar={starOutline:'',starSolid:'',check:'',list:'',search:''}; var Oh=o((e,t,n)=>en?n:e,"clamp"); function dd(e){const{positionKeyFn:t,legacyPositionKeysFn:n,onWant:r,onWatched:i,onOpenPanel:c,onTogglePanel:a,onPrimaryClick:s,getPrimaryStateFn:l,getPrimaryIntentFn:d,isDetailPageFn:f,updateButtonStateFn:k,onVisibilityChange:g,onWebSearch:_}=e;let b,q,x,F,h,M,D,$,T;let R=null;let z=false,B=false,A=false,w=false;let y=false;let C=-1,S=-1;let p=null,P=false,U=null;let ne="";const ie=!!(window.matchMedia&&window.matchMedia("(hover: hover) and (pointer: fine)").matches);function Ee(){return document.documentElement.clientWidth||window.innerWidth}o(Ee,"viewportWidth");function pe(L){const X=Ee();const Y=window.innerHeight;const ee=Math.max(Dt,Y-Dt-Rt);const Ae=Oh(L.top,Dt,ee);const se=L.side==="right"?Math.max(Dt,X-Dt-Rt):Dt;return{left:se,top:Ae}}o(pe,"layoutOf");function st(){if(!h)return 0;return Array.prototype.filter.call(h.children,L=>!L.hidden).length}o(st,"visibleSubCount");function Xe(){const L=st();if(!L)return 0;return L*Lh+(L-1)*Ch+oc}o(Xe,"subsHeight");function Ne(L){return!!L&&(L.side==="left"||L.side==="right")&&typeof L.top==="number"&&isFinite(L.top)}o(Ne,"isPos");function Je(L){if(!L)return null;const X=window.innerHeight;if((L.side==="left"||L.side==="right")&&typeof L.y==="number"&&isFinite(L.y)){return{side:L.side,top:Math.round(L.y*X)}}if(typeof L.right==="number"&&typeof L.bottom==="number"){const Y=Ee();return{side:L.right<=Y-L.right?"right":"left",top:Math.round(X-L.bottom-Rt)}}return null}o(Je,"convertLegacy");function Ce(){const L=GM_getValue(t(),null);if(Ne(L))return{side:L.side,top:L.top};const X=n?n():[];for(const Y of X){const ee=Je(GM_getValue(Y,null));if(ee){GM_setValue(t(),ee);return ee}}return{...Ph}}o(Ce,"loadPos");function lt(L){R={side:L.side,top:Math.round(L.top)};GM_setValue(t(),R)}o(lt,"savePos");function j(L){const{left:X,top:Y}=pe(R);if(!L)b.style.transition="none";b.style.left=X+"px";b.style.top=Y+"px";if(!L){void b.offsetWidth;b.style.transition=""}b.dataset.vcSide=R.side;b.dataset.vcDir=Y>=Xe()+Dt?"up":"down"}o(j,"applyPosition");function Te(L,X){if(L<0||X<0)return false;const{left:Y,top:ee}=pe(R);let Ae=ee-gn;let se=ee+Rt+gn;let ve=Y-gn;let Z=Y+Rt+gn;if(B){const ye=Xe();if(b.dataset.vcDir==="up")Ae=Math.min(Ae,ee-oc-ye-gn);else se=Math.max(se,ee+Rt+oc+ye+gn)}if(R.side==="right")Z=window.innerWidth;else ve=0;return L>=ve&&L<=Z&&X>=Ae&&X<=se}o(Te,"inHotZone");function Me(){const L=document.activeElement;if(!L||!b.contains(L))return false;try{return L.matches(":focus-visible")}catch(X){return false}}o(Me,"focusInside");function Ze(L){clearTimeout(p);if(L>0)p=setTimeout(E,L);else E()}o(Ze,"schedule");function E(){const L=A||w||Me();const X=ie?y:f();const Y=X&&!L;O(Y);K(ie&&!L&&!Y&&!y)}o(E,"render");function O(L){if(B===L)return;B=L;b.classList.toggle("vc-fab-open",L);x.setAttribute("aria-expanded",String(L))}o(O,"setSubsOpen");function K(L){if(z===L)return;z=L;b.classList.toggle("vc-peek",L)}o(K,"setPeeked");function G(){if(!x)return;const L=f();const X=L?l()||"none":"none";x.dataset.vcState=X;const Y=typeof d==="function"?d()||"":"";const ee=!L?"list":X==="watched"?"check":X==="want"?"starSolid":Y==="watched"?"check":"starOutline";if(ee!==ne){ne=ee;F.innerHTML=ar[ee]}const Ae=!L?"\u6536\u85CF\u5217\u8868":X==="watched"?"\u5DF2\u770B\uFF0C\u70B9\u51FB\u53D6\u6D88":X==="want"?"\u60F3\u770B\uFF0C\u70B9\u51FB\u53D6\u6D88":Y==="watched"?"\u70B9\u51FB\u6807\u4E3A\u5DF2\u770B":"\u70B9\u51FB\u6807\u4E3A\u60F3\u770B";x.title=Ae;x.setAttribute("aria-label",Ae)}o(G,"refreshPrimary");function ae(){x.classList.remove("vc-fab-pop","vc-fab-ripple");void x.offsetWidth;x.classList.add("vc-fab-pop","vc-fab-ripple");clearTimeout(U);U=setTimeout(()=>x.classList.remove("vc-fab-pop","vc-fab-ripple"),600)}o(ae,"pulse");function le(){b=document.createElement("div");b.className="vc-fab-zone";b.dataset.vcSide="right";b.dataset.vcDir="up";q=document.createElement("div");q.className="vc-fab-inner";h=document.createElement("div");h.className="vc-fab-subs";h.setAttribute("role","menu");if(typeof _==="function")T=te("search",ar.search,"\u5168\u7F51\u641C\u7D22");M=te("want",ar.starOutline,Wt.want);D=te("watched",ar.check,Wt.watched);$=te("list",ar.list,"\u6536\u85CF\u5217\u8868");if(T)h.appendChild(T);h.appendChild(M);h.appendChild(D);h.appendChild($);x=document.createElement("button");x.className="vc-fab";x.type="button";x.dataset.vcState="none";x.setAttribute("aria-expanded","false");F=document.createElement("span");F.className="vc-fab-scale";x.appendChild(F);q.appendChild(h);q.appendChild(x);b.appendChild(q)}o(le,"build");function te(L,X,Y){const ee=document.createElement("button");ee.type="button";ee.className="vc-fab-sub vc-btn-"+L;ee.dataset.vcAct=L;ee.dataset.vcTip=Y;ee.setAttribute("aria-label",Y);ee.innerHTML=X;return ee}o(te,"makeSub");function me(L){if(!b)return;w=!!L;b.classList.toggle("vc-fab-dim",w);E()}o(me,"setPanelOpen");function fe(){R=Ce();le();j(false);document.body.appendChild(b);St(b,document.body);if(k)k();G();ld(x,b,{size:Rt,getPos:o(()=>R,"getPos"),setPos:lt,layout:pe,onStart(){A=true;P=false;K(false);O(false)},onEnd(L){A=false;if(L){P=true;j(true)}y=Te(C,S);Ze(L?0:ic)}});x.addEventListener("click",()=>{if(P){P=false;return}if(w){if(a)a();return}if(s)s();ae()});h.addEventListener("click",L=>{const X=L.target.closest?L.target.closest(".vc-fab-sub"):null;if(!X)return;const Y=X.dataset.vcAct;if(Y==="want"&&r)r();else if(Y==="watched"&&i)i();else if(Y==="list"&&c)c();else if(Y==="search"&&_)_();ae()});if(ie){document.addEventListener("pointermove",L=>{C=L.clientX;S=L.clientY;if(A)return;const X=Te(L.clientX,L.clientY);if(X===y)return;y=X;Ze(X?Ih:ic)},{passive:true});document.addEventListener("pointerleave",()=>{if(!y)return;y=false;Ze(ic)})}document.addEventListener("visibilitychange",()=>{if(document.hidden)return;if(k)k();R=Ce();j(false);G();E();if(g)g()});window.addEventListener("resize",()=>{if(A)return;j(false)});be();E()}o(fe,"create");function be(){if(!b)return;const L=f();h.hidden=!L&&typeof _!=="function";M.hidden=!L;D.hidden=!L;$.hidden=!L;if(T)T.hidden=false;j(false);G();E()}o(be,"updateVisibility");return{create:fe,updateVisibility:be,setPanelOpen:me,refreshPrimary:G,getOriginRect:o(()=>b?b.getBoundingClientRect():null,"getOriginRect"),getWantBtn:o(()=>M,"getWantBtn"),getWatchedBtn:o(()=>D,"getWatchedBtn")}} o(dd,"createFloatButtonGroup"); function fd(e){const{getSiteFn:t,buildItemFn:n,getIdFn:r,isFavoritedFn:i,buildFavIndexFn:c,toggleFavoriteFn:a,refreshItemFn:s,afterToggleFn:l,afterInjectFn:d}=e;let f=null;let k=null;let g=false;const _=new WeakMap;const b=28;function q(){x();[500,1500,3e3].forEach(T=>setTimeout(x,T));if(!f){f=new MutationObserver(()=>{if(k)return;k=setTimeout(()=>{k=null;x()},150)});f.observe(document.body,{childList:true,subtree:true})}if(!g){g=true;document.addEventListener("mouseover",T=>{const R=t();if(!R||!R.listCardSelector)return;const z=T.target.closest(R.listCardSelector);if(!z)return;const B=z.querySelector(".vc-status");if(!B){x();return}M(z,B,R)})}}o(q,"inject");function x(){const T=t();if(!T||!T.getListCards)return;const R=T.getListCards();const z=[];R.forEach(B=>{const{element:A}=B;if(!A)return;const w=A.querySelector(".vc-status");if(w){if(T.statusOffset)M(A,w,T);return}const y=n(B,T);if(!y)return;z.push({element:A,item:y})});if(z.length){const B=c?c(z.map(A=>r(A.item))):null;z.forEach(({element:A,item:w})=>{if(getComputedStyle(A).position==="static"){A.style.position="relative"}A.classList.add("vc-fav-host");const y=F(w,B);A.appendChild(y);M(A,y,T)})}if(z.length)$();if(d)d(R)}o(x,"injectCards");function F(T,R){const z=document.createElement("div");z.className="vc-status";z.dataset.vcId=r(T);vo.forEach(B=>{const A=document.createElement("button");A.type="button";A.className="vc-status-btn";A.dataset.vcSet=B.set;A.title=B.label;A.textContent=B.icon;A.addEventListener("click",w=>{w.preventDefault();w.stopPropagation();if(s)s(T,t(),A);a(T,B.set);$();if(l)l()});z.appendChild(A)});h(z,D(r(T),R));return z}o(F,"makeStatus");function h(T,R){T.dataset.vcStatus=R||"none";T.classList.toggle("vc-status--pinned",!!R)}o(h,"applyStatus");function M(T,R,z){if(typeof z.statusOffset!=="function")return;let B=null;try{B=z.statusOffset(T,R)}catch(S){B=null}if(B&&B.top==null&&B.left==null){_.delete(R);R.style.top="";R.style.left="";return}const A=_.get(R);let w=A?A.top:null;let y=A?A.left:null;if(B&&B.top!=null&&(w==null||B.top>w))w=B.top;if(B&&B.left!=null)y=B.left;if(w==null&&y==null)return;let C=0;try{C=(T.getBoundingClientRect()||{}).height||0}catch(S){C=0}if(C&&w!=null)w=Math.min(w,Math.max(0,C-b));_.set(R,{top:w,left:y});R.style.top=w!=null?w+"px":"";R.style.left=y!=null?y+"px":""}o(M,"applyStatusOffset");function D(T,R){if(R)return R.get(T)||"";if(i(T,"want"))return"want";if(i(T,"watched"))return"watched";return""}o(D,"statusOf");function $(){const T=document.querySelectorAll(".vc-status[data-vc-id]");const R=[];T.forEach(B=>{if(B.dataset.vcId&&R.indexOf(B.dataset.vcId)===-1)R.push(B.dataset.vcId)});const z=c?c(R):null;T.forEach(B=>{const A=B.dataset.vcId;if(A)h(B,D(A,z))})}o($,"refreshAll");return{inject:q,refreshAll:$}} o(fd,"createMiniButtonInjector"); function pd(e){const{getSiteFn:t,getKeywordFn:n,getPositionKeyFn:r,getAllSitesFn:i,pickDomainFn:c,findAliveDomainFn:a,siteIdField:s}=e;let l=null;let d=null;let f=null;function k(){if(!l)return;const x=l.offsetWidth;const F=l.offsetHeight;if(!x||!F)return;let h=parseFloat(l.style.right)||0;let M=parseFloat(l.style.top)||0;h=Math.max(0,Math.min(h,window.innerWidth-x));M=Math.max(0,Math.min(M,window.innerHeight-F));l.style.right=h+"px";l.style.top=M+"px";const D=GM_getValue(r(),null);if(D&&D.right===h&&D.top===M)return;GM_setValue(r(),{right:h,top:M})}o(k,"clampInViewport");if(!window.__vcXjumpResizeBound){window.__vcXjumpResizeBound=true;window.addEventListener("resize",()=>{clearTimeout(d);d=setTimeout(k,200)})}function g(x,F,h){const M=window.open(h,"_blank");if(M)M.opener=null;if(typeof a!=="function")return;Promise.resolve(a(x)).then(D=>{if(!D)return;const $="https://"+D+x.searchPath(F);if(M&&$!==h)M.location=$}).catch(()=>{})}o(g,"openTarget");function _(x,F){const h="https://"+c(x)+x.searchPath(F);const M=document.createElement("button");M.type="button";M.className="vc-xjump-btn";M.textContent=x.name;M.dataset.vcHref=h;M.addEventListener("mouseenter",()=>{if(typeof a!=="function")return;Promise.resolve(a(x)).catch(()=>{})},{once:true});M.addEventListener("click",()=>g(x,F,h));M.addEventListener("mousedown",D=>{if(D.button===1)D.preventDefault()});M.addEventListener("auxclick",D=>{if(D.button===1)g(x,F,h)});return M}o(_,"createEntry");function b(){const x=t();if(!x)return;const F=n();if(!F)return;if(l&&l.dataset.vcKeyword===F)return;if(l){if(f){f();f=null}l.remove()}l=document.createElement("div");l.className="vc-xjump";l.dataset.vcKeyword=F;const h=GM_getValue(r(),null);if(h){l.style.right=h.right+"px";l.style.top=h.top+"px"}else{l.style.right="16px";l.style.top="16px"}const M=document.createElement("button");M.className="vc-xjump-toggle";M.innerHTML='\u{1F517}\u8DE8\u7AD9\u76F4\u8FBE';const D=document.createElement("div");D.className="vc-xjump-menu";const $=ue(location.hostname);i().filter(z=>z[s]!==x[s]&&z.crossSiteTarget!==false).filter(z=>!(z.domains||[]).some(B=>ue(B)===$)).forEach(z=>D.appendChild(_(z,F)));l.appendChild(M);l.appendChild(D);document.body.appendChild(l);f=St(l,document.body);ud(M,l,r);k();const T=l;let R=null;T.addEventListener("mouseenter",()=>{if(T.classList.contains("vc-dragging"))return;if(R){clearTimeout(R);R=null}T.classList.add("vc-show");requestAnimationFrame(()=>{const z=M.getBoundingClientRect();const B=window.innerHeight-z.bottom;const A=D.offsetHeight;T.classList.toggle("vc-up",B{if(T.classList.contains("vc-dragging"))return;if(R)clearTimeout(R);R=setTimeout(()=>T.classList.remove("vc-show"),150)})}o(b,"inject");function q(){return l}o(q,"getXjumpEl");return{inject:b,getXjumpEl:q}} o(pd,"createCrossSiteJump"); function md(e,t){if(!e)return;e.querySelectorAll(".vc-settings-seg-btn").forEach(n=>{n.addEventListener("click",()=>{e.querySelectorAll(".vc-settings-seg-btn").forEach(r=>r.classList.remove("vc-active"));n.classList.add("vc-active");t(n.dataset.vcVal)})})} o(md,"bindSeg"); function Xt(e,t){return`
${e}
${t}
`} o(Xt,"section"); function bn(e,t,n,r=""){return` `} o(bn,"switchItem"); function Rh(e,t){if(!e)return;e.querySelectorAll(".vc-settings-seg-btn").forEach(n=>{n.classList.toggle("vc-active",n.dataset.vcVal===t)})} o(Rh,"syncSeg"); function vd(e={}){const{coverFit:t,translatedTitle:n,rating:r,usage:i,engine:c,volume:a}=e;let s=null;let l=null;function d(){if(!s)M();clearTimeout(l);s.removeEventListener("animationend",k);s.classList.remove("vc-closing");g();s.classList.add("vc-show")}o(d,"open");function f(){if(!s||!s.classList.contains("vc-show"))return;s.classList.add("vc-closing");s.addEventListener("animationend",k);l=setTimeout(k,6e4)}o(f,"close");function k(S){if(!s)return;const p=S&&S.animationName;if(p&&p!=="vcSettingsOut"&&p!=="vcScrimOut")return;clearTimeout(l);s.removeEventListener("animationend",k);s.classList.remove("vc-show");s.classList.remove("vc-closing")}o(k,"onExitEnd");function g(){s.querySelector("#vc-settings-adblock").checked=Ur();s.querySelector("#vc-settings-fav-mark").checked=je("favMark");F("favPeekOpacity","favSize","vc-settings-fav-opacity","vc-settings-fav-size");F("xjumpOpacity","xjumpSize","vc-settings-xjump-opacity","vc-settings-xjump-size");h();if(t)s.querySelector("#vc-settings-cover-fit").checked=t.get();if(n)s.querySelector("#vc-settings-translated-title").checked=n.get();if(c)x();if(r){b();q()}_()}o(g,"syncControls");function _(){if(!i)return;const S=s.querySelector("#vc-settings-storage-usage");const p=s.querySelector("#vc-settings-storage-parts");if(!S)return;const P=i()||{};const U=Math.round((P.budget||0)/1024/1024);if(!P.total){S.textContent=U?"\u5DF2\u7528 0.00MB / "+U+"MB":"";if(p)p.textContent="";return}S.textContent="\u5DF2\u7528 "+Ue(P.total)+" / "+U+"MB"+(P.total>P.budget?"\uFF08\u8D85\u9650\u4F1A\u81EA\u52A8\u56DE\u6536\u8BC4\u5206\u7F13\u5B58\uFF09":"");if(p){const ne=P.parts||{};const ie=Object.keys(ne);p.textContent="";if(ie.length>1){ie.forEach(Ee=>{const pe=document.createElement("span");pe.className="vc-settings-storage-part";pe.textContent=Ee+" "+Ue(ne[Ee]);p.appendChild(pe)})}}}o(_,"syncStorageUsage");function b(){const S=s.querySelector("#vc-settings-rating-clear-desc");const p=s.querySelector("#vc-settings-rating-remote");if(!S||!p)return;S.textContent=p.checked?"\u6E05\u9664\u540E\u4E0B\u6B21\u6253\u5F00\u6536\u85CF\u9762\u677F\u4F1A\u91CD\u65B0\u67E5\u8BE2":"\u6E05\u9664\u540E\u4E0D\u4F1A\u81EA\u52A8\u67E5\u8BE2\uFF0C\u6D4F\u89C8\u5230\u8BE5\u5267\u9875\u9762\u65F6\u8BFB\u56DE"}o(b,"syncRatingClearDesc");function q(){const S=s.querySelector("#vc-settings-rating-status");if(!S||!r||typeof r.status!=="function")return;const p=r.status();if(!p){S.textContent="";return}let P;if(p.pausedSec<0){P="\u8C46\u74E3\u5DF2\u62E6\u4E0B\u672C\u673A\u67E5\u8BE2\uFF0C\u5237\u65B0\u9875\u9762\u540E\u81EA\u52A8\u91CD\u8BD5"}else if(p.pausedSec>0){P="\u8C46\u74E3\u63A5\u53E3\u6682\u65F6\u4E0D\u53EF\u7528\uFF0C"+p.pausedSec+" \u79D2\u540E\u81EA\u52A8\u7EE7\u7EED"}else if(p.sessionLeft<=0){P="\u672C\u6B21\u4F1A\u8BDD\u5DF2\u53D1\u6EE1 "+p.sessionMax+" \u6B21\u8BF7\u6C42\uFF0C\u5237\u65B0\u9875\u9762\u540E\u63A5\u7740\u67E5"}else if(p.windowLeft<=0){P="\u8FD1 "+p.windowMinutes+" \u5206\u949F\u5DF2\u53D1\u6EE1 "+p.windowMax+" \u6B21\u8BF7\u6C42\uFF0C\u7A0D\u540E\u81EA\u52A8\u63A5\u7740\u67E5"}else{P="\u5269\u4F59\u989D\u5EA6\uFF1A\u672C\u6B21 "+p.sessionLeft+"/"+p.sessionMax+"\uFF0C\u8FD1 "+p.windowMinutes+" \u5206\u949F "+p.windowLeft+"/"+p.windowMax}if(p.cached)P+="\uFF1B\u5DF2\u8BB0 "+p.scored+" \u90E8\uFF08\u5171 "+p.cached+" \u6761\uFF09";S.textContent=P}o(q,"syncRatingStatus");function x(){const S=s.querySelector("#vc-settings-engine-on");if(!S)return;S.checked=c.get()!==false}o(x,"syncEngineSection");function F(S,p,P,U){const ne=s.querySelector("#"+P);const ie=s.querySelector("."+P+"-val");const Ee=s.querySelector("#"+U);const pe=je(S);if(ne)ne.value=pe;if(ie)ie.textContent=pe+"%";Rh(Ee,je(p))}o(F,"syncSettingGroup");function h(){const S=s.querySelector("#vc-settings-volume");const p=s.querySelector(".vc-settings-volume-val");const P=Math.round(Number(je("volume"))||0);if(S)S.value=P;if(p)p.textContent=P+"%"}o(h,"syncVolume");function M(){s=document.createElement("div");s.className="vc-settings-mask";s.innerHTML=D();document.body.appendChild(s);St(s,document.body);y()}o(M,"build");function D(){const S=[Xt("\u6D4F\u89C8\u4E0E\u64AD\u653E",bn("vc-settings-adblock","\u9690\u85CF\u5E7F\u544A","\u5C4F\u853D\u5404\u7AD9\u70B9\u5E7F\u544A")+(a?z():""))];if(r)S.push(Xt("\u5F71\u89C6\u4FE1\u606F",R()));if(c)S.push(Xt("\u901A\u7528\u7AD9\u70B9",T()));S.push(Xt("\u5361\u7247\u663E\u793A",$()));S.push(Xt("\u6536\u85CF\u6309\u94AE",B()));S.push(Xt("\u8DE8\u7AD9\u76F4\u8FBE",A()));if(i)S.push(Xt("\u5B58\u50A8",w()));return` `}o(D,"panelTemplate");function $(){let S="";if(t)S+=bn("vc-settings-cover-fit","\u5C01\u9762\u667A\u80FD\u53D6\u666F","\u6A2A\u7248\u5927\u56FE\u81EA\u52A8\u4F18\u5316\u53D6\u666F");if(n)S+=bn("vc-settings-translated-title","\u4F18\u5148\u663E\u793A\u7FFB\u8BD1\u6807\u9898","\u6709\u8BD1\u6587\u65F6\u4F18\u5148\u663E\u793A\u8BD1\u6587");return S+bn("vc-settings-fav-mark","\u5217\u8868\u9875\u6807\u8BB0\u5DF2\u6536\u85CF","\u5DF2\u6536\u85CF\u7684\u5361\u7247\u4E0A\u5E38\u663E\u60F3\u770B / \u5DF2\u770B")}o($,"cardDisplaySection");function T(){return bn("vc-settings-engine-on","\u901A\u7528\u7AD9\u70B9\u652F\u6301","\u5728\u672A\u9002\u914D\u7684\u5F71\u89C6\u7AD9\u4E5F\u542F\u7528\u6536\u85CF\u4E0E\u89C2\u770B\u8BB0\u5F55")}o(T,"engineSection");function R(){return bn("vc-settings-rating-remote","\u5141\u8BB8\u8054\u7F51\u67E5\u8BE2\u8C46\u74E3","\u5173\u6389\u540E\u4E0D\u518D\u8054\u7F51\u67E5\u8BE2\u8BC4\u5206\uFF0C\u5DF2\u7ECF\u62FF\u5230\u7684\u5206\u7167\u5E38\u663E\u793A",'')+`
\u8C46\u74E3\u8BC4\u5206\u7F13\u5B58
`}o(R,"ratingSection");function z(){return`
\u64AD\u653E\u97F3\u91CF \u5404\u7AD9\u70B9\u7EDF\u4E00\u4F7F\u7528\u8FD9\u4E2A\u97F3\u91CF 100%
`}o(z,"volumeItem");function B(){return`
\u534A\u9690\u85CF\u900F\u660E\u5EA6 \u8D34\u8FB9\u672A\u5C55\u5F00\u65F6\u7684\u6DF1\u6D45 55%
\u6309\u94AE\u5927\u5C0F \u4E3B\u6309\u94AE\u4E0E\u5B50\u6309\u94AE\u4E00\u8D77\u7F29\u653E
`}o(B,"favButtonSection");function A(){return`
\u900F\u660E\u5EA6 \u9F20\u6807\u9760\u8FD1\u65F6\u81EA\u52A8 100% 60%
\u6309\u94AE\u5927\u5C0F \u5C55\u5F00\u540E\u7684\u663E\u793A\u6837\u5F0F
`}o(A,"xjumpSection");function w(){return`
\u5B58\u50A8\u5360\u7528
`}o(w,"storageSection");function y(){s.querySelector(".vc-settings-close").addEventListener("click",f);s.addEventListener("click",S=>{if(S.target===s)f()});document.addEventListener("keydown",S=>{if(S.key==="Escape"&&s.classList.contains("vc-show"))f()});s.querySelector("#vc-settings-adblock").addEventListener("change",S=>{Gs(S.target.checked)});if(t){s.querySelector("#vc-settings-cover-fit").addEventListener("change",S=>{t.set(S.target.checked)})}if(n){s.querySelector("#vc-settings-translated-title").addEventListener("change",S=>{n.set(S.target.checked)})}if(c){s.querySelector("#vc-settings-engine-on").addEventListener("change",S=>{c.set(S.target.checked)})}C("vc-settings-volume","vc-settings-volume-val",$s);C("vc-settings-fav-opacity","vc-settings-fav-opacity-val",Ds);s.querySelector("#vc-settings-fav-mark").addEventListener("change",S=>{qs(S.target.checked)});if(r){const S=s.querySelector("#vc-settings-rating-remote");if(S){if(typeof r.get==="function")S.checked=r.get()!==false;S.addEventListener("change",p=>{if(typeof r.set==="function")r.set(p.target.checked);b();q()})}s.querySelector("#vc-settings-rating-clear").addEventListener("click",async()=>{const p=await r.confirm("\u6E05\u9664\u5168\u90E8\u8BC4\u5206\u7F13\u5B58\uFF1F\n\n\u4F1A\u5220\u6389\u6240\u6709\u5267\u7684\u8BC4\u5206\u8BB0\u5F55\uFF1A\u7AD9\u70B9\u9875\u9762\u8BFB\u5230\u7684\u3001\u8054\u7F51\u67E5\u5230\u7684\u3001\u67E5\u4E0D\u5230\u7684\n\u6536\u85CF\u4E0E\u89C2\u770B\u8BB0\u5F55\u4E0D\u53D7\u5F71\u54CD\uFF0C\u4E4B\u540E\u91CD\u65B0\u67E5\u8BE2",{danger:true});if(!p)return;r.clear();q();oe("\u8BC4\u5206\u7F13\u5B58\u5DF2\u6E05\u9664",{tone:"ok"})})}md(s.querySelector("#vc-settings-fav-size"),Ns);C("vc-settings-xjump-opacity","vc-settings-xjump-opacity-val",Bs);md(s.querySelector("#vc-settings-xjump-size"),js)}o(y,"bindEvents");function C(S,p,P){const U=s.querySelector("#"+S);const ne=s.querySelector("."+p);if(!U)return;U.addEventListener("input",()=>{if(ne)ne.textContent=U.value+"%";P(U.value)})}o(C,"bindRange");return{open:d,close:f}} o(vd,"createSettingsPanel"); function hd(e){const{listTargetsFn:t,resolveUrlFn:n,warmDomainFn:r,setEnabledFn:i}=e;let c=false;let a=null;let s=null;let l=null;let d=null;let f=null;let k=null;let g=[];let _=[];let b=new Set;function q(){a=document.createElement("div");a.className="vc-ws-mask";a.innerHTML=` `;document.body.appendChild(a);s=a.querySelector(".vc-ws-input");l=a.querySelector(".vc-ws-grid");d=a.querySelector(".vc-ws-hint");f=a.querySelector(".vc-ws-btn");k=a.querySelector(".vc-ws-count");a.querySelector(".vc-ws-close").addEventListener("click",A);a.addEventListener("click",y=>{if(y.target===a)A()});document.addEventListener("keydown",y=>{if(y.key==="Escape"&&a.classList.contains("vc-show"))A()});const w=o(()=>{b.clear();R();x()},"syncInput");s.addEventListener("input",w);a.querySelector(".vc-ws-clear").addEventListener("click",()=>{if(!s.value)return;s.value="";w();s.focus()});f.addEventListener("click",z)}o(q,"build");function x(){const w=s.value.trim();_=t(w);l.textContent="";_.filter(C=>!C.fold).forEach(C=>l.appendChild(M(C,w)));const y=_.filter(C=>C.fold);if(y.length)l.appendChild(h(y,w));if(d){d.textContent=w?"\u70B9\u51FB\u7AD9\u70B9\u540D\u76F4\u63A5\u8DF3\u8F6C\uFF08\u4E2D\u952E / Ctrl+\u70B9\u51FB\u53EF\u6279\u91CF\uFF09\uFF1B\u52FE\u9009\u51B3\u5B9A\u300C\u9010\u4E2A\u6253\u5F00\u300D\u7684\u8303\u56F4":"\u8F93\u5165\u5267\u540D\u540E\uFF0C\u70B9\u7AD9\u70B9\u540D\u5373\u53EF\u8DF3\u8F6C\uFF08\u4E2D\u952E / Ctrl+\u70B9\u51FB\u53EF\u6279\u91CF\uFF09"}D()}o(x,"renderTargets");function F(){if(!s)return;s.classList.remove("vc-ws-input-attn");void s.offsetWidth;s.classList.add("vc-ws-input-attn")}o(F,"flashInput");function h(w,y){const C=document.createElement("div");C.className="vc-ws-fold";C.classList.toggle("vc-show",c);const S=document.createElement("button");S.type="button";S.className="vc-ws-fold-toggle";S.setAttribute("aria-expanded",String(c));const p=o(()=>{const ne=w.filter(ie=>ie.enabled).length;S.textContent="\u66F4\u591A\u7AD9\u70B9\uFF08"+w.length+(ne?" \xB7 \u5DF2\u9009 "+ne:"")+"\uFF09"},"syncLabel");p();const P=document.createElement("div");P.className="vc-ws-fold-anim";const U=document.createElement("div");U.className="vc-ws-fold-list";w.forEach(ne=>U.appendChild(M(ne,y)));U.addEventListener("change",p);P.appendChild(U);S.addEventListener("click",()=>{c=!c;C.classList.toggle("vc-show",c);S.setAttribute("aria-expanded",String(c))});C.appendChild(S);C.appendChild(P);return C}o(h,"buildFoldBlock");function M(w,y){const C=document.createElement("div");C.className="vc-ws-item";C.dataset.vcSite=w.id;if(b.has(w.id))C.classList.add("vc-ws-item-visited");if(!y)C.title="\u5148\u8F93\u5165\u5267\u540D\uFF0C\u518D\u70B9\u300C"+w.name+"\u300D\u8DF3\u8F6C\u641C\u7D22";const S=document.createElement("input");S.type="checkbox";S.className="vc-ws-check";S.checked=w.enabled;S.title="\u662F\u5426\u53C2\u4E0E\u300C\u9010\u4E2A\u6253\u5F00\u300D";S.addEventListener("change",()=>{i(w.id,S.checked);w.enabled=S.checked;R();D()});const p=document.createElement("a");p.className="vc-ws-link"+(y?"":" vc-ws-link-off");p.textContent=w.name;p.href=y?w.url:"#";p.target="_blank";p.rel="noopener noreferrer";p.title=y?b.has(w.id)?"\u70B9\u51FB\u53EF\u8DF3\u8F6C\u81F3\u300C"+w.name+"\u300D\u641C\u7D22\uFF08\u5DF2\u6253\u5F00\u8FC7\uFF0C\u53EF\u518D\u6B21\u8DF3\u8F6C\uFF09":"\u70B9\u51FB\u53EF\u8DF3\u8F6C\u81F3\u300C"+w.name+"\u300D\u641C\u7D22":"";if(y){p.addEventListener("mouseenter",()=>{if(p.dataset.vcWarmed)return;p.dataset.vcWarmed="1";r(w.id)},{once:true});p.addEventListener("click",U=>{if(U.button!==0||U.metaKey||U.ctrlKey||U.shiftKey||U.altKey)return;U.preventDefault();$(w.id,s.value.trim())})}else{p.addEventListener("click",U=>U.preventDefault());p.setAttribute("aria-disabled","true");C.classList.add("vc-ws-item-off");C.addEventListener("click",U=>{if(U.target.closest(".vc-ws-check"))return;oe("\u5148\u8F93\u5165\u8981\u641C\u7D22\u7684\u5267\u540D",{tone:"warn"});s.focus();F()})}const P=document.createElement("span");P.className="vc-ws-domain";P.textContent=w.domain;P.title=w.domain;C.appendChild(S);C.appendChild(p);C.appendChild(P);return C}o(M,"buildItem");function D(){const w=Array.from(l.querySelectorAll(".vc-ws-check"));const y=w.filter(S=>S.checked).length;k.textContent=w.length?"\u5DF2\u9009 "+y+" / "+w.length+" \u4E2A\u7AD9\u70B9"+(y?" \xB7 \u6BCF\u70B9\u4E00\u6B21\u5F00\u4E00\u4E2A":""):"\u6CA1\u6709\u53EF\u8DF3\u8F6C\u7684\u7AD9\u70B9";if(g.length){f.textContent="\u7EE7\u7EED\u6253\u5F00\uFF08\u8FD8\u5269 "+g.length+" \u4E2A\uFF09";return}if(!y){f.textContent="\u6253\u5F00\u9009\u4E2D";return}const C=_.filter(S=>S.enabled&&!b.has(S.id)).length;f.textContent=C?"\u9010\u4E2A\u6253\u5F00\uFF08\u8FD8\u5269 "+C+" \u4E2A\uFF09":"\u5DF2\u5168\u90E8\u6253\u5F00"}o(D,"syncCount");function $(w,y){T(w);const C=_.find(P=>P.id===w);const S=C?C.url:"";const p=S?window.open(S,"_blank"):null;if(p)p.opener=null;Promise.resolve(n(w,y)).then(P=>{if(!P)return;if(!p){window.open(P,"_blank");return}if(P!==S)p.location=P}).catch(()=>{})}o($,"jump");function T(w){b.add(w);if(g.length)g=g.filter(S=>S!==w);const y=_.find(S=>S.id===w);const C=y&&Array.prototype.find.call(l.children,S=>S.dataset.vcSite===w);if(C){C.classList.add("vc-ws-item-visited");const S=C.querySelector(".vc-ws-link");if(S)S.title="\u70B9\u51FB\u53EF\u8DF3\u8F6C\u81F3\u300C"+y.name+"\u300D\u641C\u7D22\uFF08\u5DF2\u6253\u5F00\u8FC7\uFF0C\u53EF\u518D\u6B21\u8DF3\u8F6C\uFF09"}D()}o(T,"markVisited");function R(){g=[];D()}o(R,"resetQueue");function z(){const w=s.value.trim();if(!w){oe("\u5148\u8F93\u5165\u8981\u641C\u7D22\u7684\u5267\u540D",{tone:"warn"});return}if(!g.length){g=_.filter(y=>y.enabled&&!b.has(y.id)).map(y=>y.id);if(!g.length){oe(_.some(y=>y.enabled)?"\u52FE\u9009\u7684\u7AD9\u70B9\u90FD\u5DF2\u6253\u5F00\u8FC7":"\u81F3\u5C11\u52FE\u9009\u4E00\u4E2A\u7AD9\u70B9",{tone:"warn"});return}}$(g.shift(),w);D()}o(z,"openNextSelected");function B(w){if(!a)q();s.value=(w||"").trim();b.clear();R();x();a.classList.add("vc-show");s.focus();s.select()}o(B,"open");function A(){if(a)a.classList.remove("vc-show")}o(A,"close");return{open:B,close:A,getMaskEl:o(()=>a,"getMaskEl")}} o(hd,"createWebSearchPanel"); var Dh=10*60*1e3; var Jt=new Map; var ac=new Map; var cc=new Map; var ho=new Map; function sc(e){if(!e)return"";try{return new URL(e).pathname}catch(t){return e}} o(sc,"pathOf"); function Nh(e,t){return e+"|"+sc(t)} o(Nh,"taskKey"); function qh(e,t){if(!t)return true;return ac.get(e)===sc(t)} o(qh,"isFresh"); function go(e,t){if(!e||!qh(e,t))return"";return Jt.get(e)||""} o(go,"getProxiedCover"); function gd(e){const t=Jt.get(e);if(t){try{URL.revokeObjectURL(t)}catch(n){}}Jt.delete(e);ac.delete(e)} o(gd,"release"); function Fh(){while(Jt.size>Gc)gd(Jt.keys().next().value)} o(Fh,"prune"); async function Bh(e){for(const t of e){const n=await Ws(Gr(t.url),t.referer);if(n)return{blob:n,url:t.url}}return null} o(Bh,"grabFirst"); function bd(e,t){const n=(t||[]).filter(s=>s&&s.url&&s.referer);if(!e||!n.length)return Promise.resolve("");const r=go(e,n[0].url);if(r)return Promise.resolve(r);const i=Nh(e,n[0].url);if(ho.has(i))return ho.get(i);const c=cc.get(i);if(c&&Date.now()-c{if(!s)return"";if(Jt.has(e))gd(e);Jt.set(e,URL.createObjectURL(s.blob));ac.set(e,sc(s.url));Fh();return go(e,n[0].url)}).catch(()=>"").then(s=>{ho.delete(i);if(s)cc.delete(i);else cc.set(i,Date.now());return s});ho.set(i,a);return a} o(bd,"ensureProxiedCover"); var jh=[()=>!!document.querySelector('script[src*="/_next/"]'),()=>!!document.getElementById("__next"),()=>!!window.__NEXT_DATA__,()=>!!document.querySelector("[data-reactroot]"),()=>{const e=window.__REACT_DEVTOOLS_GLOBAL_HOOK__;return!!(e&&e.renderers&&e.renderers.size)},()=>!!window.next||!!window.__next_f]; function xd(){try{return jh.some(e=>{try{return!!e()}catch(t){return false}})}catch(e){return false}} o(xd,"isReactHydratingSite"); var $h=2e3; var yd=1500; function wd(e){let t=false;const n=o(()=>{if(t)return;t=true;try{e()}catch(i){}},"go");const r=window.requestIdleCallback?i=>window.requestIdleCallback(i,{timeout:yd}):i=>setTimeout(i,0);try{if(document.readyState==="complete"){r(n)}else{window.addEventListener("load",()=>r(n),{once:true})}}catch(i){}setTimeout(n,$h+yd)} o(wd,"runAfterHydration"); var Sd=`@font-face { font-family: vc-mid-dot; src: local("Segoe UI"), local("Segoe UI Symbol"), local("Helvetica Neue"), local("PingFang SC"), local("Microsoft YaHei"), local("Arial"); unicode-range: U+00B7; } :root { --vc-primary: #6366f1; --vc-primary-light: #a5b4fc; --vc-primary-lighter: #e0e7ff; --vc-primary-dark: #4338ca; --vc-ease-out: cubic-bezier(0.32, 0.72, 0, 1); --vc-ease-spring: cubic-bezier(0.34, 1.4, 0.64, 1); --vc-fab-peek: 36px; --vc-fab-idle: #008080; --vc-want: #fb923c; --vc-want-light: #fdba74; --vc-want-lighter: #fff7ed; --vc-want-dark: #c2410c; --vc-watched: #34d399; --vc-watched-light: #6ee7b7; --vc-watched-lighter: #f0fdf4; --vc-watched-dark: #047857; --vc-danger: #f87171; --vc-danger-light: #fca5a5; --vc-danger-lighter: #fef2f2; --vc-danger-dark: #b91c1c; --vc-bg: #ffffff; --vc-bg-soft: #fafafa; --vc-bg-muted: #f5f5f5; --vc-text: #18181b; --vc-text-medium: #3f3f46; --vc-text-secondary: #71717a; --vc-text-placeholder: #a1a1aa; --vc-border: #e4e4e7; --vc-border-light: #f4f4f5; --vc-border-dark: #d4d4d8; --vc-track: rgba(0, 0, 0, 0.08); --vc-hover: #f4f4f5; --vc-hover-strong: #e4e4e7; --vc-shadow: 0 2px 12px rgba(0, 0, 0, 0.06); --vc-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.07); --vc-shadow-lg: 0 12px 36px rgba(0, 0, 0, 0.10); --vc-outline: rgba(0, 0, 0, 0.12); --vc-outline-shadow: 0 2px 6px rgba(0, 0, 0, 0.16); --vc-outline-soft: rgba(0, 0, 0, 0.08); --vc-outline-shadow-soft: 0 1px 4px rgba(0, 0, 0, 0.10); --vc-surface-solid: rgba(255, 255, 255, 0.92); --vc-status-pinned-bg: rgba(255, 255, 255, 0.7); --vc-font-ui: vc-mid-dot, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", "微软雅黑", sans-serif; }`; var Ed=`.vc-mask { position: fixed; inset: 0; width: 100vw; height: 100vh; background: rgba(0, 0, 0, 0.45); z-index: 100000; display: none; align-items: center; justify-content: center; margin: 0; padding: 0; } .vc-mask.vc-show { display: flex !important; } .vc-panel.vc-genie-hidden { visibility: hidden; box-shadow: none; } @keyframes vcScrimIn { from { opacity: 0; } to { opacity: 1; } } @keyframes vcScrimOut { from { opacity: 1; } to { opacity: 0; } } .vc-mask.vc-scrim-in { animation: vcScrimIn 0.3s ease both; } .vc-mask.vc-scrim-out { animation: vcScrimOut 0.34s ease both; } .vc-settings-mask { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.3); z-index: 100001; display: none; align-items: center; justify-content: center; backdrop-filter: blur(2px); --vc-settings-anim: 0.4s; } .vc-settings-mask.vc-show { display: flex !important; animation: vcScrimIn var(--vc-settings-anim) ease both; } .vc-settings-mask.vc-closing { animation: vcScrimOut var(--vc-settings-anim) ease both; pointer-events: none; } @keyframes vcFadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .vc-image-preview { position: fixed; inset: 0; width: 100vw; height: 100vh; background: rgba(0, 0, 0, 0.85); z-index: 100001; display: grid; place-items: center; cursor: zoom-out; margin: 0; padding: 0; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity 0.25s cubic-bezier(0.32, 0.72, 0, 1), visibility 0s linear 0.25s; } .vc-image-preview.vc-show { display: grid !important; opacity: 1; visibility: visible; pointer-events: auto; transition: opacity 0.4s cubic-bezier(0.32, 0.72, 0, 1); } .vc-image-preview img { grid-area: 1 / 1; max-width: 92vw; max-height: 92vh; object-fit: contain; border-radius: 4px; opacity: 0; transform: scale(0.97); transition: opacity 0.3s ease, transform 0.25s cubic-bezier(0.32, 0.72, 0, 1); } .vc-image-preview img.vc-active { opacity: 1; } .vc-image-preview.vc-show img { transform: none; transition: opacity 0.3s ease, transform 0.4s cubic-bezier(0.32, 0.72, 0, 1); } .vc-image-preview img.vc-preview-enter { animation: vc-preview-enter 0.4s cubic-bezier(0.32, 0.72, 0, 1); } @keyframes vc-preview-enter { from { transform: scale(0.985); } } @media (prefers-reduced-motion: reduce) { .vc-image-preview { transition: opacity 0.15s ease, visibility 0s linear 0.15s; } .vc-image-preview.vc-show { transition: opacity 0.15s ease; } .vc-image-preview img, .vc-image-preview.vc-show img { transform: none; transition: opacity 0.15s ease; } .vc-image-preview img.vc-preview-enter { animation: none; } } .vc-jb-jump { display: inline-block; margin-left: 8px; padding: 2px 10px; font-size: 12px; font-weight: 500; color: #fff !important; background: var(--vc-primary); border-radius: 6px; text-decoration: none; cursor: pointer; vertical-align: middle; transition: opacity 0.15s, transform 0.15s; } .vc-jb-jump:hover { opacity: 0.88; transform: translateY(-1px); }`; var _d=`.vc-fab-zone { position: fixed; width: 48px; height: 48px; z-index: 100020; pointer-events: none; font-family: var(--vc-font-ui); transition: left 0.42s var(--vc-ease-out), top 0.42s var(--vc-ease-out), opacity 0.2s ease; } .vc-fab-zone.vc-fab-dragging { transition: none !important; } .vc-fab-zone.vc-fab-dim { opacity: 0.45; } .vc-fab-zone.vc-fab-dim .vc-fab { transform: scale(0.92); } .vc-fab-inner { position: absolute; inset: 0; pointer-events: none; transition: transform 0.42s var(--vc-ease-out), opacity 0.3s var(--vc-ease-out); will-change: transform, opacity; } .vc-fab-zone.vc-peek[data-vc-side="right"] .vc-fab-inner { transform: translateX(var(--vc-fab-peek)); opacity: var(--vc-fav-peek-opacity, 0.55); } .vc-fab-zone.vc-peek[data-vc-side="left"] .vc-fab-inner { transform: translateX(calc(-1 * var(--vc-fab-peek))); opacity: var(--vc-fav-peek-opacity, 0.55); } .vc-fab { position: absolute; inset: 0; display: grid; place-items: center; overflow: hidden; border: 1px solid var(--vc-outline); border-radius: 50%; cursor: pointer; pointer-events: auto; touch-action: none; user-select: none; -webkit-user-select: none; -webkit-tap-highlight-color: transparent; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); color: var(--vc-fab-idle); box-shadow: var(--vc-outline-shadow); transition: transform 0.3s var(--vc-ease-spring), background-color 0.28s var(--vc-ease-out), color 0.28s var(--vc-ease-out), border-color 0.28s var(--vc-ease-out), box-shadow 0.28s var(--vc-ease-out); } .vc-fab:hover { transform: scale(1.06); } .vc-fab:active { transform: scale(0.93); } .vc-fab:focus-visible { outline: 2px solid var(--vc-fab-idle); outline-offset: 3px; } .vc-fab[data-vc-state="want"] { background: var(--vc-want); border-color: var(--vc-want); color: #fff; box-shadow: 0 6px 18px rgba(251, 146, 60, 0.42); } .vc-fab[data-vc-state="watched"] { background: var(--vc-watched); border-color: var(--vc-watched); color: #fff; box-shadow: 0 6px 18px rgba(16, 185, 129, 0.38); } .vc-fab-scale { display: grid; place-items: center; } .vc-fab.vc-fab-pop .vc-fab-scale { animation: vcFabPop 0.46s cubic-bezier(0.34, 1.56, 0.64, 1); } @keyframes vcFabPop { 0% { transform: scale(1); } 32% { transform: scale(0.82); } 64% { transform: scale(1.12); } 100% { transform: scale(1); } } .vc-fab::after { content: ''; position: absolute; inset: 0; border-radius: 50%; background: currentColor; opacity: 0; transform: scale(0.6); pointer-events: none; } .vc-fab.vc-fab-ripple::after { animation: vcFabRipple 0.55s var(--vc-ease-out); } @keyframes vcFabRipple { 0% { opacity: 0.28; transform: scale(0.6); } 100% { opacity: 0; transform: scale(1.9); } } .vc-fab-subs { position: absolute; left: 50%; display: flex; flex-direction: column; align-items: center; gap: 9px; pointer-events: none; opacity: 0; transition: opacity 0.2s var(--vc-ease-out), transform 0.34s var(--vc-ease-out); will-change: opacity, transform; } .vc-fab-subs[hidden] { display: none; } .vc-fab-zone[data-vc-dir="up"] .vc-fab-subs { bottom: 100%; padding-bottom: 9px; transform: translate(-50%, 10px); } .vc-fab-zone[data-vc-dir="down"] .vc-fab-subs { top: 100%; padding-top: 9px; transform: translate(-50%, -10px); } .vc-fab-zone.vc-fab-open .vc-fab-subs { opacity: 1; pointer-events: auto; transform: translate(-50%, 0); } .vc-fab-zone:not(.vc-fab-open) .vc-fab-sub { pointer-events: none; } .vc-fab-sub { position: relative; width: 38px; height: 38px; display: grid; place-items: center; border: 1px solid var(--vc-outline); border-radius: 50%; background: rgba(255, 255, 255, 0.96); color: var(--vc-text-secondary); box-shadow: var(--vc-outline-shadow); cursor: pointer; pointer-events: auto; -webkit-tap-highlight-color: transparent; opacity: 0; transform: scale(0.72); transition: opacity 0.22s var(--vc-ease-out), transform 0.34s var(--vc-ease-spring), background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease; } .vc-fab-zone.vc-fab-open .vc-fab-sub { opacity: 1; transform: scale(1); } .vc-fab-zone.vc-fab-open .vc-fab-sub:nth-child(1) { transition-delay: 0.02s; } .vc-fab-zone.vc-fab-open .vc-fab-sub:nth-child(2) { transition-delay: 0.05s; } .vc-fab-zone.vc-fab-open .vc-fab-sub:nth-child(3) { transition-delay: 0.08s; } .vc-fab-zone.vc-fab-open .vc-fab-sub:nth-child(4) { transition-delay: 0.11s; } .vc-fab-sub[hidden] { display: none; } .vc-fab-sub:hover { background: var(--vc-hover); color: var(--vc-text); } .vc-fab-zone.vc-fab-open .vc-fab-sub:active { transform: scale(0.9); } .vc-fab-sub.vc-btn-want.vc-active { background: var(--vc-want); border-color: var(--vc-want); color: #fff; } .vc-fab-sub.vc-btn-watched.vc-active { background: var(--vc-watched); border-color: var(--vc-watched); color: #fff; } .vc-fab-sub[data-vc-tip]::before { content: attr(data-vc-tip); position: absolute; right: calc(100% + 10px); top: 50%; transform: translateY(-50%) translateX(4px); padding: 5px 10px; border-radius: 7px; background: rgba(28, 32, 40, 0.94); color: #fff; font-size: 12px; white-space: nowrap; opacity: 0; pointer-events: none; transition: opacity 0.18s ease, transform 0.18s var(--vc-ease-out); } .vc-fab-zone[data-vc-side="left"] .vc-fab-sub[data-vc-tip]::before { right: auto; left: calc(100% + 10px); transform: translateY(-50%) translateX(-4px); } .vc-fab-sub[data-vc-tip]:hover::before { opacity: 1; transform: translateY(-50%) translateX(0); } .vc-fav-sm .vc-fab-zone[data-vc-side="right"] { transform: scale(0.86); transform-origin: 100% 50%; } .vc-fav-sm .vc-fab-zone[data-vc-side="left"] { transform: scale(0.86); transform-origin: 0 50%; } .vc-status { position: absolute; top: 8px; left: 8px; z-index: 10; display: flex; align-items: center; gap: 2px; padding: 2px; border-radius: 7px; --vc-status-alpha: 100%; background: var(--vc-surface-solid); background: color-mix(in srgb, var(--vc-surface-solid) var(--vc-status-alpha), transparent); opacity: 0; pointer-events: none; transition: opacity 0.2s ease; font-family: var(--vc-font-ui); } .vc-fav-host .vc-status { box-shadow: var(--vc-outline-shadow), 0 0 0 1px var(--vc-outline); } .vc-fav-host .vc-status--pinned { opacity: 1; --vc-status-alpha: 70%; background: var(--vc-status-pinned-bg); background: color-mix(in srgb, var(--vc-surface-solid) var(--vc-status-alpha), transparent); pointer-events: auto; box-shadow: var(--vc-outline-shadow-soft), 0 0 0 1px var(--vc-outline-soft); } .vc-fav-host:hover .vc-status, .vc-status:hover, .vc-status:focus-within { opacity: 1; --vc-status-alpha: 100%; --vc-status-pinned-bg: var(--vc-surface-solid); pointer-events: auto; box-shadow: var(--vc-outline-shadow), 0 0 0 1px var(--vc-outline); z-index: 1010; } .vc-fav-nomark .vc-status--pinned { opacity: 0; pointer-events: none; } .vc-fav-nomark .vc-fav-host:hover .vc-status, .vc-fav-nomark .vc-status:focus-within { opacity: 1; pointer-events: auto; } .vc-status-btn { width: 22px; height: 20px; padding: 0; border: none; border-radius: 5px; background: transparent; color: var(--vc-text); font-size: 12px; line-height: 1; font-family: inherit; text-align: center; text-indent: 0; letter-spacing: normal; text-transform: none; cursor: pointer; opacity: 0.55; transition: opacity 0.15s ease, background 0.15s ease, color 0.15s ease; } .vc-status-btn:hover { opacity: 1; background: var(--vc-hover-strong); } .vc-status[data-vc-status="want"] .vc-status-btn[data-vc-set="want"], .vc-status[data-vc-status="watched"] .vc-status-btn[data-vc-set="watched"] { opacity: 1; color: #fff; } .vc-status[data-vc-status="want"] .vc-status-btn[data-vc-set="want"] { background: var(--vc-want); } .vc-status[data-vc-status="watched"] .vc-status-btn[data-vc-set="watched"] { background: var(--vc-watched); } .vc-xjump { position: fixed; z-index: 99999; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; opacity: var(--vc-xjump-opacity, 1); transition: opacity 0.15s ease; } .vc-xjump:hover, .vc-xjump.vc-show { opacity: 1; } .vc-xjump-toggle { display: inline-flex; align-items: center; gap: 4px; padding: 8px 14px; border: 1px solid var(--vc-outline); border-radius: 8px; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); box-shadow: var(--vc-outline-shadow); color: var(--vc-text); font-size: 13px; font-weight: 500; cursor: grab; white-space: nowrap; user-select: none; transition: transform 0.15s ease; } .vc-xjump-toggle:hover, .vc-xjump.vc-show .vc-xjump-toggle { transform: translateY(-1px); } .vc-xjump-sm .vc-xjump-toggle .vc-xjump-label { display: none; } .vc-xjump-sm .vc-xjump-toggle { padding: 8px 10px; } .vc-xjump-menu { position: absolute; top: calc(100% + 6px); right: 0; display: none; flex-direction: column; gap: 4px; background: rgba(255, 255, 255, 0.98); border: 1px solid var(--vc-border); border-radius: 10px; box-shadow: var(--vc-shadow-lg); padding: 6px; max-height: 60vh; overflow: auto; min-width: 102px; box-sizing: border-box; transform-origin: top right; } .vc-xjump.vc-up .vc-xjump-menu { top: auto; bottom: calc(100% + 6px); transform-origin: bottom right; } .vc-xjump.vc-show .vc-xjump-menu { display: flex; animation: vcXjumpMenuPop 0.8s var(--vc-ease-out); } .vc-xjump.vc-up.vc-show .vc-xjump-menu { animation-name: vcXjumpMenuPopUp; } @keyframes vcXjumpMenuPop { from { opacity: 0; transform: translateY(-6px) scale(0.97); } } @keyframes vcXjumpMenuPopUp { from { opacity: 0; transform: translateY(6px) scale(0.97); } } @media (prefers-reduced-motion: reduce) { .vc-xjump.vc-show .vc-xjump-menu, .vc-xjump.vc-up.vc-show .vc-xjump-menu { animation: none; } } .vc-xjump-btn { padding: 6px 12px; border: none; border-radius: 6px; background: transparent; color: var(--vc-text-secondary); font-size: 12px; font-weight: 500; line-height: normal; font-family: inherit; -webkit-appearance: none; appearance: none; text-align: left; text-indent: 0; letter-spacing: normal; text-transform: none; white-space: nowrap; cursor: pointer; transition: background 0.15s, color 0.15s; } .vc-xjump-btn:hover { background: var(--vc-primary); color: #fff; }`; var kd=`.vc-settings-panel { --vc-settings-control-w: 196px; width: 460px; max-width: 92vw; background: var(--vc-bg); border-radius: 14px; box-shadow: var(--vc-shadow-lg); overflow: hidden; line-height: 1.45; } @keyframes vcSettingsIn { from { opacity: 0; } to { opacity: 1; } } @keyframes vcSettingsOut { from { opacity: 1; } to { opacity: 0; } } .vc-settings-mask.vc-show .vc-settings-panel { animation: vcSettingsIn var(--vc-settings-anim, 0.4s) ease; } .vc-settings-mask.vc-closing .vc-settings-panel { animation: vcSettingsOut var(--vc-settings-anim, 0.4s) ease both; } .vc-settings-header { display: flex; align-items: center; justify-content: space-between; padding: 13px 20px; border-bottom: 1px solid var(--vc-border); } .vc-settings-title { font-size: 15px; font-weight: 600; color: var(--vc-text); } .vc-settings-close { width: 28px; height: 28px; border: none; border-radius: 8px; background: transparent; color: var(--vc-text-secondary); font-size: 18px; line-height: 1; cursor: pointer; transition: background 0.15s ease, color 0.15s ease; } .vc-settings-close:hover { background: var(--vc-bg-soft); color: var(--vc-text); } .vc-settings-body { padding: 8px 16px 16px; max-height: min(76vh, 860px); overflow-y: auto; overscroll-behavior: contain; } .vc-settings-body::-webkit-scrollbar { width: 6px; } .vc-settings-body::-webkit-scrollbar-thumb { background: var(--vc-scroll-thumb); border-radius: 3px; } .vc-settings-item { display: flex; align-items: center; gap: 12px; padding: 9px 12px; border-radius: 8px; cursor: pointer; transition: background 0.15s ease; } .vc-settings-item:hover { background: var(--vc-bg-soft); } .vc-settings-item.vc-settings-static { cursor: default; } .vc-settings-item.vc-settings-static:hover { background: transparent; } .vc-settings-info { display: flex; flex-direction: column; gap: 3px; flex: 1; min-width: 0; } .vc-settings-label { font-size: 14px; line-height: 1.4; font-weight: 500; color: var(--vc-text); } .vc-settings-desc { font-size: 12px; line-height: 1.45; color: var(--vc-text-secondary); } .vc-settings-desc-sub { font-size: 11px; color: var(--vc-text-secondary); opacity: 0.85; } .vc-settings-storage-parts { display: flex; flex-wrap: wrap; column-gap: 12px; row-gap: 2px; } .vc-settings-storage-parts:empty { display: none; } .vc-settings-storage-part { white-space: nowrap; } .vc-settings-section + .vc-settings-section { margin-top: 6px; border-top: 1px solid var(--vc-border); } .vc-settings-section-title { font-size: 13px; font-weight: 600; color: var(--vc-text-secondary); padding: 10px 12px 4px; } .vc-settings-item .vc-switch { position: absolute; opacity: 0; width: 0; height: 0; margin: 0; pointer-events: none; } .vc-settings-switch-track { position: relative; flex-shrink: 0; width: 40px; height: 22px; border-radius: 999px; background: var(--vc-bg-muted); border: 1px solid var(--vc-border); box-sizing: border-box; cursor: pointer; transition: background 0.18s ease, border-color 0.18s ease; } .vc-settings-switch-track::after { content: ''; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); transition: transform 0.18s ease; } @supports selector(:has(*)) { .vc-settings-item:has(.vc-switch:checked) .vc-settings-switch-track { background: var(--vc-primary); border-color: var(--vc-primary); } .vc-settings-item:has(.vc-switch:checked) .vc-settings-switch-track::after { transform: translateX(18px); } .vc-settings-item:has(.vc-switch:focus-visible) .vc-settings-switch-track { outline: 2px solid var(--vc-primary); outline-offset: 2px; } } @supports not (selector(:has(*))) { .vc-switch:checked + .vc-settings-info + .vc-settings-switch-track { background: var(--vc-primary); border-color: var(--vc-primary); } .vc-switch:checked + .vc-settings-info + .vc-settings-switch-track::after { transform: translateX(18px); } .vc-switch:focus-visible + .vc-settings-info + .vc-settings-switch-track { outline: 2px solid var(--vc-primary); outline-offset: 2px; } } .vc-settings-control { flex: none; display: flex; align-items: center; justify-content: flex-end; gap: 8px; } @supports selector(:has(*)) { .vc-settings-control:has(.vc-settings-range), .vc-settings-control:has(.vc-settings-seg) { min-width: var(--vc-settings-control-w); } } .vc-settings-range-val { min-width: 38px; text-align: right; font-size: 12px; font-variant-numeric: tabular-nums; color: var(--vc-text-secondary); } .vc-settings-item .vc-settings-range { display: block; -webkit-appearance: none; appearance: none; width: 150px; height: 8px; margin: 0; padding: 0; border: none; border-radius: 999px; background: var(--vc-track, rgba(0, 0, 0, 0.1)); background-image: none; font-size: inherit; line-height: normal; color: var(--vc-text-secondary); vertical-align: middle; box-sizing: border-box; outline: none; cursor: pointer; } .vc-settings-item .vc-settings-range::-webkit-slider-runnable-track { -webkit-appearance: none; height: 8px; border-radius: 999px; background: transparent; } .vc-settings-item .vc-settings-range::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 16px; height: 16px; border-radius: 50%; margin-top: -4px; background: var(--vc-primary); border: 2px solid rgba(255, 255, 255, 0.95); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); cursor: pointer; } .vc-settings-item .vc-settings-range::-moz-range-thumb { width: 16px; height: 16px; border-radius: 50%; background: var(--vc-primary); border: 2px solid rgba(255, 255, 255, 0.95); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); cursor: pointer; } .vc-settings-item .vc-settings-range::-moz-range-track { height: 8px; border-radius: 999px; background: transparent; } .vc-settings-btn { flex: none; padding: 6px 12px; border: 1px solid var(--vc-border); border-radius: 8px; background: var(--vc-bg-soft); color: var(--vc-text-secondary); font-size: 12px; font-weight: 500; font-family: inherit; cursor: pointer; transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease; } .vc-settings-btn:hover { background: var(--vc-primary); border-color: var(--vc-primary); color: #fff; } .vc-settings-item .vc-settings-range:focus-visible, .vc-settings-btn:focus-visible { outline: 2px solid var(--vc-primary); outline-offset: 3px; } .vc-settings-seg { display: inline-flex; flex-shrink: 0; border: 1px solid var(--vc-border); border-radius: 8px; overflow: hidden; background: var(--vc-bg-soft); } .vc-settings-seg-btn { padding: 6px 12px; border: none; background: transparent; color: var(--vc-text-secondary); font-size: 12px; font-weight: 500; cursor: pointer; transition: background 0.15s ease, color 0.15s ease; } .vc-settings-seg-btn + .vc-settings-seg-btn { border-left: 1px solid var(--vc-border); } .vc-settings-seg-btn.vc-active { background: var(--vc-primary); color: #fff; } .vc-settings-seg-btn:focus-visible { outline: 2px solid var(--vc-primary-lighter); outline-offset: -2px; }`; var Td=`.vc-panel { --vc-bg: rgba(30, 32, 44, 0.72); --vc-bg-soft: rgba(255, 255, 255, 0.05); --vc-bg-muted: rgba(255, 255, 255, 0.08); --vc-text: #eef1f8; --vc-text-medium: #d3d9ea; --vc-text-secondary: #a8b0c5; --vc-text-placeholder: #7d8496; --vc-border: rgba(255, 255, 255, 0.12); --vc-border-light: rgba(255, 255, 255, 0.07); --vc-border-dark: rgba(255, 255, 255, 0.22); --vc-hover: rgba(255, 255, 255, 0.08); --vc-hover-strong: rgba(255, 255, 255, 0.16); --vc-primary: #8b8ff5; --vc-primary-light: #a5b4fc; --vc-primary-dark: #a5b4fc; --vc-track: rgba(255, 255, 255, 0.16); --vc-shadow: 0 2px 12px rgba(0, 0, 0, 0.3); --vc-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.35); --vc-shadow-lg: 0 30px 90px rgba(0, 0, 0, 0.55); --vc-surface: rgba(255, 255, 255, 0.08); --vc-surface-hover: rgba(255, 255, 255, 0.14); --vc-surface-solid: rgba(20, 22, 30, 0.82); --vc-top-highlight: rgba(255, 255, 255, 0.14); --vc-shadow-edge: 0 2px 8px rgba(0, 0, 0, 0.3); --vc-menu-bg: #1e202c; --vc-menu-text: #eef1f8; --vc-scroll-thumb: rgba(255, 255, 255, 0.18); --vc-info-scrim: rgba(12, 14, 20, 0.72); --vc-info-scrim-light: rgba(12, 14, 20, 0.55); --vc-info-scrim-fade: rgba(12, 14, 20, 0); --vc-info-text: rgba(255, 255, 255, 0.96); --vc-info-text-dim: rgba(255, 255, 255, 0.68); --vc-info-accent: #b8bcff; --vc-cover-pos-wide: right center; --vc-cover-placeholder: linear-gradient(155deg, #454a58 0%, #2b2f3a 100%); color-scheme: dark; width: 980px; font-family: var(--vc-font-ui); max-width: 92vw; height: 92vh; min-height: 400px; color: var(--vc-text); background: var(--vc-bg); -webkit-backdrop-filter: blur(40px) saturate(180%); backdrop-filter: blur(40px) saturate(180%); border-radius: 16px; box-shadow: var(--vc-shadow-lg), var(--vc-shadow-edge), inset 0 1px 0 var(--vc-top-highlight); transition: box-shadow 0.4s ease-out; display: flex; flex-direction: column; overflow: hidden; position: relative; border: 1px solid var(--vc-border); } .vc-panel.vc-cover-fit-off { --vc-cover-pos-wide: center; } .vc-panel.vc-panel-light { --vc-bg: rgba(252, 252, 254, 0.72); --vc-bg-soft: rgba(15, 20, 30, 0.04); --vc-bg-muted: rgba(15, 20, 30, 0.06); --vc-text: #1f2430; --vc-text-medium: #333a4d; --vc-text-secondary: #5b6377; --vc-text-placeholder: #8b93a7; --vc-border: rgba(15, 20, 30, 0.12); --vc-border-light: rgba(15, 20, 30, 0.07); --vc-border-dark: rgba(15, 20, 30, 0.22); --vc-hover: rgba(15, 20, 30, 0.05); --vc-hover-strong: rgba(15, 20, 30, 0.1); --vc-primary: #6366f1; --vc-primary-light: #4f46e5; --vc-primary-dark: #4f46e5; --vc-track: rgba(15, 20, 30, 0.14); --vc-shadow: 0 2px 12px rgba(15, 20, 30, 0.12); --vc-shadow-md: 0 4px 16px rgba(15, 20, 30, 0.14); --vc-shadow-lg: 0 30px 90px rgba(15, 20, 30, 0.26); --vc-shadow-edge: 0 2px 8px rgba(15, 20, 30, 0.1); --vc-surface: rgba(255, 255, 255, 0.72); --vc-surface-hover: rgba(255, 255, 255, 0.98); --vc-surface-solid: rgba(255, 255, 255, 0.9); --vc-top-highlight: rgba(255, 255, 255, 0.9); --vc-menu-bg: #ffffff; --vc-menu-text: #1f2430; --vc-scroll-thumb: rgba(15, 20, 30, 0.2); color-scheme: light; } .vc-list-wrap::-webkit-scrollbar { width: 6px; } .vc-list-wrap::-webkit-scrollbar-thumb { background: var(--vc-scroll-thumb); border-radius: 3px; } .vc-panel-header { padding: 18px 46px 14px 24px; border-bottom: 1px solid var(--vc-border); flex-shrink: 0; } .vc-panel-title-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; } .vc-panel-title { font-size: 18px; font-weight: 600; color: var(--vc-text); margin: 0; } .vc-header-actions { display: flex; gap: 8px; } .vc-header-divider { flex: none; width: 1px; margin: 2px 0; background: var(--vc-border); } .vc-icon-btn-sm { padding: 6px 12px; border: 1px solid var(--vc-border); background: var(--vc-surface); border-radius: 8px; font-size: 12px; cursor: pointer; color: var(--vc-text-secondary); transition: all 0.15s; } .vc-icon-btn-sm:hover { border-color: var(--vc-primary); color: var(--vc-primary); } .vc-icon-btn-sm.vc-icon-btn-icon { display: inline-flex; align-items: center; justify-content: center; align-self: center; width: 30px; height: 30px; padding: 0; } .vc-icon-btn-sm .vc-icon { display: block; width: 15px; height: 15px; } .vc-icon-btn-refresh.vc-spin .vc-icon { animation: vcSpin 0.45s ease; } @keyframes vcSpin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .vc-header-menu-wrap { position: relative; display: flex; align-items: center; align-self: center; } .vc-header-menu { position: absolute; top: calc(100% + 6px); right: 0; z-index: 30; display: none; flex-direction: column; min-width: 128px; padding: 6px; background: var(--vc-menu-bg); border: 1px solid var(--vc-border); border-radius: 10px; box-shadow: var(--vc-shadow-md); transform-origin: top right; } .vc-header-menu.vc-show { display: flex; animation: vcHeaderMenuPop 0.5s var(--vc-ease-out); } @keyframes vcHeaderMenuPop { from { opacity: 0; transform: translateY(-6px) scale(0.97); } } .vc-header-menu-item { padding: 8px 12px; border: none; border-radius: 6px; background: none; color: var(--vc-menu-text); font-family: inherit; font-size: 13px; text-align: left; white-space: nowrap; cursor: pointer; transition: background 0.15s, color 0.15s; } .vc-header-menu-item:hover { background: var(--vc-hover); color: var(--vc-primary); } .vc-tabs { display: flex; align-items: center; gap: 24px; margin-bottom: 12px; } .vc-tab { padding: 6px 0; font-size: 14px; color: var(--vc-text-secondary); cursor: pointer; border-bottom: 2px solid transparent; transition: all 0.2s; } .vc-tab.vc-active { color: var(--vc-primary); border-bottom-color: var(--vc-primary); font-weight: 500; } .vc-search { flex: 1; min-width: 0; width: auto; padding: 8px 30px 8px 12px; border: 1px solid var(--vc-border); border-radius: 8px; font-size: 13px; outline: none; transition: border-color 0.2s; box-sizing: border-box; background: var(--vc-surface); color: var(--vc-text); margin-bottom: 0 !important; } .vc-search::placeholder { color: var(--vc-text-placeholder); } .vc-search:focus { border-color: var(--vc-primary); } .vc-search-row { display: flex; align-items: center; gap: 8px; margin-left: auto; min-width: 0; } .vc-search-wrap { position: relative; display: flex; align-items: center; flex: 1; min-width: 0; } .vc-search-clear { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); display: none; width: 18px; height: 18px; padding: 0; border: none; border-radius: 50%; background: transparent; color: var(--vc-text-placeholder); cursor: pointer; align-items: center; justify-content: center; transition: color 0.2s, background 0.2s; } .vc-search-clear::before, .vc-search-clear::after { content: ''; position: absolute; left: 50%; top: 50%; width: 8px; height: 1.5px; background: currentColor; border-radius: 1px; } .vc-search-clear::before { transform: translate(-50%, -50%) rotate(45deg); } .vc-search-clear::after { transform: translate(-50%, -50%) rotate(-45deg); } .vc-search:not(:placeholder-shown) ~ .vc-search-clear { display: flex; } .vc-search-clear:hover { color: var(--vc-text); background: var(--vc-hover); } .vc-site-select { flex-shrink: 0; max-width: 140px; padding: 8px 6px; border: 1px solid var(--vc-border); border-radius: 8px; font-size: 12px; color: var(--vc-text); background: var(--vc-surface); outline: none; cursor: pointer; transition: border-color 0.2s; box-sizing: border-box; } .vc-site-select option { background: var(--vc-menu-bg); color: var(--vc-menu-text); } .vc-site-select:focus { border-color: var(--vc-primary); } .vc-list-wrap { flex: 1; overflow-y: auto; padding: 20px 24px; display: none; box-sizing: border-box; } .vc-list-wrap.vc-active { display: block; } .vc-panel > * { transition: opacity 0.5s ease-out, transform 0.5s ease-out; transition-delay: 100ms; } .vc-panel > .vc-list-wrap { transition-delay: 500ms; } .vc-panel > .vc-batch-bar, .vc-panel > .vc-pagination { transition-delay: 600ms; } .vc-panel.vc-content-enter > * { opacity: 0; transform: translateY(4px); transition: none; } .vc-panel.vc-content-enter > .vc-panel-header { transform: none; } .vc-grid { display: grid; grid-template-columns: repeat(5, 1fr); grid-template-rows: repeat(3, minmax(160px, 1fr)); gap: 16px; height: 100%; width: 100%; } .vc-card { position: relative; border-radius: 12px; overflow: hidden; border: 1px solid var(--vc-border); background: var(--vc-surface); transition: all 0.2s ease; cursor: pointer; display: flex; flex-direction: column; max-height: 312px; } .vc-card:hover { background: var(--vc-surface-hover); border-color: var(--vc-border-dark); transform: translateY(-2px); } .vc-card-cover { position: absolute; inset: 0; z-index: 0; background: var(--vc-cover-placeholder); display: flex; align-items: center; justify-content: center; overflow: hidden; } .vc-card-cover img { width: 100%; height: 100%; object-fit: cover; object-position: center; cursor: zoom-in; opacity: 0; transition: opacity 1s cubic-bezier(0.32, 0.72, 0, 1), transform 0.2s; } .vc-card-cover img.vc-cover-ready { opacity: 1; } .vc-card-cover img.vc-cover-wide { object-position: var(--vc-cover-pos-wide); } .vc-card:hover .vc-card-cover img { transform: scale(1.05); } .vc-card-cover .vc-default-cover { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: var(--vc-cover-placeholder); color: rgba(255, 255, 255, 0.4); font-size: 28px; } .vc-card-actions { position: absolute; top: 8px; right: 8px; display: flex; gap: 4px; opacity: 0; transition: opacity 0.2s ease; z-index: 2; } .vc-card:hover .vc-card-actions { opacity: 1; } .vc-card-action-btn { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; padding: 0; border: none; background: var(--vc-surface-solid); border-radius: 6px; cursor: pointer; color: var(--vc-text); transition: all 0.15s; } .vc-card-action-btn .vc-icon { display: block; width: 15px; height: 15px; } .vc-card-action-btn:hover { background: var(--vc-primary); color: #fff; } .vc-card-delete-btn:hover { background: var(--vc-danger); color: white; } .vc-card-info { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 6px 8px 8px; background: var(--vc-info-scrim); transition: background 0.2s ease; } .vc-card-info::before { content: ''; position: absolute; left: 0; right: 0; bottom: 100%; height: 16px; background: linear-gradient(to top, var(--vc-info-scrim) 0%, var(--vc-info-scrim-fade) 75%); pointer-events: none; transition: background 0.2s ease; } .vc-panel-light .vc-card-info { background: var(--vc-info-scrim-light); } .vc-panel-light .vc-card-info::before { background: linear-gradient(to top, var(--vc-info-scrim-light) 0%, var(--vc-info-scrim-fade) 75%); } .vc-panel-light .vc-card-info:hover { background: var(--vc-info-scrim); } .vc-panel-light .vc-card-info:hover::before { background: linear-gradient(to top, var(--vc-info-scrim) 0%, var(--vc-info-scrim-fade) 75%); } .vc-card-info .vc-card-title { color: var(--vc-info-text); } .vc-card-info .vc-card-time { color: var(--vc-info-text-dim); } .vc-card-info .vc-card-last-played { color: var(--vc-info-accent); } .vc-card-rate { position: absolute; left: 8px; top: 36px; z-index: 2; display: none; max-width: calc(100% - 16px); overflow: hidden; transition: opacity 0.2s ease; } .vc-card-rate:not(:empty) { display: inline-flex; align-items: center; } .vc-card-rate-link { padding: 1px 6px; border-radius: 4px; background: rgba(15, 17, 23, 0.72); font-size: 10px; font-weight: 600; line-height: 1.5; color: var(--vc-info-accent); text-decoration: none; white-space: nowrap; } .vc-card-rate-link:hover { text-decoration: underline; } .vc-card-rate-none { opacity: 0; font-weight: 500; transition: opacity 0.2s ease; } .vc-card:hover .vc-card-rate-none, .vc-card-rate-none:focus-visible { opacity: 0.72; } .vc-card-rate-fetch { padding: 1px 6px; border-radius: 4px; border: none; background: rgba(15, 17, 23, 0.72); font-family: inherit; font-size: 10px; font-weight: 600; line-height: 1.5; color: var(--vc-info-accent); cursor: pointer; opacity: 0; transition: opacity 0.2s ease; } .vc-card:hover .vc-card-rate-fetch, .vc-card-rate-fetch:focus-visible { opacity: 1; } .vc-panel.vc-batch-mode .vc-card-rate { opacity: 0; pointer-events: none; } .vc-card-title { font-size: 12px; line-height: 1.4; color: var(--vc-text); font-weight: 500; height: 1.4em; overflow: hidden; transition: height 0.28s ease; } .vc-card-info:hover .vc-card-title { height: var(--vc-title-full, auto); transition-delay: 0.12s; } .vc-card-copy { display: inline-block; border: none; background: transparent; cursor: pointer; font-size: 11px; line-height: 1; padding: 0; margin: 0; margin-top: -2px; border-radius: 4px; vertical-align: middle; opacity: 0.55; transition: opacity 0.15s, background 0.15s; } .vc-card-copy:hover { opacity: 1; background: rgba(139, 143, 245, 0.24); } .vc-card-site { position: absolute; left: 8px; top: 14px; z-index: 2; max-width: calc(100% - 16px); font-size: 10px; line-height: 1.5; color: #fff; background: rgba(15, 17, 23, 0.72); padding: 1px 6px; border-radius: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; pointer-events: none; transition: opacity 0.2s ease; } .vc-card:hover .vc-card-site { opacity: 0; } .vc-panel.vc-batch-mode .vc-card-site { opacity: 0; } .vc-card-site:empty { display: none; } .vc-card-meta { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-top: 4px; min-width: 0; } .vc-card-time { flex: 1 1 auto; font-size: 11px; color: var(--vc-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; } .vc-card-last-played { flex: none; max-width: 100%; font-family: var(--vc-font-ui); font-size: 11px; font-weight: 600; color: var(--vc-primary-dark); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; } .vc-card-last-played:empty { display: none; } .vc-card:hover .vc-card-status, .vc-card-status:focus-within { opacity: 1; pointer-events: auto; } .vc-card.vc-pending { opacity: 0.6; filter: grayscale(1); } .vc-card.vc-pending .vc-card-status { display: none; } .vc-card-pending { position: absolute; inset: 0; z-index: 4; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; border-radius: 12px; background: rgba(12, 14, 20, 0.62); } .vc-card-pending-text { font-size: 12px; font-weight: 500; color: #fff; text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); } .vc-card-undo { padding: 3px 10px; border: 1px solid var(--vc-border-dark); border-radius: 6px; background: var(--vc-surface-solid); color: var(--vc-text); font-size: 11px; font-weight: 500; font-family: inherit; cursor: pointer; transition: all 0.15s; } .vc-card-undo:hover { background: var(--vc-primary); border-color: var(--vc-primary); color: #fff; } .vc-empty { grid-column: 1 / -1; grid-row: 1 / -1; align-self: center; justify-self: center; display: flex; align-items: center; justify-content: center; max-width: 360px; padding: 22px 26px; border: 1px dashed var(--vc-border-dark); border-radius: 12px; background: var(--vc-bg-soft); color: var(--vc-text-secondary); font-size: 14px; line-height: 1.6; text-align: center; } .vc-pagination { padding: 12px 24px; border-top: 1px solid var(--vc-border); display: flex; align-items: center; justify-content: space-between; font-size: 12px; color: var(--vc-text-secondary); flex-shrink: 0; font-variant-numeric: tabular-nums; } .vc-pagination-btns { display: flex; align-items: center; gap: 8px; } .vc-page-btn { padding: 4px 10px; border: 1px solid var(--vc-border); background: var(--vc-surface); border-radius: 6px; font-size: 12px; cursor: pointer; color: var(--vc-text-secondary); font-family: inherit; transition: all 0.15s; } .vc-page-btn:hover:not(:disabled) { border-color: var(--vc-primary); color: var(--vc-primary); } .vc-page-btn:disabled { opacity: 0.4; cursor: not-allowed; } .vc-close { position: relative; flex: none; align-self: center; display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; padding: 0; background: none; border: none; color: var(--vc-text-secondary); cursor: pointer; line-height: 1; margin-right: -38px; } .vc-close::before, .vc-close::after { content: ''; position: absolute; left: 50%; top: 50%; width: 13px; height: 1.6px; background: currentColor; border-radius: 1px; } .vc-close::before { transform: translate(-50%, -50%) rotate(45deg); } .vc-close::after { transform: translate(-50%, -50%) rotate(-45deg); } .vc-close:hover { color: var(--vc-text); } .vc-card-checkbox { position: absolute; top: 6px; left: 6px; z-index: 3; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; } .vc-card-checkbox input { width: 16px; height: 16px; cursor: pointer; accent-color: var(--vc-primary); } .vc-panel.vc-batch-mode .vc-card-checkbox { display: flex !important; } .vc-panel.vc-batch-mode .vc-card-actions { display: none !important; } .vc-panel.vc-batch-mode .vc-card-cover img { cursor: pointer; } .vc-panel.vc-batch-mode .vc-card-status { display: none !important; } .vc-panel.vc-batch-mode .vc-card-copy { display: none !important; } .vc-panel.vc-batch-mode .vc-card { cursor: pointer; } .vc-card.vc-selected { box-shadow: 0 0 0 2px var(--vc-primary); } .vc-batch-bar { padding: 12px 24px; border-top: 1px solid var(--vc-border); display: flex; align-items: center; gap: 12px; font-size: 13px; color: var(--vc-text-secondary); flex-shrink: 0; font-family: var(--vc-font-ui); background: var(--vc-hover); } .vc-batch-select-all { display: flex; align-items: center; gap: 4px; cursor: pointer; white-space: nowrap; font-weight: 500; margin-bottom: 0 !important; } .vc-batch-select-all input { width: 16px; height: 16px; cursor: pointer; accent-color: var(--vc-primary); } .vc-batch-count { color: var(--vc-primary); font-weight: 600; white-space: nowrap; } .vc-batch-actions { margin-left: auto; display: flex; gap: 6px; } .vc-batch-btn { padding: 4px 12px; border: 1px solid var(--vc-border); background: var(--vc-surface); border-radius: 6px; font-size: 12px; font-weight: 500; cursor: pointer; color: var(--vc-text-secondary); transition: all 0.15s; font-family: inherit; } .vc-batch-btn:hover:not(:disabled) { border-color: var(--vc-primary); color: var(--vc-primary); } .vc-batch-btn:disabled { opacity: 0.4; cursor: not-allowed; } .vc-batch-btn-danger:hover:not(:disabled) { border-color: var(--vc-danger); color: var(--vc-danger); } .vc-batch-btn-ghost { border-color: transparent; background: transparent; } .vc-batch-btn-ghost:hover { color: var(--vc-text) !important; border-color: var(--vc-border) !important; } .vc-panel.vc-batch-mode .vc-pagination { display: none; } .vc-panel .vc-icon-btn-sm:focus-visible, .vc-panel .vc-header-menu-item:focus-visible, .vc-panel .vc-close:focus-visible, .vc-panel .vc-search:focus-visible, .vc-panel .vc-search-clear:focus-visible, .vc-panel .vc-site-select:focus-visible, .vc-panel .vc-page-btn:focus-visible, .vc-panel .vc-batch-btn:focus-visible, .vc-panel .vc-card-action-btn:focus-visible, .vc-panel .vc-card-status-btn:focus-visible, .vc-panel .vc-card-undo:focus-visible { outline: 2px solid var(--vc-primary-light); outline-offset: 2px; } .vc-panel.vc-batch-mode .vc-icon-btn-batch { border-color: var(--vc-primary); color: var(--vc-primary); } @media (prefers-reduced-motion: reduce) { .vc-panel .vc-card { transition: none; } .vc-panel .vc-icon-btn-refresh.vc-spin .vc-icon { animation: none; } .vc-panel .vc-card-cover img { transition: opacity 0.15s ease-out; } .vc-panel .vc-card:hover, .vc-panel .vc-card:hover .vc-card-cover img { transform: none; } .vc-header-menu.vc-show { animation: none; } }`; var Ad=`.vc-confirm-mask { position: fixed; inset: 0; z-index: 100002; background: rgba(0, 0, 0, 0.35); display: none; align-items: center; justify-content: center; backdrop-filter: blur(2px); } .vc-confirm-mask.vc-show { display: flex !important; } .vc-confirm-dialog { width: 375px; max-width: 90vw; background: white; border-radius: 12px; box-shadow: var(--vc-shadow-lg); padding: 24px; text-align: center; animation: vcFadeIn 0.15s ease; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; } .vc-confirm-text { font-size: 15px; font-weight: 500; color: var(--vc-text); line-height: 1.5; margin-bottom: 25px; white-space: pre-line; } .vc-confirm-actions { display: flex; gap: 20px; justify-content: center; } .vc-confirm-btn { padding: 7px 20px; border: none; border-radius: 8px; font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.15s; font-family: inherit; } .vc-confirm-cancel { background: var(--vc-hover); color: var(--vc-text-secondary); border: 1px solid var(--vc-border); } .vc-confirm-cancel:hover { background: var(--vc-border); color: var(--vc-text); } .vc-confirm-ok { background: var(--vc-primary); color: white; } .vc-confirm-ok:hover { opacity: 0.9; } .vc-confirm-ok.vc-danger { background: var(--vc-danger); } .vc-import-dialog { width: 420px; max-width: 92vw; background: white; border-radius: 12px; box-shadow: var(--vc-shadow-lg); padding: 24px; animation: vcFadeIn 0.15s ease; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; } .vc-import-title { font-size: 16px; font-weight: 600; color: var(--vc-text); margin-bottom: 16px; } .vc-import-options { display: flex; flex-direction: column; gap: 10px; margin-bottom: 20px; } .vc-import-option { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; padding: 10px 14px; border: 1px solid var(--vc-border); border-radius: 8px; background: #fff; cursor: pointer; text-align: left; transition: border-color 0.15s, background 0.15s; font-family: inherit; } .vc-import-option:hover { border-color: var(--vc-primary); background: rgba(79, 70, 229, 0.04); } .vc-import-option-name { font-size: 14px; font-weight: 500; color: var(--vc-text); } .vc-import-option-desc { font-size: 12px; color: var(--vc-text-secondary); line-height: 1.4; } .vc-import-actions { display: flex; justify-content: center; } .vc-toast { position: fixed; top: 5vh; left: 50%; transform: translateX(-50%) translateY(-8px); z-index: 100010; display: flex; align-items: center; gap: 8px; max-width: 80vw; padding: 10px 14px 12px; background: #fff; color: var(--vc-text); font-size: 13px; font-weight: 500; border-radius: 10px; box-shadow: 0 8px 30px rgba(0, 0, 0, 0.18); border: 1px solid var(--vc-border); font-family: var(--vc-font-ui); opacity: 0; pointer-events: none; overflow: hidden; transition: opacity 0.3s ease, transform 0.3s ease; } .vc-toast.vc-show { display: flex !important; opacity: 1; transform: translateX(-50%) translateY(0); pointer-events: auto; animation: vc-toast-pop 0.35s cubic-bezier(0.34, 1.56, 0.64, 1); } @keyframes vc-toast-pop { 0% { opacity: 0; transform: translateX(-50%) translateY(-16px) scale(0.96); } 70% { opacity: 1; transform: translateX(-50%) translateY(3px) scale(1.02); } 100% { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); } } .vc-toast-text { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .vc-toast-emph { display: inline-block; padding: 1px 6px; margin: 0 2px; border-radius: 999px; background: var(--vc-primary-lighter); color: var(--vc-primary-dark); font-weight: 600; } .vc-toast-icon { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 50%; background: var(--vc-primary-light); color: #fff; } .vc-toast-bar { position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: var(--vc-primary-light); transform-origin: left center; opacity: 0; } .vc-toast.vc-show .vc-toast-bar { opacity: 1; animation: vc-toast-progress var(--vc-toast-duration, 2000ms) linear forwards; } @keyframes vc-toast-progress { to { transform: scaleX(0); } } .vc-toast.vc-toast-primary { border-color: var(--vc-primary-light); box-shadow: 0 8px 30px rgba(79, 70, 229, 0.28); } .vc-toast-clickable { cursor: pointer; } .vc-toast-clickable:hover { border-color: var(--vc-primary); } .vc-toast-link { color: var(--vc-primary-dark); font-weight: 600; text-decoration: underline; text-underline-offset: 2px; } .vc-toast-clickable:hover .vc-toast-link { color: var(--vc-primary); text-decoration-thickness: 2px; } .vc-toast-close { flex-shrink: 0; padding: 0 2px; border: none; background: none; color: var(--vc-text-secondary); font-size: 16px; line-height: 1; cursor: pointer; } .vc-toast-close:hover { color: var(--vc-text); }`; var Ld=`.vc-ws-mask { position: fixed; inset: 0; z-index: 100001; background: rgba(0, 0, 0, 0.45); display: none; align-items: center; justify-content: center; font-family: var(--vc-font-ui); } .vc-ws-mask.vc-show { display: flex; } @keyframes vcWsIn { from { opacity: 0; transform: translateY(8px) scale(0.98); } to { opacity: 1; transform: none; } } .vc-ws-panel { width: 460px; max-width: 92vw; max-height: 82vh; display: flex; flex-direction: column; background: var(--vc-bg); border-radius: 14px; box-shadow: 0 12px 40px rgba(0, 0, 0, 0.3); overflow: hidden; color: var(--vc-text); } .vc-ws-mask.vc-show .vc-ws-panel { animation: vcWsIn 0.18s ease; } .vc-ws-header { display: flex; align-items: center; justify-content: space-between; padding: 13px 20px; border-bottom: 1px solid var(--vc-border); } .vc-ws-title { font-size: 15px; font-weight: 600; } .vc-ws-close { width: 28px; height: 28px; border: none; border-radius: 8px; background: transparent; color: var(--vc-text-secondary); font-size: 18px; line-height: 1; cursor: pointer; transition: background 0.15s ease, color 0.15s ease; } .vc-ws-close:hover { background: var(--vc-bg-soft); color: var(--vc-text); } .vc-ws-body { padding: 12px 16px 4px; overflow-y: auto; overscroll-behavior: contain; } .vc-ws-input-row { position: relative; display: flex; align-items: center; } .vc-ws-body .vc-ws-input { display: block; flex: 1; min-width: 0; box-sizing: border-box; margin: 0; padding: 9px 30px 9px 12px; border: 1px solid var(--vc-border); border-radius: 8px; background: var(--vc-surface); color: var(--vc-text); font-size: 13px; font-family: inherit; line-height: 1.4; outline: none; } .vc-ws-body .vc-ws-input:focus { border-color: var(--vc-primary); } @keyframes vcWsInputAttn { 0% { border-color: var(--vc-primary); box-shadow: 0 0 0 3px var(--vc-primary-light); } 100% { border-color: var(--vc-border); box-shadow: none; } } .vc-ws-input-attn { animation: vcWsInputAttn 0.6s ease; } .vc-ws-clear { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); display: none; width: 18px; height: 18px; padding: 0; border: none; border-radius: 50%; background: transparent; color: var(--vc-text-placeholder); cursor: pointer; align-items: center; justify-content: center; transition: color 0.2s, background 0.2s; } .vc-ws-clear::before, .vc-ws-clear::after { content: ''; position: absolute; left: 50%; top: 50%; width: 8px; height: 1.5px; background: currentColor; border-radius: 1px; } .vc-ws-clear::before { transform: translate(-50%, -50%) rotate(45deg); } .vc-ws-clear::after { transform: translate(-50%, -50%) rotate(-45deg); } .vc-ws-input:not(:placeholder-shown) ~ .vc-ws-clear { display: flex; } .vc-ws-clear:hover { color: var(--vc-text); background: var(--vc-hover); } .vc-ws-clear:focus-visible { outline: 2px solid var(--vc-primary-light); outline-offset: 2px; } .vc-ws-hint { margin: 8px 2px 0; font-size: 12px; line-height: 1.5; color: var(--vc-text-secondary); } .vc-ws-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 10px 0 12px; } .vc-ws-fold { grid-column: 1 / -1; display: flex; flex-direction: column; gap: 8px; } .vc-ws-fold-toggle { align-self: stretch; display: flex; align-items: center; justify-content: space-between; gap: 8px; box-sizing: border-box; width: 100%; padding: 8px 12px; border: 1px dashed var(--vc-border); border-radius: 8px; background: transparent; color: var(--vc-text-secondary); font-size: 12px; font-family: inherit; cursor: pointer; transition: border-color 0.15s ease, color 0.15s ease; } .vc-ws-fold-toggle::after { content: ''; flex: none; width: 0; height: 0; border-left: 5px solid currentColor; border-top: 4px solid transparent; border-bottom: 4px solid transparent; transition: transform 0.28s var(--vc-ease-spring); } .vc-ws-fold.vc-show .vc-ws-fold-toggle::after { transform: rotate(90deg); } .vc-ws-fold-toggle:hover { border-color: var(--vc-primary); color: var(--vc-primary); } .vc-ws-fold-toggle:focus-visible { outline: 2px solid var(--vc-primary-light); outline-offset: 2px; } .vc-ws-fold-anim { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 0.28s var(--vc-ease-out); } .vc-ws-fold.vc-show .vc-ws-fold-anim { grid-template-rows: 1fr; } .vc-ws-fold-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; min-height: 0; overflow: hidden; opacity: 0; transform: translateY(-4px); visibility: hidden; transition: opacity 0.12s ease, transform 0.14s ease, visibility 0s linear 0.28s; } .vc-ws-fold.vc-show .vc-ws-fold-list { opacity: 1; transform: none; visibility: visible; transition: opacity 0.2s var(--vc-ease-out) 0.06s, transform 0.24s var(--vc-ease-out) 0.06s, visibility 0s; } @media (prefers-reduced-motion: reduce) { .vc-ws-fold-anim, .vc-ws-fold-list, .vc-ws-fold.vc-show .vc-ws-fold-list, .vc-ws-fold-toggle::after { transition: none; } } .vc-ws-item { display: flex; align-items: center; gap: 8px; min-width: 0; padding: 8px 10px; border: 1px solid var(--vc-border); border-radius: 8px; background: var(--vc-surface); transition: border-color 0.15s ease; } .vc-ws-item:hover { border-color: var(--vc-primary); } .vc-ws-item.vc-ws-item-off { opacity: 0.55; cursor: default; } .vc-ws-item.vc-ws-item-off:hover { border-color: var(--vc-border); } .vc-ws-item.vc-ws-item-visited { opacity: 0.55; } .vc-ws-item.vc-ws-item-visited:hover { opacity: 1; } .vc-ws-check { flex: none; width: 14px; height: 14px; margin: 0; accent-color: var(--vc-primary); cursor: pointer; } .vc-ws-link { flex: 1; min-width: 0; font-size: 13px; font-weight: 500; color: var(--vc-text); text-decoration: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .vc-ws-link:hover { color: var(--vc-primary); } .vc-ws-link:focus-visible { outline: 2px solid var(--vc-primary-light); outline-offset: 2px; border-radius: 4px; } .vc-ws-link-off { color: var(--vc-text-placeholder); pointer-events: none; } .vc-ws-domain { flex: none; max-width: 45%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; color: var(--vc-text-secondary); } .vc-ws-footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 16px 14px; border-top: 1px solid var(--vc-border); } .vc-ws-count { font-size: 12px; color: var(--vc-text-secondary); } .vc-ws-btn { padding: 7px 14px; border: none; border-radius: 8px; background: var(--vc-primary); color: #fff; font-size: 13px; font-family: inherit; cursor: pointer; transition: background 0.15s ease; } .vc-ws-btn:hover { background: var(--vc-primary-dark); } .vc-ws-btn:focus-visible { outline: 2px solid var(--vc-primary-light); outline-offset: 2px; }`; var Wh=[Sd,Ed,_d,kd,Td,Ad,Ld].join("\n"); var Cd=Wh; var Md=`
我的收藏
想看
已看
观看记录
共 0 条收藏
1 / 1
`; var Id=`
{{coverHtml}}
{{siteName}} {{rateHtml}} {{statusButtons}}
{{copyBtnHtml}}{{title}}
{{dateStr}} {{lastPlayed}}
`; var Pd=`{{title}} `; var Od=`
🖼️
`; var eg={panelTemplate:Md,cardTemplate:Id,coverImageTemplate:Pd,defaultCoverTemplate:Od}; var Ie; function Vd(e){const t=Gr(e&&e.cover||"");if(!t||/^[a-z][a-z0-9+.-]*:/i.test(t))return t;const n=Vt(e.coverFrom||e.siteId);const r=n?Et(n):"";return Ge(t,r?"https://"+r:location.href)} o(Vd,"displayCover"); function tg(e,t){const n=ue(t);return(e.domains||[]).some(r=>{const i=ue(r);return n===i||n.endsWith("."+i)})} o(tg,"isSiteDomain"); function lc(e){if(!e||!e.cover)return null;const t=Vt(e.coverFrom||e.siteId);if(!t||typeof t.coverReferer!=="function")return null;let n=null;try{n=new URL(Vd(e))}catch(a){return null}if(n.host===location.host)return null;if(!tg(t,n.host))return null;const r=[n.host];const i=Et(t);if(i)r.push(ue(i));(t.domains||[]).forEach(a=>r.push(ue(a)));const c=r.filter((a,s)=>a&&r.indexOf(a)===s).map(a=>{const s=n.protocol+"//"+a;return{url:s+n.pathname+n.search,referer:t.coverReferer(e.path,s)}});return{url:c[0].url,attempts:c}} o(lc,"proxyPlanOf"); function Rd(){if(!Zt.isPanelOpen())return;Oe.renderedTabs.clear();Zt.renderActiveList()} o(Rd,"refreshPanelIfOpen"); var bo=vd({volume:true,rating:{get:o(()=>gi(),"get"),set:o(e=>{Fs(e);Rd()},"set"),clear:o(()=>{Ll();Rd()},"clear"),confirm:Lt,status:o(()=>Nl(),"status")},usage:o(()=>Vl(),"usage"),engine:{get:o(()=>GM_getValue(gt,true)!==false,"get"),set:o(e=>GM_setValue(gt,e!==false),"set")}}); var bc=hd({listTargetsFn:qu,resolveUrlFn:Bu,warmDomainFn:Fu,setEnabledFn:Nu}); var Zt=sd({state:Oe,pageSize:Uo,loadFn:o(()=>({...Le(),history:Jl()}),"loadFn"),hasHistory:true,filterFn:o((e,t)=>{if(!t)return e;const n=t.toLowerCase();return e.filter(r=>(r.name||"").toLowerCase().includes(n))},"filterFn"),getId:o(e=>e.name,"getId"),getTitle:o(e=>e.name,"getTitle"),getUrl:o(e=>pg(e),"getUrl"),resolveUrlFn:mg,getSiteName:o(e=>{if(!e.siteId)return"";return(Vt(e.siteId)||{}).name||""},"getSiteName"),resolveSiteIdFn:o(e=>{if(!e.siteId)return"";return(Vt(e.siteId)||{}).name||e.siteId||""},"resolveSiteIdFn"),getTime:o(e=>e.updateTime||e.createTime,"getTime"),getStatus:o(e=>cr(e.name),"getStatus"),setStatusFn:Xu,restoreStatusFn:Ju,deleteFn:Ku,batchSetStatusFn:Zu,batchDeleteFn:Qu,exportFn:Hl,importFn:Ul,updateButtonStateFn:o(()=>Be(),"updateButtonStateFn"),openSettingsFn:o(()=>bo.open(),"openSettingsFn"),openWebSearchFn:o(()=>bc.open(Zt.getSearchKeyword()),"openWebSearchFn"),getExtraInfo:o(e=>Au(at(e.name)),"getExtraInfo"),resolveCoverFn:o(e=>{if(!e)return"";const t=lc(e);if(!t)return Vd(e);return go(e.name,t.url)||t.url},"resolveCoverFn"),resolveCoverFallbackFn:o(e=>{const t=lc(e);return t?bd(e.name,t.attempts):Promise.resolve("")},"resolveCoverFallbackFn"),onCoverFailed:o((e,t)=>{if(!e||!e.name)return;if(t&&!/^blob:/i.test(t)&&lc(e))return;su(e.name,navigator.onLine===false);if(navigator.onLine!==false)iu(e.name)},"onCoverFailed"),onCoverLoaded:o(e=>{if(e&&e.name)du(e.name)},"onCoverLoaded"),emptyText:"\u6682\u65E0\u6536\u85CF\u5185\u5BB9",templates:eg,getMetaFn:o(e=>ki(e.name),"getMetaFn"),requestMetaFn:o((e,t,n)=>{if(!gi()){t(null);return}Bl(e,t,n)},"requestMetaFn"),metaStaleFn:o(e=>kl(e.name),"metaStaleFn"),metaEnabledFn:o(()=>true,"metaEnabledFn"),resetRatingQueueFn:o(()=>Fl(),"resetRatingQueueFn"),getOriginRectFn:o(()=>Ie==null?void 0:Ie.getOriginRect(),"getOriginRectFn"),setFloatPanelFn:o(e=>Ie==null?void 0:Ie.setPanelOpen(e),"setFloatPanelFn")}); var yo=Zt.openPanel; var Gd=Zt.closePanel; var uc="vc-global-style"; function xo(){if(!document.getElementById(uc)){const e=document.createElement("style");e.id=uc;e.textContent=Cd;document.head.appendChild(e)}if(!document.head.dataset.vcStyleWatch){document.head.dataset.vcStyleWatch="1";new MutationObserver(()=>{if(!document.getElementById(uc))xo()}).observe(document.head,{childList:true})}} o(xo,"injectStyles"); function ng(){if(!xd()){Hd();vc();return}wd(()=>{Hd();vc()})} o(ng,"mountBodyUi"); function Kd(){xo();lu();ng();const e=[...it,...On];e.forEach(n=>ti(n));ka().then(()=>e.forEach(n=>ti(n)));GM_registerMenuCommand("\u6536\u85CF\u5217\u8868",yo);GM_registerMenuCommand("\u5168\u7F51\u641C\u7D22",()=>bc.open(pt()));GM_registerMenuCommand("\u8BBE\u7F6E",()=>bo.open());let t=location.href;setInterval(()=>{if(location.href!==t){t=location.href;setTimeout(()=>{vc();Be();Yd()},500)}},1e3);document.addEventListener("keydown",n=>{var i,c;if(n.key!=="Escape")return;if(document.querySelector(".vc-settings-mask.vc-show"))return;if(document.querySelector(".vc-ws-mask.vc-show"))return;const r=document.querySelector(".vc-image-preview");if(r==null?void 0:r.classList.contains("vc-show")){qo();return}if((i=gc.getXjumpEl())==null?void 0:i.classList.contains("vc-show")){gc.getXjumpEl().classList.remove("vc-show");return}if((c=Zt.getPanelEl())==null?void 0:c.classList.contains("vc-show"))Gd()})} o(Kd,"initDrama"); var rg=2e3; var Dd=0; var Nd=false; function qd(e){var n,r;if(Hr().video)return;const t=e.target;if((n=t==null?void 0:t.closest)==null?void 0:n.call(t,'a, button, input, textarea, select, [contenteditable="true"], [class*="vc-"]'))return;zn((r=xe())==null?void 0:r.playerFrameSelector,{force:true})} o(qd,"onPageClick"); function Fd(e){if(e===Nd)return;Nd=e;if(e)document.addEventListener("click",qd);else document.removeEventListener("click",qd)} o(Fd,"bindPageClick"); var Se=Ru(); Is(e=>Se.applyVolume(e)); wu(()=>Se.ready()?{time:Se.time(),ended:false}:null); Su(e=>Se.seek(e)); _u(()=>Se.play()); Eu(()=>{mc();Se.detach()}); var fc=tc({getVideo:o(()=>Hr().video,"getVideo"),step:Yo,volumeStep:Wo,onAction:o(e=>oe(e,{tone:"info"}),"onAction"),remote:{ready:o(()=>Se.ready(),"ready"),seek:o(e=>Se.seekBy(e),"seek"),volume:o(e=>Se.bumpVolume(e),"volume"),toggle:o(()=>{if(Se.paused())Se.play();else Se.pause()},"toggle")},onNoVideo:o(()=>{var e;if(!zn((e=xe())==null?void 0:e.playerFrameSelector,{force:true}))return;if(Date.now()-Dd{if(e===window||yn.has(e))return;if(!Bd(e))return;const t=tc({win:e,getVideo:o(()=>Bd(e),"getVideo"),step:Yo,volumeStep:Wo,onAction:o(n=>oe(n,{tone:"info"}),"onAction"),exclusive:true,remote:{ready:o(()=>Se.ready(),"ready"),seek:o(n=>Se.seekBy(n),"seek"),volume:o(n=>Se.bumpVolume(n),"volume"),toggle:o(()=>{if(Se.paused())Se.play();else Se.pause()},"toggle")}});t.enable();yn.set(e,t)});yn.forEach((e,t)=>{if(ig(t))return;e.disable();yn.delete(t)})} o(pc,"refreshFrameKeyboards"); function cg(){if(sr){clearInterval(sr);sr=null}if(xn){xn.disconnect();xn=null}} o(cg,"stopFrameKbWatch"); function jd(){return Array.from(document.querySelectorAll("iframe")).map(e=>String(e.getAttribute("src")||"")).join("|")} o(jd,"frameSigOf"); function ag(){if(sr)return;sr=setInterval(pc,og);if(xn||typeof MutationObserver!=="function"||!document.documentElement)return;dc=jd();xn=new MutationObserver(()=>{const e=jd();if(e===dc)return;dc=e;pc()});xn.observe(document.documentElement,{childList:true,subtree:true})} o(ag,"startFrameKbWatch"); function sg(){cg();yn.forEach(e=>e.disable());yn.clear()} o(sg,"stopFrameKeyboards"); Se.onKey(e=>fc.handleRemoteKey(e)); var $d=Os({getVolume:o(()=>Number(je("volume"))/100,"getVolume")}); var Nt=null; function zd(e){if(!e)return;const t=pt();if(!t||Nt&&Nt.name===t)return;if(Nt)Nt.stop();Nt={name:t,stop:Tu(e,t)}} o(zd,"ensurePlaybackSession"); function mc(){if(!Nt)return;Nt.stop();Nt=null} o(mc,"releasePlaybackSession"); function vc(){const e=xe();if(!e){mc();return}const t=e.pageType();const n=t==="play"||t==="detail"&&e.trackPlaybackOnDetail;Kl(pt());if(typeof e.onPageReady==="function")e.onPageReady();if(t==="detail"){fo();[600,1500,3e3].forEach(r=>setTimeout(fo,r));if(e.isPlayUrl&&!document.body.dataset.vcDramaPlayClickBound){document.body.dataset.vcDramaPlayClickBound="1";document.addEventListener("click",r=>{const i=r.target.closest("a");if(i&&e.isPlayUrl(i.href))fo()})}}if(n){zd(e);fc.enable();pc();ag();$d.start();Fd(true);zn(e.playerFrameSelector);setTimeout(()=>zd(xe()),1500);[600,1500,3e3].forEach(r=>setTimeout(()=>zn(e.playerFrameSelector),r));Xi(e);[1500,3e3].forEach(r=>setTimeout(()=>Xi(xe()),r));Se.attach(e);[1500,3e3].forEach(r=>setTimeout(()=>Se.attach(xe()),r))}else{mc();fc.disable();sg();$d.stop();Se.detach();Fd(false);Wi()}if(t==="detail"||t==="play"){Ud();[1500,3e3].forEach(r=>setTimeout(Ud,r))}yg();xg();[1500,3e3].forEach(r=>setTimeout(()=>{Be();Yd()},r))} o(vc,"enhancePage"); function lg(){return Vo} o(lg,"getPositionKey"); function ug(){const e=xe();const t=e?[e,...it.filter(r=>r.id!==e.id)]:it;const n=[];t.forEach(r=>{n.push(`${Vo}_${r.id}`);n.push(`${Xc}_${r.id}`)});return n} o(ug,"getLegacyPositionKeys"); function dg(){if(Qi()&&pt())Vu();else yo()} o(dg,"onPrimaryClick"); function fg(){var e;if((e=Zt.getPanelEl())==null?void 0:e.classList.contains("vc-show"))Gd();else yo()} o(fg,"togglePanel"); function Hd(){Ie=dd({positionKeyFn:lg,legacyPositionKeysFn:ug,onWant:Hu,onWatched:Uu,onOpenPanel:yo,onTogglePanel:fg,onPrimaryClick:dg,getPrimaryStateFn:o(()=>cr(pt()),"getPrimaryStateFn"),getPrimaryIntentFn:Gu,isDetailPageFn:Qi,updateButtonStateFn:Be,onVisibilityChange:Sg,onWebSearch:o(()=>bc.open(pt()),"onWebSearch")});Ie.create()} o(Hd,"createFloatButtons"); function Yd(){if(Ie)Ie.updateVisibility()} o(Yd,"updateButtonVisibility"); function Be(){if(Ie)Ie.refreshPrimary();const e=Ie==null?void 0:Ie.getWantBtn();const t=Ie==null?void 0:Ie.getWatchedBtn();if(!e||!t)return;const n=pt();if(!n){e.classList.remove("vc-active");t.classList.remove("vc-active");return}e.classList.toggle("vc-active",po(n,"want"));t.classList.toggle("vc-active",po(n,"watched"))} o(Be,"updateButtonState"); function pg(e){if(!e.siteId)return"";const t=Vt(e.siteId);if(!t)return"";const n=Et(t);if(!n)return"";return"https://"+n+(e.path||"")} o(pg,"buildDramaUrl"); function mg(e,t){const n=Vt(e.siteId);if(!n||!n.domains||!n.domains.length)return Promise.resolve(t||"");return cn(n).then(r=>r?"https://"+r+(e.path||""):t||"")} o(mg,"resolveDramaUrl"); function vg(e){const t=Le();const n=new Map;(t.watched||[]).forEach(i=>n.set(J(i.name),"watched"));(t.want||[]).forEach(i=>n.set(J(i.name),"want"));const r=new Map;(e||[]).forEach(i=>{const c=n.get(J(i));if(c)r.set(i,c)});return r} o(vg,"buildFavIndex"); var Wd=fd({getSiteFn:xe,buildFavIndexFn:vg,buildItemFn:o((e,t)=>{const{element:n,name:r,cover:i,path:c}=e;if(!r)return null;return{name:r,cover:Ge(i),path:c,siteId:t.id,createTime:Date.now(),updateTime:Date.now(),element:n}},"buildItemFn"),getIdFn:o(e=>e.name,"getIdFn"),isFavoritedFn:po,toggleFavoriteFn:$u,refreshItemFn:o((e,t,n)=>{if(!e.element||!(t==null?void 0:t.getListCards))return;const r=t.getListCards().find(i=>i.element===e.element);if(!r)return;if(r.cover)e.cover=r.cover},"refreshItemFn"),afterToggleFn:Be,afterInjectFn:o(e=>{wg(e);bg(e)},"afterInjectFn")}); var lr=[]; var hc=null; function hg(){hc=null;if(!lr.length)return;Ai(lr.splice(0,lr.length))} o(hg,"flushPendingRatings"); function gg(){if(hc)return;hc=setTimeout(hg,800)} o(gg,"scheduleRatingFlush"); function bg(e){const t=xe();if(!t||typeof t.getSiteRating!=="function")return;(e||[]).forEach(n=>{const r=n&&n.element;if(!r||!n.name||r.dataset.vcRated===n.name)return;const i=t.getSiteRating(r);if(!i)return;r.dataset.vcRated=n.name;lr.push({name:n.name,rating:i})});if(lr.length)gg()} o(bg,"harvestRatingsFromList"); function yg(){ou();Wd.inject()} o(yg,"injectListFavoriteButtons"); function xg(){if(document.body.dataset.vcDramaListPreloadBound)return;document.body.dataset.vcDramaListPreloadBound="1";document.addEventListener("click",e=>{const t=e.target;if(!t||!t.closest)return;if(t.closest(".vc-status"))return;const n=xe();if(!n||!n.getListCards)return;const r=n.getListCards()||[];const i=r.find(c=>c.element&&c.element.contains(t));if(!i||!i.name||!i.cover)return;It(i.name,i.cover)},true)} o(xg,"bindListCardClickPreload"); function wg(e){const t=xe();if(!t)return;const n=e||(t.getListCards?t.getListCards():[]);n.forEach(r=>{if(!r||!r.name)return;if(!cu(r.name))return;const i=cs(r.element);if(!i)return;jn("[\u5F71\u89C6\u6536\u85CF] \u5217\u8868\u9875\u547D\u4E2D\u5F85\u4FEE\u5C01\u9762\uFF1A",r.name);vn(r.name,i,t.id)})} o(wg,"repairCoversFromList"); function Sg(){Wd.refreshAll()} o(Sg,"refreshAllMiniButtons"); function Eg(){return Cn} o(Eg,"getXjumpPositionKey"); function _g(){if(GM_getValue(Cn,null))return;const e=xe();if(!e)return;const t=GM_getValue(`${Cn}_${e.id}`,null);if(t)GM_setValue(Cn,t)} o(_g,"migrateXjumpPosition"); var gc=pd({getSiteFn:xe,getKeywordFn:o(()=>{const e=xe();if(!e)return null;const t=e.pageType();let n=null;if(t==="detail"&&e.getDetailInfo)n=(e.getDetailInfo()||{}).name||null;else if(t==="play"&&e.getPlayInfo)n=(e.getPlayInfo()||{}).name||null;if(!n)return null;return hr(n)[1]||n},"getKeywordFn"),getPositionKeyFn:Eg,getAllSitesFn:o(()=>[...it,...On],"getAllSitesFn"),pickDomainFn:Et,findAliveDomainFn:cn,siteIdField:"id"}); function Ud(){_g();gc.inject()} o(Ud,"injectCrossSiteJump"); var kg=[1200,3e3,6e3]; var Tg=2e4; var Ag=500; function Xd(e){let t=false;let n=null;let r=0;function i(){if(t)return true;let s=false;try{s=!!e()}catch(l){s=false}if(!s)return false;t=true;if(n)n.disconnect();return true}o(i,"boot");function c(){if(t)return;const s=Date.now();if(s-rsetTimeout(i,s));try{n=new MutationObserver(c);n.observe(document.documentElement,{childList:true,subtree:true});setTimeout(()=>{if(n)n.disconnect()},Tg)}catch(s){}}o(a,"start");if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",a,{once:true})}else{a()}} o(Xd,"bootWithGateRetry"); var Lg=3e4; var Cg=5e3; var Mg=6e4; var Ig=null; function We(e){const t=Number(e);return Number.isFinite(t)?t:0} o(We,"num"); function Pg(e){const t=Array.isArray(e)?e.filter(Boolean):[];if(!t.length)return null;const n=o(c=>(c.videoWidth||0)*(c.videoHeight||0),"area");const r=t.filter(c=>c.currentSrc||(c.readyState||0)>0);const i=r.length?r:t;return i.slice().sort((c,a)=>n(a)-n(c))[0]} o(Pg,"pickBestVideo"); function Jd(){if(window.self===window.top)return;V("[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1Aiframe \u5185\u5DF2\u542F\u52A8\uFF08"+location.hostname+"\uFF09\uFF0C\u5F00\u59CB\u627E video");try{window.parent.postMessage(rt(de.BOOT,{host:location.hostname,depth:0}),"*")}catch(y){}let e="";let t=null;let n=null;let r=null;let i=null;let c=0;let a=false;let s=null;const l=[];const d=o(y=>{try{window.parent.postMessage(y,"*")}catch(C){}},"post");const f=o(()=>!!t&&t.isConnected,"alive");function k(y){if(!y)return null;for(const C of document.querySelectorAll("iframe")){if(C.contentWindow===y)return C}return null}o(k,"childFrameOf");function g(y){if(s){try{s.postMessage(y,"*");return}catch(C){}}for(const C of document.querySelectorAll("iframe")){try{if(C.contentWindow)C.contentWindow.postMessage(y,"*")}catch(S){}}}o(g,"relayDown");function _(){if(!f()||!e)return;c=Date.now();d(rt(de.STATE,{nonce:e,depth:0,time:We(t.currentTime),dur:We(t.duration),paused:!!t.paused,vol:We(t.volume),muted:!!t.muted}))}o(_,"report");function b(){if(!f())return;d(rt(de.READY,{depth:0,dur:We(t.duration),w:We(t.videoWidth),h:We(t.videoHeight),src:String(t.currentSrc||"")}))}o(b,"announce");function q(){if(!f())return;t.addEventListener("timeupdate",()=>{if(Date.now()-c{t.addEventListener(y,_)});t.addEventListener("loadedmetadata",()=>{F();_()})}o(q,"bindVideo");function x(y){if(!f())return;if(y.op===ze.VOLUME){Gt(t,y.v,{unmute:true});return}if(y.op===ze.SEEK){if(!t||t.readyState<1){A();if(t&&t.readyState>=1){try{t.currentTime=Math.max(0,We(y.to))}catch(C){}return}l.length=0;l.push(y);w();return}try{t.currentTime=Math.max(0,We(y.to))}catch(C){}return}if(y.op===ze.SEEK_BY){const C=We(y.by);if(!C||(t.readyState||0)<1)return;try{t.currentTime=Math.max(0,We(t.currentTime)+C)}catch(S){}return}if(y.op===ze.PLAY){Promise.resolve(t.play()).catch(()=>{});return}if(y.op===ze.PAUSE){t.pause();return}if(y.op===ze.STATE)_()}o(x,"runCmd");function F(){if(!f())return;while(l.length)x(l.shift())}o(F,"flushPending");function h(){if(n){n.disconnect();n=null}if(r){clearTimeout(r);r=null}if(i){clearInterval(i);i=null}l.length=0}o(h,"stopWait");const M=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"," ","Spacebar"];function D(y){if(y.ctrlKey||y.altKey||y.metaKey)return;if(!M.includes(y.key))return;if(y.defaultPrevented)return;if(!a||!e)return;y.preventDefault();y.stopPropagation();d(rt(de.KEY,{key:y.key}))}o(D,"onKeyDownCapture");function $(y){const C=y.target;if(!C||!C.tagName||C.tagName.toLowerCase()!=="video")return;if(!t||C!==t)return;let S=false;try{S=C.matches(":hover")}catch(p){S=false}if(!S)return;try{C.blur()}catch(p){}}o($,"onFocusIn");window.addEventListener("keydown",D,true);window.addEventListener("focusin",$,true);window.addEventListener("message",y=>{const C=ao(y.data);if(!C)return;if(y.source!==window.parent){if(!k(y.source))return;if(C.t===de.BOOT||C.t===de.READY||C.t===de.STATE||C.t===de.KEY){if(s!==y.source){s=y.source;V("[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u64AD\u653E\u5668\u5728\u66F4\u5185\u5C42\uFF0C\u672C\u5C42\u6539\u4E3A\u4E2D\u7EE7\uFF08"+location.hostname+"\uFF09")}d(rt(C.t,Object.assign({},C,{depth:(Number(C.depth)||0)+1})))}return}if(C.t===de.RELEASE){if(e&&C.nonce&&C.nonce!==e)return;e="";a=false;return}if(C.t===de.HELLO){e=String(C.nonce||"");if(!a){a=true;V("[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u5DF2\u88AB\u7236\u9875\u9762\u8BA4\u9886\uFF08"+location.hostname+"\uFF09\uFF0C\u5F00\u59CB\u4E0A\u62A5\u72B6\u6001")}if(!f()){g(rt(de.HELLO,{nonce:e}));return}_();return}if(C.t===de.CMD){if(!e||C.nonce!==e)return;if(!f()){g(rt(de.CMD,C));return}x(C)}});let T=null;let R=0;const z=1e3;function B(){const y=[...document.querySelectorAll("video")];if(y.length){T=null;return y}const C=T?T.filter(S=>S.isConnected):[];if(C.length)return C;if(Date.now()S.tagName==="VIDEO");if(!T.length)R=Date.now()+z;return T}o(B,"findVideoList");function A(){const y=Pg(B());if(!y)return false;if(y===t&&f())return true;t=y;q();b();V("[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u9501\u5B9A\u64AD\u653E\u5668 video\uFF08"+We(y.videoWidth)+"x"+We(y.videoHeight)+"\uFF0C\u65F6\u957F "+Math.round(We(y.duration))+" \u79D2\uFF09");return true}o(A,"tryFind");function w(){if(i)return;const y=Date.now();i=setInterval(()=>{if(!l.length||Date.now()-y>Mg){l.length=0;clearInterval(i);i=null;return}A();if(t&&t.readyState>=1){clearInterval(i);i=null;F();_()}},500)}o(w,"ensureFlushLoop");if(!A()){const y=document.querySelectorAll("iframe").length;V("[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u672C\u5C42\u8FD8\u6CA1\u6709 video"+(y?"\uFF0C\u4F46\u91CC\u9762\u6709 "+y+" \u4E2A iframe \u2014\u2014 \u53EF\u80FD\u662F\u5D4C\u5957\u64AD\u653E\u5668\uFF0C\u5355\u5C42\u6865\u63A5\u8986\u76D6\u4E0D\u5230":""))}n=new MutationObserver(()=>{A()});n.observe(document.documentElement||document,{childList:true,subtree:true});r=setTimeout(h,Lg);Ig={stop:h,snapshot:o(()=>({observer:!!n,wait:!!r,flush:!!i,pending:l.length}),"snapshot")}} o(Jd,"startBridge"); var Og=window.self!==window.top; if(Og){Jd()} else{Vr();Tt();Xd(()=>{hs();if(!xe())return false;Kd();return true});if(GM_getValue(gt,true)===false&&Pr({ignoreEngineSwitch:true})){GM_registerMenuCommand("\u8BBE\u7F6E",()=>{xo();bo.open()})}} })();