جارٍ فتح تراث…

إعادة المحاولةفتح النسخة المتوافقة
`,`text/html`).body.firstElementChild}function xpe(e,t){return ype(e,t).outerHTML}function Spe(e,t){return _pe(vpe(e,t))}function Cpe(e,t){return Spe(bpe(e,t),t)}function wpe(e,t){return typeof t==`string`?Cpe(t,{schema:e}):wy(t)?Spe(t,{schema:e}):t}function Tpe(e,t){return iS(t)?t:e.nodeFromJSON(wpe(e,t))}function Epe(e,t){let n=Tpe(e,t);return nS(n.type.schema===e,`Document schema does not match editor schema`),nS(n.type===e.topNodeType,`Document type does not match editor top node type. Expected ${e.topNodeType.name}, got ${n.type.name}`),n}function Dpe(e,t){return Zfe(t)?(nS(t.$head.doc===e,`Selection and doc do not match`),t):t===`start`?Yv.atStart(e):t===`end`?Yv.atEnd(e):Yv.fromJSON(e,t)}function Ope({defaultSelection:e,defaultContent:t}){return cS(bS,[({schema:n})=>{let r={};if(t){let i=wpe(n,t);r.doc=n.nodeFromJSON(i),e&&(r.selection=Yv.fromJSON(r.doc,e))}return r}])}function kpe(e,t){return Object.keys(e).every(n=>e[n]===t[n])}function Ape(e,t,n){return n||={},e.some(e=>e.type===t&&kpe(n,e.attrs))}function jpe(e,t,n,r,i){let a=!1,o=!1;return e.nodesBetween(t,n,(e,t,n)=>{if(a)return!1;n?.type.allowsMarkType(r)&&!e.marks.some(e=>e.type!==r&&e.type.excludes(r))&&(o=!0,Ape(e.marks,r,i)||(a=!0))}),!o||a}function Mpe(e,t,n){let{from:r,$from:i,to:a,empty:o}=e.selection,s=tS(e.schema,t);return o?Ape(e.storedMarks||i.marks(),s,n):!jpe(e.doc,r,a,s,n)}function Npe(e,t,n=Gpe){return Dy(e.nodes,e=>Ppe(e,t,n))}function Ppe(e,t,n){let r=(...t)=>Rpe(e,t,n);return r.isActive=n=>{let r=t();return r?aS(r,e,n):!1},r}function Fpe(e,t,n=Wpe){return Dy(e.marks,e=>Ipe(e,t,n))}function Ipe(e,t,n){let r=(...t)=>Lpe(e,t,n);return r.isActive=n=>{let r=t();return r?Mpe(r,e,n):!1},r}function Lpe(e,t,n){let[r,i]=zpe(t);return n(e.create(r),uS(e.schema,i))}function Rpe(e,t,n){let[r,i]=zpe(t);return n(e,r,uS(e.schema,i))}function uS(e,t){let n=[];for(let r of t)if(typeof r==`string`)r&&n.push(e.text(r,null));else if(Array.isArray(r))n.push(...uS(e,r));else if(iS(r))n.push(r);else throw new pS(`Invalid node child: ${typeof r}`);return n}function zpe(e){let[t,...n]=e;return Bpe(t)?(n.unshift(t),[null,n]):typeof t==`object`?[t,n]:[null,n]}function Bpe(e){return e?typeof e==`string`||Array.isArray(e)||iS(e):!1}function dS(...e){let t=e.flat();return nS(t.length>0,`At least one extension is required`),new Kpe(t)}function Vpe(e){return e.defaultContent?dS(e.extension,Ope(e)):e.extension}function fS(e){return new qpe(new xS(Vpe(e)))}var pS,mS,Hpe,hS,gS,_S,vS,yS,Upe,bS,Wpe,Gpe,Kpe,xS,qpe,Jpe=o((()=>{gy(),_y(),ky(),Xfe(),pS=class extends Error{constructor(e,t){typeof e==`string`&&!e.startsWith(`[`)&&(e=`[prosekit] ${e}`),super(e,t)}},mS=class extends pS{constructor(){super(`Unable to find browser Document. When not in the browser environment, you need to pass a DOM Document.`)}},Hpe=0,hS=class{constructor(e,t,n,r){if(this.index=Hpe++,r&&!n)this.reduce=r;else if(n&&!r)this.reduce=()=>n;else throw new pS(`Incorrect reducer`);this.parent=e,this.singleton=t,this.path=e?[...e.path,this.index]:[]}get reducer(){return this.reduce()}},gS=new hS(null,!0,npe),_S=oS({reducer:e=>{nS(e.length<=1);let t=e[0];return{schema:t?new R_(t):null}},parent:gS,singleton:!0}),vS=class{constructor(){this.trees=[null,null,null,null,null]}getTree(e){let t=e??this.priority??2;return this.trees[t]||=this.createTree(t)}findFacetOutput(e){let t=this.getTree();for(let n of e.path)t=t?.children.get(n);return t?.getOutput()??null}get schema(){return this.findFacetOutput(_S)?.find(Boolean)?.schema??null}},yS=class{constructor(e,t=[null,null,null,null,null],n=new Map,r=[null,null,null,null,null]){this.output=null,this.facet=e,this.inputs=t,this.children=n,this.reducers=r}calcOutput(){let e=[null,null,null,null,null],t=[null,null,null,null,null];for(let t=0;t<5;t++){let n=this.inputs[t];n&&(e[t]=[...n])}for(let t of this.children.values()){let n=t.getOutput();for(let t=0;t<5;t++)n[t]&&(e[t]||=[]).push(n[t])}if(this.facet.singleton)t[2]=(this.reducers[2]||=this.facet.reducer)(e.filter(xy).flat());else for(let n=0;n<5;n++){let r=e[n];r&&(t[n]=(this.reducers[n]||=this.facet.reducer)(r))}return t}getOutput(){return this.output||=this.calcOutput(),this.output}getSingletonOutput(){return nS(this.facet.singleton),this.getOutput()[2]}getRootOutput(){nS(this.isRoot());let e=this.getSingletonOutput();return nS(e),e}isRoot(){return!this.facet.parent}},Upe=class extends vS{constructor(e,t){super(),this.facet=e,this.payloads=t}createTree(e){let t=this.priority??e,n=[null,null,null,null,null];n[t]=[...this.payloads];let r=new yS(this.facet,n);for(;r.facet.parent;){let e=new Map([[r.facet.index,r]]);r=new yS(r.facet.parent,void 0,e)}return r}},bS=oS({reduce:()=>{let e=[],t=t=>{let n,r,i=t.schema,a=new Set,o=new Set,s=[...e].reverse();for(let e of s){let s=e(t);n||=s.doc,r||=s.selection,i||=s.schema;for(let e of s.storedMarks??[])a.add(e);for(let e of s.plugins??[])o.add(e)}return n&&i&&(i=void 0),nS(n||i,`Can't create state without a schema nor a document`),{doc:n,selection:r,schema:i,storedMarks:Array.from(a),plugins:Array.from(o)}};return function(n){return e=n,{state:t}}},singleton:!0,parent:gS}),Wpe=(e,t)=>t.map(t=>t.mark(e.addToSet(t.marks))),Gpe=(e,t,n)=>{let r=e.createAndFill(t,n);return nS(r,`Failed to create node ${e.name}`),r},Kpe=class extends vS{constructor(e=[]){super(),this.extension=e}createTree(e){let t=this.priority??e,n=[...this.extension];n.sort((e,n)=>(e.priority??t)-(n.priority??t));let r=n.map(e=>e.getTree(t));nS(r.length>0);let i=r[0];for(let e=1;ethis.view?.state||this.directEditorProps.state,this.dispatch=e=>{this.view?this.view.dispatch(e):this.directEditorProps.state=this.directEditorProps.state.apply(e)},this.getDocJSON=()=>_pe(this.getState().doc),this.getDocHTML=e=>{let t=this.getProp(`clipboardSerializer`),n=t?{fromSchema:()=>t}:void 0;return xpe(this.getDoc(),{...e,DOMSerializer:n})},this.tree=e.getTree();let t=this.tree.getRootOutput(),n=t.schema,r=t.state;nS(n&&r,`Schema must be defined`);let i=dy.create(r);if(t.commands)for(let[e,n]of Object.entries(t.commands))this.defineCommand(e,n);this.nodes=Npe(i.schema,this.getState),this.marks=Fpe(i.schema,this.getState),this.schema=i.schema,this.directEditorProps={state:i,...t.view}}getDoc(){return this.getState().doc}getProp(e){return this.view?.someProp(e)??this.directEditorProps[e]}updateState(e){this.view?this.view.updateState(e):this.directEditorProps.state=e}setContent(e,t){let n=Epe(this.schema,e);n.check();let r=Dpe(n,t||`start`),i=this.getState();if(n.eq(i.doc)&&(!t||r.eq(i.selection)))return;let a=dy.create({doc:n,selection:r,plugins:i.plugins});this.updateState(a)}updateExtension(e,t){let n=this.view;if(!n||n.isDestroyed)return;let r=e.getTree(),i=r.getRootOutput();if(i?.schema)throw new pS(`Schema cannot be changed`);if(i?.view)throw new pS(`View cannot be changed`);let a=this.tree.getRootOutput(),o=[...n.state?.plugins??[]];this.tree=t?sS(this.tree,r):upe(this.tree,r);let s=this.tree.getRootOutput(),c=[...s?.state?.plugins??[]];if(!Ty(o,c)){let e=n.state.reconfigure({plugins:c});n.updateState(e)}if(s?.commands&&!Ty(a?.commands,s?.commands)){let e=s.commands,t=Object.keys(e);for(let n of t)this.defineCommand(n,e[n])}}use(e){if(!this.mounted){let t=!1,n=null;return this.afterMounted.push(()=>{t||(n=this.use(e))}),()=>{t=!0,n?.()}}return this.updateExtension(e,!0),()=>this.updateExtension(e,!1)}mount(e){if(this.view){if(this.view.dom===e)return;throw new pS(`Editor is already mounted`)}this.view=new eS({mount:e},this.directEditorProps),this.afterMounted.forEach(e=>e()),this.afterMounted.length=0}unmount(){this.view&&=(this.directEditorProps.state=this.view.state,this.view.destroy(),null)}get mounted(){return!!this.view&&!this.view.isDestroyed}get assertView(){if(!this.view)throw new pS(`Editor is not mounted`);return this.view}definePlugins(e){let t=this.assertView,n=t.state,r=[...e,...n.plugins],i=n.reconfigure({plugins:r});t.setProps({state:i})}removePlugins(e){let t=this.view;if(!t)return;let n=t.state,r=n.plugins.filter(t=>!e.includes(t)),i=n.reconfigure({plugins:r});t.setProps({state:i})}exec(e){return e(this.getState(),this.dispatch,this.view??void 0)}canExec(e){return e(this.getState(),void 0,this.view??void 0)}defineCommand(e,t){let n=(...e)=>{let n=t(...e);return this.exec(n)};n.canExec=(...e)=>{let n=t(...e);return this.canExec(n)},this.commands[e]=n}removeCommand(e){delete this.commands[e]}},qpe=class{constructor(e){if(this.mount=e=>{if(e)return this.instance.mount(e),this.unmount;this.instance.unmount()},this.unmount=()=>{this.instance.unmount()},this.focus=()=>{this.instance.view?.focus()},this.blur=()=>{this.instance.view?.dom.blur()},this.use=e=>this.instance.use(e),this.updateState=e=>{this.instance.updateState(e)},this.setContent=(e,t)=>this.instance.setContent(e,t),this.getDocJSON=()=>this.instance.getDocJSON(),this.getDocHTML=e=>this.instance.getDocHTML(e),this.exec=e=>this.instance.exec(e),this.canExec=e=>this.instance.canExec(e),!(e instanceof xS))throw TypeError(`Invalid EditorInstance`);this.instance=e}get mounted(){return this.instance.mounted}get view(){return this.instance.assertView}get schema(){return this.instance.schema}get state(){return this.instance.getState()}get focused(){return this.instance.view?.hasFocus()??!1}get commands(){return this.instance.commands}get nodes(){return this.instance.nodes}get marks(){return this.instance.marks}}})),Ype=o((()=>{Vv()}));function Xpe(e,t){let{$cursor:n}=e.selection;return!n||(t?!t.endOfTextblock(`backward`,e):n.parentOffset>0)?null:n}function Zpe(e,t,n){let r=t.nodeBefore,i=t.pos-1;for(;!r.isTextblock;i--){if(r.type.spec.isolating)return!1;let e=r.lastChild;if(!e)return!1;r=e}let a=t.nodeAfter,o=t.pos+1;for(;!a.isTextblock;o++){if(a.type.spec.isolating)return!1;let e=a.firstChild;if(!e)return!1;a=e}let s=lv(e.doc,i,o,w_.empty);if(!s||s.from!=i||s instanceof Pv&&s.slice.size>=o-i)return!1;if(n){let t=e.tr.step(s);t.setSelection(Qv.create(t.doc,i)),n(t.scrollIntoView())}return!0}function SS(e,t,n=!1){for(let r=e;r;r=t==`start`?r.firstChild:r.lastChild){if(r.isTextblock)return!0;if(n&&r.childCount!=1)return!1}return!1}function CS(e){if(!e.parent.type.spec.isolating)for(let t=e.depth-1;t>=0;t--){if(e.index(t)>0)return e.doc.resolve(e.before(t+1));if(e.node(t).type.spec.isolating)break}return null}function Qpe(e,t){let{$cursor:n}=e.selection;return!n||(t?!t.endOfTextblock(`forward`,e):n.parentOffset=0;t--){let n=e.node(t);if(e.index(t)+1{let{$from:r,$to:i}=t.selection;if(t.selection instanceof ey&&t.selection.node.isBlock)return!r.parentOffset||!ov(t.doc,r.pos)?!1:(n&&n(t.tr.split(r.pos).scrollIntoView()),!0);if(!r.depth)return!1;let a=[],o,s,c=!1,l=!1;for(let t=r.depth;;t--)if(r.node(t).isBlock){c=r.end(t)==r.pos+(r.depth-t),l=r.start(t)==r.pos-(r.depth-t),s=TS(r.node(t-1).contentMatchAt(r.indexAfter(t-1)));let n=e&&e(i.parent,c,r);a.unshift(n||(c&&s?{type:s}:null)),o=t;break}else{if(t==1)return!1;a.unshift(null)}let u=t.tr;(t.selection instanceof Qv||t.selection instanceof ny)&&u.deleteSelection();let d=u.mapping.map(r.pos),f=ov(u.doc,d,a.length,a);if(f||=(a[0]=s?{type:s}:null,ov(u.doc,d,a.length,a)),!f)return!1;if(u.split(d,a.length,a),!c&&l&&r.node(o).type!=s){let e=u.mapping.map(r.before(o)),t=u.doc.resolve(e);s&&r.node(o-1).canReplaceWith(t.index(),t.index()+1,s)&&u.setNodeMarkup(u.mapping.map(r.before(o)),s)}return n&&n(u.scrollIntoView()),!0}}function eme(e,t,n){let r=t.nodeBefore,i=t.nodeAfter,a=t.index();return!r||!i||!r.type.compatibleContent(i.type)?!1:!r.content.size&&t.parent.canReplace(a-1,a)?(n&&n(e.tr.delete(t.pos-r.nodeSize,t.pos).scrollIntoView()),!0):!t.parent.canReplace(a,a+1)||!(i.isTextblock||sv(e.doc,t.pos))?!1:(n&&n(e.tr.join(t.pos).scrollIntoView()),!0)}function tme(e,t,n,r){let i=t.nodeBefore,a=t.nodeAfter,o,s,c=i.type.spec.isolating||a.type.spec.isolating;if(!c&&eme(e,t,n))return!0;let l=!c&&t.parent.canReplace(t.index(),t.index()+1);if(l&&(o=(s=i.contentMatchAt(i.childCount)).findWrapping(a.type))&&s.matchType(o[0]||a.type).validEnd){if(n){let r=t.pos+a.nodeSize,s=b_.empty;for(let e=o.length-1;e>=0;e--)s=b_.from(o[e].create(null,s));s=b_.from(i.copy(s));let c=e.tr.step(new Fv(t.pos-1,r,t.pos,r,new w_(s,1,0),o.length,!0)),l=c.doc.resolve(r+2*o.length);l.nodeAfter&&l.nodeAfter.type==i.type&&sv(c.doc,l.pos)&&c.join(l.pos),n(c.scrollIntoView())}return!0}let u=a.type.spec.isolating||r>0&&c?null:Yv.findFrom(t,1),d=u&&u.$from.blockRange(u.$to),f=d&&tv(d);if(f!=null&&f>=t.depth)return n&&n(e.tr.lift(d,f).scrollIntoView()),!0;if(l&&SS(a,`start`,!0)&&SS(i,`end`)){let r=i,o=[];for(;o.push(r),!r.isTextblock;)r=r.lastChild;let s=a,c=1;for(;!s.isTextblock;s=s.firstChild)c++;if(r.canReplace(r.childCount,r.childCount,s.content)){if(n){let r=b_.empty;for(let e=o.length-1;e>=0;e--)r=b_.from(o[e].copy(r));n(e.tr.step(new Fv(t.pos-o.length,t.pos+a.nodeSize,t.pos+c,t.pos+a.nodeSize-c,new w_(r,o.length,0),0,!0)).scrollIntoView())}return!0}}return!1}function nme(e){return function(t,n){let r=t.selection,i=e<0?r.$from:r.$to,a=i.depth;for(;i.node(a).isInline;){if(!a)return!1;a--}return i.node(a).isTextblock?(n&&n(t.tr.setSelection(Qv.create(t.doc,e<0?i.start(a):i.end(a)))),!0):!1}}function rme(e,t=null){return function(n,r){let i=!1;for(let r=0;r{if(i)return!1;if(!(!r.isTextblock||r.hasMarkup(e,t)))if(r.type==e)i=!0;else{let t=n.doc.resolve(a),r=t.index();i=t.parent.canReplaceWith(r,r+1,e)}})}if(!i)return!1;if(r){let i=n.tr;for(let r=0;r{if(s||!r&&e.isAtom&&e.isInline&&t>=a.pos&&t+e.nodeSize<=o.pos)return!1;s=e.inlineContent&&e.type.allowsMarkType(n)}),s)return!0}return!1}function ame(e){let t=[];for(let n=0;n{if(e.isAtom&&e.content.size&&e.isInline&&n>=r.pos&&n+e.nodeSize<=i.pos)return n+1>r.pos&&t.push(new Xv(r,r.doc.resolve(n+1))),r=r.doc.resolve(n+1+e.content.size),!1}),r.posn.doc.rangeHasMark(t.$from.pos,t.$to.pos,e)):!l.every(t=>{let n=!1;return c.doc.nodesBetween(t.$from.pos,t.$to.pos,(r,i,a)=>{if(n)return!1;n=!e.isInSet(r.marks)&&!!a&&a.type.allowsMarkType(e)&&!(r.isText&&/^\s*$/.test(r.textBetween(Math.max(0,t.$from.pos-i),Math.min(r.nodeSize,t.$to.pos-i))))}),!n});for(let n=0;n{Vv(),X_(),hy(),DS=(e,t)=>!e.selection.empty&&(t&&t(e.tr.deleteSelection().scrollIntoView()),!0),OS=(e,t,n)=>{let r=Xpe(e,n);if(!r)return!1;let i=CS(r);if(!i){let n=r.blockRange(),i=n&&tv(n);return i!=null&&(t&&t(e.tr.lift(n,i).scrollIntoView()),!0)}let a=i.nodeBefore;if(tme(e,i,t,-1))return!0;if(r.parent.content.size==0&&(SS(a,`end`)||ey.isSelectable(a)))for(let n=r.depth;;n--){let o=lv(e.doc,r.before(n),r.after(n),w_.empty);if(o&&o.slice.size1)break}return a.isAtom&&i.depth==r.depth-1?(t&&t(e.tr.delete(i.pos-a.nodeSize,i.pos).scrollIntoView()),!0):!1},sme=(e,t,n)=>{let r=Xpe(e,n);if(!r)return!1;let i=CS(r);return i?Zpe(e,i,t):!1},cme=(e,t,n)=>{let r=Qpe(e,n);if(!r)return!1;let i=wS(r);return i?Zpe(e,i,t):!1},kS=(e,t,n)=>{let{$head:r,empty:i}=e.selection,a=r;if(!i)return!1;if(r.parent.isTextblock){if(n?!n.endOfTextblock(`backward`,e):r.parentOffset>0)return!1;a=CS(r)}let o=a&&a.nodeBefore;return!o||!ey.isSelectable(o)?!1:(t&&t(e.tr.setSelection(ey.create(e.doc,a.pos-o.nodeSize)).scrollIntoView()),!0)},lme=(e,t,n)=>{let r=Qpe(e,n);if(!r)return!1;let i=wS(r);if(!i)return!1;let a=i.nodeAfter;if(tme(e,i,t,1))return!0;if(r.parent.content.size==0&&(SS(a,`start`)||ey.isSelectable(a))){let n=lv(e.doc,r.before(),r.after(),w_.empty);if(n&&n.slice.size{let{$head:r,empty:i}=e.selection,a=r;if(!i)return!1;if(r.parent.isTextblock){if(n?!n.endOfTextblock(`forward`,e):r.parentOffset{let{$from:n,$to:r}=e.selection,i=n.blockRange(r),a=i&&tv(i);return a!=null&&(t&&t(e.tr.lift(i,a).scrollIntoView()),!0)},jS=(e,t)=>{let{$head:n,$anchor:r}=e.selection;return!n.parent.type.spec.code||!n.sameParent(r)?!1:(t&&t(e.tr.insertText(` `).scrollIntoView()),!0)},dme=(e,t)=>{let{$head:n,$anchor:r}=e.selection;if(!n.parent.type.spec.code||!n.sameParent(r))return!1;let i=n.node(-1),a=n.indexAfter(-1),o=TS(i.contentMatchAt(a));if(!o||!i.canReplaceWith(a,a,o))return!1;if(t){let r=n.after(),i=e.tr.replaceWith(r,r,o.createAndFill());i.setSelection(Yv.near(i.doc.resolve(r),1)),t(i.scrollIntoView())}return!0},MS=(e,t)=>{let n=e.selection,{$from:r,$to:i}=n;if(n instanceof ny||r.parent.inlineContent||i.parent.inlineContent)return!1;let a=TS(i.parent.contentMatchAt(i.indexAfter()));if(!a||!a.isTextblock)return!1;if(t){let n=(!r.parentOffset&&i.index(){let{$cursor:n}=e.selection;if(!n||n.parent.content.size)return!1;if(n.depth>1&&n.after()!=n.end(-1)){let r=n.before();if(ov(e.doc,r))return t&&t(e.tr.split(r).scrollIntoView()),!0}let r=n.blockRange(),i=r&&tv(r);return i!=null&&(t&&t(e.tr.lift(r,i).scrollIntoView()),!0)},PS=$pe(),FS=(e,t)=>(t&&t(e.tr.setSelection(new ny(e.doc))),!0),fme=nme(-1),pme=nme(1),IS=ES(DS,OS,kS),LS=ES(DS,lme,AS),RS={Enter:ES(jS,MS,NS,PS),"Mod-Enter":dme,Backspace:IS,"Mod-Backspace":IS,"Shift-Backspace":IS,Delete:LS,"Mod-Delete":LS,"Mod-a":FS},zS={"Ctrl-h":RS.Backspace,"Alt-Backspace":RS[`Mod-Backspace`],"Ctrl-d":RS.Delete,"Ctrl-Alt-Backspace":RS[`Mod-Delete`],"Alt-Delete":RS[`Mod-Delete`],"Alt-d":RS[`Mod-Delete`],"Ctrl-a":fme,"Ctrl-e":pme};for(let e in RS)zS[e]=RS[e];mme=(typeof navigator<`u`?/Mac|iP(hone|[oa]d)/.test(navigator.platform):typeof os<`u`&&os.platform&&os.platform()==`darwin`)?zS:RS})),BS=o((()=>{hme()})),VS,HS,US,gme,_me=o((()=>{VS=200,HS=function(){},HS.prototype.append=function(e){return e.length?(e=HS.from(e),!this.length&&e||e.length=t?HS.empty:this.sliceInner(Math.max(0,e),Math.min(this.length,t))},HS.prototype.get=function(e){if(!(e<0||e>=this.length))return this.getInner(e)},HS.prototype.forEach=function(e,t,n){t===void 0&&(t=0),n===void 0&&(n=this.length),t<=n?this.forEachInner(e,t,n,0):this.forEachInvertedInner(e,t,n,0)},HS.prototype.map=function(e,t,n){t===void 0&&(t=0),n===void 0&&(n=this.length);var r=[];return this.forEach(function(t,n){return r.push(e(t,n))},t,n),r},HS.from=function(e){return e instanceof HS?e:e&&e.length?new US(e):HS.empty},US=function(e){function t(t){e.call(this),this.values=t}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var n={length:{configurable:!0},depth:{configurable:!0}};return t.prototype.flatten=function(){return this.values},t.prototype.sliceInner=function(e,n){return e==0&&n==this.length?this:new t(this.values.slice(e,n))},t.prototype.getInner=function(e){return this.values[e]},t.prototype.forEachInner=function(e,t,n,r){for(var i=t;i=n;i--)if(e(this.values[i],r+i)===!1)return!1},t.prototype.leafAppend=function(e){if(this.length+e.length<=VS)return new t(this.values.concat(e.flatten()))},t.prototype.leafPrepend=function(e){if(this.length+e.length<=VS)return new t(e.flatten().concat(this.values))},n.length.get=function(){return this.values.length},n.depth.get=function(){return 0},Object.defineProperties(t.prototype,n),t}(HS),HS.empty=new US([]),gme=function(e){function t(t,n){e.call(this),this.left=t,this.right=n,this.length=t.length+n.length,this.depth=Math.max(t.depth,n.depth)+1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.flatten=function(){return this.left.flatten().concat(this.right.flatten())},t.prototype.getInner=function(e){return ei&&this.right.forEachInner(e,Math.max(t-i,0),Math.min(this.length,n)-i,r+i)===!1)return!1},t.prototype.forEachInvertedInner=function(e,t,n,r){var i=this.left.length;if(t>i&&this.right.forEachInvertedInner(e,t-i,Math.max(n,i)-i,r+i)===!1||n=n?this.right.slice(e-n,t-n):this.left.slice(e,n).append(this.right.slice(0,t-n))},t.prototype.leafAppend=function(e){var n=this.right.leafAppend(e);if(n)return new t(this.left,n)},t.prototype.leafPrepend=function(e){var n=this.left.leafPrepend(e);if(n)return new t(n,this.right)},t.prototype.appendInner=function(e){return this.left.depth>=Math.max(this.right.depth,e.depth)+1?new t(this.left,new t(this.right,e)):new t(this,e)},t}(HS)}));function vme(e,t){let n;return e.forEach((e,r)=>{if(e.selection&&t--==0)return n=r,!1}),e.slice(n)}function yme(e,t,n,r){let i=n.getMeta(ZS),a;if(i)return i.historyState;n.getMeta(Dme)&&(e=new JS(e.done,e.undone,null,0,-1));let o=n.getMeta(`appendedTransaction`);if(n.steps.length==0)return e;if(o&&o.getMeta(ZS))return o.getMeta(ZS).redo?new JS(e.done.addTransform(n,void 0,r,GS(t)),e.undone,xme(n.mapping.maps),e.prevTime,e.prevComposition):new JS(e.done,e.undone.addTransform(n,void 0,r,GS(t)),null,e.prevTime,e.prevComposition);if(n.getMeta(`addToHistory`)!==!1&&!(o&&o.getMeta(`addToHistory`)===!1)){let i=n.getMeta(`composition`),a=e.prevTime==0||!o&&e.prevComposition!=i&&(e.prevTime<(n.time||0)-r.newGroupDelay||!bme(n,e.prevRanges)),s=o?WS(e.prevRanges,n.mapping):xme(n.mapping.maps);return new JS(e.done.addTransform(n,a?t.selection.getBookmark():void 0,r,GS(t)),KS.empty,s,n.time,i??e.prevComposition)}return(a=n.getMeta(`rebased`))?new JS(e.done.rebased(n,a),e.undone.rebased(n,a),WS(e.prevRanges,n.mapping),e.prevTime,e.prevComposition):new JS(e.done.addMaps(n.mapping.maps),e.undone.addMaps(n.mapping.maps),WS(e.prevRanges,n.mapping),e.prevTime,e.prevComposition)}function bme(e,t){if(!t)return!1;if(!e.docChanged)return!0;let n=!1;return e.mapping.maps[0].forEach((e,r)=>{for(let i=0;i=t[i]&&(n=!0)}),n}function xme(e){let t=[];for(let n=e.length-1;n>=0&&t.length==0;n--)e[n].forEach((e,n,r,i)=>t.push(r,i));return t}function WS(e,t){if(!e)return null;let n=[];for(let r=0;r{let i=ZS.getState(n);if(!i||(e?i.undone:i.done).eventCount==0)return!1;if(r){let a=Sme(i,n,e);a&&r(t?a.scrollIntoView():a)}return!0}}var Tme,KS,qS,JS,Eme,YS,XS,ZS,Dme,QS,$S,Ome=o((()=>{_me(),Vv(),hy(),Tme=500,KS=class e{constructor(e,t){this.items=e,this.eventCount=t}popEvent(t,n){if(this.eventCount==0)return null;let r=this.items.length;for(;;r--)if(this.items.get(r-1).selection){--r;break}let i,a;n&&(i=this.remapping(r,this.items.length),a=i.maps.length);let o=t.tr,s,c,l=[],u=[];return this.items.forEach((t,n)=>{if(!t.step){i||(i=this.remapping(r,n+1),a=i.maps.length),a--,u.push(t);return}if(i){u.push(new qS(t.map));let e=t.step.map(i.slice(a)),n;e&&o.maybeStep(e).doc&&(n=o.mapping.maps[o.mapping.maps.length-1],l.push(new qS(n,void 0,void 0,l.length+u.length))),a--,n&&i.appendMap(n,a)}else o.maybeStep(t.step);if(t.selection)return s=i?t.selection.map(i.slice(a)):t.selection,c=new e(this.items.slice(0,r).append(u.reverse().concat(l)),this.eventCount-1),!1},this.items.length,0),{remaining:c,transform:o,selection:s}}addTransform(t,n,r,i){let a=[],o=this.eventCount,s=this.items,c=!i&&s.length?s.get(s.length-1):null;for(let e=0;eEme&&(s=vme(s,l),o-=l),new e(s.append(a),o)}remapping(e,t){let n=new Ev;return this.items.forEach((t,r)=>{let i=t.mirrorOffset!=null&&r-t.mirrorOffset>=e?n.maps.length-t.mirrorOffset:void 0;n.appendMap(t.map,i)},e,t),n}addMaps(t){return this.eventCount==0?this:new e(this.items.append(t.map(e=>new qS(e))),this.eventCount)}rebased(t,n){if(!this.eventCount)return this;let r=[],i=Math.max(0,this.items.length-n),a=t.mapping,o=t.steps.length,s=this.eventCount;this.items.forEach(e=>{e.selection&&s--},i);let c=n;this.items.forEach(e=>{let n=a.getMirror(--c);if(n==null)return;o=Math.min(o,n);let i=a.maps[n];if(e.step){let o=t.steps[n].invert(t.docs[n]),l=e.selection&&e.selection.map(a.slice(c+1,n));l&&s++,r.push(new qS(i,o,l))}else r.push(new qS(i))},i);let l=[];for(let e=n;eTme&&(d=d.compress(this.items.length-r.length)),d}emptyItemCount(){let e=0;return this.items.forEach(t=>{t.step||e++}),e}compress(t=this.items.length){let n=this.remapping(0,t),r=n.maps.length,i=[],a=0;return this.items.forEach((e,o)=>{if(o>=t)i.push(e),e.selection&&a++;else if(e.step){let t=e.step.map(n.slice(r)),o=t&&t.getMap();if(r--,o&&n.appendMap(o,r),t){let s=e.selection&&e.selection.map(n.slice(r));s&&a++;let c=new qS(o.invert(),t,s),l,u=i.length-1;(l=i.length&&i[u].merge(c))?i[u]=l:i.push(c)}}else e.map&&r--},this.items.length,0),new e(HS.from(i.reverse()),a)}},KS.empty=new KS(HS.empty,0),qS=class e{constructor(e,t,n,r){this.map=e,this.step=t,this.selection=n,this.mirrorOffset=r}merge(t){if(this.step&&t.step&&!t.selection){let n=t.step.merge(this.step);if(n)return new e(n.getMap().invert(),n,this.selection)}}},JS=class{constructor(e,t,n,r,i){this.done=e,this.undone=t,this.prevRanges=n,this.prevTime=r,this.prevComposition=i}},Eme=20,YS=!1,XS=null,ZS=new my(`history`),Dme=new my(`closeHistory`),QS=wme(!1,!0),$S=wme(!0,!0)})),kme=o((()=>{Ome()}));function Ame(e){var t=!(jme&&e.metaKey&&e.shiftKey&&!e.ctrlKey&&!e.altKey||Mme&&e.shiftKey&&e.key&&e.key.length==1||e.key==`Unidentified`)&&e.key||(e.shiftKey?tC:eC)[e.keyCode]||e.key||`Unidentified`;return t==`Esc`&&(t=`Escape`),t==`Del`&&(t=`Delete`),t==`Left`&&(t=`ArrowLeft`),t==`Up`&&(t=`ArrowUp`),t==`Right`&&(t=`ArrowRight`),t==`Down`&&(t=`ArrowDown`),t}var eC,tC,jme,Mme,nC,Nme=o((()=>{for(eC={8:`Backspace`,9:`Tab`,10:`Enter`,12:`NumLock`,13:`Enter`,16:`Shift`,17:`Control`,18:`Alt`,20:`CapsLock`,27:`Escape`,32:` `,33:`PageUp`,34:`PageDown`,35:`End`,36:`Home`,37:`ArrowLeft`,38:`ArrowUp`,39:`ArrowRight`,40:`ArrowDown`,44:`PrintScreen`,45:`Insert`,46:`Delete`,59:`;`,61:`=`,91:`Meta`,92:`Meta`,106:`*`,107:`+`,108:`,`,109:`-`,110:`.`,111:`/`,144:`NumLock`,145:`ScrollLock`,160:`Shift`,161:`Shift`,162:`Control`,163:`Control`,164:`Alt`,165:`Alt`,173:`-`,186:`;`,187:`=`,188:`,`,189:`-`,190:`.`,191:`/`,192:"`",219:`[`,220:`\\`,221:`]`,222:`'`},tC={48:`)`,49:`!`,50:`@`,51:`#`,52:`$`,53:`%`,54:`^`,55:`&`,56:`*`,57:`(`,59:`:`,61:`+`,173:`_`,186:`:`,187:`+`,188:`<`,189:`_`,190:`>`,191:`?`,192:`~`,219:`{`,220:`|`,221:`}`,222:`"`},jme=typeof navigator<`u`&&/Mac/.test(navigator.platform),Mme=typeof navigator<`u`&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),nC=0;nC<10;nC++)eC[48+nC]=eC[96+nC]=String(nC);for(nC=1;nC<=24;nC++)eC[nC+111]=`F`+nC;for(nC=65;nC<=90;nC++)eC[nC]=String.fromCharCode(nC+32),tC[nC]=String.fromCharCode(nC);for(var e in eC)tC.hasOwnProperty(e)||(tC[e]=eC[e])}));function Pme(e){let t=e.split(/-(?!$)/),n=t[t.length-1];n==`Space`&&(n=` `);let r,i,a,o;for(let e=0;e{Nme(),Lme=typeof navigator<`u`&&/Mac|iP(hone|[oa]d)/.test(navigator.platform),Rme=typeof navigator<`u`&&/Win/.test(navigator.platform)})),Bme=o((()=>{zme()}));function Vme(e){return(t,n)=>{let{$from:r,$to:i}=t.selection;if(t.selection instanceof ey&&t.selection.node.isBlock)return!r.parentOffset||!ov(t.doc,r.pos)?!1:(n&&n(t.tr.split(r.pos).scrollIntoView()),!0);if(!r.parent.isBlock)return!1;if(n){let a=i.parentOffset==i.parent.content.size,o=t.tr;(t.selection instanceof Qv||t.selection instanceof ny)&&o.deleteSelection();let s=r.depth==0?null:Wme(r.node(-1).contentMatchAt(r.indexAfter(-1))),c=e&&e(i.parent,a,r),l=c?[c]:a&&s?[{type:s}]:void 0,u=ov(o.doc,o.mapping.map(r.pos),1,l);if(!l&&!u&&ov(o.doc,o.mapping.map(r.pos),1,s?[{type:s}]:void 0)&&(s&&(l=[{type:s}]),u=!0),u&&(o.split(o.mapping.map(r.pos),1,l),!a&&!r.parentOffset&&r.parent.type!=s)){let e=o.mapping.map(r.before()),t=o.doc.resolve(e);s&&r.node(-1).canReplaceWith(t.index(),t.index()+1,s)&&o.setNodeMarkup(o.mapping.map(r.before()),s)}n(o.scrollIntoView())}return!0}}function Hme(e,t){let n=Ume(e.type,!0),r=Ume(t,!0),i=n.filter(e=>r.includes(e));return i.length===0?null:Object.fromEntries(i.map(t=>[t,e.attrs[t]]))}function Ume(e,t){let n=[];for(let[r,i]of Object.entries(e.spec.attrs??{}))i.splittable===t&&n.push(r);return n}function Wme(e){for(let t=0;t{hy(),Vv(),Gme=Vme((e,t,n)=>{if(!t)return null;let r=n.depth==0?null:Wme(n.node(-1).contentMatchAt(n.indexAfter(-1)));if(!r)return null;let i=Hme(e,r);return i?{type:r,attrs:i}:null})}));function qme(e){return(t,n)=>{let r=tS(t.schema,e.type).create(e.attrs),i=e.from??t.selection.from,a=e.to??t.selection.to;return i>a?!1:(n?.(t.tr.addMark(i,a,r)),!0)}}function Jme(e){return(t,n)=>{let r=tS(t.schema,e.type),i=e=>e.type===r,a=Yme(t.selection.$from,i),o=Xme(t.selection.$to,i);return a===t.selection.from&&o===t.selection.to?!1:(n&&n(t.tr.setSelection(Qv.create(t.doc,a,o))),!0)}}function Yme(e,t){let{parent:n}=e;if(!e.marks().some(t))return e.pos;let r=e.index(),i=r;for(let e=r;e>=0&&n.child(e).marks.some(t);e--)i=e;return e.posAtIndex(i)}function Xme(e,t){let{parent:n}=e;if(!e.marks().some(t))return e.pos;let r=Math.max(0,e.indexAfter()-1),i=n.childCount,a=r;for(let e=r;e{let r=e?.pos==null?t.selection.$to:t.doc.resolve(e.pos),i=r.parent.isTextblock?r.depth-1:r.depth,a=r.node(i),o=r.indexAfter(i),s=Zme(a.contentMatchAt(o));if(!s)return!1;if(n){let e=r.posAtIndex(o,i),a=s.createAndFill();if(!a)return!1;let c=t.tr.insert(e,a),l=Qv.findFrom(c.doc.resolve(e),1);if(!l)return!1;c.setSelection(l),n(c.scrollIntoView())}return!0}}function $me(e,t){let n=e.doc.content.size,r=e.doc.resolve(t>n?n:t<0?0:t),i=Qv.between(r,r);e.setSelection(i)}function iC(e){return(t,n)=>{let r=e.node?e.node:e.type?rS(t.schema,e.type).createAndFill(e.attrs):null;nS(r,`You must provide either a node or a type`);let i=cv(t.doc,e.pos??t.selection.anchor,new w_(b_.from([r]),0,0));if(i==null)return!1;if(n){let e=t.tr.insert(i,r);$me(e,i+r.nodeSize),n(e)}return!0}}function ehe(e){return(t,n)=>{let r=tS(t.schema,e.type),i=e.attrs?r.create(e.attrs):r,a=e.from??t.selection.from,o=e.to??t.selection.to;return a>o?!1:(n?.(t.tr.removeMark(a,o,i)),!0)}}function the(e,t){for(let n=t.depth;n>=0;--n){let r=t.node(n);if(e(r))return{node:r,pos:n===0?0:t.before(n),start:t.start(n),depth:n}}}function aC(e,t){return Array.isArray(t)?t.map(t=>rS(e,t)):[rS(e,t)]}function nhe(e,t){let n=aC(t.doc.type.schema,e);return the(e=>n.includes(e.type),t)}function rhe(e){return(t,n)=>{let r=typeof e.pos==`number`?t.doc.resolve(e.pos):t.selection.$anchor,i=nhe(e.type,r);if(!i)return!1;let{pos:a,node:o}=i;return n?.(t.tr.delete(a,a+o.nodeSize)),!0}}function ihe(){return FS}function ahe(e,t){let n=t<0?e.$from:e.$to,r=n.depth;for(;n.node(r).isInline;){if(!r)return;r--}if(n.node(r).isTextblock)return t<0?n.start(r):n.end(r)}function ohe(){return yC}function she(e,t,n){let r=t??n;if(r!=null){let i=e.doc.resolve(t??r),a=e.doc.resolve(n??r);return Qv.between(i,a)}return e.selection}function oC(e){return(t,n)=>{let r=rS(t.schema,e.type),i=she(t,e.from,e.to),a=e.attrs,o=!1;for(let e=0;e{if(o)return!1;if(!(!e.isTextblock||e.hasMarkup(r,a)))if(e.type==r)o=!0;else{let e=t.doc.resolve(n),i=e.index();o=e.parent.canReplaceWith(i,i+1,r)}})}if(!o)return!1;if(n){let e=t.tr;for(let t of i.ranges){let{$from:{pos:n},$to:{pos:i}}=t;e.setBlockType(n,i,r,a)}n(e.scrollIntoView())}return!0}}function che(e){return(t,n)=>{let r=e.from??t.selection.from,i=e.to??t.selection.to;if(r>i)return!1;let a=aC(t.schema,e.type),o=[],s=!1;if(t.doc.nodesBetween(r,i,(e,t)=>{if(a.includes(e.type)&&(o.push(t),s=!0),!n&&s)return!1}),!s)return!1;if(n){let{tr:r}=t;for(let[t,n]of Object.entries(e.attrs))for(let e of o)r.setNodeAttribute(e,t,n);n(r)}return!0}}function lhe({type:e,attrs:t,pos:n}){return(r,i)=>{let a;if(n==null){let t=nhe(e,r.selection.$anchor);if(!t)return!1;a=t.pos}else{let t=r.doc.nodeAt(n);if(!t||!aC(r.schema,e).includes(t.type))return!1;a=n}if(i){let{tr:e}=r;for(let[n,r]of Object.entries(t))e.setNodeAttribute(a,n,r);i(e)}return!0}}function sC({type:e,attrs:t,removeWhenPresent:n=!1,enterInlineAtoms:r=!0}){return(i,a,o)=>ome(tS(i.schema,e),t,{removeWhenPresent:n,enterInlineAtoms:r})(i,a,o)}function uhe({type:e,attrs:t}){return(n,r,i)=>{if(aS(n,e,t)){let e=n.schema.topNodeType.contentMatch.defaultType;return e?rme(e)(n,r,i):!1}return rme(rS(n.schema,e),t)(n,r,i)}}function cC(e){return(t,n)=>{let{$from:r,$to:i}=t.selection,a=r.blockRange(i);if(!a)return!1;let o=nv(a,rS(t.schema,e.type),e.attrs);return o?(n?.(t.tr.wrap(a,o)),!0):!1}}function lC(e){let{type:t,attrs:n}=e;return(e,r)=>aS(e,t,n)?ume(e,r):cC({type:t,attrs:n})(e,r)}function dhe(e){return(t,n)=>{let r=e?.from??t.selection.from,i=e?.to??t.selection.to;if(r>i)return!1;let a=t.tr;return fhe(a,r,i)?(n?.(a),!0):!1}}function fhe(e,t,n){let r=e.steps.length;return e.doc.nodesBetween(t,n,(t,n,i,a)=>{if(!i||!t.isTextblock)return!0;let o=i.contentMatchAt(a).defaultType;if(o&&o.isTextblock&&t.type!==o&&o.validContent(t.content)){let i=e.mapping.slice(r),a=i.map(n,1),s=i.map(n+t.nodeSize,1),c=new Fv(a,s,a+1,s-1,new w_(b_.from(o.create()),0,0),1,!0);e.step(c)}return!1}),e.steps.length>r}function phe(e){return(t,n)=>{let r=e?.from??t.selection.from,i=e?.to??t.selection.to;return r>i?!1:(n?.(t.tr.removeMark(r,i)),!0)}}function uC(e,t){let n=dS(e);return n.priority=t,n}function mhe(e){return hhe(e)}function hhe(e){return cS(bC,[e])}function dC(e){return t=>e.filter(xy).reduce((e,t)=>t(e),t)}function fC(e,t){return t?t(e):e}function ghe(e,t){return new tge(fC(nge,t.nodesFromSchemaWrapper)(e),fC(rge,t.marksFromSchemaWrapper)(e),t.serializeFragmentWrapper,t.serializeNodeWrapper)}function _he(e){return cS(ige,[e])}function vhe({text:e,from:t,to:n}){return(r,i)=>(e&&i?.(r.tr.insertText(e,t,n)),!0)}function pC(e){return cS(age,[e])}function yhe(){return pC({insertText:vhe,insertNode:iC,removeNode:rhe,wrap:cC,toggleWrap:lC,setBlockType:oC,setNodeAttrs:lhe,setNodeAttrsBetween:che,insertDefaultBlock:Qme,selectAll:ihe,selectBlock:ohe,addMark:qme,removeMark:ehe,unsetBlockType:dhe,unsetMark:phe})}function mC(e){return bhe([`update`,e])}function bhe(e){return cS(oge,[e])}function xhe(e){return mC((t,n)=>{t.state.doc.eq(n.doc)||e(t,n)})}function She(e){let t={};for(let[n,r]of e)(t[n]||=[]).push(r);return t}function hC(){let e=[];function t(t){e=t}function n(...t){for(let n=e.length-1;n>=0;n--)if(e[n](...t))return!0;return!1}return[t,n]}function Che(...e){return cS(cge,e)}function whe(e){return cS(lge,[e])}function The(e){return whe([`keyDown`,e])}function Ehe(e){return whe([`paste`,e])}function Dhe(){let[e,t]=hC(),[n,r]=hC(),[i,a]=hC(),[o,s]=hC(),[c,l]=hC(),[u,d]=hC(),[f,p]=hC(),[m,h]=hC(),[g,_]=hC(),[y,b]=hC(),[x,S]=hC(),[C,w]=hC();return[t=>{let r=She(t);e(r.keyDown??[]),n(r.keyPress??[]),i(r.textInput??[]),o(r.clickOn??[]),c(r.click??[]),u(r.doubleClickOn??[]),f(r.doubleClick??[]),m(r.tripleClickOn??[]),g(r.tripleClick??[]),y(r.paste??[]),x(r.drop??[]),C(r.scrollToSelection??[])},new fy({key:new my(`prosekit-editor-event`),props:{handleKeyDown:t,handleKeyPress:r,handleTextInput:a,handleClickOn:s,handleClick:l,handleDoubleClickOn:d,handleDoubleClick:p,handleTripleClickOn:h,handleTripleClick:_,handlePaste:b,handleDrop:S,handleScrollToSelection:w}})]}function Ohe(e){return Che([`focus`,()=>e(!0)],[`blur`,()=>e(!1)])}function gC(e){return cS(dge,[e])}function khe({depth:e=200,newGroupDelay:t=250}={}){return dS(mhe(Cme({depth:e,newGroupDelay:t})),gC(xC),pC(pge))}function Ahe({priority:e=1,preferBlockSelection:t=!0}={}){return uC(gC({...mme,"Mod-a":t?ES(yC,FS):FS,Enter:mge,Backspace:hge}),e)}function jhe(e,t){t.lastIndex=0;let n=[],r=0,i,a=!1;for(;i=t.exec(e);){let o=i.index,s=t.lastIndex;if(o>r&&n.push([e.slice(r,o),void 0]),n.push([e.slice(o,s),i]),a=!0,r===s)return;r=s}return a&&rr?t:Fhe({markType:tS(n.state.schema,e.type),regex:e.regex,getAttrs:e.getAttrs,shouldSkip:e.shouldSkip},t)})}function Fhe(e,t){let n=Ihe(e,t.content);return n?new w_(n,t.openStart,t.openEnd):t}function Ihe(e,t){let n=!1,r=[];for(let i of t.content){let t=Lhe(e,i);t&&(n=!0),r.push(t||i)}if(n)return b_.from(r)}function Lhe(e,t){if(t.type.spec.code||t.type.isInline)return;if(t.type.isTextblock)return Rhe(e,t);let n=Ihe(e,t.content);if(n)return t.copy(n)}function Rhe(e,t){let n=[],r=!1;for(let i of t.content.content){let t=zhe(e,i);t?(r=!0,n.push(...t)):n.push(i)}if(r)return t.copy(b_.from(n))}function zhe(e,t){let n=t.text;if(!n)return;let{markType:r,shouldSkip:i}=e;if(i){if(i(t))return}else if(t.marks.some(e=>e.type===r)||t.marks.some(e=>e.type.spec.code))return;let a=jhe(n,e.regex);if(!a)return;let o=t.type.schema,s=[];for(let[n,i]of a)if(n)if(i){let a=e.getAttrs?.(i)??null;if(a!==!1){let e=r.create(a);s.push(o.text(n,[...t.marks,e]))}else s.push(o.text(n,t.marks))}else s.push(o.text(n,t.marks));return s}function Bhe(e){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r);return t}function Vhe(...e){let t=e.filter(xy).map(Bhe);return Object.assign({},...t)}function Hhe(e,t){let n={},r=new Set([...Object.keys(e.attrs??{}),...Object.keys(t.attrs??{})]);for(let i of r){let r=e.attrs?.[i],a=t.attrs?.[i],o=Vhe(r,a);o&&(n[i]=o)}return Vhe(e,t,{attrs:n,parseDOM:[...e.parseDOM??[],...t.parseDOM??[]]})}function Uhe(e,t){return(n,...r)=>Khe(e(n,...r),t.map(e=>e.toDOM?.(n.attrs[e.attr])).filter(xy))}function Whe(e,t){let n=e.getAttrs,r=e.attrs;return{...e,getAttrs:e=>{let i=n?.(e)??r??{};if(i===!1||!e||!wy(e))return i??null;let a={};for(let n of t)n.parseDOM&&(a[n.attr]=n.parseDOM(e));return{...i,...a}}}}function Ghe(e,t){return e.tag?Whe(e,t):e}function Khe(e,t){if(!e)return e;if(Array.isArray(e)){let n=e.slice(1),r;r=n.length>0&&(n[0]==null||typeof n[0]==`object`)?n.shift():{};let i=qhe(r,t);return[e[0],i,...n]}if(Cy(e)&&Sy(e))return Jhe(e,t);if(typeof e==`object`&&`dom`in e){let n=e.dom;if(Cy(n)&&Sy(n))return{...e,dom:Jhe(n,t)}}return e}function qhe(e,t){e={...e};for(let[n,r]of t){let t=e[n],i=n===`style`?Yhe(r,typeof t==`string`?t:``):r;e[n]=i}return e}function Jhe(e,t){e=e.cloneNode(!0);for(let[n,r]of t){let t=e.getAttribute(n),i=n===`style`?Yhe(r,typeof t==`string`?t:``):r;e.setAttribute(n,i)}return e}function Yhe(...e){return e.map(e=>e.trim().replace(/;$/,``)).filter(Boolean).join(`; `)}function _C(e){return cS(_ge,[[e,void 0]])}function vC(e){return cS(yge,[[e,void 0]])}function Xhe(e,t){let{$cursor:n}=e.selection;return!n||(t?!t.endOfTextblock(`backward`,e):n.parentOffset>0)?null:n}function Zhe(e){return!!(e.spec.code&&e.isBlock)}function Qhe(e){return Zhe(e.$from.parent.type)||Zhe(e.$to.parent.type)}function $he(e,...t){return typeof e==`function`?e(...t):e}function ege(e){return(t,n,r)=>!Qhe(t.selection)&&e(t,n,r)}var yC,bC,tge,nge,rge,ige,age,oge,sge,cge,lge,uge,dge,fge,xC,pge,mge,hge,gge,SC,_ge,vge,yge,bge,CC,wC,TC=o((()=>{Jpe(),gy(),_y(),Ype(),BS(),ky(),kme(),Bme(),Kme(),Vg(),yC=(e,t)=>{let{selection:n}=e;if(!Qfe(n))return!1;let r=ahe(n,-1),i=ahe(n,1);if(r==null||i==null||n.from<=r&&n.to>=i)return!1;if(t){let n=Qv.create(e.doc,r,i);t(e.tr.setSelection(n))}return!0},bC=oS({reducer:e=>({schema:t})=>{let n=[];for(let r of e)if(r instanceof fy)n.push(r);else if(Array.isArray(r)&&r.every(e=>e instanceof fy))n.push(...r);else if(typeof r==`function`)n.push(...[r({schema:t})].flat());else throw new pS(`Invalid plugin`);return{plugins:[...n].reverse()}},parent:bS}),tge=class extends J_{constructor(e,t,n,r){super(e,t),this.serializeFragmentWrapper=n,this.serializeNodeWrapper=r}serializeFragment(...e){return fC((...e)=>super.serializeFragment(...e),this.serializeFragmentWrapper)(...e)}serializeNode(...e){return fC((...e)=>super.serializeNode(...e),this.serializeNodeWrapper)(...e)}},nge=J_.nodesFromSchema.bind(J_),rge=J_.marksFromSchema.bind(J_),ige=oS({reducer:e=>{let t={serializeFragmentWrapper:dC(e.map(e=>e.serializeFragmentWrapper)),serializeNodeWrapper:dC(e.map(e=>e.serializeNodeWrapper)),nodesFromSchemaWrapper:dC(e.map(e=>e.nodesFromSchemaWrapper)),marksFromSchemaWrapper:dC(e.map(e=>e.marksFromSchemaWrapper))};return({schema:e})=>{let n=ghe(e,t);return[new fy({key:new my(`prosekit-clipboard-serializer`),props:{clipboardSerializer:n}})]}},singleton:!0,parent:bC}),age=oS({reducer:e=>{switch(e.length){case 0:return{commands:{}};case 1:return{commands:e[0]};default:return{commands:Object.assign({},...e)}}},parent:gS,singleton:!0}),oge=oS({reduce:()=>{let e=[],t=[],n=[],r=new fy({key:sge,view:r=>(e.forEach(e=>e(r)),{update:(e,n)=>{t.forEach(t=>t(e,n))},destroy:()=>{n.forEach(e=>e())}})}),i=r=>{e=[],t=[],n=[];for(let i of r)switch(i[0]){case`mount`:e.push(i[1]);break;case`update`:t.push(i[1]);break;case`unmount`:n.push(i[1]);break}};return function(e){return i(e),r}},parent:bC,singleton:!0}),sge=new my(`prosekit-plugin-view-handler`),cge=oS({reduce:()=>{let e={},t={},n,r=r=>{let i=!1;for(let[n]of r)if(!e[n]){i=!0;let[r,a]=hC();e[n]=r,t[n]=a}let a=She(r);for(let[t,n]of Object.entries(e))n(a[t]??[]);i&&(n=new fy({key:new my(`prosekit-dom-event-handler`),props:{handleDOMEvents:t}}))};return function(e){return r(e),n??[]}},parent:bC,singleton:!0}),lge=oS({reduce:()=>{let[e,t]=Dhe();return n=>(e(n),t)},parent:bC,singleton:!0}),uge=typeof navigator<`u`&&/Mac|iP(hone|[ao]d)/.test(navigator.platform),dge=oS({reduce:()=>{let e=[],t=new fy({key:fge,props:{handleKeyDown:(t,n)=>{for(let r of e)if(r(t,n))return!0;return!1}}});return n=>(e=n.map(Ime).reverse(),t)},parent:bC,singleton:!0}),fge=new my(`prosekit-keymap`),xC={"Mod-z":QS,"Mod-Z":$S},uge||(xC[`Mod-y`]=$S),pge={undo:()=>QS,redo:()=>$S},mge=ES(jS,MS,NS,Gme),hge=ES(DS,sme,kS),gge=oS({reduce:()=>{let e=[],t=new fy({key:new my(`prosekit-paste-rule`),props:{transformPasted:(t,n,r)=>{for(let i of e)t=i({slice:t,view:n,plain:r});return t}}});return n=>(e=[...n].reverse(),t)},singleton:!0,parent:bC}),SC=oS({reducer:e=>{let t=Bg.from({}),n=Bg.from({}),r;for(let i of e)t=t.append(i.nodes),n=n.append(i.marks??{}),r??=i.topNode;return{nodes:t,marks:n,topNode:r}},parent:_S,singleton:!0}),_ge=oS({reducer:e=>{let t=Bg.from({}),n=e.map(e=>e[0]).filter(xy),r=e.map(e=>e[1]).filter(xy);for(let{name:e,...r}of n){let n=t.get(e);t=n?t.update(e,Hhe(n,r)):t.addToStart(e,r)}let i=Ey(r,e=>e.type);for(let[e,n]of i.entries()){if(!n)continue;let r=t.get(e);nS(r,`Mark type ${e} must be defined`);let i={...r,attrs:{...r.attrs}};for(let e of n)i.attrs[e.attr]={default:e.default,validate:e.validate};r.toDOM&&(i.toDOM=Uhe(r.toDOM,n)),r.parseDOM&&(i.parseDOM=r.parseDOM.map(e=>Ghe(e,n))),t=t.update(e,i)}return{marks:t,nodes:{}}},parent:SC,singleton:!0}),vge=typeof window>`u`,oS({reducer:e=>{if(vge)return[];let t={},n=e.map(e=>e[0]).filter(xy),r=e.map(e=>e[1]).filter(xy);for(let{group:e,name:i,args:a}of r){let r=n.find(t=>t.group===e);r&&(t[i]=r.factory(a))}return()=>[new fy({key:new my(`prosekit-mark-view-effect`),props:{markViews:t}})]},parent:bC}),oS({reducer:e=>{let t={};for(let n of e)t[n.name]||(t[n.name]=n.constructor);return()=>[new fy({key:new my(`prosekit-mark-view`),props:{markViews:t}})]},parent:bC}),yge=oS({reducer:e=>{let t=Bg.from({}),n,r=e.map(e=>e[0]).filter(xy),i=e.map(e=>e[1]).filter(xy);for(let{name:e,topNode:i,...a}of r){i&&(n=e);let r=t.get(e);t=r?t.update(e,Hhe(r,a)):t.addToStart(e,a)}let a=Ey(i,e=>e.type);for(let[e,n]of a.entries()){if(!n)continue;let r=t.get(e);nS(r,`Node type ${e} must be defined`);let i={...r,attrs:{...r.attrs}};for(let e of n)i.attrs[e.attr]={default:e.default,validate:e.validate,splittable:e.splittable};r.toDOM&&(i.toDOM=Uhe(r.toDOM,n)),r.parseDOM&&(i.parseDOM=r.parseDOM.map(e=>Whe(e,n))),t=t.update(e,i)}return{nodes:t,topNode:n}},parent:SC,singleton:!0}),bge=typeof window>`u`,oS({reducer:e=>{if(bge)return[];let t={},n=e.map(e=>e[0]).filter(xy),r=e.map(e=>e[1]).filter(xy);for(let{group:e,name:i,args:a}of r){let r=n.find(t=>t.group===e);r&&(t[i]=r.factory(a))}return()=>[new fy({key:new my(`prosekit-node-view-effect`),props:{nodeViews:t}})]},parent:bC}),oS({reducer:e=>{let t={};for(let n of e)t[n.name]||(t[n.name]=n.constructor);return()=>[new fy({key:new my(`prosekit-node-view`),props:{nodeViews:t}})]},parent:bC}),CC={lowest:0,low:1,default:2,high:3,highest:4},wC=Oy})),EC=o((()=>{TC()}));function xge(e){return function(t,n,r,i){let a=e;if(n[1]){let e=n[0].lastIndexOf(n[1]);a+=n[0].slice(e+n[1].length),r+=e;let t=r-i;t>0&&(a=n[0].slice(e-t,e)+a,r=i)}return t.tr.insertText(a,r,i)}}function Sge({rules:e}){let t=new fy({state:{init(){return null},apply(e,t){return e.getMeta(this)||(e.selectionSet||e.docChanged?null:t)}},props:{handleTextInput(n,r,i,a){return Cge(n,r,i,a,e,t)},handleDOMEvents:{compositionend:n=>{setTimeout(()=>{let{$cursor:r}=n.state.selection;r&&Cge(n,r.pos,r.pos,``,e,t)})}}},isInputRules:!0});return t}function Cge(e,t,n,r,i,a){if(e.composing)return!1;let o=e.state,s=o.doc.resolve(t),c=s.parent.textBetween(Math.max(0,s.parentOffset-Ege),s.parentOffset,null,``)+r;for(let l=0;le.type.spec.code))continue;if(s.parent.type.spec.code){if(!u.inCode)continue}else if(u.inCode===`only`)continue;let d=u.match.exec(c);if(!d||d[0].length{t.isInline&&t.marks.some(e=>e.type.spec.code)&&(e=!0)}),e)continue}let p=u.handler(o,d,f,n);if(p)return u.undoable&&p.setMeta(a,{transform:p,from:t,to:n,text:r}),e.dispatch(p),!0}return!1}function wge(e,t,n=null,r){return new DC(e,(e,i,a,o)=>{let s=n instanceof Function?n(i):n,c=e.tr.delete(a,o),l=c.doc.resolve(a).blockRange(),u=l&&nv(l,t,s);if(!u)return null;c.wrap(l,u);let d=c.doc.resolve(a-1).nodeBefore;return d&&d.type==t&&sv(c.doc,a-1)&&(!r||r(i,d))&&c.join(a-1),c})}function Tge(e,t,n=null){return new DC(e,(e,r,i,a)=>{let o=e.doc.resolve(i),s=n instanceof Function?n(r):n;return o.node(-1).canReplaceWith(o.index(-1),o.indexAfter(-1),t)?e.tr.delete(i,a).setBlockType(i,i,t,s):null})}var DC,Ege,Dge=o((()=>{hy(),Vv(),DC=class{constructor(e,t,n={}){this.match=e,this.match=e,this.handler=typeof t==`string`?xge(t):t,this.undoable=n.undoable!==!1,this.inCode=n.inCode||!1,this.inCodeMark=n.inCodeMark!==!1}},Ege=500,new DC(/--$/,`—`,{inCodeMark:!1}),new DC(/\.\.\.$/,`…`,{inCodeMark:!1}),new DC(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(")$/,`“`,{inCodeMark:!1}),new DC(/"$/,`”`,{inCodeMark:!1}),new DC(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(')$/,`‘`,{inCodeMark:!1}),new DC(/'$/,`’`,{inCodeMark:!1})})),Oge=o((()=>{Dge()}));function kge(e){return kC(()=>e)}function Age({regex:e,type:t,attrs:n=null,inCodeMark:r=!1}){return new DC(e,(e,r,i,a)=>{let{tr:o,schema:s}=e,[c,l]=r;if(!l)return null;let u=i+c.indexOf(l),d=u+l.length;if(!(i<=u&&uTge(e,rS(r,t),n))}function Mge({regex:e,type:t,attrs:n,join:r}){return kC(({schema:i})=>wge(e,rS(i,t),n,r))}function kC(e){return cS(Nge,[e])}var Nge,AC=o((()=>{TC(),Oge(),Nge=oS({reducer:e=>t=>[Sge({rules:e.flatMap(e=>e(t))})],parent:bC})}));function Pge(){return pC({setBlockquote:()=>cC({type:`blockquote`}),insertBlockquote:()=>iC({type:`blockquote`}),toggleBlockquote:()=>lC({type:`blockquote`})})}function Fge(){return Mge({regex:/^>\s/,type:`blockquote`})}function Ige(){return lC({type:`blockquote`})}function Lge(){return Vge}function Rge(){return gC({"Mod-B":Ige(),Backspace:Lge()})}function zge(){return vC({name:`blockquote`,content:`block+`,group:`block`,defining:!0,parseDOM:[{tag:`blockquote`}],toDOM(){return[`blockquote`,0]}})}function Bge(){return dS(zge(),Fge(),Pge(),Rge())}var Vge,Hge=o((()=>{AC(),TC(),BS(),Vge=(e,t,n)=>Xhe(e,n)?.node(-1).type.name===`blockquote`&&OS(e,t,n)})),Uge=o((()=>{Hge()}));function Wge(){return pC({toggleBold:()=>sC({type:`bold`})})}function Gge(){return OC({regex:wC()?RegExp(`(?<=\\s|^)\\*\\*([^\\s*]|[^\\s*][^*]*[^\\s*])\\*\\*$`):/\*\*([^\s*]|[^\s*][^*]*[^\s*])\*\*$/,type:`bold`})}function Kge(){return gC({"Mod-b":sC({type:`bold`})})}function qge(){return _C({name:`bold`,parseDOM:[{tag:`strong`},{tag:`b`,getAttrs:e=>typeof e!=`string`&&e.style.fontWeight!==`normal`&&null},{style:`font-weight=400`,clearMark:e=>e.type.name==`strong`},{style:`font-weight`,getAttrs:e=>typeof e==`string`&&/^(bold(er)?|[5-9]\d{2,})$/.test(e)&&null}],toDOM(){return[`strong`,0]}})}function Jge(){return dS(qge(),Wge(),Kge(),Gge())}var Yge=o((()=>{AC(),TC()})),Xge=o((()=>{Yge()}));function Zge(){return pC({toggleCode:()=>sC({type:`code`})})}function Qge(){return OC({regex:wC()?RegExp("(?<=\\s|^)`([^\\s`]|[^\\s`][^`]*[^\\s`])`$"):/`([^\s`]|[^\s`][^`]*[^\s`])`$/,type:`code`})}function $ge(){return gC({"Mod-e":sC({type:`code`})})}function e_e(){return _C({name:`code`,parseDOM:[{tag:`code`}],code:!0,toDOM(){return[`code`,0]}})}function t_e(){return dS(e_e(),Zge(),$ge(),Qge())}var n_e=o((()=>{AC(),TC()})),r_e=o((()=>{n_e()}));function i_e(){return vC({name:`doc`,content:`block+`,topNode:!0})}var a_e=o((()=>{TC()})),o_e=o((()=>{a_e()}));function jC(){return iC({type:`hardBreak`})}function s_e(){return pC({insertHardBreak:jC})}function c_e(){return gC({"Mod-Enter":jC(),"Shift-Enter":jC()})}function l_e(){return vC({name:`hardBreak`,inline:!0,selectable:!1,leafText:()=>` `,group:`inline`,parseDOM:[{tag:`br`}],toDOM(){return[`br`]}})}function u_e(){return dS(l_e(),c_e(),s_e())}var d_e=o((()=>{TC()})),f_e=o((()=>{d_e()}));function p_e(){return pC({setHeading:e=>oC({type:`heading`,attrs:e}),insertHeading:e=>iC({type:`heading`,attrs:e}),toggleHeading:e=>uhe({type:`heading`,attrs:e})})}function m_e(){return jge({regex:/^(#{1,6})\s$/,type:`heading`,attrs:e=>({level:e[1]?.length??1})})}function MC(e){return ege(uhe({type:`heading`,attrs:{level:e}}))}function h_e(){return gC({"Mod-Alt-1":MC(1),"Mod-Alt-2":MC(2),"Mod-Alt-3":MC(3),"Mod-Alt-4":MC(4),"Mod-Alt-5":MC(5),"Mod-Alt-6":MC(6),Backspace:v_e})}function g_e(){return vC({name:`heading`,attrs:{level:{default:1,validate:`number`}},content:`inline*`,group:`block`,defining:!0,parseDOM:[{tag:`h1`,attrs:{level:1}},{tag:`h2`,attrs:{level:2}},{tag:`h3`,attrs:{level:3}},{tag:`h4`,attrs:{level:4}},{tag:`h5`,attrs:{level:5}},{tag:`h6`,attrs:{level:6}}],toDOM(e){return[`h${e.attrs.level}`,0]}})}function __e(){return dS(g_e(),m_e(),h_e(),p_e())}var v_e,y_e=o((()=>{AC(),TC(),v_e=(e,t,n)=>Xhe(e,n)?.parent.type.name===`heading`&&dhe()(e,t,n)})),b_e=o((()=>{y_e()}));function x_e(){return pC({toggleItalic:()=>sC({type:`italic`})})}function S_e(){return OC({regex:wC()?RegExp(`(?<=\\s|^)\\*([^\\s*]|[^\\s*][^*]*[^\\s*])\\*$`):/\*([^\s*]|[^\s*][^*]*[^\s*])\*$/,type:`italic`})}function C_e(){return gC({"Mod-i":sC({type:`italic`})})}function w_e(){return _C({name:`italic`,parseDOM:[{tag:`i`},{tag:`em`},{style:`font-style=italic`},{style:`font-style=normal`,clearMark:e=>e.type.name===`italic`}],toDOM(){return[`em`,0]}})}function T_e(){return dS(w_e(),x_e(),C_e(),S_e())}var E_e=o((()=>{AC(),TC()})),D_e=o((()=>{E_e()}));function O_e({rules:e}){return function(t,n,r){return r?A_e(r,e,n):!1}}function k_e(e){let t=Ime({Enter:O_e(e)});return new fy({key:new my(`prosemirror-enter-rules`),props:{handleKeyDown:t}})}function A_e(e,t,n){if(e.composing)return!1;let r=e.state.selection;if(!(r instanceof Qv))return!1;let{$cursor:i}=r;if(!i||i.parent.type.spec.code)return!1;let a=i.parent.textBetween(Math.max(0,i.parentOffset-M_e),i.parentOffset,null,j_e);for(let r of t){r.regex.lastIndex=0;let t=r.regex.exec(a),o=t&&r.handler({state:e.state,from:i.pos-t[0].length,to:i.pos,match:t});if(o&&(n?.(o),r.stop))return!0}return!1}var j_e,M_e,N_e=o((()=>{zme(),hy(),j_e=``,M_e=200}));function P_e(e){return cS(F_e,[e])}var F_e,I_e=o((()=>{TC(),N_e(),F_e=oS({reducer:e=>k_e({rules:e}),parent:bC})}));function L_e(){return Phe({type:`link`,regex:J_e,getAttrs:e=>e[1]?{href:e[1]}:!1})}function R_e(){return _C({name:`link`,inclusive:!1,attrs:{href:{validate:`string`},target:{default:null,validate:`string|null`},rel:{default:null,validate:`string|null`}},parseDOM:[{tag:`a[href]`,getAttrs:e=>({href:e.getAttribute(`href`)||``,target:e.getAttribute(`target`)||null,rel:e.getAttribute(`rel`)||null})}],toDOM(e){let{href:t,target:n,rel:r}=e.attrs;return[`a`,{href:t,target:n,rel:r},0]}})}function z_e(){return pC({addLink:e=>qme({type:`link`,attrs:e}),removeLink:()=>ehe({type:`link`}),toggleLink:e=>sC({type:`link`,attrs:e}),expandLink:()=>Jme({type:`link`})})}function B_e(){return kge(new DC(q_e,(e,t,n)=>{let r=t[1];if(!r)return null;let i=e.schema.marks.link.create({href:r});return e.tr.addMark(n,n+r.length,i).insertText(` `)}))}function V_e(){return P_e({regex:K_e,handler:({state:e,from:t,match:n})=>{let r=n[1];if(!r)return null;let i=e.schema.marks.link.create({href:r}),a=e.tr.addMark(t,t+r.length,i);return a.docChanged?a:null}})}function H_e(){return dS(R_e(),z_e(),B_e(),V_e(),L_e())}var U_e,W_e,G_e,K_e,q_e,J_e,Y_e=o((()=>{AC(),I_e(),TC(),Oge(),U_e=`((?:(?:(?:https?:)?\\/\\/)?(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:a(?:a(?:a|rp)|b(?:arth|b(?:ott|vie)?|c|le|ogado|udhabi)|c(?:ademy|c(?:enture|ountants?)|o|tor)?|d(?:s|ult)?|e(?:g|ro|tna)?|f(?:l|rica)?|g(?:akhan|ency)?|i(?:g|r(?:bus|force|tel))?|kdn|l(?:faromeo|i(?:baba|pay)|l(?:finanz|state|y)|s(?:ace|tom))?|m(?:azon|e(?:rican(?:express|family)|x)|fam|ica|sterdam)?|n(?:alytics|droid|quan|z)|ol?|p(?:artments|p(?:le)?)|q(?:uarelle)?|r(?:a(?:b|mco)|chi|my|pa|te?)?|s(?:da|ia|sociates)?|t(?:hleta|torney)?|u(?:ction|di(?:ble|o)?|spost|t(?:hor|os?))?|vianca|ws?|xa?|z(?:ure)?)|b(?:a(?:by|idu|n(?:a(?:mex|narepublic)|d|k)|r(?:c(?:elona|lay(?:card|s))|efoot|gains)?|s(?:eball|ketball)|uhaus|yern)?|b(?:c|t|va)?|c[gn]|d|e(?:a(?:ts|uty)|er|ntley|rlin|st(?:buy)?|t)?|f|g|h(?:arti)?|i(?:ble|d|ke|ngo?|o|z)?|j|l(?:ack(?:friday)?|o(?:ckbuster|g|omberg)|ue)|m[sw]?|n(?:pparibas)?|o(?:ats|ehringer|fa|m|nd|o(?:k(?:ing)?)?|s(?:ch|t(?:ik|on))|t|utique|x)?|r(?:adesco|idgestone|o(?:adway|ker|ther)|ussels)?|s|t|u(?:ild(?:ers)?|siness|y|zz)|v|w|y|zh?)|c(?:a(?:b|fe|l(?:l|vinklein)?|m(?:era|p)?|non|p(?:etown|ital(?:one)?)|r(?:avan|ds|e(?:ers?)?|s)?|s(?:a|e|h|ino)|t(?:ering|holic)?)?|b(?:a|n|re|s)|c|d|e(?:nter|o|rn)|f[ad]?|g|h(?:a(?:n(?:el|nel)|rity|se|t)|eap|intai|r(?:istmas|ome)|urch)?|i(?:priani|rcle|sco|t(?:adel|ic?|y(?:eats)?))?|k|l(?:aims|eaning|i(?:ck|ni(?:c|que))|o(?:thing|ud)|ub(?:med)?)?|m|n|o(?:ach|des|ffee|l(?:lege|ogne)|m(?:cast|m(?:bank|unity)|p(?:a(?:ny|re)|uter)|sec)?|n(?:dos|s(?:truction|ulting)|t(?:act|ractors))|o(?:king(?:channel)?|l|p)|rsica|u(?:ntry|pons?|rses))?|pa|r(?:edit(?:card|union)?|icket|own|s|uises?)?|u(?:isinella)?|v|w|x|y(?:mru|ou)?|z)|d(?:a(?:bur|d|nce|t(?:a|e|ing|sun)|y)|clk|ds|e(?:al(?:er|s)?|gree|l(?:ivery|l|oitte|ta)|mocrat|nt(?:al|ist)|si(?:gn)?|v)?|hl|i(?:amonds|et|gital|rect(?:ory)?|s(?:co(?:unt|ver)|h)|y)|j|k|m|np|o(?:c(?:s|tor)|g|mains|t|wnload)?|rive|tv|u(?:bai|nlop|pont|rban)|v(?:ag|r)|z)|e(?:a(?:rth|t)|co?|d(?:eka|u(?:cation)?)|e|g|m(?:ail|erck)|n(?:ergy|gineer(?:ing)?|terprises)|pson|quipment|r(?:icsson|ni)?|s(?:q|tate)?|t(?:isalat)?|u(?:rovision|s)?|vents|x(?:change|p(?:ert|osed|ress)|traspace))|f(?:a(?:ge|i(?:l|rwinds|th)|mily|ns?|rm(?:ers)?|s(?:hion|t))|e(?:dex|edback|rr(?:ari|ero))|i(?:at|d(?:elity|o)|lm|na(?:l|nc(?:e|ial))|r(?:e(?:stone)?|mdale)|sh(?:ing)?|t(?:ness)?)?|j|k|l(?:i(?:ckr|ghts|r)|o(?:rist|wers)|y)|m|o(?:o(?:d(?:network)?|tball)?|r(?:d|ex|sale|um)|undation|x)?|r(?:e(?:e|senius)|l|o(?:gans|nt(?:door|ier)))?|tr|u(?:jitsu|nd?|rniture|tbol)|yi)|g(?:a(?:l(?:l(?:ery|o|up))?|mes?|p|rden|y)?|b(?:iz)?|dn?|e(?:a|nt(?:ing)?|orge)?|f|g(?:ee)?|h|i(?:fts?|v(?:es|ing))?|l(?:ass|e|ob(?:al|o))?|m(?:ail|bh|o|x)?|n|o(?:daddy|l(?:d(?:point)?|f)|o(?:dyear|g(?:le)?)?|p|t|v)|p|q|r(?:a(?:inger|phics|tis)|een|ipe|o(?:cery|up))?|s|t|u(?:ardian|cci|ge|i(?:de|tars)|ru)?|w|y)|h(?:a(?:ir|mburg|ngout|us)|bo|dfc(?:bank)?|e(?:alth(?:care)?|l(?:p|sinki)|r(?:e|mes))|gtv|i(?:phop|samitsu|tachi|v)|kt?|m|n|o(?:ckey|l(?:dings|iday)|me(?:depot|goods|s(?:ense)?)|nda|rse|s(?:pital|t(?:ing)?)|t(?:el(?:es|s)|mail)?|use|w)|r|sbc|t|u(?:ghes)?|y(?:att|undai))|i(?:bm|c(?:bc|e|u)|d|e(?:ee)?|fm|kano|l|m(?:amat|db|mo(?:bilien)?)?|n(?:c|dustries|f(?:initi|o)|g|k|s(?:titute|ur(?:ance|e))|t(?:ernational|uit)?|vestments)?|o|piranga|q|r(?:ish)?|s(?:maili|t(?:anbul)?)?|t(?:au|v)?)|j(?:a(?:guar|va)|cb|e(?:ep|tzt|welry)?|io|ll|mp?|nj|o(?:b(?:s|urg)|t|y)?|p(?:morgan|rs)?|u(?:egos|niper))|k(?:aufen|ddi|e(?:rry(?:hotels|logistics|properties))?|fh|g|h|i(?:a|ds|m|nd(?:er|le)|tchen|wi)?|m|n|o(?:eln|matsu|sher)|p(?:mg|n)?|r(?:d|ed)?|uokgroup|w|y(?:oto)?|z)|l(?:a(?:caixa|m(?:borghini|er)|n(?:c(?:aster|ia)|d(?:rover)?|xess)|salle|t(?:ino|robe)?|w(?:yer)?)?|b|c|ds|e(?:ase|clerc|frak|g(?:al|o)|xus)|gbt|i(?:dl|fe(?:insurance|style)?|ghting|ke|lly|m(?:ited|o)|n(?:coln|de|k)|psy|v(?:e|ing))?|k|l[cp]|o(?:ans?|c(?:ker|us)|l|ndon|tt[eo]|ve)|pl(?:financial)?|r|s|t(?:da?)?|u(?:ndbeck|x(?:e|ury))?|v|y)|m(?:a(?:cys|drid|i(?:f|son)|keup|n(?:agement|go)?|p|r(?:ket(?:ing|s)?|riott|shalls)|serati|ttel)?|ba|c(?:kinsey)?|d|e(?:d(?:ia)?|et|lbourne|m(?:e|orial)|nu?|rckmsd)?|g|h|i(?:ami|crosoft|l|n[it]|t(?:subishi)?)|k|l[bs]?|ma?|n|o(?:bi(?:le)?|da|e|i|m|n(?:ash|ey|ster)|r(?:mon|tgage)|scow|to(?:rcycles)?|v(?:ie)?)?|p|q|r|sd?|t[nr]?|u(?:s(?:eum|ic)|tual)?|v|w|x|y|z)|n(?:a(?:b|goya|me|tura|vy)?|ba|c|e(?:c|t(?:bank|flix|work)?|ustar|ws?|x(?:t(?:direct)?|us))?|fl?|go?|hk|i(?:co|k(?:e|on)|nja|ssa[ny])?|l|o(?:kia|rt(?:hwesternmutual|on)|w(?:ruz|tv)?)?|p|r[aw]?|tt|u|yc|z)|o(?:b(?:i|server)|ffice|kinawa|l(?:ayan(?:group)?|dnavy|lo)|m(?:ega)?|n(?:e|g|l(?:ine)?)|oo|pen|r(?:a(?:cle|nge)|g(?:anic)?|igins)|saka|t(?:suka|t)|vh)|p(?:a(?:ge|nasonic|r(?:is|s|t(?:ners|s|y))|ssagens|y)?|ccw|et?|f(?:izer)?|g|h(?:armacy|d|ilips|o(?:ne|to(?:graphy|s)?)|ysio)?|i(?:c(?:s|t(?:et|ures))|d|n[gk]?|oneer|zza)|k|l(?:a(?:ce|y(?:station)?)|u(?:mbing|s))?|m|nc?|o(?:hl|ker|litie|rn|st)|r(?:a(?:merica|xi)|ess|ime|o(?:d(?:uctions)?|f|gressive|mo|pert(?:ies|y)|tection)?|u(?:dential)?)?|s|t|ub|wc?|y)|q(?:a|pon|ue(?:bec|st))|r(?:a(?:cing|dio)|e(?:a(?:d|l(?:estate|t(?:or|y)))|cipes|d(?:stone|umbrella)?|hab|i(?:sen?|t)|liance|n(?:t(?:als)?)?|p(?:air|ort|ublican)|st(?:aurant)?|views?|xroth)?|i(?:c(?:h(?:ardli)?|oh)|l|o|p)|o(?:c(?:her|ks)|deo|gers|om)?|s(?:vp)?|u(?:gby|hr|n)?|we?|yukyu)|s(?:a(?:arland|fe(?:ty)?|kura|l(?:e|on)|ms(?:club|ung)|n(?:dvik(?:coromant)?|ofi)|p|rl|s|ve|xo)?|b[is]?|c(?:a|b|h(?:aeffler|midt|o(?:larships|ol)|ule|warz)|ience|ot)?|d|e(?:a(?:rch|t)|cur(?:e|ity)|ek|lect|ner|rvices|ven|w|xy?)?|fr|g|h(?:a(?:ngrila|rp|w)|ell|i(?:a|ksha)|o(?:es|p(?:ping)?|uji|w(?:time)?))?|i(?:lk|n(?:a|gles)|te)?|j|k(?:in?|y(?:pe)?)?|l(?:ing)?|m(?:art|ile)?|n(?:cf)?|o(?:c(?:cer|ial)|ft(?:bank|ware)|hu|l(?:ar|utions)|n[gy]|y)?|p(?:a(?:ce)?|o(?:rt|t))|rl?|s|t(?:a(?:da|ples|r|te(?:bank|farm))|c(?:group)?|o(?:ckholm|r(?:age|e))|ream|ud(?:io|y)|yle)?|u(?:cks|pp(?:l(?:ies|y)|ort)|r(?:f|gery)|zuki)?|v|w(?:atch|iss)|x|y(?:dney|stems)?|z)|t(?:a(?:b|ipei|lk|obao|rget|t(?:a(?:motors|r)|too)|xi?)|ci?|dk?|e(?:am|ch(?:nology)?|l|masek|nnis|va)|f|g|h(?:d|eat(?:er|re))?|i(?:aa|ckets|enda|ffany|ps|r(?:es|ol))|j(?:maxx|x)?|k(?:maxx)?|l|m(?:all)?|n|o(?:day|kyo|ols|p|ray|shiba|tal|urs|wn|y(?:ota|s))?|r(?:a(?:d(?:e|ing)|ining|vel(?:channel|ers(?:insurance)?)?)|ust|v)?|t|u(?:be|i|nes|shu)|vs?|w|z)|u(?:a|b(?:ank|s)|g|k|n(?:i(?:com|versity)|o)|ol|ps|s|y|z)|v(?:a(?:cations|n(?:a|guard))?|c|e(?:gas|ntures|r(?:isign|sicherung)|t)?|g|i(?:ajes|deo|g|king|llas|n|p|rgin|s(?:a|ion)|v[ao])?|laanderen|n|o(?:dka|l(?:kswagen|vo)|t(?:e|ing|o)|yage)|u(?:elos)?)|w(?:a(?:l(?:es|mart|ter)|ng(?:gou)?|tch(?:es)?)|e(?:ather(?:channel)?|b(?:cam|er|site)|d(?:ding)?|i(?:bo|r))|f|hoswho|i(?:en|ki|lliamhill|n(?:dows|e|ners)?)|me|o(?:lterskluwer|odside|r(?:ks?|ld)|w)|s|t[cf])|x(?:box|erox|finity|i(?:huan|n)|xx|yz)|y(?:a(?:chts|hoo|maxun|ndex)|e|o(?:dobashi|ga|kohama|u(?:tube)?)|t|un)|z(?:a(?:ppos|ra)?|ero|ip|m|one|uerich|w)))(?::\\d{2,5})?(?:/(?:\\S*[^\\s\\.\\,\\;\\!\\?])?)?(?:\\?(?:\\S*[^\\s\\.\\,\\;\\!\\?]))?(?:\\#(?:\\S*[^\\s\\.\\,\\;\\!\\?])?)?)[\\.\\,\\;\\!\\?]?$`,W_e=`((?:(?:(?:https?:)?\\/\\/)?(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:a(?:a(?:a|rp)|b(?:arth|b(?:ott|vie)?|c|le|ogado|udhabi)|c(?:ademy|c(?:enture|ountants?)|o|tor)?|d(?:s|ult)?|e(?:g|ro|tna)?|f(?:l|rica)?|g(?:akhan|ency)?|i(?:g|r(?:bus|force|tel))?|kdn|l(?:faromeo|i(?:baba|pay)|l(?:finanz|state|y)|s(?:ace|tom))?|m(?:azon|e(?:rican(?:express|family)|x)|fam|ica|sterdam)?|n(?:alytics|droid|quan|z)|ol?|p(?:artments|p(?:le)?)|q(?:uarelle)?|r(?:a(?:b|mco)|chi|my|pa|te?)?|s(?:da|ia|sociates)?|t(?:hleta|torney)?|u(?:ction|di(?:ble|o)?|spost|t(?:hor|os?))?|vianca|ws?|xa?|z(?:ure)?)|b(?:a(?:by|idu|n(?:a(?:mex|narepublic)|d|k)|r(?:c(?:elona|lay(?:card|s))|efoot|gains)?|s(?:eball|ketball)|uhaus|yern)?|b(?:c|t|va)?|c[gn]|d|e(?:a(?:ts|uty)|er|ntley|rlin|st(?:buy)?|t)?|f|g|h(?:arti)?|i(?:ble|d|ke|ngo?|o|z)?|j|l(?:ack(?:friday)?|o(?:ckbuster|g|omberg)|ue)|m[sw]?|n(?:pparibas)?|o(?:ats|ehringer|fa|m|nd|o(?:k(?:ing)?)?|s(?:ch|t(?:ik|on))|t|utique|x)?|r(?:adesco|idgestone|o(?:adway|ker|ther)|ussels)?|s|t|u(?:ild(?:ers)?|siness|y|zz)|v|w|y|zh?)|c(?:a(?:b|fe|l(?:l|vinklein)?|m(?:era|p)?|non|p(?:etown|ital(?:one)?)|r(?:avan|ds|e(?:ers?)?|s)?|s(?:a|e|h|ino)|t(?:ering|holic)?)?|b(?:a|n|re|s)|c|d|e(?:nter|o|rn)|f[ad]?|g|h(?:a(?:n(?:el|nel)|rity|se|t)|eap|intai|r(?:istmas|ome)|urch)?|i(?:priani|rcle|sco|t(?:adel|ic?|y(?:eats)?))?|k|l(?:aims|eaning|i(?:ck|ni(?:c|que))|o(?:thing|ud)|ub(?:med)?)?|m|n|o(?:ach|des|ffee|l(?:lege|ogne)|m(?:cast|m(?:bank|unity)|p(?:a(?:ny|re)|uter)|sec)?|n(?:dos|s(?:truction|ulting)|t(?:act|ractors))|o(?:king(?:channel)?|l|p)|rsica|u(?:ntry|pons?|rses))?|pa|r(?:edit(?:card|union)?|icket|own|s|uises?)?|u(?:isinella)?|v|w|x|y(?:mru|ou)?|z)|d(?:a(?:bur|d|nce|t(?:a|e|ing|sun)|y)|clk|ds|e(?:al(?:er|s)?|gree|l(?:ivery|l|oitte|ta)|mocrat|nt(?:al|ist)|si(?:gn)?|v)?|hl|i(?:amonds|et|gital|rect(?:ory)?|s(?:co(?:unt|ver)|h)|y)|j|k|m|np|o(?:c(?:s|tor)|g|mains|t|wnload)?|rive|tv|u(?:bai|nlop|pont|rban)|v(?:ag|r)|z)|e(?:a(?:rth|t)|co?|d(?:eka|u(?:cation)?)|e|g|m(?:ail|erck)|n(?:ergy|gineer(?:ing)?|terprises)|pson|quipment|r(?:icsson|ni)?|s(?:q|tate)?|t(?:isalat)?|u(?:rovision|s)?|vents|x(?:change|p(?:ert|osed|ress)|traspace))|f(?:a(?:ge|i(?:l|rwinds|th)|mily|ns?|rm(?:ers)?|s(?:hion|t))|e(?:dex|edback|rr(?:ari|ero))|i(?:at|d(?:elity|o)|lm|na(?:l|nc(?:e|ial))|r(?:e(?:stone)?|mdale)|sh(?:ing)?|t(?:ness)?)?|j|k|l(?:i(?:ckr|ghts|r)|o(?:rist|wers)|y)|m|o(?:o(?:d(?:network)?|tball)?|r(?:d|ex|sale|um)|undation|x)?|r(?:e(?:e|senius)|l|o(?:gans|nt(?:door|ier)))?|tr|u(?:jitsu|nd?|rniture|tbol)|yi)|g(?:a(?:l(?:l(?:ery|o|up))?|mes?|p|rden|y)?|b(?:iz)?|dn?|e(?:a|nt(?:ing)?|orge)?|f|g(?:ee)?|h|i(?:fts?|v(?:es|ing))?|l(?:ass|e|ob(?:al|o))?|m(?:ail|bh|o|x)?|n|o(?:daddy|l(?:d(?:point)?|f)|o(?:dyear|g(?:le)?)?|p|t|v)|p|q|r(?:a(?:inger|phics|tis)|een|ipe|o(?:cery|up))?|s|t|u(?:ardian|cci|ge|i(?:de|tars)|ru)?|w|y)|h(?:a(?:ir|mburg|ngout|us)|bo|dfc(?:bank)?|e(?:alth(?:care)?|l(?:p|sinki)|r(?:e|mes))|gtv|i(?:phop|samitsu|tachi|v)|kt?|m|n|o(?:ckey|l(?:dings|iday)|me(?:depot|goods|s(?:ense)?)|nda|rse|s(?:pital|t(?:ing)?)|t(?:el(?:es|s)|mail)?|use|w)|r|sbc|t|u(?:ghes)?|y(?:att|undai))|i(?:bm|c(?:bc|e|u)|d|e(?:ee)?|fm|kano|l|m(?:amat|db|mo(?:bilien)?)?|n(?:c|dustries|f(?:initi|o)|g|k|s(?:titute|ur(?:ance|e))|t(?:ernational|uit)?|vestments)?|o|piranga|q|r(?:ish)?|s(?:maili|t(?:anbul)?)?|t(?:au|v)?)|j(?:a(?:guar|va)|cb|e(?:ep|tzt|welry)?|io|ll|mp?|nj|o(?:b(?:s|urg)|t|y)?|p(?:morgan|rs)?|u(?:egos|niper))|k(?:aufen|ddi|e(?:rry(?:hotels|logistics|properties))?|fh|g|h|i(?:a|ds|m|nd(?:er|le)|tchen|wi)?|m|n|o(?:eln|matsu|sher)|p(?:mg|n)?|r(?:d|ed)?|uokgroup|w|y(?:oto)?|z)|l(?:a(?:caixa|m(?:borghini|er)|n(?:c(?:aster|ia)|d(?:rover)?|xess)|salle|t(?:ino|robe)?|w(?:yer)?)?|b|c|ds|e(?:ase|clerc|frak|g(?:al|o)|xus)|gbt|i(?:dl|fe(?:insurance|style)?|ghting|ke|lly|m(?:ited|o)|n(?:coln|de|k)|psy|v(?:e|ing))?|k|l[cp]|o(?:ans?|c(?:ker|us)|l|ndon|tt[eo]|ve)|pl(?:financial)?|r|s|t(?:da?)?|u(?:ndbeck|x(?:e|ury))?|v|y)|m(?:a(?:cys|drid|i(?:f|son)|keup|n(?:agement|go)?|p|r(?:ket(?:ing|s)?|riott|shalls)|serati|ttel)?|ba|c(?:kinsey)?|d|e(?:d(?:ia)?|et|lbourne|m(?:e|orial)|nu?|rckmsd)?|g|h|i(?:ami|crosoft|l|n[it]|t(?:subishi)?)|k|l[bs]?|ma?|n|o(?:bi(?:le)?|da|e|i|m|n(?:ash|ey|ster)|r(?:mon|tgage)|scow|to(?:rcycles)?|v(?:ie)?)?|p|q|r|sd?|t[nr]?|u(?:s(?:eum|ic)|tual)?|v|w|x|y|z)|n(?:a(?:b|goya|me|tura|vy)?|ba|c|e(?:c|t(?:bank|flix|work)?|ustar|ws?|x(?:t(?:direct)?|us))?|fl?|go?|hk|i(?:co|k(?:e|on)|nja|ssa[ny])?|l|o(?:kia|rt(?:hwesternmutual|on)|w(?:ruz|tv)?)?|p|r[aw]?|tt|u|yc|z)|o(?:b(?:i|server)|ffice|kinawa|l(?:ayan(?:group)?|dnavy|lo)|m(?:ega)?|n(?:e|g|l(?:ine)?)|oo|pen|r(?:a(?:cle|nge)|g(?:anic)?|igins)|saka|t(?:suka|t)|vh)|p(?:a(?:ge|nasonic|r(?:is|s|t(?:ners|s|y))|ssagens|y)?|ccw|et?|f(?:izer)?|g|h(?:armacy|d|ilips|o(?:ne|to(?:graphy|s)?)|ysio)?|i(?:c(?:s|t(?:et|ures))|d|n[gk]?|oneer|zza)|k|l(?:a(?:ce|y(?:station)?)|u(?:mbing|s))?|m|nc?|o(?:hl|ker|litie|rn|st)|r(?:a(?:merica|xi)|ess|ime|o(?:d(?:uctions)?|f|gressive|mo|pert(?:ies|y)|tection)?|u(?:dential)?)?|s|t|ub|wc?|y)|q(?:a|pon|ue(?:bec|st))|r(?:a(?:cing|dio)|e(?:a(?:d|l(?:estate|t(?:or|y)))|cipes|d(?:stone|umbrella)?|hab|i(?:sen?|t)|liance|n(?:t(?:als)?)?|p(?:air|ort|ublican)|st(?:aurant)?|views?|xroth)?|i(?:c(?:h(?:ardli)?|oh)|l|o|p)|o(?:c(?:her|ks)|deo|gers|om)?|s(?:vp)?|u(?:gby|hr|n)?|we?|yukyu)|s(?:a(?:arland|fe(?:ty)?|kura|l(?:e|on)|ms(?:club|ung)|n(?:dvik(?:coromant)?|ofi)|p|rl|s|ve|xo)?|b[is]?|c(?:a|b|h(?:aeffler|midt|o(?:larships|ol)|ule|warz)|ience|ot)?|d|e(?:a(?:rch|t)|cur(?:e|ity)|ek|lect|ner|rvices|ven|w|xy?)?|fr|g|h(?:a(?:ngrila|rp|w)|ell|i(?:a|ksha)|o(?:es|p(?:ping)?|uji|w(?:time)?))?|i(?:lk|n(?:a|gles)|te)?|j|k(?:in?|y(?:pe)?)?|l(?:ing)?|m(?:art|ile)?|n(?:cf)?|o(?:c(?:cer|ial)|ft(?:bank|ware)|hu|l(?:ar|utions)|n[gy]|y)?|p(?:a(?:ce)?|o(?:rt|t))|rl?|s|t(?:a(?:da|ples|r|te(?:bank|farm))|c(?:group)?|o(?:ckholm|r(?:age|e))|ream|ud(?:io|y)|yle)?|u(?:cks|pp(?:l(?:ies|y)|ort)|r(?:f|gery)|zuki)?|v|w(?:atch|iss)|x|y(?:dney|stems)?|z)|t(?:a(?:b|ipei|lk|obao|rget|t(?:a(?:motors|r)|too)|xi?)|ci?|dk?|e(?:am|ch(?:nology)?|l|masek|nnis|va)|f|g|h(?:d|eat(?:er|re))?|i(?:aa|ckets|enda|ffany|ps|r(?:es|ol))|j(?:maxx|x)?|k(?:maxx)?|l|m(?:all)?|n|o(?:day|kyo|ols|p|ray|shiba|tal|urs|wn|y(?:ota|s))?|r(?:a(?:d(?:e|ing)|ining|vel(?:channel|ers(?:insurance)?)?)|ust|v)?|t|u(?:be|i|nes|shu)|vs?|w|z)|u(?:a|b(?:ank|s)|g|k|n(?:i(?:com|versity)|o)|ol|ps|s|y|z)|v(?:a(?:cations|n(?:a|guard))?|c|e(?:gas|ntures|r(?:isign|sicherung)|t)?|g|i(?:ajes|deo|g|king|llas|n|p|rgin|s(?:a|ion)|v[ao])?|laanderen|n|o(?:dka|l(?:kswagen|vo)|t(?:e|ing|o)|yage)|u(?:elos)?)|w(?:a(?:l(?:es|mart|ter)|ng(?:gou)?|tch(?:es)?)|e(?:ather(?:channel)?|b(?:cam|er|site)|d(?:ding)?|i(?:bo|r))|f|hoswho|i(?:en|ki|lliamhill|n(?:dows|e|ners)?)|me|o(?:lterskluwer|odside|r(?:ks?|ld)|w)|s|t[cf])|x(?:box|erox|finity|i(?:huan|n)|xx|yz)|y(?:a(?:chts|hoo|maxun|ndex)|e|o(?:dobashi|ga|kohama|u(?:tube)?)|t|un)|z(?:a(?:ppos|ra)?|ero|ip|m|one|uerich|w)))(?::\\d{2,5})?(?:/(?:\\S*[^\\s\\.\\,\\;\\!\\?])?)?(?:\\?(?:\\S*[^\\s\\.\\,\\;\\!\\?]))?(?:\\#(?:\\S*[^\\s\\.\\,\\;\\!\\?])?)?)[\\.\\,\\;\\!\\?]?\\s$`,G_e=`((?:(?:(?:https?:)?\\/\\/)?(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:a(?:a(?:a|rp)|b(?:arth|b(?:ott|vie)?|c|le|ogado|udhabi)|c(?:ademy|c(?:enture|ountants?)|o|tor)?|d(?:s|ult)?|e(?:g|ro|tna)?|f(?:l|rica)?|g(?:akhan|ency)?|i(?:g|r(?:bus|force|tel))?|kdn|l(?:faromeo|i(?:baba|pay)|l(?:finanz|state|y)|s(?:ace|tom))?|m(?:azon|e(?:rican(?:express|family)|x)|fam|ica|sterdam)?|n(?:alytics|droid|quan|z)|ol?|p(?:artments|p(?:le)?)|q(?:uarelle)?|r(?:a(?:b|mco)|chi|my|pa|te?)?|s(?:da|ia|sociates)?|t(?:hleta|torney)?|u(?:ction|di(?:ble|o)?|spost|t(?:hor|os?))?|vianca|ws?|xa?|z(?:ure)?)|b(?:a(?:by|idu|n(?:a(?:mex|narepublic)|d|k)|r(?:c(?:elona|lay(?:card|s))|efoot|gains)?|s(?:eball|ketball)|uhaus|yern)?|b(?:c|t|va)?|c[gn]|d|e(?:a(?:ts|uty)|er|ntley|rlin|st(?:buy)?|t)?|f|g|h(?:arti)?|i(?:ble|d|ke|ngo?|o|z)?|j|l(?:ack(?:friday)?|o(?:ckbuster|g|omberg)|ue)|m[sw]?|n(?:pparibas)?|o(?:ats|ehringer|fa|m|nd|o(?:k(?:ing)?)?|s(?:ch|t(?:ik|on))|t|utique|x)?|r(?:adesco|idgestone|o(?:adway|ker|ther)|ussels)?|s|t|u(?:ild(?:ers)?|siness|y|zz)|v|w|y|zh?)|c(?:a(?:b|fe|l(?:l|vinklein)?|m(?:era|p)?|non|p(?:etown|ital(?:one)?)|r(?:avan|ds|e(?:ers?)?|s)?|s(?:a|e|h|ino)|t(?:ering|holic)?)?|b(?:a|n|re|s)|c|d|e(?:nter|o|rn)|f[ad]?|g|h(?:a(?:n(?:el|nel)|rity|se|t)|eap|intai|r(?:istmas|ome)|urch)?|i(?:priani|rcle|sco|t(?:adel|ic?|y(?:eats)?))?|k|l(?:aims|eaning|i(?:ck|ni(?:c|que))|o(?:thing|ud)|ub(?:med)?)?|m|n|o(?:ach|des|ffee|l(?:lege|ogne)|m(?:cast|m(?:bank|unity)|p(?:a(?:ny|re)|uter)|sec)?|n(?:dos|s(?:truction|ulting)|t(?:act|ractors))|o(?:king(?:channel)?|l|p)|rsica|u(?:ntry|pons?|rses))?|pa|r(?:edit(?:card|union)?|icket|own|s|uises?)?|u(?:isinella)?|v|w|x|y(?:mru|ou)?|z)|d(?:a(?:bur|d|nce|t(?:a|e|ing|sun)|y)|clk|ds|e(?:al(?:er|s)?|gree|l(?:ivery|l|oitte|ta)|mocrat|nt(?:al|ist)|si(?:gn)?|v)?|hl|i(?:amonds|et|gital|rect(?:ory)?|s(?:co(?:unt|ver)|h)|y)|j|k|m|np|o(?:c(?:s|tor)|g|mains|t|wnload)?|rive|tv|u(?:bai|nlop|pont|rban)|v(?:ag|r)|z)|e(?:a(?:rth|t)|co?|d(?:eka|u(?:cation)?)|e|g|m(?:ail|erck)|n(?:ergy|gineer(?:ing)?|terprises)|pson|quipment|r(?:icsson|ni)?|s(?:q|tate)?|t(?:isalat)?|u(?:rovision|s)?|vents|x(?:change|p(?:ert|osed|ress)|traspace))|f(?:a(?:ge|i(?:l|rwinds|th)|mily|ns?|rm(?:ers)?|s(?:hion|t))|e(?:dex|edback|rr(?:ari|ero))|i(?:at|d(?:elity|o)|lm|na(?:l|nc(?:e|ial))|r(?:e(?:stone)?|mdale)|sh(?:ing)?|t(?:ness)?)?|j|k|l(?:i(?:ckr|ghts|r)|o(?:rist|wers)|y)|m|o(?:o(?:d(?:network)?|tball)?|r(?:d|ex|sale|um)|undation|x)?|r(?:e(?:e|senius)|l|o(?:gans|nt(?:door|ier)))?|tr|u(?:jitsu|nd?|rniture|tbol)|yi)|g(?:a(?:l(?:l(?:ery|o|up))?|mes?|p|rden|y)?|b(?:iz)?|dn?|e(?:a|nt(?:ing)?|orge)?|f|g(?:ee)?|h|i(?:fts?|v(?:es|ing))?|l(?:ass|e|ob(?:al|o))?|m(?:ail|bh|o|x)?|n|o(?:daddy|l(?:d(?:point)?|f)|o(?:dyear|g(?:le)?)?|p|t|v)|p|q|r(?:a(?:inger|phics|tis)|een|ipe|o(?:cery|up))?|s|t|u(?:ardian|cci|ge|i(?:de|tars)|ru)?|w|y)|h(?:a(?:ir|mburg|ngout|us)|bo|dfc(?:bank)?|e(?:alth(?:care)?|l(?:p|sinki)|r(?:e|mes))|gtv|i(?:phop|samitsu|tachi|v)|kt?|m|n|o(?:ckey|l(?:dings|iday)|me(?:depot|goods|s(?:ense)?)|nda|rse|s(?:pital|t(?:ing)?)|t(?:el(?:es|s)|mail)?|use|w)|r|sbc|t|u(?:ghes)?|y(?:att|undai))|i(?:bm|c(?:bc|e|u)|d|e(?:ee)?|fm|kano|l|m(?:amat|db|mo(?:bilien)?)?|n(?:c|dustries|f(?:initi|o)|g|k|s(?:titute|ur(?:ance|e))|t(?:ernational|uit)?|vestments)?|o|piranga|q|r(?:ish)?|s(?:maili|t(?:anbul)?)?|t(?:au|v)?)|j(?:a(?:guar|va)|cb|e(?:ep|tzt|welry)?|io|ll|mp?|nj|o(?:b(?:s|urg)|t|y)?|p(?:morgan|rs)?|u(?:egos|niper))|k(?:aufen|ddi|e(?:rry(?:hotels|logistics|properties))?|fh|g|h|i(?:a|ds|m|nd(?:er|le)|tchen|wi)?|m|n|o(?:eln|matsu|sher)|p(?:mg|n)?|r(?:d|ed)?|uokgroup|w|y(?:oto)?|z)|l(?:a(?:caixa|m(?:borghini|er)|n(?:c(?:aster|ia)|d(?:rover)?|xess)|salle|t(?:ino|robe)?|w(?:yer)?)?|b|c|ds|e(?:ase|clerc|frak|g(?:al|o)|xus)|gbt|i(?:dl|fe(?:insurance|style)?|ghting|ke|lly|m(?:ited|o)|n(?:coln|de|k)|psy|v(?:e|ing))?|k|l[cp]|o(?:ans?|c(?:ker|us)|l|ndon|tt[eo]|ve)|pl(?:financial)?|r|s|t(?:da?)?|u(?:ndbeck|x(?:e|ury))?|v|y)|m(?:a(?:cys|drid|i(?:f|son)|keup|n(?:agement|go)?|p|r(?:ket(?:ing|s)?|riott|shalls)|serati|ttel)?|ba|c(?:kinsey)?|d|e(?:d(?:ia)?|et|lbourne|m(?:e|orial)|nu?|rckmsd)?|g|h|i(?:ami|crosoft|l|n[it]|t(?:subishi)?)|k|l[bs]?|ma?|n|o(?:bi(?:le)?|da|e|i|m|n(?:ash|ey|ster)|r(?:mon|tgage)|scow|to(?:rcycles)?|v(?:ie)?)?|p|q|r|sd?|t[nr]?|u(?:s(?:eum|ic)|tual)?|v|w|x|y|z)|n(?:a(?:b|goya|me|tura|vy)?|ba|c|e(?:c|t(?:bank|flix|work)?|ustar|ws?|x(?:t(?:direct)?|us))?|fl?|go?|hk|i(?:co|k(?:e|on)|nja|ssa[ny])?|l|o(?:kia|rt(?:hwesternmutual|on)|w(?:ruz|tv)?)?|p|r[aw]?|tt|u|yc|z)|o(?:b(?:i|server)|ffice|kinawa|l(?:ayan(?:group)?|dnavy|lo)|m(?:ega)?|n(?:e|g|l(?:ine)?)|oo|pen|r(?:a(?:cle|nge)|g(?:anic)?|igins)|saka|t(?:suka|t)|vh)|p(?:a(?:ge|nasonic|r(?:is|s|t(?:ners|s|y))|ssagens|y)?|ccw|et?|f(?:izer)?|g|h(?:armacy|d|ilips|o(?:ne|to(?:graphy|s)?)|ysio)?|i(?:c(?:s|t(?:et|ures))|d|n[gk]?|oneer|zza)|k|l(?:a(?:ce|y(?:station)?)|u(?:mbing|s))?|m|nc?|o(?:hl|ker|litie|rn|st)|r(?:a(?:merica|xi)|ess|ime|o(?:d(?:uctions)?|f|gressive|mo|pert(?:ies|y)|tection)?|u(?:dential)?)?|s|t|ub|wc?|y)|q(?:a|pon|ue(?:bec|st))|r(?:a(?:cing|dio)|e(?:a(?:d|l(?:estate|t(?:or|y)))|cipes|d(?:stone|umbrella)?|hab|i(?:sen?|t)|liance|n(?:t(?:als)?)?|p(?:air|ort|ublican)|st(?:aurant)?|views?|xroth)?|i(?:c(?:h(?:ardli)?|oh)|l|o|p)|o(?:c(?:her|ks)|deo|gers|om)?|s(?:vp)?|u(?:gby|hr|n)?|we?|yukyu)|s(?:a(?:arland|fe(?:ty)?|kura|l(?:e|on)|ms(?:club|ung)|n(?:dvik(?:coromant)?|ofi)|p|rl|s|ve|xo)?|b[is]?|c(?:a|b|h(?:aeffler|midt|o(?:larships|ol)|ule|warz)|ience|ot)?|d|e(?:a(?:rch|t)|cur(?:e|ity)|ek|lect|ner|rvices|ven|w|xy?)?|fr|g|h(?:a(?:ngrila|rp|w)|ell|i(?:a|ksha)|o(?:es|p(?:ping)?|uji|w(?:time)?))?|i(?:lk|n(?:a|gles)|te)?|j|k(?:in?|y(?:pe)?)?|l(?:ing)?|m(?:art|ile)?|n(?:cf)?|o(?:c(?:cer|ial)|ft(?:bank|ware)|hu|l(?:ar|utions)|n[gy]|y)?|p(?:a(?:ce)?|o(?:rt|t))|rl?|s|t(?:a(?:da|ples|r|te(?:bank|farm))|c(?:group)?|o(?:ckholm|r(?:age|e))|ream|ud(?:io|y)|yle)?|u(?:cks|pp(?:l(?:ies|y)|ort)|r(?:f|gery)|zuki)?|v|w(?:atch|iss)|x|y(?:dney|stems)?|z)|t(?:a(?:b|ipei|lk|obao|rget|t(?:a(?:motors|r)|too)|xi?)|ci?|dk?|e(?:am|ch(?:nology)?|l|masek|nnis|va)|f|g|h(?:d|eat(?:er|re))?|i(?:aa|ckets|enda|ffany|ps|r(?:es|ol))|j(?:maxx|x)?|k(?:maxx)?|l|m(?:all)?|n|o(?:day|kyo|ols|p|ray|shiba|tal|urs|wn|y(?:ota|s))?|r(?:a(?:d(?:e|ing)|ining|vel(?:channel|ers(?:insurance)?)?)|ust|v)?|t|u(?:be|i|nes|shu)|vs?|w|z)|u(?:a|b(?:ank|s)|g|k|n(?:i(?:com|versity)|o)|ol|ps|s|y|z)|v(?:a(?:cations|n(?:a|guard))?|c|e(?:gas|ntures|r(?:isign|sicherung)|t)?|g|i(?:ajes|deo|g|king|llas|n|p|rgin|s(?:a|ion)|v[ao])?|laanderen|n|o(?:dka|l(?:kswagen|vo)|t(?:e|ing|o)|yage)|u(?:elos)?)|w(?:a(?:l(?:es|mart|ter)|ng(?:gou)?|tch(?:es)?)|e(?:ather(?:channel)?|b(?:cam|er|site)|d(?:ding)?|i(?:bo|r))|f|hoswho|i(?:en|ki|lliamhill|n(?:dows|e|ners)?)|me|o(?:lterskluwer|odside|r(?:ks?|ld)|w)|s|t[cf])|x(?:box|erox|finity|i(?:huan|n)|xx|yz)|y(?:a(?:chts|hoo|maxun|ndex)|e|o(?:dobashi|ga|kohama|u(?:tube)?)|t|un)|z(?:a(?:ppos|ra)?|ero|ip|m|one|uerich|w)))(?::\\d{2,5})?(?:/(?:\\S*[^\\s\\.\\,\\;\\!\\?])?)?(?:\\?(?:\\S*[^\\s\\.\\,\\;\\!\\?]))?(?:\\#(?:\\S*[^\\s\\.\\,\\;\\!\\?])?)?)(?=[\\.\\,\\;\\!\\?]|\\s|$)`,K_e=new RegExp(U_e,`gi`),q_e=new RegExp(W_e,`gi`),J_e=new RegExp(G_e,`gi`)})),X_e=o((()=>{Y_e()}));function Z_e(e){let{$from:t,$to:n,to:r}=e.selection;if(IC&&t.sameParent(n)){let t=Kx.widget(r,Q_e,{ignoreSelection:!0,key:`safari-ime-span`});return Yx.create(e.doc,[t])}}function Q_e(e){let t=e.dom.ownerDocument.createElement(`span`);return t.className=`ProseMirror-safari-ime-span`,t}var NC,PC,$_e,eve,tve,nve,FC,IC,rve,ive,ave=o((()=>{hy(),Yfe(),NC=typeof navigator<`u`?navigator:null,PC=NC&&NC.userAgent||``,$_e=/Edge\/(\d+)/.exec(PC),eve=/MSIE \d/.exec(PC),tve=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(PC),nve=!(eve||tve||$_e)&&!!NC&&/Apple Computer/.test(NC.vendor),FC=new my(`safari-ime-span`),IC=!1,rve={key:FC,props:{decorations:Z_e,handleDOMEvents:{compositionstart:()=>{IC=!0},compositionend:()=>{IC=!1}}}},ive=new fy(nve?rve:{key:FC})}));function LC(e,t=0,n=3){if(e.nodeName===`INPUT`&&e.getAttribute(`type`)===`checkbox`)return e;if(!(t>0&&[`UL`,`OL`,`LI`].includes(e.nodeName))&&!(t>=n))for(let r of e.children){let e=LC(r,t+1,n);if(e)return e}}function RC(e){if(e==null)return null;let t=Number.parseInt(e,10);return Number.isInteger(t)?t:null}function ove(){return[{tag:`div[data-list-kind]`,getAttrs:e=>typeof e==`string`?{}:{kind:e.getAttribute(`data-list-kind`)||`bullet`,order:RC(e.getAttribute(`data-list-order`)),checked:e.hasAttribute(`data-list-checked`),collapsed:e.hasAttribute(`data-list-collapsed`)}},{tag:`div[data-list]`,getAttrs:e=>typeof e==`string`?{}:{kind:e.getAttribute(`data-list-kind`)||`bullet`,order:RC(e.getAttribute(`data-list-order`)),checked:e.hasAttribute(`data-list-checked`),collapsed:e.hasAttribute(`data-list-collapsed`)}},{tag:`ul > li`,getAttrs:e=>{if(typeof e!=`string`){let t=LC(e);if(t)return{kind:`task`,checked:t.hasAttribute(`checked`)};if(e.hasAttribute(`data-task-list-item`)||e.getAttribute(`data-list-kind`)===`task`)return{kind:`task`,checked:e.hasAttribute(`data-list-checked`)||e.hasAttribute(`data-checked`)};if(e.hasAttribute(`data-toggle-list-item`)||e.getAttribute(`data-list-kind`)===`toggle`)return{kind:`toggle`,collapsed:e.hasAttribute(`data-list-collapsed`)};if(e.firstChild?.nodeType===3){let t=e.firstChild.textContent;if(t&&/^\[[\sx|]]\s{1,2}/.test(t))return e.firstChild.textContent=t.replace(/^\[[\sx|]]\s{1,2}/,``),{kind:`task`,checked:t.startsWith(`[x]`)}}}return{kind:`bullet`}}},{tag:`ol > li`,getAttrs:e=>typeof e==`string`?{kind:`ordered`}:{kind:`ordered`,order:RC(e.getAttribute(`data-list-order`))}},{tag:`:is(ul, ol) > :is(ul, ol)`,getAttrs:()=>({kind:`bullet`})}]}function zC(e){let{node:t,nativeList:n=!1,getMarkers:r=sve,getAttributes:i=cve}=e,a=t.attrs,o=t.firstChild?.type===t.type?null:r(t),s=i(t),c=[`div`,{class:`list-content`},0],l=o&&[`div`,{class:`list-marker list-marker-click-target`,contenteditable:`false`},...o];if(n){let e=a.kind===`ordered`?`ol`:`ul`;return l?[e,[`li`,s,l,c]]:[e,[`li`,s,0]]}return l?[`div`,s,l,c]:[`div`,s,c]}function sve(e){let t=e.attrs;switch(t.kind){case`task`:return[[`label`,[`input`,{type:`checkbox`,checked:t.checked?``:void 0}]]];case`toggle`:return[];default:return null}}function cve(e){let t=e.attrs;return{class:`prosemirror-flat-list`,"data-list-kind":e.firstChild?.type===e.type?void 0:t.kind||`bullet`,"data-list-order":t.order==null?void 0:String(t.order),"data-list-checked":t.checked?``:void 0,"data-list-collapsed":t.collapsed?``:void 0,"data-list-collapsable":e.childCount>=2?``:void 0,style:t.order==null?void 0:`--prosemirror-flat-list-order: ${t.order};`}}function lve(){return{content:`block+`,group:`${oye} block`,definingForContent:!0,definingAsContext:!1,attrs:{kind:{default:`bullet`},order:{default:null},checked:{default:!1},collapsed:{default:!1}},toDOM:e=>zC({node:e}),parseDOM:ove()}}function uve(e){let t=e.cached[aw];if(!t){for(let n of Object.values(e.nodes))if((n.spec.group||``).split(` `).includes(`flatList`)){t=n.name;break}if(!t)throw TypeError(`[prosemirror-flat-list] Unable to find a flat list type in the schema`);return e.cached[aw]=t,t}return t}function dve(e){return uve(e.schema)===e.name}function BC(e){return e?dve(e.type):!1}function VC(e){return t=>(n,r,i)=>t(n,r?t=>r(e(t)):void 0,i)}function*fve(e){let t=[],n=0;for(;;){for(;nt.push(r,i))}yield t}}function pve(e,t,n){let r=new Set,i=[];for(let a of e){let e=t.resolve(a);for(let t=e.depth;t>=0;t--){let a=e.before(t+1);if(r.has(a))break;r.add(a);let o=e.index(t),s=e.node(t),c=s.maybeChild(o-1);if(!c)continue;let l=s.maybeChild(o);l&&n(c,l,s,o)&&i.push(a)}}return i.sort((e,t)=>t-e)}function mve(e,t){return BC(e)&&BC(t)&&BC(t.firstChild)}function hve(e,t,n,r){return!!(r===1&&BC(n)&&BC(e)&&!BC(t))}function gve(e){let t=fve(e),n=pve(t.next().value,e.doc,mve);for(let t of n)sv(e.doc,t)&&e.join(t);let r=pve(t.next().value,e.doc,hve);for(let t of r)ov(e.doc,t)&&e.split(t);return e}function _ve(e,t){for(let n=t;n<=e.depth;n++)if(!e.node(n).isTextblock&&e.index(n)!==0)return!1;return!0}function vve(e,t){for(let n=t;n<=e.depth;n++)if(!e.node(n).isTextblock&&e.index(n)!==e.node(n).childCount-1)return!1;return!0}function HC(e){return e.nodes[uve(e)]}function UC(e,t=e){if(t.pos{if(ni?t:o.resolve(i+1)).blockRange(n.posr?s:null}function qC(e){return!!(BC(e)&&e.attrs.collapsed)}function JC(e,t,n,r){let i=!1;for(let a of Object.keys(r))r[a]!==n[a]&&(e.setNodeAttribute(t,a,r[a]),i=!0);return i}function xve(e,t,n){let r=e.doc.resolve(t).nodeAfter;if(r&&BC(r)){let i=r.attrs;return JC(e,t,i,{...i,...n})}return!1}function Sve(e,t){for(let n=t;n<=e.depth;n++)if(qC(e.node(n))&&e.index(n)>=1){let t=e.posAtIndex(1,n),r=e.doc.resolve(t);return Qv.near(r,-1)}return null}function Cve(e){let{$from:t,$to:n,to:r}=e.selection,i=Sve(t,0)||Sve(n,t.sharedDepth(r));return i&&e.setSelection(i),e}function wve(e,t){for(let n=t;n<=e.depth;n++)if(qC(e.node(n))&&e.index(n)>=1)return e.before(n);return null}function Tve(e){let{$from:t,$to:n,to:r}=e.selection,i=wve(t,0)??wve(n,t.sharedDepth(r));return i!=null&&(e.doc.resolve(i),xve(e,i,{collapsed:!1})),e}function YC(e){return sw(ow((t,n)=>{let r=t.tr,i=UC(e?.from==null?r.selection.$from:r.doc.resolve(e.from),e?.to==null?r.selection.$to:r.doc.resolve(e.to));return i&&XC(i,r)?(n?.(r),!0):!1}))}function XC(e,t,n,r){let{depth:i,$from:a,$to:o}=e;if(n||=_ve(a,i+1),!n){let{startIndex:n,endIndex:r}=e;if(r-n===1){let n=KC(e);return n?XC(n,t):!1}return Eve(e,t,n+1)}if(r||=vve(o,i+1),!r){kve(e,t);let n=o.end(i);return e=new k_(t.doc.resolve(a.pos),t.doc.resolve(n),i),XC(e,t,void 0,!0)}return e.startIndex===0&&e.endIndex===e.parent.childCount&&BC(e.parent)?ZC(new k_(a,o,i-1),t):ZC(e,t)}function Eve(e,t,n){let{$from:r,$to:i,depth:a}=e,o=r.posAtIndex(n,a),s=r.blockRange(t.doc.resolve(o-1));if(!s)return!1;let c=WC(t,o+1),l=WC(t,i.pos);XC(s,t,void 0,!0);let u=t.doc.resolve(c()).blockRange(t.doc.resolve(l()));return u&&u.depth>=a&&(u=new k_(u.$from,u.$to,a),XC(u,t,!0,void 0)),!0}function ZC(e,t){return BC(e.parent)?Dve(t,e):yve(e)?Ave(t,e):Dve(t,e)}function Dve(e,t){return Ove(e,t)&&(t=new k_(e.doc.resolve(t.$from.pos),e.doc.resolve(t.$to.pos),t.depth)),GC(e,t)}function Ove(e,t){let n=HC(e.doc.type.schema),{$to:r,depth:i,end:a,parent:o,endIndex:s}=t,c=r.end(i);if(a=2&&(e=new k_(e.$to.doc.resolve(e.$to.posAtIndex(e.endIndex-1,e.depth)),e.$to,e.depth));let n=KC(e);n&&(kve(n,t),e=new k_(t.doc.resolve(e.$from.pos),t.doc.resolve(e.$to.pos),e.depth)),Ove(t,e)}function Ave(e,t){let{startIndex:n,endIndex:r,parent:i}=t,a=WC(e,t.start),o=WC(e,t.end);for(let t=o(),a=r-1;a>n;a--)t-=i.child(a).nodeSize,e.delete(t-1,t+1);let s=e.doc.resolve(a()),c=s.nodeAfter;if(!c)return!1;let l=t.start,u=l+c.nodeSize;return o()!==u||!s.parent.canReplace(n,n+1,b_.from(c))?!1:(e.step(new Fv(l,u,l+1,u-1,new w_(b_.empty,0,0),0,!0)),!0)}function jve(e){for(let t=e.depth;t>=0;t--){let n=e.node(t);if(BC(n)&&n.attrs.collapsed)return!0}return!1}function QC(e){return sw(ow((t,n)=>{let r=t.tr,i=e?.from==null?r.selection.$from:r.doc.resolve(e.from),a=e?.to==null?r.selection.$to:r.doc.resolve(e.to),o=UC(i,a)||i.blockRange(a);return o&&$C(o,r)?(n?.(r),!0):!1}))}function $C(e,t,n,r){let{depth:i,$from:a,$to:o}=e;if(n||=_ve(a,i+1),!n){let{startIndex:n,endIndex:r}=e;if(r-n===1){let n=KC(e);return n?$C(n,t):!1}return Mve(e,t,n+1)}if(r||=vve(o,i+1),!r&&!jve(o)){let{startIndex:n,endIndex:r}=e;if(r-n===1){let n=KC(e);return n?$C(n,t):!1}return Mve(e,t,r-1)}return Nve(e,t)}function Mve(e,t,n){let{$from:r,$to:i,depth:a}=e,o=r.posAtIndex(n,a),s=r.blockRange(t.doc.resolve(o-1));if(!s)return!1;let c=WC(t,o+1),l=WC(t,i.pos);$C(s,t,void 0,!0);let u=t.doc.resolve(c()).blockRange(t.doc.resolve(l()));return u&&$C(u,t,!0,void 0),!0}function Nve(e,t){let n=HC(t.doc.type.schema),{parent:r,startIndex:i}=e,a=i>=1&&r.child(i-1);if(a&&BC(a)){let{start:r,end:i}=e;return t.step(new Fv(r-1,i,r,i,new w_(b_.from(n.create(null)),1,0),0,!0)),!0}let o=BC(r),s=BC(r.maybeChild(i));if(i===0&&o||s){let{start:a,end:c}=e,l=s?r.child(i).attrs:o?r.attrs:null;return t.step(new Fv(a,c,a,c,new w_(b_.from(n.create(l)),0,0),1,!0)),!0}return!1}function Pve(e,t){let{$cursor:n}=e.selection;return!n||(t?!t.endOfTextblock(`backward`,e):n.parentOffset>0)?null:n}function Fve(e,t,n){let r=t.nodeBefore,i=t.pos-1;for(;!r.isTextblock;i--){if(r.type.spec.isolating)return!1;let e=r.lastChild;if(!e)return!1;r=e}let a=t.nodeAfter,o=t.pos+1;for(;!a.isTextblock;o++){if(a.type.spec.isolating)return!1;let e=a.firstChild;if(!e)return!1;a=e}let s=lv(e.doc,i,o,w_.empty);return!s||s.from!=i||s instanceof Pv&&s.slice.size>=o-i?!1:(n&&(e.step(s),e.setSelection(Qv.create(e.doc,i)),n(e.scrollIntoView())),!0)}function Ive(e){if(!e.parent.type.spec.isolating)for(let t=e.depth-1;t>=0;t--){if(e.index(t)>0)return e.doc.resolve(e.before(t+1));if(e.node(t).type.spec.isolating)break}return null}function Lve(e,t,n){let r=e.tr,i=n.depth-1;GC(r,new k_(n,r.doc.resolve(n.end(i)),i))&&t(r)}function Rve(e,t,n){let r=e.tr,i=n.blockRange();i&&GC(r,i)&&t(r)}function zve(e,t,n,r){let i=e.createAndFill(t,n,r);if(!i)throw RangeError(`Failed to create '${e.name}' node`);return i.check(),i}function Bve(e){return!!e.node}function Vve(e){return Bve(e)&&e.node.type.isBlock}function Hve(e){return!!(e&&e instanceof Qv)}function Uve(){return ow(ES(dye,fye))}function Wve(e){return{kind:e.attrs.kind}}function Gve(e,t,n){let r=e.tr,i=t.type,a=t.attrs,o=Wve(t);r.delete(r.selection.from,r.selection.to);let{$from:s,$to:c}=r.selection,{parentOffset:l}=c,u=l==0,d=l==c.parent.content.size;if(u){if(n){let e=s.before(-1);r.insert(e,zve(i,o)),n(r.scrollIntoView())}return!0}if(d&&a.collapsed){if(n){let e=s.after(-1);r.insert(e,zve(i,o)),r.setSelection(Yv.near(r.doc.resolve(e))),n(r.scrollIntoView())}return!0}let f=d?t.contentMatchAt(0).defaultType:void 0,p=[{type:i,attrs:o},f?{type:f}:null];return ov(r.doc,s.pos,2,p)?(n?.(r.split(s.pos,2,p).scrollIntoView()),!0):!1}function ew(e,t,n){return e.cutByIndex(t,n)}function Kve(e){return ow((t,n)=>{let r=t.tr;return tw(r,e,!0,!!n)?(n?.(r),!0):!1})}function tw(e,t,n,r){let{$from:i,$to:a}=e.selection,o=UC(i,a);if(!o)return!1;let{parent:s,depth:c,startIndex:l,endIndex:u}=o;if(t===`up`)if(l>=2||l===1&&BC(s.child(0))){let t=ew(s.content,l-1,l),n=ew(s.content,l,u);return s.canReplace(l-1,u,n.append(t))?(r&&(e.insert(i.posAtIndex(u,c),t),e.delete(i.posAtIndex(l-1,c),i.posAtIndex(l,c))),!0):!1}else if(n&&BC(s))return GC(e,o)&&tw(e,t,!1,r);else return!1;if(u{let{$from:i}=e.selection;for(let a=i.depth;a>=0;a--){let o=i.node(a);if(BC(o)&&n(o)){if(r){let n=i.before(a),s=o.attrs,c=e.tr;c.setNodeAttribute(n,`collapsed`,t??!s.collapsed),r(Cve(c))}return!0}}return!1}}function Jve(e){return e.attrs.kind===`toggle`&&e.childCount>=2&&!BC(e.firstChild)}function Yve(e){let t=e?.kind;return(e,n)=>{let r=e.selection;if(Bve(r)&&nw(r.node,t)){if(n){let t=e.tr;bve(t,t.selection.from+1,t.selection.to-1),n(t.scrollIntoView())}return!0}let i=r.$from.blockRange(r.$to);if(i&&Xve(i,t)){let t=e.tr;if(Ave(t,i))return n?.(t),!0}if(i&&nw(i.parent,t)){if(n){let t=e.tr;bve(t,i.$from.start(i.depth),i.$to.end(i.depth)),n(t.scrollIntoView())}return!0}return!1}}function nw(e,t){return BC(e)?!t||e.attrs.kind===t:!1}function Xve(e,t){let{startIndex:n,endIndex:r,parent:i}=e;for(let e=n;e{let{$from:r,$to:i}=t.selection,a=r.blockRange(i);if(!a)return!1;Qve(a)&&BC(a.parent)&&a.depth>0&&a.startIndex===0&&(a=new k_(r,i,a.depth-1));let o=typeof e==`function`?e(a):e;if(!o)return!1;let{parent:s,startIndex:c,endIndex:l,depth:u}=a,d=t.tr,f=HC(t.schema);for(let e=l-1;e>=c;e--){let t=s.child(e);if(BC(t)){let n=t.attrs,i={...n,...o};JC(d,r.posAtIndex(e,u),n,i)}else{let t=r.posAtIndex(e,u),n=r.posAtIndex(e+1,u),i=t+1,a=n-1;i>a&&([i,a]=[a,i]);let s=new k_(d.doc.resolve(i),d.doc.resolve(a),u),c=nv(s,f,o);c&&d.wrap(s,c)}}return n?.(d),!0}}function Qve(e){let{parent:t,startIndex:n,endIndex:r}=e;for(let e=n;ee.dispatch(t))):!1}function tye(e,t){return sye((n,r)=>{let i=n.tr,a=i.doc.resolve(e),o=a.parent;if(!BC(o))return!1;let s=a.before(a.depth),c=t(o);return JC(i,s,o.attrs,c)&&r?.(i),!0})}function rw(e,t){return new DC(e,(e,n,r,i)=>{let a=e.tr;a.deleteRange(r,i);let o=a.selection.$from,s=o.index(-1)===0&&o.node(-1);if(s&&BC(s)){let e=s.attrs,r=typeof t==`function`?t({match:n,attributes:e}):t,i=Object.entries(r).filter(([t,n])=>e[t]!==n);if(i.length===0)return null;{let e=o.before(-1);for(let[t,n]of i)a.setNodeAttribute(e,t,n);return a}}let c=a.doc.resolve(r).blockRange();if(!c)return null;let l=typeof t==`function`?t({match:n}):t,u=nv(c,HC(e.schema),l);return u?a.wrap(c,u):null})}function iw(e){for(let t=0;t=2&&e.openEnd>=2&&e.content.childCount===1&&BC(e.content.child(0));)e=new w_(e.content.child(0).content,e.openStart-1,e.openEnd-1);return e}function rye(){return new fy({props:{handleDOMEvents:{mousedown:(e,t)=>eye({view:e,event:t})}}})}function iye(){return new fy({props:{nodeViews:{list:bye}}})}function aye(){return ive}var oye,aw,ow,sye,sw,cye,lye,uye,cw,dye,fye,pye,mye,hye,lw,uw,gye,_ye,vye,yye,bye,xye=o((()=>{X_(),Vv(),hy(),hme(),Dge(),ave(),oye=`flatList`,aw=`PROSEMIRROR_FLAT_LIST_TYPE_NAME`,ow=VC(gve),sye=VC(Cve),sw=VC(Tve),cye=ES(jS,MS,PS),lye=(e,t,n)=>{let r=Pve(e,n);if(!r)return!1;let i=Ive(r);if(!i)return!1;let{nodeBefore:a,nodeAfter:o}=i;if(a&&o&&BC(a)&&a.attrs.collapsed&&o.isBlock){let n=e.tr,r=i.pos-a.nodeSize;n.delete(i.pos,i.pos+o.nodeSize);let s=r+1+a.child(0).nodeSize;n.insert(s,o);let c=n.doc.resolve(s);if(n.setSelection(Qv.near(c)),Fve(n,c,t))return!0}return!1},uye=(e,t,n)=>{let r=Pve(e,n);if(!r)return!1;let{depth:i}=r;if(i<2)return!1;let a=i-1,o=r.node(a);if(!BC(o))return!1;let s=r.index(a);return s===0?(t&&Lve(e,t,r),!0):s===o.childCount-1&&(t&&Rve(e,t,r),!0)},cw=(e,t)=>{let n=e.tr,r=!1,{from:i,to:a}=e.selection;return e.doc.nodesBetween(i,a,(i,a,o,s)=>{if(r&&!t)return!1;if(o&&qC(o)&&s>=1){if(r=!0,!t)return!1;let i=e.doc.resolve(a);n.setNodeAttribute(i.before(i.depth),`collapsed`,!1)}}),r&&t?.(n),r},dye=(e,t)=>{if(!Vve(e.selection))return!1;let{$to:n,node:r}=e.selection,i=n.parent;if(BC(r)||!BC(i)||i.childCount!==1||i.firstChild!==r)return!1;let a=i.type,o=a.createAndFill(Wve(i));if(!o)return!1;if(t){let r=e.tr,i=n.pos;r.replace(i,i,new w_(b_.fromArray([a.create(),o]),1,1));let s=Qv.near(r.doc.resolve(i));Hve(s)&&(r.setSelection(s),t(r))}return!0},fye=(e,t)=>{if(Vve(e.selection))return!1;let{$from:n,$to:r}=e.selection;if(!n.sameParent(r)||n.depth<2)return!1;let i=n.depth-1,a=n.node(i);if(!BC(a))return!1;let o=n.parent,s=n.index(i),c=o.content.size===0;if(s===0)if(c){let r=e.doc.resolve(n.end(i)),a=i-1,o=n.node(a),s=n.index(a)===o.childCount-1?new k_(n,r,a):new k_(n,r,i),c=e.tr;return s&&ZC(s,c)?(t?.(c),!0):!1}else return Gve(e,a,t);return c?cye(e,t):!1},pye=ES(cw,Uve()),mye=ES(cw,DS,cme,AS),YC(),QC(),hye=e=>{let t=e.attrs;return t.kind===`task`?{...t,checked:!t.checked}:t.kind===`toggle`?{...t,collapsed:!t.collapsed}:t},rw(/^\s?([*-])\s$/,{kind:`bullet`,collapsed:!1}),rw(/^\s?(\d+)\.\s$/,({match:e})=>{let t=RC(e[1]);return{kind:`ordered`,collapsed:!1,order:t!=null&&t>=2?t:null}}),rw(/^\s?\[([\sXx]?)]\s$/,({match:e})=>({kind:`task`,checked:[`x`,`X`].includes(e[1]),collapsed:!1})),rw(/^\s?>>\s$/,{kind:`toggle`}),lw=typeof navigator<`u`?navigator:null,uw=lw&&lw.userAgent||``,gye=/Edge\/(\d+)/.exec(uw),_ye=/MSIE \d/.exec(uw),vye=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(uw),yye=!(_ye||vye||gye)&&!!lw&&/Apple Computer/.test(lw.vendor),bye=e=>{let t=e,n=e.firstChild?.type===e.type,r=e.childCount===1,i=e.type.spec.toDOM(e),{dom:a,contentDOM:o}=J_.renderSpec(document,i);return yye&&e.attrs.kind===`toggle`&&a.querySelector(`.list-marker-click-target`)?.appendChild(document.createElement(`span`)),{dom:a,contentDOM:o,update:e=>{if(!e.sameMarkup(t))return!1;let i=e.firstChild?.type===e.type,a=e.childCount===1;return n!==i||r!==a?!1:(t=e,!0)}}}}));function Sye(e){return iC({type:`list`,attrs:e})}function Cye(){return pC({dedentList:YC,indentList:QC,moveList:Kve,splitList:Uve,toggleCollapsed:qve,unwrapList:Yve,toggleList:$ve,wrapInList:Zve,insertList:Sye})}function wye(){return gC(Nye)}function Tye(){return new fy({props:{transformCopied:nye}})}function Eye(){return[rye(),iye(),Tye(),aye()]}function Dye(){return mhe(Eye)}function Oye(){return _he({serializeFragmentWrapper:e=>(...t)=>dw(iw(e(...t))),serializeNodeWrapper:e=>(...t)=>{let n=e(...t);return wy(n)?dw(iw(n)):n},nodesFromSchemaWrapper:e=>(...t)=>({...e(...t),list:e=>zC({node:e,nativeList:!0})})})}function dw(e){wy(e)&&kye(e);for(let t of e.children)dw(t);return e}function kye(e){if(!e.classList.contains(`prosemirror-flat-list`)||e.getAttribute(`data-list-kind`)!==`task`||e.children.length!==2)return;let t=e.children.item(0);if(!t||!t.classList.contains(`list-marker`))return;let n=LC(t);if(!n)return;let r=e.children.item(1);if(!r||!r.classList.contains(`list-content`))return;let i=r.children.item(0);!i||![`P`,`H1`,`H2`,`H3`,`H4`,`H5`,`H6`].includes(i.tagName)||(e.replaceChildren(...r.children),i.prepend(n))}function Aye(e){let t=e.attrs;switch(t.kind){case`task`:return[[`label`,[`input`,{type:`checkbox`,checked:t.checked?``:void 0}]]];default:return[]}}function jye(){return vC({...lve(),toDOM:e=>zC({node:e,getMarkers:Aye}),name:`list`})}var Mye,fw,pw,Nye,Pye=o((()=>{gy(),TC(),BS(),ky(),xye(),Mye=ES(cw,DS,uye,lye),fw=YC(),pw=QC(),Nye={Enter:pye,Backspace:Mye,Delete:mye,"Mod-]":pw,"Mod-[":fw,Tab:pw,"Shift-Tab":fw}})),Fye=o((()=>{Pye()}));function Iye(){return oC({type:`paragraph`})}function Lye(){return pC({setParagraph:Iye})}function Rye(){return gC({"Mod-Alt-0":Iye()})}function zye(){return vC({name:`paragraph`,content:`inline*`,group:`block`,parseDOM:[{tag:`p`}],toDOM(){return[`p`,0]}})}function Bye(){return dS(uC(zye(),4),Lye(),Rye())}var Vye=o((()=>{TC()})),Hye=o((()=>{Vye()}));function Uye(){return vC({name:`text`,group:`inline`})}var Wye=o((()=>{TC()})),Gye=o((()=>{Wye()}));function Kye(){return dS(i_e(),Uye(),Bye(),u_e(),__e(),jye(),Dye(),wye(),Cye(),Oye(),Bge(),Jge(),T_e(),t_e(),H_e())}function qye(){return Jye||=fS({extension:Kye()}).schema,Jye}var Jye,Yye=o((()=>{EC(),Uge(),Xge(),r_e(),o_e(),f_e(),b_e(),D_e(),X_e(),Fye(),Hye(),Gye()}));function mw(e,t=``){let n=String(e||``).trim();if(!n||/\s/.test(n)||gw(n)||/^https?:\/\/[^/?#]*%/i.test(n))return``;let r=n;try{for(let e=0;e<3;e++){let e=decodeURIComponent(r);if(e===r)break;r=e}}catch{return``}if(gw(r))return``;let i=_w(n),a=_w(r.replace(/\s+/g,``));if(a&&a!==i||i&&!hw.has(`${i}:`)||/^https?:/i.test(n)&&!/^https?:\/\//i.test(n))return``;try{let e=t?new URL(n,t):new URL(n);return hw.has(e.protocol)?e.protocol===`mailto:`?e.pathname?e.href:``:e.hostname&&!e.username&&!e.password?e.href:``:``}catch{return``}}var hw,gw,_w,vw=o((()=>{hw=new Set([`http:`,`https:`,`mailto:`]),gw=e=>/\\|[\p{Cc}\p{Cs}\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069\ufffe\uffff]/u.test(e),_w=e=>e.match(/^([a-z][a-z0-9+.-]*):/i)?.[1]?.toLowerCase()||``}));function Xye(e,{app_origin:t=bw,absolute:n=!1}={}){let r=String(e||``).trim();if(!r||r.startsWith(`//`))return null;let i;try{i=new URL(t)}catch{return null}let a=`${i.protocol}//${i.host}`,o=r===a||[`/`,`?`,`#`].some(e=>r.startsWith(a+e))?r.slice(a.length)||`/`:r;if(o.startsWith(`//`))return null;let s=mw(o,`${bw}/`);if(!s)return null;if(s.startsWith(`https://app.turath.io/`)){let e=s.slice(21);return e.startsWith(`//`)?null:n?s:e}return s.startsWith(`https://`)||s.startsWith(`mailto:`)?s:null}function yw(e,t){let n=Xye(e,t);return n?n.startsWith(`/`)||n.startsWith(`mailto:`)?{href:n,target:null,rel:null}:{href:n,target:`_blank`,rel:`noopener noreferrer`}:null}var bw,xw=o((()=>{vw(),bw=`https://app.turath.io`})),Zye=c({append_writing_capture:()=>Qye,convert_legacy_writing:()=>kw,decode_writing_doc:()=>Dw,empty_writing_doc:()=>ww,encode_writing_editor_doc:()=>Ow,escape_markdown_block_starts:()=>Pw,legacy_note_schema_id:()=>gbe,rewrite_writing_source_links:()=>Ew,writing_doc_from_text:()=>Tw,writing_export_text:()=>$ye,writing_label:()=>Sw,writing_markdown:()=>ebe,writing_plain_text:()=>Aw,writing_preview:()=>Cw,writing_schema_id:()=>Lw,writing_schema_version:()=>1});function Sw({title:e=``,text:t=``}){let n=Hc();return e||String(t).split(` `).find(Boolean)||n(1540)}function Cw({title:e=``,text:t=``,source_quote:n=``},r=0){let i=String(t).split(` `).map(e=>e.trim()).filter(Boolean);e||i.shift();let a=i.join(` `)||String(n||``).trim();return r&&a.length>r?`${a.slice(0,r-1)}…`:a}function ww(){return Fw({type:`doc`,content:[{type:`paragraph`}]})}function Tw(e=``){let t=String(e).replace(/\r\n?/g,` `).split(` `).map(e=>({type:`paragraph`,...e?{content:[{type:`text`,text:e}]}:{}}));return Fw({type:`doc`,content:t.length?t:[{type:`paragraph`}]})}function Qye(e,{quote:t=``,note:n=``,source_label:r=``,source_href:i=``}={},a=``){let o=Dw(e,a);if(o.read_only||o.status===`recovered`)throw Error(`cannot append to a read-only writing`);let s=String(t).trim(),c=String(n).trim(),l=String(r).trim(),u=yw(i);if(!s||!l||!u)throw TypeError(`invalid writing capture`);let d=[...o.editor_doc.content||[]];return d.length===1&&tbe(d[0])?d.length=0:d.length&&!tbe(d.at(-1))&&d.push({type:`paragraph`}),d.push({type:`blockquote`,content:Tw(s).doc.content},{type:`paragraph`,content:[{type:`text`,text:`— ${l}`,marks:[{type:`italic`},{type:`link`,attrs:u}]}]},...c?Tw(c).doc.content:[],{type:`paragraph`}),Ow({type:`doc`,content:d})}function Ew(e,t,n=``,r={}){let i=Dw(e,n);if(i.read_only||i.status===`recovered`)throw Error(`cannot rewrite a read-only writing`);let a=t instanceof Map?t:new Map(Object.entries(t||{})),o=new Set,s=structuredClone(i.editor_doc);return cbe(s,a,o,r),!o.size&&!r.absolute?{...i,rewritten:o}:{...Ow(s,r),rewritten:o}}function Dw(e,t=``,n={}){let r=e!=null,i=pbe(e);if(mbe(i))return{doc_json:i,editor_doc:Tw(t).doc,text:hbe(t),read_only:!0,status:`future`};let a=i?.kind===`pm_doc`&&i.schema_id===`turath-note-v1`,o=i?.kind===`pm_doc`&&i.schema_id===`turath-writing`&&i.version===1,s=i?.type===`doc`,c=o||a?i.doc:s?i:null;if(c)try{let e=Mw(c,n),t=Fw(e);return{doc_json:t,editor_doc:e,text:Aw(t),read_only:!1,status:o?`current`:`legacy`}}catch{}let l=Tw(t);return{doc_json:l,editor_doc:l.doc,text:Aw(l),read_only:!1,status:c||r?`recovered`:`plain`}}function Ow(e,t={}){let n=Mw(ube(e),t),r=Fw(n);return{doc_json:r,editor_doc:n,text:Aw(r),read_only:!1,status:`current`}}function kw({title:e=``,text:t=``,note:n=``,note_doc:r=null}={},i={}){let a=String(t||n||``),o=Dw(r,a,i),s=o.editor_doc,c=Aw(o.doc_json),l=Hc();[`current`,`legacy`].includes(o.status)&&Iw(a)&&Iw(a)!==Iw(c)&&(s={...s,content:[...s.content||[],{type:`blockquote`,content:[{type:`paragraph`,content:[{type:`text`,text:l(1568,[a])}]}]}]},s=Mw(s,i));let u=Fw(s);return{title:String(e||``).trim(),text:Aw(u),doc_json:u}}function Aw(e){return jw(e,e=>{let t=lS(e,{schema:qye()});return hbe(t.textBetween(0,t.content.size,` `,` `))})}function $ye(e){return jw(e,e=>Nw(e.content||[],!1).trimEnd())}function ebe(e){return jw(e,e=>Nw(e.content||[]).trimEnd())}function jw(e,t){let n=pbe(e),r=n?.kind===`pm_doc`?n.doc:n;if(!r?.type)return``;try{return t(r)}catch{return``}}function tbe(e){return e?.type===`paragraph`&&!e.content?.length}function Mw(e,t){let n=lS(dbe(e,t),{schema:qye()});return n.check(),n.toJSON()}function Nw(e,t=!0){let n=``,r=null,i=null,a=1;for(let o of e){let e=``,s=!1;if(o.type===`paragraph`||o.type===`heading`){let n=t?ibe(o.content||[]):rbe(o.content||[]);e=t&&o.type===`heading`?`${`#`.repeat(o.attrs?.level||2)} ${n}`:t?Pw(n):n}else if(o.type===`blockquote`)e=Nw(o.content||[],t).split(` `).map(e=>`> ${e}`).join(` `);else if(o.type===`list`){let n=o.attrs?.kind===`ordered`?`ordered`:`bullet`,c=Number(o.attrs?.order),l=n===`ordered`?c>=2?c:i===`ordered`?a:1:null;e=nbe(o,n===`ordered`?`${l}.`:t?`-`:`•`,t),s=r===`list`&&i===n,i=n,a=l==null?1:l+1}!e&&o.type!==`paragraph`||(n+=(n?s?` `:` `:``)+e,o.type!==`list`&&(i=null,a=1),r=o.type)}return n}function nbe(e,t,n){let r=Nw(e.content||[],n);if(!r)return t;let[i,...a]=r.split(` `);return`${t} ${i}${a.length?`\n${a.map(e=>e?` ${e}`:``).join(` `)}`:``}`}function rbe(e){return e.map(e=>e.type===`hardBreak`?` `:e.type===`text`?e.text:``).join(``)}function ibe(e){return e.map(e=>{if(e.type===`hardBreak`)return` `;if(e.type!==`text`)return``;let t=e.marks||[],n=t.some(e=>e.type===`code`),[,r,i,a]=n?[``,``,e.text,``]:e.text.match(/^(\s*)(.*?)(\s*)$/su);if(!i)return e.text;let o=n?abe(i):sbe(i);for(let e of t)e.type!==`code`&&(e.type===`bold`?o=`**${o}**`:e.type===`italic`?o=`*${o}*`:e.type===`link`&&(o=`[${o}](${obe(e.attrs?.href)})`));return`${r}${o}${a}`}).join(``)}function abe(e){let t=Math.max(0,...(e.match(/`+/g)||[]).map(e=>e.length)),n="`".repeat(t+1),r=e.startsWith("`")||e.endsWith("`")||e.startsWith(` `)&&e.endsWith(` `)&&/\S/u.test(e)?` `:``;return`${n}${r}${e}${r}${n}`}function obe(e){return`<${String(e||``).replaceAll(`&`,`&`)}>`}function sbe(e){return String(e||``).replaceAll(`&`,`&`).replace(/\\|`|\*|_|\[|\]|`\\${e}`)}function Pw(e){return e.replace(/^ (?= {3})/gm,` `).replace(/^( {0,3})\t/gm,`$1 `).replace(/^([ \t]*)([-+])(?= |[-])/gm,`$1\\$2`).replace(/^([ \t]*)(\d+)([.)]) /gm,`$1$2\\$3 `).replace(/^([ \t]*)([>#])/gm,`$1\\$2`).replace(/^([ \t]*)(~{3,})/gm,`$1\\$2`).replace(/^([ \t]*)(=+)([ \t]*)$/gm,`$1\\$2$3`)}function cbe(e,t,n,r){for(let i of e.marks||[]){if(i.type!==`link`)continue;let e=lbe(i.attrs?.href),a=e&&t.get(e);if(!a)continue;let o=yw(a,r);if(!o)throw TypeError(`invalid writing source link`);i.attrs=o,n.add(e)}for(let i of e.content||[])cbe(i,t,n,r)}function lbe(e){try{let t=new URL(String(e||``),`${bw}/`);return t.origin!==`https://app.turath.io`||!/^\/book\/\d+$/u.test(t.pathname)?null:t.searchParams.get(`anchor`)}catch{return null}}function ube(e){if(!e||typeof e!=`object`)return e;let t={...e};return e.type===`list`&&[`task`,`toggle`].includes(e.attrs?.kind)&&(t.attrs={...e.attrs,kind:`bullet`,order:null,checked:!1,collapsed:!1}),Array.isArray(e.content)&&(t.content=e.content.map(ube)),t}function dbe(e,t){if(!e||typeof e!=`object`||typeof e.type!=`string`)throw TypeError(`invalid PM node`);let n=e.type;if(n===`text`){if(typeof e.text!=`string`)throw TypeError(`invalid PM text`);let r=fbe(e.marks,t);return{type:n,text:e.text,...r.length?{marks:r}:{}}}if(!vbe.has(n)&&n!==`heading`&&n!==`list`)throw TypeError(`unsupported PM node: ${n}`);let r={type:n};if(n===`heading`){let t=Number(e.attrs?.level);if(!Number.isInteger(t)||t<1||t>6)throw TypeError(`unsupported heading level`);r.attrs={level:t}}if(n===`list`){let t=e.attrs?.kind||`bullet`;if(t!==`bullet`&&t!==`ordered`)throw TypeError(`unsupported list kind`);r.attrs={kind:t,order:t===`ordered`?Math.max(1,Number(e.attrs?.order)||1):null,checked:!1,collapsed:!1}}if(Array.isArray(e.content)&&(r.content=e.content.map(e=>dbe(e,t))),n===`doc`&&!r.content?.length&&(r.content=[{type:`paragraph`}]),_be.has(n)&&e.marks?.length)throw TypeError(`block marks are unsupported`);return r}function fbe(e,t){if(!Array.isArray(e))return[];let n=[];for(let r of e){let e=typeof r==`string`?r:r?.type;if(ybe.has(e)){n.some(t=>t.type===e)||n.push({type:e});continue}if(e!==`link`)throw TypeError(`unsupported PM mark: ${e}`);let i=yw(r?.attrs?.href,t);i&&!n.some(e=>e.type===`link`)&&n.push({type:`link`,attrs:i})}return n}function Fw(e){return{kind:`pm_doc`,schema_id:Lw,version:1,doc:e}}function pbe(e){if(typeof e!=`string`)return e;try{return JSON.parse(e)}catch{return null}}function mbe(e){return e?.kind===`pm_doc`&&e.schema_id===`turath-writing`&&Number(e.version)>1}function hbe(e){return String(e||``).replace(/[ \t]+\n/g,` `).replace(/\n[ \t]+/g,` `).replace(/\n{3,}/g,` `).trim()}function Iw(e){return String(e||``).replace(/\s+/g,` `).trim()}var Lw,gbe,_be,vbe,ybe,Rw=o((()=>{EC(),Yye(),xw(),Uc(),Lw=`turath-writing`,gbe=`turath-note-v1`,_be=new Set([`paragraph`,`heading`,`blockquote`,`list`]),vbe=new Set([`doc`,`paragraph`,`blockquote`,`hardBreak`]),ybe=new Set([`bold`,`italic`,`code`])}));function bbe(){return Obe||=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]}function xbe(){return kbe||=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey]}function Sbe(e){let t=new Promise((t,n)=>{let r=()=>{e.removeEventListener(`success`,i),e.removeEventListener(`error`,a)},i=()=>{t(zw(e.result)),r()},a=()=>{n(e.error),r()};e.addEventListener(`success`,i),e.addEventListener(`error`,a)});return t.then(t=>{t instanceof IDBCursor&&Bw.set(t,e)}).catch(()=>{}),Ww.set(t,e),t}function Cbe(e){if(Vw.has(e))return;let t=new Promise((t,n)=>{let r=()=>{e.removeEventListener(`complete`,i),e.removeEventListener(`error`,a),e.removeEventListener(`abort`,a)},i=()=>{t(),r()},a=()=>{n(e.error||new DOMException(`AbortError`,`AbortError`)),r()};e.addEventListener(`complete`,i),e.addEventListener(`error`,a),e.addEventListener(`abort`,a)});Vw.set(e,t)}function wbe(e){Gw=e(Gw)}function Tbe(e){return e===IDBDatabase.prototype.transaction&&!(`objectStoreNames`in IDBTransaction.prototype)?function(t,...n){let r=e.call(Kw(this),t,...n);return Hw.set(r,t.sort?t.sort():[t]),zw(r)}:xbe().includes(e)?function(...t){return e.apply(Kw(this),t),zw(Bw.get(this))}:function(...t){return zw(e.apply(Kw(this),t))}}function Ebe(e){return typeof e==`function`?Tbe(e):(e instanceof IDBTransaction&&Cbe(e),Dbe(e,bbe())?new Proxy(e,Gw):e)}function zw(e){if(e instanceof IDBRequest)return Sbe(e);if(Uw.has(e))return Uw.get(e);let t=Ebe(e);return t!==e&&(Uw.set(e,t),Ww.set(t,e)),t}var Dbe,Obe,kbe,Bw,Vw,Hw,Uw,Ww,Gw,Kw,Abe=o((()=>{Dbe=(e,t)=>t.some(t=>e instanceof t),Bw=new WeakMap,Vw=new WeakMap,Hw=new WeakMap,Uw=new WeakMap,Ww=new WeakMap,Gw={get(e,t,n){if(e instanceof IDBTransaction){if(t===`done`)return Vw.get(e);if(t===`objectStoreNames`)return e.objectStoreNames||Hw.get(e);if(t===`store`)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return zw(e[t])},set(e,t,n){return e[t]=n,!0},has(e,t){return e instanceof IDBTransaction&&(t===`done`||t===`store`)||t in e}},Kw=e=>Ww.get(e)})),jbe=c({deleteDB:()=>qw,openDB:()=>Mbe,unwrap:()=>Kw,wrap:()=>zw});function Mbe(e,t,{blocked:n,upgrade:r,blocking:i,terminated:a}={}){let o=indexedDB.open(e,t),s=zw(o);return r&&o.addEventListener(`upgradeneeded`,e=>{r(zw(o.result),e.oldVersion,e.newVersion,zw(o.transaction),e)}),n&&o.addEventListener(`blocked`,e=>n(e.oldVersion,e.newVersion,e)),s.then(e=>{a&&e.addEventListener(`close`,()=>a()),i&&e.addEventListener(`versionchange`,e=>i(e.oldVersion,e.newVersion,e))}).catch(()=>{}),s}function qw(e,{blocked:t}={}){let n=indexedDB.deleteDatabase(e);return t&&n.addEventListener(`blocked`,e=>t(e.oldVersion,e)),zw(n).then(()=>void 0)}function Nbe(e,t){if(!(e instanceof IDBDatabase&&!(t in e)&&typeof t==`string`))return;if(Jw.get(t))return Jw.get(t);let n=t.replace(/FromIndex$/,``),r=t!==n,i=Fbe.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||Pbe.includes(n)))return;let a=async function(e,...t){let a=this.transaction(e,i?`readwrite`:`readonly`),o=a.store;return r&&(o=o.index(t.shift())),(await Promise.all([o[n](...t),i&&a.done]))[0]};return Jw.set(t,a),a}var Pbe,Fbe,Jw,Ibe=o((()=>{Abe(),Pbe=[`get`,`getKey`,`getAll`,`getAllKeys`,`count`],Fbe=[`put`,`add`,`delete`,`clear`],Jw=new Map,wbe(e=>({...e,get:(t,n,r)=>Nbe(t,n)||e.get(t,n,r),has:(t,n)=>!!Nbe(t,n)||e.has(t,n)}))})),Lbe=c({migrate_from_idb:()=>Kbe});function Rbe(e){return e?.objectStoreNames?.contains?.(`main`)}async function zbe(e,t){t(`idb.open.start`,{name:e});let n=!1,r=!1,i=Mbe(e,void 0,{upgrade(e,t){t===0&&(n=!0)},blocked(){r=!0,t(`idb.open.blocked`,{name:e})},blocking(){t(`idb.open.blocking`,{name:e})},terminated(){t(`idb.open.terminated`,{name:e})}}),a;try{if(a=await Promise.race([i,new Promise(e=>setTimeout(()=>e(null),Xw))]),!a)return i.then(e=>e?.close?.()).catch(()=>{}),t(`idb.open.timeout`,{name:e,timeout_ms:Xw,blocked:r}),{db:null,status:r?`blocked`:`timeout`}}catch(n){return t(`idb.open.error`,{name:e,error:n}),{db:null,status:`error`}}return!a||n||!Rbe(a)?(a?.close?.(),n?(await qw(e).catch(()=>{}),t(`idb.open.created_and_deleted`,{name:e})):t(`idb.open.no_main_store`,{name:e}),{db:null,status:`missing`}):(t(`idb.open.done`,{name:e,has_main_store:!0}),{db:a,status:`open`})}async function Bbe(e,t){if(!e||!Rbe(e))return null;try{let n=await e.get(`main`,`state`)||null;return t(`idb.state.read`,{name:Yw,has_state:!!n,data_version:n?.data_version,patch_version:n?.patch_version}),n}catch(e){return t(`idb.state.error`,{name:Yw,error:e}),null}}function Vbe(e){qw(Yw).then(()=>e(`idb.delete_old_db.done`,{name:Yw})).catch(()=>{})}async function Hbe(e,t,n,r,i,a){for(let o=1;o<=2;o++){let s;try{s=e.transaction(t);let a=n==null?void 0:IDBKeyRange.lowerBound(n,!0),o=await s.store.openCursor(a),c=[],l=0,u=n;for(;o&&l{}),a(`idb.cursor.error`,{store_name:t,attempt:o,start_key:n,error:e}),o===2)throw e}}}async function Ube(e,t,n,r){if(!e?.objectStoreNames?.contains?.(n)){r(`idb.store.skip`,{store_name:n,reason:`missing_store`});return}let i=0,a=null;for(;;){let o=await Hbe(e,n,a,Jbe,e=>e,r);if(o.rows.length&&await t.upsert_catalog_records(n,o.rows),i+=o.rows.length,a=o.next_key,o.scanned&&r(`idb.store.chunk`,{store_name:n,rows:o.rows.length,scanned:o.scanned,total:i}),!o.scanned||o.exhausted)break}r(`idb.store.done`,{store_name:n,rows:i})}function Wbe(e,t){let n=e&&typeof e==`object`&&!Array.isArray(e)?e:{text:e},[r,i]=(typeof t==`string`?t.split(`,`):Array.isArray(t)?t:[]).map(Number);return{...n,book_id:+(n.book_id||r||0),pg:+(n.pg||i||0)}}async function Gbe(e,t,n){if(!e?.objectStoreNames?.contains?.(`pages`)){n(`idb.pages.skip`,{reason:`missing_store`});return}let r=0,i=0,a=null;for(;;){let o=await Hbe(e,`pages`,a,qbe,(e,t)=>{let n=Wbe(e,t);return n.book_id&&n.pg?n:(i++,null)},n);if(o.rows.length&&await t.put_pages(o.rows),r+=o.rows.length,a=o.next_key,o.scanned&&n(`idb.pages.chunk`,{rows:o.rows.length,scanned:o.scanned,total:r,skipped:i}),!o.scanned||o.exhausted)break}n(`idb.pages.done`,{rows:r,skipped:i})}async function Kbe(e,t=()=>{}){let n=(e,n={})=>t(`db.idb_migration.${e}`,n),r=await zbe(Yw,n),i=r.db,a=r.status===`missing`,o=!a;if(n(`detected`,{had_old_db:o}),a)return{had_old_db:!1,migrated:!1,status:`no_old_db`};if($w(`idb_migration.detected`,{had_old_db:o}),!i){let e=[`blocked`,`timeout`,`error`].includes(r.status)?r.status:`unavailable`;return $w(`idb_migration.deferred`,{had_old_db:!0,status:e}),{had_old_db:!0,migrated:!1,status:e}}let s=!1,c,l=Zw();try{n(`copy.start`,{});let t=await Bbe(i,n);t?(await e.set_kv(`state`,cm(t)),n(`state.migrated`,{has_state:!0})):n(`state.migrated`,{has_state:!1});for(let t of[`books`,`authors`,`cats`,...Ybe])await Ube(i,e,t,n);await Gbe(i,e,n),n(`copy.done`,{}),s=!0}catch(e){c=e,n(`error`,{error:e}),$w(`idb_migration.error`,{error:e,ms:Zw()-l})}finally{i?.close?.(),s&&window.desktop?.is_electron&&Vbe(n)}return c?{had_old_db:!0,migrated:!1,status:`error`}:($w(`idb_migration.done`,{had_old_db:!0,migrated:!0,status:`migrated`,ms:Zw()-l}),{had_old_db:!0,migrated:!0,status:`migrated`})}var Yw,Xw,qbe,Jbe,Ybe,Zw,Xbe=o((()=>{Ibe(),lm(),UT(),Yw=`turath-app-v3`,Xw=15e3,qbe=300,Jbe=300,Ybe=[`book-indexes`,`book-meta`,`author-bios`],Zw=()=>typeof performance<`u`?Math.round(performance.now()):Date.now()}));function Zbe(e){return e?.name===`BootReloadAbort`}function Qw(){return typeof performance<`u`?Math.round(performance.now()):Date.now()}function Qbe(){if(typeof window>`u`)return!1;if(window.__DEBUG__||window.__BOOT_DEBUG__)return!0;try{return new URL(location.href).searchParams.get(`boot_debug`)===`1`}catch{return!1}}function $be(){typeof window>`u`||(Array.isArray(window._boot_logs)||(window._boot_logs=[]),!window._boot_debug&&(window._boot_debug={enable(){window.__BOOT_DEBUG__=!0,console.info(`[turath:boot] enabled`)},disable(){window.__BOOT_DEBUG__=!1,console.info(`[turath:boot] disabled`)},clear(){window._boot_logs=[],console.info(`[turath:boot] logs cleared`)},logs(){return[...window._boot_logs||[]]}}))}function exe(e){if(!e?.error)return e;let t=e.error;return{...e,error:{name:t?.result?.errorClass||t?.name,message:t?.result?.message||t?.message||String(t),code:t?.result?.code||t?.code,operation:t?.result?.operation||t?.sqlite?.operation,stack:t?.stack}}}function txe(e,t){if(typeof window>`u`)return;let n={category:`turath.boot`,level:t?.error||e.endsWith(`.error`)?`error`:`info`,message:e,data:{boot_session_id:window.__TURATH_BOOT__?.boot_id||Jxe,...t}};try{window.Sentry?.addBreadcrumb?.(n),window.Sentry?.setTag?.(`turath_boot_stage`,e)}catch{}}function $w(e,t={}){if(!globalThis.window?.desktop?.is_electron)return;let n=exe(t);if(!(!n?.error&&!e.endsWith(`.error`)))try{window.Sentry?.captureMessage?.(`turath.boot.${e}`,{level:n?.error?`error`:`info`,tags:{turath_boot_event:e,turath_boot_stage:e,turath_platform:`electron`,...n?.status?{turath_status:String(n.status)}:{},...n?.reason?{turath_reason:String(n.reason)}:{},...n?.store_name?{turath_store_name:String(n.store_name)}:{}},extra:n})}catch{}}function eT(e,t={}){try{dg(e,t)}catch{}let n=exe(t);if(txe(e,n),typeof window>`u`)return;$be();let r=window._boot_logs,i={ms:Qw(),at:new Date().toISOString(),event:e,...n};r.push(i),r.length>Bxe&&r.shift(),window.__TURATH_BOOT__?.observe?.(i),Qbe()&&console.info(`[turath:boot]`,i)}function tT(e,t,n={}){try{dg(e,{...n,error:t})}catch{}eT(e,{...n,...Qh(t),failure_class:rg(t)})}function nxe(e,t,n){let r,i=new Promise((e,i)=>{r=setTimeout(()=>i(Error(`${n} timed out after ${t}ms`)),t)});return Promise.race([e,i]).catch(e=>{throw rT(e)}).finally(()=>clearTimeout(r))}function rxe(e){let t=e?`closing`:`closed`,n=Error(`Database is ${t}`);return n.code=`DATABASE_${t.toUpperCase()}`,n}function nT(e){return e?.code===`DATABASE_CLOSING`||e?.code===`DATABASE_CLOSED`}function rT(e){if(e instanceof Error)return e;let t=e?.result,n=Error(t?.message||e?.message||String(e));return t?.errorClass&&(n.name=t.errorClass),(e?.code||t?.code)&&(n.code=e?.code||t.code),n.sqlite={error_class:t?.errorClass,operation:t?.operation,db_id:e?.dbId},n.cause=e,n}async function iT(e,t){try{return await e}catch(e){let n=rT(e);throw t&&tue(n,t),n}}function ixe(e){return typeof window<`u`&&!window.desktop?.is_electron&&e===`opfs_file`}function aT(){try{sessionStorage.removeItem(jT)}catch{}}function axe(){let e;try{e=JSON.parse(sessionStorage.getItem(jT)||`null`)}catch{return aT(),null}return e?e.reason!==`web_open_timeout`||!Number.isFinite(+e.at)||Date.now()-+e.at>Vxe?(aT(),null):e:null}function oxe(e){let t=axe();if(t)return eT(`db.sqlite.open.timeout_reload.already_used`,{...e,open_timeout_reload_already_used:!0,guard_age_ms:Date.now()-t.at}),!1;try{sessionStorage.setItem(jT,JSON.stringify({reason:`web_open_timeout`,at:Date.now()}))}catch{}eT(`db.sqlite.open.timeout_reload.start`,{...e,reloaded_after_open_timeout:!0});try{window.__TURATH_BOOT__?.redirect?.(`sqlite_open_timeout`),location.reload()}catch{}throw new BT(`web_open_timeout_reload`)}function sxe(e,t){let n=e?.message||String(e);return/SQLITE_BUSY|database is locked/i.test(n)?`locked`:ixe(t)&&/Sqlite\.open timed out/i.test(n)?`web_open_timeout`:null}async function cxe(e,t={}){return typeof document>`u`||document.visibilityState===`visible`?!1:(eT(`${e}.wait_visible`,{...t,visibility_state:document.visibilityState}),await new Promise(e=>{let t=()=>{document.visibilityState===`visible`&&(document.removeEventListener(`visibilitychange`,t),e())};document.addEventListener(`visibilitychange`,t),t()}),eT(`${e}.visible`,t),!0)}async function lxe(e,t,{wait_for_visibility:n=!0}={}){n&&await cxe(`db.sqlite.open`,bT({path_kind:t}));let r=[250,1e3,2500],i=0;for(;;){let n=Qw();eT(`db.sqlite.open.start`,{...bT({path_kind:t}),target:e.path===yT()?`app`:`other`});try{let{databaseId:r}=await nxe(iT(Rg.open(e)),Lxe,`Sqlite.open`);if(eT(`db.sqlite.open.done`,{...bT({path_kind:t}),ms:Qw()-n}),ixe(t)){let e=axe();e&&(eT(`db.sqlite.open.recovered_after_reload`,{...bT({path_kind:t}),guard_age_ms:Date.now()-e.at}),aT())}return r}catch(e){let a=sxe(e,t),o=a===`locked`?r[i++]??null:null,s={...bT({path_kind:t}),error:e,ms:Qw()-n,retry_reason:a,retry_delay_ms:o};if(eT(`db.sqlite.open.error`,s),await lg(),a===`web_open_timeout`&&oxe(s),o==null)throw $w(`sqlite.open.error`,s),e;await new Promise(e=>setTimeout(e,o))}}}async function oT(e,t,{atomic_web:n=!1}={}){let r=e._execute.bind(e),i=e._query.bind(e);if(!n)return t(r,i);let a=mh(`sqlite_transaction`,{phase:`write_batch`,warning_ms:100,critical_ms:500});try{if(typeof Rg.beginTransaction!=`function`){await r(`BEGIN TRANSACTION`);try{let e=await t(r,i);return await r(`COMMIT TRANSACTION`),e}catch(e){throw await r(`ROLLBACK TRANSACTION`).catch(()=>{}),rT(e)}}await iT(Rg.beginTransaction({databaseId:e.database_id}),`BEGIN`);try{let n=await t(r,i);return await iT(Rg.commitTransaction({databaseId:e.database_id}),`COMMIT`),n}catch(t){throw await iT(Rg.rollbackTransaction({databaseId:e.database_id}),`ROLLBACK`).catch(()=>{}),rT(t)}}catch(e){throw a.fail(),e}finally{a.finish()}}function sT(e,t,{admission:n,...r}={}){let i=r.atomic_web?`transaction`:`write_batch`;return e._queue_write(i,()=>oT(e,t,r),n)}function uxe(e,t,n){if(e!==`book-indexes`){let e=[];for(let r=0;r=n||a+t>Ixe)&&(r.push({rows:i,start:o}),o+=i.length,i=[],a=0),i.push(e),a+=t}return i.length&&r.push({rows:i,start:o}),r}async function cT(e,t,n,r,i,{transaction:a=!0,signal:o,admission:s}={}){let c=Qw(),l=TT,u=uxe(t,n,l),d=async e=>{for(let{rows:n,start:r}of u){o?.throwIfAborted();let a=Qw(),{statement:s,values:c}=i(n);await e(s,c),eT(`db.put_many.chunk`,{store_name:t,start:r,rows:n.length,ms:Qw()-a})}},f={store_name:t,rows:n.length,batch_size:l,chunks:u.length,mode:r};eT(`db.put_many.start`,f);try{a?await sT(e,d,{admission:s}):await d(e._execute.bind(e))}catch(e){let t={...f,error:e,ms:Qw()-c};throw eT(`db.put_many.error`,t),$w(`db.put_many.error`,t),e}eT(`db.put_many.done`,{...f,ms:Qw()-c})}async function lT(e,t){let n=(await e(`SELECT value FROM kv WHERE key = ?`,[String(t)])).values[0];return n?mT(n.value):void 0}function uT(e,t,n){return e(`INSERT OR REPLACE INTO kv(key, value) VALUES(?, ?)`,[String(t),pT(n)])}function dxe(e){let t=e._query.bind(e),n=e._execute.bind(e);return{query:t,execute:n,get_kv:e=>lT(t,e),set_kv:(e,t)=>uT(n,e,t),write_batch:(t,n={})=>oT(e,t,n),upsert_chunks:(t,n,r,i)=>oT(e,()=>cT(e,t,n,r,i,{transaction:!1}))}}function fxe(e,t,n){let r=Object.create(e),i=new Set;return r._direct_mode=!0,r.query=n,r.execute=t,r.get_kv=e=>lT(n,e),r.set_kv=(e,n)=>uT(t,e,n),r._run_atomic_write=e=>e(t,n),r.with_transaction=e=>e(r),r.create_highlight=async e=>{let t={...e};return delete t.id,+(await n(`INSERT INTO highlights(book_id, pg, json) VALUES(?, ?, ?) RETURNING id`,[+e.book_id,+e.pg,pT(t)])).values[0].id},r.with_exclusive=e=>e(r),r.mark_page_fts_dirty=e=>{for(let t of Array.isArray(e)?e:[e])+t&&i.add(+t)},r.put_pages=async e=>{e?.length&&(await cT(r,`pages`,e,`batched_pages`,dT,{transaction:!1}),await r.mark_page_fts_dirty(e.map(e=>e.book_id)))},r.replace_book_content=async(e,n)=>{let i=+e,a=n.pages?.map((e,t)=>({...e,book_id:i,pg:t+1}));if(!i||!a?.length)throw Error(`replace_book_content requires book pages`);await t(`INSERT OR REPLACE INTO book_indexes(book_id, json) VALUES(?, ?)`,[i,pT(vT(`book-indexes`,n.indexes,i))]),await t(`INSERT OR REPLACE INTO book_meta(book_id, json) VALUES(?, ?)`,[i,pT(vT(`book-meta`,n.meta,i))]),await t(`DELETE FROM pages WHERE book_id = ?`,[i]),await cT(r,`pages`,a,`replace_book_pages`,dT,{transaction:!1}),await r.mark_page_fts_dirty(i)},r.delete_pages_for_book=async(e,n=1,i=null)=>{i==null?await t(`DELETE FROM pages WHERE book_id = ?`,[+e]):await t(`DELETE FROM pages WHERE book_id = ? AND pg >= ? AND pg <= ?`,[+e,+n,+i]),await r.mark_page_fts_dirty(e)},r.flush_page_fts_dirty=async()=>{i.size&&(await e._mark_page_fts_dirty([...i],r),i.clear())},r}function pxe(e,t,n,r){let i=[];for(let t of r){let n=_T(e,t);if(!n)throw Error(`Missing key for catalog dataset: ${e}`);i.push(n,pT(vT(e,t,n)))}return{statement:`INSERT OR REPLACE INTO ${t}(${n}, json) VALUES ${r.map(()=>`(?, ?)`).join(`, `)}`,values:i}}function dT(e){let t=[];for(let n of e){let e=+(n?.book_id||0),r=+(n?.pg||0);if(!e||!r)throw eT(`db.pages.put.invalid`,{store_name:`pages`,has_book_id:!!e,has_pg:!!r,book_id:e,pg:r,keys:n&&typeof n==`object`?Object.keys(n).slice(0,30):[],route:globalThis.location?.pathname}),Error(`put_pages requires book_id and pg`);t.push(e,r,pT(n))}return{statement:`INSERT OR REPLACE INTO pages(book_id, pg, json) VALUES ${e.map(()=>`(?, ?, ?)`).join(`, `)}`,values:t}}async function mxe(e,t){for(let n of t)await e(`DELETE FROM ${n}`)}async function hxe(e){await e(`DELETE FROM pages`),await e(`INSERT OR REPLACE INTO kv(key, value) VALUES(?, ?)`,[OT,pT([])]),await e(`DROP TABLE IF EXISTS pages_fts`)}function fT(e,t){return+e*DT+ +t}function gxe(e,t,n){if(!e.raw_filter)return{sql:``,values:[]};if(n)return{sql:`AND sqlite_tokenizer_ar_matches_normalized(json_extract(pages.json, '$.text'), ?, ?) = 1`,values:[JSON.stringify(e.raw_terms),+t==3?`phrase`:`all`]};let r=+t==3?[e.raw_terms.join(` `)]:e.raw_terms;return{sql:r.map(()=>`AND sqlite_tokenizer_ar_find_all_normalized_match_spans_json(json_extract(pages.json, '$.text'), ?, 1) != '[]'`).join(` `),values:r}}function _xe(e){let t=e||``;return Hxe.test(t)?!0:Uxe.test(t)?!Gxe.test(t):Wxe.test(t)}function vxe(e,t){return!e?.length||!t?.length?[]:t.map(t=>Object.fromEntries(e.map((e,n)=>[e,t[n]])))}function pT(e){return JSON.stringify(e,(e,t)=>t instanceof Set?{__turath_set__:[...t]}:t)}function mT(e){if(e!=null)return JSON.parse(e,(e,t)=>t&&typeof t==`object`&&Array.isArray(t.__turath_set__)?new Set(t.__turath_set__):t)}function hT(e,t=Date.now()){let n=Number(e);return Number.isFinite(n)&&n>0?Math.trunc(n):t}async function yxe(e){return new Set((await e.query(`SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'`)).values.map(e=>e.name))}async function bxe(e){let t=(await e.query(`SELECT name, sql FROM sqlite_master WHERE name IN (${VT.map(()=>`?`).join(`, `)})`,VT)).values,n=new Map(t.map(e=>[e.name,String(e.sql||``).replace(/\s+/g,` `).trim()]));return Ng.every((e,t)=>n.get(VT[t])===e.replace(/\s+/g,` `).trim())}async function xxe(e,t,n){if(t.has(`general_notes`)){let t=(await e.query(`SELECT id, json FROM general_notes ORDER BY id`)).values;for(let r of t){let t=mT(r.json)||{},i=n(t);if(!i.title&&!i.text)continue;let a=hT(t.created_at);await e.execute(`INSERT INTO writings( id, title, text, doc_json, created_at, updated_at, deleted_at ) VALUES(?, ?, ?, ?, ?, ?, NULL)`,[Vh(),i.title,i.text,pT(i.doc_json),a,hT(t.updated_at,a)])}}let r=(await e.query(`SELECT id, book_id, pg, json FROM highlights ORDER BY id`)).values;for(let t of r){let r=mT(t.json)||{},i=[`title`,`note`,`note_doc`].some(e=>e in r),a=n({title:r.title,note:r.note,note_doc:r.note_doc}),o={...r};if(delete o.title,delete o.note,delete o.note_doc,i&&await e.execute(`UPDATE highlights SET json = ? WHERE id = ?`,[pT(o),+t.id]),!a.title&&!a.text)continue;let s=Vh(),c=hT(r.created_at);await e.execute(`INSERT INTO writings( id, title, text, doc_json, created_at, updated_at, deleted_at ) VALUES(?, ?, ?, ?, ?, ?, NULL)`,[s,a.title,a.text,pT(a.doc_json),c,hT(r.updated_at,c)]);let l=(await e.query(`SELECT json FROM pages WHERE book_id = ? AND pg = ?`,[+t.book_id,+t.pg])).values[0],u=Jh(l?String(mT(l.json)?.text||``):``,{...r,pg:+t.pg});await e.execute(`INSERT INTO writing_anchors( id, writing_id, highlight_id, book_id, pg, start_offset, end_offset, quote, quote_prefix, quote_suffix, position, created_at ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0, ?) ON CONFLICT(highlight_id) DO NOTHING`,[Vh(),s,+t.id,+t.book_id,+t.pg,u.start_offset,u.end_offset,u.quote,u.quote_prefix,u.quote_suffix,c])}}async function Sxe(e){let t=+(await e.query(`PRAGMA user_version`)).values[0]?.user_version||0;if(t>2)throw Error(`unsupported database version: ${t}`);let n=await yxe(e),r=t===0&&!n.size;for(let t of Mg)await e.execute(t);if(r){for(let t of Ng)await e.execute(t);await e.execute(`PRAGMA user_version = 2`);return}if(t<=1){let{convert_legacy_writing:t}=await m(async()=>{let{convert_legacy_writing:e}=await Promise.resolve().then(()=>(Rw(),Zye));return{convert_legacy_writing:e}},void 0),r=[`writing_anchors`,`writings`].filter(e=>n.has(e)),i=!1;for(let t of r)(await e.query(`SELECT 1 AS present FROM ${t} LIMIT 1`)).values.length&&(i=!0);if(i){if(!await bxe(e))throw Error(`legacy database contains populated partial writing schema`)}else{r.length&&(await e.execute(`DROP TABLE IF EXISTS writing_anchors`),await e.execute(`DROP TABLE IF EXISTS writings`));for(let t of Ng)await e.execute(t)}await xxe(e,n,t),await e.execute(`DROP TABLE IF EXISTS general_notes`),await e.execute(`PRAGMA user_version = 2`);return}if(!n.has(`writings`)||!n.has(`writing_anchors`))throw Error(`current database is missing writing tables`)}function gT(e){let t=MT[e];if(!t)throw Error(`Unknown catalog dataset: ${e}`);return t}function _T(e,t){let[,n]=gT(e);return+t?.[n]}function vT(e,t,n){let[,r]=gT(e);return{...t,[r]:+n}}function yT(){return window.desktop?.is_electron?Pxe:wT}async function Cxe(){return RT===void 0?typeof navigator>`u`||!navigator.storage?.getDirectory?(RT=null,RT):(RT=navigator.storage.getDirectory().catch(e=>{throw RT=void 0,e}),RT):RT}async function wxe({wait_for_visibility:e=!0}={}){if(IT)return IT;if(LT)throw LT;if(!Oxe()){let e=Dxe(),t=Object.entries(e).filter(([,e])=>!e).map(([e])=>e);throw eT(`db.sqlite.support.error`,{...bT(),support:e,missing:t}),Error(`Web SQLite not supported (missing: ${t.join(`, `)})`)}return IT=(async()=>{e&&await cxe(`db.sqlite.initialize`,bT());let t=Qw();eT(`db.sqlite.initialize.start`,bT());let n,r,i;try{let e=new Promise((e,t)=>{n=(e,n=`WEB_SQLITE_WORKER_FAILED`)=>{e?.type&&ug({worker_stage:`failed`,worker_reason:e.type===`messageerror`?`message_decode_failed`:`worker_load_failed`,worker_error:`Error`}),t(Object.assign(Error(n===`WEB_SQLITE_OPFS_UNAVAILABLE`?`Web SQLite OPFS VFS unavailable.`:`SQLite worker failed to load or communicate`),{code:n}))}});ug({worker_stage:`adapter_loading`}),await nxe(Promise.race([iT(Rg.initialize({worker:()=>{if(i)throw i;return FT=new Worker(Fxe,{type:`module`}),r=e=>{e.data?.type===`turath-sqlite-diagnostic`&&(e.stopImmediatePropagation(),ug(e.data.diagnostics),e.data.diagnostics?.worker_stage===`failed`&&n(void 0,e.data.failure===`vfs_unavailable`?`WEB_SQLITE_OPFS_UNAVAILABLE`:`WEB_SQLITE_WORKER_FAILED`))},FT.addEventListener(`error`,n),FT.addEventListener(`messageerror`,n),FT.addEventListener(`message`,r),FT}})),e]),Rxe,`Sqlite.initialize`),eT(`db.sqlite.initialize.done`,{...bT(),ms:Qw()-t})}catch(e){throw i=e,eT(`db.sqlite.initialize.error`,{...bT(),error:e,ms:Qw()-t}),await lg(),e}finally{FT?.removeEventListener?.(`error`,n),FT?.removeEventListener?.(`messageerror`,n)}})().catch(e=>{throw LT=e,IT=null,FT?.terminate?.(),FT=null,e}),IT}function bT(e={}){let t=window.desktop?.is_electron;return{platform:t?`electron`:`web`,desktop:t,electron_version:window.desktop?.versions?.electron,chrome_version:window.desktop?.versions?.chrome,cross_origin_isolated:globalThis.crossOriginIsolated,has_worker:typeof Worker<`u`,has_opfs:!!globalThis.navigator?.storage?.getDirectory,visibility_state:typeof document>`u`?void 0:document.visibilityState,db_file:yT(),...e}}async function Txe(e){let t=yT(),n=[t,`${t}-wal`,`${t}-shm`,`${t}-journal`];await Promise.all(n.map(t=>Og(e,t).catch(()=>{})))}async function Exe(){if(window.desktop?.is_electron)return;let e=await Cxe();if(!e)throw Error(`OPFS root unavailable`);let t=yT();if(t!==wT)throw Error(`unexpected opt-in DB filename: ${t}`);await Promise.all([t,`${t}-wal`,`${t}-shm`,`${t}-journal`].map(t=>Og(e,t)))}function Dxe(){let e=navigator.userAgent,t=/(?:Chrome|Chromium)\/(\d+)/.exec(e),n=/AppleWebKit\//.test(e)&&!/(?:Chrome|Chromium|Firefox|Edg|OPR)\//.test(e)&&(/(?:CPU(?: iPhone)? OS|iPhone OS) (\d+)(?:[_.](\d+))?/.exec(e)||/Safari\//.test(e)&&!/(?:CriOS|FxiOS|EdgiOS|OPiOS)\//.test(e)&&/Version\/(\d+)(?:\.(\d+))?/.exec(e));return{modern_css:!!globalThis.CSS?.supports?.(`color`,`oklch(50% 0.1 120)`),chromium:!t||+t[1]>=111,worker:typeof Worker<`u`,nested_workers:!n||+n[1]>=17,opfs:!!navigator.storage?.getDirectory,cross_origin_isolated:typeof crossOriginIsolated==`boolean`&&crossOriginIsolated}}function Oxe(){return Object.values(Dxe()).every(Boolean)}async function xT(e){return await e.query(`PRAGMA busy_timeout(${zxe})`),e}async function ST({wait_for_visibility:e=!0}={}){if(NT?.is_open)return NT;if(PT)return eT(`db.open.join_existing`,bT({open_promise_exists:!0})),PT;PT=(async()=>{let t=Qw();eT(`db.open.start`,bT({open_promise_exists:!1})),await wxe({wait_for_visibility:e});let n=`opfs_file`;eT(`db.open.path_ready`,{path_kind:n});let r={path:yT(),readOnly:!1},i;try{i=await lxe(r,n,{wait_for_visibility:e}),eT(`db.configure.start`);let a=await xT(new HT(i));return await a.query(`PRAGMA foreign_keys = ON`),eT(`db.schema.start`),await a.with_transaction(Sxe),eT(`db.schema.done`),NT=a,window._db_backend=`opfs`,eT(`db.open.done`,{db_backend:window._db_backend,ms:Qw()-t}),NT}catch(e){throw tT(`db.open.error`,e),i&&await Rg.close({databaseId:i}).catch(()=>{}),e}})();try{return await PT}finally{PT=null}}async function CT(e=NT){!e&&PT&&(e=await PT),e&&(await e.close(),e===NT&&(NT=null),eT(`db.close`,{}))}async function kxe(e){eT(`db.reload.start`,{reason:e}),await CT(),location.reload()}async function Axe(e=NT){if(!e)return{had_old_db:!1,migrated:!1};if(await e.get_kv(`migration_done`))return{had_old_db:!1,migrated:!1,status:`already_done`};let t=Qw();eT(`db.idb_migration.start`,{});let{migrate_from_idb:n}=await m(async()=>{let{migrate_from_idb:e}=await Promise.resolve().then(()=>(Xbe(),Lbe));return{migrate_from_idb:e}},void 0),r=await n(e,eT);return(r?.status===`migrated`||r?.status===`no_old_db`)&&await e.set_kv(`migration_done`,!0),eT(`db.idb_migration.done`,{...r,ms:Qw()-t}),r}async function jxe(e){let t;try{t=await ST({wait_for_visibility:!1}),await t.get_kv(`migration_done`)||(e(),await CT(t),await Exe(),eT(`db.web_migration.reset.done`,{}),t=await ST({wait_for_visibility:!1}));let n=Qw(),r=await Axe(t),i=Qw()-n;if(eT(`db.idb_migration.result`,{...r,ms:i}),![`migrated`,`no_old_db`,`already_done`].includes(r.status))throw Error(`IDB migration failed: ${r.status||`unknown`}`);return{db:t,migration_result:r,migration_ms:i}}catch(e){throw tT(`db.web_prepare.error`,e),await CT(t),e}}async function Mxe(e=NT){eT(`db.clear_all_user_data.start`,{});let{deleteDB:t}=await m(async()=>{let{deleteDB:e}=await Promise.resolve().then(()=>(Ibe(),jbe));return{deleteDB:e}},void 0);await Nxe(e),await Promise.allSettled([t(`turath-app-v3`)]),eT(`db.clear_all_user_data.done`,{})}async function Nxe(e=NT){eT(`db.clear_sqlite_user_data.start`,{});let t=await Cxe();if(!t)throw Error(`OPFS root unavailable`);await CT(e),await Txe(t),eT(`db.clear_sqlite_user_data.done`,{})}var Pxe,wT,Fxe,TT,Ixe,ET,DT,OT,kT,AT,Lxe,Rxe,zxe,Bxe,jT,Vxe,Hxe,Uxe,Wxe,Gxe,MT,Kxe,qxe,NT,PT,FT,IT,LT,RT,Jxe,zT,BT,VT,HT,UT=o((()=>{Zm(),Bh(),Eu(),Wh(),Zh(),ng(),Dg(),Ag(),iue(),zg(),Tg(),h(),Pxe=`turath.sqlite`,wT=`turath-v8.sqlite`,Fxe=`/assets-next/sqlite3-worker1.mjs?turath_proxy=2`,TT=300,Ixe=1048576,ET=Symbol(`admitted_db_operation`),DT=1e6,OT=`page_fts_contentless_v3_books`,kT=`page_fts_schema_v3`,AT=`page_fts_used_v1`,Lxe=3e4,Rxe=1e4,zxe=5e3,Bxe=600,jT=`turath_web_open_timeout_reload_v1`,Vxe=6e5,Hxe=/^\s*(select|with)\b/i,Uxe=/^\s*pragma\b/i,Wxe=/\breturning\b/i,Gxe=/=/,MT={books:[`books`,`id`],authors:[`authors`,`id`],cats:[`cats`,`id`],"book-indexes":[`book_indexes`,`book_id`],"book-meta":[`book_meta`,`book_id`],"author-bios":[`author_bios`,`author_id`]},Kxe=[`books`,`authors`,`cats`],qxe=Object.values(MT).map(([e])=>e),Jxe=globalThis.window?.__TURATH_BOOT__?.boot_id||`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,zT=class extends Error{},BT=class extends Error{constructor(e){super(e),this.name=`BootReloadAbort`}},$be(),VT=[`writings`,`idx_writings_deleted_updated`,`writing_anchors`,`idx_writing_anchors_writing_position`,`idx_writing_anchors_book_page`],HT=class{constructor(e){this.database_id=e,this.is_open=!0,this.closing=!1,this._close_promise=null,this._write_queue=Promise.resolve(),this._write_queue_depth=0,this._write_queue_owner=null,this._page_fts_queue=Promise.resolve(),this.page_fts_available=null,this.page_fts_normalized_predicate=!1,this.page_fts_capability=`unknown`,this.page_fts_used=null,this.page_fts_unavailable_error=null,this.last_page_fts_error=null,this.last_page_fts_requested_book_ids=[]}async close(){if(this._close_promise)return this._close_promise;if(this.is_open){this.closing=!0,this._close_promise=(async()=>{await this._page_fts_queue,await this._write_queue,await iT(Rg.close({databaseId:this.database_id})),this.is_open=!1})();try{await this._close_promise}finally{this.closing=!1,this._close_promise=null}}}_queue_write(e,t,n){if(n!==ET&&(!this.is_open||this.closing))return Promise.reject(rxe(this.closing));this._write_queue_depth++;let r=e===`integrity_check`,i=r?null:mh(`sqlite_queue_wait`,{phase:e,warning_ms:250,critical_ms:2e3,context:()=>({active_owner_operation:this._write_queue_owner?.operation,owner_elapsed_ms:this._write_queue_owner?Qw()-this._write_queue_owner.started_ms:0,queue_depth:this._write_queue_depth})}),a=this._write_queue.then(async()=>{this._write_queue_depth--,i?.finish();let n={operation:e,started_ms:Qw()};this._write_queue_owner=n;let a=r||e===`transaction`?null:mh(`sqlite_operation`,{phase:e,warning_ms:100,critical_ms:500,context:()=>({queue_depth:this._write_queue_depth})});try{return await t()}catch(t){throw a?.fail(),r||(tT(`db.operation.error`,t,{operation:e}),lg()),t}finally{a?.finish(),this._write_queue_owner===n&&(this._write_queue_owner=null)}});return this._write_queue=a.catch(()=>{}),a}_execute(e,t=[]){return iT(Rg.execute({databaseId:this.database_id,statement:e,values:t}),e)}async _query(e,t=[]){if(!_xe(e))return await this._execute(e,t),{columns:[],values:[]};let n=await iT(Rg.query({databaseId:this.database_id,statement:e,values:t}),e);return{columns:n.columns,values:vxe(n.columns,n.rows)}}async query(e,t=[]){return this._queue_write(`query`,()=>this._query(e,t))}async execute(e,t=[]){return this._queue_write(`execute`,()=>this._execute(e,t))}get_integrity_report(e=`quick`){if(![`quick`,`full`].includes(e))throw TypeError(`Unknown integrity check`);let t=Eg(e);if(!this.is_open||this.closing||this._direct_mode)return t.reason=this._direct_mode?`transaction_owner`:`connection_unavailable`,Promise.resolve(t);if(this._integrity_checks||=new Map,this._integrity_checks.has(e))return this._integrity_checks.get(e);let n=this._queue_write(`integrity_check`,()=>!this.is_open||this.closing?(t.reason=`connection_unavailable`,t):rue(t,async e=>{let t=await iT(Rg.query({databaseId:this.database_id,statement:e,values:[]}));return{values:vxe(t.columns,t.rows)}})).finally(()=>{this._integrity_checks.delete(e)});return this._integrity_checks.set(e,n),n}async with_transaction(e){return this._direct_mode?e(this):sT(this,async(t,n)=>{let r=fxe(this,t,n),i=await e(r);return await r.flush_page_fts_dirty(),i},{atomic_web:!0})}async with_exclusive(e){return this._direct_mode?e(this):this._queue_write(`exclusive`,async()=>{let t=fxe(this,this._execute.bind(this),this._query.bind(this));try{let n=await e(t);return await t.flush_page_fts_dirty(),n}catch(e){throw await t.flush_page_fts_dirty().catch(e=>{globalThis.window?.__DEBUG__&&console.error(e)}),e}})}_run_atomic_write(e){return sT(this,e,{atomic_web:!0})}_queue_page_fts(e){if(!this.is_open||this.closing)return Promise.reject(rxe(this.closing));let t=this._page_fts_queue.then(()=>this._queue_write(`page_fts`,()=>e(dxe(this)),ET));return this._page_fts_queue=t.catch(()=>{}),t}_record_page_fts_error(e,t,n,r){return this._record_page_fts_classification(e,t,Tm(n),r)}_record_page_fts_classification(e,t,n,r){let i={code:n?.code||`unknown`,safe_message:n?.safe_message||`Unclassified diagnostic failure`};return this.last_page_fts_error={attempt_id:e,phase:t,...i,...r?{book_id:+r}:{},at:new Date().toISOString()},Am(e,{phase:`failed`,failed_at:new Date().toISOString(),safe_error_code:i.code,...r?{book_id:+r}:{}}),Dm({kind:`offline_fts_failure`,attempt_id:e,failure_phase:t,safe_error_code:i.code,...r?{book_id:+r}:{}}),i}_record_cached_page_fts_unavailable(e){if(!e||this.last_page_fts_error?.attempt_id===e)return;let t=this.page_fts_unavailable_error||{phase:`initialize_schema`,code:`unknown`,safe_message:`Unclassified diagnostic failure`};this._record_page_fts_classification(e,t.phase,t)}async _initialize_page_fts(e,t=Cm()){if(this.page_fts_available!=null)return this.page_fts_available||this._record_cached_page_fts_unavailable(t),this.page_fts_available;km(t,{phase:`initializing`,execution_started_at:new Date().toISOString()});let n=`initialize_schema`;try{let t=await e.get_kv(kT);t||(await e.set_kv(OT,[]),await e.execute(`DROP TABLE IF EXISTS pages_fts`)),await e.execute(jg),this.page_fts_normalized_predicate=!1,this.page_fts_capability=`unknown`,n=`probe_tokenizer_capability`;try{await e.query(`SELECT sqlite_tokenizer_ar_matches_normalized(?, ?, ?) AS matches`,[`العربية`,`["العربية"]`,`all`]),this.page_fts_normalized_predicate=!0,this.page_fts_capability=`normalized_predicate`}catch{await e.query(`SELECT sqlite_tokenizer_ar_find_all_normalized_match_spans_json(?, ?, 1) AS spans`,[`العربية`,`العربية`]),this.page_fts_capability=`span_fallback`}n=`initialize_schema`,t||await e.set_kv(kT,!0),this.page_fts_available=!0,this.page_fts_unavailable_error=null,eT(`db.page_fts.ready`,{normalized_predicate:this.page_fts_normalized_predicate,capability:this.page_fts_capability})}catch(e){this.page_fts_available=!1,this.page_fts_capability=`unavailable`;let r=this._record_page_fts_error(t,n,e);this.page_fts_unavailable_error={phase:n,...r},eT(`db.page_fts.unavailable`,{phase:n,error_code:r.code})}return this.page_fts_available}async initialize_page_fts(e=null){if(this.page_fts_available!=null)return this.page_fts_available||this._record_cached_page_fts_unavailable(e),this.page_fts_available;let t=!e;e||=Cm(),t?Om({attempt_id:e,kind:`page_fts`,phase:`queued`}):km(e,{phase:`queued`});try{return await this._queue_page_fts(async n=>{let r=await this._initialize_page_fts(n,e);return t&&r&&Am(e,{phase:`done`,completed_at:new Date().toISOString()}),r})}catch(e){if(nT(e)&&(!this.is_open||this.closing))return!1;throw e}}async _mark_page_fts_dirty(e,t){let n=new Set((Array.isArray(e)?e:[e]).map(Number).filter(Boolean));if(!n.size)return;let r=new Set(await t.get_kv(OT)||[]);for(let e of n)r.delete(e);await t.set_kv(OT,[...r]);for(let e of n)await t.execute(`DELETE FROM pages_fts WHERE rowid >= ? AND rowid < ?`,[fT(e,1),fT(e+1,1)]).catch(()=>{})}async mark_page_fts_dirty(e){return this._queue_page_fts(t=>this._mark_page_fts_dirty(e,t))}async _notify_page_fts_progress(e,t){if(!e)return!0;if(!this.is_open||this.closing)return!1;try{return await e(t),!0}catch(e){if((!this.is_open||this.closing)&&nT(e))return!1;throw e}}async ensure_page_fts_indexed(e,t,n=null){let r=[...new Set((e||[]).map(Number).filter(Boolean))],i=!n;if(n||=Cm(),i?Om({attempt_id:n,kind:`page_fts`,phase:`queued`,requested_books:r.length}):km(n,{phase:`queued`,requested_books:r.length}),km(n,{phase:`initializing`,execution_started_at:new Date().toISOString()}),!await this.initialize_page_fts(n))return!1;if(!r.length)return i&&Am(n,{phase:`done`,completed_at:new Date().toISOString()}),!0;let a=async()=>{if(!this.is_open||this.closing)return null;try{return new Set(await this._queue_page_fts(e=>e.get_kv(OT))||[])}catch(e){if(nT(e)&&(!this.is_open||this.closing))return null;throw this._record_page_fts_error(n,`index_book`,e),e}},o=async e=>{try{return await this._notify_page_fts_progress(t,e)}catch(e){throw this._record_page_fts_error(n,`search_index`,e),e}},s=await a();if(!s)return!1;let c=r.filter(e=>!s.has(e)),l=c.length;if(km(n,{phase:`indexing`,indexed_books:r.filter(e=>s.has(e)).length,missing_books:c.length,done:0,total:l,last_progress_at:new Date().toISOString()}),!await o({book_ids:r.filter(e=>s.has(e)),done:0,total:l}))return!1;if(!c.length)return i&&Am(n,{phase:`done`,completed_at:new Date().toISOString()}),!0;let u=Qw(),d=0,f;try{for(;;){if(s=await a(),!s)return!1;let e=r.filter(e=>!s.has(e));if(l=Math.max(l,d+e.length),!e.length)break;f=e[0];let t=f,i;try{i=await this._queue_page_fts(e=>e.write_batch(async(e,n)=>{let r=new Set(await lT(n,OT)||[]);return r.has(t)?{indexed:r,changed:!1}:(await e(`DELETE FROM pages_fts WHERE rowid >= ? AND rowid < ?`,[fT(t,1),fT(+t+1,1)]),await e(`INSERT OR REPLACE INTO pages_fts(rowid, text) SELECT book_id * ? + pg, json_extract(json, '$.text') FROM pages WHERE book_id = ? AND json_extract(json, '$.text') IS NOT NULL AND json_extract(json, '$.text') != ''`,[DT,+t]),r.add(t),await uT(e,OT,[...r]),{indexed:r,changed:!0})},{atomic_web:!0}))}catch(e){if(nT(e)&&(!this.is_open||this.closing))return!1;throw e}if(!i||(s=i.indexed,d++,km(n,{phase:`indexing`,indexed_books:r.filter(e=>s.has(e)).length,missing_books:r.filter(e=>!s.has(e)).length,done:d,total:l,last_progress_at:new Date().toISOString()}),!await o({book_ids:[t],done:d,total:l})))return!1;await new Promise(e=>setTimeout(e,0))}}catch(e){throw(this.last_page_fts_error?.attempt_id!==n||this.last_page_fts_error?.phase!==`search_index`)&&this._record_page_fts_error(n,`index_book`,e,f),e}return eT(`db.page_fts.index.done`,{requested_books:r.length,indexed_books:r.filter(e=>s.has(e)).length,ms:Qw()-u}),i&&Am(n,{phase:`done`,completed_at:new Date().toISOString(),done:d,total:l}),!0}async page_fts_was_used(){return this.page_fts_used??=!!await this.get_kv(AT),this.page_fts_used}async page_fts_match_query(e,t=2,n=null){let r=String(e||``).trim().replace(/\s+/g,` `);if(!r)return;n&&km(n,{phase:`analyzing`});let i;try{i=(await this.query(`SELECT sqlite_tokenizer_ar_analyze_json(?) AS tokens`,[r])).values[0]}catch(e){throw n&&this._record_page_fts_error(n,`analyze_query`,e),e}let a;try{a=JSON.parse(i?.tokens||`[]`)}catch(e){n&&this._record_page_fts_error(n,`analyze_query`,e);return}let o=r.replace(/[^ء-ي\s\d<>a-z]/g,` `).match(/\S+/g)||[],s=a.filter(e=>typeof e==`string`&&e);if(!s.length||!o.length)return;let c=o.map(e=>e.replaceAll(`"`,`""`));return{match_query:+t==1?c.map(e=>`"${e}"`).join(` OR `):+t==3&&c.length>1?`"${c.join(` `)}"`:c.map(e=>`"${e}"`).join(` `),analyzed_terms:s,raw_terms:o,raw_filter:+t!=1&&o.length>1&&(s.lengthe.length<=2))}}async find_page_fts(e,t,n,r,i=2){if(!String(t||``).trim())return-1;let a=Cm();Om({attempt_id:a,kind:`reader_search`,phase:`queued`,requested_books:1});try{let o=await this.page_fts_match_query(t,i,a);if(!o){Am(a,{phase:`tokenless`,completed_at:new Date().toISOString()});return}if(!await this.ensure_page_fts_indexed([e],null,a))return;let s=gxe(o,i,this.page_fts_normalized_predicate),c=(await this.query(`SELECT pages_fts.rowid AS rowid FROM pages_fts ${o.raw_filter?`JOIN pages ON pages.book_id = CAST(pages_fts.rowid / ${DT} AS INTEGER) AND pages.pg = pages_fts.rowid % ${DT}`:``} WHERE pages_fts MATCH ? AND pages_fts.rowid >= ? AND pages_fts.rowid <= ? ${s.sql} ORDER BY CASE WHEN (pages_fts.rowid % CAST(? AS INTEGER)) > CAST(? AS INTEGER) THEN 0 ELSE 1 END, pages_fts.rowid LIMIT 1`,[o.match_query,fT(e,1),fT(e,r),...s.values,DT,+n])).values[0];return Am(a,{phase:`done`,completed_at:new Date().toISOString()}),c?+c.rowid%DT:-1}catch(t){this.page_fts_available=!1,this.last_page_fts_error?.attempt_id!==a&&this._record_page_fts_error(a,`search_index`,t,e),this.page_fts_unavailable_error={phase:this.last_page_fts_error?.phase||`search_index`,code:this.last_page_fts_error?.code||`unknown`,safe_message:this.last_page_fts_error?.safe_message||`Unclassified diagnostic failure`},eT(`db.page_fts.error`,{phase:this.last_page_fts_error?.phase,error_code:this.last_page_fts_error?.code,book_id:+e});return}}async search_downloaded_pages({query:e,precision:t=2,page:n=1,limit:r=20,book_ids:i=null,include_non_author:a=!0,sort:o=`default`,on_indexed:s,diagnostic_attempt_id:c=Cm()}){if(!String(e||``).trim()||Array.isArray(i)&&!i.length)return{count:0,data:[]};this.set_last_page_fts_requested_book_ids(i),Om({attempt_id:c,kind:`offline_search`,phase:`queued`,requested_books:i?.length||0});try{if(!await this.initialize_page_fts(c)){this._record_cached_page_fts_unavailable(c);return}let l=await this.page_fts_match_query(e,t,c);if(!l)return this.last_page_fts_error?.attempt_id===c||Am(c,{phase:`tokenless`,completed_at:new Date().toISOString()}),{count:0,data:[]};await this.page_fts_was_used()||(await this.set_kv(AT,!0),this.page_fts_used=!0);let u=!1;if(!await this.ensure_page_fts_indexed(i,async e=>{let n;s&&!u&&e.book_ids.length&&(n=await this.search_indexed_pages({precision:t,page:1,limit:1,book_ids:e.book_ids,include_non_author:a,sort:o,diagnostic_attempt_id:c},l),u=!!n.data.length),s?.({...e,results:u?n:void 0})},c))return;km(c,{phase:`querying`});let d=await this.search_indexed_pages({precision:t,page:n,limit:r,book_ids:i,include_non_author:a,sort:o,diagnostic_attempt_id:c},l);return Am(c,{phase:`done`,completed_at:new Date().toISOString()}),d}catch(e){throw(this.last_page_fts_error?.attempt_id!==c||this.last_page_fts_error?.phase===`highlight_result`)&&this._record_page_fts_error(c,`search_index`,e),e}}async search_indexed_pages(e,t){let{precision:n,page:r,limit:i,book_ids:a,include_non_author:o,sort:s,diagnostic_attempt_id:c}=e,l=`CAST(pages_fts.rowid / ${DT} AS INTEGER)`,u=`(pages_fts.rowid % ${DT})`,d=a?.length?`AND ${l} IN (SELECT CAST(value AS INTEGER) FROM json_each(?))`:``,f=o?``:`AND NOT EXISTS ( SELECT 1 FROM book_indexes, json_each(json_extract(book_indexes.json, '$.non_author')) excluded WHERE book_indexes.book_id = ${l} AND CAST(excluded.value AS INTEGER) = ${u} )`,p=s===`page_id`?`pages_fts.rowid`:s===`death`?`(SELECT coalesce(json_extract(authors.json, '$.death'), 2100) FROM books LEFT JOIN authors ON authors.id = json_extract(books.json, '$.author_id') WHERE books.id = ${l}), pages_fts.rowid`:`bm25(pages_fts)`,m=gxe(t,n,this.page_fts_normalized_predicate),h=`JOIN pages ON pages.book_id = ${l} AND pages.pg = ${u}`,g=`pages_fts MATCH ? ${d} ${f} ${m.sql}`,_=[t.match_query,...a?.length?[JSON.stringify(a)]:[],...m.values],y=(await this.query(`SELECT pages_fts.rowid AS rowid, json_extract(pages.json, '$.text') AS page_text, json_extract(books.json, '$.author_id') AS author_id, json_extract(books.json, '$.name') AS book_name FROM pages_fts ${h} LEFT JOIN books ON books.id = ${l} WHERE ${g} ORDER BY ${p} LIMIT ? OFFSET ?`,[..._,+i,Math.max(0,r-1)*+i])).values,b=[];for(let e of y){let r=Math.floor(+e.rowid/DT),i=+e.rowid%DT;if(!e.page_text)continue;let a=zl(await this.highlight_text_fts(e.page_text,t.raw_terms.join(` `),n,t,c)||e.page_text),o=a.indexOf(``),s=Math.max(0,(o<0?0:o)-140),l=Math.min(a.length,(o<0?0:o)+320),u=`${s?`…`:``}${a.slice(s,l)}${lvT(e,mT(t.json),t.key))}async load_catalog_dataset(e){let[t,n]=gT(e),r=(await this.query(`SELECT count(*) AS count, json_group_object(${n}, json(json_set(json, '$.${n}', ${n}))) AS json FROM ${t}`)).values[0];return{data:r?.json?mT(r.json):{},count:+r?.count||0}}async read_catalog_chunk(e,t=null,n=TT){let[r,i]=gT(e);return(await this.query(`SELECT ${i} AS key, json FROM ${r} ${t==null?``:`WHERE ${i} > ?`} ORDER BY ${i} LIMIT ?`,t==null?[+n]:[+t,+n])).values.map(t=>vT(e,mT(t.json),t.key))}async list_catalog_keys(e){let[t,n]=gT(e);return(await this.query(`SELECT ${n} AS key FROM ${t} ORDER BY ${n}`)).values.map(e=>+e.key)}async upsert_catalog_record(e,t,n){let[r,i]=gT(e),a=+t;if(!a)throw Error(`Missing key for catalog dataset: ${e}`);let o=vT(e,n,a);return await this.execute(`INSERT OR REPLACE INTO ${r}(${i}, json) VALUES(?, ?)`,[a,pT(o)]),a}async upsert_catalog_records(e,t,n={}){let[r,i]=gT(e);t?.length&&await cT(this,e,t,`batched_keyed`,t=>pxe(e,r,i,t),n)}async clear_catalog(e){await this.execute(`DELETE FROM ${gT(e)[0]}`)}async delete_catalog_record(e,t){let[n,r]=gT(e);await this.execute(`DELETE FROM ${n} WHERE ${r} = ?`,[+t])}async get_book_indexes(e){return this.get_catalog_record(`book-indexes`,e)}async set_book_indexes(e,t,n=()=>!0){return n()?(await this.upsert_catalog_record(`book-indexes`,e,t),n()):!1}async get_book_meta(e){return this.get_catalog_record(`book-meta`,e)}async set_book_meta(e,t,n=()=>!0){return n()?(await this.upsert_catalog_record(`book-meta`,e,t),n()):!1}async set_book_metadata(e,{meta:t,indexes:n},r=()=>!0){let i=+e;if(!i||!t||!n)throw Error(`set_book_metadata requires meta and indexes`);try{return await this._run_atomic_write(async e=>{if(!r())return!1;if(await e(`INSERT OR REPLACE INTO book_meta(book_id, json) VALUES(?, ?)`,[i,pT(vT(`book-meta`,t,i))]),!r()||(await e(`INSERT OR REPLACE INTO book_indexes(book_id, json) VALUES(?, ?)`,[i,pT(vT(`book-indexes`,n,i))]),!r()))throw new zT;return!0})}catch(e){if(!(e instanceof zT)||this._direct_mode)throw e;return!1}}async get_author_bio(e){return this.get_catalog_record(`author-bios`,e)}async set_author_bio(e,t){return this.upsert_catalog_record(`author-bios`,e,t)}async clear_core_catalog(){await sT(this,e=>mxe(e,Kxe))}async clear_catalog_and_pages(){return this._queue_page_fts(async e=>{await e.write_batch(async e=>{await mxe(e,qxe),await hxe(e)}),this.page_fts_available=null})}get_last_page_fts_requested_book_ids(){return[...this.last_page_fts_requested_book_ids]}set_last_page_fts_requested_book_ids(e=[]){this.last_page_fts_requested_book_ids=Array.isArray(e)?[...e]:[]}async get_storage_diagnostics({owned_book_ids:e=[],requested_book_ids:t=[],sample_book_ids:n=[],on_progress:r=null}={}){let i=[...new Set(e.map(Number).filter(e=>Number.isSafeInteger(e)&&e>0))],a=[...new Set(t.map(Number).filter(e=>Number.isSafeInteger(e)&&e>0))],o=[...new Set(n.map(Number).filter(e=>Number.isSafeInteger(e)&&e>0))].slice(0,5),s={runtime_shell:globalThis.location?.pathname===`/index-old.html`?`v7_compatibility`:`current`,database_backend:globalThis.window?._db_backend||`unknown`,migration_status:globalThis.window?._migration_status||`unknown`,restore_recovery_status:globalThis.window?._restore_recovery_status||`unknown`,page_fts_available:this.page_fts_available==null?`unknown`:this.page_fts_available,page_fts_capability:this.page_fts_capability,historical_page_fts_error_json:this.last_page_fts_error?JSON.stringify(this.last_page_fts_error):``},c=e=>{Object.assign(s,e);try{r?.({...s})}catch{}return s};c({});let l=(await this.query(`SELECT (SELECT count(*) FROM book_indexes) AS book_indexes, count(*) AS book_meta_rows, coalesce(sum( CASE WHEN NOT json_valid(json) THEN 1 WHEN json_type(json) != 'object' THEN 1 WHEN NOT EXISTS ( SELECT 1 FROM json_each(book_meta.json) WHERE key != 'book_id' ) THEN 1 ELSE 0 END ), 0) AS invalid_book_meta_rows FROM book_meta`)).values[0];c({book_indexes:+l?.book_indexes||0,book_meta_rows:+l?.book_meta_rows||0,invalid_book_meta_rows:+l?.invalid_book_meta_rows||0});let u=JSON.stringify(i),d=i.length?(await this.query(`SELECT (SELECT count(*) FROM book_indexes WHERE book_id IN (SELECT CAST(value AS INTEGER) FROM json_each(?))) AS owned_book_indexes, (SELECT count(*) FROM book_meta WHERE book_id IN (SELECT CAST(value AS INTEGER) FROM json_each(?))) AS owned_book_meta`,[u,u])).values[0]:{owned_book_indexes:0,owned_book_meta:0};c({owned_book_indexes:+d?.owned_book_indexes||0,owned_book_meta:+d?.owned_book_meta||0});let f=(await this.query(`PRAGMA page_count`)).values[0]?.page_count;c({page_count:+f||0});let p=(await this.query(`PRAGMA freelist_count`)).values[0]?.freelist_count;c({freelist_count:+p||0});let m=(await this.query(`PRAGMA page_size`)).values[0]?.page_size;c({page_size:+m||0,allocated_bytes:(+f||0)*(+m||0),sqlite_freelist_bytes:(+p||0)*(+m||0)});let h=(await this.query(`SELECT sqlite_version() AS sqlite_version, (SELECT user_version FROM pragma_user_version) AS user_version`)).values[0];c({sqlite_version:h?.sqlite_version||`unknown`,database_user_version:+h?.user_version||0}),c({page_fts_table_present:!!(await this.query(`SELECT count(*) AS count FROM sqlite_master WHERE type = 'table' AND name = 'pages_fts'`)).values[0]?.count});let[g,_,y]=await Promise.all([this.get_kv(kT),this.get_kv(AT),this.get_kv(OT)]),b=new Set((Array.isArray(y)?y:[]).map(Number).filter(Boolean)),x=i.filter(e=>b.has(e)).length,S=a.filter(e=>b.has(e)).length;c({page_fts_schema_ready:!!g,page_fts_used:!!_,page_fts_indexed_books:b.size,page_fts_indexed_owned_books:x,page_fts_pending_owned_books:i.length-x,page_fts_indexed_requested_books:S,page_fts_pending_requested_books:a.length-S});let C=(await this.query(`SELECT count(*) AS page_rows, count(DISTINCT book_id) AS page_books FROM pages`)).values[0];c({page_rows:+C?.page_rows||0,page_books:+C?.page_books||0});let w=[];o.length&&(w=(await this.query(`WITH requested(book_id) AS ( VALUES ${o.map(()=>`(?)`).join(`, `)} ), page_stats AS ( SELECT book_id, count(*) AS page_rows, min(pg) AS first_page, max(pg) AS last_page, sum(CASE WHEN json_valid(json) AND json_type(json, '$.text') = 'text' THEN 1 ELSE 0 END) AS text_rows FROM pages WHERE book_id IN (SELECT book_id FROM requested) GROUP BY book_id ) SELECT requested.book_id, coalesce(page_stats.page_rows, 0) AS page_rows, coalesce(page_stats.first_page, 0) AS first_page, coalesce(page_stats.last_page, 0) AS last_page, coalesce(page_stats.text_rows, 0) AS text_rows, book_indexes.book_id IS NOT NULL AS book_indexes_present, book_meta.book_id IS NOT NULL AS book_meta_present, CASE WHEN book_meta.book_id IS NULL OR NOT json_valid(book_meta.json) THEN 0 WHEN json_type(book_meta.json) != 'object' THEN 0 WHEN NOT EXISTS ( SELECT 1 FROM json_each(book_meta.json) WHERE key != 'book_id' ) THEN 0 ELSE 1 END AS book_meta_valid, CASE WHEN json_valid(book_indexes.json) THEN coalesce(json_array_length(json_extract(book_indexes.json, '$.page_map')), 0) ELSE 0 END AS expected_pages FROM requested LEFT JOIN page_stats USING (book_id) LEFT JOIN book_indexes USING (book_id) LEFT JOIN book_meta USING (book_id) ORDER BY requested.book_id`,o)).values.map(e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e,+t]))));let ee=e=>w.map(t=>t[e]);return c({sample_book_ids:ee(`book_id`),sample_page_rows:ee(`page_rows`),sample_first_pages:ee(`first_page`),sample_last_pages:ee(`last_page`),sample_text_rows:ee(`text_rows`),sample_expected_pages:ee(`expected_pages`),sample_book_indexes_present:ee(`book_indexes_present`).map(Boolean),sample_book_meta_present:ee(`book_meta_present`).map(Boolean),sample_book_meta_valid:ee(`book_meta_valid`).map(Boolean)})}async get_page(e,t){return(await this.get_pages(e,t))[0]}async get_pages(e,t,n=t){return(await this.query(`SELECT pg, json FROM pages WHERE book_id = ? AND pg BETWEEN ? AND ? ORDER BY pg`,[+e,+t,+n])).values.map(t=>({...mT(t.json),book_id:+e,pg:+t.pg}))}async delete_pages_for_book(e,t=1,n=null){return this._queue_page_fts(async r=>{n==null?await r.execute(`DELETE FROM pages WHERE book_id = ?`,[+e]):await r.execute(`DELETE FROM pages WHERE book_id = ? AND pg >= ? AND pg <= ?`,[+e,+t,+n]),await this._mark_page_fts_dirty([+e],r)})}async has_complete_book_coverage(e,t){if(!t)return!1;let n=(await this.query(`SELECT count(*) AS page_rows, min(pg) AS first_page, max(pg) AS last_page FROM pages WHERE book_id = ?`,[+e])).values[0];return+n?.page_rows===t&&+n?.first_page==1&&+n?.last_page===t}async has_complete_book_content(e){let t=(await this.get_book_indexes(e))?.page_map?.length||0;if(!t)return!1;let n=(await this.query(`SELECT count(*) AS page_rows, min(pg) AS first_page, max(pg) AS last_page, coalesce(sum(json_type(json, '$.text') = 'text'), 0) AS text_rows FROM pages WHERE book_id = ?`,[+e])).values[0];return+n?.page_rows===t&&+n?.text_rows===t&&+n?.first_page==1&&+n?.last_page===t}async put_pages(e,t=()=>!0){if(!e?.length||!t())return!1;let n=[...new Set(e.map(e=>+e.book_id).filter(Boolean))];return this._queue_page_fts(async r=>!t()||(await this._mark_page_fts_dirty(n,r),!t())?!1:(await r.upsert_chunks(`pages`,e,`batched_pages`,dT),t()))}async replace_book_content(e,t){let n=+e,r=t?.pages?.map((e,t)=>({...e,book_id:n,pg:t+1}));if(!n||!r?.length)throw Error(`replace_book_content requires book pages`);return this._queue_page_fts(async e=>{await this._mark_page_fts_dirty([n],e),await e.write_batch(async e=>{await e(`INSERT OR REPLACE INTO book_indexes(book_id, json) VALUES(?, ?)`,[n,pT(vT(`book-indexes`,t.indexes,n))]),await e(`INSERT OR REPLACE INTO book_meta(book_id, json) VALUES(?, ?)`,[n,pT(vT(`book-meta`,t.meta,n))]),await e(`DELETE FROM pages WHERE book_id = ?`,[n]),await cT(this,`pages`,r,`replace_book_pages`,dT,{transaction:!1})},{atomic_web:!0})})}async delete_book_content(e,{highlights:t=!1}={}){let n=+e;if(n)return this._queue_page_fts(async e=>{await this._mark_page_fts_dirty(n,e),await e.write_batch(async e=>{await e(`DELETE FROM pages WHERE book_id = ?`,[n]),await e(`DELETE FROM book_indexes WHERE book_id = ?`,[n]),t&&await e(`DELETE FROM highlights WHERE book_id = ?`,[n])},{atomic_web:!0})})}async create_highlight(e){let t={...e};delete t.id;let n=[+e.book_id,+e.pg,pT(t)];return+(await this.query(`INSERT INTO highlights(book_id, pg, json) VALUES(?, ?, ?) RETURNING id`,n)).values[0].id}async upsert_highlight(e){let t=+e?.id;if(!t)throw Error(`upsert_highlight requires id`);let n={...e};return delete n.id,await this.execute(`INSERT INTO highlights(id, book_id, pg, json) VALUES(?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET book_id = excluded.book_id, pg = excluded.pg, json = excluded.json`,[t,+e.book_id,+e.pg,pT(n)]),t}async update_highlight(e,{color:t,note:n}){return this._run_atomic_write(async(r,i)=>{let a=(await i(`SELECT book_id, pg, json FROM highlights WHERE id = ?`,[+e])).values[0];if(!a)throw Error(`Highlight unavailable`);let o=mT(a.json),s=t!==void 0&&o.color!==t||n!==void 0&&(o.note||``)!==n,c=s?{...o,...t!==void 0&&{color:t},...n!==void 0&&{note:n},updated_at:Date.now()}:o;return s&&await r(`UPDATE highlights SET json = ? WHERE id = ?`,[pT(c),+e]),{...c,id:+e,book_id:+a.book_id,pg:+a.pg}})}async delete_highlight(e){await this.execute(`DELETE FROM highlights WHERE id = ?`,[+e])}async replace_highlights(e){await this.with_transaction(async t=>{let n=[];for(let r of e||[]){let e=r?.id?await t.upsert_highlight(r):await t.create_highlight(r);n.push(e)}await t.execute(`DELETE FROM highlights WHERE id NOT IN (SELECT value FROM json_each(?))`,[JSON.stringify(n)])})}async delete_highlights_for_book(e){await this.execute(`DELETE FROM highlights WHERE book_id = ?`,[+e])}async list_highlights(){return(await this.query(`SELECT id, book_id, pg, json FROM highlights ORDER BY id DESC`)).values.map(e=>({...mT(e.json),id:+e.id,book_id:+e.book_id,pg:+e.pg}))}async reset_secondary_metadata(e){let t=[...new Set([...e||[]].map(Number).filter(Boolean))],n=JSON.stringify(t),r=await sT(this,async(e,t)=>{let r=(await t(`SELECT count(*) AS count, coalesce(sum(book_id IN (SELECT value FROM json_each(?))), 0) AS preserved FROM book_meta`,[n])).values[0];return await e(`DELETE FROM author_bios`),await e(`DELETE FROM book_meta WHERE book_id NOT IN (SELECT value FROM json_each(?))`,[n]),r}),i=+r?.count||0,a=+r?.preserved||0;return{preserved_book_meta:a,cleared_book_meta:i-a}}async clear_cache_only_content(e){let t=JSON.stringify([...e].map(Number).filter(Boolean)),n=`book_id NOT IN (SELECT value FROM json_each(?))`;return this._queue_page_fts(async e=>{let r=(await e.query(`SELECT DISTINCT book_id FROM pages WHERE ${n}`,[t])).values.map(e=>+e.book_id);return await this._mark_page_fts_dirty(r,e),await e.write_batch(async e=>{await e(`DELETE FROM pages WHERE ${n}`,[t]),await e(`DELETE FROM book_indexes WHERE ${n}`,[t])}),r.length})}}}));function WT(e){try{let t=new URL(e,location.href);return{origin:t.origin,pathname:t.pathname}}catch{return{origin:`invalid`,pathname:``}}}function Yxe(e){return{name:e?.name,message:e?.message||String(e),code:e?.code,data:e?.data,stack:e?.stack}}function Xxe(e,t={}){let n={phase:e,platform:zp(),app_version:window.__APP_VERSION__,...t};window.Sentry?.captureMessage?.(`turath.metadata_snapshot.failed`,{level:`error`,tags:{turath_snapshot_phase:e,turath_platform:zp()},extra:n})}function Zxe(e){let t=Error(e?.message||`OPFS snapshot writer failed`);return t.name=e?.name||`Error`,e?.status&&(t.status=e.status),t}async function Qxe(e,t,n){n?.throwIfAborted();let r=new Worker(new URL(`/assets-next/opfs-writer.worker.js`,``+import.meta.url),{type:`module`});return new Promise((i,a)=>{let o=!1,s=(e,t)=>{o||(o=!0,n?.removeEventListener(`abort`,c),r.terminate(),e(t))},c=()=>s(a,n?.reason instanceof Error?n.reason:new DOMException(`The operation was aborted.`,`AbortError`));r.addEventListener(`message`,e=>{e.data?.type===`done`?s(i,e.data.bytes):e.data?.type===`error`&&s(a,Zxe(e.data.error))}),r.addEventListener(`error`,e=>s(a,e.error||Error(e.message||`OPFS writer failed`)),{once:!0}),n?.addEventListener(`abort`,c,{once:!0});try{r.postMessage({type:`write_url`,path:e,url:t})}catch(e){s(a,e)}n?.aborted&&c()})}async function $xe(e,t,n){let r=JT(),i=WT(t);eT(`db.snapshot.web_download.start`,{path:e,...i});let a,o=`unavailable`;try{a=await navigator.storage.getDirectory();let i=await a.getFileHandle(e,{create:!0});o=typeof i.createWritable==`function`?`create_writable`:`sync_access_worker`;let s;if(o===`sync_access_worker`)s=await Qxe(e,t,n);else{let e=await fetch(t,{cache:`no-cache`,signal:n});if(!e.ok){let t=Error(`snapshot fetch failed: ${e.status}`);throw t.status=e.status,t}let r=await i.createWritable();try{e.body?await e.body.pipeTo(r,n?{signal:n}:{}):(await r.write(await e.blob()),await r.close())}catch(e){try{await r.abort?.()}catch{}throw e}s=+(e.headers.get(`content-length`)||0),s||=(await i.getFile()).size}eT(`db.snapshot.web_download.done`,{path:e,bytes:s,writer:o,ms:JT()-r})}catch(t){let s={path:e,...i,writer:o,status:t?.status,ms:JT()-r,error:Yxe(t)},c=n?.aborted&&(t===n.reason||t?.name===`AbortError`);throw eT(c?`db.snapshot.web_download.aborted`:`db.snapshot.web_download.error`,s),c||Xxe(`web_download`,s),a&&await Og(a,e).catch(()=>{}),t}}async function eSe(e){let t=await navigator.storage.getDirectory(),n=0;for(let r of[e,`${e}-wal`,`${e}-shm`,`${e}-journal`])await Og(t,r).then(e=>{e&&n++}).catch(()=>{});eT(`db.snapshot.web_cleanup.done`,{path:e,deleted:n})}async function tSe(e,t){eT(`db.snapshot.prepare.start`,{platform:zp(),...WT(e)});let n=`turath-metadata-${Date.now()}.sqlite`;return await $xe(n,e,t),eT(`db.snapshot.prepare.done`,{path_kind:`opfs_file`,path:n}),{open_path:n,cleanup:()=>eSe(n)}}function nSe(){return Object.fromEntries(KT.map(e=>[e,{}]))}async function rSe(e,t,n,r,i,a){let o=JT(),s=r?new Set(await t.list_catalog_keys(n)):null,c=oSe,l=null,u=0,d=0,f=0;for(eT(`db.snapshot.store_import.start`,{store_name:n,batch_size:c,skip_existing:r,existing_keys:s?.size||0});;){a?.throwIfAborted();let r=JT(),o=await e.read_catalog_chunk(n,l,c);if(!o.length)break;l=_T(n,o.at(-1));let p=s?o.filter(e=>!s.has(_T(n,e))):o;if(await t.upsert_catalog_records(n,p,{signal:a}),qT.has(n))for(let e of p)i[n][e.id]=e;u+=p.length,d+=o.length-p.length,f++,eT(`db.snapshot.store_import.chunk`,{store_name:n,rows:o.length,imported_rows:p.length,skipped_rows:o.length-p.length,total_imported_rows:u,last_key:l,ms:JT()-r})}eT(`db.snapshot.store_import.done`,{store_name:n,chunks:f,imported_rows:u,skipped_rows:d,ms:JT()-o})}async function GT(e,t={}){let{stores:n=iSe,clear:r=!0,skip_existing_stores:i=[],url:a=aSe(n),signal:o,commit:s=e=>e()}=t,c=JT(),l=WT(a);eT(`db.snapshot.import.start`,{stores:n,clear:r,skip_existing_stores:i,platform:zp(),...l}),$w(`snapshot.import.start`,{stores:n,clear:r,skip_existing_stores:i,...l});let u,d;try{d=await tSe(a,o),o?.throwIfAborted();let t=JT();eT(`db.snapshot.open.start`,{read_only:!1});let{databaseId:l}=await iT(Rg.open({path:d.open_path}));u=new HT(l),await xT(u),eT(`db.snapshot.open.done`,{ms:JT()-t});let f=(await u.query(`SELECT data_version FROM snapshot_meta LIMIT 1`)).values[0];return eT(`db.snapshot.version.read`,{data_version:+(f?.data_version||0)}),await s(async()=>{if(r)for(let t of n){o?.throwIfAborted();let n=JT();eT(`db.snapshot.clear.start`,{store_name:t}),await e.clear_catalog(t),eT(`db.snapshot.clear.done`,{store_name:t,ms:JT()-n})}let t=nSe();for(let r of n)await rSe(u,e,r,i.includes(r),t,o);let a={data:t,data_version:+(f?.data_version||0)};return eT(`db.snapshot.import.done`,{data_version:a.data_version,ms:JT()-c}),a})}catch(e){let t={error:e,stores:n,clear:r,skip_existing_stores:i,...l,ms:JT()-c};throw o?.aborted?eT(`db.snapshot.import.aborted`,t):(Xxe(`import`,{...t,error:Yxe(e)}),$w(`snapshot.import.error`,t)),e}finally{u&&await u.close().then(()=>eT(`db.snapshot.close.done`,{})).catch(e=>eT(`db.snapshot.close.error`,{error:e})),await d?.cleanup().catch(e=>eT(`db.snapshot.cleanup.error`,{error:e}))}}var KT,iSe,qT,aSe,oSe,JT,sSe=o((()=>{Kp(),UT(),Ag(),zg(),KT=[`books`,`authors`,`cats`],iSe=[...KT,`book-meta`,`author-bios`],qT=new Set(KT),aSe=e=>!window.desktop?.is_electron&&e.length===KT.length&&e.every(e=>qT.has(e))?window.CONFIG.METADATA_CORE_SNAPSHOT_URL||`/data-core-v4.sqlite`:window.CONFIG.METADATA_SNAPSHOT_URL||`${window.CONFIG.FILES_URL}/data-v4.sqlite`,oSe=300,JT=()=>typeof performance<`u`?Math.round(performance.now()):Date.now()}));function YT(e,t,n=`turath-file`){let r=[...String(e||``).replace(cSe,``).replace(/[<>:"/\\|?*]+/g,` `).replace(/\s+/g,` `).trim()].slice(0,100).join(``).replace(/^[. ]+|[. ]+$/g,``)||n;return`${/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\.|$)/i.test(r)?`Turath - ${r}`:r}.${String(t||``).replace(/^\./,``)}`}async function XT(e,t,n){Tl(e,t,n)}var cSe,ZT=o((()=>{mf(),cSe=/[\p{Cc}\p{Cs}\ufffe\uffff\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/gu}));async function QT(e,t){let n=await navigator.storage.getDirectory();for(let t of sE(e))await Og(n,t);let r=await(await n.getFileHandle(e,{create:!0})).createWritable();await r.write(t),await r.close()}async function $T(e){let t=await(await navigator.storage.getDirectory()).getFileHandle(e);return new Uint8Array(await(await t.getFile()).arrayBuffer())}async function eE(e){let t=await navigator.storage.getDirectory();for(let n of sE(e))await Og(t,n).catch(()=>{})}async function lSe(e){let t=`turath-restore-${Date.now()}.sqlite`;return await QT(t,e),{open_path:t,read:()=>$T(t),cleanup:()=>eE(t)}}function tE(){let e=yT();return{active:e,recovery:`${e}.restore-recovery`,marker:`${e}.restore-pending`}}async function uSe(e){try{return await $T(e)}catch{return null}}async function dSe(e){await(await navigator.storage.getDirectory()).removeEntry(e)}async function fSe(){return $T(tE().active)}async function nE(e){await QT(tE().active,e)}function pSe(){return FSe||=(async()=>{globalThis.window&&(window._restore_recovery_status=`checking`);try{let{marker:e,recovery:t}=tE();if(!await uSe(e))return globalThis.window&&(window._restore_recovery_status=`not_needed`),!1;let n=await uSe(t);if(!n)throw Error(`database restore recovery file is missing`);return await nE(n),await dSe(e),await eE(t),globalThis.window&&(window._restore_recovery_status=`recovered`),!0}catch(e){throw globalThis.window&&(window._restore_recovery_status=`failed`),e}})(),FSe}async function mSe(e){if((await e.query(`PRAGMA integrity_check`)).values[0]?.integrity_check!==`ok`)throw Error(`backup integrity check failed`)}async function hSe(e){return(await e.query(`SELECT type, name FROM sqlite_master WHERE type IN ('table', 'index', 'view', 'trigger') AND name NOT LIKE 'sqlite_%'`)).values}function gSe(e){for(let t of e)if(!(t.type===`table`&&OSe.has(t.name))&&!(t.type===`index`&&kSe.has(t.name)))throw Error(`backup has an unexpected ${t.type}: ${t.name}`)}function rE(e,t){let n=new Set(e.filter(e=>e.type===`table`).map(e=>e.name));for(let e of t)if(!n.has(e))throw Error(`backup missing table: ${e}`)}async function _Se(e){for(let[t,n]of Object.entries(ASe)){let r=(await e.query(`PRAGMA table_info(${t})`)).values.map(e=>[e.name,String(e.type||``).toUpperCase(),+e.notnull,+e.pk]);if(JSON.stringify(r)!==JSON.stringify(n))throw Error(`backup has an invalid ${t} column contract`)}for(let[t,n]of Object.entries(jSe)){let r=(await e.query(`PRAGMA index_xinfo(${t})`)).values.filter(e=>+e.key==1).sort((e,t)=>e.seqno-+t.seqno).map(e=>[e.name,+e.desc]);if(JSON.stringify(r)!==JSON.stringify(n))throw Error(`backup has an invalid core index: ${t}`)}}async function vSe(e){for(let[t,n]of Object.entries(MSe)){let r=(await e.query(`PRAGMA table_info(${t})`)).values.map(e=>[e.name,String(e.type||``).toUpperCase(),+e.notnull,+e.pk]);if(JSON.stringify(r)!==JSON.stringify(n))throw Error(`backup has an invalid ${t} column contract`)}let t=(await e.query(`PRAGMA foreign_key_list(writing_anchors)`)).values.map(e=>[e.from,e.table,e.to,String(e.on_delete||``).toUpperCase()]).sort((e,t)=>e[0].localeCompare(t[0]));if(JSON.stringify(t)!==JSON.stringify([[`highlight_id`,`highlights`,`id`,`SET NULL`],[`writing_id`,`writings`,`id`,`CASCADE`]]))throw Error(`backup has an invalid writing anchor foreign-key contract`);for(let[t,n]of Object.entries(NSe)){let r=(await e.query(`PRAGMA index_xinfo(${t})`)).values.filter(e=>+e.key==1).sort((e,t)=>e.seqno-+t.seqno).map(e=>[e.name,+e.desc]);if(JSON.stringify(r)!==JSON.stringify(n))throw Error(`backup has an invalid writing index: ${t}`)}let n=(await e.query(`PRAGMA index_list(writing_anchors)`)).values.filter(e=>+e.unique==1),r=!1;for(let t of n){let n=(await e.query(`PRAGMA index_info(${JSON.stringify(t.name)})`)).values.sort((e,t)=>e.seqno-+t.seqno).map(e=>e.name);n.length===1&&n[0]===`highlight_id`&&(r=!0)}if(!r)throw Error(`backup permits one highlight in multiple writings`);let i=String((await e.query(`SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'writing_anchors'`)).values[0]?.sql||``).toLowerCase().replaceAll(/\s+/g,``);for(let e of[`check(book_id>0)`,`check(pg>0)`,`check(position>=0)`,`check((start_offsetisnullandend_offsetisnull)or(start_offset>=0andend_offset>start_offset))`])if(!i.includes(e))throw Error(`backup has an invalid writing anchor check`);if((await e.query(`SELECT id FROM writings UNION ALL SELECT id FROM writing_anchors`)).values.some(e=>!Uh(e.id)))throw Error(`backup has invalid writing data ids`)}async function ySe(e){await mSe(e);let t=+(await e.query(`PRAGMA user_version`)).values[0]?.user_version||0;if(t>2)throw Error(`unsupported database version: ${t}`);let n=await hSe(e);if(gSe(n),rE(n,aE),await _Se(e),t===2){if(rE(n,oE),n.some(e=>e.type===`table`&&e.name===`general_notes`))throw Error(`current backup contains a legacy notes table`);await vSe(e)}return t}async function bSe(e){if(await mSe(e),(+(await e.query(`PRAGMA user_version`)).values[0]?.user_version||0)!=2)throw Error(`backup migration did not finish`);let t=await hSe(e);if(gSe(t),rE(t,oE),await _Se(e),t.some(e=>e.type===`table`&&e.name===`general_notes`))throw Error(`backup migration retained a legacy notes table`);if(await vSe(e),(await e.query(`PRAGMA foreign_key_check`)).values.length)throw Error(`backup has broken writing relationships`)}async function xSe(e){let t=await PSe(e);if(!t)throw Error(`pass a File/Blob/ArrayBuffer/Uint8Array`);let n=await lSe(t),r;try{let e=await iT(Rg.open({path:n.open_path,readOnly:!0}));r=new HT(e.databaseId),await xT(r);let t=await ySe(r);await r.close(),r=null,e=await iT(Rg.open({path:n.open_path,readOnly:!1})),r=new HT(e.databaseId),await xT(r),await r.query(`PRAGMA foreign_keys = ON`),await r.with_transaction(Sxe),await bSe(r),await r.query(`PRAGMA wal_checkpoint(TRUNCATE)`),await r.close(),r=null;let i=await n.read();return{bytes:i,size:i.length,source_version:t}}finally{await r?.close().catch(()=>{}),await n.cleanup().catch(()=>{})}}async function iE(e,t){if(!e)throw Error(`db not ready`);let n=await e.with_exclusive(async e=>(await e.query(`PRAGMA wal_checkpoint(TRUNCATE)`),fSe())),r=new Date().toISOString().replaceAll(`:`,`-`),i=`${t||location.pathname.slice(1).split(`/`)[0]||`turath`}-${r}.sqlite3`;return await XT(n,i,DSe),{filename:i,size:n.length}}async function SSe(e){let t=await xSe(e);return{size:t.size,source_version:t.source_version}}async function CSe(){let{active:e}=tE(),t;try{let n=await iT(Rg.open({path:e,readOnly:!0}));t=new HT(n.databaseId),await xT(t),await bSe(t)}finally{await t?.close().catch(()=>{})}}async function wSe(){let{marker:e,recovery:t}=tE();await dSe(e),await eE(t)}async function TSe(e,t){let n=await xSe(t),r=null,i=!1,{marker:a,recovery:o}=tE(),s=async()=>{e&&(await e.with_exclusive(async e=>{await e.query(`PRAGMA wal_checkpoint(TRUNCATE)`),r=await fSe()}),await QT(o,r),await QT(a,new TextEncoder().encode(`pending`)),i=!0)};try{window._shutdown_before_reload?await window._shutdown_before_reload(s):(await s(),e&&await CT(e))}catch(e){throw i&&location.reload(),e}let c=yT();try{await nE(n.bytes),await CSe(),r&&await wSe()}catch(e){if(r){try{await nE(r),await wSe()}catch{}location.reload()}throw e}return location.reload(),{filename:c,size:n.size}}function ESe(e){window.__sync_download_db=t=>iE(e?.(),t),window.__sync_load_db=t=>TSe(e?.(),t),window.__sync_validate_db=e=>SSe(e)}var DSe,aE,oE,OSe,kSe,ASe,jSe,MSe,NSe,PSe,sE,FSe,ISe=o((()=>{ZT(),Wh(),UT(),Ag(),zg(),DSe=`application/x-sqlite3`,aE=[`kv`,`books`,`authors`,`cats`,`book_indexes`,`book_meta`,`author_bios`,`pages`,`highlights`],oE=[...aE,`writings`,`writing_anchors`],OSe=new Set([...oE,`general_notes`,`study_decks`,`study_cards`,`study_card_sources`,`study_card_suspensions`,`study_reviews`,`pages_fts`,`pages_fts_data`,`pages_fts_idx`,`pages_fts_content`,`pages_fts_docsize`,`pages_fts_config`]),kSe=new Set([`idx_pages_book_id`,`idx_highlights_book_id`,`idx_highlights_book_pg`,`idx_writings_deleted_updated`,`idx_writing_anchors_writing_position`,`idx_writing_anchors_book_page`,`idx_study_cards_deck_created`,`idx_study_cards_due`,`idx_study_cards_deck_due`,`idx_study_reviews_card_reviewed`]),ASe={kv:[[`key`,`TEXT`,0,1],[`value`,`TEXT`,1,0]],books:[[`id`,`INTEGER`,0,1],[`json`,`TEXT`,1,0]],authors:[[`id`,`INTEGER`,0,1],[`json`,`TEXT`,1,0]],cats:[[`id`,`INTEGER`,0,1],[`json`,`TEXT`,1,0]],book_indexes:[[`book_id`,`INTEGER`,0,1],[`json`,`TEXT`,1,0]],book_meta:[[`book_id`,`INTEGER`,0,1],[`json`,`TEXT`,1,0]],author_bios:[[`author_id`,`INTEGER`,0,1],[`json`,`TEXT`,1,0]],pages:[[`book_id`,`INTEGER`,1,1],[`pg`,`INTEGER`,1,2],[`json`,`TEXT`,1,0]],highlights:[[`id`,`INTEGER`,0,1],[`book_id`,`INTEGER`,1,0],[`pg`,`INTEGER`,1,0],[`json`,`TEXT`,1,0]]},jSe={idx_pages_book_id:[[`book_id`,0]],idx_highlights_book_id:[[`book_id`,0]],idx_highlights_book_pg:[[`book_id`,0],[`pg`,0]]},MSe={writings:[[`id`,`TEXT`,1,1],[`title`,`TEXT`,1,0],[`text`,`TEXT`,1,0],[`doc_json`,`TEXT`,1,0],[`created_at`,`INTEGER`,1,0],[`updated_at`,`INTEGER`,1,0],[`deleted_at`,`INTEGER`,0,0]],writing_anchors:[[`id`,`TEXT`,1,1],[`writing_id`,`TEXT`,1,0],[`highlight_id`,`INTEGER`,0,0],[`book_id`,`INTEGER`,1,0],[`pg`,`INTEGER`,1,0],[`start_offset`,`INTEGER`,0,0],[`end_offset`,`INTEGER`,0,0],[`quote`,`TEXT`,1,0],[`quote_prefix`,`TEXT`,1,0],[`quote_suffix`,`TEXT`,1,0],[`position`,`INTEGER`,1,0],[`created_at`,`INTEGER`,1,0]]},NSe={idx_writings_deleted_updated:[[`deleted_at`,0],[`updated_at`,1]],idx_writing_anchors_writing_position:[[`writing_id`,0],[`position`,0],[`created_at`,0],[`id`,0]],idx_writing_anchors_book_page:[[`book_id`,0],[`pg`,0]]},PSe=async e=>e?e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):e?.arrayBuffer?new Uint8Array(await e.arrayBuffer()):null:null,sE=e=>[e,`${e}-wal`,`${e}-shm`,`${e}-journal`]}));function LSe(e,t=Date.now()){let{shows:n,last_contact_at:r,last_contact_visits:i,outcome:a}=uE(e?.donate_prompt);return n>=3||(e?.app_visits||0)-i<8?!1:!r||t-r>=(HSe[a]||1296e6)}function RSe(e,t=Date.now()){let n=uE(e?.donate_prompt);return{...n,...dE(e,t),shows:n.shows+1,outcome:``}}function zSe(e,t,n=Date.now()){return{...uE(e?.donate_prompt),...dE(e,n),outcome:t}}var cE,BSe,VSe,lE,HSe,uE,dE,fE=o((()=>{cE=`https://nuqayah.com/support#donate`,BSe=7776e6,VSe=31536e6,lE={shows:0,last_contact_at:0,last_contact_visits:0,outcome:``},HSe={visited:BSe,given:VSe},uE=e=>({...lE,...e}),dE=(e,t)=>({last_contact_at:t,last_contact_visits:e?.app_visits||0})}));function USe(e,t){return typeof e==`string`&&e.trim().slice(0,_Ce)||t}function pE(e){return Object.fromEntries(Object.entries(bE).map(([t,n])=>[t,USe(e?.[t],n)]))}function mE(e){return gCe.has(e)?e:`yellow`}function WSe(e,t=`h-[0.9rem] w-[0.9rem]`){let n=mE(e);return`hl-${n} ${yCe} ${t} ${xE[n]}`}function GSe(e){let t=mE(e);return`hl-${t} ${bCe} ${xE[t]}`}function KSe(e){let t=mE(e?.color);return`hl hl-${t} cursor-pointer rounded-[3px] px-[0.08em] box-decoration-clone [-webkit-box-decoration-break:clone] ${vCe[t]}`}function qSe(e){let t=new Map;for(let n of e||[]){let e=+n?.pg,r=+(n?.end_pg||e);if(!(!Number.isSafeInteger(e)||e<1||!Number.isSafeInteger(r)||r(+e.pg||0)-(+t.pg||0)||(+e.start||0)-(+t.start||0))}function YSe(e,t){return(e||[]).find(e=>e.id===t)||null}function XSe(e,t){return`${e}-${new Date().toISOString().replace(/[:]/g,`-`).slice(0,19)}.${t}`}function ZSe(e,{title:t,count_line:n,heading:r,note_label:i=``}){let a=[`# ${t}`,``,n,``];return e.forEach((e,t)=>{a.push(`## ${r(e,t)}`,``,`> ${e.text||`—`}`,``),e.note&&(i&&a.push(i,``),a.push(e.note,``))}),a.join(` `)}function QSe(e){let t=String(e||``);return/[",\n]/.test(t)?`"${t.replace(/"/g,`""`)}"`:t}function $Se(e){return[[`book_id`,`book_name`,`page`,`color`,`text`,`note`,`updated_at`],...e.map(e=>[e.book_id,e.book_name||``,e.end_pg&&e.end_pg!==e.pg?`${e.pg}-${e.end_pg}`:e.pg,e.color||``,e.text||``,e.note||``,e.updated_at||``])].map(e=>e.map(QSe).join(`,`)).join(` `)}function eCe(e,t=document){return Gl(e,_E(t,e.pg,e.end_pg||e.pg))}function hE(e,t,n){if(!Number.isInteger(t)||!Number.isInteger(n)||t<0||n<=t)return null;let r=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),i=0,a=null,o=null;for(;a=r.nextNode();){let e=i+(a.nodeValue?.length||0);if(!o&&t(e.width||e.height)&&e.bottom>t.top&&e.top .relative`),i=t?.querySelector(`#pg-${n} > .relative`);if(!r||!i)return null;let a=_E(t,e.pg,n),o=Gl(e,a);if(!o)return null;let s=tCe(r,o[0].start,i,o.at(-1).end);if(!s)return null;let c=aCe(s,r.closest(`.viewport`)?.getBoundingClientRect()||iCe());if(!c)return null;let l=a.map(({index:e},t)=>Ul(e,o[t].start,o[t].end));return{...e,start:o[0].start,end:o.at(-1).end,...l?vE(a,l,{exclude_footnotes:e.exclude_footnotes??(!gE(s.startContainer)&&!gE(s.endContainer)),get_page_no:t=>t===e.pg?e.page_no:t===n?e.end_page_no:``}):{},anchor:c}}function sCe(e,t,n){if(!e?.contains(t))return null;let r=document.createRange();return r.setStart(e,0),r.setEnd(t,n),r.cloneContents().textContent.length}function cCe(e){return+e?.id?.replace(`pg-`,``)||0}function _E(e,t,n){let r=[];for(let i=t;i<=n;i++){let t=e?.querySelector(`#pg-${i} > .relative`);if(!t)return null;r.push({pg:i,container:t,index:Bl(t)})}return r}function vE(e,t,{exclude_footnotes:n=!1,get_page_no:r=()=>``}={}){let i=t.flatMap((t,n)=>(t.footnotes||[]).map(t=>({pg:e[n].pg,page_no:r(e[n].pg)||``,text:t})));if(!i.length)return{};let a=t.map(e=>e.text_without_footnotes??e.text).filter(Boolean).join(` `);return{has_footnotes:!0,can_exclude_footnotes:!!a,text_without_footnotes:a,footnotes:i,exclude_footnotes:!!(n&&a)}}function lCe({pdf_on:e,cur_page_num:t,get_vol_page_no:n}){if(e)return null;let r=document.getSelection();if(!r||r.isCollapsed)return null;let i;try{i=r.getRangeAt(0)}catch{return null}let a=aCe(i);if(!a)return null;let o=nCe(i.startContainer),s=nCe(i.endContainer),c=cCe(o)||t,l=cCe(s)||t;if(!o||!s||lpre(e,t,p[n]));if(!m.every(Boolean))return null;let h=!gE(i.startContainer)&&!gE(i.endContainer);return{pg:c,...l>c?{end_pg:l,end_page_no:n(l)||``}:{},page_no:n(c)||``,text:p.map(e=>e.text).join(` `),text_anchors:m,...vE(u,p,{exclude_footnotes:h,get_page_no:n}),start:d,end:f,anchor:a}}function uCe(e,t,n=!1){return Array.from(e).slice(n?-t:0,n?void 0:t).join(``)}function dCe(e,t,n=document){let r=typeof e?.text==`string`?e.text.trim():``,i=e?.end_pg||e?.pg;if(!e?.pg||!r||iUl(e,o[t].start,o[t].end));if(!s.every(Boolean))return null;let c=s[0],l=s.at(-1);return{pg:e.pg,...i>e.pg?{end_pg:i,end_page_no:e.end_page_no||``}:{},page_no:e.page_no||``,text:r,...vE(a,s,{exclude_footnotes:e.exclude_footnotes,get_page_no:t=>t===e.pg?e.page_no:t===i?e.end_page_no:``}),prefix:uCe(a[0].index.text.slice(0,c.start),t,!0),suffix:uCe(a.at(-1).index.text.slice(l.end),t)}}function fCe(e){e.note_draft?.mode===`selection`&&(e.note_draft=null),e.selection=null}function pCe(e){return e?{mode:`selection`,highlight_id:null,color:`yellow`,text:``,saving:!1,error:``,anchor:{...e.anchor},selection:structuredClone(e)}:null}function mCe(e,t){return!e?.id||!t?null:{mode:`highlight`,highlight_id:e.id,color:mE(e.color),text:e.note||``,saving:!1,error:``,anchor:{...t}}}function hCe(e,t){let n,r,i,a=!1;function o(){e.querySelectorAll(`span.hl[data-hl-id]`).forEach(e=>e.replaceWith(...e.childNodes)),e.normalize()}function s(t){let s=JSON.stringify((t.highlights||[]).map(e=>[e.id,e.updated_at,e.start,e.end,e.end_pg,e.color,e.text,e.note,e.text_anchors]));(t.html!==r||s!==i)&&(i=s,n=t,t.html!==r&&(e.innerHTML=t.html,r=t.html),queueMicrotask(()=>{if(a||n!==t)return;o();let r=Bl(e),i=(t.highlights||[]).flatMap(n=>{let i=n.text_anchors?.find(e=>e?.pg===t.pg),a=e.closest(`.viewport`),o=i?Gl(n,[{pg:t.pg,index:r}])?.[0]:eCe(n,a)?.[t.pg-n.pg];return o?[{item:n,...o}]:[]}).sort((e,t)=>t.start-e.start||t.end-e.end);for(let{item:t,start:n,end:r}of i){let i=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),a=[],o=0,s;for(;s=i.nextNode();){let e=o+s.data.length;if(e>n&&o=r)break}for(let e of a.reverse()){let n=e.start>0?e.node.splitText(e.start):e.node;e.end-e.start{mf(),ou(),Uc(),yE=[`yellow`,`green`,`blue`,`orange`],gCe=new Set(yE),bE=Object.freeze((()=>{let e=Hc();return{yellow:e(1342),green:e(1331),blue:e(1338),orange:e(1386)}})()),_Ce=24,xE={yellow:`bg-(--hl-yellow-solid)`,green:`bg-(--hl-green-solid)`,blue:`bg-(--hl-blue-solid)`,orange:`bg-(--hl-orange-solid)`},vCe={yellow:`bg-(--hl-yellow) dark:bg-(--hl-yellow-dark)`,green:`bg-(--hl-green) dark:bg-(--hl-green-dark)`,blue:`bg-(--hl-blue) dark:bg-(--hl-blue-dark)`,orange:`bg-(--hl-orange) dark:bg-(--hl-orange-dark)`},yCe=`hl-swatch inline-block rounded-full border border-(--hl-swatch-border)`,bCe=`hl-btn inline-block h-[1.35rem] w-[1.35rem] min-w-0 rounded-full border border-(--hl-toolbar-border) p-0 shadow-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring`,SE={colors:yE,normalize_color:mE,classes:{swatch:WSe,toolbar_button:GSe,span:KSe},derive:{by_page:qSe,sorted_by_page:JSe,find_by_id:YSe},export:{filename:XSe,markdown:ZSe,csv:$Se},model:{clear_selection_state:fCe,note_draft_from_selection:pCe,note_draft_from_highlight:mCe},effects:{capture_selection:lCe,range_from_offsets:hE,resolve_ranges:eCe,refresh_selection_anchor:oCe,selection_excerpt:dCe,clear_dom_selection:rCe},svelte:{apply_highlights:hCe}}}));function wE(e,t){for(;t{if(!Object.prototype.hasOwnProperty.call(t||{},r))return e;let i=t[r];return i==null?``:typeof i==`number`&&Number.isFinite(i)?Ec(i,{},n):String(i)})}var DE,OE,kE=o((()=>{Mc(),DE=new Map,OE=new Map}));function AE(e,t){return Math.min(Math.max(Number.isSafeInteger(+e)?+e:1,1),Math.max(1,t))}function jE(e){let t=LE(e);return!!(t.downloaded||t.download_pending)}function CCe(e){if(!e)return e;let{downloaded:t,download_pending:n,dirty:r,...i}=e;return Object.keys(i).length?i:void 0}function ME(e){return!!LE(e).downloaded}function NE(e){return Object.entries(e||{}).filter(([,e])=>jE(e)).map(([e])=>+e)}function wCe(e,t){let n=IE(t);return n!==null&&(LE(e).favorites||[]).some(e=>+e.page===n)}function TCe(e,t,n=Date.now()){let r=LE(e),i=IE(t);return i===null?r:{...r,favorites:[...(r.favorites||[]).filter(e=>+e.page!==i),{page:i,date:n}]}}function ECe(e,t){let n=LE(e),r=IE(t);return r===null?n:{...n,favorites:(n.favorites||[]).filter(e=>+e.page!==r)}}function DCe(e,t){let n=LE(e),r=IE(t);if(r===null)return n;let i=new Set(n.history||[]);return i.delete(r),i.add(r),{...n,history:i}}function OCe(e,t){let n=LE(e),r=IE(t);if(r===null)return n;let i=new Set(n.history||[]);return i.delete(r),{...n,history:i}}function kCe(e,t=Date.now()){let n=LE(e);return{...n,opened:t,history:new Set(n.history||[])}}function ACe(e,t,n=0,r=`text`){let i=LE(e),a=IE(t);return n=Math.round(Math.max(0,Math.min(1,+n||0))*1e4)/1e4,a===null||(i.reader_mode||`text`)===r&&i.now_reading===a&&(i.now_reading_fraction||0)===n?i:{...i,reader_mode:r,now_reading:a,now_reading_fraction:n}}function PE(e){let t=LE(e);return t.dirty?t:{...t,dirty:!0}}function jCe(e,t){let n=[],r=[];for(let i of t)(jE(e?.[i])?n:r).push(+i);return{flag:n,clear:r}}function MCe(e,t){let n={};for(let[r,i]of Object.entries(e||{}))r in t&&(n[r]=jE(i)?PE(i):i);return n}function NCe(e,t=!1){let n=LE(e);return!n.dirty&&!n.download_pending?null:n.downloaded||n.download_pending||t?`download`:`invalidate`}function PCe(e,t=new Set){return Object.entries(e||{}).filter(([e,n])=>(n?.dirty||n?.download_pending)&&!t.has(+e)).sort((e,t)=>(+t[1].opened||0)-(+e[1].opened||0)).map(([e])=>+e)}function FCe(e,t,n){let r=e.books_local?.[t]||{},i=n(r);return i===r?e:{...e,books_local:{...e.books_local,[t]:i}}}var ICe,FE,IE,LE,RE=o((()=>{Uc(),ICe=Hc()(1345),FE=Hc()(1337),IE=e=>{let t=+e;return Number.isSafeInteger(t)&&t>0?t:null},LE=e=>e||{}}));function LCe(e,t){let n=BE(t),r=[],i=[];for(let t of UE){let a=[],o=[];for(let[r,i]of Object.entries(e?.[WE[t]]||{})){let s=UCe(t,r,i,e);if(!s)continue;let c=t===`book`?e.authors?.[i.author_id]:null,l=HCe(i,s.label);n&&!l.startsWith(n)&&!`${l} ${HCe(c,s.detail)}`.includes(n)||(n&&l.startsWith(n)?a.push(s):o.push(s))}a.sort(WCe),o.sort(WCe),r.push(...a),i.push(...o)}return r.concat(i)}function RCe(e=``){let t=/(?:^|\s)@(?:<([^>\n\r]*)>|([^<>\n\r]*))$/u.exec(e);if(!t)return null;let n=e.lastIndexOf(`@`);return n<0?null:{from:n,raw:t[1]??t[2]??``}}function zCe(e=[],t=[]){return e.length===t.length&&e.every((e,n)=>e.kind===t[n]?.kind&&e.id===t[n]?.id&&e.label===t[n]?.label)}function BCe(e,t,n={}){let r=HE(t);if(!UE.includes(e)||!r)return null;let i=n[WE[e]]?.[r];return{kind:e,id:r,label:String(i?.name||`${GE[e]} #${r}`)}}function zE(e){return`${e.kind}:${e.id}`}function VCe(e,t){e=String(e||``);let n=new Map;for(let e of UE)for(let[r,i]of Object.entries(t?.[WE[e]]||{})){let a=UCe(e,r,i,t);if(!a)continue;let o=BE(a.label),s=n.get(o)||[];s.push(a),n.set(o,s)}let r=[],i=0;for(let t of e.matchAll(/@<([^>\n\r]+)>/gu)){t.index>i&&r.push({text:e.slice(i,t.index)});let a=n.get(BE(t[1]))||[];a.length===1?r.push({reference:a[0]}):r.push({text:t[0]}),i=t.index+t[0].length}return i0?t:0}function HCe(e,t){if(!e||!t)return``;let n=KE.get(e);if(n?.name===t)return n.normalized;let r=BE(t);return KE.set(e,{name:t,normalized:r}),r}function UCe(e,t,n,r){let i=HE(n?.id??t),a=String(n?.name||``).trim();return!i||!a?null:{kind:e,id:i,label:a,detail:e===`book`?String(r.authors?.[n.author_id]?.name||``).trim():``}}function WCe(e,t){return e.label.localeCompare(t.label,`ar`)||e.id-t.id}var UE,WE,GE,KE,qE=o((()=>{Uc(),UE=[`book`,`author`,`cat`],WE={book:`books`,author:`authors`,cat:`cats`},GE=(()=>{let e=Hc();return{book:e(639),author:e(723),cat:e(636)}})(),KE=new WeakMap}));function GCe(e){return(e?.name||``).replace(/^ال/,``)}function JE(e,t){return e.map(Number).filter(e=>t?.[e])}function YE(e,{books:t={},authors:n={},sort_key:r=`date_death`,ascending:i=!0}={}){let a=(tD[r]||tD.date_death)(t,n),o=i?1:-1;return JE(e,t).sort((e,n)=>a(e,n)*o||eD(t)(e,n))}function XE(e=``){let t=bl(e.trim());return t.source===`(?:)`?null:t}function ZE(e,t,{books:n={},authors:r={}}={}){return t?e.filter(e=>{let i=n[e];if(!i)return!1;let a=r[i.author_id]||{};return t.test(`${i.name} ${a.name||``}`)}):e}function KCe(e={},t=``,n=200){let r=BE(t);if(r.length<2)return{items:[],limited:!1};let i=r.split(` `),a=[[],[],[],[]],o=0;for(let t of Object.values(e||{})){let e=BE(t?.name);if(!e)continue;let s=-1;if(e===r)s=0;else if(e.startsWith(r))s=1;else{let t=e.split(` `);i.every(e=>t.some(t=>t.startsWith(e)))?s=2:i.every(t=>e.includes(t))&&(s=3)}s<0||(o+=1,a[s].lengthn}}function qCe(e={},t={}){return JE(Object.entries(e).filter(([,e])=>+e?.opened).sort((e,n)=>(+n[1]?.opened||0)-(+e[1]?.opened||0)||eD(t)(e[0],n[0])).map(([e])=>e),t)}function JCe(e,t){if(!t.length)return{ids:e,opened_count:0};let n=new Set(e),r=t.filter(e=>n.has(e)),i=new Set(r);return{ids:[...r,...e.filter(e=>!i.has(e))],opened_count:r.length}}function YCe(e,{books_local:t={},book_favorites:n={},books:r={}}={}){return e===`favorites`?JE(Object.entries(n).filter(([,e])=>e).sort((e,t)=>(+t[1]||0)-(+e[1]||0)||eD(r)(e[0],t[0])).map(([e])=>e),r):e===`downloaded`?JE(Object.entries(t).filter(([,e])=>jE(e)).sort((e,t)=>(+t[1]?.opened||0)-(+e[1]?.opened||0)||eD(r)(e[0],t[0])).map(([e])=>e),r):[]}function XCe(e={}){let t={};for(let[n,r]of Object.entries(e)){if(!jE(r)&&!r?.dirty&&!r?.favorites?.length&&!r?.pdf_favorites?.length)continue;let e={...r};delete e.opened,t[n]=e}return t}function ZCe(e,t,n={}){let r=Number(t);return Object.values(n||{}).filter(t=>Number(t?.[e])===r).map(e=>e.id)}function QE(e,t={}){let n={};for(let r of Object.values(t||{})){let t=r?.[e];t&&(n[t]=(n[t]||0)+1)}return n}function QCe(e={},t={}){let n=Object.values(e.books||{}),r=[];for(let i of owe){let a=new Set(VE([...t[i.id]||[]]));if(!a.size)continue;let o=a.size===1?[...a][0]:0,s=o&&e[WE[i.id]]?.[o]?.name||``;r.push({id:i.id,label:s?`${i.prefix} ${s}`:i.plural,ids:new Set(n.filter(e=>a.has(Number(e?.[i.book_key]))).map(e=>Number(e.id)))})}return r}function $E({books:e={},authors:t={}}={}){let n=QE(`author_id`,e),r=QE(`cat_id`,e);return{book:e=>{let n=t[e.author_id];return[n?.name,pu(n)].filter(Boolean).join(` `)},author:e=>rD(n[e.id]),cat:e=>rD(r[e.id])}}function $Ce(e,t){let n=[],r=[];for(let i of e)(t.has(i.id)?n:r).push(i);return[...n,...r]}function ewe(e,t,n,r){let i=BE(e.name);if(t&&i.startsWith(t))return 1;if(t&&i.includes(t))return 2;if(!n)return 0;if(n.test(e.name))return 3;let a=r?.(e);return a&&n.test(a)?4:0}function twe(e=[],{regex:t=null,text:n=``,describe:r,selected:i}={}){let a=BE(n);if(!a&&!t)return i?.size?$Ce(e,i):e;let o=[];for(let n=0;ne.rank-t.rank||e.i-t.i).map(e=>e.item)}function nwe(e){let t=Hc();if(e.death==null)return{id:`author-period:contemporary`,name:t(1492),order:3e3};if(e.death<0)return{id:`author-period:before-hijri`,name:t(1469),order:-1};let n=Math.floor((e.death-1)/100)+1;return{id:`author-century:${n}`,name:t(254,[Ec(n,{useGrouping:!1})]),order:n}}function rwe(e={},t={}){let n=QE(`author_id`,t),r=new Map;for(let t of Object.values(e||{})){if(!t?.id)continue;let e=nwe(t);r.has(e.id)||r.set(e.id,{...e,items:[]}),r.get(e.id).items.push({id:`author:${t.id}`,label:t.name,href:`/author/${t.id}`,meta_label:pu(t),count:n[t.id]||0,search_text:`${t.name} ${pu(t)}`,sort_death:t.death||2100})}return[...r.values()].map(e=>({...e,label:e.name,items:e.items.sort((e,t)=>e.sort_death-t.sort_death||e.label.localeCompare(t.label)).map(e=>({id:e.id,label:e.label,href:e.href,meta_label:e.meta_label,count:e.count,search_text:e.search_text}))})).sort((e,t)=>e.order-t.order)}function iwe(e=[],t=null){let n=new Set,r=new Set;if(!t)return{keep:n,matched_groups:r,active:!1,count:0};let i=0;for(let a of e){let e=t.test(a.search_text||a.label),o=!1;for(let r of a.items||[])(e||t.test(r.search_text||r.label))&&(n.add(r.id),o=!0,i++);o&&(n.add(a.id),r.add(a.id))}return{keep:n,matched_groups:r,active:!0,count:i}}function awe(e={},t={},n={}){let r=new Map;for(let e of Object.values(t||{}))!e?.id||!e.cat_id||(r.has(e.cat_id)||r.set(e.cat_id,[]),r.get(e.cat_id).push(e.id));return Object.entries(e||{}).sort((e,t)=>e[0]-+t[0]).map(([e,i])=>({id:`cat:${e}`,label:i.name,href:`/category/${e}`,search_text:`${e} ${i.name}`,items:YE(r.get(+e)||[],{books:t,...n}).map(e=>({id:`book:${e}`,label:t[e].name,href:`/book/${e}`,search_text:`${i.name} ${t[e].name}`}))})).filter(e=>e.items.length)}var eD,tD,nD,owe,rD,iD,aD=o((()=>{Ll(),Mc(),kE(),RE(),qE(),Eu(),Uc(),eD=e=>(t,n)=>GCe(e[t]).localeCompare(GCe(e[n]))||Number(t)-Number(n),tD={date_death:(e,t)=>(n,r)=>(t[e[n]?.author_id]?.death??2100)-(t[e[r]?.author_id]?.death??2100),name:e=>eD(e),date_added:()=>(e,t)=>Number(e)-Number(t),size:e=>(t,n)=>(e[t]?.size||0)-(e[n]?.size||0)},nD=(()=>{let e=Hc();return{date_death:[e(1393)],name:[e(187)],date_added:[e(325),1],size:[e(224),1]}})(),owe=(()=>{let e=Hc();return[{id:`author`,book_key:`author_id`,prefix:e(642),plural:e(1474)},{id:`cat`,book_key:`cat_id`,prefix:e(1475),plural:e(1473)}]})(),rD=e=>{let t=Hc();return e?EE(t(1521),{count:e},t.l):``},iD={author:pu}}));async function swe(e,t){let n;try{await e()}catch(e){n=e}try{await t()}catch(e){n||=e}if(n)throw n}var cwe=o((()=>{}));function oD(e){let t=+e,n=fD||uD.get(t);return n?n.promise.then(()=>oD(t)):Promise.resolve()}function lwe(e){dD++||(fD=gD(),mD.set(!0));let t=sD(e),n=!1;return()=>{n||(n=!0,t(),!--dD&&(mD.set(!1),fD.resolve(),fD=null))}}function sD(e){let t=[...new Set((e||[]).map(Number).filter(Boolean))];for(let e of t)cD.set(e,_D(e)+1),lD.has(e)||uD.set(e,gD()),lD.set(e,(lD.get(e)||0)+1);hD(t);let n=!1;return()=>{if(!n){n=!0;for(let e of t){let t=lD.get(e)-1;t?lD.set(e,t):(lD.delete(e),uD.get(e).resolve(),uD.delete(e))}hD(t)}}}var cD,lD,uD,dD,fD,pD,mD,hD,gD,_D,vD,yD,bD=o((()=>{df(),cD=new Map,lD=new Map,uD=new Map,dD=0,pD=yn({}),mD=yn(!1),hD=e=>pD.update(t=>({...t,...Object.fromEntries(e.map(e=>[e,{generation:cD.get(e)||0,pending:lD.has(e)}]))})),gD=()=>{let e;return{promise:new Promise(t=>e=t),resolve:e}},_D=e=>cD.get(+e)||0,vD=(e,t)=>_D(e)===t,yD=e=>!!(dD||lD.has(+e))}));function uwe(e){return SD(e).value}function dwe(e){return SD(e).style}var fwe,xD,pwe,SD,CD=o((()=>{Uc(),fwe=(()=>{let e=Hc();return[{value:`light`,label:e(614),colors:{bg:`#fbfaf7`,fg:`#17120b`,muted:`#695f50`,accent:`#9b5f21`,border:`#e3d7c5`,gold:`#d8aa4b4d`}},{value:`dark`,label:e(544),colors:{bg:`#111315`,fg:`#f4efe7`,muted:`#bdb4a7`,accent:`#dfb46d`,border:`#3d403d`,gold:`#d8aa4b4d`}},{value:`sepia`,label:e(1325),colors:{bg:`#f4ead6`,bg_mid:`#efe2c9`,bg_end:`#e8d8ba`,fg:`#21170d`,muted:`#73614c`,accent:`#96601f`,border:`#d6c09b`,gold:`#d8aa4b80`}},{value:`brand`,label:e(345),colors:{bg:`#f8fbfd`,bg_mid:`#e4f2f7`,bg_end:`#d6ecf2`,fg:`#12384d`,muted:`#567383`,accent:`#1a6a8e`,border:`#bcd9e4`,gold:`#d8aa4b66`}}]})(),xD=fwe.map(e=>{let t={bg_mid:e.colors.bg,bg_end:e.colors.bg,...e.colors};return{...e,colors:t,style:Object.entries(t).map(([e,t])=>`--share-${e.replace(/_/g,`-`)}: ${t};`).join(` `)}}),pwe=xD[0].value,SD=e=>xD.find(t=>t.value===e)||xD[0]}));function mwe({abort_active_work:e,close_db:t,flush_state:n,get_boot_promise:r,get_active_work_promise:i,report_active_work_error:a}){let o=null;return{get pending(){return!!o},run(s){return o?s?Promise.reject(Error(`Shutdown already started with another transition`)):o:(o=Promise.resolve().then(async()=>{e?.(),await r();try{await i()}catch(e){try{a?.(e)}catch{}}await n?.(),await s?.(),await t()}).catch(e=>{throw o=null,e}),o)}}}var hwe=o((()=>{}));function wD(e){return`${e.book_id}:${e.meta?.page_id||e.page}`}function gwe(e,t){let n=new Set(e.map(wD));return[...e,...t.filter(e=>{let t=wD(e);return!n.has(t)&&(n.add(t),!0)})]}function _we(e){let t=new URLSearchParams(e);return t.delete(`search_session`),t.delete(`scope`),t.delete(`open_results_in_new_tabs`),t.sort(),t.toString()}function vwe(e){return e?.version===1&&typeof e.signature==`string`&&[`text`,`toc`].every(t=>{let n=e.result_sets?.[t];return Number.isInteger(n?.page)&&n.page>=0&&Number.isFinite(n.count)&&Array.isArray(n.data)&&n.data.every(e=>e?.book_id&&e.page&&e.meta&&typeof e.meta==`object`)})}function ywe(e){return[`text`,`toc`].includes(e?.scope)&&e.positions&&typeof e.positions==`object`&&[`text`,`toc`].every(t=>{let n=e.positions[t],r=e.expanded?.[t];return(!n||(typeof n.key==`string`||n.key===null)&&Number.isFinite(n.fraction)&&Number.isFinite(n.scroll_top))&&(!r||typeof r==`object`&&!Array.isArray(r)&&Object.values(r).every(e=>typeof e==`boolean`))})}function bwe(){let e,t,n={},r={},i=!1,a=!1,o=Promise.resolve(),s=new Set;async function c(i){if(e!==i)e=i,t=Promise.all([e.get_kv(TD),e.get_kv(ED)]).then(([e,t])=>{n=Object.fromEntries(Object.entries(e||{}).filter(([,e])=>vwe(e))),r=t&&typeof t==`object`?t:{}}).catch(e=>{throw t=null,e});else if(!t)return e=null,c(i);await t}function l(){let t=o.then(async()=>{if(i){i=!1;try{await e.set_kv(TD,n)}catch(e){throw i=!0,e}}if(a){a=!1;try{await e.set_kv(ED,r)}catch(e){throw a=!0,e}}});return o=t.catch(()=>{}),t}return{init:c,read(e,t){let i=n[e];return i?.signature===t?JSON.parse(JSON.stringify({snapshot:i,position:ywe(r[e])?r[e]:void 0})):null},save_results(e,t){n={...n,[e]:JSON.parse(JSON.stringify({...t,version:1,updated_at:Date.now()}))};let o=Object.keys(n).sort((e,t)=>n[e].updated_at-n[t].updated_at);for(;o.length>1&&(o.length>Swe||JSON.stringify(n).length*2>xwe);){let e=o.shift();if(!e)break;delete n[e],r={...r},delete r[e],a=!0}return i=!0,l()},save_position(e,t){n[e]&&(r={...r,[e]:JSON.parse(JSON.stringify(t))},a=!0)},remove(e){return!n[e]&&!r[e]?Promise.resolve():(n={...n},r={...r},delete n[e],delete r[e],i=a=!0,l())},register(e){return s.add(e),()=>s.delete(e)},async checkpoint({shutdown:e=!1}={}){try{for(let t of s)await t(e);await l()}catch(t){if(e)for(let e of s)await e(!1);throw t}},flush:l}}var TD,ED,xwe,Swe,DD,Cwe=o((()=>{TD=`search_sessions_v1`,ED=`search_positions_v1`,xwe=8388608,Swe=20,DD=bwe()}));function wwe(e,{now:t=Date.now(),last_other_ask_at:n=0}={}){let{shows:r,last_shown_at:i,last_shared_at:a,outcome:o}={...kD,...e?.share_prompt};if(o===`never`||(e?.app_visits||0)<20||!AD(n,t))return!1;if(a)return t-Math.max(a,i)>=Awe;if(!r)return!0;let s=kwe[r-1];return s!==void 0&&t-i>=s}function Twe(e,t=Date.now()){let n={...kD,...e?.share_prompt};return{...n,shows:n.shows+1,last_shown_at:t}}function Ewe(e,t,n=Date.now()){let r={...kD,...e?.share_prompt};return t===`never`?{...r,outcome:t}:{...r,last_shared_at:n}}var OD,Dwe,Owe,kwe,Awe,jwe,Mwe,kD,AD,Nwe=o((()=>{OD=864e5,Dwe=6e4,Owe=8e3,kwe=[14*OD,30*OD,60*OD,120*OD],Awe=182*OD,30*OD,jwe=new Set([`books`,`settings`,`highlights`,`writing`,`study`,`quotes`]),Mwe=e=>e?.surface===`tab`&&jwe.has(e.kind)&&!e.book_id&&e.study_view!==`session`,kD={shows:0,last_shown_at:0,last_shared_at:0,outcome:``},AD=(e,t=Date.now())=>!e||t-e>=2592e6}));function Pwe(){return globalThis.__TURATH_STUDY_FEATURE__}function Fwe(e=null){return!!Pwe()?.has_pending_drafts(e)}async function jD(e=null){await Pwe()?.flush_drafts(e)}var MD=o((()=>{})),ND,Iwe,PD,FD,ID=o((()=>{Uc(),ND=(()=>{let e=Hc();return[{slug:`aqeedah`,label:e(1458)},{slug:`hadith`,label:e(502)},{slug:`sirah`,label:e(1454)},{slug:`fiqh`,label:e(1466)},{slug:`tafsir`,label:e(1430)},{slug:`tazkiyah`,label:e(1404)},{slug:`adab`,label:e(1333)},{slug:`history`,label:e(1392)},{slug:`shir`,label:e(1455)}]})(),Iwe=e=>ND.find(t=>t.slug===e)?.label||e,PD=(e,t)=>`${e} ${t}`.trim().replace(/\s+/g,` `),FD=e=>!!e&&[...e].length<=80})),LD,RD=o((()=>{LD=()=>globalThis.CONFIG?.FLASHCARDS_ENABLED===!0}));function Lwe(e){return VE(String(e||``).split(`,`)).sort((e,t)=>e-t).slice(0,nTe)}function Rwe(e){let t=new Set(String(e||``).split(`,`));return rTe.filter(e=>t.has(e))}function zwe(e){let t={};for(let{key:n,field:r,parse:i}of ZD){let a=i(e.get(n));a.length&&(t[r]=a)}return t}function zD(e){let t={};for(let{key:n,field:r}of ZD)e?.[r]?.length&&(t[n]=e[r].join(`,`));return t}function Bwe(e){let t=Object.entries(zD(e)).map(([e,t])=>`${e}=${t}`).join(`&`);return t?`?${t}`:``}function BD(e){let t;try{t=new URL(e,qD)}catch{return null}if(t.origin!==qD)return null;let n=t.searchParams;n.delete(`tab`),n.delete(`main`);let r=t.pathname.replace(/\/+$/,``)||`/`;if(r===`/search`||r.startsWith(`/search/`)){let e=n.get(`mode`)===`ai`?`ai`:``;if(e){n.set(`mode`,`ai`);let e=new URLSearchParams(n.get(`filter_query`)||``);e.get(`precision`)===`2`&&e.delete(`precision`),e.get(`sort`)==="default"&&e.delete(`sort`);let t=e.toString();t?n.set(`filter_query`,t):n.delete(`filter_query`)}else n.delete(`mode`);return{href:`/search${t.search}${t.hash}`,kind:`search`,mode:e}}let i=r.match(/^\/ai\/(answer|chat)\/([^/]+)/);if(i)try{let e=decodeURIComponent(i[2]).trim();if(!/^[\w-]{3,120}$/.test(e))return null;let n=i[1]===`chat`?`thread`:`answer`;return{href:`/ai/${i[1]}/${e}${t.search}${t.hash}`,kind:`ai-${n}`,permalink_kind:n,slug:e}}catch{return null}let a=r.match(/^\/quotes\/(?:(book|user)\/)?(\d+)$/);if(a){let e=a[1],t=+a[2];return!Number.isSafeInteger(t)||t<=0?null:e===`book`?{href:`/quotes/book/${t}`,kind:`quotes`,quotes_view:`latest`,quote_book_id:t}:e===`user`?{href:`/quotes/user/${t}`,kind:`quotes`,user_id:t}:{href:`/quotes/${t}`,kind:`quotes`,quote_id:t}}let o=r.match(/^\/quotes(?:\/(latest|liked))?$/);if(o){let e=zwe(n);return{href:`${r}${Bwe(e)}`,kind:`quotes`,quotes_view:o[1]||`following`,...e}}let s=r.match(/^\/(book|author|category|narrator)\/(\d+)(?:\/|$)/);if(s){let e=s[1],r=+s[2];if(!r)return null;let i=`/${e}/${r}${t.search}${t.hash}`;if(e===`book`){let e=+n.get(`page`);return{href:i,kind:`books`,book_id:r,page:Number.isInteger(e)&&e>0?e:null}}return e===`narrator`?{href:i,kind:`books`,narrator_id:r}:{href:i,kind:`books`,[e===`author`?`author_id`:`cat_id`]:r}}if(r===`/authors`||r.startsWith(`/authors/`))return{href:JD.authors.path,kind:`books`,books_view:`authors`};if(r===`/categories`||r.startsWith(`/categories/`))return{href:JD.categories.path,kind:`books`,books_view:`categories`};let c=tTe.get(r);if(c)return{href:r,kind:`books`,books_view:c};if(r.startsWith(`/books/`))return{href:`/books`,kind:`books`,books_view:`all`};if(r===YD){let e=String(n.get(`writing`)||``).trim(),r=Uh(e)?e:null;return r?n.set(`writing`,r):n.delete(`writing`),{href:`${YD}${n.size?`?${n}`:``}${t.hash}`,kind:`writing`,writing_id:r}}if(r===`/highlights`||r.startsWith(`/highlights/`))return{href:`/highlights`,kind:`highlights`};let l=r.match(/^\/study(?:\/(new|deck|session)(?:\/([\w-]+))?)?$/);if(l&&LD()){let e=l[1]||`home`,t=l[2];return e===`deck`&&!t||e===`new`&&t?null:{href:r,kind:`study`,study_view:e,...t?{deck_id:t}:{}}}return r===`/settings`||r.startsWith(`/settings/`)?{href:`/settings`,kind:`settings`}:null}function Vwe(){let e={id:Nl(),href:`/books`,created_at:Date.now()};return{items:[e],active_id:e.id}}function Hwe(e,t){for(let n of oO){if(!(n in t))continue;let r=typeof t[n]==`string`?t[n].trim():``;r&&(n!==`color`||/^#(?:[\da-f]{3}|[\da-f]{6})$/i.test(r))?e[n]=r:delete e[n]}}function Uwe(e){let t=typeof e?.href==`string`&&BD(e.href);if(!t)return null;let n={id:typeof e.id==`string`&&e.id?e.id:Nl(),href:t.href,created_at:+e.created_at||Date.now()};return Hwe(n,e),n}function VD(e,t){let n=nO.then(()=>e?.set_kv(KD,{version:3,...t}));return nO=n.catch(()=>{}),n}function HD(e){QD.set(e),!(!eO||rO)&&(clearTimeout(tO),tO=setTimeout(()=>{tO=null,VD(eO,e).catch(()=>{})},300))}async function UD(){eO&&(rO&&await iO,clearTimeout(tO),tO=null,await VD(eO,Sn($D)))}function Wwe(e){if(!Array.isArray(e?.items))return null;let t=new Set,n=[];for(let r of e.items){let e=Uwe(r);!e||t.has(e.id)||(t.add(e.id),n.push(e))}return n.length||n.push(...Vwe().items),{items:n,active_id:t.has(e.active_id)?e.active_id:n.at(-1).id}}async function Gwe(e,t,{persist:n=!0,strict:r=!1}={}){let i=Wwe(t);if(!i)return!1;r&&(rO||(iO=new Promise(e=>aO=e)),rO++);try{return clearTimeout(tO),tO=null,await nO,clearTimeout(tO),tO=null,n&&r&&await VD(e,i),QD.set(i),n&&!r&&await VD(e,i).catch(()=>{}),!0}finally{r&&!--rO&&(aO(),aO=void 0)}}async function Kwe(e){if(!eO){eO=e;try{await Gwe(e,await e.get_kv(`tabs_state_v3`)||await e.get_kv(eTe)||Sn($D))}catch{}}}function qwe(e={}){let t=Sn($D),n=Uwe({...e,id:e.id||Nl(),href:e.href??`/books`,created_at:Date.now()});if(!n||t.items.some(e=>e.id===n.id))return null;if(!n.color&&e.auto_color){let e=new Set(t.items.map(e=>e.color));n.color=XD.find(t=>!e.has(t.value))?.value||XD[t.items.length%XD.length].value}return HD({items:[...t.items,n],active_id:n.id}),n.id}function WD(e,t={},n=!1){let r=Sn($D),i=r.items.findIndex(t=>t.id===e);if(i===-1)return null;let a=r.items[i],o=BD(a.href),s=BD(`href`in t?t.href:a.href);if(!s)return null;let c={...a,href:s.href};if(s.kind!==o.kind)for(let e of oO)e!==`color`&&delete c[e];else(s.kind===`books`&&(s.book_id!==o.book_id||s.narrator_id!==o.narrator_id)||s.kind===`quotes`&&s.href!==a.href)&&(delete c.display_title,s.kind===`books`&&(delete c.book_display_title,delete c.search_return_href));Hwe(c,t);let l=n?e:r.active_id;if(l!==r.active_id||c.href!==a.href||oO.some(e=>c[e]!==a[e])){let e=[...r.items];e[i]=c,HD({items:e,active_id:l})}return e}function Jwe(e,t,n){return BD(Sn($D).items.find(t=>t.id===e)?.href)?.narrator_id===t?WD(e,{display_title:n}):null}function Ywe(e){let t=Sn($D);if(t.items.length<=1)return null;let n=t.items.findIndex(t=>t.id===e);if(n===-1)return null;let r=[...t.items];r.splice(n,1);let i=t.active_id===e?(r[n]||r[n-1]).id:t.active_id;return HD({items:r,active_id:i}),i}function Xwe(e,t,n,r=`before`){let i=e.findIndex(e=>e.id===t),a=e.findIndex(e=>e.id===n);if(i===-1||a===-1||i===a)return e;let o=[...e],[s]=o.splice(i,1),c=it.id===e[n].id)?e:o}function Zwe(e,t,n=`before`){let r=Sn($D),i=Xwe(r.items,e,t,n);i!==r.items&&HD({...r,items:i})}function Qwe(e){return iTe[BD(e.href).kind]||`book-open`}function $we(e,t){let n=ZD.filter(t=>e[t.field]?.length),r=Hc();if(n.length!==1)return``;let[{key:i,field:a}]=n,[o,...s]=e[a];return s.length?``:i===`tag`?ND.find(e=>e.slug===o).label:i===`author`?t?.authors?.[o]?.name||r(723):t?.books?.[o]?.name||r(639)}function GD(e,t){let n=Hc();if(e.title)return e.title;let r=BD(e.href);if(r.kind===`search`){let t=e.search_query;return t?n(1385,[t.length>18?`${t.slice(0,18)}…`:t]):n(313)}if(r.permalink_kind)return e.display_title||(r.permalink_kind===`answer`?n(1326):n(1485));if(r.kind===`highlights`)return n(218);if(r.kind===`writing`)return n(1100);if(r.kind===`study`)return n(1526);if(r.kind===`settings`)return n(147);if(r.kind===`quotes`){if(r.quote_id)return e.display_title||n(160);if(r.quote_book_id)return n(1351,[t?.books?.[r.quote_book_id]?.name||n(639)]);if(r.user_id)return e.display_title||n(162);let i=$we(r,t);return i?n(1322,[i]):r.quotes_view===`liked`?n(146):r.quotes_view===`latest`?n(1357):n(1360)}if(r.book_id){let i=t?.books?.[r.book_id]?.name||n(639),a=e.book_display_title||e.display_title;return a?`${a} | ${i}`:i}return r.author_id?t?.authors?.[r.author_id]?.name||n(723):r.narrator_id?e.display_title||n(986):r.cat_id?t?.cats?.[r.cat_id]?.name||n(636):JD[r.books_view].title}var KD,eTe,qD,JD,tTe,YD,XD,nTe,rTe,ZD,QD,$D,eO,tO,nO,rO,iO,aO,oO,iTe,sO=o((()=>{Ll(),df(),qE(),ID(),RD(),Wh(),Uc(),KD=`tabs_state_v3`,eTe=`tabs_state_v2`,qD=globalThis.location?.origin||`https://app.turath.io`,JD=(()=>{let e=Hc();return{all:{path:`/books`,title:e(1476)},favorites:{path:`/books/favorites`,title:e(1494)},downloaded:{path:`/books/downloaded`,title:e(1486)},authors:{path:`/books/authors`,title:e(724)},narrators:{path:`/books/narrators`,title:e(1537)},categories:{path:`/books/categories`,title:e(168)}}})(),tTe=new Map(Object.entries(JD).map(([e,t])=>[t.path,e])),YD=`/writings`,XD=(()=>{let e=Hc();return[{label:e(1328),value:`#ef4444`},{label:e(1386),value:`#f97316`},{label:e(1342),value:`#eab308`},{label:e(1331),value:`#22c55e`},{label:e(1403),value:`#14b8a6`},{label:e(1453),value:`#06b6d4`},{label:e(1338),value:`#3b82f6`},{label:e(1499),value:`#6366f1`},{label:e(1391),value:`#a855f7`},{label:e(1505),value:`#ec4899`}]})(),nTe=20,rTe=ND.map(e=>e.slug),ZD=[{key:`tag`,field:`quote_tags`,parse:Rwe},{key:`author`,field:`quote_authors`,parse:Lwe},{key:`book`,field:`quote_books`,parse:Lwe}],QD=yn(Vwe()),$D=xn(QD),nO=Promise.resolve(),rO=0,iO=Promise.resolve(),oO=[`title`,`display_title`,`search_query`,`search_return_href`,`book_display_title`,`color`],iTe={search:`search`,books:`book`,highlights:`highlighter`,writing:`square-pen`,settings:`settings`,study:`brain`,quotes:`quote`,"ai-answer":`sparkles`,"ai-thread":`sparkles`}}));function cO(e){e=String(e||``);let t=e?e.startsWith(`/`)?e:`/${e}`:``,n=String(window.CONFIG.DATA_API_URL||``).replace(/\/+$/,``);return n?`${n}${t}`:`/api${t}`}var lO=o((()=>{}));function aTe(){let e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return cTe[e?.type||e?.effectiveType]||`unknown`}function oTe(){let e=navigator.onLine;return{connected:e,connectionType:e?aTe():`none`}}function sTe(e){addEventListener(`online`,()=>e({connected:!0,connectionType:aTe()})),addEventListener(`offline`,()=>e({connected:!1,connectionType:`none`}))}var cTe,lTe=o((()=>{cTe={bluetooth:`cellular`,cellular:`cellular`,"slow-2g":`cellular`,"2g":`cellular`,"3g":`cellular`,"4g":`wifi`,ethernet:`wifi`,wifi:`wifi`,wimax:`wifi`,none:`none`}}));function uTe(e,{on_progress:t,signal:n,stall_ms:r=dTe}={}){return new Promise(i=>{let a=!1,o,s,c=()=>{s?.abort(),l(null)},l=e=>{a||(a=!0,clearTimeout(o),n?.removeEventListener(`abort`,c),i(e))},u=()=>{clearTimeout(o),o=setTimeout(()=>{try{s.abort()}finally{l(null)}},r)};try{if(n?.aborted)return l(null);n?.addEventListener(`abort`,c,{once:!0}),s=new XMLHttpRequest,s.addEventListener(`load`,()=>l(s.status===200?s.response:null)),s.addEventListener(`progress`,e=>{a||(u(),t?.(e.loaded||0))}),s.addEventListener(`error`,()=>l(null)),s.addEventListener(`abort`,()=>l(null)),s.open(`get`,e),s.send(),u()}catch{l(null)}})}var dTe,fTe=o((()=>{dTe=6e4}));function pTe(e,t){pO={owner:e,...t}}function mTe(e){pO?.owner===e&&(pO=null)}function uO(){return!!pO?.is_dirty?.()}async function dO(){await pO?.flush?.()}function fO(e){pO?.set_navigation_pending?.(!!e)}var pO,mO=o((()=>{pO=null}));function hTe(e,t){if(typeof e!=`string`)return t;let n=e.trim();return/^#[0-9a-fA-F]{6}$/.test(n)?n.toLowerCase():/^#[0-9a-fA-F]{3}$/.test(n)?`#`+n.slice(1).split(``).map(e=>e+e).join(``).toLowerCase():t}function hO(e){return Object.fromEntries(Object.entries(nk).map(([t,n])=>[t,hTe(e?.[t],n)]))}function gTe(){let e=Hc();return{version:1,bootstrap_format_version:4,data_version:0,patch_version:0,secondary_data_version:0,reader_options:{clean_text:!0,remove_harakaat:!1,digitalkhatt:!1,ar_justify:!1,hide_text:!1,two_page:!1,link_editions:!0,distraction_free_mobile:!1,page_bg:`paper`,highlight_colors:hO(),highlight_labels:pE()},general_options:{features:{advanced_search_controls:!1,inline_catalog_references:!1,reader_ask_ai:!1,writing_workspace:!1},advanced_search_engine:!1,show_filter_presets:!1,expand_filter_presets:!1,keep_screen_on:!1,language:`ar`,show_search_on_open:!1,auto_tab_color:!0,show_tabstrip:null,sidebar_expanded:!0,sidebar_auto_fold:!1,use_testing_data:!1},search_options:{sort:`default`,show_snippet:!0,strip_harakat:!1,open_results_in_new_tabs:!1,precision:2,stem:!1,non_author:!0,local_downloaded_search:!1},share_options:{page_refs:!0,remove_footnotes:!1,strip_harakat:!1},image_share_options:{theme:pwe,include_reference:!0,include_author:!0,include_logo:!0,include_edge:!0},theme:`auto`,books_local:{147927:{opened:Date.now(),now_reading:1},98093:{opened:Date.now()-10,now_reading:1}},book_favorites:{},search_history:[],filter_presets:[{name:e(1378),state:{filters:{book:new Set([1681,1727,654,7895,829,1198,1699,25794,36114])}}},{name:e(1373),state:{filters:{cat:new Set([6,7])}}},{name:e(1324),state:{filters:{author:new Set([54,14])}}}],has_old_db:!1,app_visits:0,last_seen_release:``,app_offer_seen:!1,app_offer_opened:!1,donate_prompt:{...lE},share_prompt:{...kD}}}async function _Te(e){try{let t,n;do t=Ek,n=await e.list_highlights();while(t!==Ek);bk.set(n),xk.set(!0),Sk.set(``)}finally{Tk=null}}async function gO({force:e=!1,silent:t=!1}={}){let n=Sn(lk).db,r=Hc();if(!(Yk.pending||!n||Sn(xk)&&!e)){e&&Ek++;try{Tk||=_Te(n),await Tk}catch(e){console.error(e),!t&&!Sn(xk)&&Sk.set(r(1415))}}}async function _O(e,t){Ek++,e===Sn(bk)?bk.update(t):await gO({force:!0})}async function vTe(e){let t=Sn(bk),n=rm(e,Ck),r=await Sn(lk).db.create_highlight(n),i={...n,id:r};return await _O(t,e=>[...e,i]),i}async function vO(e,{color:t,note:n}){let r=Sn(bk),i=await Sn(lk).db.update_highlight(e,{...t!==void 0&&{color:SE.normalize_color(t)},...n!==void 0&&{note:String(n).trim()}});return await _O(r,e=>[...e.filter(e=>e.id!==i.id),i]),i}async function yTe(e){let t=Sn(bk);await Sn(lk).db.delete_highlight(e),await _O(t,t=>t.filter(t=>t.id!==e))}function bTe(e){let t=Number(e);!Number.isInteger(t)||t<=0||ik.update(e=>{let n={...e.book_favorites};return n[t]?delete n[t]:n[t]=Date.now(),{...e,book_favorites:n}})}function xTe(){ik.update(e=>(e.book_favorites={},e))}function STe(){ik.update(e=>(e.books_local=XCe(e.books_local),e))}function yO(e,t){let n=Sn(ik),r=FCe(n,e,t);r!==n&&ik.set(r)}function bO(e,t){return CO(()=>SO(n=>FCe(n,e,t)))}function xO(){let e=Promise.resolve();return t=>{let n=e.then(t);return e=n.catch(()=>{}),n}}function SO(e){let t=Gk.then(async()=>{if(!Ok)return;let t=Sn(ik),n=e?e(t):t;await Sn(lk).db.set_kv(`state`,cm(n)),e&&n!==t&&ik.update(e)});return Gk=t.catch(()=>{}),t}async function CO(e,t){if(Yk.pending)return t;let n=e();gk.add(n);try{return await n}finally{gk.delete(n)}}function wO(e,t,n=()=>({})){Zk++;let r=mh(`book_state_transition_wait`,{phase:e,warning_ms:250,critical_ms:2e3,context:()=>({...Xk?.context(),active_owner_operation:Xk?.operation,owner_elapsed_ms:Xk?Dk()-Xk.started_ms:0,queue_depth:Zk,...n()})}),i=_k.then(async()=>{Zk--,r.finish();let i={operation:e,started_ms:Dk(),context:n};Xk=i;let a=mh(`book_state_transition_hold`,{phase:e,warning_ms:100,critical_ms:500,context:()=>({queue_depth:Zk,...n()})});try{return await t()}catch(e){throw a.fail(),e}finally{a.finish(),Xk===i&&(Xk=null)}});return _k=i.catch(()=>{}),i}function CTe(e){return wO(`book_state_restore`,e)}function TO(e){return Yk.run(e)}async function EO(e,t){await TO(t),eT(`db.reload.start`,{reason:e}),location.reload()}function wTe(){if(window.desktop?.is_electron){let e=`electron`;Sentry.setTag?.(`turath_platform`,e),Sentry.setTag?.(`turath_electron_version`,window.desktop.versions?.electron||`unknown`),Sentry.setContext?.(`turath`,{app_version:window.__APP_VERSION__,build_date:window.__BUILD_DATE__,build_hash:window.__BUILD_HASH__,platform:e,electron_version:window.desktop.versions?.electron,chrome_version:window.desktop.versions?.chrome,database_backend:`opfs`})}}function DO(e,t=XO){if(!Yk.pending){if(Sn(ik).secondary_data_version){JO();return}Wk||Vk||(eT(`store.secondary_preload.schedule`,{reason:e,delay:t}),Wk=setTimeout(async()=>{if(Wk=null,Yk.pending||!Sn(lk).loaded||!Sn(lk).network_status?.connected){eT(`store.secondary_preload.skip`,{reason:`not_ready`});return}if(!await MO({silent:!0})){DO(`retry`,ZO);return}JO()},t))}}function OO(e){if(window.desktop?.is_electron){MO({silent:!0}).then(()=>JO());return}DO(e)}async function kO(e){let t=await e.text();if(!t)return{};try{return JSON.parse(t)}catch{return{}}}async function AO(e){if(window.__TURATH_E2E__||!e)return;let t=uu(),n={accept:`application/json`},r=lu();try{let e=``;try{r?e=localStorage.getItem(`sessionid`)||``:localStorage.removeItem(`sessionid`)}catch{}e&&(n[`x-sessionid`]=e);let i=await fetch(`${t}/api/csrf`,{credentials:`include`,headers:n}),a=r?i.headers.get(`x-sessionid`):``;if(a){try{localStorage.setItem(`sessionid`,a)}catch{}n[`x-sessionid`]=a}let o=(await kO(i))?.csrf_token||``;o&&(lk.update(e=>({...e,csrf_token:o})),n[`x-csrftoken`]=o);let s=await fetch(`${t}/api/me`,{credentials:`include`,headers:n}),c=r?s.headers.get(`x-sessionid`):``;if(c)try{localStorage.setItem(`sessionid`,c)}catch{}let l=await kO(s),u=l?.user?.id?l.user:null,d=l?.social||{available:!1,enabled:!1,has_data:!1},f=l?.country||``,p=!!l?.has_password,m=!!l?.email_verification_required;if(lk.update(e=>({...e,user:u,auth_checked:s.ok,social:d,country:f,has_password:p,email_verification_required:m})),!u)return;let h=(await kO(await fetch(`${t}/api/auth/browser/v1/account/email`,{credentials:`include`,headers:n})))?.data?.find?.(e=>e.primary);lk.update(e=>({...e,email_verified:!!h?.verified}))}catch(e){eT(`store.auth.initialize.error`,{error:e}),fce(e)||Sentry.captureException(e)}}function TTe(e,t,n){if(window.__TURATH_BOOT__){window.__TURATH_BOOT__.fail(e,n,{message:t});return}let r=document.getElementById(`boot-shell`);r?.removeAttribute(`hidden`),r?.setAttribute(`data-recovery`,``),r?.setAttribute(`data-failed`,``);let i=document.getElementById(`boot-shell-status`);i?.setAttribute(`role`,`alert`),i?.setAttribute(`aria-live`,`assertive`);let a=document.getElementById(`boot-shell-message`);a&&(a.textContent=t),document.getElementById(`boot-shell-retry`)?.addEventListener(`click`,()=>location.reload(),{once:!0})}async function ETe(e=null){let t=Hc();if(!Bp()){await jO(e),lk.update(e=>({...e,loaded:!0}));return}if(!(window.indexedDB&&navigator.locks?.request&&Oxe()))return gce(`Web SQLite is not supported`);let n=dce(),r;try{r=await hce(async()=>(await pSe(),jxe(()=>window.__TURATH_BOOT__?.message(t(1565)))),{on_state:e=>eT(`store.web_migration_lock.${e}`),on_visibility_wait:()=>eT(`store.web_migration_lock.wait_visible`,{visibility_state:document.visibilityState})})}catch(e){if(e instanceof Up||Zbe(e))throw e;if(pce(e))throw eT(`store.web_migration_trial.context_exit`,{error:e}),new Up(`Web context exited during migration`);let n=e instanceof Wp;eT(n?`store.web_migration_lock.timeout`:`store.web_migration_trial.error`,{error:e,timeout_ms:n?Hp:void 0}),await lg();let r=ag(),i=[`busy`,`ioerr`].includes(r?.failure)&&r.failure_phase===`open`&&r.other_open_connections>0;throw n?globalThis.Sentry?.captureMessage?.(`turath.boot.web_migration_lock.timeout`,{level:`error`,tags:{turath_boot_event:`web_migration_lock.timeout`,turath_boot_stage:`web_migration_lock.timeout`,turath_platform:`web`},extra:{timeout_ms:Hp}}):globalThis.Sentry?.captureException?.(e),TTe(n?`web_migration_lock_timeout`:`web_migration_failed`,t(n?1513:i?1571:406),e),new Up(n?`Web migration lock timed out`:`Web migration failed`)}if(await jO(e,r),!n){lk.update(e=>({...e,loaded:!0}));return}throw await CT(r.db),window.__TURATH_BOOT__?.redirect?.(`current_shell`),location.replace(`/`),new Up(`Left physical current shell`)}async function jO(e=null,{db:t=null,migration_result:n=null,migration_ms:r=0}={}){let i=Dk();eT(`store.get_data.start`,{});let a=e||oTe();eT(`store.network.status`,a),e||lk.update(e=>({...e,network_status:a}));let o=Dk();if(t||await pSe(),t||=await ST(),eT(`store.db.opened`,{ms:Dk()-o}),!n){let e=Dk();if(n=await Axe(t),r=Dk()-e,eT(`store.idb_migration.result`,{...n,ms:r}),![`migrated`,`no_old_db`,`already_done`].includes(n.status))throw Error(`IDB migration failed: ${n.status||`unknown`}`)}window._migration_status=n.status||`unknown`;let{had_old_db:s,migrated:c}=n;lk.update(e=>Object.assign(e,{db:t})),window.__DEBUG__&&(window._db=t);let l=await t.get_kv(`state`);eT(`store.state.loaded`,{has_state:!!l,data_version:l?.data_version,patch_version:l?.patch_version}),l&&!l.search_history&&(Sentry.captureMessage(`search_history missing`),l.search_history=[]);let u=location.pathname===`/admin`||location.pathname.startsWith(`/admin/`)?_c:Nc(),d=document.documentElement.lang;if(await Cne(u,{persist:!1})!==d)throw await kxe(`ui_language_hydration_retry`),new BT(`ui_language_hydration_retry`);ik.update(e=>{let t=Ele(e,l);return window.__TURATH_E2E__&&Object.assign(t.general_options,window.__turath_e2e_general_options),t.general_options.language=u,{...t,...l?.books_local?{books_local:l.books_local}:{},has_old_db:s,app_visits:(e?.app_visits||0)+1}}),ik.update(e=>(e.reader_options||={},e.reader_options.distraction_free_mobile??=!1,e.reader_options.ar_justify??=!1,e.reader_options.page_bg??=`paper`,e.reader_options.highlight_colors=hO(e.reader_options.highlight_colors),e.reader_options.highlight_labels=pE(e.reader_options.highlight_labels),e)),Ok=!0,eT(`store.datasets.load.start`,{stores:KT});let f=Object.fromEntries(await Promise.all(KT.map(async e=>[e,await t.load_catalog_dataset(e)]))),p=Object.fromEntries(KT.map(e=>[e,f[e].count]));eT(`store.datasets.loaded`,{books:p.books,authors:p.authors,cats:p.cats}),!window.__TURATH_E2E__&&p.authors&&!f.authors.data[24]?.death&&(Sentry.captureMessage(`Bad author data`),f.authors={data:{},count:0},p.authors=0,eT(`store.datasets.bad_author_data_reset`,{}));let m=window.__TURATH_E2E__?[1,1,1]:[8582,3185,40],h=KT.every((e,t)=>p[e]>=m[t]),g=l?.bootstrap_format_version!=null&&l.bootstrap_format_version!==4,_=!h;eT(`store.datasets.fresh_load_check`,{fresh_load:_,needs_bootstrap_format_upgrade:g,min_required:{books:m[0],authors:m[1],cats:m[2]},current:p});let y,b=Hc();if(_){eT(`store.bootstrap.fresh_load.start`,{});let e=Dk(),n=await GT(t,{stores:KT});y=n.data,eT(`store.bootstrap.snapshot_import.done`,{ms:Dk()-e,counts:{books:Object.keys(y.books).length,authors:Object.keys(y.authors).length,cats:Object.keys(y.cats).length,version:n.data_version}});let r=KT.map(e=>Object.keys(y[e]||{}).length);r.some((e,t)=>e[e,r[t]])),min_required:Object.fromEntries(KT.map((e,t)=>[e,m[t]]))}}),await qO(t,y.books),ik.update(e=>({...e,books_local:MCe(e.books_local,y.books),bootstrap_format_version:4,data_version:n.data_version,patch_version:n.data_version,secondary_data_version:0})),eT(`store.bootstrap.fresh_load.done`,{ms:Dk()-i})}else{let e=Dk();y=Object.fromEntries(KT.map(e=>[e,f[e].data])),(l?.bootstrap_format_version==null||g)&&(ik.update(e=>({...e,bootstrap_format_version:4,data_version:e.data_version||1})),g&&eT(`store.bootstrap.format_upgrade.reused_local_core`,{})),eT(`store.bootstrap.cached_load.done`,{ms:Dk()-e}),!window.__DEBUG__&&window._useragent.ios&&!window._useragent.pwa&&Ap.warning(b(1346),{duration:4e3})}rk.set(y),eT(`store.books_data.set`,{counts:{books:Object.keys(y?.books||{}).length,authors:Object.keys(y?.authors||{}).length,cats:Object.keys(y?.cats||{}).length}});let x=Dk()-i;eT(`store.session.loaded`,{ms:x}),(s||c||x>15e3)&&$w(`store.boot.loaded`,{had_old_db:s,migrated:c,fresh_load:_,boot_ms:x,migration_ms:r,data_version:Sn(ik).data_version,patch_version:Sn(ik).patch_version,counts:{books:Object.keys(y?.books||{}).length,authors:Object.keys(y?.authors||{}).length,cats:Object.keys(y?.cats||{}).length}}),(Sn(lk).network_status?.connected||a.connected)&&OO(`boot`),eT(`store.get_data.done`,{ms:Dk()-i})}async function MO({silent:e=!1}={}){let t=Hc();if(Vk)return Vk;if(Yk.pending)return eT(`store.secondary.skip`,{reason:`app_reload_pending`}),!1;let n=Dk(),r=Sn(lk).db;if(eT(`store.secondary.start`,{silent:e,has_db:!!r,platform:zp()}),!r)return eT(`store.secondary.skip`,{reason:`missing_db`}),!1;if(Sn(ik).secondary_data_version)return eT(`store.secondary.skip`,{reason:`already_loaded`}),!0;e||Ap.info(t(1512),{duration:2e3});let i=new AbortController;return Hk=i,Vk=(async()=>{try{return await qk(async()=>{await Jk(),i.signal.throwIfAborted(),Uk++;let e=await GT(r,{clear:!1,stores:YO,skip_existing_stores:YO,signal:i.signal});return ik.update(t=>({...t,secondary_data_version:e.data_version})),await SO(),eT(`store.secondary.done`,{ms:Dk()-n}),!0})}catch(t){if(eT(`store.secondary.error`,{error:t,ms:Dk()-n}),!e)throw t;return!1}finally{Hk===i&&(Hk=null),Vk=null}})(),Vk}async function NO(e,t,{transition_held:n=!1,admission_guard:r=()=>!0,skipped:i}={}){let a=()=>r()&&sD(e),o=n?a():await wO(`book_content_reserve`,a);return o?Promise.resolve().then(t).finally(o):i}async function PO(e,t){return vk(hk,[t]),NO([t],()=>e.delete_book_content(t),{transition_held:!0})}function FO(e){return Qk(`delete_book`,async()=>{let t=Hc();try{await PO(Sn(lk).db,e),ik.update(t=>(t.books_local[e]=CCe(t.books_local[e]),t))}catch(e){globalThis.Sentry?.captureException?.(e),Ap.error(t(1420))}})}function IO(){return Qk(`delete_all_books`,async()=>{let e=Sn(lk).db,t=NE(Sn(ik).books_local),n=Hc();if(!t.length)return 0;let r=[];try{for(let n of t)await PO(e,n),r.push(n)}catch(e){globalThis.Sentry?.captureException?.(e),Ap.error(n(1421))}return r.length&&ik.update(e=>{for(let t of r)e.books_local[t]=CCe(e.books_local[t]);return e}),r.length},0)}async function DTe(e,t,n){let r=Sn(lk).db;return await NO([e],async()=>(await r.replace_book_content(e,t),!0),{admission_guard:n,skipped:!1})&&!Yk.pending}async function OTe(e,t=null){let n=await uTe(CONFIG.FILES_URL+`/books-v3/${e}.json`,{on_progress:t=>fk.update(n=>({...n,[e]:t})),signal:t});return n==null?null:kle(n,e)}async function kTe(e,t){let n=new URLSearchParams({id:e,include:`indexes`}),r=performance.now(),i=`network`,a=0;try{let r=await fetch(cO(`/book?`+n),{signal:t});if(a=r.status,!r.ok)throw Error(`book metadata fetch failed: ${r.status}`);i=`response`;let o=Dle(await r.text());if(i=`validation`,!dm(o?.meta))throw Error(`invalid book metadata response`);if(!fm(o.indexes))throw Error(`invalid book indexes response`);return{meta:{...o.meta,book_id:+e},indexes:{...o.indexes,book_id:+e}}}catch(e){throw wm(t?.reason?.name===`TimeoutError`?t.reason:e,i,r,a)}}async function ATe(e,t){let n=+e;for(;;){if(Yk.pending)throw new BT(`metadata request blocked by shutdown`);let e=Nk.get(n);if(e){if(eA(e.generation,t))return{data:e.settled?e.data:await e.promise,entry:e};e.settled||(e.abort_controller.abort(),await e.promise.catch(()=>{})),Nk.get(n)===e&&Nk.delete(n);continue}let r=new AbortController,i=setTimeout(()=>r.abort(new DOMException(`Book metadata request timed out`,`TimeoutError`)),$O),a={abort_controller:r,generation:t,secondary_metadata_epoch:Uk,secondary_metadata_active:!!Vk,cache_promise:null,data:null,settled:!1,promise:null};return a.promise=kTe(n,r.signal).then(e=>(clearTimeout(i),a.data=e,a.settled=!0,e),e=>{throw clearTimeout(i),Nk.get(n)===a&&Nk.delete(n),e}),Nk.set(n,a),{data:await a.promise,entry:a}}}async function jTe(e,t,n){let r=+e,i=()=>tA(r,n.generation);if(n.secondary_metadata_active||Uk>n.secondary_metadata_epoch)return!1;for(;!Yk.pending;){let e=[Ak,Vk].filter(Boolean);if(e.length){if((await Promise.all(e.map(e=>e.catch(()=>!1)))).some(e=>e!==!0)||(await tk(),!i()||Uk>n.secondary_metadata_epoch))return!1;continue}let a=await CO(()=>wO(`reader_metadata_commit`,async()=>{if(Ak||Vk)return`retry`;if(!i()||Uk>n.secondary_metadata_epoch)return!1;let e=Sn(lk).db;return e?Kk(()=>e.set_book_metadata(r,t,()=>!Yk.pending&&!Ak&&!Vk&&i()&&Uk===n.secondary_metadata_epoch)):!1}),!1);if(a!==`retry`)return a}return!1}function MTe(e,t,n){if(e.cache_promise)return e.cache_promise;let r=jTe(t,n,e).catch(e=>(!Yk.pending&&e?.name!==`AbortError`&&globalThis.Sentry?.captureException?.(e),!1)).finally(()=>{Pk.delete(r);let n=+t;Nk.get(n)===e&&Nk.delete(n)});return e.cache_promise=r,Pk.add(r),r}async function LO(e,t=!0,n=null,r=!1){if(Yk.pending)return null;let i=+e;if(yD(i))return await oD(i),LO(i,t,n,r);let a=$k(i,n??void 0),o=()=>tA(i,a);if(!o())return null;try{let{data:e,entry:n}=await ATe(i,a);return Yk.pending||!o()?(Nk.get(i)===n&&Nk.delete(i),null):(MTe(n,i,e),t?e:{meta:e.meta})}catch(t){if(!Yk.pending&&o()&&console.warn(`book metadata fetch failed`,{book_id:e,error:t}),r)throw t;return null}}function RO(e,t=!0,n=null,r=!1){return LO(e,t,n,r)}async function zO(e){let t=await fetch(cO(`/author?`+new URLSearchParams({id:e})));if(!t.ok)return null;let n=await t.json();if(!um(n)||+n.id!=+e)return null;let r={...n,author_id:+e};return await Sn(lk).db.set_author_bio(e,r),r}async function BO(e,t={}){let n=+e;if(yD(n))return await oD(n),BO(n,t);let r=pk.get(n);if(r?.kind===`download`){let e=t.maintenance!==!0;e&&(r.explicit=!0),t.set_opened!==!1&&(r.set_opened=!0),t.silent||(r.notify=!0);let i=await r.promise;return r.superseded||e&&r.signal?.aborted&&!i?BO(n,t):i}if(r)return await r.promise.catch(()=>{}),BO(n,t);if(t.maintenance&&WO())return null;if(Yk.pending)return!1;let i={kind:`download`,explicit:t.maintenance!==!0,notify:!t.silent,set_opened:t.set_opened!==!1,update_generation:yk(mk,n),deletion_generation:yk(hk,n),signal:t.signal,promise:null};pk.set(n,i),fk.update(e=>({...e,[n]:0}));let a,o=()=>i.update_generation===yk(mk,n)&&i.deletion_generation===yk(hk,n),s=()=>(i.superseded=!0,i.explicit&&n in Sn(rk).books&&i.deletion_generation===yk(hk,n)&&yO(n,e=>({...e,dirty:!0,download_pending:!0})),!i.explicit&&null);return i.promise=(async()=>{let e=Hc();if(t.reserve_content){if(a=await wO(`book_download_reserve`,()=>o()&&sD([n])),!a)return s();if(Yk.pending)return!1;if(t.maintenance&&WO())return null}let r=Sn(rk).books[n];try{let a=navigator.storage?.estimate?await navigator.storage.estimate():null;if(a?.quota>0&&a.usage<=a.quota&&r.size>a.quota-a.usage)return i.notify&&Ap.warning(e(1477)),!1;let c=await OTe(n,t.signal);if(!c)return i.notify&&Ap.warning(e(1481)),!1;if(!o()||!await DTe(n,c,o))return wO(`book_download_superseded`,s)}catch{return i.notify&&Ap.error(e(1441),{duration:2e3}),!1}return wO(`book_download_publish`,()=>{if(!o())return s();let e=Sn(ik).books_local?.[n];return!i.explicit&&!e?.downloaded&&!e?.download_pending?!1:(yO(n,e=>({...rm(e,[`download_pending`]),downloaded:!0,dirty:!1,...i.set_opened&&{opened:Date.now()}})),!0)})})().finally(()=>{fk.update(e=>(delete e[n],e)),pk.get(n)===i&&pk.delete(n),a?.()}),i.promise}function NTe(e){nA.set(+e,(nA.get(+e)||0)+1)}function PTe(e){let t=(nA.get(+e)||0)-1;t>0?nA.set(+e,t):nA.delete(+e),UO(`reader_closed`)}async function VO(e=Sn(lk).db){let t=Object.entries(Sn(ik).books_local||{}).filter(([,e])=>e?.dirty&&!e.downloaded&&!e.download_pending).map(([e])=>+e);if(!e||!t.length)return;let n=new Set;for(let r of t)await e.has_complete_book_content(r)&&n.add(r);n.size&&(ik.update(e=>{for(let t of n){let n=e.books_local?.[t];n?.dirty&&!n.downloaded&&!n.download_pending&&(e.books_local[t]={...n,download_pending:!0})}return e}),await SO())}async function FTe(e){let t=+e,n={kind:`invalidate`,promise:null};return pk.set(t,n),n.promise=NO([t],async()=>(await Sn(lk).db.delete_book_content(t),yO(t,e=>e.downloaded||e.download_pending?e:rm(e,[`dirty`])),!0)).finally(()=>{pk.get(t)===n&&pk.delete(t)}),n.promise}async function HO(e){if(Yk.pending)return null;let t=+e,n=pk.get(t);if(n)return await n.promise,HO(t);if(nA.has(t))return null;let r=await Sn(lk).db.has_complete_book_content(t);if(Yk.pending||nA.has(t))return null;if(pk.has(t))return HO(t);let i=NCe(Sn(ik).books_local?.[t],r);return i?WO()?null:i===`download`?BO(t,{set_opened:!1,silent:!0,maintenance:!0}):FTe(t):!0}function UO(e,t=QO){Yk.pending||(e!==`reader_closed`&&(Rk.clear(),zk=!1),clearTimeout(Fk),Fk=setTimeout(()=>{if(Fk=null,Ik){Lk=!0;return}Ik=LTe(e).catch(e=>globalThis.Sentry?.captureException?.(e)).finally(()=>Ik=null)},t))}function WO(){return Ak?(Lk=!0,!0):!1}async function GO(e,t){return!Yk.pending&&dm(await e.get_book_meta(t))&&!Yk.pending&&fm(await e.get_book_indexes(t))&&!Yk.pending&&await e.has_complete_book_content(t)}async function KO(e,t){let n=[];for(let r of t){if(Yk.pending)return null;await GO(e,r)||n.push(r)}return Yk.pending?null:n}async function ITe(){let e=Sn(lk).db;if(Yk.pending||zk||await e.get_kv(rA))return;let t=Sn(rk).books||{},n=await KO(e,iA(t));if(!n)return;let r=0,i=0;for(let t of n){if(WO()||!Sn(uk)||Yk.pending)return;if(!ME(Sn(ik).books_local?.[t]))continue;if(nA.has(t)){i++;continue}let n=new AbortController,a={abort_controller:n,book_id:t};Bk=a;let o;try{o=await BO(t,{set_opened:!1,silent:!0,maintenance:!0,signal:n.signal,reserve_content:!0})}finally{Bk===a&&(Bk=null)}if(Yk.pending||WO())return;let s=o&&await GO(e,t);if(Yk.pending)return;s||(r++,Rk.add(t))}if(!Sn(uk)||Yk.pending)return;let a=await KO(e,iA(t));a&&(eT(`store.download_artifact_repair.done`,{candidates:n.length,failed:r,skipped_open:i,remaining:a.length}),!Yk.pending&&(!r&&!a.length?await e.set_kv(rA,!0):(r||a.some(e=>!nA.has(e)))&&(zk=!0)))}async function LTe(e){if(!(Yk.pending||WO())&&!(!Sn(lk).loaded||!Sn(uk)))try{if(await ITe().catch(e=>globalThis.Sentry?.captureException?.(e)),Yk.pending)return;let t=Sn(rk).books||{},n=PCe(Sn(ik).books_local,new Set(nA.keys())).filter(e=>e in t&&!Rk.has(e));eT(`store.stale_refresh.start`,{reason:e,count:n.length});let r=0;async function i(){for(;r({...t,bootstrap_format_version:4,data_version:e.data_version,secondary_data_version:e.data_version}))}function zTe(){let e=Sn(ik).books_local||{},t=Object.keys(e).map(Number),n=[...new Set([...t,...nA.keys(),...pk.keys()])];vk(mk,n);let r=new Set(NE(e));return r.size&&ik.update(e=>{for(let t of r)e.books_local[t]=PE(e.books_local[t]);return e}),lwe(n)}async function qO(e,t,{reset_secondary:n=!0}={}){await VO(e);let r=new Set(NE(Sn(ik).books_local).filter(e=>e in t)),i=n?await e.reset_secondary_metadata(r):{preserved_book_meta:0,cleared_book_meta:0},a=await e.clear_cache_only_content(r),o=Object.entries(Sn(ik).books_local||{}).filter(([e,t])=>t?.dirty&&!r.has(+e)).map(([e])=>+e);o.length&&ik.update(e=>{for(let t of o)e.books_local[t]=rm(e.books_local[t],[`dirty`]);return e}),eT(`store.bootstrap.cached_content.reset`,{...i,cleared_cached_books:a,cleared_author_bios:n,owned_books:r.size})}async function BTe(e,t,n,r){let i=n;if(t===`book-meta`||t===`author-bios`)if(!n||typeof n!=`object`||Array.isArray(n))i={info:n};else{let e=rm(n,[`id`,t===`book-meta`?`book_id`:`author_id`]);i=t===`author-bios`&&e.info==null&&e.biography==null?{info:e}:e}if(i=vT(t,i,r),(t===`authors`||t===`cats`)&&i.books==null){let n=Sn(rk)?.[t]?.[r]||await e.get_catalog_record(t,r);n?.books!=null&&(i.books=n.books)}return i}function VTe(e){let t=new Map;for(let[n,r,i]of e){if(!i||n!==`books`&&n!==`book-meta`)continue;let e=_T(n,i);e&&(r===-1?t.set(e,`delete`):t.has(e)||t.set(e,`invalidate`))}return t}async function HTe(e,t,{track_book_actions:n=!0,signal:r}={}){let i=new Map,a=Sn(rk),o=!1,s=n?VTe(t):new Map,c=sA(s,`delete`),l=sA(s,`invalidate`),u=jCe(Sn(ik).books_local,l),d=[...c,...u.flag,...u.clear];vk(mk,d),c.length&&vk(hk,c);let f=sD([...c,...u.clear]);return swe(async()=>{for(let[s,c,l]of t){if(r?.throwIfAborted(),!aA.has(s)||!l)continue;let t=oA.has(s),u=_T(s,l);if(!u)continue;let d=c===-1?null:await BTe(e,s,l,u);c===-1?await e.delete_catalog_record(s,u):d&&await e.upsert_catalog_record(s,u,d),t&&(c===-1||d)&&(c===-1?delete a[s][u]:a[s][u]=d,o=!0),n&&(s===`books`||s===`book-meta`)&&(c===-1?i.set(u,`delete`):i.has(u)||i.set(u,`invalidate`))}},async()=>{if(o&&rk.set(a),!i.size)return;let t=sA(i,`delete`),{flag:n,clear:r}=jCe(Sn(ik).books_local,sA(i,`invalidate`)),s=new Set,c;for(let n of new Set([...t,...r]))try{await e.delete_book_content(n),s.add(n)}catch(e){c||=e}if(ik.update(e=>{for(let n of t)s.has(n)&&delete e.books_local[n];for(let t of n)e.books_local[t]=PE(e.books_local[t]);for(let t of r){let n=e.books_local?.[t];s.has(t)&&n?.dirty&&!n.downloaded&&!n.download_pending&&(e.books_local[t]=rm(n,[`dirty`]))}return e}),c)throw c}).finally(f)}async function UTe(e,t,{version:n,next_version:r,latest_version:i,signal:a}){for(let o=0;o{a.throwIfAborted();let t=Dk(),i=t-c;await HTe(e,s,{signal:a}),eT(`store.patches.batch.done`,{version:n,next_version:r,offset:o,ops:s.length,queue_ms:i,ms:Dk()-t})},()=>({patch_version:n,patch_next_version:r,patch_latest_version:i,patch_version_gap:Math.max(0,i-n),patch_operations:t.length,batch_offset:o,batch_operations:s.length})),o+s.length{if(e.aborted)return!1;throw t}):t()}async function JO(){if(eT(`store.patches.start`,{}),Ak)return eT(`store.patches.join_existing`,{}),Ak;if(Yk.pending)return eT(`store.patches.skip`,{reason:`app_reload_pending`}),!1;let{db:e}=Sn(lk);if(!e)return eT(`store.patches.skip`,{reason:`missing_db`}),!1;let t=new AbortController;jk=t;async function n(){if(await Jk(),t.signal.aborted)return!1;await wO(`legacy_book_ownership_migration`,()=>VO(e));let n=Dk(),r=1e3,i=Sn(ik).patch_version||0;for(;;){let a;try{let e=Dk();eT(`store.patches.fetch.start`,{version:i,limit:r});let n=await fetch(cO(`/patches?version=${i}&limit=${r}`),{cache:`no-cache`,signal:t.signal});if(!n.ok)throw Error(`patches fetch failed: ${n.status}`);a=await n.json(),eT(`store.patches.fetch.done`,{version:i,next_version:+a.version||i,latest_version:+a.latest_version||+a.version||i,ops:a.ops?.length||0,full_reload:!!a.full_reload,ms:Dk()-e})}catch(e){return t.signal.aborted?(eT(`store.patches.fetch.aborted`,{}),!1):(window.__DEBUG__&&console.warn(`patches fetch failed`,e),eT(`store.patches.fetch.error`,{error:e}),fce(e)||Sentry.captureException?.(e),!1)}let o=+a.version||i,s=+a.latest_version||o;if(a.full_reload)try{return await GT(e,{signal:t.signal,commit:r=>wO(`catalog_full_reload`,async()=>{t.signal.throwIfAborted(),eT(`store.patches.full_reload.start`,{next_version:o,latest_version:s}),Mk++;let i=zTe();try{RTe(await r());let n=Sn(rk).books||{};await qO(e,n,{reset_secondary:!1}),t.signal.throwIfAborted(),await SO(e=>({...e,books_local:MCe(e.books_local,n),patch_version:o}))}finally{i()}eT(`store.patches.full_reload.done`,{next_version:o,ms:Dk()-n})})}),!0}catch(e){return t.signal.aborted?(eT(`store.patches.full_reload.aborted`,{}),!1):(eT(`store.patches.full_reload.error`,{error:e}),Sentry.captureException?.(e),!1)}try{if(a.ops?.length){let n=Dk();eT(`store.patches.apply.start`,{ops:a.ops.length,version:i,next_version:o}),await UTe(e,a.ops,{version:i,next_version:o,latest_version:s,signal:t.signal}),eT(`store.patches.apply.done`,{ops:a.ops.length,ms:Dk()-n})}t.signal.throwIfAborted(),await SO(e=>({...e,patch_version:o}))}catch(e){return t.signal.aborted?(eT(`store.patches.apply.aborted`,{}),!1):(window.__DEBUG__&&console.warn(`patch ops apply failed`,e),eT(`store.patches.apply.error`,{error:e}),Sentry.captureException?.(e),!1)}if(!a.ops?.length||o>=s||o<=i)break;i=o}return eT(`store.patches.done`,{ms:Dk()-n}),!0}Ak=WTe(t.signal,()=>qk(n));let r=!1;try{return r=await Ak,r}finally{Ak=null,jk===t&&(jk=null),(r||Lk)&&(Lk=!1,UO(r?`sync`:`patch_sync_finished`))}}var YO,XO,ZO,QO,$O,ek,tk,nk,rk,ik,ak,ok,sk,ck,lk,uk,dk,fk,pk,mk,hk,gk,_k,vk,yk,bk,xk,Sk,Ck,wk,Tk,Ek,Dk,Ok,kk,Ak,jk,Mk,Nk,Pk,Fk,Ik,Lk,Rk,zk,Bk,Vk,Hk,Uk,Wk,Gk,Kk,qk,Jk,Yk,Xk,Zk,Qk,$k,eA,tA,nA,rA,iA,aA,oA,sA,cA=o((()=>{mf(),sm(),df(),Rp(),Mc(),lm(),Ale(),jle(),UT(),sSe(),ISe(),Tg(),fE(),CE(),Vc(),aD(),cwe(),bD(),RE(),CD(),hwe(),Cwe(),Nwe(),MD(),sO(),lO(),Zm(),lTe(),Bh(),Eu(),Kp(),fTe(),mO(),Uc(),YO=[`book-meta`,`author-bios`],XO=3e4,ZO=6e5,QO=15e3,$O=15e3,ek=3,tk=()=>new Promise(e=>setTimeout(e,0)),nk=Object.freeze({yellow:`#ffdc50`,green:`#78dc8c`,blue:`#78beff`,orange:`#ffb36b`}),rk=yn(nSe()),ik=yn(gTe()),ak=bn(ik,e=>pE(e?.reader_options?.highlight_labels)),ok=e=>ik.update(t=>({...t,donate_prompt:zSe(t,e)})),sk=()=>ik.update(e=>({...e,share_prompt:Ewe(e,`shared`)})),ck=()=>ik.update(e=>({...e,share_prompt:Ewe(e,`never`)})),lk=yn({network_status:{connected:!1},db:null,loaded:!1,boot_error:null,csrf_token:``,user:null,auth_checked:!1,email_verified:!1,pending_email:``,has_password:!1,email_verification_required:!1,social:{available:!1,enabled:!1,has_data:!1},country:``}),uk=bn(lk,e=>!!e.network_status?.connected),dk=bn([ik,lk],([e,t])=>!!((window.__DEBUG__||t.user?.is_staff)&&e.general_options.use_testing_data)),typeof window<`u`&&window.__TURATH_E2E__&&(window.__turath_stores={appstate:ik,session:lk}),fk=yn({}),pk=new Map,mk=new Map,hk=new Map,gk=new Set,_k=Promise.resolve(),vk=(e,t)=>{for(let n of new Set((t||[]).map(Number).filter(Boolean)))e.set(n,(e.get(n)||0)+1)},yk=(e,t)=>e.get(+t)||0,ESe(()=>Sn(lk).db),bk=yn([]),xk=yn(!1),Sk=yn(``),Ck=[`book_name`,`author_id`,`cat_id`,`writing_id`,`anchor_id`],wk=bn([bk,rk],([e,t])=>e.map(e=>{let n=t.books?.[e.book_id],r=Hc();return{...e,color:SE.normalize_color(e.color),note:e.note||``,text:e.text||``,author_id:n?.author_id,cat_id:n?.cat_id,book_name:n?.name||r(1472,[Dc(e.book_id)])}})),Tk=null,Ek=0,Dk=()=>typeof performance<`u`?Math.round(performance.now()):Date.now(),Ok=!1,Ak=null,jk=null,Mk=0,Nk=new Map,Pk=new Set,Fk=null,Ik=null,Lk=!1,Rk=new Set,zk=!1,Bk=null,Vk=null,Hk=null,Uk=0,Wk=null,Gk=Promise.resolve(),Kk=xO(),qk=xO(),Jk=()=>Kk(()=>{}),Yk=mwe({abort_active_work:()=>{jk?.abort(),Hk?.abort();for(let e of Nk.values())e.abort_controller.abort();Bk?.abort_controller.abort(),clearTimeout(Wk),Wk=null,clearTimeout(Fk),Fk=null,Lk=!1},close_db:CT,flush_state:async()=>{await Promise.all([SO(),dO(),jD()]),await UD(),await DD.checkpoint({shutdown:!0})},get_boot_promise:()=>kk,get_active_work_promise:()=>{let e=[Ak,Vk,Ik,...[...Nk.values()].map(e=>e.promise),...Pk,...gk,...[...pk.values()].map(e=>e.promise)].filter(Boolean);return e.length?Promise.allSettled(e).then(e=>{let t=e.find(e=>e.status===`rejected`);if(t)throw t.reason}):null},report_active_work_error:e=>{e?.name!==`AbortError`&&(eT(`app_reload.active_work.error`,{error:e}),globalThis.Sentry?.captureException?.(e,{tags:{turath_reload_step:`active_work`}}))}}),Xk=null,Zk=0,Qk=(e,t,n)=>CO(()=>wO(e,t),n),window._shutdown_before_reload=TO,document.addEventListener(`visibilitychange`,()=>{document.hidden&&!Yk.pending&&DD.checkpoint().catch(e=>console.error(`Search checkpoint failed`,e))}),Tne(TO),kk=(async()=>{sTe(e=>{let t=Sn(lk).network_status?.connected,n=Sn(lk).network_status?.connectionType;lk.update(t=>({...t,network_status:e})),e.connected&&t===!1&&location.pathname!==`/admin`&&!location.pathname.startsWith(`/admin/`)&&wne().then(async e=>{e&&await EO(`ui_language_retry`)}).catch(e=>window.__DEBUG__&&console.error(e)),e.connected&&!t&&Sn(lk).loaded&&AO(!0),e.connected&&!t&&Sn(lk).loaded&&OO(`reconnect`),e.connected&&e.connectionType!==n&&UO(`network`)});let e=oTe();lk.update(t=>({...t,network_status:e}));try{eT(`store.boot.start`,{}),wTe(),await ETe(e),await AO(e.connected),eT(`store.boot.done`,{})}catch(e){if(e instanceof Up||Zbe(e))return;console.error(e),eT(`store.boot.error`,{error:e}),$w(`store.boot.error`,{error:e}),lk.update(t=>({...t,loaded:!0,boot_error:e?.message||String(e)})),Sentry.captureException?.(e instanceof Error?e:Error(e?.result?.message||e?.message||String(e)))}ik.subscribe(gl(()=>{Yk.pending||SO().catch(()=>{})},200)),window.crossOriginIsolated||console.warn(`crossOriginIsolated is false`)})(),$k=(e,t=_D(e))=>({content:t,update:yk(mk,e),catalog:Mk}),eA=(e,t)=>e.content===t.content&&e.update===t.update&&e.catalog===t.catalog,tA=(e,t)=>t.catalog===Mk&&+e in(Sn(rk).books||{})&&vD(e,t.content)&&yk(mk,e)===t.update,nA=new Map,rA=`download_artifact_repair_v2`,iA=e=>Object.entries(Sn(ik).books_local||{}).filter(([t,n])=>ME(n)&&t in e).map(([e])=>+e),/(Version\/17\.2|iPhone OS 17_2).*Safari/.test(navigator.userAgent)&&addEventListener(`error`,async e=>{e?.message?.includes(`Cannot inject key into script value`)&&(Sentry.captureMessage(`Resetting sqlite on safari 17.2`),await Nxe(Sn(lk).db),location.reload())}),aA=new Set([`books`,`authors`,`cats`,`book-meta`,`author-bios`]),oA=new Set([`books`,`authors`,`cats`]),sA=(e,t)=>[...e.entries()].filter(([,e])=>e===t).map(([e])=>e)})),GTe=o((()=>{df(),cA();{let e=[...new Set(`${Object.keys(top)}`.match(/[a-z]/g))].sort().join(``),t=(...t)=>t.map(t=>e[t]).join(``);!window.__DEBUG__&&!window.desktop?.is_electron&&!((e,t)=>{for(var n=-1;n++<=e.length;)if(e.slice(n,t.length+n)==t)return!0})(`${top[t(11,14,2,0,19,8,14,13)]}`,t(19,20,17,0,19,7))&&setTimeout(async()=>{let e=Sn(lk).db,n=`book-`+t(8,13,3,4,23,4,18);if(!e)return;let r=await e.list_catalog_records(n);r.length&&await e.upsert_catalog_records(n,r.map(e=>({...e,headings:[]})))},7e5)}})),lA,uA,dA,fA,pA,mA,hA,gA,_A,vA,yA,bA,xA,SA,CA,wA,TA,EA,DA,OA,kA,AA,jA,MA,NA,PA,FA,IA,LA,RA,zA,BA,KTe=o((()=>{lA=48,uA=(e,t=0)=>{let n=new Int32Array(e.length);for(let r=0;r{let t=new Int32Array(e.length+1);for(let n=0;n{let t=new Int32Array(e.length),n=0;for(let r=0;r>>1^-(i&1),t[r]=n}return t},pA=384,mA=[],hA=dA(uA(`E0500002005282000000002000150000020021820000011200000003022202000300004200120000200420001200021200301200010400162000010000220021010:2192001200220012000220012000200200200400010200040000000000400200108200110100000022010313000162002000020020012020080213000228200000000082000000000120002000120020020040101020300130001001010`)),gA=dA(uA(`:11111111211111119311546544411119731869:671397415686432441111111111161114151214313433415:78311132233313187211117221449443411141111151152226611131111112212518142224214215421421542142424242516171151615616347111111111197911327451111111111111111111113134714133513411111311111111111111111111112444411111342312715245411117:3`)),_A=`@containerabcdefghinlmoprstunderlineviawzccentlignnimatespectuto-colsrowsaglorightnessckdrop-sisbcontrastfiltergrayscalehue-rotateinvertopacityslurrightnessaturateepia-coniclinearpositionradialsizeockurrderttom-belrstxyespacing-xyaretoursorlnt-umnsendspantartainentrasteividerop-shadowurationcorationlay-xyasendillexontromlter-featuresstretchapr-xyayscaleidow-colsrowsue-rotatedentlinesetvert-beringsxyeshadoweiadingftnest-clamp-imageabein-lrstxyskx--b-coniclpositionrsizet-x-y-fromto-fromto-inearfromto-fromto-adialfromto-fromtofromtofromtofromtoblockhinlinew-screenesblockhinlinewbjectpacityrutlinederigin-offsetbelrstxyesrspective-originaceholderioghtng-offsettateundedw-xyz-belrstlreseslr-endspantartaturatecepiahizekewpace-taleroll-xyz-barmpbelrstxyesbelrstxyes-thumbrackadowrink-xyxyartrokeabextora-shadowpckingnsformitionlate-xyz-offsetill-changeoom`,vA=(()=>{let e=hA.length-1,t=new Int32Array(e);for(let n=e-1;n>=0;n--){let e=1,r=n+1;for(let i=hA[n];iE?F@03263243255B:032523853:0325B:8GA032542HE?3257D>03258432585:0325B:;0328B:032`),SA=uA(`012123445661666666789111:5;;;;;;;;444;;;:62999<1161=62>>?61:21@ABCD4446996:64E:::;:?::64:F114GHHIHHHHIHH1HH1HH1HHHHHH::EJK4444::EJ4444441691;644444114244444:;L6666555555555555555999666664444444444444444444444226?6:66644M9N?D:111::::6DJ199`),CA=fA(`0202002020020020020020020020020200200200200200200200002020202001003040106000200200200200200200200200200200200200200200200200200200200200200200200200200200200020020020020020020002020200202002002002002002002002002002020002002020020200220200200200200200200200200200200020020020000200020002000200200200020020020002000200200200020020202002020202000200200020022000200200020020002002000200220002002000200W0Z00020020002002020002002000200g0j0002002000200200020020002002000200200020020002000200002000002002002002002000200020000200002002002002002002002020020020200200200200200200200200202020020020020020020020020002002002020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020002002002002002002000200200200200200200200200200020202020002000200020002002002002000020200200`),wA=(()=>{let e=new Int32Array(319).fill(-1),t=fA(`02422242:222222242224222242442222222422222244442242226224222426222422442462222422622222222626222462242622422622422424242422222222422222222242422222222222222222622442224222222222222224424442262222222222222222222226224222424242422224422422422222`),n=fA(`02222222222222222222202222222222222222222222221422222222222222222222222222222222222Y\\222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222221422222222222222222222222222222222222222Ŀł222222222222222222`);for(let r=0;r