| 1 |
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).singlefileBootstrap={})}(this,function(e){"use strict";const t="single-file-load-image",s="single-file-image-loaded",o="_singleFile_fontFaces",n="_singleFile_worklets",i=globalThis.CustomEvent,a=globalThis.document,r=globalThis.Document,l=globalThis.JSON,d=globalThis.MutationObserver;let c,u;function m(){a instanceof r&&(a.addEventListener("single-file-new-font-face",e=>{const t=e.detail,s=Object.assign({},t);delete s.src,c.set(l.stringify(s),t)}),a.addEventListener("single-file-delete-font",e=>{const t=e.detail,s=Object.assign({},t);delete s.src,c.delete(l.stringify(s))}),a.addEventListener("single-file-clear-fonts",()=>c=new Map),a.addEventListener("single-file-new-worklet",e=>{const t=e.detail;u.set(t.moduleURL,t)}))}c=globalThis.window[o]?globalThis.window[o]:globalThis.window[o]=new Map,u=globalThis.window[n]?globalThis.window[n]:globalThis.window[n]=new Map,m(),new d(m).observe(a,{childList:!0});const g="[\\x20\\t\\r\\n\\f]",h=new RegExp("\\\\([\\da-f]{1,6}"+g+"?|("+g+")|.)","ig");const p="single-file-",f="_singleFile_waitForUserScript",T="__frameTree__::",b=p+"on-before-capture",E=p+"on-after-capture",y=p+"request-get-adopted-stylesheets",w=p+"response-get-adopted-stylesheets",I=p+"unregister-request-get-adopted-stylesheets",A=p+"user-script-init",v="data-"+p+"removed-content",S="data-"+p+"hidden-content",R="data-"+p+"kept-content",N="data-"+p+"hidden-frame",P="data-"+p+"preserved-space-element",M="data-"+p+"shadow-root-element",L="data-"+p+"win-id",C="data-"+p+"image",O="data-"+p+"poster",D="data-"+p+"video",_="data-"+p+"canvas",x="data-"+p+"movable-style",F="data-"+p+"input-value",k="data-"+p+"input-checked",U="data-"+p+"lazy-loaded-src",q="data-"+p+"stylesheet",H="data-"+p+"disabled-noscript",B="data-"+p+"async-script",V="*:not(base):not(link):not(meta):not(noscript):not(script):not(style):not(template):not(title)",W=["NOSCRIPT","DISABLED-NOSCRIPT","META","LINK","STYLE","TITLE","TEMPLATE","SOURCE","OBJECT","SCRIPT","HEAD","BODY"],z=["SCRIPT","NOSCRIPT","META","LINK","TEMPLATE"],Y=/^'(.*?)'$/,j=/^"(.*?)"$/,G={regular:"400",normal:"400",bold:"700",bolder:"700",lighter:"100"},K="single-file-ui-element",$="data:,",X="data-sf-nesting-track-id",Z=(e,t,s)=>globalThis.addEventListener(e,t,s),J=globalThis.JSON,Q=globalThis.CustomEvent,ee=globalThis.MutationObserver,te=globalThis.URL,se=globalThis.DOMParser;function oe(e,t,s){e.querySelectorAll("noscript:not(["+H+"])").forEach(e=>{e.setAttribute(H,e.textContent),e.textContent=""}),function(e){e.querySelectorAll("meta[http-equiv=refresh]").forEach(e=>{e.removeAttribute("http-equiv"),e.setAttribute("disabled-http-equiv","refresh")})}(e),e.head&&e.head.querySelectorAll(V).forEach(e=>e.hidden=!0),e.querySelectorAll("svg foreignObject").forEach(e=>{const t=e.querySelectorAll("html > head > "+V+", html > body > "+V);t.length&&(Array.from(e.childNodes).forEach(e=>e.remove()),t.forEach(t=>e.appendChild(t)))});const o=new Map;let n;t&&e.documentElement?(!function(e){i(e.body);const t=function(e,t){const s=(new se).parseFromString(e,"text/html");s.head||s.documentElement.insertBefore(s.createElement("HEAD"),s.body);let o=s.querySelector("base");o&&o.getAttribute("href")||(o&&o.remove(),o=s.createElement("base"),o.setAttribute("href",t),s.head.insertBefore(o,s.head.firstChild));return s}(ge(e)),s=a(e.body),o=a(t.body),n=new Set;function i(e,t=0,s=""){const o=s?`${s}.${t+1}`:`${t+1}`;e.setAttribute(X,o),Array.from(e.children).forEach((e,t)=>i(e,t,o))}function a(e){const t={};return s(e),t;function s(e){if(e.getAttribute){const o=e.getAttribute(X);o&&(t[o]=e),Array.from(e.children).forEach(s)}}}function r(e,t){const s=e.getAttribute(X);s&&!t.has(s)&&e.removeAttribute(X),Array.from(e.children).forEach(e=>r(e,t))}Object.keys(s).forEach(t=>{if(t in o){if((s[t].parentElement?.getAttribute(X)||null)!==(o[t]?.parentElement?.getAttribute(X)||null)){let o=s[t];for(;o&&o!==e.body;){const e=o.getAttribute(X);e&&n.add(e),o=o.parentElement}}}}),r(e.body,n)}(e),n=ne(t,e,e.documentElement,s),s.moveStylesInHead&&e.querySelectorAll("body style, body ~ style").forEach(e=>{const s=he(t,e);s&&de(e,s)&&(e.setAttribute(x,""),n.markedElements.push(e))})):n={canvases:[],images:[],posters:[],videos:[],usedFonts:[],shadowRoots:[],markedElements:[]};let i="";if(e.referrer)try{i=new te("/",new te(e.referrer).origin).href}catch(e){}return{canvases:n.canvases,fonts:Array.from(c.values()),worklets:Array.from(u.values()),stylesheets:ue(e),images:n.images,posters:n.posters,videos:n.videos,usedFonts:Array.from(n.usedFonts.values()),shadowRoots:n.shadowRoots,referrer:i,markedElements:n.markedElements,invalidElements:o,scrollPosition:{x:t.scrollX,y:t.scrollY},adoptedStyleSheets:ie(e.adoptedStyleSheets)}}function ne(e,t,s,o,n={usedFonts:new Map,canvases:[],images:[],posters:[],videos:[],shadowRoots:[],markedElements:[]},i=new Map,a){if(s.childNodes){Array.from(s.childNodes).filter(t=>t instanceof e.HTMLElement||t instanceof e.SVGElement||t instanceof globalThis.HTMLElement||t instanceof globalThis.SVGElement).forEach(s=>{let r,l,d;if(!o.autoSaveExternalSave&&(o.removeHiddenElements||o.removeUnusedFonts||o.compressHTML)&&(d=he(e,s),(s instanceof e.HTMLElement||s instanceof globalThis.HTMLElement)&&o.removeHiddenElements&&(l=(a||s.closest("html > head"))&&W.includes(s.tagName.toUpperCase())||s.closest("details"),l||(r=a||de(s,d),r&&!z.includes(s.tagName.toUpperCase())&&(s.setAttribute(S,""),n.markedElements.push(s)))),!r)){if(o.compressHTML&&d){const e=d.getPropertyValue("white-space");e&&e.startsWith("pre")&&(s.setAttribute(P,""),n.markedElements.push(s))}o.removeUnusedFonts&&(ae(d,o,n.usedFonts),ae(he(e,s,":first-letter"),o,n.usedFonts),ae(he(e,s,":before"),o,n.usedFonts),ae(he(e,s,":after"),o,n.usedFonts))}!function(e,t,s,o,n,i,a){const r=s.tagName&&s.tagName.toUpperCase();if("CANVAS"==r)try{n.canvases.push({dataURI:s.toDataURL("image/png"),backgroundColor:a.getPropertyValue("background-color")}),s.setAttribute(_,n.canvases.length-1),n.markedElements.push(s)}catch(e){}if("IMG"==r){const t={currentSrc:i?$:o.loadDeferredImages&&s.getAttribute(U)||s.currentSrc};if(n.images.push(t),s.setAttribute(C,n.images.length-1),n.markedElements.push(s),s.removeAttribute(U),a=a||he(e,s)){t.size=function(e,t,s){let o=t.naturalWidth,n=t.naturalHeight;if(!o&&!n){const i=null==t.getAttribute("style");if(s=s||he(e,t)){let e,a,r,l,d,c,u,m,g=!1;if("content-box"==s.getPropertyValue("box-sizing")){const e=t.style.getPropertyValue("box-sizing"),s=t.style.getPropertyPriority("box-sizing"),o=t.clientWidth;t.style.setProperty("box-sizing","border-box","important"),g=t.clientWidth!=o,e?t.style.setProperty("box-sizing",e,s):t.style.removeProperty("box-sizing")}e=me("padding-left",s),a=me("padding-right",s),r=me("padding-top",s),l=me("padding-bottom",s),g?(d=me("border-left-width",s),c=me("border-right-width",s),u=me("border-top-width",s),m=me("border-bottom-width",s)):d=c=u=m=0,o=Math.max(0,t.clientWidth-e-a-d-c),n=Math.max(0,t.clientHeight-r-l-u-m),i&&t.removeAttribute("style")}}return{pxWidth:o,pxHeight:n}}(e,s,a);const o=a.getPropertyValue("box-shadow"),n=a.getPropertyValue("background-image");o&&"none"!=o||n&&"none"!=n||!(t.size.pxWidth>1||t.size.pxHeight>1)||(t.replaceable=!0,t.backgroundColor=a.getPropertyValue("background-color"),t.objectFit=a.getPropertyValue("object-fit"),t.boxSizing=a.getPropertyValue("box-sizing"),t.objectPosition=a.getPropertyValue("object-position"))}}if("VIDEO"==r){const o=s.currentSrc;if(o&&!o.startsWith("blob:")&&!o.startsWith("data:")){const t=he(e,s.parentNode);n.videos.push({positionParent:t&&t.getPropertyValue("position"),src:o,size:{pxWidth:s.clientWidth,pxHeight:s.clientHeight,videoWidth:s.videoWidth,videoHeight:s.videoHeight},currentTime:s.currentTime}),s.setAttribute(D,n.videos.length-1)}if(!s.getAttribute("poster")){const e=t.createElement("canvas"),o=e.getContext("2d");e.width=s.videoWidth,e.height=s.videoHeight;try{o.drawImage(s,0,0,e.width,e.height),n.posters.push(e.toDataURL("image/png")),s.setAttribute(O,n.posters.length-1),n.markedElements.push(s)}catch(e){}}}"IFRAME"==r&&i&&o.removeHiddenElements&&(s.setAttribute(N,""),n.markedElements.push(s));"INPUT"==r&&("password"!=s.type&&(s.setAttribute(F,s.value),n.markedElements.push(s)),"radio"!=s.type&&"checkbox"!=s.type||(s.setAttribute(k,s.checked),n.markedElements.push(s)));"TEXTAREA"==r&&(s.setAttribute(F,s.value),n.markedElements.push(s));"SELECT"==r&&s.querySelectorAll("option").forEach(e=>{e.selected&&(e.setAttribute(F,""),n.markedElements.push(e))});"SCRIPT"==r&&(s.async&&""!=s.getAttribute("async")&&"async"!=s.getAttribute("async")&&(s.setAttribute(B,""),n.markedElements.push(s)),s.textContent=s.textContent.replace(/<\/script>/gi,"<\\/script>"))}(e,t,s,o,n,r,d);const c=!(s instanceof e.SVGElement||s instanceof globalThis.SVGElement)&&re(s);if(c&&!s.classList.contains(K)&&"single-file-infobar"!=s.tagName.toLowerCase()){const a={};s.setAttribute(M,n.shadowRoots.length),n.markedElements.push(s),n.shadowRoots.push(a);try{if(c.adoptedStyleSheets){const e=e=>a.adoptedStyleSheets=e.detail.adoptedStyleSheets;c.addEventListener(w,e),c.dispatchEvent(new Q(y,{bubbles:!0})),a.adoptedStyleSheets||s.dispatchEvent(new Q(y,{bubbles:!0})),c.removeEventListener(w,e)}}catch(e){}ne(e,t,c,o,n,i,r),a.content=c.innerHTML,a.mode=c.mode,a.delegateFocus=c.delegatesFocus,a.clonable=c.clonable,a.serializable=c.serializable;try{c.adoptedStyleSheets&&void 0===c.adoptedStyleSheets.length&&c.dispatchEvent(new Q(I,{bubbles:!0}))}catch(e){}}ne(e,t,s,o,n,i,r),!o.autoSaveExternalSave&&o.removeHiddenElements&&a&&(l||""==s.getAttribute(R)?s.parentElement&&(s.parentElement.setAttribute(R,""),n.markedElements.push(s.parentElement)):r&&(s.setAttribute(v,""),n.markedElements.push(s)))})}return n}function ie(e,t=new Map){if(e){const s=[];for(const o of Array.from(e))if(t.has(o))s.push(t.get(o));else{let e="";if(o&&o.cssRules)for(const t of o.cssRules)e+=t.cssText+"\n";t.set(o,e),s.push(e)}return s}return[]}function ae(e,t,s){if(e){const o=e.getPropertyValue("font-style")||"normal";e.getPropertyValue("font-family").split(",").forEach(n=>{if(n=le(n),!t.loadedFonts||t.loadedFonts.find(e=>le(e.family)==n&&e.style==o)){const t=(i=e.getPropertyValue("font-weight"),G[i.toLowerCase().trim()]||i),a=e.getPropertyValue("font-variant")||"normal",r=[n,t,o,a];s.set(J.stringify(r),[n,t,o,a])}var i})}}function re(e){const t=globalThis.chrome;if(e.openOrClosedShadowRoot)return e.openOrClosedShadowRoot;if(!(t&&t.dom&&t.dom.openOrClosedShadowRoot))return e.shadowRoot;try{return t.dom.openOrClosedShadowRoot(e)}catch(t){return e.shadowRoot}}function le(e=""){return function(e){e=e.match(Y)?e.replace(Y,"$1"):e.replace(j,"$1");return e.trim()}((t=e.trim(),t.replace(h,(e,t,s)=>{const o="0x"+t-65536;return o!=o||s?t:o<0?String.fromCharCode(o+65536):String.fromCharCode(o>>10|55296,1023&o|56320)}))).toLowerCase();var t}function de(e,t){let s=!1;if(t){const o=t.getPropertyValue("display"),n=t.getPropertyValue("opacity"),i=t.getPropertyValue("visibility");if(s="none"==o,!s&&("0"==n||"hidden"==i)&&e.getBoundingClientRect){const t=e.getBoundingClientRect();s=!t.width&&!t.height}}return Boolean(s)}function ce(e,t,s){if(e.querySelectorAll("["+H+"]").forEach(e=>{e.textContent=e.getAttribute(H),e.removeAttribute(H)}),e.querySelectorAll("meta[disabled-http-equiv]").forEach(e=>{e.setAttribute("http-equiv",e.getAttribute("disabled-http-equiv")),e.removeAttribute("disabled-http-equiv")}),e.head&&e.head.querySelectorAll("*:not(base):not(link):not(meta):not(noscript):not(script):not(style):not(template):not(title)").forEach(e=>e.removeAttribute("hidden")),!t){const s=[v,N,S,P,C,O,D,_,F,k,M,q,B];t=e.querySelectorAll(s.map(e=>"["+e+"]").join(","))}t.forEach(e=>{e.removeAttribute(v),e.removeAttribute(S),e.removeAttribute(R),e.removeAttribute(N),e.removeAttribute(P),e.removeAttribute(C),e.removeAttribute(O),e.removeAttribute(D),e.removeAttribute(_),e.removeAttribute(F),e.removeAttribute(k),e.removeAttribute(M),e.removeAttribute(q),e.removeAttribute(B),e.removeAttribute(x)}),s&&s.forEach((e,t)=>e.replaceWith(t))}function ue(e){if(e){const t=[];return e.querySelectorAll("style").forEach((s,o)=>{try{if(!s.sheet.disabled){const n=e.createElement("style");n.textContent=s.textContent,e.body.appendChild(n);const i=n.sheet;n.remove();const a=Array.from(i.cssRules).map(e=>e.cssText).join("\n"),r=Array.from(s.sheet.cssRules).map(e=>e.cssText).join("\n");i&&a==r||(s.setAttribute(q,o),t[o]=Array.from(s.sheet.cssRules).map(e=>e.cssText).join("\n"))}}catch(e){}}),t}}function me(e,t){if(t.getPropertyValue(e).endsWith("px"))return parseFloat(t.getPropertyValue(e))}function ge(e){const t=e.doctype;let s="";return t&&(s="<!DOCTYPE "+t.nodeName,t.publicId?(s+=' PUBLIC "'+t.publicId+'"',t.systemId&&(s+=' "'+t.systemId+'"')):t.systemId&&(s+=' SYSTEM "'+t.systemId+'"'),t.internalSubset&&(s+=" ["+t.internalSubset+"]"),s+="> "),s+e.documentElement.outerHTML}function he(e,t,s){try{return e.getComputedStyle(t,s)}catch(e){}}const pe={LAZY_SRC_ATTRIBUTE_NAME:U,SINGLE_FILE_UI_ELEMENT_CLASS:K},fe="attributes",Te=globalThis.browser,be=globalThis.document,Ee=globalThis.MutationObserver,ye=new Map;let we;async function Ie(e){if(be.documentElement){ye.clear();const o=be.body?Math.max(be.body.scrollHeight,be.documentElement.scrollHeight):be.documentElement.scrollHeight,n=be.body?Math.max(be.body.scrollWidth,be.documentElement.scrollWidth):be.documentElement.scrollWidth;if(o>globalThis.innerHeight||n>globalThis.innerWidth){const r=Math.max(o-1.5*globalThis.innerHeight,0),l=Math.max(n-1.5*globalThis.innerWidth,0);if(globalThis.scrollY<r||globalThis.scrollX<l)return function(e){return we=0,new Promise(async o=>{let n;const r=new Set,l=new Ee(async t=>{if((t=t.filter(e=>e.type==fe)).length){t.filter(e=>{if("src"==e.attributeName&&(e.target.setAttribute(pe.LAZY_SRC_ATTRIBUTE_NAME,e.target.src),e.target.addEventListener("load",c)),"src"==e.attributeName||"srcset"==e.attributeName||e.target.tagName&&"SOURCE"==e.target.tagName.toUpperCase())return!e.target.classList||!e.target.classList.contains(pe.SINGLE_FILE_UI_ELEMENT_CLASS)}).length&&(n=!0,await ve(l,e,g),r.size||await Ae(l,e,g))}});async function d(t){await Re("idleTimeout",async()=>{n?we<10&&(we++,Pe("idleTimeout"),await d(Math.max(500,t/2))):(Pe("loadTimeout"),Pe("maxTimeout"),Se(l,e,g))},t,e.loadDeferredImagesNativeTimeout)}function c(e){const t=e.target;t.removeAttribute(pe.LAZY_SRC_ATTRIBUTE_NAME),t.removeEventListener("load",c)}async function u(t){n=!0,await ve(l,e,g),await Ae(l,e,g),t.detail&&r.add(t.detail)}async function m(t){await ve(l,e,g),await Ae(l,e,g),r.delete(t.detail),r.size||await Ae(l,e,g)}function g(e){l.disconnect(),be.removeEventListener(t,u),be.removeEventListener(s,m),o(e)}await d(2*e.loadDeferredImagesMaxIdleTime),await ve(l,e,g),l.observe(be,{subtree:!0,childList:!0,attributes:!0}),be.addEventListener(t,u),be.addEventListener(s,m),function(e){e.loadDeferredImagesBlockCookies&&a.dispatchEvent(new i("single-file-block-cookies-start")),e.loadDeferredImagesBlockStorage&&a.dispatchEvent(new i("single-file-block-storage-start")),e.loadDeferredImagesDispatchScrollEvent&&a.dispatchEvent(new i("single-file-dispatch-scroll-event-start")),e.loadDeferredImagesKeepZoomLevel?a.dispatchEvent(new i("single-file-load-deferred-images-keep-zoom-level-start")):a.dispatchEvent(new i("single-file-load-deferred-images-start"))}(e)})}(e)}}}async function Ae(e,t,s){await Re("loadTimeout",()=>Se(e,t,s),t.loadDeferredImagesMaxIdleTime,t.loadDeferredImagesNativeTimeout)}async function ve(e,t,s){await Re("maxTimeout",async()=>{await Pe("loadTimeout"),await Se(e,t,s)},10*t.loadDeferredImagesMaxIdleTime,t.loadDeferredImagesNativeTimeout)}async function Se(e,t,s){await Pe("idleTimeout"),function(e){e.loadDeferredImagesBlockCookies&&a.dispatchEvent(new i("single-file-block-cookies-end")),e.loadDeferredImagesBlockStorage&&a.dispatchEvent(new i("single-file-block-storage-end")),e.loadDeferredImagesDispatchScrollEvent&&a.dispatchEvent(new i("single-file-dispatch-scroll-event-end")),e.loadDeferredImagesKeepZoomLevel?a.dispatchEvent(new i("single-file-load-deferred-images-keep-zoom-level-end")):a.dispatchEvent(new i("single-file-load-deferred-images-end"))}(t),await Re("endTimeout",async()=>{await Pe("maxTimeout"),s()},t.loadDeferredImagesMaxIdleTime/2,t.loadDeferredImagesNativeTimeout),e.disconnect()}async function Re(e,t,s,o){if(Te&&Te.runtime&&Te.runtime.sendMessage&&!o){if(!ye.get(e)||!ye.get(e).pending){const o={callback:t,pending:!0};ye.set(e,o);try{await Te.runtime.sendMessage({method:"singlefile.lazyTimeout.setTimeout",type:e,delay:s})}catch(o){Ne(e,t,s)}o.pending=!1}}else Ne(e,t,s)}function Ne(e,t,s){const o=ye.get(e);o&&globalThis.clearTimeout(o),ye.set(e,t),globalThis.setTimeout(t,s)}async function Pe(e){if(Te&&Te.runtime&&Te.runtime.sendMessage)try{await Te.runtime.sendMessage({method:"singlefile.lazyTimeout.clearTimeout",type:e})}catch(t){Me(e)}else Me(e)}function Me(e){const t=ye.get(e);ye.delete(e),t&&globalThis.clearTimeout(t)}Te&&Te.runtime&&Te.runtime.onMessage&&Te.runtime.onMessage.addListener&&Te.runtime.onMessage.addListener(e=>{if("singlefile.lazyTimeout.onTimeout"==e.method){const t=ye.get(e.type);if(t){ye.delete(e.type);try{t.callback()}catch(t){Me(e.type)}}}});const Le={ON_BEFORE_CAPTURE_EVENT_NAME:b,ON_AFTER_CAPTURE_EVENT_NAME:E,WIN_ID_ATTRIBUTE_NAME:L,WAIT_FOR_USERSCRIPT_PROPERTY_NAME:f,preProcessDoc:oe,serialize:ge,postProcessDoc:ce,getShadowRoot:re},Ce="singlefile.frameTree.initRequest",Oe="singlefile.frameTree.ackInitRequest",De="singlefile.frameTree.cleanupRequest",_e="singlefile.frameTree.initResponse",xe=5e3,Fe=".",ke=globalThis.window==globalThis.top,Ue=globalThis.browser,qe=globalThis.top,He=globalThis.MessageChannel,Be=globalThis.document,Ve=globalThis.JSON,We=globalThis.MutationObserver,ze=globalThis.DOMParser;let Ye,je=globalThis.sessions;function Ge(){globalThis.addEventListener("message",async e=>{if("string"==typeof e.data&&e.data.startsWith(T)){e.preventDefault(),e.stopPropagation();const t=Ve.parse(e.data.substring(15));if(t.method==Ce)e.source&&ot(e.source,{method:Oe,windowId:t.windowId,sessionId:t.sessionId}),ke||(globalThis.stop(),t.options.loadDeferredImages&&Ie(t.options),await $e(t));else if(t.method==Oe)Qe("requestTimeouts",t.sessionId,t.windowId),et(t.sessionId,t.windowId);else if(t.method==De)Xe(t);else if(t.method==_e&&je.get(t.sessionId)){e.ports[0].onmessage=e=>Ze(e.data)}}},!0)}function Ke(){return globalThis.crypto.getRandomValues(new Uint32Array(32)).join("")}async function $e(e){const t=e.sessionId;delete globalThis._singleFile_cleaningUp,ke||(Ye=globalThis.frameId=e.windowId),Je(Be,e.options,Ye,t),ke||(st({frames:[nt(Be,globalThis,Ye,e.options,e.scrolling)],sessionId:t,requestedFrameId:Be.documentElement.dataset.requestedFrameId&&Ye}),delete Be.documentElement.dataset.requestedFrameId)}function Xe(e){if(!globalThis._singleFile_cleaningUp){globalThis._singleFile_cleaningUp=!0;const t=e.sessionId;tt(it(Be),e.windowId,t)}}function Ze(e){e.frames.forEach(t=>Qe("responseTimeouts",e.sessionId,t.windowId));const t=je.get(e.sessionId);if(t){e.requestedFrameId&&(t.requestedFrameId=e.requestedFrameId),e.frames.forEach(e=>{let s=t.frames.find(t=>e.windowId==t.windowId);s||(s={windowId:e.windowId},t.frames.push(s)),s.processed||(s.content=e.content,s.baseURI=e.baseURI,s.title=e.title,s.url=e.url,s.canvases=e.canvases,s.fonts=e.fonts,s.worklets=e.worklets,s.stylesheets=e.stylesheets,s.images=e.images,s.posters=e.posters,s.videos=e.videos,s.usedFonts=e.usedFonts,s.shadowRoots=e.shadowRoots,s.processed=e.processed,s.scrollPosition=e.scrollPosition,s.scrolling=e.scrolling,s.adoptedStyleSheets=e.adoptedStyleSheets)});t.frames.filter(e=>!e.processed).length||(t.frames=t.frames.sort((e,t)=>t.windowId.split(Fe).length-e.windowId.split(Fe).length),t.resolve&&(t.requestedFrameId&&t.frames.forEach(e=>{e.windowId==t.requestedFrameId&&(e.requestedFrame=!0)}),t.resolve(t.frames)))}}function Je(e,t,s,o){const n=it(e);!function(e,t,s,o,n){const i=[];let a;je.get(n)?a=je.get(n).requestTimeouts:(a={},je.set(n,{requestTimeouts:a}));t.forEach((e,t)=>{const s=o+Fe+t;e.setAttribute(Le.WIN_ID_ATTRIBUTE_NAME,s),i.push({windowId:s})}),st({frames:i,sessionId:n,requestedFrameId:e.documentElement.dataset.requestedFrameId&&o}),t.forEach((e,t)=>{const i=o+Fe+t;try{ot(e.contentWindow,{method:Ce,windowId:i,sessionId:n,options:s,scrolling:e.scrolling})}catch(e){}a[i]=globalThis.setTimeout(()=>st({frames:[{windowId:i,processed:!0}],sessionId:n}),xe)}),delete e.documentElement.dataset.requestedFrameId}(e,n,t,s,o),n.length&&function(e,t,s,o,n){const i=[];t.forEach((e,t)=>{const a=o+Fe+t;let r,l;try{r=e.contentDocument,l=e.contentWindow,l.stop()}catch(e){}const d=e.getAttribute("srcdoc");if(!r&&d){r=(new ze).parseFromString(d,"text/html"),l=globalThis}if(r)try{Qe("requestTimeouts",n,a),Je(r,s,a,n),i.push(nt(r,l,a,s,e.scrolling))}catch(e){i.push({windowId:a,processed:!0})}}),st({frames:i,sessionId:n,requestedFrameId:e.documentElement.dataset.requestedFrameId&&o}),delete e.documentElement.dataset.requestedFrameId}(e,n,t,s,o)}function Qe(e,t,s){const o=je.get(t);if(o&&o[e]){const t=o[e][s];t&&(globalThis.clearTimeout(t),delete o[e][s])}}function et(e,t){const s=je.get(e);s&&s.responseTimeouts&&(s.responseTimeouts[t]=globalThis.setTimeout(()=>st({frames:[{windowId:t,processed:!0}],sessionId:e}),1e4))}function tt(e,t,s){e.forEach((e,o)=>{const n=t+Fe+o;e.removeAttribute(Le.WIN_ID_ATTRIBUTE_NAME);try{ot(e.contentWindow,{method:De,windowId:n,sessionId:s})}catch(e){}}),e.forEach((e,o)=>{const n=t+Fe+o;let i;try{i=e.contentDocument}catch(e){}if(i)try{tt(it(i),n,s)}catch(e){}})}function st(e){e.method=_e;try{qe.singlefile.processors.frameTree.initResponse(e)}catch(t){ot(qe,e,!0)}}function ot(e,t,s){if(e==qe&&Ue&&Ue.runtime&&Ue.runtime.sendMessage)Ue.runtime.sendMessage(t);else if(s){const s=new He;e.postMessage(T+Ve.stringify({method:t.method,sessionId:t.sessionId}),"*",[s.port2]),s.port1.postMessage(t)}else e.postMessage(T+Ve.stringify(t),"*")}function nt(e,t,s,o,n){const i=Le.preProcessDoc(e,t,o),a=Le.serialize(e);Le.postProcessDoc(e,i.markedElements,i.invalidElements);return{windowId:s,content:a,baseURI:e.baseURI.split("#")[0],url:e.documentURI,title:e.title,canvases:i.canvases,fonts:i.fonts,worklets:i.worklets,stylesheets:i.stylesheets,images:i.images,posters:i.posters,videos:i.videos,usedFonts:i.usedFonts,shadowRoots:i.shadowRoots,scrollPosition:i.scrollPosition,scrolling:n,adoptedStyleSheets:i.adoptedStyleSheets,processed:!0}}function it(e){let t=Array.from(e.querySelectorAll('iframe, frame, object[type="text/html"][data]'));return e.querySelectorAll("*").forEach(e=>{const s=Le.getShadowRoot(e);s&&(t=t.concat(...it(s)))}),t}je||(je=globalThis.sessions=new Map),ke&&(Ye="0",Ue&&Ue.runtime&&Ue.runtime.onMessage&&Ue.runtime.onMessage.addListener&&Ue.runtime.onMessage.addListener(e=>e.method==_e?(Ze(e),Promise.resolve({})):e.method==Oe?(Qe("requestTimeouts",e.sessionId,e.windowId),et(e.sessionId,e.windowId),Promise.resolve({})):void 0)),Ge(),function e(){Z(A,({detail:e})=>globalThis[f]=async(t,s)=>{const o=Object.assign({},s);let n;delete o.win,delete o.doc,delete o.onprogress,delete o.frames,delete o.taskId,delete o._migratedTemplateFormat,delete o.woleetKey;try{n="jsonDetail"==e?J.stringify({options:o}):{options:o}}catch(e){}const i=new Q(t+"-request",{cancelable:!0,detail:n});let a;const r=new Promise(e=>{a=e,Z(t+"-response",t=>{if(t.detail)try{const e="string"==typeof t.detail?J.parse(t.detail):t.detail;e.options&&Object.assign(s,e.options)}catch(e){}e()})});(e=>{try{globalThis.dispatchEvent(e)}catch(e){}})(i),i.defaultPrevented?await r:a()}),new ee(e).observe(globalThis.document,{childList:!0})}(),new We(Ge).observe(Be,{childList:!0});const at=["AREA","BASE","BASEFONT","BGSOUND","BR","COL","COMMAND","EMBED","FRAME","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR"],rt=[{tagName:"HEAD",accept:e=>!e.childNodes.length||1==e.childNodes[0].nodeType},{tagName:"BODY",accept:e=>!e.childNodes.length}],lt=[{tagName:"HTML",accept:e=>!e||8!=e.nodeType},{tagName:"HEAD",accept:e=>!e||8!=e.nodeType&&(3!=e.nodeType||!ut(e.textContent))},{tagName:"BODY",accept:e=>!e||8!=e.nodeType},{tagName:"LI",accept:(e,t)=>!e&&t.parentElement&&("UL"==mt(t.parentElement)||"OL"==mt(t.parentElement))||e&&["LI"].includes(mt(e))},{tagName:"DT",accept:e=>!e||["DT","DD"].includes(mt(e))},{tagName:"P",accept:e=>e&&["ADDRESS","ARTICLE","ASIDE","BLOCKQUOTE","DETAILS","DIV","DL","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","H1","H2","H3","H4","H5","H6","HEADER","HR","MAIN","NAV","OL","P","PRE","SECTION","TABLE","UL"].includes(mt(e))},{tagName:"DD",accept:e=>!e||["DT","DD"].includes(mt(e))},{tagName:"RT",accept:e=>!e||["RT","RP"].includes(mt(e))},{tagName:"RP",accept:e=>!e||["RT","RP"].includes(mt(e))},{tagName:"OPTGROUP",accept:e=>!e||["OPTGROUP"].includes(mt(e))},{tagName:"OPTION",accept:e=>!e||["OPTION","OPTGROUP"].includes(mt(e))},{tagName:"COLGROUP",accept:e=>!e||8!=e.nodeType&&(3!=e.nodeType||!ut(e.textContent))},{tagName:"CAPTION",accept:e=>!e||8!=e.nodeType&&(3!=e.nodeType||!ut(e.textContent))},{tagName:"THEAD",accept:e=>!e||["TBODY","TFOOT"].includes(mt(e))},{tagName:"TBODY",accept:e=>!e||["TBODY","TFOOT"].includes(mt(e))},{tagName:"TFOOT",accept:e=>!e},{tagName:"TR",accept:e=>!e||["TR"].includes(mt(e))},{tagName:"TD",accept:e=>!e||["TD","TH"].includes(mt(e))},{tagName:"TH",accept:e=>!e||["TD","TH"].includes(mt(e))}],dt=["STYLE","SCRIPT","XMP","IFRAME","NOEMBED","NOFRAMES","PLAINTEXT","NOSCRIPT"];function ct(e,t,s){return 3==e.nodeType?function(e){const t=e.parentNode;let s;t&&1==t.nodeType&&(s=mt(t));return!s||dt.includes(s)?("SCRIPT"!=s||t.type&&"text/javascript"!=t.type)&&"STYLE"!=s?e.textContent:e.textContent.replace(/<\//gi,"<\\/").replace(/\/>/gi,"\\/>"):e.textContent.replace(/&/g,"&").replace(/\u00a0/g," ").replace(/</g,"<").replace(/>/g,">")}(e):8==e.nodeType?"\x3c!--"+e.textContent+"--\x3e":1==e.nodeType?function(e,t,s){const o=mt(e),n=t&&rt.find(t=>o==mt(t)&&t.accept(e));let i="";n&&!e.attributes.length||(i="<"+o.toLowerCase(),Array.from(e.attributes).forEach(s=>i+=function(e,t,s){const o=e.name;let n="";if(!o.match(/["'>/=]/)){let i,a=e.value;s&&"class"==o&&(a=Array.from(t.classList).map(e=>e.trim()).join(" ")),a=a.replace(/&/g,"&").replace(/\u00a0/g," "),a.includes('"')&&(a.includes("'")||!s?a=a.replace(/"/g,"""):i=!0);const r=!s||a.match(/[ \t\n\f\r'"`=<>]/);n+=" ";const l=e.namespaceURI,d=e.localName||o;l?"http://www.w3.org/XML/1998/namespace"==l?n+="xml:"+d:"http://www.w3.org/2000/xmlns/"==l?n+="xmlns"===d?"xmlns":"xmlns:"+d:"http://www.w3.org/1999/xlink"==l?n+="xlink:"+d:e.prefix?n+=e.prefix+":"+d:n+=o:n+=o,""!=a&&(n+="=",r&&(n+=i?"'":'"'),n+=a,r&&(n+=i?"'":'"'))}return n}(s,e,t)),i+=">");"TEMPLATE"!=o||e.childNodes.length?Array.from(e.childNodes).forEach(e=>i+=ct(e,t,s||"svg"==o)):i+=e.innerHTML;const a=t&<.find(t=>o==mt(t)&&t.accept(e.nextSibling,e));(s||!a&&!at.includes(o))&&(i+="</"+o.toLowerCase()+">");return i}(e,t,s):void 0}function ut(e){return Boolean(e.match(/^[ \t\n\f\r]/))}function mt(e){return e.tagName&&e.tagName.toUpperCase()}const gt={frameTree:Object.freeze({__proto__:null,TIMEOUT_INIT_REQUEST_MESSAGE:xe,cleanup:function(e){je.delete(e),Xe({windowId:Ye,sessionId:e})},getAsync:function(e){const t=Ke();return e=Ve.parse(Ve.stringify(e)),new Promise(s=>{je.set(t,{frames:[],requestTimeouts:{},responseTimeouts:{},resolve:e=>{e.sessionId=t,s(e)}}),$e({windowId:Ye,sessionId:t,options:e})})},getSync:function(e){const t=Ke();e=Ve.parse(Ve.stringify(e)),je.set(t,{frames:[],requestTimeouts:{},responseTimeouts:{}}),function(e){const t=e.sessionId;delete globalThis._singleFile_cleaningUp,ke||(Ye=globalThis.frameId=e.windowId);Je(Be,e.options,Ye,t),ke||(st({frames:[nt(Be,globalThis,Ye,e.options,e.scrolling)],sessionId:t,requestedFrameId:Be.documentElement.dataset.requestedFrameId&&Ye}),delete Be.documentElement.dataset.requestedFrameId)}({windowId:Ye,sessionId:t,options:e});const s=je.get(t).frames;return s.sessionId=t,s},initResponse:Ze})},ht={COMMENT_HEADER:"Page saved with SingleFile",COMMENT_HEADER_LEGACY:"Archive processed by SingleFile",ON_BEFORE_CAPTURE_EVENT_NAME:b,ON_AFTER_CAPTURE_EVENT_NAME:E,WAIT_FOR_USERSCRIPT_PROPERTY_NAME:f,preProcessDoc:oe,postProcessDoc:ce,serialize:(e,t)=>function(e,t){const s=e.doctype;let o="";return s&&(o="<!DOCTYPE "+s.nodeName,s.publicId?(o+=' PUBLIC "'+s.publicId+'"',s.systemId&&(o+=' "'+s.systemId+'"')):s.systemId&&(o+=' SYSTEM "'+s.systemId+'"'),s.internalSubset&&(o+=" ["+s.internalSubset+"]"),o+="> "),o+ct(e.documentElement,t)}(e,t),getShadowRoot:re};e.helper=ht,e.processors=gt});
|