- ID da verificação
- 9a0c461c-303b-4f19-b247-ac3d679c7352Concluído
- URL enviado:
- https://annas-archive.org/
- Relatório concluído:
Links · 8 encontrado(s)
Os links de saída identificados na página
Link | Texto |
---|---|
https://torrentfreak.com/annas-archive-loses-gs-domain-name-but-remains-resilient-240718/ | TorrentFreak coverage |
https://software.annas-archive.li | Anna’s Software ↗ |
https://translate.annas-archive.li | Translate ↗ |
https://www.reddit.com/r/scihub/comments/lofj0r/announcement_scihub_has_been_paused_no_new/ | paused |
https://www.reddit.com/r/Annas_Archive | |
https://t.me/annasarchiveorg | Telegram |
https://annas-archive.li/ | annas-archive.li |
https://annas-archive.se/ | annas-archive.se |
Variáveis JavaScript · 14 encontrada(s)
Variáveis JavaScript globais carregadas no objeto janela de uma página são variáveis declaradas fora das funções e acessíveis de qualquer lugar no código dentro do escopo atual
Nome | Tipo |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
handleThemeSwitch | function |
globalUpdateAaLoggedIn | function |
baseDomain | string |
handleChangeLang | function |
submitForm | function |
topMenuToggle | function |
PolyBool | object |
Mensagens de registro do console · 0 encontrada(s)
Mensagens registradas no console web
HTML
O corpo HTML bruto da página
<!DOCTYPE html><html lang="en"><head>
<meta charset="utf-8">
<title>Anna’s Archive</title>
<script type="text/javascript">(()=>{var cc=Object.create;var Ys=Object.defineProperty;var lc=Object.getOwnPropertyDescriptor;var dc=Object.getOwnPropertyNames;var uc=Object.getPrototypeOf,fc=Object.prototype.hasOwnProperty;var hc=(O,B)=>()=>(B||O((B={exports:{}}).exports,B),B.exports);var gc=(O,B,me,He)=>{if(B&&typeof B=="object"||typeof B=="function")for(let ae of dc(B))!fc.call(O,ae)&&ae!==me&&Ys(O,ae,{get:()=>B[ae],enumerable:!(He=lc(B,ae))||He.enumerable});return O};var mc=(O,B,me)=>(me=O!=null?cc(uc(O)):{},gc(B||!O||!O.__esModule?Ys(me,"default",{value:O,enumerable:!0}):me,O));var Zs=hc((Qt,Xs)=>{(function(O,B){typeof Qt=="object"&&typeof Xs<"u"?B(Qt):typeof define=="function"&&define.amd?define(["exports"],B):(O=typeof globalThis<"u"?globalThis:O||self,B(O.DarkReader={}))})(Qt,function(O){"use strict";var B;(function(e){e.GET_DATA="ui-bg-get-data",e.GET_DEVTOOLS_DATA="ui-bg-get-devtools-data",e.SUBSCRIBE_TO_CHANGES="ui-bg-subscribe-to-changes",e.UNSUBSCRIBE_FROM_CHANGES="ui-bg-unsubscribe-from-changes",e.CHANGE_SETTINGS="ui-bg-change-settings",e.SET_THEME="ui-bg-set-theme",e.TOGGLE_ACTIVE_TAB="ui-bg-toggle-active-tab",e.MARK_NEWS_AS_READ="ui-bg-mark-news-as-read",e.MARK_NEWS_AS_DISPLAYED="ui-bg-mark-news-as-displayed",e.LOAD_CONFIG="ui-bg-load-config",e.APPLY_DEV_DYNAMIC_THEME_FIXES="ui-bg-apply-dev-dynamic-theme-fixes",e.RESET_DEV_DYNAMIC_THEME_FIXES="ui-bg-reset-dev-dynamic-theme-fixes",e.APPLY_DEV_INVERSION_FIXES="ui-bg-apply-dev-inversion-fixes",e.RESET_DEV_INVERSION_FIXES="ui-bg-reset-dev-inversion-fixes",e.APPLY_DEV_STATIC_THEMES="ui-bg-apply-dev-static-themes",e.RESET_DEV_STATIC_THEMES="ui-bg-reset-dev-static-themes",e.COLOR_SCHEME_CHANGE="ui-bg-color-scheme-change",e.HIDE_HIGHLIGHTS="ui-bg-hide-highlights"})(B||(B={}));var me;(function(e){e.CHANGES="bg-ui-changes"})(me||(me={}));var He;(function(e){e.CSS_UPDATE="debug-bg-ui-css-update",e.UPDATE="debug-bg-ui-update"})(He||(He={}));var ae;(function(e){e.ADD_CSS_FILTER="bg-cs-add-css-filter",e.ADD_DYNAMIC_THEME="bg-cs-add-dynamic-theme",e.ADD_STATIC_THEME="bg-cs-add-static-theme",e.ADD_SVG_FILTER="bg-cs-add-svg-filter",e.CLEAN_UP="bg-cs-clean-up",e.FETCH_RESPONSE="bg-cs-fetch-response",e.UNSUPPORTED_SENDER="bg-cs-unsupported-sender"})(ae||(ae={}));var nr;(function(e){e.RELOAD="debug-bg-cs-reload"})(nr||(nr={}));var ht;(function(e){e.COLOR_SCHEME_CHANGE="cs-bg-color-scheme-change",e.DARK_THEME_DETECTED="cs-bg-dark-theme-detected",e.DARK_THEME_NOT_DETECTED="cs-bg-dark-theme-not-detected",e.FETCH="cs-bg-fetch",e.DOCUMENT_CONNECT="cs-bg-document-connect",e.DOCUMENT_FORGET="cs-bg-document-forget",e.DOCUMENT_FREEZE="cs-bg-document-freeze",e.DOCUMENT_RESUME="cs-bg-document-resume"})(ht||(ht={}));var rr;(function(e){e.LOG="debug-cs-bg-log"})(rr||(rr={}));var sr;(function(e){e.EXPORT_CSS_RESPONSE="cs-ui-export-css-response"})(sr||(sr={}));var or;(function(e){e.EXPORT_CSS="ui-cs-export-css"})(or||(or={}));let Yt=typeof navigator<"u",le=Yt?navigator.userAgentData&&Array.isArray(navigator.userAgentData.brands)?navigator.userAgentData.brands.map(e=>`${e.brand.toLowerCase()} ${e.version}`).join(" "):navigator.userAgent.toLowerCase():"some useragent",ar=Yt?navigator.userAgentData&&typeof navigator.userAgentData.platform=="string"?navigator.userAgentData.platform.toLowerCase():navigator.platform.toLowerCase():"some platform",ir=le.includes("chrome")||le.includes("chromium"),Ae=le.includes("firefox")||le.includes("thunderbird")||le.includes("librewolf"),gt=le.includes("safari")&&!ir,to=ar.startsWith("win"),cr=ar.startsWith("mac");Yt&&navigator.userAgentData?navigator.userAgentData.mobile:le.includes("mobile");let lr=typeof ShadowRoot=="function",dr=typeof MediaQueryList=="function"&&typeof MediaQueryList.prototype.addEventListener=="function",ur=typeof CSSLayerBlockRule=="function";(()=>{let e=le.match(/chrom(?:e|ium)(?:\/| )([^ ]+)/);return e&&e[1]?e[1]:""})(),(()=>{let e=le.match(/(?:firefox|librewolf)(?:\/| )([^ ]+)/);return e&&e[1]?e[1]:""})();let no=(()=>{try{return document.querySelector(":defined"),!0}catch{return!1}})(),fr=(()=>{try{if(typeof document>"u")return!1;let e=document.createElement("div");return!e||typeof e.style!="object"?!1:typeof e.style.colorScheme=="string"?!0:(e.setAttribute("style","color-scheme: dark"),e.style.colorScheme==="dark")}catch{return!1}})();async function Xt(e,t,n){let r=await fetch(e,{cache:"force-cache",credentials:"omit",referrer:n});if(Ae&&t==="text/css"&&e.startsWith("moz-extension://")&&e.endsWith(".css"))return r;if(t&&!r.headers.get("Content-Type").startsWith(t))throw new Error(`Mime type mismatch when loading ${e}`);if(!r.ok)throw new Error(`Unable to load ${e} ${r.status} ${r.statusText}`);return r}async function hr(e,t){let n=await Xt(e,t);return await gr(n)}async function ro(e,t){return await(await Xt(e,t)).blob()}async function gr(e){let t=await e.blob();return await new Promise(r=>{let s=new FileReader;s.onloadend=()=>r(s.result),s.readAsDataURL(t)})}async function so(e,t,n){return await(await Xt(e,t,n)).text()}let mr=async e=>Promise.reject(new Error(["Embedded Dark Reader cannot access a cross-origin resource",e,"Overview your URLs and CORS policies or use","`DarkReader.setFetchMethod(fetch: (url) => Promise<Response>))`.","See if using `DarkReader.setFetchMethod(window.fetch)`","before `DarkReader.enable()` works."].join(" "))),Zt=mr;function oo(e){e?Zt=e:Zt=mr}async function ao(e){return await Zt(e)}window.chrome||(window.chrome={}),chrome.runtime||(chrome.runtime={});let Jt=new Set;async function pr(...e){if(e[0]&&e[0].type===ht.FETCH){let{id:t}=e[0];try{let{url:n,responseType:r}=e[0].data,s=await ao(n),o;r==="data-url"?o=await gr(s):o=await s.text(),Jt.forEach(a=>a({type:ae.FETCH_RESPONSE,data:o,error:null,id:t}))}catch(n){console.error(n),Jt.forEach(r=>r({type:ae.FETCH_RESPONSE,data:null,error:n,id:t}))}}}function br(e){Jt.add(e)}if(typeof chrome.runtime.sendMessage=="function"){let e=chrome.runtime.sendMessage;chrome.runtime.sendMessage=(...t)=>{pr(...t),e.apply(chrome.runtime,t)}}else chrome.runtime.sendMessage=pr;if(chrome.runtime.onMessage||(chrome.runtime.onMessage={}),typeof chrome.runtime.onMessage.addListener=="function"){let e=chrome.runtime.onMessage.addListener;chrome.runtime.onMessage.addListener=(...t)=>{br(t[0]),e.apply(chrome.runtime.onMessage,t)}}else chrome.runtime.onMessage.addListener=(...e)=>br(e[0]);var mt;(function(e){e.cssFilter="cssFilter",e.svgFilter="svgFilter",e.staticTheme="staticTheme",e.dynamicTheme="dynamicTheme"})(mt||(mt={}));var en;(function(e){e.NONE="",e.TIME="time",e.SYSTEM="system",e.LOCATION="location"})(en||(en={}));let pt={darkScheme:{background:"#181a1b",text:"#e8e6e3"},lightScheme:{background:"#dcdad7",text:"#181a1b"}},Sr={mode:1,brightness:100,contrast:100,grayscale:0,sepia:0,useFont:!1,fontFamily:cr?"Helvetica Neue":to?"Segoe UI":"Open Sans",textStroke:0,engine:mt.dynamicTheme,stylesheet:"",darkSchemeBackgroundColor:pt.darkScheme.background,darkSchemeTextColor:pt.darkScheme.text,lightSchemeBackgroundColor:pt.lightScheme.background,lightSchemeTextColor:pt.lightScheme.text,scrollbarColor:cr?"":"auto",selectionColor:"auto",styleSystemControls:!fr,lightColorScheme:"Default",darkColorScheme:"Default",immediateModify:!1};en.NONE;function io(e){return e.length!=null}function ne(e,t){if(io(e))for(let n=0,r=e.length;n<r;n++)t(e[n]);else for(let n of e)t(n)}function tn(e,t){ne(t,n=>e.push(n))}function co(e){let t=[];for(let n=0,r=e.length;n<r;n++)t.push(e[n]);return t}function de(...e){}function yr(...e){}function nn(e){let t=!1,n=null,r;return Object.assign((...a)=>{r=a,n?t=!0:(e(...r),n=requestAnimationFrame(()=>{n=null,t&&(e(...r),t=!1)}))},{cancel:()=>{cancelAnimationFrame(n),t=!1,n=null}})}function lo(){let e=[],t=null;function n(){let o;for(;o=e.shift();)o();t=null}function r(o){e.push(o),t||(t=requestAnimationFrame(n))}function s(){e.splice(0),cancelAnimationFrame(t),t=null}return{add:r,cancel:s}}let rn=new Set;function kr(e,t){rn.has(e)||(rn.add(e),requestAnimationFrame(()=>{rn.delete(e),t()}))}function bt(e){let t=0;return e.seconds&&(t+=e.seconds*1e3),e.minutes&&(t+=e.minutes*60*1e3),e.hours&&(t+=e.hours*60*60*1e3),e.days&&(t+=e.days*24*60*60*1e3),t}function Y(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function sn(e,t,n=Function.prototype){let s=bt({seconds:2}),o=bt({seconds:10}),a=e.previousSibling,i=e.parentNode;if(!i)throw new Error("Unable to watch for node position: parent element not found");if(t==="prev-sibling"&&!a)throw new Error("Unable to watch for node position: there is no previous sibling");let l=0,c=null,u=null,g=nn(()=>{if(u)return;l++;let f=Date.now();if(c==null)c=f;else if(l>=10){if(f-c<o){u=setTimeout(()=>{c=null,l=0,u=null,g()},s);return}c=f,l=1}if(t==="head"&&a&&a.parentNode!==i){E();return}if(t==="prev-sibling"){if(a.parentNode==null){E();return}a.parentNode!==i&&y(a.parentNode)}t==="head"&&!i.isConnected&&(i=document.head),i.insertBefore(e,a&&a.isConnected?a.nextSibling:i.firstChild),b.takeRecords(),n&&n()}),b=new MutationObserver(()=>{(t==="head"&&(e.parentNode!==i||!e.parentNode.isConnected)||t==="prev-sibling"&&e.previousSibling!==a)&&g()}),C=()=>{b.observe(i,{childList:!0})},E=()=>{clearTimeout(u),b.disconnect(),g.cancel()},p=()=>{b.takeRecords()},y=f=>{i=f,E(),C()};return C(),{run:C,stop:E,skip:p}}function Le(e,t){if(e==null)return;let n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode(r){return r.shadowRoot==null?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT}});for(let r=e.shadowRoot?n.currentNode:n.nextNode();r!=null;r=n.nextNode())r.classList.contains("surfingkeys_hints_host")||(t(r),Le(r.shadowRoot,t))}let pe=()=>document.readyState==="complete"||document.readyState==="interactive";function uo(e){pe=e}let St=new Set;function on(e){pe()?e():St.add(e)}function wr(e){St.delete(e)}function yt(){return document.readyState==="complete"}let kt=new Set;function an(e){yt()?e():kt.add(e)}function fo(){kt.clear()}if(!pe()){let e=()=>{pe()&&(St.forEach(t=>t()),St.clear(),yt()&&(document.removeEventListener("readystatechange",e),kt.forEach(t=>t()),kt.clear()))};document.addEventListener("readystatechange",e)}let xr=1e3;function ho(e){if(e.length>xr)return!0;let t=0;for(let n=0;n<e.length;n++)if(t+=e[n].addedNodes.length,t>xr)return!0;return!1}function go(e){let t=new Set,n=new Set,r=new Set;e.forEach(a=>{ne(a.addedNodes,i=>{i instanceof Element&&i.isConnected&&t.add(i)}),ne(a.removedNodes,i=>{i instanceof Element&&(i.isConnected?(r.add(i),t.delete(i)):n.add(i))})});let s=[],o=[];return t.forEach(a=>{t.has(a.parentElement)&&s.push(a)}),n.forEach(a=>{n.has(a.parentElement)&&o.push(a)}),s.forEach(a=>t.delete(a)),o.forEach(a=>n.delete(a)),{additions:t,moves:r,deletions:n}}let wt=new Map,cn=new WeakMap;function Cr(e,t){let n,r,s;if(wt.has(e))n=wt.get(e),r=cn.get(n);else{let o=!1,a=!1;n=new MutationObserver(i=>{if(ho(i))!o||pe()?r.forEach(({onHugeMutations:l})=>l(e)):a||(s=()=>r.forEach(({onHugeMutations:l})=>l(e)),on(s),a=!0),o=!0;else{let l=go(i);r.forEach(({onMinorMutations:c})=>c(e,l))}}),n.observe(e,{childList:!0,subtree:!0}),wt.set(e,n),r=new Set,cn.set(n,r)}return r.add(t),{disconnect(){r.delete(t),s&&wr(s),r.size===0&&(n.disconnect(),cn.delete(n),wt.delete(e))}}}function je(e,t,n=0){let r=[],s;for(;s=e.exec(t);)r.push(s[n]);return r}function Er(e){let t=e.length,n=0;for(let r=0;r<t;r++){let s=e.charCodeAt(r);n=(n<<5)-n+s&4294967295}return n}function mo(e){return e.replaceAll(/[\^$.*+?\(\)\[\]{}|\-\\]/g,"\\$&")}function ln(e,t=0){return _r(e,t,"(",")",[])}function _r(e,t,n,r,s){let o;s.length===0?o=(c,u)=>e.indexOf(c,u):o=(c,u)=>dn(e,c,u,s);let{length:a}=e,i=0,l=-1;for(let c=t;c<a;c++)if(i===0){let u=o(n,c);if(u<0)break;l=u,i++,c=u}else{let u=o(r,c);if(u<0)break;let g=o(n,c);if(g<0||u<=g){if(i--,i===0)return{start:l,end:u+1};c=u}else i++,c=g}return null}function dn(e,t,n,r){let s=e.indexOf(t,n),o=r.find(a=>s>=a.start&&s<a.end);return o?dn(e,t,o.end,r):s}function Rr(e,t,n){let r=[],s=-1,o=0;for(;(s=dn(e,t,o,n))>=0;)r.push(e.substring(o,s).trim()),o=s+1;return r.push(e.substring(o).trim()),r}let xt,qe=new Map;function vr(e){return xt||(xt=document.createElement("a")),xt.href=e,xt.href}function Ct(e,t=null){let n=`${e}${t?`;${t}`:""}`;if(qe.has(n))return qe.get(n);if(t){let s=new URL(e,vr(t));return qe.set(n,s),s}let r=new URL(vr(e));return qe.set(e,r),r}function Et(e,t){if(t.match(/^data\\?\:/))return t;if(/^\/\//.test(t))return`${location.protocol}${t}`;let n=Ct(e);return Ct(t,n.href).href}function po(e){if(e.startsWith("data:"))return!0;let t=Ct(e);return t.protocol!==location.protocol||t.hostname!==location.hostname||t.port!==location.port?!1:t.pathname===location.pathname}function xe(e,t,n){ne(e,r=>{if(Pr(r))t(r);else if(wo(r))try{xe(r.styleSheet.cssRules,t,n)}catch{n?.()}else if(fn(r)){let s=Array.from(r.media),o=s.some(i=>i.startsWith("screen")||i.startsWith("all")||i.startsWith("(")),a=s.some(i=>i.startsWith("print")||i.startsWith("speech"));(o||!a)&&xe(r.cssRules,t,n)}else xo(r)?CSS.supports(r.conditionText)&&xe(r.cssRules,t,n):Ir(r)&&xe(r.cssRules,t,n)})}let Ar=["background","border","border-color","border-bottom","border-left","border-right","border-top","outline","outline-color"],bo=gt?Ar.map(e=>{let t=new RegExp(`${e}:\\s*(.*?)\\s*;`);return[e,t]}):null;function Me(e,t){ne(e,r=>{let s=e.getPropertyValue(r).trim();!s||t(r,s)});let n=e.cssText;n.includes("var(")&&(gt?bo.forEach(([r,s])=>{let o=n.match(s);if(o&&o[1]){let a=o[1].trim();t(r,a)}}):Ar.forEach(r=>{let s=e.getPropertyValue(r);s&&s.includes("var(")&&t(r,s)})),n.includes("background-color: ;")&&!e.getPropertyValue("background")&&Lr("background",e,t),n.includes("border-")&&n.includes("-color: ;")&&!e.getPropertyValue("border")&&Lr("border",e,t)}function Lr(e,t,n){let r=t.parentRule;if(Pr(r)){let s=r.parentStyleSheet?.ownerNode?.textContent;if(s){let o=mo(r.selectorText);o=o.replaceAll(/\s+/g,"\\s*"),o=o.replaceAll(/::/g,"::?");let a=new RegExp(`${o}\\s*{[^}]*${e}:\\s*([^;}]+)`),i=s.match(a);i&&n(e,i[1])}else e==="background"&&n("background-color","#ffffff")}}let Mr=/url\((('.*?')|(".*?")|([^\)]*?))\)/g,Tr=/@import\s*(url\()?(('.+?')|(".+?")|([^\)]*?))\)? ?(screen)?;?/gi;function un(e){return e.trim().replace(/[\n\r\\]+/g,"").replace(/^url\((.*)\)$/,"$1").trim().replace(/^"(.*)"$/,"$1").replace(/^'(.*)'$/,"$1").replace(/(?:\\(.))/g,"$1")}function _t(e){let t=Ct(e);return`${t.origin}${t.pathname.replace(/\?.*$/,"").replace(/(\/)([^\/]+)$/i,"$1")}`}function So(e,t){return e.replace(Mr,n=>{try{let r=un(n);return`url('${Et(t,r).replaceAll("'","\\'")}')`}catch{return n}})}let yo=/@font-face\s*{[^}]*}/g;function ko(e){return e.replace(yo,"")}let Te=new WeakSet,Dr=new WeakSet,Vr=new WeakSet,Or=new WeakSet,$r=new WeakSet;function Pr(e){return e?Te.has(e)?!0:e.selectorText?(Te.add(e),!0):!1:!1}function wo(e){return!e||Te.has(e)?!1:Dr.has(e)?!0:e.href?(Dr.add(e),!0):!1}function fn(e){return!e||Te.has(e)?!1:Vr.has(e)?!0:e.media?(Vr.add(e),!0):!1}function xo(e){return!e||Te.has(e)?!1:Or.has(e)?!0:e instanceof CSSSupportsRule?(Or.add(e),!0):!1}function Ir(e){return!e||Te.has(e)?!1:$r.has(e)?!0:ur&&e instanceof CSSLayerBlockRule?($r.add(e),!0):!1}function Co(e){let t=[],n=[],r;for(let o=0,a=e.length;o<a;o++){let i=e[o];if(!(!i||i===" ")){if(Ge.has(i)){let l=Ge.get(i);for(;n.length;){let c=Ge.get(n[0]);if(!c)break;if(l.lessOrEqualThan(c))t.push(n.shift());else break}n.unshift(i)}else!r||Ge.has(r)?t.push(i):t[t.length-1]+=i;r=i}}t.push(...n);let s=[];for(let o=0,a=t.length;o<a;o++){let i=Ge.get(t[o]);if(i){let l=s.splice(0,2);s.push(i.exec(l[1],l[0]))}else s.unshift(parseFloat(t[o]))}return s[0]}class Rt{constructor(t,n){this.precendce=t,this.execMethod=n}exec(t,n){return this.execMethod(t,n)}lessOrEqualThan(t){return this.precendce<=t.precendce}}let Ge=new Map([["+",new Rt(1,(e,t)=>e+t)],["-",new Rt(1,(e,t)=>e-t)],["*",new Rt(2,(e,t)=>e*t)],["/",new Rt(2,(e,t)=>e/t)]]),Eo=()=>matchMedia("(prefers-color-scheme: dark)").matches,vt=new Map,At=new Map;function Q(e){if(e=e.trim(),At.has(e))return At.get(e);e.includes("calc(")&&(e=No(e));let t=Nr(e);return t&&At.set(e,t),t}function Fr(e){if(vt.has(e))return vt.get(e);let t=Q(e);if(!t)return null;let n=Lt(t);return vt.set(e,n),n}function _o(){vt.clear(),At.clear()}function Ur({h:e,s:t,l:n,a:r=1}){if(t===0){let[u,g,b]=[n,n,n].map(C=>Math.round(C*255));return{r:u,g:b,b:g,a:r}}let s=(1-Math.abs(2*n-1))*t,o=s*(1-Math.abs(e/60%2-1)),a=n-s/2,[i,l,c]=(e<60?[s,o,0]:e<120?[o,s,0]:e<180?[0,s,o]:e<240?[0,o,s]:e<300?[o,0,s]:[s,0,o]).map(u=>Math.round((u+a)*255));return{r:i,g:l,b:c,a:r}}function Lt({r:e,g:t,b:n,a:r=1}){let s=e/255,o=t/255,a=n/255,i=Math.max(s,o,a),l=Math.min(s,o,a),c=i-l,u=(i+l)/2;if(c===0)return{h:0,s:0,l:u,a:r};let g=(i===s?(o-a)/c%6:i===o?(a-s)/c+2:(s-o)/c+4)*60;g<0&&(g+=360);let b=c/(1-Math.abs(2*u-1));return{h:g,s:b,l:u,a:r}}function ee(e,t=0){let n=e.toFixed(t);if(t===0)return n;let r=n.indexOf(".");if(r>=0){let s=n.match(/0+$/);if(s)return s.index===r+1?n.substring(0,r):n.substring(0,s.index)}return n}function Ro(e){let{r:t,g:n,b:r,a:s}=e;return s!=null&&s<1?`rgba(${ee(t)}, ${ee(n)}, ${ee(r)}, ${ee(s,2)})`:`rgb(${ee(t)}, ${ee(n)}, ${ee(r)})`}function vo({r:e,g:t,b:n,a:r}){return`#${(r!=null&&r<1?[e,t,n,Math.round(r*255)]:[e,t,n]).map(s=>`${s<16?"0":""}${s.toString(16)}`).join("")}`}function De(e){let{h:t,s:n,l:r,a:s}=e;return s!=null&&s<1?`hsla(${ee(t)}, ${ee(n*100)}%, ${ee(r*100)}%, ${ee(s,2)})`:`hsl(${ee(t)}, ${ee(n*100)}%, ${ee(r*100)}%)`}let Ao=/^rgba?\([^\(\)]+\)$/,Lo=/^hsla?\([^\(\)]+\)$/,Mo=/^#[0-9a-f]+$/i;function Nr(e){let t=e.trim().toLowerCase();if(t.match(Ao))return Br(t);if(t.match(Lo))return Po(t);if(t.match(Mo))return Io(t);if(Hr.has(t))return Fo(t);if(jr.has(t))return Uo(t);if(e==="transparent")return{r:0,g:0,b:0,a:0};if((t.startsWith("color(")||t.startsWith("color-mix("))&&t.endsWith(")"))return Wo(t);if(t.startsWith("light-dark(")&&t.endsWith(")")){let n=t.match(/^light-dark\(\s*([a-z]+(\(.*\))?),\s*([a-z]+(\(.*\))?)\s*\)$/);if(n){let r=Eo()?n[3]:n[1];return Nr(r)}}return null}function To(e){let t=[],n=0,r=!1,s=e.indexOf("(");e=e.substring(s+1,e.length-1);for(let o=0;o<e.length;o++){let a=e[o];a>="0"&&a<="9"||a==="."||a==="+"||a==="-"?r=!0:r&&(a===" "||a===","||a==="/")?(t.push(e.substring(n,o)),r=!1,n=o+1):r||(n=o+1)}return r&&t.push(e.substring(n,e.length)),t}function Wr(e,t,n){let r=To(e),s=Object.entries(n);return r.map(a=>a.trim()).map((a,i)=>{let l,c=s.find(([u])=>a.endsWith(u));return c?l=parseFloat(a.substring(0,a.length-c[0].length))/c[1]*t[i]:l=parseFloat(a),t[i]>1?Math.round(l):l})}let Do=[255,255,255,1],Vo={"%":100};function Br(e){let[t,n,r,s=1]=Wr(e,Do,Vo);return{r:t,g:n,b:r,a:s}}let Oo=[360,1,1,1],$o={"%":100,deg:360,rad:2*Math.PI,turn:1};function Po(e){let[t,n,r,s=1]=Wr(e,Oo,$o);return Ur({h:t,s:n,l:r,a:s})}function Io(e){let t=e.substring(1);switch(t.length){case 3:case 4:{let[n,r,s]=[0,1,2].map(a=>parseInt(`${t[a]}${t[a]}`,16)),o=t.length===3?1:parseInt(`${t[3]}${t[3]}`,16)/255;return{r:n,g:r,b:s,a:o}}case 6:case 8:{let[n,r,s]=[0,2,4].map(a=>parseInt(t.substring(a,a+2),16)),o=t.length===6?1:parseInt(t.substring(6,8),16)/255;return{r:n,g:r,b:s,a:o}}}return null}function Fo(e){let t=Hr.get(e);return{r:t>>16&255,g:t>>8&255,b:t>>0&255,a:1}}function Uo(e){let t=jr.get(e);return{r:t>>16&255,g:t>>8&255,b:t>>0&255,a:1}}function No(e){let t=0,n=(r,s,o)=>{e=e.substring(0,r)+o+e.substring(s)};for(;(t=e.indexOf("calc("))!==-1;){let r=ln(e,t);if(!r)break;let s=e.slice(r.start+1,r.end-1),o=s.includes("%");s=s.split("%").join("");let a=Math.round(Co(s));n(r.start-4,r.end,a+(o?"%":""))}return e}let Hr=new Map(Object.entries({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgrey:11119017,darkgreen:25600,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,grey:8421504,green:32768,greenyellow:11403055,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgrey:13882323,lightgreen:9498256,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074})),jr=new Map(Object.entries({ActiveBorder:3906044,ActiveCaption:0,AppWorkspace:11184810,Background:6513614,ButtonFace:16777215,ButtonHighlight:15329769,ButtonShadow:10461343,ButtonText:0,CaptionText:0,GrayText:8355711,Highlight:11720703,HighlightText:0,InactiveBorder:16777215,InactiveCaption:16777215,InactiveCaptionText:0,InfoBackground:16514245,InfoText:0,Menu:16185078,MenuText:16777215,Scrollbar:11184810,ThreeDDarkShadow:0,ThreeDFace:12632256,ThreeDHighlight:16777215,ThreeDLightShadow:16777215,ThreeDShadow:0,Window:15527148,WindowFrame:11184810,WindowText:0,"-webkit-focus-ring-color":15046400}).map(([e,t])=>[e.toLowerCase(),t]));function qr(e,t,n){return(.2126*e+.7152*t+.0722*n)/255}let Mt,ze;function Wo(e){ze||(Mt=document.createElement("canvas"),Mt.width=1,Mt.height=1,ze=Mt.getContext("2d",{willReadFrequently:!0})),ze.fillStyle=e,ze.fillRect(0,0,1,1);let t=ze.getImageData(0,0,1,1).data,n=`rgba(${t[0]}, ${t[1]}, ${t[2]}, ${(t[3]/255).toFixed(2)})`;return Br(n)}function ie(e,t,n,r,s){return(e-t)*(s-r)/(n-t)+r}function be(e,t,n){return Math.min(n,Math.max(t,e))}function Ve(e,t){let n=[];for(let r=0,s=e.length;r<s;r++){n[r]=[];for(let o=0,a=t[0].length;o<a;o++){let i=0;for(let l=0,c=e[0].length;l<c;l++)i+=e[r][l]*t[l][o];n[r][o]=i}}return n}function Gr(e){let t=Oe.identity();return e.sepia!==0&&(t=Ve(t,Oe.sepia(e.sepia/100))),e.grayscale!==0&&(t=Ve(t,Oe.grayscale(e.grayscale/100))),e.contrast!==100&&(t=Ve(t,Oe.contrast(e.contrast/100))),e.brightness!==100&&(t=Ve(t,Oe.brightness(e.brightness/100))),e.mode===1&&(t=Ve(t,Oe.invertNHue())),t}function Bo([e,t,n],r){let s=[[e/255],[t/255],[n/255],[1],[1]],o=Ve(r,s);return[0,1,2].map(a=>be(Math.round(o[a][0]*255),0,255))}let Oe={identity(){return[[1,0,0,0,0],[0,1,0,0,0],[0,0,1,0,0],[0,0,0,1,0],[0,0,0,0,1]]},invertNHue(){return[[.333,-.667,-.667,0,1],[-.667,.333,-.667,0,1],[-.667,-.667,.333,0,1],[0,0,0,1,0],[0,0,0,0,1]]},brightness(e){return[[e,0,0,0,0],[0,e,0,0,0],[0,0,e,0,0],[0,0,0,1,0],[0,0,0,0,1]]},contrast(e){let t=(1-e)/2;return[[e,0,0,0,t],[0,e,0,0,t],[0,0,e,0,t],[0,0,0,1,0],[0,0,0,0,1]]},sepia(e){return[[.393+.607*(1-e),.769-.769*(1-e),.189-.189*(1-e),0,0],[.349-.349*(1-e),.686+.314*(1-e),.168-.168*(1-e),0,0],[.272-.272*(1-e),.534-.534*(1-e),.131+.869*(1-e),0,0],[0,0,0,1,0],[0,0,0,0,1]]},grayscale(e){return[[.2126+.7874*(1-e),.7152-.7152*(1-e),.0722-.0722*(1-e),0,0],[.2126-.2126*(1-e),.7152+.2848*(1-e),.0722-.0722*(1-e),0,0],[.2126-.2126*(1-e),.7152-.7152*(1-e),.0722+.9278*(1-e),0,0],[0,0,0,1,0],[0,0,0,0,1]]}};function hn(e){let n=e.mode===1?"darkSchemeBackgroundColor":"lightSchemeBackgroundColor";return e[n]}function gn(e){let n=e.mode===1?"darkSchemeTextColor":"lightSchemeTextColor";return e[n]}let Tt=new Map;function Ho(){Tt.clear()}let jo=["r","g","b","a"],qo=["mode","brightness","contrast","grayscale","sepia","darkSchemeBackgroundColor","darkSchemeTextColor","lightSchemeBackgroundColor","lightSchemeTextColor"];function Go(e,t){let n="";return jo.forEach(r=>{n+=`${e[r]};`}),qo.forEach(r=>{n+=`${t[r]};`}),n}function Dt(e,t,n,r,s){let o;Tt.has(n)?o=Tt.get(n):(o=new Map,Tt.set(n,o));let a=Go(e,t);if(o.has(a))return o.get(a);let i=Lt(e),l=r==null?null:Fr(r),c=s==null?null:Fr(s),u=n(i,l,c),{r:g,g:b,b:C,a:E}=Ur(u),p=Gr(t),[y,f,k]=Bo([g,b,C],p),m=E===1?vo({r:y,g:f,b:k}):Ro({r:y,g:f,b:k,a:E});return o.set(a,m),m}function mn(e,t){let n=hn(t),r=gn(t);return Dt(e,t,zo,r,n)}function zo({h:e,s:t,l:n,a:r},s,o){let a=n<.5,i;if(a)i=n<.2||t<.12;else{let g=e>200&&e<280;i=t<.24||n>.8&&g}let l=e,c=n;i&&(a?(l=s.h,c=s.s):(l=o.h,c=o.s));let u=ie(n,0,1,s.l,o.l);return{h:l,s:c,l:u,a:r}}let zr=.4;function Ko({h:e,s:t,l:n,a:r},s){let o=n<.5,a=e>200&&e<280,i=t<.12||n>.8&&a;if(o){let g=ie(n,0,.5,0,zr);if(i){let b=s.h,C=s.s;return{h:b,s:C,l:g,a:r}}return{h:e,s:t,l:g,a:r}}let l=ie(n,.5,1,zr,s.l);if(i){let g=s.h,b=s.s;return{h:g,s:b,l,a:r}}let c=e;return e>60&&e<180&&(e>120?c=ie(e,120,180,135,180):c=ie(e,60,120,60,105)),c>40&&c<80&&(l*=.75),{h:c,s:t,l,a:r}}function z(e,t){if(t.mode===0)return mn(e,t);let n=hn(t);return Dt(e,{...t,mode:0},Ko,n)}let Vt=.55;function Kr(e){return ie(e,205,245,205,220)}function Qo({h:e,s:t,l:n,a:r},s){let o=n>.5,a=n<.2||t<.24,i=!a&&e>205&&e<245;if(o){let u=ie(n,.5,1,Vt,s.l);if(a){let b=s.h,C=s.s;return{h:b,s:C,l:u,a:r}}let g=e;return i&&(g=Kr(e)),{h:g,s:t,l:u,a:r}}if(a){let u=s.h,g=s.s,b=ie(n,0,.5,s.l,Vt);return{h:u,s:g,l:b,a:r}}let l=e,c;return i?(l=Kr(e),c=ie(n,0,.5,s.l,Math.min(1,Vt+.05))):c=ie(n,0,.5,s.l,Vt),{h:l,s:t,l:c,a:r}}function te(e,t){if(t.mode===0)return mn(e,t);let n=gn(t);return Dt(e,{...t,mode:0},Qo,n)}function Yo({h:e,s:t,l:n,a:r},s,o){let a=n<.5,i=n<.2||t<.24,l=e,c=t;i&&(a?(l=s.h,c=s.s):(l=o.h,c=o.s));let u=ie(n,0,1,.5,.2);return{h:l,s:c,l:u,a:r}}function Ke(e,t){if(t.mode===0)return mn(e,t);let n=gn(t),r=hn(t);return Dt(e,{...t,mode:0},Yo,n,r)}function Xo(e,t){return z(e,t)}function pn(e,t){return z(e,t)}let Zo=["pre","pre *","code",'[aria-hidden="true"]','[class*="fa-"]',".fa",".fab",".fad",".fal",".far",".fas",".fass",".fasr",".fat",".icofont",'[style*="font-"]','[class*="icon"]','[class*="Icon"]','[class*="symbol"]','[class*="Symbol"]',".glyphicon",'[class*="material-symbol"]','[class*="material-icon"]',"mu",'[class*="mu-"]',".typcn",'[class*="vjs-"]'];function Jo(e){let t=[];return t.push(`*:not(${Zo.join(", ")}) {`),e.useFont&&e.fontFamily&&t.push(` font-family: ${e.fontFamily} !important;`),e.textStroke>0&&(t.push(` -webkit-text-stroke: ${e.textStroke}px !important;`),t.push(` text-stroke: ${e.textStroke}px !important;`)),t.push("}"),t.join(`
`)}var bn;(function(e){e[e.light=0]="light",e[e.dark=1]="dark"})(bn||(bn={}));function Qr(e){let t=[];return e.mode===bn.dark&&t.push("invert(100%) hue-rotate(180deg)"),e.brightness!==100&&t.push(`brightness(${e.brightness}%)`),e.contrast!==100&&t.push(`contrast(${e.contrast}%)`),e.grayscale!==0&&t.push(`grayscale(${e.grayscale}%)`),e.sepia!==0&&t.push(`sepia(${e.sepia}%)`),t.length===0?null:t.join(" ")}function ea(e){return e.slice(0,4).map(t=>t.map(n=>n.toFixed(3)).join(" ")).join(" ")}function ta(e){return ea(Gr(e))}function na(e){return(e<16?"0":"")+e.toString(16)}function Yr(){if("randomUUID"in crypto){let e=crypto.randomUUID();return e.substring(0,8)+e.substring(9,13)+e.substring(14,18)+e.substring(19,23)+e.substring(24)}return"getRandomValues"in crypto?Array.from(crypto.getRandomValues(new Uint8Array(16))).map(e=>na(e)).join(""):Math.floor(Math.random()*2**55).toString(36)}let Sn=new Map,yn=new Map;async function Xr(e){return window.DarkReader?.Plugins?.fetch?window.DarkReader.Plugins.fetch(e):new Promise((t,n)=>{let r=Yr();Sn.set(r,t),yn.set(r,n),chrome.runtime.sendMessage({type:ht.FETCH,data:e,id:r})})}chrome.runtime.onMessage.addListener(({type:e,data:t,error:n,id:r})=>{if(e===ae.FETCH_RESPONSE){let s=Sn.get(r),o=yn.get(r);Sn.delete(r),yn.delete(r),n?o&&o(n):s&&s(t)}});let ra=1e3/60;class sa{constructor(){this.queue=[],this.timerId=null}addTask(t){this.queue.push(t),this.scheduleFrame()}stop(){this.timerId!==null&&(cancelAnimationFrame(this.timerId),this.timerId=null),this.queue=[]}scheduleFrame(){this.timerId||(this.timerId=requestAnimationFrame(()=>{this.timerId=null;let t=Date.now(),n;for(;n=this.queue.shift();)if(n(),Date.now()-t>=ra){this.scheduleFrame();break}}))}}let kn=new sa;async function Zr(e){return new Promise(async(t,n)=>{try{let r=e.startsWith("data:")?e:await oa(e),s=ns(r)??await ro(e),o;r.startsWith("data:image/svg+xml")?o=await Jr(r):o=await aa(s)??await Jr(r),kn.addTask(()=>{let a=fa(o);t({src:e,dataURL:a.isLarge?"":r,width:o.width,height:o.height,...a})})}catch(r){n(r)}})}async function oa(e){return new URL(e).origin===location.origin?await hr(e):await Xr({url:e,responseType:"data-url"})}async function aa(e){try{return await createImageBitmap(e)}catch(t){return yr(`Unable to create image bitmap for type ${e.type}: ${String(t)}`),null}}let ia=256,ca=0;async function Jr(e){return new Promise((t,n)=>{let r=new Image;r.onload=()=>t(r),r.onerror=()=>n(`Unable to load image ${e}`),++ca<=ia||yt()?r.src=e:an(()=>r.src=e)})}let wn=32*32,$e,Pe;function la(){let e=wn,t=wn;$e=document.createElement("canvas"),$e.width=e,$e.height=t,Pe=$e.getContext("2d",{willReadFrequently:!0}),Pe.imageSmoothingEnabled=!1}function da(){$e=null,Pe=null}let ua=512*512;function fa(e){$e||la();let t,n;if(e instanceof HTMLImageElement?(t=e.naturalWidth,n=e.naturalHeight):(t=e.width,n=e.height),t===0||n===0)return{isDark:!1,isLight:!1,isTransparent:!1,isLarge:!1};let r=t*n>ua,s=t*n,o=Math.min(1,Math.sqrt(wn/s)),a=Math.ceil(t*o),i=Math.ceil(n*o);Pe.clearRect(0,0,a,i),Pe.drawImage(e,0,0,t,n,0,0,a,i);let c=Pe.getImageData(0,0,a,i).data,u=.05,g=.4,b=.7,C=0,E=0,p=0,y,f,k,m,w,d,h,S;for(k=0;k<i;k++)for(f=0;f<a;f++)y=4*(k*a+f),m=c[y+0],w=c[y+1],d=c[y+2],h=c[y+3],h/255<u?C++:(S=qr(m,w,d),S<g&&E++,S>b&&p++);let _=a*i,v=_-C,V=.7,$=.7,G=.1;return{isDark:E/v>=V,isLight:p/v>=$,isTransparent:C/_>=G,isLarge:r}}let Qe=null,xn=!1,es=!1,Cn=[];document.addEventListener("__darkreader__inlineScriptsAllowed",()=>xn=!0,{once:!0});async function ha(){if(!!xn){if(es)return await new Promise(e=>Cn.push(e));es=!0,await new Promise(e=>{document.addEventListener("__darkreader__blobURLCheckResponse",t=>{Qe=t.detail.blobURLAllowed,e(),Cn.forEach(n=>n()),Cn.splice(0)},{once:!0}),document.dispatchEvent(new CustomEvent("__darkreader__blobURLCheckRequest"))})}}function ga(){return Qe!=null||!xn}function ts(e){e.blockedURI==="blob"&&(Qe=!1,document.removeEventListener("securitypolicyviolation",ts))}document.addEventListener("securitypolicyviolation",ts);let En=new Set;function _n({dataURL:e,width:t,height:n},r){e.startsWith("data:image/svg+xml")&&(e=pa(e));let s=ta(r),o=[`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="${t}" height="${n}">`,"<defs>",'<filter id="darkreader-image-filter">',`<feColorMatrix type="matrix" values="${s}" />`,"</filter>","</defs>",`<image width="${t}" height="${n}" filter="url(#darkreader-image-filter)" xlink:href="${e}" />`,"</svg>"].join("");if(!Qe)return`data:image/svg+xml;base64,${btoa(o)}`;let a=new Uint8Array(o.length);for(let c=0;c<o.length;c++)a[c]=o.charCodeAt(c);let i=new Blob([a],{type:"image/svg+xml"}),l=URL.createObjectURL(i);return En.add(l),l}let ma={"<":"<",">":">","&":"&","'":"'",'"':"""};function pa(e){return e.replace(/[<>&'"]/g,t=>ma[t]??t)}let Ot=new Map;function ns(e){let t=e.indexOf(":"),n=e.indexOf(";",t+1),r=e.indexOf(",",n+1),s=e.substring(n+1,r).toLocaleLowerCase(),o=e.substring(t+1,n);if(s!=="base64"||!o)return null;let a=atob(e.substring(r+1)),i=new Uint8Array(a.length);for(let l=0;l<a.length;l++)i[l]=a.charCodeAt(l);return new Blob([i],{type:o})}async function ba(e){if(!Qe)return null;let t=Er(e),n=Ot.get(t);if(n)return n;let r=ns(e);return r||(r=await(await fetch(e)).blob()),n=URL.createObjectURL(r),Ot.set(t,n),n}function Sa(){kn&&kn.stop(),da(),En.forEach(e=>URL.revokeObjectURL(e)),En.clear(),Ot.forEach(e=>URL.revokeObjectURL(e)),Ot.clear()}let rs=8,Rn="conic-",ya=Rn.length,ka="radial-",wa="linear-";function xa(e){let t=[],n=0,r=Rn.length;for(;(n=e.indexOf("gradient",r))!==-1;){let s;if([wa,ka,Rn].find(l=>{if(n-l.length>=0&&e.substring(n-l.length,n)===l)return e.slice(n-l.length-10,n-l.length-1)==="repeating"?(s=`repeating-${l}gradient`,!0):e.slice(n-l.length-8,n-l.length-1)==="-webkit"?(s=`-webkit-${l}gradient`,!0):(s=`${l}gradient`,!0)}),!s)break;let{start:o,end:a}=ln(e,n+rs),i=e.substring(o+1,a-1);r=a+1+ya,t.push({typeGradient:s,match:i,offset:s.length+2,index:n-s.length+rs,hasComma:!0})}return t.length&&(t[t.length-1].hasComma=!1),t}function Ca(e,t){return Boolean(e&&e.getPropertyPriority(t))}function ss(e,t,n,r,s,o){let a=null;if(e.startsWith("--"))a=Oa(r,e,t,n,s,o);else if(t.includes("var("))a=$a(r,e,t);else if(e==="color-scheme")a=Va();else if(e==="scrollbar-color")a=Da(t);else if(e.includes("color")&&e!=="-webkit-print-color-adjust"||e==="fill"||e==="stroke"||e==="stop-color")if(e.startsWith("border")&&e!=="border-color"&&t==="initial"){let i=e.substring(0,e.length-6),l=n.style.getPropertyValue(i);l.startsWith("0px")||l==="none"?(e=i,a=l):a=t}else a=La(e,t,n);else e==="background-image"||e==="list-style-image"?a=is(t,n,s,o):e.includes("shadow")&&(a=Ta(t));return a?{property:e,value:a,important:Ca(n.style,e),sourceValue:t}:null}function os(...e){return e.filter(Boolean).join(", ")}function Ea(e,t,n){let r=[];t||(r.push("html {"),r.push(` background-color: ${z({r:255,g:255,b:255},e)} !important;`),r.push("}")),fr&&e.mode===1&&(r.push("html {"),r.push(" color-scheme: dark !important;"),r.push("}"),r.push("iframe {"),r.push(" color-scheme: initial;"),r.push("}"));let s=os(t?"":"html, body",n?"input, textarea, select, button, dialog":"");return s&&(r.push(`${s} {`),r.push(` background-color: ${z({r:255,g:255,b:255},e)};`),r.push("}")),r.push(`${os("html, body",n?"input, textarea, select, button":"")} {`),r.push(` border-color: ${Ke({r:76,g:76,b:76},e)};`),r.push(` color: ${te({r:0,g:0,b:0},e)};`),r.push("}"),r.push("a {"),r.push(` color: ${te({r:0,g:64,b:255},e)};`),r.push("}"),r.push("table {"),r.push(` border-color: ${Ke({r:128,g:128,b:128},e)};`),r.push("}"),r.push("mark {"),r.push(` color: ${te({r:0,g:0,b:0},e)};`),r.push("}"),r.push("::placeholder {"),r.push(` color: ${te({r:169,g:169,b:169},e)};`),r.push("}"),r.push("input:-webkit-autofill,"),r.push("textarea:-webkit-autofill,"),r.push("select:-webkit-autofill {"),r.push(` background-color: ${z({r:250,g:255,b:189},e)} !important;`),r.push(` color: ${te({r:0,g:0,b:0},e)} !important;`),r.push("}"),e.scrollbarColor&&r.push(Ra(e)),e.selectionColor&&r.push(_a(e)),ur&&(r.unshift("@layer {"),r.push("}")),r.join(`
`)}function as(e){let t,n;if(e.selectionColor==="auto")t=z({r:0,g:96,b:212},{...e,grayscale:0}),n=te({r:255,g:255,b:255},{...e,grayscale:0});else{let r=Q(e.selectionColor),s=Lt(r);t=e.selectionColor,s.l<.5?n="#FFF":n="#000"}return{backgroundColorSelection:t,foregroundColorSelection:n}}function _a(e){let t=[],n=as(e),r=n.backgroundColorSelection,s=n.foregroundColorSelection;return["::selection","::-moz-selection"].forEach(o=>{t.push(`${o} {`),t.push(` background-color: ${r} !important;`),t.push(` color: ${s} !important;`),t.push("}")}),t.join(`
`)}function Ra(e){let t=[],n,r,s,o,a,i;if(e.scrollbarColor==="auto")n=z({r:241,g:241,b:241},e),r=te({r:96,g:96,b:96},e),s=z({r:176,g:176,b:176},e),o=z({r:144,g:144,b:144},e),a=z({r:96,g:96,b:96},e),i=z({r:255,g:255,b:255},e);else{let l=Q(e.scrollbarColor),c=Lt(l),u=c.l>.5,g=C=>({...c,l:be(c.l+C,0,1)}),b=C=>({...c,l:be(c.l-C,0,1)});n=De(b(.4)),r=De(u?b(.4):g(.4)),s=De(c),o=De(g(.1)),a=De(g(.2)),i=De(b(.5))}return t.push("::-webkit-scrollbar {"),t.push(` background-color: ${n};`),t.push(` color: ${r};`),t.push("}"),t.push("::-webkit-scrollbar-thumb {"),t.push(` background-color: ${s};`),t.push("}"),t.push("::-webkit-scrollbar-thumb:hover {"),t.push(` background-color: ${o};`),t.push("}"),t.push("::-webkit-scrollbar-thumb:active {"),t.push(` background-color: ${a};`),t.push("}"),t.push("::-webkit-scrollbar-corner {"),t.push(` background-color: ${i};`),t.push("}"),Ae&&(t.push("* {"),t.push(` scrollbar-color: ${s} ${n};`),t.push("}")),t.join(`
`)}function vn(e,{strict:t}){return va(e,{strict:t})}function va(e,{strict:t}){let n=[];return n.push(`html, body, ${t?"body :not(iframe)":"body > :not(iframe)"} {`),n.push(` background-color: ${z({r:255,g:255,b:255},e)} !important;`),n.push(` border-color: ${Ke({r:64,g:64,b:64},e)} !important;`),n.push(` color: ${te({r:0,g:0,b:0},e)} !important;`),n.push("}"),n.push('div[style*="background-color: rgb(135, 135, 135)"] {'),n.push(" background-color: #878787 !important;"),n.push("}"),n.join(`
`)}let Aa=new Set(["inherit","transparent","initial","currentcolor","none","unset","auto"]);function La(e,t,n){if(Aa.has(t.toLowerCase()))return t;let r=Q(t);return r?e.includes("background")?n.style.webkitMaskImage&&n.style.webkitMaskImage!=="none"||n.style.webkitMask&&!n.style.webkitMask.startsWith("none")||n.style.mask&&n.style.mask!=="none"||n.style.getPropertyValue("mask-image")&&n.style.getPropertyValue("mask-image")!=="none"?s=>te(r,s):s=>z(r,s):e.includes("border")||e.includes("outline")?s=>Ke(r,s):s=>te(r,s):null}let $t=new Map,ue=new Map;function Ma(e,t){if(!e||t.length===0)return!1;if(t.some(r=>r==="*"))return!0;let n=e.split(/,\s*/g);for(let r=0;r<t.length;r++){let s=t[r];if(n.some(o=>o===s))return!0}return!1}function is(e,t,n,r){try{if(Ma(t.selectorText,n))return e;let s=xa(e),o=je(Mr,e);if(o.length===0&&s.length===0)return e;let a=E=>{let p=0;return E.map(y=>{let f=e.indexOf(y,p);return p=f+y.length,{match:y,index:f}})},i=s.map(E=>({type:"gradient",...E})).concat(a(o).map(E=>({type:"url",offset:0,...E}))).sort((E,p)=>E.index>p.index?1:-1),l=E=>{let{typeGradient:p,match:y,hasComma:f}=E,k=/([^\(\),]+(\([^\(\)]*(\([^\(\)]*\)*[^\(\)]*)?\))?([^\(\), ]|( (?!calc)))*),?/g,m=/^(from|color-stop|to)\(([^\(\)]*?,\s*)?(.*?)\)$/,w=je(k,y,1).map(d=>{d=d.trim();let h=Q(d);if(h)return v=>pn(h,v);let S=d.lastIndexOf(" ");if(h=Q(d.substring(0,S)),h)return v=>`${pn(h,v)} ${d.substring(S+1)}`;let _=d.match(m);return _&&(h=Q(_[3]),h)?v=>`${_[1]}(${_[2]?`${_[2]}, `:""}${pn(h,v)})`:()=>d});return d=>`${p}(${w.map(h=>h(d)).join(", ")})${f?", ":""}`},c=E=>{let p=un(E),y=p.length===0,{parentStyleSheet:f}=t,k=f&&f.href?_t(f.href):f?.ownerNode?.baseURI||location.origin;return p=Et(k,p),async m=>{if(y)return"url('')";let w=null;if($t.has(p))w=$t.get(p);else try{if(ga()||await ha(),ue.has(p)){let d=ue.get(p);if(w=await new Promise(h=>d.push(h)),!w)return null}else ue.set(p,[]),w=await Zr(p),$t.set(p,w),ue.get(p).forEach(d=>d(w)),ue.delete(p);if(r())return null}catch(d){yr(d),ue.has(p)&&(ue.get(p).forEach(h=>h(null)),ue.delete(p))}if(w){let d=u(w,m);if(d)return d}if(p.startsWith("data:")){let d=await ba(p);if(d)return`url("${d}")`}return`url("${p}")`}},u=(E,p)=>{let{isDark:y,isLight:f,isTransparent:k,isLarge:m,width:w}=E,d,h=E.src.startsWith("data:")?"data:":E.src;return m&&f&&!k&&p.mode===1?(de(`Hiding large light image ${h}`),d="none"):y&&k&&p.mode===1&&w>2?(de(`Inverting dark image ${h}`),d=`url("${_n(E,{...p,sepia:be(p.sepia+10,0,100)})}")`):f&&!k&&p.mode===1?(de(`Dimming light image ${h}`),d=`url("${_n(E,p)}")`):p.mode===0&&f?(de(`Applying filter to image ${h}`),d=`url("${_n(E,{...p,brightness:be(p.brightness-10,5,200),sepia:be(p.sepia+10,0,100)})}")`):(de(`Not modifying the image ${h}`),d=null),d},g=[],b=0,C=!1;return i.forEach(({type:E,match:p,index:y,typeGradient:f,hasComma:k,offset:m},w)=>{let d=y,h=b,S=d+p.length+m;b=S,h!==d&&(C?g.push(()=>{let _=e.substring(h,d);return _[0]===","&&(_=_.substring(1)),_}):g.push(()=>e.substring(h,d))),C=k||!1,E==="url"?g.push(c(p)):E==="gradient"&&g.push(l({match:p,index:y,typeGradient:f,hasComma:k||!1,offset:m})),w===i.length-1&&g.push(()=>e.substring(S))}),E=>{let p=g.filter(Boolean).map(f=>f(E));if(p.some(f=>f instanceof Promise))return Promise.all(p).then(f=>f.filter(Boolean).join(""));let y=p.join("");return y.endsWith(", initial")?y.slice(0,-9):y}}catch{return null}}function cs(e){try{let t=0,n=je(/(^|\s)(?!calc)([a-z]+\(.+?\)|#[0-9a-f]+|[a-z]+)(.*?(inset|outset)?($|,))/gi,e,2),r=0,s=n.map((o,a)=>{let i=t,l=e.indexOf(o,t),c=l+o.length;t=c;let u=Q(o);return u?g=>`${e.substring(i,l)}${Xo(u,g)}${a===n.length-1?e.substring(c):""}`:(r++,()=>e.substring(i,c))});return o=>{let a=s.map(i=>i(o)).join("");return{matchesLength:n.length,unparseableMatchesLength:r,result:a}}}catch{return null}}function Ta(e){let t=cs(e);return t?n=>t(n).result:null}function Da(e){let t=e.match(/^\s*([a-z]+(\(.*\))?)\s+([a-z]+(\(.*\))?)\s*$/);if(!t)return e;let n=Q(t[1]),r=Q(t[3]);return!n||!r?null:s=>`${te(n,s)} ${z(n,s)}`}function Va(){return e=>e.mode===0?"dark light":"dark"}function Oa(e,t,n,r,s,o){return e.getModifierForVariable({varName:t,sourceValue:n,rule:r,ignoredImgSelectors:s,isCancelled:o})}function $a(e,t,n){return e.getModifierForVarDependant(t,n)}function Pa(){Ho(),$t.clear(),Sa(),ue.clear()}let re=1<<0,Ie=1<<1,Fe=1<<2,Ye=1<<3;class Ia{constructor(){this.varTypes=new Map,this.rulesQueue=new Set,this.inlineStyleQueue=[],this.definedVars=new Set,this.varRefs=new Map,this.unknownColorVars=new Set,this.unknownBgVars=new Set,this.undefinedVars=new Set,this.initialVarTypes=new Map,this.changedTypeVars=new Set,this.typeChangeSubscriptions=new Map,this.unstableVarValues=new Map}clear(){this.varTypes.clear(),this.rulesQueue.clear(),this.inlineStyleQueue.splice(0),this.definedVars.clear(),this.varRefs.clear(),this.unknownColorVars.clear(),this.unknownBgVars.clear(),this.undefinedVars.clear(),this.initialVarTypes.clear(),this.changedTypeVars.clear(),this.typeChangeSubscriptions.clear(),this.unstableVarValues.clear()}isVarType(t,n){return this.varTypes.has(t)&&(this.varTypes.get(t)&n)>0}addRulesForMatching(t){this.rulesQueue.add(t)}addInlineStyleForMatching(t){this.inlineStyleQueue.push(t)}matchVariablesAndDependents(){this.rulesQueue.size===0&&this.inlineStyleQueue.length===0||(this.changedTypeVars.clear(),this.initialVarTypes=new Map(this.varTypes),this.collectRootVariables(),this.collectVariablesAndVarDep(),this.collectRootVarDependents(),this.varRefs.forEach((t,n)=>{t.forEach(r=>{this.varTypes.has(n)&&this.resolveVariableType(r,this.varTypes.get(n))})}),this.unknownColorVars.forEach(t=>{this.unknownBgVars.has(t)?(this.unknownColorVars.delete(t),this.unknownBgVars.delete(t),this.resolveVariableType(t,re)):this.isVarType(t,re|Ie|Fe)?this.unknownColorVars.delete(t):this.undefinedVars.add(t)}),this.unknownBgVars.forEach(t=>{this.findVarRef(t,r=>this.unknownColorVars.has(r)||this.isVarType(r,re|Ie|Fe))!=null?this.iterateVarRefs(t,r=>{this.resolveVariableType(r,re)}):this.isVarType(t,re|Ye)?this.unknownBgVars.delete(t):this.undefinedVars.add(t)}),this.changedTypeVars.forEach(t=>{this.typeChangeSubscriptions.has(t)&&this.typeChangeSubscriptions.get(t).forEach(n=>{n()})}),this.changedTypeVars.clear())}getModifierForVariable(t){return n=>{let{varName:r,sourceValue:s,rule:o,ignoredImgSelectors:a,isCancelled:i}=t,l=()=>{let b=[],C=(E,p,y)=>{if(!this.isVarType(r,E))return;let f=p(r),k;if(Ce(s))if(fs(s)){let m=Dn(s,this.unstableVarValues);m||(m=E===re?"#ffffff":"#000000"),k=y(m,n)}else k=Se(s,m=>p(m),m=>y(m,n));else k=y(s,n);b.push({property:f,value:k})};if(C(re,Xe,Ee),C(Ie,An,Ze),C(Fe,Ln,It),this.isVarType(r,Ye)){let E=us(r),p=s;Ce(s)&&(p=Se(s,f=>Xe(f),f=>Ee(f,n)));let y=is(p,o,a,i);p=typeof y=="function"?y(n):y,b.push({property:E,value:p})}return b},c=new Set,u=b=>{let C=()=>{let E=l();b(E)};c.add(C),this.subscribeForVarTypeChange(r,C)},g=()=>{c.forEach(b=>{this.unsubscribeFromVariableTypeChanges(r,b)})};return{declarations:l(),onTypeChange:{addListener:u,removeListeners:g}}}}getModifierForVarDependant(t,n){let r=n.match(/^\s*(rgb|hsl)a?\(/),s=n.match(/^rgba?\(var\(--[\-_A-Za-z0-9]+\)(\s*,?\/?\s*0?\.\d+)?\)$/);if(r&&!s){let o=t.startsWith("background"),a=Mn(t);return i=>{let l=Dn(n,this.unstableVarValues);return l||(l=o?"#ffffff":"#000000"),(o?Ee:a?Ze:It)(l,i)}}return t==="background-color"||s&&t==="background"?o=>{let a=Ee(r?"255, 255, 255":"#ffffff",o);return Se(n,i=>Xe(i),i=>Ee(i,o),a)}:Mn(t)?o=>{let a=Ze(r?"0, 0, 0":"#000000",o);return Se(n,i=>An(i),i=>Ze(i,o),a)}:t==="background"||t==="background-image"||t==="box-shadow"?o=>{let a=new Set,i=()=>{let c=Se(n,u=>this.isVarType(u,re)?Xe(u):this.isVarType(u,Ye)?us(u):(a.add(u),u),u=>Ee(u,o));if(t==="box-shadow"){let g=cs(c)(o);if(g.unparseableMatchesLength!==g.matchesLength)return g.result}return c},l=i();return a.size>0?l.match(/^var\(.*?, (var\(--darkreader-bg--.*\))|(#[0-9A-Fa-f]+)|([a-z]+)|(rgba?\(.+\))|(hsla?\(.+\))\)$/)?l:new Promise(u=>{for(let g of a.values()){let b=()=>{this.unsubscribeFromVariableTypeChanges(g,b);let C=i();u(C)};this.subscribeForVarTypeChange(g,b)}}):l}:t.startsWith("border")||t.startsWith("outline")?o=>Se(n,a=>Ln(a),a=>It(a,o)):null}subscribeForVarTypeChange(t,n){this.typeChangeSubscriptions.has(t)||this.typeChangeSubscriptions.set(t,new Set);let r=this.typeChangeSubscriptions.get(t);r.has(n)||r.add(n)}unsubscribeFromVariableTypeChanges(t,n){this.typeChangeSubscriptions.has(t)&&this.typeChangeSubscriptions.get(t).delete(n)}collectVariablesAndVarDep(){this.rulesQueue.forEach(t=>{xe(t,n=>{n.style&&this.collectVarsFromCSSDeclarations(n.style)})}),this.inlineStyleQueue.forEach(t=>{this.collectVarsFromCSSDeclarations(t)}),this.rulesQueue.clear(),this.inlineStyleQueue.splice(0)}collectVarsFromCSSDeclarations(t){Me(t,(n,r)=>{Pt(n)&&this.inspectVariable(n,r),Ce(r)&&this.inspectVarDependant(n,r)})}shouldProcessRootVariables(){return this.rulesQueue.size>0&&document.documentElement.getAttribute("style")?.includes("--")}collectRootVariables(){!this.shouldProcessRootVariables()||Me(document.documentElement.style,(t,n)=>{Pt(t)&&this.inspectVariable(t,n)})}inspectVariable(t,n){if(this.unstableVarValues.set(t,n),Ce(n)&&fs(n)&&(this.unknownColorVars.add(t),this.definedVars.add(t)),this.definedVars.has(t))return;this.definedVars.add(t),Boolean(n.match(hs)||n.match(gs)||Q(n))?this.unknownColorVars.add(t):(n.includes("url(")||n.includes("linear-gradient(")||n.includes("radial-gradient("))&&this.resolveVariableType(t,Ye)}resolveVariableType(t,n){let r=this.initialVarTypes.get(t)||0,o=(this.varTypes.get(t)||0)|n;this.varTypes.set(t,o),(o!==r||this.undefinedVars.has(t))&&(this.changedTypeVars.add(t),this.undefinedVars.delete(t)),this.unknownColorVars.delete(t),this.unknownBgVars.delete(t)}collectRootVarDependents(){!this.shouldProcessRootVariables()||Me(document.documentElement.style,(t,n)=>{Ce(n)&&this.inspectVarDependant(t,n)})}inspectVarDependant(t,n){Pt(t)?this.iterateVarDeps(n,r=>{this.varRefs.has(t)||this.varRefs.set(t,new Set),this.varRefs.get(t).add(r)}):t==="background-color"||t==="box-shadow"?this.iterateVarDeps(n,r=>this.resolveVariableType(r,re)):Mn(t)?this.iterateVarDeps(n,r=>this.resolveVariableType(r,Ie)):t.startsWith("border")||t.startsWith("outline")?this.iterateVarDeps(n,r=>this.resolveVariableType(r,Fe)):(t==="background"||t==="background-image")&&this.iterateVarDeps(n,r=>{if(this.isVarType(r,re|Ye))return;let s=this.findVarRef(r,o=>this.unknownColorVars.has(o)||this.isVarType(o,re|Ie|Fe))!=null;this.iterateVarRefs(r,o=>{s?this.resolveVariableType(o,re):this.unknownBgVars.add(o)})})}iterateVarDeps(t,n){let r=new Set;Na(t,s=>r.add(s)),r.forEach(s=>n(s))}findVarRef(t,n,r=new Set){if(r.has(t))return null;if(r.add(t),n(t))return t;let o=this.varRefs.get(t);if(!o||o.size===0)return null;for(let a of o){let i=this.findVarRef(a,n,r);if(i)return i}return null}iterateVarRefs(t,n){this.findVarRef(t,r=>(n(r),!1))}setOnRootVariableChange(t){this.onRootVariableDefined=t}putRootVars(t,n){let r=t.sheet;r.cssRules.length>0&&r.deleteRule(0);let s=new Map;Me(document.documentElement.style,(i,l)=>{Pt(i)&&(this.isVarType(i,re)&&s.set(Xe(i),Ee(l,n)),this.isVarType(i,Ie)&&s.set(An(i),Ze(l,n)),this.isVarType(i,Fe)&&s.set(Ln(i),It(l,n)),this.subscribeForVarTypeChange(i,this.onRootVariableDefined))});let o=[];o.push(":root {");for(let[i,l]of s)o.push(` ${i}: ${l};`);o.push("}");let a=o.join(`
`);r.insertRule(a)}}let F=new Ia;function Fa(e,t=0){let n=e.indexOf("var(",t);if(n>=0){let r=ln(e,n+3);if(r)return{start:n,end:r.end}}return null}function Ua(e){let t=[],n=0,r;for(;r=Fa(e,n);){let{start:s,end:o}=r;t.push({start:s,end:o,value:e.substring(s,o)}),n=r.end+1}return t}function ls(e,t){let n=Ua(e),r=n.length;if(r===0)return e;let s=e.length,o=n.map(i=>t(i.value,n.length)),a=[];a.push(e.substring(0,n[0].start));for(let i=0;i<r;i++){a.push(o[i]);let l=n[i].end,c=i<r-1?n[i+1].start:s;a.push(e.substring(l,c))}return a.join("")}function ds(e){let t=e.indexOf(","),n,r;return t>=0?(n=e.substring(4,t).trim(),r=e.substring(t+1,e.length-1).trim()):(n=e.substring(4,e.length-1).trim(),r=""),{name:n,fallback:r}}function Se(e,t,n,r){return ls(e,o=>{let{name:a,fallback:i}=ds(o),l=t(a);if(!i)return r?`var(${l}, ${r})`:`var(${l})`;let c;return Ce(i)?c=Se(i,t,n):n?c=n(i):c=i,`var(${l}, ${c})`})}function Na(e,t){Se(e,n=>(t(n),n))}function Xe(e){return`--darkreader-bg${e}`}function An(e){return`--darkreader-text${e}`}function Ln(e){return`--darkreader-border${e}`}function us(e){return`--darkreader-bgimg${e}`}function Pt(e){return e.startsWith("--")}function Ce(e){return e.includes("var(")}function fs(e){return e.match(/^\s*(rgb|hsl)a?\(/)||e.match(/^(((\d{1,3})|(var\([\-_A-Za-z0-9]+\))),?\s*?){3}$/)}function Mn(e){return e==="color"||e==="caret-color"||e==="-webkit-text-fill-color"}let hs=/^(\d{1,3})\s+(\d{1,3})\s+(\d{1,3})$/,gs=/^(\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})$/;function Wa(e){let t=e.match(hs)??e.match(gs);if(t){let n=`rgb(${t[1]}, ${t[2]}, ${t[3]})`;return{isRaw:!0,color:n}}return{isRaw:!1,color:e}}function Tn(e,t,n){let{isRaw:r,color:s}=Wa(e),o=Q(s);if(o){let a=n(o,t);if(r){let i=Q(a);return i?`${i.r}, ${i.g}, ${i.b}`:a}return a}return s}function Ee(e,t){return Tn(e,t,z)}function Ze(e,t){return Tn(e,t,te)}function It(e,t){return Tn(e,t,Ke)}function Dn(e,t,n=new Set){let r=!1,o=ls(e,(a,i)=>{let{name:l,fallback:c}=ds(a),u=i>1?new Set(n):n;if(u.has(l))return r=!0,null;u.add(l);let g=t.get(l)||c,b=null;return g&&(Ce(g)?b=Dn(g,t,u):b=g),b||(r=!0,null)});return r?null:o}let Ue={"background-color":{customProp:"--darkreader-inline-bgcolor",cssProp:"background-color",dataAttr:"data-darkreader-inline-bgcolor"},"background-image":{customProp:"--darkreader-inline-bgimage",cssProp:"background-image",dataAttr:"data-darkreader-inline-bgimage"},"border-color":{customProp:"--darkreader-inline-border",cssProp:"border-color",dataAttr:"data-darkreader-inline-border"},"border-bottom-color":{customProp:"--darkreader-inline-border-bottom",cssProp:"border-bottom-color",dataAttr:"data-darkreader-inline-border-bottom"},"border-left-color":{customProp:"--darkreader-inline-border-left",cssProp:"border-left-color",dataAttr:"data-darkreader-inline-border-left"},"border-right-color":{customProp:"--darkreader-inline-border-right",cssProp:"border-right-color",dataAttr:"data-darkreader-inline-border-right"},"border-top-color":{customProp:"--darkreader-inline-border-top",cssProp:"border-top-color",dataAttr:"data-darkreader-inline-border-top"},"box-shadow":{customProp:"--darkreader-inline-boxshadow",cssProp:"box-shadow",dataAttr:"data-darkreader-inline-boxshadow"},color:{customProp:"--darkreader-inline-color",cssProp:"color",dataAttr:"data-darkreader-inline-color"},fill:{customProp:"--darkreader-inline-fill",cssProp:"fill",dataAttr:"data-darkreader-inline-fill"},stroke:{customProp:"--darkreader-inline-stroke",cssProp:"stroke",dataAttr:"data-darkreader-inline-stroke"},"outline-color":{customProp:"--darkreader-inline-outline",cssProp:"outline-color",dataAttr:"data-darkreader-inline-outline"},"stop-color":{customProp:"--darkreader-inline-stopcolor",cssProp:"stop-color",dataAttr:"data-darkreader-inline-stopcolor"}},ms={background:{customProp:"--darkreader-inline-bg",cssProp:"background",dataAttr:"data-darkreader-inline-bg"}},Vn=Object.values(Ue),On={};Vn.forEach(({cssProp:e,customProp:t})=>On[t]=e);let Ft=["style","fill","stop-color","stroke","bgcolor","color","background"],Je=Ft.map(e=>`[${e}]`).join(", ");function ps(){return Vn.concat(Object.values(ms)).map(({dataAttr:t,customProp:n,cssProp:r})=>[`[${t}] {`,` ${r}: var(${n}) !important;`,"}"].join(`
`)).concat(["[data-darkreader-inline-invert] {"," filter: invert(100%) hue-rotate(180deg);","}"]).join(`
`)}function Ba(e){let t=[];return e instanceof Element&&e.matches(Je)&&t.push(e),(e instanceof Element||lr&&e instanceof ShadowRoot||e instanceof Document)&&tn(t,e.querySelectorAll(Je)),t}let et=new Map,Ut=new Map;function Ha(e,t){$n(document,e,t),Le(document.documentElement,n=>{$n(n.shadowRoot,e,t)})}function $n(e,t,n){et.has(e)&&(et.get(e).disconnect(),Ut.get(e).disconnect());let r=new WeakSet;function s(p){Ba(p).forEach(y=>{r.has(y)||(r.add(y),t(y))}),Le(p,y=>{r.has(p)||(r.add(p),n(y.shadowRoot),$n(y.shadowRoot,t,n))}),F.matchVariablesAndDependents()}let o=Cr(e,{onMinorMutations:(p,{additions:y})=>{y.forEach(f=>s(f))},onHugeMutations:()=>{s(e)}});et.set(e,o);let a=0,i=null,l=bt({seconds:10}),c=bt({seconds:2}),u=50,g=[],b=null,C=nn(p=>{let y=new Set;p.forEach(f=>{let k=f.target;y.has(k)||Ft.includes(f.attributeName)&&(y.add(k),t(k))}),F.matchVariablesAndDependents()}),E=new MutationObserver(p=>{if(b){g.push(...p);return}a++;let y=Date.now();if(i==null)i=y;else if(a>=u){if(y-i<l){b=setTimeout(()=>{i=null,a=0,b=null;let f=g;g=[],C(f)},c),g.push(...p);return}i=y,a=1}C(p)});E.observe(e,{attributes:!0,attributeFilter:Ft.concat(Vn.map(({dataAttr:p})=>p)),subtree:!0}),Ut.set(e,E)}function ja(){et.forEach(e=>e.disconnect()),Ut.forEach(e=>e.disconnect()),et.clear(),Ut.clear()}let Pn=new WeakMap,bs=new WeakSet,In=new WeakMap,qa=["brightness","contrast","grayscale","sepia","mode"];function Ga(e){if(In.has(e))return In.get(e);let t=Boolean(e&&(e.getAttribute("class")?.includes("logo")||e.parentElement?.getAttribute("class")?.includes("logo")));return In.set(e,t),t}function Fn(e,t){return Ft.map(n=>`${n}="${e.getAttribute(n)}"`).concat(qa.map(n=>`${n}="${t[n]}"`)).join(" ")}function za(e,t){for(let n=0,r=t.length;n<r;n++){let s=t[n];if(e.matches(s))return!0}return!1}function Un(e,t,n,r){if(Fn(e,t)===Pn.get(e))return;let o=new Set(Object.keys(Ue));function a(c,u,g){let b=ss(u,g,{style:e.style},F,r,null);if(!b)return;function C(f){let{customProp:k,dataAttr:m}=Ue[c]??ms[c];e.style.setProperty(k,f),e.hasAttribute(m)||e.setAttribute(m,""),o.delete(c)}function E(f){let k=[];function m(w){k.forEach(({property:d})=>{e.style.removeProperty(d)}),w.forEach(({property:d,value:h})=>{h instanceof Promise||e.style.setProperty(d,h)}),k=w}m(f.declarations),f.onTypeChange.addListener(m)}function p(f,k){f.then(m=>{m&&c==="background"&&m.startsWith("var(--darkreader-bg--")&&C(m),m&&c==="background-image"&&((e===document.documentElement||e===document.body)&&m===k&&(m="none"),C(m)),Pn.set(e,Fn(e,t))})}let y=typeof b.value=="function"?b.value(t):b.value;typeof y=="string"?C(y):y instanceof Promise?p(y,g):typeof y=="object"&&E(y)}if(n.length>0&&za(e,n)){o.forEach(c=>{e.removeAttribute(Ue[c].dataAttr)});return}let i=e instanceof SVGElement,l=i?e.ownerSVGElement??(e instanceof SVGSVGElement?e:null):null;if(i&&t.mode===1&&l){if(bs.has(l))return;if(Ga(l)){bs.add(l);let c=()=>{let u=l.outerHTML;u=u.replaceAll('<style class="darkreader darkreader--sync" media="screen"></style>',"");let g=`data:image/svg+xml;base64,${btoa(u)}`;Zr(g).then(b=>{b.isDark&&b.isTransparent||b.isLarge&&b.isLight&&!b.isTransparent?l.setAttribute("data-darkreader-inline-invert",""):l.removeAttribute("data-darkreader-inline-invert")})};c(),pe()||on(c);return}}if(e.hasAttribute("bgcolor")){let c=e.getAttribute("bgcolor");(c.match(/^[0-9a-f]{3}$/i)||c.match(/^[0-9a-f]{6}$/i))&&(c=`#${c}`),a("background-color","background-color",c)}if((e===document.documentElement||e===document.body)&&e.hasAttribute("background")){let u=`url("${Et(location.href,e.getAttribute("background")??"")}")`;a("background-image","background-image",u)}if(e.hasAttribute("color")&&e.rel!=="mask-icon"){let c=e.getAttribute("color");(c.match(/^[0-9a-f]{3}$/i)||c.match(/^[0-9a-f]{6}$/i))&&(c=`#${c}`),a("color","color",c)}if(i){if(e.hasAttribute("fill")){let u=e.getAttribute("fill");if(u!=="none")if(e instanceof SVGTextElement)a("fill","color",u);else{let g=()=>{let{width:b,height:C}=e.getBoundingClientRect(),E=b>32||C>32;a("fill",E?"background-color":"color",u)};yt()?g():an(g)}}e.hasAttribute("stop-color")&&a("stop-color","background-color",e.getAttribute("stop-color"))}if(e.hasAttribute("stroke")){let c=e.getAttribute("stroke");a("stroke",e instanceof SVGLineElement||e instanceof SVGTextElement?"border-color":"color",c)}e.style&&Me(e.style,(c,u)=>{if(c==="background-image"&&u.includes("url")){(e===document.documentElement||e===document.body)&&a(c,c,u);return}if(Ue.hasOwnProperty(c)||c.startsWith("--")&&!On[c])a(c,c,u);else if(c==="background"&&u.includes("var("))a("background","background",u);else{let g=On[c];if(g&&!e.style.getPropertyValue(g)&&!e.hasAttribute(g)){if(g==="background-color"&&e.hasAttribute("bgcolor"))return;e.style.setProperty(c,"")}}}),e.style&&e instanceof SVGTextElement&&e.style.fill&&a("fill","color",e.style.getPropertyValue("fill")),e.getAttribute("style")?.includes("--")&&F.addInlineStyleForMatching(e.style),ne(o,c=>{e.removeAttribute(Ue[c].dataAttr)}),Pn.set(e,Fn(e,t))}let Ss="theme-color",ys=`meta[name="${Ss}"]`,tt=null,fe=null;function ks(e,t){tt=tt||e.content;let n=Q(tt);!n||(e.content=z(n,t))}function Ka(e){let t=document.querySelector(ys);t?ks(t,e):(fe&&fe.disconnect(),fe=new MutationObserver(n=>{e:for(let r=0;r<n.length;r++){let{addedNodes:s}=n[r];for(let o=0;o<s.length;o++){let a=s[o];if(a instanceof HTMLMetaElement&&a.name===Ss){fe.disconnect(),fe=null,ks(a,e);break e}}}}),fe.observe(document.head,{childList:!0}))}function Qa(){fe&&(fe.disconnect(),fe=null);let e=document.querySelector(ys);e&&tt&&(e.content=tt)}let Ya=/\/\*[\s\S]*?\*\//g;function Nn(e){return e.replace(Ya,"")}let Xa=["mode","brightness","contrast","grayscale","sepia","darkSchemeBackgroundColor","darkSchemeTextColor","lightSchemeBackgroundColor","lightSchemeTextColor"];function Za(e){let t="";return Xa.forEach(n=>{t+=`${n}:${e[n]};`}),t}let Ja=lo();function Wn(){let e=0;function t(u){let g=u.cssText;return fn(u.parentRule)&&(g=`${u.parentRule.media.mediaText} { ${g} }`),Er(g)}let n=new Set,r=new Map,s=new Set,o=null,a=!1,i=!1;function l(){return a&&!i}function c(u){let g=u.sourceCSSRules,{theme:b,ignoreImageAnalysis:C,force:E,prepareSheet:p,isAsyncCancelled:y}=u,f=r.size===0,k=new Set(r.keys()),m=Za(b),w=m!==o;a&&(i=!0);let d=[];if(xe(g,R=>{let T=t(R),D=!1;if(k.delete(T),n.has(T)||(n.add(T),D=!0),D)f=!0;else{d.push(r.get(T));return}if(R.style.all==="revert")return;let L=[];R.style&&Me(R.style,(x,M)=>{let P=ss(x,M,R,F,C,y);P&&L.push(P)});let q=null;if(L.length>0){let x=R.parentRule;q={selector:R.selectorText,declarations:L,parentRule:x},d.push(q)}r.set(T,q)},()=>{a=!0}),k.forEach(R=>{n.delete(R),r.delete(R)}),o=m,!E&&!f&&!w)return;e++;function h(R,T,D){let{selector:L,declarations:q}=D,x=L,M=ir&&L.startsWith(":is(")&&(L.includes(":is()")||L.includes(":where()")||L.includes(":where(")&&L.includes(":-moz")),P=L.includes("::view-transition-");(M||P)&&(x=".darkreader-unsupported-selector");let U=`${x} {`;for(let X of q){let{property:K,value:j,important:Z}=X;j&&(U+=` ${K}: ${j}${Z?" !important":""};`)}U+=" }",R.insertRule(U,T)}let S=new Map,_=new Map,v=0,V=0,$={rule:null,rules:[],isGroup:!0},G=new WeakMap;function we(R){if(R==null)return $;if(G.has(R))return G.get(R);let T={rule:R,rules:[],isGroup:!0};return G.set(R,T),we(R.parentRule).rules.push(T),T}s.forEach(R=>R()),s.clear(),d.filter(R=>R).forEach(({selector:R,declarations:T,parentRule:D})=>{let L=we(D),q={selector:R,declarations:[],isGroup:!1},x=q.declarations;L.rules.push(q);function M(U,X,K,j){let Z=++v,dt={property:U,value:null,important:K,asyncKey:Z,sourceValue:j};x.push(dt);let ve=e;X.then(Kt=>{!Kt||y()||ve!==e||(dt.value=Kt,Ja.add(()=>{y()||ve!==e||W(Z)}))})}function P(U,X,K,j){let{declarations:Z,onTypeChange:dt}=X,ve=++V,Kt=e,ac=x.length,ut=[];if(Z.length===0){let ce={property:U,value:j,important:K,sourceValue:j,varKey:ve};x.push(ce),ut=[ce]}Z.forEach(ce=>{if(ce.value instanceof Promise)M(ce.property,ce.value,K,j);else{let ft={property:ce.property,value:ce.value,important:K,sourceValue:j,varKey:ve};x.push(ft),ut.push(ft)}}),dt.addListener(ce=>{if(y()||Kt!==e)return;let ft=ce.map(Qs=>({property:Qs.property,value:Qs.value,important:K,sourceValue:j,varKey:ve})),ic=x.indexOf(ut[0],ac);x.splice(ic,ut.length,...ft),ut=ft,H(ve)}),s.add(()=>dt.removeListeners())}T.forEach(({property:U,value:X,important:K,sourceValue:j})=>{if(typeof X=="function"){let Z=X(b);Z instanceof Promise?M(U,Z,K,j):U.startsWith("--")?P(U,Z,K,j):x.push({property:U,value:Z,important:K,sourceValue:j})}else x.push({property:U,value:X,important:K,sourceValue:j})})});let lt=p();function I(){function R(D,L){let{rule:q}=D;if(fn(q)){let{media:x}=q,M=L.cssRules.length;return L.insertRule(`@media ${x.mediaText} {}`,M),L.cssRules[M]}if(Ir(q)){let{name:x}=q,M=L.cssRules.length;return L.insertRule(`@layer ${x} {}`,M),L.cssRules[M]}return L}function T(D,L,q){D.rules.forEach(x=>{if(x.isGroup){let M=R(x,L);T(x,M,q)}else q(x,L)})}T($,lt,(D,L)=>{let q=L.cssRules.length;D.declarations.forEach(({asyncKey:x,varKey:M})=>{x!=null&&S.set(x,{rule:D,target:L,index:q}),M!=null&&_.set(M,{rule:D,target:L,index:q})}),h(L,q,D)})}function W(R){let{rule:T,target:D,index:L}=S.get(R);D.deleteRule(L),h(D,L,T),S.delete(R)}function H(R){let{rule:T,target:D,index:L}=_.get(R);D.deleteRule(L),h(D,L,T)}I()}return{modifySheet:c,shouldRebuildStyle:l}}let Nt=!1;document.addEventListener("__darkreader__inlineScriptsAllowed",()=>Nt=!0,{once:!0});function ei(e,t,n,r){let s=null;function o(){l(),Nt&&e.sheet||(s=ti(e,t,n,r),s.start())}let a=!1;function i(){if(Nt=!0,s?.stop(),a)return;function g(){a=!1,!r()&&n()}a=!0,queueMicrotask(g)}function l(){e.addEventListener("__darkreader__updateSheet",i)}function c(){e.removeEventListener("__darkreader__updateSheet",i)}function u(){c(),s?.stop()}return{start:o,stop:u}}function ti(e,t,n,r){let s=null,o=null;function a(){let u=t();return u?u.length:null}function i(){return a()!==s}function l(){s=a(),c();let u=()=>{let g=r();if(!g&&i()&&(s=a(),n()),g||Nt&&e.sheet){c();return}o=requestAnimationFrame(u)};u()}function c(){o&&cancelAnimationFrame(o)}return{start:l,stop:c}}let ni='style, link[rel*="stylesheet" i]:not([disabled])';function ri(e){if(!e.href)return!1;try{return new URL(e.href).hostname==="fonts.googleapis.com"}catch{return de(`Couldn't construct ${e.href} as URL`),!1}}let si=["www.onet.pl"];function ws(e){return(e instanceof HTMLStyleElement||e instanceof SVGStyleElement&&!si.includes(location.hostname)||e instanceof HTMLLinkElement&&Boolean(e.rel)&&e.rel.toLowerCase().includes("stylesheet")&&Boolean(e.href)&&!e.disabled&&(Ae?!e.href.startsWith("moz-extension://"):!0)&&!ri(e))&&!e.classList.contains("darkreader")&&e.media.toLowerCase()!=="print"&&!e.classList.contains("stylus")}function ye(e,t=[],n=!0){return ws(e)?t.push(e):(e instanceof Element||lr&&e instanceof ShadowRoot||e===document)&&(ne(e.querySelectorAll(ni),r=>ye(r,t,!1)),n&&Le(e,r=>ye(r.shadowRoot,t,!1))),t}let xs=new WeakSet,Cs=new WeakSet,oi=0,Ne=new Map;function ai(){Ne.clear()}function ii(e,{update:t,loadingStart:n,loadingEnd:r}){let s=[],o=e;for(;(o=o.nextElementSibling)&&o.matches(".darkreader");)s.push(o);let a=s.find(x=>x.matches(".darkreader--cors")&&!Cs.has(x))||null,i=s.find(x=>x.matches(".darkreader--sync")&&!xs.has(x))||null,l=null,c=null,u=!1,g=!0,b=()=>u,C=Wn(),E=new MutationObserver(x=>{if(x.some(M=>M.type==="characterData")&&y()){let M=(e.textContent??"").trim();v(M,location.href).then(t)}else t()}),p={attributes:!0,childList:!0,subtree:!0,characterData:!0};function y(){return e instanceof HTMLStyleElement?Nn(e.textContent??"").trim().match(Tr):!1}function f(x,M){let P=!1;if(x){let U;e:for(let X=0,K=x.length;X<K;X++)if(U=x[X],U.href)if(M){if(!U.href.startsWith("https://fonts.googleapis.com/")&&U.href.startsWith("http")&&!U.href.startsWith(location.origin)){P=!0;break e}}else{P=!0;break e}}return P}function k(){if(a)return a.sheet.cssRules;if(y())return null;let x=I();return e instanceof HTMLLinkElement&&!po(e.href)&&f(x,!1)||f(x,!0)?null:x}function m(){a?(e.nextSibling!==a&&e.parentNode.insertBefore(a,e.nextSibling),a.nextSibling!==i&&e.parentNode.insertBefore(i,a.nextSibling)):e.nextSibling!==i&&e.parentNode.insertBefore(i,e.nextSibling)}function w(){i=e instanceof SVGStyleElement?document.createElementNS("http://www.w3.org/2000/svg","style"):document.createElement("style"),i.classList.add("darkreader"),i.classList.add("darkreader--sync"),i.media="screen",e.title&&(i.title=e.title),xs.add(i)}let d=!1,h=!1,S=++oi;async function _(){let x,M;if(e instanceof HTMLLinkElement){let[P,U]=we();if(gt&&!e.sheet||!gt&&!P&&!U||lt(U)){try{de(`Linkelement ${S} is not loaded yet and thus will be await for`,e),await ci(e,S)}catch{h=!0}if(u)return null;[P,U]=we()}if(P&&!f(P,!1))return P;if(x=await Es(e.href),M=_t(e.href),u)return null}else if(y())x=e.textContent.trim(),M=_t(location.href);else return null;return await v(x,M),a?a.sheet.cssRules:null}async function v(x,M){if(x){try{let P=await _s(x,M);a?(a.textContent?.length??0)<P.length&&(a.textContent=P):a=di(e,P)}catch{}a&&(l=sn(a,"prev-sibling"))}}function V(x){let M=k();return M?{rules:M}:(x.secondRound||d||h||(d=!0,n(),_().then(P=>{d=!1,r(),P&&t()}).catch(P=>{d=!1,r()})),null)}let $=!1;function G(x,M){let P=k();if(!P)return;u=!1;function U(j){if(!!j)for(let Z=j.cssRules.length-1;Z>=0;Z--)j.deleteRule(Z)}function X(){i||w(),c&&c.stop(),m(),i.sheet==null&&(i.textContent="");let j=i.sheet;return U(j),c?c.run():c=sn(i,"prev-sibling",()=>{$=!0,K()}),i.sheet}function K(){let j=$;$=!1,C.modifySheet({prepareSheet:X,sourceCSSRules:P,theme:x,ignoreImageAnalysis:M,force:j,isAsyncCancelled:b}),g=i.sheet.cssRules.length===0,C.shouldRebuildStyle()&&an(()=>t())}K()}function we(){try{return e.sheet==null?[null,null]:[e.sheet.cssRules,null]}catch(x){return[null,x]}}function lt(x){return x&&x.message&&x.message.includes("loading")}function I(){let[x,M]=we();return M?null:x}let W=ei(e,I,t,b);function H(){E.disconnect(),u=!0,l&&l.stop(),c&&c.stop(),W.stop()}function R(){if(H(),Y(a),Y(i),r(),Ne.has(S)){let x=Ne.get(S);Ne.delete(S),x&&x()}}function T(){E.observe(e,p),e instanceof HTMLStyleElement&&W.start()}let D=10,L=0;function q(){!i||(L++,!(L>D)&&(m(),l&&l.skip(),c&&c.skip(),g||($=!0,t())))}return{details:V,render:G,pause:H,destroy:R,watch:T,restore:q}}async function ci(e,t){return new Promise((n,r)=>{let s=()=>{e.removeEventListener("load",o),e.removeEventListener("error",a),Ne.delete(t)},o=()=>{s(),n()},a=()=>{s(),r(`Linkelement ${t} couldn't be loaded. ${e.href}`)};Ne.set(t,()=>{s(),r()}),e.addEventListener("load",o,{passive:!0}),e.addEventListener("error",a,{passive:!0}),e.href||a()})}function li(e){return un(e.substring(7).trim().replace(/;$/,"").replace(/screen$/,""))}async function Es(e){return e.startsWith("data:")?await(await fetch(e)).text():new URL(e).origin===location.origin?await so(e,"text/css",location.origin):await Xr({url:e,responseType:"text",mimeType:"text/css",origin:location.origin})}async function _s(e,t,n=new Map){e=Nn(e),e=ko(e),e=So(e,t);let r=je(Tr,e);for(let s of r){let o=li(s),a=Et(t,o),i;if(n.has(a))i=n.get(a);else try{i=await Es(a),n.set(a,i),i=await _s(i,_t(a),n)}catch{i=""}e=e.split(s).join(i)}return e=e.trim(),e}function di(e,t){if(!t)return null;let n=document.createElement("style");return n.classList.add("darkreader"),n.classList.add("darkreader--cors"),n.media="screen",n.textContent=t,e.parentNode.insertBefore(n,e.nextSibling),n.sheet.disabled=!0,Cs.add(n),n}let Rs=new Set,_e=new Map,Wt;function ui(e){return!!(e.tagName.includes("-")||e.getAttribute("is"))}function vs(e){let t=e.tagName.toLowerCase();if(!t.includes("-")){let n=e.getAttribute("is");if(n)t=n;else return}_e.has(t)||(_e.set(t,new Set),fi(t).then(()=>{if(Wt){let n=_e.get(t);_e.delete(t),Wt(Array.from(n))}})),_e.get(t).add(e)}function Bt(e){!no||ne(e.querySelectorAll(":not(:defined)"),vs)}let Bn=!1;document.addEventListener("__darkreader__inlineScriptsAllowed",()=>{Bn=!0},{once:!0,passive:!0});let We=new Map;function As(e){Bn=!0;let t=e.detail.tag;if(Rs.add(t),We.has(t)){let n=We.get(t);We.delete(t),n.forEach(r=>r())}}async function fi(e){if(!Rs.has(e))return new Promise(t=>{if(window.customElements&&typeof customElements.whenDefined=="function")customElements.whenDefined(e).then(()=>t());else if(Bn)We.has(e)?We.get(e).push(t):We.set(e,[t]),document.dispatchEvent(new CustomEvent("__darkreader__addUndefinedResolver",{detail:{tag:e}}));else{let n=()=>{let r=_e.get(e);r&&r.size>0&&(r.values().next().value.matches(":defined")?t():requestAnimationFrame(n))};requestAnimationFrame(n)}})}function hi(e){Wt=e}function gi(){Wt=null,_e.clear(),document.removeEventListener("__darkreader__isDefined",As)}let Ht=[],jt;function mi(e,t,n){Ls();let r=new WeakMap,s=f=>(r.has(f)||r.set(f,new Set),r.get(f));e.forEach(f=>{let k=f;for(;k=k.parentNode;)if(k===document||k.nodeType===Node.DOCUMENT_FRAGMENT_NODE){s(k).add(f);break}});let o=new WeakMap,a=new WeakMap;function i(f){o.set(f,f.previousElementSibling),a.set(f,f.nextElementSibling)}function l(f){o.delete(f),a.delete(f)}function c(f){return f.previousElementSibling!==o.get(f)||f.nextElementSibling!==a.get(f)}e.forEach(i);function u(f,k){let{createdStyles:m,removedStyles:w,movedStyles:d}=k;m.forEach(S=>i(S)),d.forEach(S=>i(S)),w.forEach(S=>l(S));let h=s(f);m.forEach(S=>h.add(S)),w.forEach(S=>h.delete(S)),m.size+w.size+d.size>0&&t({created:Array.from(m),removed:Array.from(w),moved:Array.from(d),updated:[]})}function g(f,{additions:k,moves:m,deletions:w}){let d=new Set,h=new Set,S=new Set;k.forEach(_=>ye(_).forEach(v=>d.add(v))),w.forEach(_=>ye(_).forEach(v=>h.add(v))),m.forEach(_=>ye(_).forEach(v=>S.add(v))),u(f,{createdStyles:d,removedStyles:h,movedStyles:S}),k.forEach(_=>{y(_),Bt(_)}),k.forEach(_=>ui(_)&&vs(_))}function b(f){let k=new Set(ye(f)),m=new Set,w=new Set,d=new Set,h=s(f);k.forEach(S=>{h.has(S)||m.add(S)}),h.forEach(S=>{k.has(S)||w.add(S)}),k.forEach(S=>{!m.has(S)&&!w.has(S)&&c(S)&&d.add(S)}),u(f,{createdStyles:m,removedStyles:w,movedStyles:d}),y(f),Bt(f)}function C(f){let k=new Set,m=new Set;f.forEach(w=>{let{target:d}=w;d.isConnected&&(ws(d)?k.add(d):d instanceof HTMLLinkElement&&d.disabled&&m.add(d))}),k.size+m.size>0&&t({updated:Array.from(k),created:[],removed:Array.from(m),moved:[]})}function E(f){if(jt.has(f))return;let k=Cr(f,{onMinorMutations:g,onHugeMutations:b}),m=new MutationObserver(C);m.observe(f,{attributeFilter:["rel","disabled","media","href"],subtree:!0}),Ht.push(k,m),jt.add(f)}function p(f){let{shadowRoot:k}=f;k==null||jt.has(k)||(E(k),n(k))}function y(f){Le(f,p)}E(document),y(document.documentElement),hi(f=>{let k=[];f.forEach(m=>tn(k,ye(m.shadowRoot))),t({created:k,updated:[],removed:[],moved:[]}),f.forEach(m=>{let{shadowRoot:w}=m;w!=null&&(p(m),y(w),Bt(w))})}),document.addEventListener("__darkreader__isDefined",As),Bt(document)}function pi(){Ht.forEach(e=>e.disconnect()),Ht.splice(0,Ht.length),jt=new WeakSet}function Ls(){pi(),gi()}function bi(e,t,n){mi(e,t,n)}function Si(){Ls()}let qt=!1;document.addEventListener("__darkreader__inlineScriptsAllowed",()=>qt=!0,{once:!0});let nt=new WeakSet,Hn=new WeakMap;function yi(e){return Array.isArray(e.adoptedStyleSheets)}function ki(e){let t=!1;function n(m){e.adoptedStyleSheets.forEach(w=>{nt.has(w)||m(w)})}function r(m,w){let d=[...e.adoptedStyleSheets],h=d.indexOf(m),S=d.indexOf(w);S>=0&&d.splice(S,1),d.splice(h+1,0,w),e.adoptedStyleSheets=d}function s(){let m=[...e.adoptedStyleSheets];for(let w=m.length-1;w>=0;w--){let d=m[w];nt.has(d)&&m.splice(w,1)}e.adoptedStyleSheets.length!==m.length&&(e.adoptedStyleSheets=m),c=new WeakSet,u=new WeakSet}let o=[];function a(){o.forEach(m=>m()),o.splice(0),t=!0,s(),p&&(cancelAnimationFrame(p),p=null)}let i=0;function l(){let m=0;if(n(w=>{m+=w.cssRules.length}),m===1){let w=e.adoptedStyleSheets[0].cssRules[0];return w instanceof CSSStyleRule?w.style.length:m}return m}let c=new WeakSet,u=new WeakSet;function g(m,w){s();for(let d=e.adoptedStyleSheets.length-1;d>=0;d--){let h=e.adoptedStyleSheets[d];if(nt.has(h))continue;c.add(h);let S=Hn.get(h);if(S){i=l(),r(h,S);continue}let _=h.cssRules,v=new CSSStyleSheet;Hn.set(h,v),xe(_,G=>u.add(G.style));let V=()=>{for(let G=v.cssRules.length-1;G>=0;G--)v.deleteRule(G);return v.insertRule("#__darkreader__adoptedOverride {}"),r(h,v),nt.add(v),v};Wn().modifySheet({prepareSheet:V,sourceCSSRules:_,theme:m,ignoreImageAnalysis:w,force:!1,isAsyncCancelled:()=>t})}i=l()}let b=!1;function C(m){b||(b=!0,queueMicrotask(()=>{b=!1;let w=e.adoptedStyleSheets.filter(d=>!nt.has(d));w.forEach(d=>Hn.delete(d)),m(w)}))}function E(){return l()!==i}let p=null;function y(m){p=requestAnimationFrame(()=>{qt||(E()&&C(m),y(m))})}function f(m,w){e.addEventListener(m,w),o.push(()=>e.removeEventListener(m,w))}function k(m){let w=()=>{qt=!0,C(m)};f("__darkreader__adoptedStyleSheetsChange",w),f("__darkreader__adoptedStyleSheetChange",w),f("__darkreader__adoptedStyleDeclarationChange",w),!qt&&y(m)}return{render:g,destroy:a,watch:k}}class jn{constructor(t){this.cssRules=[],this.commands=[],this.onChange=t}insertRule(t,n=0){return this.commands.push({type:"insert",index:n,cssText:t}),this.cssRules.splice(n,0,new jn(this.onChange)),this.onChange(),n}deleteRule(t){this.commands.push({type:"delete",index:t}),this.cssRules.splice(t,1),this.onChange()}replaceSync(t){if(this.commands.splice(0),this.commands.push({type:"replace",cssText:t}),t==="")this.cssRules.splice(0);else throw new Error("StyleSheetCommandBuilder.replaceSync() is not fully supported");this.onChange()}getDeepCSSCommands(){let t=[];return this.commands.forEach(n=>{t.push({type:n.type,cssText:n.type!=="delete"?n.cssText:"",path:n.type==="replace"?[]:[n.index]})}),this.cssRules.forEach((n,r)=>{n.getDeepCSSCommands().forEach(o=>o.path.unshift(r))}),t}clearDeepCSSCommands(){this.commands.splice(0),this.cssRules.forEach(t=>t.clearDeepCSSCommands())}}function wi(e){let t=!1,n=[],r,s;function o(u){n=u,r&&s&&i(r,s)}let a=new jn(e);function i(u,g){r=u,s=g;let b=()=>(a.replaceSync(""),a);Wn().modifySheet({prepareSheet:b,sourceCSSRules:n,theme:u,ignoreImageAnalysis:g,force:!1,isAsyncCancelled:()=>t})}function l(){let u=a.getDeepCSSCommands();return a.clearDeepCSSCommands(),u}function c(){t=!0}return{render:i,destroy:c,updateCSS:o,commands:l}}function xi(e,t){document.dispatchEvent(new CustomEvent("__darkreader__inlineScriptsAllowed"));let n=[];function r(){n.forEach(d=>d()),n.splice(0)}function s(d,h,S){document.addEventListener(d,h,S),n.push(()=>document.removeEventListener(d,h))}function o(){(()=>{window?.WPDarkMode?.deactivate&&window.WPDarkMode.deactivate()})()}s("__darkreader__cleanUp",r),s("__darkreader__disableConflictingPlugins",o);function a(d,h,S){let _=d.prototype,v=Object.getOwnPropertyDescriptor(_,h),V={...v};Object.keys(S).forEach($=>{let G=S[$];V[$]=G(v[$])}),Object.defineProperty(_,h,V),n.push(()=>Object.defineProperty(_,h,v))}function i(d,h,S){a(d,h,{value:S})}function l(d){return d?.classList?.contains("darkreader")}function c(d){return l(d.ownerNode)}let u=new CustomEvent("__darkreader__updateSheet"),g=new CustomEvent("__darkreader__adoptedStyleSheetChange"),b=new WeakMap,C=new WeakMap;function E(d){let h=b.get(d);h?.forEach(S=>{S.isConnected?S.dispatchEvent(g):h.delete(S)})}function p(d){d.ownerNode&&!c(d)&&d.ownerNode.dispatchEvent(u),b.has(d)&&E(d)}function y(d,h){let{ownerNode:S}=d;S&&!c(d)&&h&&h instanceof Promise&&h.then(()=>S.dispatchEvent(u)),b.has(d)&&h&&h instanceof Promise&&h.then(()=>E(d))}i(CSSStyleSheet,"addRule",d=>function(h,S,_){return d.call(this,h,S,_),p(this),-1}),i(CSSStyleSheet,"insertRule",d=>function(h,S){let _=d.call(this,h,S);return p(this),_}),i(CSSStyleSheet,"deleteRule",d=>function(h){d.call(this,h),p(this)}),i(CSSStyleSheet,"removeRule",d=>function(h){d.call(this,h),p(this)}),i(CSSStyleSheet,"replace",d=>function(h){let S=d.call(this,h);return y(this,S),S}),i(CSSStyleSheet,"replaceSync",d=>function(h){d.call(this,h),p(this)}),(location.hostname==="baidu.com"||location.hostname.endsWith(".baidu.com"))&&i(Element,"getElementsByTagName",d=>function(h){if(h!=="style")return d.call(this,h);let S=()=>{let V=d.call(this,h);return Object.setPrototypeOf([...V].filter($=>$&&!l($)),NodeList.prototype)},_=S(),v={get:function(V,$){return S()[Number($)||$]}};return _=new Proxy(_,v),_}),["brilliant.org","www.vy.no"].includes(location.hostname)&&a(Node,"childNodes",{get:d=>function(){let h=d.call(this);return Object.setPrototypeOf([...h].filter(S=>!l(S)),NodeList.prototype)}});function m(d){customElements.whenDefined(d).then(()=>{document.dispatchEvent(new CustomEvent("__darkreader__isDefined",{detail:{tag:d}}))})}s("__darkreader__addUndefinedResolver",d=>m(d.detail.tag)),t&&i(CustomElementRegistry,"define",d=>function(h,S,_){m(h),d.call(this,h,S,_)});async function w(){let d='<svg xmlns="http://www.w3.org/2000/svg" width="1" height="1"><rect width="1" height="1" fill="transparent"/></svg>',h=new Uint8Array(d.length);for(let V=0;V<d.length;V++)h[V]=d.charCodeAt(V);let S=new Blob([h],{type:"image/svg+xml"}),_=URL.createObjectURL(S),v;try{let V=new Image;await new Promise(($,G)=>{V.onload=()=>$(),V.onerror=()=>G(),V.src=_}),v=!0}catch{v=!1}document.dispatchEvent(new CustomEvent("__darkreader__blobURLCheckResponse",{detail:{blobURLAllowed:v}}))}s("__darkreader__blobURLCheckRequest",w,{once:!0}),e&&a(Document,"styleSheets",{get:d=>function(){let h=()=>{let V=[...d.call(this)].filter($=>$.ownerNode&&!c($));return V.item=$=>V[$],Object.setPrototypeOf(V,StyleSheetList.prototype)},S=h(),_={get:function(v,V){return h()[V]}};return S=new Proxy(S,_),S}});{let d=new WeakMap,h=new WeakMap,S=new CustomEvent("__darkreader__adoptedStyleSheetsChange"),_=new WeakSet,v=new WeakMap,V=I=>!I||!I.cssRules?!1:_.has(I)?!0:I.cssRules.length>0&&I.cssRules[0].cssText.startsWith("#__darkreader__adoptedOverride")?(_.add(I),!0):!1,$=(I,W)=>I.length===W.length&&I.every((H,R)=>H===W[R]),G=I=>{let W=v.get(I),H=(I.adoptedStyleSheets||[]).filter(R=>!V(R));v.set(I,H),(!W||!$(W,H))&&(H.forEach(R=>{b.has(R)||b.set(R,new Set),b.get(R).add(I);for(let T of R.cssRules){let D=T.style;D&&C.set(D,R)}}),I.dispatchEvent(S))},we=(I,W)=>{if(h.has(W))return W;if(d.has(W))return d.get(W);let H=new Proxy(W,{deleteProperty(R,T){return delete R[T],!0},set(R,T,D){return R[T]=D,T==="length"&&G(I),!0}});return d.set(W,H),h.set(H,W),H};[Document,ShadowRoot].forEach(I=>{a(I,"adoptedStyleSheets",{get:W=>function(){let H=W.call(this);return we(this,H)},set:W=>function(H){h.has(H)&&(H=h.get(H)),W.call(this,H),G(this)}})});let lt=new CustomEvent("__darkreader__adoptedStyleDeclarationChange");["setProperty","removeProperty"].forEach(I=>{i(CSSStyleDeclaration,I,W=>function(...H){let R=W.apply(this,H),T=C.get(this);if(T){let D=b.get(T);D&&D.forEach(L=>{L.dispatchEvent(lt)})}return R})})}}let he=null,Ms=!document.hidden,Be={capture:!0,passive:!0};function Ci(){document.addEventListener("visibilitychange",he,Be),window.addEventListener("pageshow",he,Be),window.addEventListener("focus",he,Be)}function Ei(){document.removeEventListener("visibilitychange",he,Be),window.removeEventListener("pageshow",he,Be),window.removeEventListener("focus",he,Be)}function _i(e){let t=Boolean(he);he=()=>{document.hidden||(Ts(),e(),Ms=!0)},t||Ci()}function Ts(){Ei(),he=null}function Ds(){return Ms}let qn=Yr(),oe=new Map,Gt=[],zt=new Map,Vs=new WeakMap,Gn=new WeakMap,A=null,N=null,Os=null,se=[],rt=[];function J(e,t=document.head||document){let n=t.querySelector(`.${e}`);return n||(n=document.createElement("style"),n.classList.add("darkreader"),n.classList.add(e),n.media="screen",n.textContent=""),n}function Ri(e,t=document.head||document){let n=t.querySelector(`.${e}`);return n||(n=document.createElement("script"),n.classList.add("darkreader"),n.classList.add(e)),n}let st=new Map;function Re(e,t){st.has(t)&&st.get(t).stop(),st.set(t,sn(e,"head"))}function vi(){ne(st.values(),e=>e.stop()),st.clear()}function Ai(){let e=J("darkreader--fallback",document);e.textContent=vn(A,{strict:!0}),document.head.insertBefore(e,document.head.firstChild),Re(e,"fallback");let t=J("darkreader--user-agent");t.textContent=Ea(A,Os,A.styleSystemControls),document.head.insertBefore(t,e.nextSibling),Re(t,"user-agent");let n=J("darkreader--text");A.useFont||A.textStroke>0?n.textContent=Jo(A):n.textContent="",document.head.insertBefore(n,e.nextSibling),Re(n,"text");let r=J("darkreader--invert");N&&Array.isArray(N.invert)&&N.invert.length>0?r.textContent=[`${N.invert.join(", ")} {`,` filter: ${Qr({...A,contrast:A.mode===0?A.contrast:be(A.contrast-10,0,100)})} !important;`,"}"].join(`
`):r.textContent="",document.head.insertBefore(r,n.nextSibling),Re(r,"invert");let s=J("darkreader--inline");s.textContent=ps(),document.head.insertBefore(s,r.nextSibling),Re(s,"inline");let o=J("darkreader--override");o.textContent=N&&N.css?Ps(N.css):"",document.head.appendChild(o),Re(o,"override");let a=J("darkreader--variables"),i=as(A),l=z(Q("#ffffff"),A),c=te(Q("#000000"),A);a.textContent=[":root {",` --darkreader-neutral-background: ${l};`,` --darkreader-neutral-text: ${c};`,` --darkreader-selection-background: ${i.backgroundColorSelection};`,` --darkreader-selection-text: ${i.foregroundColorSelection};`,"}"].join(`
`),document.head.insertBefore(a,s.nextSibling),Re(a,"variables");let u=J("darkreader--root-vars");document.head.insertBefore(u,a.nextSibling);let g=!(N&&N.disableStyleSheetsProxy),b=!(N&&N.disableCustomElementRegistryProxy);document.dispatchEvent(new CustomEvent("__darkreader__cleanUp"));{let C=Ri("darkreader--proxy");C.append(`(${xi})(${g}, ${b})`),document.head.insertBefore(C,u.nextSibling),C.remove()}}let zn=new Set;function $s(e){let t=J("darkreader--inline",e);t.textContent=ps(),e.insertBefore(t,e.firstChild);let n=J("darkreader--override",e);n.textContent=N&&N.css?Ps(N.css):"",e.insertBefore(n,t.nextSibling);let r=J("darkreader--invert",e);N&&Array.isArray(N.invert)&&N.invert.length>0?r.textContent=[`${N.invert.join(", ")} {`,` filter: ${Qr({...A,contrast:A.mode===0?A.contrast:be(A.contrast-10,0,100)})} !important;`,"}"].join(`
`):r.textContent="",e.insertBefore(r,n.nextSibling),zn.add(e)}function Li(e){new MutationObserver((n,r)=>{r.disconnect();for(let{type:s,removedNodes:o}of n)if(s==="childList"){for(let{nodeName:a,className:i}of o)if(a==="STYLE"&&["darkreader darkreader--inline","darkreader darkreader--override","darkreader darkreader--invert"].includes(i)){$s(e);return}}}).observe(e,{childList:!0})}function Kn(e){let t=e.firstChild===null;$s(e),t&&Li(e)}function Ps(e){return e.replace(/\${(.+?)}/g,(t,n)=>{let r=Q(n);return r?qr(r.r,r.g,r.b)>.5?z(r,A):te(r,A):n})}function Qn(){let e=document.querySelector(".darkreader--fallback");e&&(e.textContent="")}function Mi(){Us();let t=ye(document).filter(s=>!oe.has(s)).map(s=>Is(s));t.map(s=>s.details({secondRound:!1})).filter(s=>s&&s.rules.length>0).forEach(s=>{F.addRulesForMatching(s.rules)}),F.matchVariablesAndDependents(),F.setOnRootVariableChange(()=>{let s=J("darkreader--root-vars");F.putRootVars(s,A)});let n=J("darkreader--root-vars");F.putRootVars(n,A),oe.forEach(s=>s.render(A,se)),ke.size===0&&Qn(),t.forEach(s=>s.watch());let r=co(document.querySelectorAll(Je));if(Le(document.documentElement,s=>{Kn(s.shadowRoot);let o=s.shadowRoot.querySelectorAll(Je);o.length>0&&tn(r,o)}),r.forEach(s=>Un(s,A,rt,se)),Bs(document),F.matchVariablesAndDependents(),Ae){let s=Symbol(),o=a=>{let{node:i,id:l,cssRules:c,entries:u}=a.detail;Array.isArray(u)?(u.forEach(b=>{let C=b[2];F.addRulesForMatching(C)}),F.matchVariablesAndDependents()):c&&(F.addRulesForMatching(c),kr(s,()=>F.matchVariablesAndDependents())),(Array.isArray(u)?u:i&&c?[[i,l,c]]:[]).forEach(([b,C,E])=>{Vs.set(b,C),Hs(b).updateCSS(E)})};document.addEventListener("__darkreader__adoptedStyleSheetsChange",o),Yn.push(()=>document.removeEventListener("__darkreader__adoptedStyleSheetsChange",o)),document.dispatchEvent(new CustomEvent("__darkreader__startAdoptedStyleSheetsWatcher"))}}let Ti=0,ke=new Set;function Is(e){let t=++Ti;function n(){if(!pe()||!Ds()){ke.add(t),de(`Current amount of styles loading: ${ke.size}`);let a=document.querySelector(".darkreader--fallback");a.textContent||(a.textContent=vn(A,{strict:!1}))}}function r(){ke.delete(t),de(`Removed loadingStyle ${t}, now awaiting: ${ke.size}`),ke.size===0&&pe()&&Qn()}function s(){let a=o.details({secondRound:!0});!a||(F.addRulesForMatching(a.rules),F.matchVariablesAndDependents(),o.render(A,se))}let o=ii(e,{update:s,loadingStart:n,loadingEnd:r});return oe.set(e,o),o}function Fs(e){let t=oe.get(e);t&&(t.destroy(),oe.delete(e))}let Di=nn(e=>{oe.forEach(t=>t.render(A,se)),Gt.forEach(t=>t.render(A,se)),e&&e()}),Us=function(){Di.cancel()};function Ns(){if(ke.size===0){Qn();return}}function Ws(){Mi(),$i()}function Vi(){Ai(),!Ds()&&!A.immediateModify?_i(Ws):Ws(),Ka(A)}function Bs(e){if(Ae){Hs(e).render(A,se);return}if(yi(e)){e.adoptedStyleSheets.forEach(n=>{F.addRulesForMatching(n.cssRules)});let t=ki(e);Gt.push(t),t.render(A,se),t.watch(n=>{n.forEach(r=>{F.addRulesForMatching(r.cssRules)}),F.matchVariablesAndDependents(),t.render(A,se)})}}function Oi(e){if(Gn.has(e))return Gn.get(e);let t=Symbol();return Gn.set(e,t),t}function Hs(e){let t=zt.get(e);return t||(t=wi(()=>{let n=Oi(e);kr(n,()=>{let r=Vs.get(e),s=t?.commands();if(!r||!s)return;let o={id:r,commands:s};document.dispatchEvent(new CustomEvent("__darkreader__adoptedStyleSheetCommands",{detail:JSON.stringify(o)}))})}),zt.set(e,t)),t}function $i(){let e=Array.from(oe.keys());bi(e,({created:t,updated:n,removed:r,moved:s})=>{let o=r,a=t.concat(n).concat(s).filter(c=>!oe.has(c)),i=s.filter(c=>oe.has(c));o.forEach(c=>Fs(c));let l=a.map(c=>Is(c));l.map(c=>c.details({secondRound:!1})).filter(c=>c&&c.rules.length>0).forEach(c=>{F.addRulesForMatching(c.rules)}),F.matchVariablesAndDependents(),l.forEach(c=>c.render(A,se)),l.forEach(c=>c.watch()),i.forEach(c=>oe.get(c).restore())},t=>{Kn(t),Bs(t)}),Ha(t=>{if(Un(t,A,rt,se),t===document.documentElement&&(t.getAttribute("style")||"").includes("--")){F.matchVariablesAndDependents();let r=J("darkreader--root-vars");F.putRootVars(r,A)}},t=>{Kn(t);let n=t.querySelectorAll(Je);n.length>0&&ne(n,r=>Un(r,A,rt,se))}),on(Ns)}function Pi(){oe.forEach(e=>e.pause()),vi(),Si(),ja(),wr(Ns),fo()}let ot;function Ii(){ot=new MutationObserver(()=>{document.querySelector('meta[name="darkreader-lock"]')&&(ot.disconnect(),Xn())}),ot.observe(document.head,{childList:!0,subtree:!0})}function Fi(){let e=document.createElement("meta");e.name="darkreader",e.content=qn,document.head.appendChild(e)}function Ui(){return document.querySelector('meta[name="darkreader-lock"]')!=null}function Ni(){let e=document.querySelector('meta[name="darkreader"]');return e?e.content!==qn:(Fi(),Ii(),!1)}let Wi=2;function Bi({success:e,failure:t}){if(--Wi<=0){t();return}let n=document.head.querySelector('meta[name="darkreader"]');if(!n||n.content===qn)return;let r=document.createElement("meta");r.name="darkreader-lock",document.head.append(r),queueMicrotask(()=>{r.remove(),e()})}function Hi(){if(document.documentElement.hasAttribute("data-wp-dark-mode-preset")){let e=()=>{document.dispatchEvent(new CustomEvent("__darkreader__disableConflictingPlugins")),document.documentElement.classList.remove("wp-dark-mode-active"),document.documentElement.removeAttribute("data-wp-dark-mode-active")};e(),new MutationObserver(()=>{(document.documentElement.classList.contains("wp-dark-mode-active")||document.documentElement.hasAttribute("data-wp-dark-mode-active"))&&e()}).observe(document.documentElement,{attributes:!0,attributeFilter:["class","data-wp-dark-mode-active"]})}}function ji(e,t,n){A=e,N=t,N?(se=Array.isArray(N.ignoreImageAnalysis)?N.ignoreImageAnalysis:[],rt=Array.isArray(N.ignoreInlineStyle)?N.ignoreInlineStyle:[]):(se=[],rt=[]),A.immediateModify&&uo(()=>!0),Os=n;let r=()=>{let s=()=>{Hi(),document.documentElement.setAttribute("data-darkreader-mode","dynamic"),document.documentElement.setAttribute("data-darkreader-scheme",A.mode?"dark":"dimmed"),Vi()},o=()=>{Xn()};Ui()?Y(document.querySelector(".darkreader--fallback")):Ni()?Bi({success:s,failure:o}):s()};if(document.head)r();else{if(!Ae){let o=J("darkreader--fallback");document.documentElement.appendChild(o),o.textContent=vn(A,{strict:!0})}let s=new MutationObserver(()=>{document.head&&(s.disconnect(),r())});s.observe(document,{childList:!0,subtree:!0})}}function qi(){document.dispatchEvent(new CustomEvent("__darkreader__cleanUp")),Y(document.head.querySelector(".darkreader--proxy"))}let Yn=[];function Xn(){document.documentElement.removeAttribute("data-darkreader-mode"),document.documentElement.removeAttribute("data-darkreader-scheme"),Gi(),Y(document.querySelector(".darkreader--fallback")),document.head&&(Qa(),Y(document.head.querySelector(".darkreader--user-agent")),Y(document.head.querySelector(".darkreader--text")),Y(document.head.querySelector(".darkreader--invert")),Y(document.head.querySelector(".darkreader--inline")),Y(document.head.querySelector(".darkreader--override")),Y(document.head.querySelector(".darkreader--variables")),Y(document.head.querySelector(".darkreader--root-vars")),Y(document.head.querySelector('meta[name="darkreader"]')),qi()),zn.forEach(e=>{Y(e.querySelector(".darkreader--inline")),Y(e.querySelector(".darkreader--override"))}),zn.clear(),ne(oe.keys(),e=>Fs(e)),ke.clear(),ai(),ne(document.querySelectorAll(".darkreader"),Y),Gt.forEach(e=>e.destroy()),Gt.splice(0),zt.forEach(e=>e.destroy()),zt.clear(),ot&&ot.disconnect(),Yn.forEach(e=>e()),Yn.splice(0)}function Gi(){F.clear(),qe.clear(),Ts(),Us(),Pi(),Pa(),_o()}function js(e){if(e=Nn(e),e=e.trim(),!e)return[];let t=[],n=Zn(e),r=at(e,"{","}",n),s=0;return r.forEach(o=>{let a=e.substring(s,o.start).trim(),i=e.substring(o.start+1,o.end-1);if(a.startsWith("@")){let l=a.search(/[\s\(]/),c={type:l<0?a:a.substring(0,l),query:l<0?"":a.substring(l).trim(),rules:js(i)};t.push(c)}else{let l={selectors:zi(a),declarations:Ki(i)};t.push(l)}s=o.end}),t}function at(e,t,n,r=[]){let s=[],o=0,a;for(;a=_r(e,o,t,n,r);)s.push(a),o=a.end;return s}function Zn(e){let t=e.indexOf("'")<e.indexOf('"'),n=t?"'":'"',r=t?'"':"'",s=at(e,n,n);return s.push(...at(e,r,r,s)),s.push(...at(e,"[","]",s)),s.push(...at(e,"(",")",s)),s}function zi(e){let t=Zn(e);return Rr(e,",",t)}function Ki(e){let t=[],n=Zn(e);return Rr(e,";",n).forEach(r=>{let s=r.indexOf(":");if(s>0){let o=r.indexOf("!important");t.push({property:r.substring(0,s).trim(),value:r.substring(s+1,o>0?o:r.length).trim(),important:o>0})}}),t}function qs(e){return"selectors"in e}function Qi(e){let t=js(e);return Yi(t)}function Yi(e){let t=[],n=" ";function r(a,i){qs(a)?o(a,i):s(a,i)}function s({type:a,query:i,rules:l},c){t.push(`${c}${a} ${i} {`),l.forEach(u=>r(u,`${c}${n}`)),t.push(`${c}}`)}function o({selectors:a,declarations:i},l){let c=a.length-1;a.forEach((g,b)=>{t.push(`${l}${g}${b<c?",":" {"}`)}),Xi(i).forEach(({property:g,value:b,important:C})=>{t.push(`${l}${n}${g}: ${b}${C?" !important":""};`)}),t.push(`${l}}`)}return Gs(e),e.forEach(a=>r(a,"")),t.join(`
`)}function Xi(e){let t=/^-[a-z]-/;return[...e].sort((n,r)=>{let s=n.property,o=r.property,a=s.match(t)?.[0]??"",i=o.match(t)?.[0]??"",l=a?s.replace(t,""):s,c=i?o.replace(t,""):o;return l===c?a.localeCompare(i):l.localeCompare(c)})}function Gs(e){for(let t=e.length-1;t>=0;t--){let n=e[t];qs(n)?n.declarations.length===0&&e.splice(t,1):(Gs(n.rules),n.rules.length===0&&e.splice(t,1))}}let zs=/url\(\"(blob\:.*?)\"\)/g;async function Zi(e){let t=[];je(zs,e,1).forEach(r=>{let s=hr(r);t.push(s)});let n=await Promise.all(t);return e.replace(zs,()=>`url("${n.shift()}")`)}let Ji=`/*
_______
/ \\
.==. .==.
(( ))==(( ))
/ "==" "=="\\
/____|| || ||___\\
________ ____ ________ ___ ___
| ___ \\ / \\ | ___ \\ | | / /
| | \\ \\ / /\\ \\ | | \\ \\| |_/ /
| | ) / /__\\ \\ | |__/ /| ___ \\
| |__/ / ______ \\| ____ \\| | \\ \\
_______|_______/__/ ____ \\__\\__|___\\__\\__|___\\__\\____
| ___ \\ | ____/ / \\ | ___ \\ | ____| ___ \\
| | \\ \\| |___ / /\\ \\ | | \\ \\| |___| | \\ \\
| |__/ /| ____/ /__\\ \\ | | ) | ____| |__/ /
| ____ \\| |__/ ______ \\| |__/ /| |___| ____ \\
|__| \\__\\____/__/ \\__\\_______/ |______|__| \\__\\
https://darkreader.org
*/
/*! Dark reader generated CSS | Licensed under MIT https://github.com/darkreader/darkreader/blob/main/LICENSE */
`;async function ec(){let e=[Ji];function t(r,s){let o=document.querySelector(r);o&&o.textContent&&(e.push(`/* ${s} */`),e.push(o.textContent),e.push(""))}t(".darkreader--fallback","Fallback Style"),t(".darkreader--user-agent","User-Agent Style"),t(".darkreader--text","Text Style"),t(".darkreader--invert","Invert Style"),t(".darkreader--variables","Variables Style");let n=[];if(document.querySelectorAll(".darkreader--sync").forEach(r=>{ne(r.sheet.cssRules,s=>{s&&s.cssText&&n.push(s.cssText)})}),n.length){let r=Qi(n.join(`
`));e.push("/* Modified CSS */"),e.push(await Zi(r)),e.push("")}return t(".darkreader--override","Override Style"),e.join(`
`)}let Jn=!1,tc=(()=>{try{return window.self!==window.top}catch(e){return console.warn(e),!0}})();function Ks(e={},t=null){let n={...Sr,...e};if(n.engine!==mt.dynamicTheme)throw new Error("Theme engine is not supported.");ji(n,t,tc),Jn=!0}function nc(){return Jn}function er(){Xn(),Jn=!1}let it=matchMedia("(prefers-color-scheme: dark)"),tr={themeOptions:null,fixes:null};function ct(){it.matches?Ks(tr.themeOptions,tr.fixes):er()}function rc(e={},t=null){e?(tr={themeOptions:e,fixes:t},ct(),dr?it.addEventListener("change",ct):it.addListener(ct)):(dr?it.removeEventListener("change",ct):it.removeListener(ct),er())}async function sc(){return await ec()}let oc=oo;O.auto=rc,O.disable=er,O.enable=Ks,O.exportGeneratedCSS=sc,O.isEnabled=nc,O.setFetchMethod=oc,Object.defineProperty(O,"__esModule",{value:!0})})});var ge=mc(Zs()),Js={brightness:100,contrast:90,sepia:0,grayscale:0,useFont:!1,textStroke:0,engine:"dynamicTheme",darkSchemeBackgroundColor:"#181a1b",darkSchemeTextColor:"#e8e6e3",scrollbarColor:"auto",selectionColor:"auto",styleSystemControls:!1,darkColorScheme:"Default",immediateModify:!1},eo=()=>{let O=document.getElementById("light-button");if(!O){setTimeout(()=>eo(),10);return}let B=document.getElementById("dark-button");ge.isEnabled()?(O.classList.remove("hidden"),B.classList.add("hidden")):(O.classList.add("hidden"),B.classList.remove("hidden"))};window.handleThemeSwitch=O=>{switch(O){case"light":localStorage.setItem("theme","light"),ge.disable();break;case"dark":localStorage.setItem("theme","dark"),ge.enable(Js);break;default:ge.auto(Js),localStorage.setItem("theme",ge.isEnabled()?"dark":"light");break}eo()};var pc=localStorage.getItem("theme");handleThemeSwitch(pc);})();
</script>
<link rel="stylesheet" href="/css/app.css?hash=2e76ee1fc4867cf526fe">
<script defer="" src="/js/app.js?hash=03dcdc8d631bdd6a4ef4"></script>
<meta name="description" content="The world’s largest open-source open-data library. Mirrors Sci-Hub, Library Genesis, Z-Library, and more.">
<meta name="twitter:card" value="summary">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?hash=d2fa3410fb1ae23ef0ab">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?hash=989ac03e6b8daade6d2d">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?hash=33f085d3acf9176b18df">
<link rel="manifest" href="/site.webmanifest?hash=076af9a96b0bfbd668cd">
<link rel="search" href="/content-search.xml" type="application/opensearchdescription+xml" title="Search Anna’s Archive">
<meta name="apple-mobile-web-app-capable" content="yes">
<script>
window.globalUpdateAaLoggedIn = function(aa_logged_in) {
localStorage['aa_logged_in'] = aa_logged_in;
if (localStorage['aa_logged_in'] === '1') {
document.documentElement.classList.add("aa-logged-in");
} else {
document.documentElement.classList.remove("aa-logged-in");
}
}
window.globalUpdateAaLoggedIn(localStorage['aa_logged_in'] || 0);
// Focus search field when pressing "/".
document.addEventListener("keydown", e => {
if (e.key !== "/" || e.ctrlKey || e.metaKey || e.altKey) return;
if (/^(?:input|textarea|select|button)$/i.test(e.target.tagName)) return;
e.preventDefault();
const fields = document.querySelectorAll('.js-slash-focus');
const field = fields[fields.length - 1];
if (field) {
field.select();
field.scrollIntoView({ block: "center", inline: "center" });
}
});
</script>
<style id="plotly.js-style-global"></style></head>
<body>
<script>
(function() {
if (location.hostname.includes('localhost')) {
location.hostname = location.hostname.replace('localhost', 'localtest.me');
return;
}
var langCodes = ["af", "am", "ar", "ast", "az", "ba", "be", "bg", "bn", "br", "bs", "ca", "ceb", "ckb", "cs", "cy", "da", "de", "el", "en", "eo", "es", "et", "eu", "fa", "fi", "fil", "fr", "fy", "ga", "gl", "gu", "ha", "he", "hi", "hr", "hu", "hy", "ia", "id", "ig", "is", "it", "ja", "jv", "ka", "kk", "km", "kmr", "kn", "ko", "ky", "la", "lb", "lo", "lt", "lv", "mai", "mfe", "mg", "mi", "mk", "ml", "mn", "mr", "ms", "nds", "ne", "nl", "nn", "no", "ny", "oc", "om", "or", "pa", "pcm", "pl", "ps", "pt", "ro", "ru", "rw", "scn", "sd", "si", "sk", "sl", "sn", "so", "sq", "sr", "st", "su", "sv", "sw", "ta", "te", "tg", "th", "tk", "tpi", "tr", "tt", "tw", "ug", "uk", "ur", "uz", "vec", "vi", "wa", "xh", "yi", "yo", "yue", "zh", "zu", ];
var domainPosition = 0;
var potentialSubDomainLangCode = location.hostname.split(".")[0];
var subDomainLangCode = 'en';
if (langCodes.includes(potentialSubDomainLangCode) || potentialSubDomainLangCode === 'www') {
domainPosition = potentialSubDomainLangCode.length + 1;
if (potentialSubDomainLangCode !== 'www') {
subDomainLangCode = potentialSubDomainLangCode;
}
}
window.baseDomain = location.hostname.substring(domainPosition);
function setLangCookie(langCode) {
if (!langCodes.includes(langCode)) {
return;
}
document.cookie = 'selected_lang=' + langCode + ';path=/;expires=Fri, 31 Dec 9999 23:59:59 GMT;domain=' + window.baseDomain;
}
function redirectLang(langCode) {
if (!langCodes.includes(langCode)) {
return;
}
var prefix = '';
if (langCode != 'en') {
prefix = langCode + '.';
}
location.hostname = prefix + window.baseDomain;
}
window.handleChangeLang = function(event) {
const langCode = event.target.value;
setLangCookie(langCode);
redirectLang(langCode);
};
// Let's also (for now) not set a cookie when getting referred.
// {
// // If our referrer was (likely) a different domain of our website (with the same lang code),
// // then behave as if that lang code was set as a cookie all along.
// if (document.referrer.includes("://" + subDomainLangCode + ".")) {
// setLangCookie(subDomainLangCode);
// }
// }
// Browser-based language detection is too unreliable.
// Disable for now.
// {
// const cookieLangMatch = document.cookie.match(/selected_lang=([^$ ;}]+)/);
// // If there's no cookie yet, let's try to set one.
// if (!cookieLangMatch) {
// // See if the user's browser language is one that we support directly.
// for (const langCode of navigator.languages) {
// let domainLangCode = langCode;
// if (langCode.toLowerCase().includes("-hant") || langCode.toLowerCase().includes("-tw")) {
// domainLangCode = "tw";
// }
// // Take the first language that we support.
// if (langCodes.includes(domainLangCode)) {
// setLangCookie(domainLangCode);
// // Bail out so we don't redirect to a suboptimal language.
// break;
// }
// }
// }
// }
{
const cookieLangMatch = document.cookie.match(/selected_lang=([^$ ;}]+)/);
if (cookieLangMatch) {
// Refresh cookie with a new expiry, in case the browser has
// restricted it.
var explicitlyRequestedLangCode = cookieLangMatch[1];
setLangCookie(explicitlyRequestedLangCode);
// If a cookie is set, that we want to go to the language, so let's redirect.
if (explicitlyRequestedLangCode != subDomainLangCode) {
redirectLang(explicitlyRequestedLangCode);
}
}
}
window.submitForm = function(event, url, handler) {
event.preventDefault();
const currentTarget = event.currentTarget;
const fieldset = currentTarget.querySelector("fieldset");
currentTarget.querySelector(".js-failure").classList.add("hidden");
// Before disabling the fieldset.
fetch(url, { method: "PUT", body: new FormData(currentTarget) })
.then(function(response) {
if (!response.ok) { throw "error"; }
return response.json().then(function(jsonResponse) {
fieldset.classList.add("hidden");
currentTarget.querySelector(".js-success").classList.remove("hidden");
if (handler) {
handler(jsonResponse);
}
});
})
.catch(function() {
fieldset.removeAttribute("disabled", "disabled");
fieldset.style.opacity = 1;
currentTarget.querySelector(".js-failure").classList.remove("hidden");
})
.finally(function() {
currentTarget.querySelector(".js-spinner").classList.add("invisible");
});
fieldset.setAttribute("disabled", "disabled");
fieldset.style.opacity = 0.5;
currentTarget.querySelector(".js-spinner").classList.remove("invisible");
};
})();
</script>
<script>
(function() {
var pageUrl = new URL(document.location);
var hashMatch = pageUrl.hash.match(/r=([a-zA-Z0-9]+)/);
if (hashMatch && hashMatch[1].length < 20) {
if (!document.cookie.includes('ref_id=' + hashMatch[1])) {
if (window.baseDomain) {
document.cookie = 'ref_id=' + hashMatch[1] + ';path=/;expires=Fri, 31 Dec 9999 23:59:59 GMT;domain=' + window.baseDomain;
} else {
document.cookie = 'ref_id=' + hashMatch[1] + ';path=/;expires=Fri, 31 Dec 9999 23:59:59 GMT';
}
if (pageUrl.pathname == "/donate") {
document.location = "/donate";
}
}
}
})();
</script>
<div class="header" role="navigation">
<div>
<!-- <div class="[html:not(.aa-logged-in)_&]:hidden"> -->
<!-- blue -->
<div class="bg-[#0195ff] hidden js-top-banner" style="display: block;">
<div class="max-w-[1050px] mx-auto px-4 py-2 text-[#fff] flex justify-between">
<!-- <div>
🎄 <strong>Saving human knowledge: a great holiday gift!</strong> ❄️ Surprise a loved one, give them an account with membership. <a class="custom-a text-[#fff] hover:text-[#ddd] underline" href="/donate">Donate</a>
</div> -->
<!-- <div>
To increase the resiliency of Anna’s Archive, we’re looking for volunteers to run mirrors. <a class="custom-a text-[#fff] hover:text-[#ddd] underline text-xs" href="/mirrors">Learn more…</a>
</div> -->
<!-- <div>
❌ Update your bookmarks: annas-archive.org is no more, long live annas-archive.li! 🎉
</div> -->
<!-- <div>
The perfect Valentine’s gift! Refer a friend, and both you and your friend get 50% bonus fast downloads! <a class="custom-a text-[#fff] hover:text-[#ddd] underline text-xs" href="/refer">Learn more…</a>
</div> -->
<div>
📄 New blog post: <a class="custom-a text-[#fff] hover:text-[#ddd] underline" href="/blog/critical-window.html">The critical window of shadow libraries</a> — <a class="custom-a text-[#fff] hover:text-[#ddd] underline" href="https://torrentfreak.com/annas-archive-loses-gs-domain-name-but-remains-resilient-240718/">TorrentFreak coverage</a>
</div>
<div>
<a href="#" class="custom-a ml-2 text-[#fff] hover:text-[#ddd] js-top-banner-close">✕</a>
</div>
</div>
</div>
<!-- blue -->
<!-- <div class="bg-[#0195ff] hidden js-top-banner"> -->
<!-- purple -->
<!-- <div class="bg-[#7f01ff] hidden js-top-banner"> -->
<!-- <div class="hidden js-top-banner text-xs sm:text-base [html:not(.aa-logged-in)_&]:hidden"> -->
<!-- <div>
We have a new donation method available: <strong>Paypal</strong>. Please consider <a href="/donate" class="custom-a text-[#fff] hover:text-[#ddd] underline">donating</a> — it’s not cheap running this website, and your donation truly makes a difference. Thank you so much.
</div> -->
<!-- <div>
We now have a <a class="custom-a text-[#fff] hover:text-[#ddd] underline" href="https://t.me/annasarchiveorg">Telegram</a> channel. Join us and discuss the future of Anna’s Archive.<br/>You can still also follow us on <a class="custom-a text-[#fff] hover:text-[#ddd] underline" href="https://www.reddit.com/r/Annas_Archive">Reddit</a>.
</div> -->
<!-- <div class="max-w-[1050px] mx-auto px-4 py-2">
<div class="flex justify-between mb-2">
<div>We’re running a fundraiser for <a href="/blog/backed-up-the-worlds-largest-comics-shadow-lib.html">backing up</a> the largest comics shadow library in the world. Thanks for your support! <a href="/donate">Donate.</a> If you can’t donate, consider supporting us by telling your friends, and following us on <a href="https://www.reddit.com/r/Annas_Archive">Reddit</a>, or <a href="https://t.me/annasarchiveorg">Telegram</a>.</div>
<div><a href="#" class="custom-a text-[#777] hover:text-black js-top-banner-close">✕</a></div>
</div>
<div style="background: #fff; padding: 8px; border-radius: 8px; box-shadow: 0px 2px 4px 0px #00000020">
<div style="position: relative; height: 16px; margin-top: 8px;">
<div style="position: absolute; left: 0; right: 0; top: 0; bottom: 0; background: white; overflow: hidden; border-radius: 16px; box-shadow: 0px 2px 4px 0px #00000038">
<div style="position: absolute; left: 0; top: 0; bottom: 0; width: 34%; background: #2cde1c"></div>
</div>
<div style="position: absolute; left: 34%; top: 50%; width: 16px; height: 16px; transform: translate(-50%, -50%)">
<div style="position: absolute; left: 0; top: 0; width: 16px; height: 16px; background: #2cde1c66; border-radius: 100%; animation: header-ping 1.5s cubic-bezier(0,0,.2,1) infinite"></div>
<div style="position: absolute; left: 0; top: 0; width: 16px; height: 16px; background: white; border-radius: 100%; box-shadow: 0 0 3px #00000069;"></div>
</div>
</div>
<div style="position: relative; padding-bottom: 8px">
<div style="width: 14px; height: 14px; border-left: 1px solid gray; border-bottom: 1px solid gray; position: absolute; top: 5px; left: calc(34% - 1px)"></div>
<div style="position: relative; left: calc(34% + 20px); width: calc(90% - 20px); top: 8px; font-size: 90%; color: #555">$6,840 / $20,000</div>
</div> </div>
</div> -->
<!-- <div class="max-w-[1050px] mx-auto px-4 py-2 text-[#fff] flex justify-between bg-[#0160a7]">
<div>
Do you know experts in <strong>anonymous merchant payments</strong>? Can you help us add more convenient ways to donate? PayPal, Alipay, credit cards, gift cards. Please <a class="custom-a text-[#fff] hover:text-[#ddd] underline break-all" href="/contact">contact us</a>.
</div>
<div>
<a href="#" class="custom-a text-[#fff] hover:text-[#ddd] js-top-banner-close">✕</a>
</div>
</div> -->
<!-- <div class="max-w-[1050px] mx-auto text-[#fff] bg-[#0160a7]">
<div class="flex justify-between">
<div class="px-4 py-2">
New technical blog post: <a class="custom-a text-[#fff] hover:text-[#ddd] underline" href="/blog/annas-archive-containers.html">Anna’s Archive Containers (AAC): standardizing releases from the world’s largest shadow library</a>
</div>
<div class="px-4 py-2">
<a href="#" class="custom-a text-[#fff] hover:text-[#ddd] js-top-banner-close">✕</a>
</div>
</div>
<div class="px-4 py-2 bg-green-500">
Do you know experts in <strong>anonymous merchant payments</strong>? Can you help us add more convenient ways to donate? PayPal, Alipay, credit cards, gift cards. Please <a class="custom-a text-[#fff] hover:text-[#ddd] underline break-all" href="/contact">contact us</a>.
</div>
</div> -->
<!-- </div> -->
<script>
(function() {
if (document.querySelector('.js-top-banner')) {
var latestTopBannerType = '14';
var topBannerMatch = document.cookie.match(/top_banner_hidden=([^$ ;}]+)/);
var topBannerType = '';
if (topBannerMatch) {
topBannerType = topBannerMatch[1];
// Refresh cookie.
document.cookie = 'top_banner_hidden=' + topBannerType + ';path=/;expires=Fri, 31 Dec 9999 23:59:59 GMT';
}
if (topBannerType !== latestTopBannerType) {
document.querySelector('.js-top-banner').style.display = 'block';
document.querySelector('.js-top-banner-close').addEventListener('click', function(event) {
document.querySelector('.js-top-banner').style.display = 'none';
document.cookie = 'top_banner_hidden=' + latestTopBannerType + ';path=/;expires=Fri, 31 Dec 9999 23:59:59 GMT';
event.preventDefault();
return false;
});
}
}
if (document.querySelector('.js-fundraiser-banner')) {
var latestFundraiserBannerType = '1';
var fundraiserBannerMatch = document.cookie.match(/fundraiser_banner_hidden=([^$ ;}]+)/);
var fundraiserBannerType = '';
if (fundraiserBannerMatch) {
fundraiserBannerType = fundraiserBannerMatch[1];
// Refresh cookie.
document.cookie = 'fundraiser_banner_hidden=' + fundraiserBannerType + ';path=/;expires=Fri, 31 Dec 9999 23:59:59 GMT';
}
if (fundraiserBannerType !== latestFundraiserBannerType) {
document.querySelector('.js-fundraiser-banner').style.display = 'block';
document.querySelector('.js-fundraiser-banner-close').addEventListener('click', function(event) {
document.querySelector('.js-fundraiser-banner').style.display = 'none';
document.cookie = 'fundraiser_banner_hidden=' + latestFundraiserBannerType + ';path=/;expires=Fri, 31 Dec 9999 23:59:59 GMT';
event.preventDefault();
return false;
});
}
}
})();
</script>
</div>
<div class="header-inner">
<div class="header-inner-top">
<a href="/" class="custom-a text-black hover:text-[#444]"><h1 class="text-2xl sm:text-4xl">Anna’s Archive</h1></a>
<div class="flex gap-1 items-center">
<button id="dark-button" type="button" class="bg-white text-md w-[24px] h-[24px] flex text-center rounded items-center justify-center text-gray-500" onclick="window.handleThemeSwitch('dark')"><span class="icon-[ph--moon-bold]"></span></button>
<button id="light-button" type="button" class="hidden bg-white text-md w-[24px] h-[24px] flex text-center rounded items-center justify-center text-gray-500" onclick="window.handleThemeSwitch('light')"><span class="icon-[ph--sun-bold]"></span></button>
<select class="text-md bg-center icon-[twemoji--globe-with-meridians] py-1 rounded text-gray-500 max-w-[50px] h-[24px] w-[24px] appearance-none bg-white" style="background-size: 1em;" onchange="handleChangeLang(event)">
<option></option>
<option value="af">af - Afrikaans - Afrikaans</option>
<option value="am">am - አማርኛ - Amharic</option>
<option value="ar">ar - العربية - Arabic</option>
<option value="ast">ast - asturianu - Asturian</option>
<option value="az">az - azərbaycan - Azerbaijani</option>
<option value="ba">ba - башҡорт теле - Bashkir</option>
<option value="be">be - беларуская - Belarusian</option>
<option value="bg">bg - български - Bulgarian</option>
<option value="bn">bn - বাংলা - Bangla</option>
<option value="br">br - Brasil: português - Portuguese (Brazil)</option>
<option value="bs">bs - bosanski - Bosnian</option>
<option value="ca">ca - català - Catalan</option>
<option value="ceb">ceb - Cebuano - Cebuano</option>
<option value="ckb">ckb - کوردیی ناوەندی - Central Kurdish</option>
<option value="cs">cs - čeština - Czech</option>
<option value="cy">cy - Cymraeg - Welsh</option>
<option value="da">da - dansk - Danish</option>
<option value="de">de - Deutsch - German</option>
<option value="el">el - Ελληνικά - Greek</option>
<option value="en">en - English - English ☑️</option>
<option value="eo">eo - Esperanto - Esperanto</option>
<option value="es">es - español - Spanish</option>
<option value="et">et - eesti - Estonian</option>
<option value="eu">eu - euskara - Basque</option>
<option value="fa">fa - فارسی - Persian</option>
<option value="fi">fi - suomi - Finnish</option>
<option value="fil">fil - Filipino - Filipino</option>
<option value="fr">fr - français - French</option>
<option value="fy">fy - Frysk - Western Frisian</option>
<option value="ga">ga - Gaeilge - Irish</option>
<option value="gl">gl - galego - Galician</option>
<option value="gu">gu - ગુજરાતી - Gujarati</option>
<option value="ha">ha - Hausa - Hausa</option>
<option value="he">he - עברית - Hebrew</option>
<option value="hi">hi - हिन्दी - Hindi</option>
<option value="hr">hr - hrvatski - Croatian</option>
<option value="hu">hu - magyar - Hungarian</option>
<option value="hy">hy - հայերեն - Armenian</option>
<option value="ia">ia - interlingua - Interlingua</option>
<option value="id">id - Indonesia - Indonesian</option>
<option value="ig">ig - Igbo - Igbo</option>
<option value="is">is - íslenska - Icelandic</option>
<option value="it">it - italiano - Italian</option>
<option value="ja">ja - 日本語 - Japanese</option>
<option value="jv">jv - Jawa - Javanese</option>
<option value="ka">ka - ქართული - Georgian</option>
<option value="kk">kk - қазақ тілі - Kazakh</option>
<option value="km">km - ខ្មែរ - Khmer</option>
<option value="kmr">kmr - Kurdish (Northern) - Kurdish (Türkiye)</option>
<option value="kn">kn - ಕನ್ನಡ - Kannada</option>
<option value="ko">ko - 한국어 - Korean</option>
<option value="ky">ky - кыргызча - Kyrgyz</option>
<option value="la">la - Latina - Latin</option>
<option value="lb">lb - Lëtzebuergesch - Luxembourgish</option>
<option value="lo">lo - ລາວ - Lao</option>
<option value="lt">lt - lietuvių - Lithuanian</option>
<option value="lv">lv - latviešu - Latvian</option>
<option value="mai">mai - मैथिली - Maithili</option>
<option value="mfe">mfe - kreol morisien - Morisyen</option>
<option value="mg">mg - Malagasy - Malagasy</option>
<option value="mi">mi - Māori - Māori</option>
<option value="mk">mk - македонски - Macedonian</option>
<option value="ml">ml - മലയാളം - Malayalam</option>
<option value="mn">mn - монгол - Mongolian</option>
<option value="mr">mr - मराठी - Marathi</option>
<option value="ms">ms - Melayu - Malay</option>
<option value="nds">nds - Neddersass’sch - Low German</option>
<option value="ne">ne - नेपाली - Nepali</option>
<option value="nl">nl - Nederlands - Dutch</option>
<option value="nn">nn - norsk nynorsk - Norwegian Nynorsk</option>
<option value="no">no - norsk bokmål - Norwegian Bokmål (Norway)</option>
<option value="ny">ny - Nyanja - Nyanja</option>
<option value="oc">oc - occitan - Occitan</option>
<option value="om">om - Oromoo - Oromo</option>
<option value="or">or - ଓଡ଼ିଆ - Odia</option>
<option value="pa">pa - ਪੰਜਾਬੀ - Punjabi</option>
<option value="pcm">pcm - Naijíriá Píjin - Nigerian Pidgin</option>
<option value="pl">pl - polski - Polish</option>
<option value="ps">ps - پښتو - Pashto</option>
<option value="pt">pt - Portugal: português - Portuguese (Portugal)</option>
<option value="ro">ro - română - Romanian</option>
<option value="ru">ru - русский - Russian</option>
<option value="rw">rw - Kinyarwanda - Kinyarwanda</option>
<option value="scn">scn - sicilianu - Sicilian</option>
<option value="sd">sd - سنڌي - Sindhi</option>
<option value="si">si - සිංහල - Sinhala</option>
<option value="sk">sk - slovenčina - Slovak</option>
<option value="sl">sl - slovenščina - Slovenian</option>
<option value="sn">sn - chiShona - Shona</option>
<option value="so">so - Soomaali - Somali</option>
<option value="sq">sq - shqip - Albanian</option>
<option value="sr">sr - српски - Serbian</option>
<option value="st">st - Sesotho - Southern Sotho</option>
<option value="su">su - Basa Sunda - Sundanese</option>
<option value="sv">sv - svenska - Swedish</option>
<option value="sw">sw - Kiswahili - Swahili</option>
<option value="ta">ta - தமிழ் - Tamil</option>
<option value="te">te - తెలుగు - Telugu</option>
<option value="tg">tg - тоҷикӣ - Tajik</option>
<option value="th">th - ไทย - Thai</option>
<option value="tk">tk - türkmen dili - Turkmen</option>
<option value="tpi">tpi - Tok Pisin - Tok Pisin</option>
<option value="tr">tr - Türkçe - Turkish</option>
<option value="tt">tt - татар - Tatar</option>
<option value="tw">tw - 中文 (繁體) - Chinese (Traditional)</option>
<option value="ug">ug - ئۇيغۇرچە - Uyghur</option>
<option value="uk">uk - українська - Ukrainian</option>
<option value="ur">ur - اردو - Urdu</option>
<option value="uz">uz - o‘zbek - Uzbek</option>
<option value="vec">vec - veneto - Venetian</option>
<option value="vi">vi - Tiếng Việt - Vietnamese</option>
<option value="wa">wa - walon - Walloon</option>
<option value="xh">xh - IsiXhosa - Xhosa</option>
<option value="yi">yi - ייִדיש - Yiddish</option>
<option value="yo">yo - Èdè Yorùbá - Yoruba</option>
<option value="yue">yue - 粵語 - Cantonese</option>
<option value="zh">zh - 中文 - Chinese</option>
<option value="zu">zu - isiZulu - Zulu</option>
</select>
</div>
</div>
<div class="mb-1.5">
<div class="max-md:hidden">📚 The largest truly open library in human history. ⭐️ We mirror Sci-Hub and LibGen. We scrape and open-source Z-Lib, DuXiu, and more. 📈 38,096,712 books, 106,532,043 papers — preserved forever. All our code and data are completely open source. <a class="text-xs" href="/faq">Learn more…</a></div>
<div class="max-sm:hidden md:hidden">📚 The largest truly open library in human history. ⭐️ We mirror Sci-Hub and LibGen. We scrape and open-source Z-Lib, DuXiu, and more. 📈 38,096,712 books, 106,532,043 papers — preserved forever. <a class="text-xs" href="/faq">Learn more…</a></div>
<div class="sm:hidden text-sm">📚 The largest truly open library in human history. ⭐️ We mirror Sci-Hub and LibGen. We scrape and open-source Z-Lib, DuXiu, and more. <a class="text-xs" href="/faq">Learn more…</a></div>
</div>
<div class="hidden sm:flex text-xs mb-1" aria-hidden="true">
<div class="font-bold shrink-0">Recent downloads: </div>
<div class="w-full overflow-hidden flex js-recent-downloads-scroll"><div class="shrink-0 min-w-full" style="animation: scroll 72s linear infinite"><span class="inline-block truncate"> • </span><a tabindex="-1" href="/md5/caa189ee4a6090a6be655d9dff559edb" class="inline-block max-w-[50%] truncate">The Truth about Nature: Environmentalism in the Era of Post-Truth Politics and Platform Capitalism</a><span class="inline-block truncate"> • </span><a tabindex="-1" href="/md5/764c009e75af8c0599476de8fa5a2fa5" class="inline-block max-w-[50%] truncate">L'infanzia di Gesù</a><span class="inline-block truncate"> • </span><a tabindex="-1" href="/md5/a6b65064363ba5ff64a945a64b0879d7" class="inline-block max-w-[50%] truncate">中国少数民族服饰文化研究</a><span class="inline-block truncate"> • </span><a tabindex="-1" href="/md5/2500ce0914fc123564b45d0936a10ee2" class="inline-block max-w-[50%] truncate">黄帝四经今注今译(精)--陈鼓应著作集</a><span class="inline-block truncate"> • </span><a tabindex="-1" href="/md5/7f6b942c2527262d96e6b482e87af99e" class="inline-block max-w-[50%] truncate">365 Days</a><span class="inline-block truncate"> • </span><a tabindex="-1" href="/md5/d9e766d3caaa3158d66b4b0655b05c8f" class="inline-block max-w-[50%] truncate">Nights at the Circus</a><span class="inline-block truncate"> • </span><a tabindex="-1" href="/md5/f3b944c066de461d360f4867d2d92459" class="inline-block max-w-[50%] truncate">Prisoners of Childhood: The Drama of the Gifted Child and the Search for the True Self</a><span class="inline-block truncate"> • </span><a tabindex="-1" href="/md5/1f02bfe57b0ad94b01baf0377fc907a2" class="inline-block max-w-[50%] truncate">希腊哲学的精神</a></div><div class="shrink-0 min-w-full" style="animation: scroll 72s linear infinite"><span class="inline-block truncate"> • </span><a tabindex="-1" href="/md5/caa189ee4a6090a6be655d9dff559edb" class="inline-block max-w-[50%] truncate">The Truth about Nature: Environmentalism in the Era of Post-Truth Politics and Platform Capitalism</a><span class="inline-block truncate"> • </span><a tabindex="-1" href="/md5/764c009e75af8c0599476de8fa5a2fa5" class="inline-block max-w-[50%] truncate">L'infanzia di Gesù</a><span class="inline-block truncate"> • </span><a tabindex="-1" href="/md5/a6b65064363ba5ff64a945a64b0879d7" class="inline-block max-w-[50%] truncate">中国少数民族服饰文化研究</a><span class="inline-block truncate"> • </span><a tabindex="-1" href="/md5/2500ce0914fc123564b45d0936a10ee2" class="inline-block max-w-[50%] truncate">黄帝四经今注今译(精)--陈鼓应著作集</a><span class="inline-block truncate"> • </span><a tabindex="-1" href="/md5/7f6b942c2527262d96e6b482e87af99e" class="inline-block max-w-[50%] truncate">365 Days</a><span class="inline-block truncate"> • </span><a tabindex="-1" href="/md5/d9e766d3caaa3158d66b4b0655b05c8f" class="inline-block max-w-[50%] truncate">Nights at the Circus</a><span class="inline-block truncate"> • </span><a tabindex="-1" href="/md5/f3b944c066de461d360f4867d2d92459" class="inline-block max-w-[50%] truncate">Prisoners of Childhood: The Drama of the Gifted Child and the Search for the True Self</a><span class="inline-block truncate"> • </span><a tabindex="-1" href="/md5/1f02bfe57b0ad94b01baf0377fc907a2" class="inline-block max-w-[50%] truncate">希腊哲学的精神</a></div></div>
<script>
(function() {
function showRecentDownloads(items) {
// Biased towards initial positions, but whatever.
const shuffledItems = [...items].sort(() => Math.random() - 0.5).slice(0, 8);
const titlesLength = shuffledItems.map((item) => item.title).join(" ").length;
const scrollHtml = `<div class="shrink-0 min-w-full" style="animation: scroll ${Math.round(titlesLength/4)}s linear infinite">` + shuffledItems.map((item) => `<span class="inline-block truncate"> • </span><a tabindex="-1" href="${(item.path[0] == '/' ? '' : '/') + item.path}" class="inline-block max-w-[50%] truncate">${item.title}</a>`).join('') + '</div>';
document.querySelector('.js-recent-downloads-scroll').innerHTML = scrollHtml + scrollHtml;
}
function fetchNewRecentDownloads(cb) {
setTimeout(() => {
fetch("/dyn/recent_downloads/").then((response) => response.json()).then((items) => {
if (localStorage) {
localStorage.recentDownloadsData = JSON.stringify({ items, time: Date.now() });
}
if (cb) {
cb(items);
}
});
}, 100);
}
if (localStorage && localStorage.recentDownloadsData) {
const recentDownloadsData = JSON.parse(localStorage.recentDownloadsData);
// console.log('recentDownloadsData', recentDownloadsData);
showRecentDownloads(recentDownloadsData.items);
const timeToRefresh = 65000 /* 65 sec */ - (Date.now() - recentDownloadsData.time);
// Fetch new data for the next page load.
if (timeToRefresh <= 0) {
fetchNewRecentDownloads(undefined);
} else {
setTimeout(() => {
fetchNewRecentDownloads(undefined);
}, timeToRefresh);
}
} else {
fetchNewRecentDownloads((items) => {
showRecentDownloads(items);
});
}
})();
</script>
</div>
<script>
function topMenuToggle(event, className) {
const el = document.querySelector("." + className);
if (el.style.display === "block") {
el.style.display = "none";
el.setAttribute('aria-expanded', "false");
} else {
el.style.display = "block";
el.setAttribute('aria-expanded', "true");
function clickOutside(innerEvent) {
if (!el.contains(innerEvent.target)) {
el.style.display = "none";
el.setAttribute('aria-expanded', "false")
document.removeEventListener('click', clickOutside);
innerEvent.preventDefault();
return false;
}
}
setTimeout(function() {
document.addEventListener('click', clickOutside);
}, 0);
}
event.preventDefault();
return false;
}
</script>
<div class="header-bar">
<div class="header-links relative z-20">
<a href="#" aria-expanded="false" onclick="topMenuToggle(event, 'js-top-menu-home')" class="header-link-first header-link-active" style="margin-right: 24px;">
<span class="header-link-normal">
Home <span class="icon-[material-symbols--arrow-drop-down] absolute text-lg mt-[3px] -ml-px"></span>
</span>
<span class="header-link-bold">
Home <span class="icon-[material-symbols--arrow-drop-down] absolute text-lg mt-[3px] -ml-px"></span>
</span>
</a>
<div class="absolute left-0 top-full bg-[#f2f2f2] px-4 shadow js-top-menu-home hidden">
<a class="custom-a block py-1 font-bold text-black hover:text-black" href="/">Home</a>
<a class="custom-a block py-1 text-black/64 hover:text-black" href="/search">Search</a>
<a class="custom-a block py-1 text-black/64 hover:text-black" href="/scidb">🧬 SciDB</a>
<a class="custom-a block py-1 text-black/64 hover:text-black" href="/faq">FAQ</a>
<a class="custom-a block py-1 text-black/64 hover:text-black" href="/metadata">Improve metadata</a>
<a class="custom-a block py-1 text-black/64 hover:text-black" href="/volunteering">Volunteering & Bounties</a>
<a class="custom-a block py-1 text-black/64 hover:text-black" href="/datasets">Datasets</a>
<a class="custom-a block py-1 text-black/64 hover:text-black" href="/torrents">Torrents</a>
<a class="custom-a block py-1 text-black/64 hover:text-black" href="/member_codes">Codes Explorer</a>
<a class="custom-a block py-1 text-black/64 hover:text-black" href="/llm">LLM data</a>
<a class="custom-a block py-1 text-black/64 hover:text-black" href="/blog" target="_blank">Anna’s Blog ↗</a>
<a class="custom-a block py-1 text-black/64 hover:text-black" href="https://software.annas-archive.li" target="_blank">Anna’s Software ↗</a>
<a class="custom-a block py-1 text-black/64 hover:text-black" href="https://translate.annas-archive.li" target="_blank">Translate ↗</a>
</div>
<a href="/donate" class=""><span class="header-link-normal">Donate</span><span class="header-link-bold">Donate</span></a>
</div>
<form class="header-search hidden sm:flex" action="/search" method="get" role="search">
<input class="js-slash-focus rounded" name="q" type="search" placeholder="Title, author, DOI, ISBN, MD5, …" value="" title="Focus: '/' Scroll search results: 'j', 'k'">
</form>
<div class="header-links header-links-right relative z-10 ml-auto items-center">
<!-- <div class="mr-1 bg-[#0195ff] text-white text-xs font-medium px-1 py-0.5 rounded">beta</div> -->
<a href="#" aria-expanded="false" onclick="topMenuToggle(event, 'js-top-menu-login')" class="header-link-first [html.aa-logged-in_&]:hidden">
<span class="header-link-normal">
Log in / Register
<span class="icon-[material-symbols--arrow-drop-down] absolute text-lg mt-[3px] -ml-px"></span>
</span>
<span class="header-link-bold">
Log in / Register
<span class="icon-[material-symbols--arrow-drop-down] absolute text-lg mt-[3px] -ml-px"></span>
</span>
</a>
<div class="absolute right-0 top-full bg-[#f2f2f2] px-4 shadow js-top-menu-login hidden">
<a class="custom-a block py-1 text-black/64 hover:text-black" href="/login">Log in / Register</a>
</div>
<a href="#" aria-expanded="false" onclick="topMenuToggle(event, 'js-top-menu-account')" class="header-link-first [html:not(.aa-logged-in)_&]:hidden" style="margin-right: 8px;">
<span class="header-link-normal">
Account <span class="icon-[material-symbols--arrow-drop-down] absolute text-lg mt-[3px] -ml-px"></span>
</span>
<span class="header-link-bold">
Account <span class="icon-[material-symbols--arrow-drop-down] absolute text-lg mt-[3px] -ml-px"></span>
</span>
</a>
<div class="absolute right-0 top-full bg-[#f2f2f2] px-4 shadow js-top-menu-account hidden">
<a class="custom-a block py-1 text-black/64 hover:text-black" href="/account">Account</a>
<a class="custom-a block py-1 text-black/64 hover:text-black" href="/account/profile">Public profile</a>
<a class="custom-a block py-1 text-black/64 hover:text-black" href="/account/downloaded">Downloaded files</a>
<a class="custom-a block py-1 text-black/64 hover:text-black" href="/account/donations">My donations</a>
</div>
</div>
</div>
</div>
</div>
<main class="main">
<div class="max-lg:max-w-[450px] max-lg:mx-auto lg:flex lg:flex-wrap lg:justify-between">
<div class="lg:w-[485px]">
<h2 class="mt-4 text-xl font-bold">📚 Full database</h2>
<form action="/search" method="get" role="search">
<div class="mb-1 text-sm text-gray-500">Books, papers, magazines, comics, library records, metadata, …</div>
<div class="flex max-w-[600px]">
<input name="q" type="search" placeholder="" class="js-slash-focus grow bg-black/6.7 px-2 py-1 mr-2 rounded">
<button class="px-4 py-1 bg-[#0195ff] text-white rounded hover:bg-blue-600" type="submit">Search</button>
</div>
</form>
<h2 class="mt-8 text-xl font-bold">🧬 SciDB<!-- <span class="mr-1 bg-[#0195ff] text-white text-xs font-medium px-1 py-0.5 align-[2px] rounded">beta</span>--></h2>
<p class="mb-1">
Sci-Hub has <a href="https://www.reddit.com/r/scihub/comments/lofj0r/announcement_scihub_has_been_paused_no_new/" target="_blank" rel="noopener noreferrer nofollow">paused</a> uploading of new papers.
🧬 SciDB is a continuation of Sci-Hub.
Direct access to 101,004,440 academic papers.
<a class="text-xs" href="/scidb">Learn more…</a>
</p>
<form action="/scidb/" method="get" onsubmit="window.location="/scidb/" + new FormData(event.currentTarget).get("doi"); event.preventDefault(); return false">
<div class="flex max-w-[600px]">
<input required="" pattern=".*10\..+" name="doi" type="search" placeholder="DOI" class="grow bg-black/6.7 px-2 py-1 mr-2 rounded">
<button class="px-4 py-1 bg-[#0195ff] text-white rounded hover:bg-blue-600" type="submit">Open</button>
</div>
<!-- <div class="mb-1 text-sm text-gray-500">If you’re a <a href="/donate" >member</a>, browser verification is not required.</div> -->
<!-- <div class="mb-1 text-sm text-gray-500">Contains all of Sci-Hub, and more. <a class="" href="/scidb">Learn more…</a></div> -->
</form>
<h2 class="mt-8 text-xl font-bold">🏛️ Long-term archive</h2>
<p class="mb-4">
The datasets used in Anna’s Archive are completely open, and can be mirrored in bulk using torrents. <a href="/datasets">Learn more…</a>
</p>
<div class="mt-4 -mx-2 bg-yellow-100 p-2 rounded text-sm">
<p class="mb-1">You can help out enormously by seeding torrents. <a href="/torrents">Learn more…</a></p>
<table class="mb-1 text-sm">
<tbody><tr><td>🔴 588.6TB</td><td class="text-xs text-gray-500 pl-4"><4 seeders</td></tr>
<tr><td>🟡 362.2TB</td><td class="text-xs text-gray-500 pl-4">4–10 seeders</td></tr>
<tr><td>🟢 11.9TB</td><td class="text-xs text-gray-500 pl-4">>10 seeders</td></tr>
</tbody></table>
</div>
</div>
<div class="lg:w-[485px]">
<!-- <h2 class="mt-8 text-xl font-bold">🤖 LLM training data</h2>
<p class="mb-4">
We have the world’s largest collection of high-quality text data. <a href="/llm" >Learn more…</a>
</p> -->
<!-- <h2 class="mt-8 text-xl font-bold">🪩 Mirrors: call for volunteers</h2> -->
<h2 class="mt-8 text-xl font-bold">🤝 Looking for volunteers</h2>
<p class="mb-4">
As a non-profit, open-source project, we’re always looking for people to help out. <a class="text-sm" href="/volunteering">Learn more…</a>
</p>
<p class="mt-8 -mx-2 bg-yellow-100 p-2 rounded text-sm">
If you run a high-risk anonymous payment processor, please contact us. We are also looking for people looking to place tasteful small ads. All proceeds go to our preservation efforts. <a class="text-xs" href="/contact">Contact email</a>
</p>
<!-- <p class="mt-8 -mx-2 bg-yellow-100 p-2 rounded text-sm">
Anna’s Archive acquired a unique collection of 7.5 million / 350TB non-fiction books — larger than Library Genesis. We’re willing to give an LLM company exclusive access, in exchange for high-quality OCR and text extraction. <a class="text-xs" href="https://annas-archive.li/blog/duxiu-exclusive.html">Learn more…</a>
</p> -->
<h2 class="mt-8 text-xl font-bold">📄 Anna’s Blog </h2>
<table cellpadding="0" cellspacing="0" style="border-collapse: collapse;">
<tbody><tr>
<td style="padding: 4px; vertical-align: top; margin: 0 8px;"><a href="/blog/critical-window.html">The critical window of shadow libraries</a></td>
<td style="padding: 4px; white-space: nowrap; vertical-align: top;">2024-07-16</td>
</tr>
<tr style="background: #f2f2f2">
<td style="padding: 4px; vertical-align: top; margin: 0 8px;"><a href="/blog/duxiu-exclusive.html">Exclusive access for LLM companies to largest Chinese non-fiction book collection in the world</a></td>
<td style="padding: 4px; white-space: nowrap; vertical-align: top;">2023-11-04</td>
</tr>
<tr>
<td style="padding: 4px; vertical-align: top; margin: 0 8px;"><a href="/blog/worldcat-scrape.html">1.3B WorldCat scrape & data science mini-competition</a></td>
<td style="padding: 4px; white-space: nowrap; vertical-align: top;">2023-10-03</td>
</tr>
<tr style="background: #f2f2f2">
<td style="padding: 4px; vertical-align: top; margin: 0 8px;"><a href="/blog/annas-archive-containers.html">Anna’s Archive Containers (AAC): standardizing releases from the world’s largest shadow library</a></td>
<td style="padding: 4px; white-space: nowrap; vertical-align: top;">2023-08-15</td>
</tr>
</tbody></table>
<p class="mb-4 mt-1">
<a class="text-sm" href="/blog">Learn more…</a>
</p>
</div>
</div>
</main>
<footer class="bg-black/5 text-[#777]" style="box-shadow: 0px 0px 7px rgb(0 0 0 / 30%)">
<div class="max-w-[1050px] mx-auto p-[12px] leading-relaxed flex flex-wrap">
<div class="mr-4 mb-4 grow">
<strong class="font-bold text-black">Anna’s Archive</strong><br>
<a class="custom-a hover:text-[#333]" href="/">Home</a><br>
<a class="custom-a hover:text-[#333]" href="/search">Search</a><br>
<a class="custom-a hover:text-[#333]" href="/scidb">🧬 SciDB</a><br>
<a class="custom-a hover:text-[#333]" href="/faq">FAQ</a><br>
<a class="custom-a hover:text-[#333]" href="/donate">Donate</a><br>
<select class="p-1 rounded text-gray-500 mt-1 max-w-[110px]" onchange="handleChangeLang(event)">
<option value="en">🌐 en - English - English</option>
<option value="af">af - Afrikaans - Afrikaans</option>
<option value="am">am - አማርኛ - Amharic</option>
<option value="ar">ar - العربية - Arabic</option>
<option value="ast">ast - asturianu - Asturian</option>
<option value="az">az - azərbaycan - Azerbaijani</option>
<option value="ba">ba - башҡорт теле - Bashkir</option>
<option value="be">be - беларуская - Belarusian</option>
<option value="bg">bg - български - Bulgarian</option>
<option value="bn">bn - বাংলা - Bangla</option>
<option value="br">br - Brasil: português - Portuguese (Brazil)</option>
<option value="bs">bs - bosanski - Bosnian</option>
<option value="ca">ca - català - Catalan</option>
<option value="ceb">ceb - Cebuano - Cebuano</option>
<option value="ckb">ckb - کوردیی ناوەندی - Central Kurdish</option>
<option value="cs">cs - čeština - Czech</option>
<option value="cy">cy - Cymraeg - Welsh</option>
<option value="da">da - dansk - Danish</option>
<option value="de">de - Deutsch - German</option>
<option value="el">el - Ελληνικά - Greek</option>
<option value="en">en - English - English ☑️</option>
<option value="eo">eo - Esperanto - Esperanto</option>
<option value="es">es - español - Spanish</option>
<option value="et">et - eesti - Estonian</option>
<option value="eu">eu - euskara - Basque</option>
<option value="fa">fa - فارسی - Persian</option>
<option value="fi">fi - suomi - Finnish</option>
<option value="fil">fil - Filipino - Filipino</option>
<option value="fr">fr - français - French</option>
<option value="fy">fy - Frysk - Western Frisian</option>
<option value="ga">ga - Gaeilge - Irish</option>
<option value="gl">gl - galego - Galician</option>
<option value="gu">gu - ગુજરાતી - Gujarati</option>
<option value="ha">ha - Hausa - Hausa</option>
<option value="he">he - עברית - Hebrew</option>
<option value="hi">hi - हिन्दी - Hindi</option>
<option value="hr">hr - hrvatski - Croatian</option>
<option value="hu">hu - magyar - Hungarian</option>
<option value="hy">hy - հայերեն - Armenian</option>
<option value="ia">ia - interlingua - Interlingua</option>
<option value="id">id - Indonesia - Indonesian</option>
<option value="ig">ig - Igbo - Igbo</option>
<option value="is">is - íslenska - Icelandic</option>
<option value="it">it - italiano - Italian</option>
<option value="ja">ja - 日本語 - Japanese</option>
<option value="jv">jv - Jawa - Javanese</option>
<option value="ka">ka - ქართული - Georgian</option>
<option value="kk">kk - қазақ тілі - Kazakh</option>
<option value="km">km - ខ្មែរ - Khmer</option>
<option value="kmr">kmr - Kurdish (Northern) - Kurdish (Türkiye)</option>
<option value="kn">kn - ಕನ್ನಡ - Kannada</option>
<option value="ko">ko - 한국어 - Korean</option>
<option value="ky">ky - кыргызча - Kyrgyz</option>
<option value="la">la - Latina - Latin</option>
<option value="lb">lb - Lëtzebuergesch - Luxembourgish</option>
<option value="lo">lo - ລາວ - Lao</option>
<option value="lt">lt - lietuvių - Lithuanian</option>
<option value="lv">lv - latviešu - Latvian</option>
<option value="mai">mai - मैथिली - Maithili</option>
<option value="mfe">mfe - kreol morisien - Morisyen</option>
<option value="mg">mg - Malagasy - Malagasy</option>
<option value="mi">mi - Māori - Māori</option>
<option value="mk">mk - македонски - Macedonian</option>
<option value="ml">ml - മലയാളം - Malayalam</option>
<option value="mn">mn - монгол - Mongolian</option>
<option value="mr">mr - मराठी - Marathi</option>
<option value="ms">ms - Melayu - Malay</option>
<option value="nds">nds - Neddersass’sch - Low German</option>
<option value="ne">ne - नेपाली - Nepali</option>
<option value="nl">nl - Nederlands - Dutch</option>
<option value="nn">nn - norsk nynorsk - Norwegian Nynorsk</option>
<option value="no">no - norsk bokmål - Norwegian Bokmål (Norway)</option>
<option value="ny">ny - Nyanja - Nyanja</option>
<option value="oc">oc - occitan - Occitan</option>
<option value="om">om - Oromoo - Oromo</option>
<option value="or">or - ଓଡ଼ିଆ - Odia</option>
<option value="pa">pa - ਪੰਜਾਬੀ - Punjabi</option>
<option value="pcm">pcm - Naijíriá Píjin - Nigerian Pidgin</option>
<option value="pl">pl - polski - Polish</option>
<option value="ps">ps - پښتو - Pashto</option>
<option value="pt">pt - Portugal: português - Portuguese (Portugal)</option>
<option value="ro">ro - română - Romanian</option>
<option value="ru">ru - русский - Russian</option>
<option value="rw">rw - Kinyarwanda - Kinyarwanda</option>
<option value="scn">scn - sicilianu - Sicilian</option>
<option value="sd">sd - سنڌي - Sindhi</option>
<option value="si">si - සිංහල - Sinhala</option>
<option value="sk">sk - slovenčina - Slovak</option>
<option value="sl">sl - slovenščina - Slovenian</option>
<option value="sn">sn - chiShona - Shona</option>
<option value="so">so - Soomaali - Somali</option>
<option value="sq">sq - shqip - Albanian</option>
<option value="sr">sr - српски - Serbian</option>
<option value="st">st - Sesotho - Southern Sotho</option>
<option value="su">su - Basa Sunda - Sundanese</option>
<option value="sv">sv - svenska - Swedish</option>
<option value="sw">sw - Kiswahili - Swahili</option>
<option value="ta">ta - தமிழ் - Tamil</option>
<option value="te">te - తెలుగు - Telugu</option>
<option value="tg">tg - тоҷикӣ - Tajik</option>
<option value="th">th - ไทย - Thai</option>
<option value="tk">tk - türkmen dili - Turkmen</option>
<option value="tpi">tpi - Tok Pisin - Tok Pisin</option>
<option value="tr">tr - Türkçe - Turkish</option>
<option value="tt">tt - татар - Tatar</option>
<option value="tw">tw - 中文 (繁體) - Chinese (Traditional)</option>
<option value="ug">ug - ئۇيغۇرچە - Uyghur</option>
<option value="uk">uk - українська - Ukrainian</option>
<option value="ur">ur - اردو - Urdu</option>
<option value="uz">uz - o‘zbek - Uzbek</option>
<option value="vec">vec - veneto - Venetian</option>
<option value="vi">vi - Tiếng Việt - Vietnamese</option>
<option value="wa">wa - walon - Walloon</option>
<option value="xh">xh - IsiXhosa - Xhosa</option>
<option value="yi">yi - ייִדיש - Yiddish</option>
<option value="yo">yo - Èdè Yorùbá - Yoruba</option>
<option value="yue">yue - 粵語 - Cantonese</option>
<option value="zh">zh - 中文 - Chinese</option>
<option value="zu">zu - isiZulu - Zulu</option>
</select>
</div>
<div class="mr-4 mb-4 grow grow">
<strong class="font-bold text-black">Stay in touch</strong><br>
<a class="custom-a hover:text-[#333]" href="/contact">Contact email</a><br>
<a class="custom-a hover:text-[#333]" href="/copyright">DMCA / copyright claims</a><br>
<a class="custom-a hover:text-[#333]" href="https://www.reddit.com/r/Annas_Archive">Reddit</a> / <a class="custom-a hover:text-[#333]" href="https://t.me/annasarchiveorg">Telegram</a><br>
<a class="custom-a hover:text-[#333]" href="/blog">Anna’s Blog ↗</a><br>
<a class="custom-a hover:text-[#333]" href="https://software.annas-archive.li">Anna’s Software ↗</a><br>
<a class="custom-a hover:text-[#333]" href="https://translate.annas-archive.li">Translate ↗</a><br>
</div>
<div class="mr-4 mb-4 grow">
<strong class="font-bold text-black">Advanced</strong><br>
<a class="custom-a hover:text-[#333]" href="/faq">FAQ</a><br>
<a class="custom-a hover:text-[#333]" href="/metadata">Improve metadata</a><br>
<a class="custom-a hover:text-[#333]" href="/volunteering">Volunteering & Bounties</a><br>
<a class="custom-a hover:text-[#333]" href="/datasets">Datasets</a><br>
<a class="custom-a hover:text-[#333]" href="/torrents">Torrents</a><br>
<a class="custom-a hover:text-[#333]" href="/member_codes">Codes Explorer</a><br>
<a class="custom-a hover:text-[#333]" href="/llm">LLM data</a><br>
<a class="custom-a hover:text-[#333]" href="/faq#security">Security</a><br>
</div>
<div class="grow">
<strong class="font-bold text-black">Alternatives</strong><br>
<a class="custom-a hover:text-[#333] js-annas-archive-li" href="https://annas-archive.li/">annas-archive.li</a><br>
<a class="custom-a hover:text-[#333] js-annas-archive-se" href="https://annas-archive.se/">annas-archive.se</a><br>
<a class="custom-a hover:text-[#333] js-annas-archive-org" href="https://annas-archive.org/">annas-archive.org</a><br>
</div>
</div>
</footer>
<script>
(function() {
// Possible domains we can encounter:
const domainsToReplace = ["annas-" + "archive.org", "annas-" + "archive.se", "annas-" + "archive.li", "localtest.me:8000", "localtest.me", window.baseDomain];
const validDomains = ["annas-" + "archive.org", "annas-" + "archive.se", "annas-" + "archive.li", "localtest.me:8000", "localtest.me"];
// For checking and redirecting if our current host is down (but if Cloudflare still responds).
const initialCheckMs = 0;
const intervalCheckOtherDomains = 10000;
const domainsToNavigateTo = ["annas-" + "archive.li", "annas-" + "archive.se", "annas-" + "archive.org"];
// For testing:
// const domainsToNavigateTo = ["localtest.me:8000", "testing_redirects.localtest.me:8000"];
// const isInvalidDomain = false;
// const isInvalidDomain = true;
const isInvalidDomain = !validDomains.includes(window.baseDomain);
if (isInvalidDomain) {
console.log("Invalid domain");
// If the domain is invalid, replace window.baseDomain first, in case the domain
// is something weird like 'weird.annas-archive.li'.
domainsToReplace.unshift(window.baseDomain);
}
// First, set the mirror links at the bottom of the page.
const loc = "" + window.location;
let currentDomainToReplace = "localtest.me";
for (const domain of domainsToReplace) {
if (loc.includes(domain)) {
currentDomainToReplace = domain;
break;
}
}
for (const el of document.querySelectorAll(".js-annas-archive-org")) {
el.href = loc.replace(currentDomainToReplace, "annas-" + "archive.org");
}
for (const el of document.querySelectorAll(".js-annas-archive-se")) {
el.href = loc.replace(currentDomainToReplace, "annas-" + "archive.se");
}
for (const el of document.querySelectorAll(".js-annas-archive-li")) {
el.href = loc.replace(currentDomainToReplace, "annas-" + "archive.li");
}
// Use the new domain in all links and forms.
let areUsingOtherDomain = false;
function useOtherDomain(domain) {
if (areUsingOtherDomain) {
return;
}
areUsingOtherDomain = true;
if (isInvalidDomain) {
const newLoc = loc.replace(currentDomainToReplace, domain);
if (newLoc !== loc) {
window.location = newLoc;
return;
}
}
const newOrigin = window.location.origin.replace(currentDomainToReplace, domain);
for (const el of document.querySelectorAll("a")) {
el.href = el.href.replace(currentDomainToReplace, domain);
}
for (const el of document.querySelectorAll("form")) {
el.action = el.action.replace(currentDomainToReplace, domain);
}
}
// useOtherDomain('annas-archive.li'); // For testing.
function getRandomString() {
return Math.random() + "." + Math.random() + "." + Math.random();
}
// Check if there are other domains that are still up. Use the first one that responds.
let foundOtherDomain = false;
function checkOtherDomains() {
console.log('checkOtherDomains');
if (foundOtherDomain) {
return;
}
const otherFetchOptions = { mode: "cors", method: "GET", credentials: "omit", cache: "no-cache", redirect: "error" };
for (const domain of domainsToNavigateTo) {
if (currentDomainToReplace !== domain) {
fetch('//' + domain + '/dyn/up/?' + getRandomString(), otherFetchOptions).then(function(response) {
if (foundOtherDomain) {
return;
}
if (!(response.status >= 500 && response.status <= 599)) {
foundOtherDomain = true;
useOtherDomain(domain);
}
}).catch(function() {
// Ignore.
});
}
}
}
// If we're not on a valid domain, try to go to a valid domain.
if (isInvalidDomain) {
checkOtherDomains();
// Keep checking in case one comes online.
setInterval(checkOtherDomains, intervalCheckOtherDomains);
} else {
// Keep checking the current domain once, to see if it's still up.
function checkCurrentDomain() {
const currentFetchOptions = { method: "GET", credentials: "same-origin", cache: "no-cache", redirect: "error" };
fetch('/dyn/up/?' + getRandomString(), currentFetchOptions).then(function(response) {
// Only do something in the case of an actual error code from Cloudflare, not if the users network is bad.
if (response.status >= 500 && response.status <= 599) {
checkOtherDomains();
// Keep checking in case one comes online.
setInterval(checkOtherDomains, intervalCheckOtherDomains);
}
if (response.status === 200) {
return response.json().then(function(jsonResponse) {
window.globalUpdateAaLoggedIn(jsonResponse.aa_logged_in);
});
}
}).catch(function() {
// Ignore; see above.
});
}
setTimeout(checkCurrentDomain, initialCheckMs);
}
})();
</script>
<!-- Cloudflare Web Analytics --><script defer="" src="https://static.cloudflareinsights.com/beacon.min.js" data-cf-beacon="{"token": "a60431b24db04cf2beeef0864f1df5e4"}"></script><!-- End Cloudflare Web Analytics -->
</body></html>