dsh-aha-tutor 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js CHANGED
@@ -1,5 +1,5 @@
1
- window.__ModuleLoader__.load({id:`dsh-aha-tutor`,factory:e=>{var t={exports:{}},n=t.exports;Object.defineProperty(n,Symbol.toStringTag,{value:`Module`});let r=e("react"),i=e("react/jsx-runtime"),a=e("@deepseek-ai/dsh-client-ui-primitives"),o=e("react-dom");var s=class extends r.Component{constructor(e){super(e),this.state={failed:!1,error:null,resetKey:e.resetKey},this.retry=()=>this.setState({failed:!1,error:null})}static getDerivedStateFromError(e){return{failed:!0,error:e}}static getDerivedStateFromProps(e,t){return e.resetKey===t.resetKey?null:{failed:!1,error:null,resetKey:e.resetKey}}componentDidCatch(e){this.props.onError?.(e)}render(){return this.state.failed?this.props.fallback({error:this.state.error,retry:this.retry}):this.props.children}};function c(e){return String(e?.message??e).slice(0,300)}function l({t:e,error:t,place:n=`page`,onRetry:i,onHome:a}){let o=i?(0,r.createElement)(`button`,{type:`button`,className:`aha-btn`,"data-size":n===`page`?void 0:`sm`,onClick:i},e(`retry`)):null;return n===`card`?(0,r.createElement)(`div`,{className:`aha-spread`,role:`alert`},(0,r.createElement)(`span`,{className:`aha-error`,title:c(t)},e(`crashPart`)),o):n===`tab`?(0,r.createElement)(`div`,{className:`aha-col`,role:`alert`,style:{gap:8}},(0,r.createElement)(`p`,{className:`aha-error`,title:c(t)},e(`crashPart`)),o?(0,r.createElement)(`div`,null,o):null):(0,r.createElement)(`div`,{className:`aha-page`},(0,r.createElement)(`div`,{className:`aha-card`,role:`alert`,style:{alignItems:`center`,textAlign:`center`,gap:12,padding:`28px 16px`}},(0,r.createElement)(`p`,{className:`aha-cardTitle`,title:c(t)},e(`crashPage`)),o?(0,r.createElement)(`p`,{className:`aha-hint`},e(`crashPageHint`)):null,(0,r.createElement)(`div`,{className:`aha-row`,style:{justifyContent:`center`}},o,(0,r.createElement)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:a},e(`backHome`)))))}var u=class extends Error{constructor(e,t){super(t),this.name=`ApiError`,this.code=e}};function d(e){async function t(t,n={}){let r;try{r=await e.call(`/aha-tutor`,t,n??{})}catch(e){throw new u(`connection`,e?.message||`Connection to DSH failed`)}if(!r?.ok)throw new u(r?.error?.code??`failed`,r?.error?.message??`Request failed`);return r.value}async function n(e,{onPartial:n,onProgress:r,onPreview:i,signal:a}={}){let o=e?.job;if(!o)return e;let s=0,c=o;for(;;){if(c.partial?.length&&(n?.(c.partial,s),s+=c.partial.length),c.progress&&r?.(c.progress),c.preview&&i?.(c.preview,c),c.status===`done`)return c.result;if(c.status===`cancelled`||a?.aborted)throw new u(`cancelled`,`cancelled`);if(c.status===`failed`)throw new u(c.error?.code??c.status,c.error?.message??c.status);if(c.status===`missing`)throw new u(`missing`,`The task was lost; try again`);await new Promise(e=>{setTimeout(e,650)}),c=await t(`job/get`,{id:o.id,since:s})}}async function r(e,r,i){return n(await t(e,r),i)}function i(e){let n=typeof e==`string`?e:e?.id;return n?t(`job/cancel`,{id:n}).catch(()=>void 0):Promise.resolve()}return{call:t,follow:n,run:r,cancel:i}}function f(e,t){return t?.id?{...e,jobId:t.id}:e}function p(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(r.error??Error(`read failed`)),r.onload=()=>{let e=String(r.result??``);t(e.slice(e.indexOf(`,`)+1))},r.readAsDataURL(e)})}function m(e,t=`aha`){return String(e??``).replace(/[<>:"/\\|?*\u0000-\u001f]/gu,` `).replace(/\s+/gu,` `).trim().slice(0,60).trim()||t}function h(e,t,n=`application/json`){let r=URL.createObjectURL(new Blob([t],{type:`${n};charset=utf-8`})),i=document.createElement(`a`);i.href=r,i.download=e,document.body.append(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(r),5e3)}function g(e,t){let n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=e,document.body.append(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e4)}let _=(0,r.createContext)(null);function v(){let e=(0,r.useContext)(_);if(!e)throw Error(`AppContext missing`);return e}function y(e,t=[]){let[n,i]=(0,r.useState)({loading:!0,error:null,value:void 0}),a=(0,r.useRef)(0),o=(0,r.useCallback)(()=>{let t=++a.current;i(e=>({...e,loading:!0,error:null})),Promise.resolve().then(e).then(e=>{a.current===t&&i({loading:!1,error:null,value:e})}).catch(e=>{a.current===t&&i(t=>({loading:!1,error:e,value:t.value}))})},t);return(0,r.useEffect)(()=>(o(),()=>{a.current+=1}),[o]),{...n,reload:o,setValue:e=>i(t=>({...t,value:typeof e==`function`?e(t.value):e}))}}function b(){let{api:e}=v(),[t,n]=(0,r.useState)({running:!1,progress:null,preview:null,error:null}),i=(0,r.useRef)(null),a=(0,r.useRef)(null);(0,r.useEffect)(()=>()=>i.current?.abort(),[]);let o=(0,r.useCallback)(async(t,r,{onPartial:o,existing:s}={})=>{i.current?.abort();let c=new AbortController;i.current=c,a.current=s?.id??null,n({running:!0,progress:null,preview:null,error:null});try{let i={signal:c.signal,onPartial:o,onProgress:e=>{c.signal.aborted||n(t=>({...t,progress:e}))},onPreview:e=>{c.signal.aborted||n(t=>({...t,preview:e}))}},l=s?{job:s}:await e.call(t,r);l?.job?.id&&!c.signal.aborted&&(a.current=l.job.id);let u=await e.follow(l,i);return c.signal.aborted||n({running:!1,progress:null,preview:null,error:null}),u}catch(e){throw c.signal.aborted||n({running:!1,progress:null,preview:null,error:e}),e}},[e]),s=(0,r.useCallback)(()=>{i.current?.abort(),a.current&&e.cancel(a.current),a.current=null,n({running:!1,progress:null,preview:null,error:null})},[e]);return{...t,run:o,cancel:s}}function x(e){let[t]=(0,r.useState)(()=>{if(!e)return!1;let t=`aha-tutor:once:${e}`;try{if(window.sessionStorage.getItem(t))return!1;window.sessionStorage.setItem(t,`1`)}catch{}return!0});return t}function S(e,t){let[n,i]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{if(i(!1),!e)return;let n=setTimeout(()=>i(!0),t);return()=>clearTimeout(n)},[e,t]),e&&n}function C(e,t){let n=`aha-tutor:${e}`,[i,a]=(0,r.useState)(()=>{try{let e=window.localStorage.getItem(n);return e===null?t:JSON.parse(e)}catch{return t}});return(0,r.useEffect)(()=>{try{window.localStorage.setItem(n,JSON.stringify(i))}catch{}},[n,i]),[i,a]}function w(){let e=()=>{if(document.body?.hasAttribute(`data-ds-dark-theme`))return!0;let e=getComputedStyle(document.documentElement).colorScheme;return/dark/iu.test(e)&&!/light/iu.test(e)?!0:!document.body&&window.matchMedia?.(`(prefers-color-scheme: dark)`).matches===!0},[t,n]=(0,r.useState)(e);return(0,r.useEffect)(()=>{let t=window.matchMedia?.(`(prefers-color-scheme: dark)`),r=()=>n(e());t?.addEventListener?.(`change`,r);let i=new MutationObserver(r);return i.observe(document.body,{attributes:!0,attributeFilter:[`data-ds-dark-theme`]}),i.observe(document.documentElement,{attributes:!0,attributeFilter:[`style`,`data-ds-theme-source`]}),()=>{t?.removeEventListener?.(`change`,r),i.disconnect()}},[]),t}function T(e){let t=new Uint8Array(e);globalThis.crypto.getRandomValues(t);let n=``;for(let e of t)n+=(e%36).toString(36);return n}function E(e){if(!/^[a-z]{2,6}$/u.test(e))throw TypeError(`invalid id prefix "${e}"`);return`${e}_${Date.now().toString(36)}${T(6)}`}Object.freeze({perLesson:3,span:4e3,terms:6});let D=Object.freeze({chars:240,nodes:400,depth:40});var O=class extends Error{constructor(e,{unknown:t,call:n=!1}={}){super(e),this.name=`ExprError`,t!==void 0&&(this.unknown=t,this.call=n)}};let k=Object.freeze({sin:[1,Math.sin],cos:[1,Math.cos],tan:[1,Math.tan],cot:[1,e=>1/Math.tan(e)],sec:[1,e=>1/Math.cos(e)],csc:[1,e=>1/Math.sin(e)],asin:[1,Math.asin],acos:[1,Math.acos],atan:[1,Math.atan],arcsin:[1,Math.asin],arccos:[1,Math.acos],arctan:[1,Math.atan],atan2:[2,Math.atan2],sinh:[1,Math.sinh],cosh:[1,Math.cosh],tanh:[1,Math.tanh],asinh:[1,Math.asinh],acosh:[1,Math.acosh],atanh:[1,Math.atanh],exp:[1,Math.exp],ln:[1,Math.log],log:[1,Math.log10],lg:[1,Math.log10],log10:[1,Math.log10],log2:[1,Math.log2],sqrt:[1,Math.sqrt],cbrt:[1,Math.cbrt],abs:[1,Math.abs],sign:[1,Math.sign],sgn:[1,Math.sign],mod:[2,(e,t)=>e-t*Math.floor(e/t)],floor:[1,Math.floor],ceil:[1,Math.ceil],round:[1,Math.round],min:[-2,Math.min],max:[-2,Math.max],pow:[2,Math.pow],if:[3,(e,t,n)=>A([e,t,n])],piecewise:[-2,(...e)=>A(e)]});function A(e){for(let t=0;t+1<e.length;t+=2){if(Number.isNaN(e[t]))return NaN;if(e[t])return e[t+1]}return e.length%2?e[e.length-1]:NaN}let ee=new Set([`floor`,`ceil`,`round`,`sign`,`sgn`]),te=Object.freeze({pi:Math.PI,π:Math.PI,e:Math.E}),j=e=>Object.hasOwn(k,e),ne=e=>Object.hasOwn(te,e),re=Object.freeze({alpha:`α`,beta:`β`,gamma:`γ`,delta:`δ`,epsilon:`ε`,zeta:`ζ`,eta:`η`,theta:`θ`,iota:`ι`,kappa:`κ`,lambda:`λ`,mu:`μ`,nu:`ν`,xi:`ξ`,rho:`ρ`,sigma:`σ`,tau:`τ`,upsilon:`υ`,phi:`φ`,chi:`χ`,psi:`ψ`,omega:`ω`,Gamma:`Γ`,Delta:`Δ`,Theta:`Θ`,Lambda:`Λ`,Xi:`Ξ`,Sigma:`Σ`,Phi:`Φ`,Psi:`Ψ`,Omega:`Ω`}),ie=Object.freeze({ϕ:`φ`,ϑ:`θ`,ϵ:`ε`,ϱ:`ρ`,ς:`σ`});function ae(e){let t=re[e]??ie[e]??e;return[t,Object.keys(re).find(e=>re[e]===t),...Object.keys(ie).filter(e=>ie[e]===t)].filter(t=>t&&t!==e)}let oe=[[/[−–—]/gu,`-`],[/[×·⋅∙]/gu,`*`],[/÷/gu,`/`],[/\*\*/gu,`^`],[/²/gu,`^2`],[/³/gu,`^3`],[/[([{]/gu,`(`],[/[)\]}]/gu,`)`],[/[,]/gu,`,`],[/[≤⩽]/gu,`<=`],[/[≥⩾]/gu,`>=`],[/≠/gu,`!=`],[/</gu,`<`],[/>/gu,`>`],[/=/gu,`=`],[/?/gu,`?`],[/:/gu,`:`],[/∧/gu,`&&`],[/∨/gu,`||`]],se=Object.freeze({le:`<=`,leq:`<=`,leqslant:`<=`,lt:`<`,ge:`>=`,geq:`>=`,geqslant:`>=`,gt:`>`,ne:`!=`,neq:`!=`,land:`&&`,wedge:`&&`,lor:`||`,vee:`||`});function ce(e,t){if(e[t]!==`{`)return null;let n=0;for(let r=t;r<e.length;r+=1)if(e[r]===`{`)n+=1;else if(e[r]===`}`&&(--n,n===0))return[e.slice(t+1,r),r+1];return null}let le=(e,t)=>{let n=t;for(;e[n]===` `;)n+=1;return n};function M(e){let t=e.replace(/\f/gu,`\\f`).replace(/\u0008/gu,`\\b`).replace(/[\t\r\n](?=[a-zA-Z])/gu,e=>({" ":`\\t`,"\r":`\\r`,"\n":`\\n`})[e]);if(!t.includes(`\\`)&&!t.includes(`_{`))return t;let n=``,r=0;for(;r<t.length;){let e=/^\\([a-zA-Z]+)/u.exec(t.slice(r));if(!e){let e=/^_\{([\p{L}\p{N}]+)\}/u.exec(t.slice(r)),i=/^\\[,;:! ]/u.test(t.slice(r));n+=e?`_${e[1]}`:i?` `:t[r],r+=e?e[0].length:i?2:1;continue}let i=e[1],a=le(t,r+e[0].length);if([`frac`,`dfrac`,`tfrac`].includes(i)){let e=ce(t,a),i=e&&ce(t,le(t,e[1]));if(i){n+=`((${M(e[0])})/(${M(i[0])}))`,r=i[1];continue}}if(i===`sqrt`){let e=t[a]===`[`?t.indexOf(`]`,a):-1,i=ce(t,le(t,e>=0?e+1:a));if(i){n+=e>=0?`((${M(i[0])})^(1/(${M(t.slice(a+1,e))})))`:`sqrt(${M(i[0])})`,r=i[1];continue}}if([`mathrm`,`operatorname`,`text`,`mathit`,`mathbf`].includes(i)){let e=ce(t,a);if(e){n+=M(e[0]),r=e[1];continue}}if(i===`left`||i===`right`){r=a;continue}n+=[`cdot`,`times`,`ast`].includes(i)?`*`:i===`div`?`/`:se[i]?` ${se[i]} `:i,r+=e[0].length}return n}function ue(e){let t=M(String(e??``));for(let[e,n]of oe)t=t.replace(e,n);let n=[],r=0;for(;r<t.length;){let e=t[r];if(/\s/u.test(e)){r+=1;continue}let i=/^(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?/u.exec(t.slice(r));if(i){n.push({type:`num`,value:Number(i[0])}),r+=i[0].length;continue}let a=/^[\p{L}_][\p{L}\p{N}_]*/u.exec(t.slice(r));if(a){n.push({type:`name`,value:a[0]}),r+=a[0].length;continue}let o=t.slice(r,r+2);if([`<=`,`>=`,`==`,`!=`,`&&`].includes(o)){n.push({type:o===`==`?`=`:o}),r+=2;continue}if(e===`&`){n.push({type:`&&`}),r+=1;continue}if(`+-*/^(),|√<>=?:`.includes(e)){n.push({type:e}),r+=1;continue}throw new O(`Unexpected "${e}"`)}return n}function de(e,t=[]){let n=String(e??``);if(!n.trim())throw new O(`Empty formula`);if(n.length>D.chars)throw new O(`Formula too long`);let r=new Set(t),i=ue(n),a=0,o=0,s=0,c=()=>i[a],l=e=>{let t=i[a];if(!t||e&&t.type!==e)throw new O(e?`Expected "${e}"`:`Unexpected end`);return a+=1,t},u=e=>{if(o+=1,o>D.nodes)throw new O(`Formula too long`);return e},d=e=>{if(s+=1,s>D.depth)throw new O(`Formula nested too deeply`);try{return e()}finally{--s}},f=(e,t)=>e?.type===`name`&&e.value===t,p=e=>e&&(e.type===`num`||e.type===`name`&&!fe.has(e.value)||e.type===`(`||e.type===`√`);function m(){let e=h();if(c()?.type!==`?`)return e;l();let t=d(m);l(`:`);let n=d(m);return u({k:`call`,f:`if`,args:[e,t,n]})}function h(){let e=g();for(;;){if(f(c(),`or`))l();else if(c()?.type===`|`&&i[a+1]?.type===`|`)a+=2;else return e;e=u({k:`or`,a:e,b:g()})}}function g(){let e=_();for(;f(c(),`and`)||c()?.type===`&&`;)l(),e=u({k:`and`,a:e,b:_()});return e}function _(){let e=v();if(!pe.has(c()?.type))return e;let t=[e],n=[];for(;pe.has(c()?.type);)n.push(l().type),t.push(v());return u({k:`cmp`,ops:n,args:t})}function v(){let e=y();for(;c()?.type===`+`||c()?.type===`-`;){let t=l().type;e=u({k:`bin`,op:t,a:e,b:y()})}return e}function y(){let e=b();for(;;){let t=c();if(t?.type===`*`||t?.type===`/`)l(),e=u({k:`bin`,op:t.type,a:e,b:b()});else if(p(t))e=u({k:`bin`,op:`*`,a:e,b:x()});else return e}}function b(){let e=c();return e?.type===`-`?(l(),u({k:`neg`,a:d(b)})):e?.type===`+`?(l(),d(b)):x()}function x(){let e=T();return c()?.type===`^`?(l(),u({k:`bin`,op:`^`,a:e,b:d(b)})):e}function S(e){let[t]=k[e];l(`(`);let n=[d(m)];for(;c()?.type===`,`;)l(),n.push(d(m));if(l(`)`),t>0?n.length!==t:n.length<-t)throw new O(`${e} takes ${Math.abs(t)} argument${Math.abs(t)>1?`s`:``}`);return u({k:`call`,f:e,args:n})}function C(e){if(r.has(e))return u({k:`var`,n:e});let t=ae(e).find(e=>r.has(e));if(t)return u({k:`var`,n:t});if(ne(e))return u({k:`num`,v:te[e]});if(fe.has(e))throw new O(`Unexpected "${e}"`);if(j(e)){if(c()?.type!==`(`)throw new O(`Write ${e}(…) with parentheses`);return S(e)}let n=w(e);if(!n)throw new O(`Unknown name "${e}"`,{unknown:e,call:c()?.type===`(`});let i=null;for(let[t,a]of n.entries()){let o;if(j(a)){if(t!==n.length-1||c()?.type!==`(`)throw new O(`Unknown name "${e}"`,{unknown:e});o=S(a)}else o=u(r.has(a)?{k:`var`,n:a}:{k:`num`,v:te[a]});i=i?u({k:`bin`,op:`*`,a:i,b:o}):o}return i}function w(e){let t=[...r,...Object.keys(te),...Object.keys(k)].sort((e,t)=>t.length-e.length),n=[],i=e;for(;i;){let e=t.find(e=>i.startsWith(e));if(!e)return null;n.push(e),i=i.slice(e.length)}return n.length>1?n:null}function T(){let e=l();if(e.type===`num`)return u({k:`num`,v:e.value});if(e.type===`name`)return C(e.value);if(e.type===`(`){let e=d(m);return l(`)`),e}if(e.type===`|`){let e=d(v);return l(`|`),u({k:`call`,f:`abs`,args:[e]})}if(e.type===`√`)return u({k:`call`,f:`sqrt`,args:[d(x)]});throw new O(`Unexpected "${e.type}"`)}let E=m();if(a<i.length)throw new O(`Unexpected "${i[a].type===`name`||i[a].type===`num`?i[a].value:i[a].type}"`);return E}let fe=new Set([`and`,`or`]),pe=new Set([`<`,`<=`,`>`,`>=`,`=`,`!=`]),me=(e,t)=>Math.abs(e-t)<=1e-12*Math.max(1,Math.abs(e),Math.abs(t)),he=Object.freeze({"<":(e,t)=>e<t,"<=":(e,t)=>e<=t||me(e,t),">":(e,t)=>e>t,">=":(e,t)=>e>=t||me(e,t),"=":me,"!=":(e,t)=>!me(e,t)});function ge(e,t=[],n=null){let r=new Map(t.map((e,t)=>[e,t])),i=n?e=>{n.sig=(n.sig*31+(Number.isFinite(e)?e:0)+7)%1000000007}:()=>{},a=e=>{switch(e.k){case`num`:{let t=e.v;return()=>t}case`var`:{let t=r.get(e.n);if(t===void 0)throw new O(`Unknown name "${e.n}"`);return e=>e[t]}case`neg`:{let t=a(e.a);return e=>-t(e)}case`bin`:{let t=a(e.a),n=a(e.b);return e.op===`+`?e=>t(e)+n(e):e.op===`-`?e=>t(e)-n(e):e.op===`*`?e=>t(e)*n(e):e.op===`/`?e=>t(e)/n(e):e=>_e(t(e),n(e))}case`cmp`:{let t=e.args.map(a),n=e.ops.map(e=>he[e]);return e=>{let r=t[0](e);for(let a=0;a<n.length;a+=1){let o=t[a+1](e);if(Number.isNaN(r)||Number.isNaN(o))return NaN;if(!n[a](r,o))return i(0),0;r=o}return i(1),1}}case`and`:case`or`:{let t=a(e.a),n=a(e.b),r=e.k===`and`?0:1;return e=>{let i=t(e);if(Number.isNaN(i))return NaN;if(+!!i===r)return r;let a=n(e);return Number.isNaN(a)?NaN:+!!a}}case`call`:{let t=e.args.map(a);if(e.f===`if`||e.f===`piecewise`){let e=Math.floor(t.length/2),n=t.length%2?t[t.length-1]:null;return r=>{for(let n=0;n<e;n+=1){let e=t[n*2](r);if(Number.isNaN(e))return NaN;if(e)return i(n+2),t[n*2+1](r)}return i(1),n?n(r):NaN}}let n=k[e.f][1];if(e.f===`mod`){let[e,r]=t;return t=>{let a=e(t),o=r(t);return i(Math.floor(a/o)),n(a,o)}}if(t.length===1){let[r]=t;return ee.has(e.f)?e=>{let t=n(r(e));return i(t),t}:e=>n(r(e))}return e=>n(...t.map(t=>t(e)))}default:throw new O(`Bad formula`)}};return a(e)}function _e(e,t){let n=e**t;if(!Number.isNaN(n)||e>=0||!Number.isFinite(t))return n;for(let n of[3,5,7,9]){let r=Math.round(t*n);if(Math.abs(r/n-t)<1e-9)return(-((-e)**(1/n)))**r}return n}let ve={0:`⁰`,1:`¹`,2:`²`,3:`³`,4:`⁴`,5:`⁵`,6:`⁶`,7:`⁷`,8:`⁸`,9:`⁹`,"-":`⁻`},ye={pi:`π`,theta:`θ`,omega:`ω`,phi:`φ`,alpha:`α`,beta:`β`,lambda:`λ`,mu:`μ`,sigma:`σ`,tau:`τ`},be={"+":1,"-":1,"*":2,"/":2,"^":4};function xe(e){return Math.abs(e-Math.PI)<1e-12?`π`:Math.abs(e-Math.E)<1e-12?`e`:Number(e.toPrecision(6)).toString()}let Se=e=>[...String(e)].map(e=>ve[e]).join(``),Ce=e=>[...e].length===1&&/\p{L}/u.test(e),we=Object.freeze({"<":`<`,"<=":`≤`,">":`>`,">=":`≥`,"=":`=`,"!=":`≠`}),Te=Object.freeze({"<":`>=`,"<=":`>`,">":`<=`,">=":`<`,"=":`!=`,"!=":`=`});function Ee(e){let t=[],n=e;for(;;){for(let e=0;e+1<n.args.length;e+=2)t.push([n.args[e],n.args[e+1]]);if(n.args.length%2==0)return t;let e=n.args[n.args.length-1];if(e.k===`call`&&(e.f===`if`||e.f===`piecewise`)){n=e;continue}let r=t.length===1?t[0][0]:null,i=r?.k===`cmp`&&r.ops.length===1?{...r,ops:[Te[r.ops[0]]]}:null;return[...t,[i,e]]}}function De(e,t=ye){let n=e=>t[e]??e,r=(e,t=0)=>{switch(e.k){case`num`:return xe(e.v);case`var`:return n(e.n);case`neg`:{let n=r(e.a,3);return t>2?`(−${n})`:`−${n}`}case`cmp`:{let n=e.args.map((t,n)=>`${n?` ${we[e.ops[n-1]]} `:``}${r(t,1)}`).join(``);return t>.5?`(${n})`:n}case`and`:case`or`:{let n=`${r(e.a,.5)} ${e.k} ${r(e.b,.5)}`;return t>.4?`(${n})`:n}case`call`:if(e.f===`if`||e.f===`piecewise`){let n=Ee(e).map(([e,t])=>e?`${r(t)} (${r(e)})`:r(t)).join(`; `);return t>0?`{${n}}`:n}return e.f===`abs`?`|${r(e.args[0])}|`:e.f===`sqrt`?`√(${r(e.args[0])})`:`${e.f}(${e.args.map(e=>r(e)).join(`, `)})`;case`bin`:{let n=be[e.op],i;if(e.op===`^`){let t=r(e.a,5),n=e=>e.k===`num`&&Number.isInteger(e.v)&&Math.abs(e.v)<100,a=r(e.b);i=`${t}${n(e.b)?Se(e.b.v):e.b.k===`neg`&&n(e.b.a)?`⁻${Se(e.b.a.v)}`:Ce(a)?`^${a}`:`^(${a})`}`}else if(e.op===`*`){let t=r(e.a,n),a=r(e.b,n);i=e.a.k===`num`&&/\d$/u.test(t)&&/^[\p{L}(√|]/u.test(a)||Ce(t)&&(Ce(a)||a.startsWith(`(`))||e.a.k!==`call`&&/^[\d\p{L}]+$/u.test(t)&&/\p{L}$/u.test(t)&&Ce(a)||e.a.k!==`call`&&t.endsWith(`)`)&&a.startsWith(`(`)?`${t}${a}`:`${t}·${a}`}else{let t=r(e.a,n),a=r(e.b,e.op===`+`?n:n+.5);i=`${t} ${e.op===`-`?`−`:e.op} ${a}`}return n<t?`(${i})`:i}default:return``}};return r(e)}let Oe=Object.freeze({fns:4,params:6,points:8,lines:6,shades:3,tangents:3,samples:480}),ke=Object.freeze({fx:[`x`,`t`],param:[`t`,`θ`,`theta`],polar:[`θ`,`theta`,`t`]});Object.freeze({fx:[`x`],param:[`t`],polar:[`θ`,`theta`]});function Ae(e,t){return ke[e].filter(e=>!t.includes(e))}function je(e){let t=e.params.map(e=>e.name);return e.fns.map(e=>{let n=Ae(e.kind,t),r=[...n,...t],i={sig:0},a=e=>{let t=ge(de(e,r),r,i),a=Array(r.length).fill(0);return(e,r)=>{for(let t=0;t<n.length;t+=1)a[t]=e;for(let e=0;e<r.length;e+=1)a[n.length+e]=r[e];return t(a)}};if(e.kind===`polar`){let t=a(e.r);return{kind:`polar`,trace:i,at:(e,n)=>{i.sig=0;let r=t(e,n);return[r*Math.cos(e),r*Math.sin(e)]}}}if(e.kind===`param`){let t=a(e.x),n=a(e.y);return{kind:`param`,trace:i,at:(e,r)=>(i.sig=0,[t(e,r),n(e,r)])}}let o=a(e.y);return{kind:`fx`,y:o,trace:i,at:(e,t)=>(i.sig=0,[e,o(e,t)])}})}let Me=e=>e.params.map(e=>e.value);function Ne(e,t,n,r=e.x){return e.fns.map((e,i)=>{let a=t[i],[o,s]=e.kind===`fx`?[Math.max(r?.min??-5,e.domain?.[0]??-1/0),Math.min(r?.max??5,e.domain?.[1]??1/0)]:e.t,c=e.kind===`fx`?Oe.samples:Oe.samples*1.5,l=[];if(!(s>o))return l;let u=null;for(let e=0;e<=c;e+=1){let t=o+(s-o)*e/c,r=a.at(t,n),i=a.trace?.sig??0;if(u&&i!==u.sig&&u.point.every(Number.isFinite)&&r.every(Number.isFinite)){let[e,r]=[u.value,t];for(let t=0;t<24;t+=1){let t=(e+r)/2;a.at(t,n),a.trace.sig===u.sig?e=t:r=t}l.push(a.at(e,n),[NaN,NaN],a.at(r,n))}l.push(r),u={value:t,point:r,sig:i}}return l})}function Pe(e,t,n,r=1){let i=Math.max(1e-7,Math.abs(r)*1e-5);return(e.y(t+i,n)-e.y(t-i,n))/(2*i)}function Fe(e,t){return e[Math.min(e.length-1,Math.max(0,Math.round((e.length-1)*t)))]}function Ie(e,t=je(e)){let n=[[]];if(e.params.length<=4)for(let t of e.params){let e=[];for(let r of n)for(let n of new Set([t.min,t.value,t.max]))e.push([...r,n]);n.splice(0,n.length,...e)}else{let t=Me(e);n.splice(0,1,t,e.params.map(e=>e.min),e.params.map(e=>e.max)),e.params.forEach((e,r)=>{for(let i of[e.min,e.max])n.push(t.map((e,t)=>t===r?i:e))})}let r=[],i=[];for(let a of n)for(let n of Ne(e,t,a))for(let[e,t]of n)!Number.isFinite(e)||!Number.isFinite(t)||(r.push(e),i.push(t));for(let t of e.points)Number.isFinite(t.y)&&i.push(t.y);for(let t of e.lines)t.y!==void 0&&i.push(t.y);let a=(e,t)=>{if(!e.length)return t;let n=[...e].sort((e,t)=>e-t),[r,i]=[n[0],n[n.length-1]],[a,o]=[Fe(n,.03),Fe(n,.97)];i-r>6*Math.max(1e-9,o-a)&&([r,i]=[a,o]),i-r<1e-9&&([r,i]=[r-1,i+1]);let s=(i-r)*.08;return r>0&&r<(i-r)*.35&&(r=0),i<0&&-i<(i-r)*.35&&(i=0),{min:r===0?0:r-s,max:i===0?0:i+s}},o=e.x??a(r,{min:-5,max:5}),s=e.y??a(i,{min:-5,max:5});return{x:{min:o.min,max:o.max},y:{min:Math.min(s.min,s.max-1e-9),max:s.max}}}function Le(e,t){try{return De(de(e,[...new Set([...Object.values(ke).flat(),...t.params.map(e=>e.name)])]))}catch{return e}}let Re=e=>{if(!Number.isFinite(e))return String(e);let t=e/Math.PI;if(e!==0&&Math.abs(t*4-Math.round(t*4))<1e-6){let e=Math.round(t*4),[n,r]=e%4==0?[e/4,1]:e%2==0?[e/2,2]:[e,4],i=n===1?`π`:n===-1?`−π`:`${n}π`.replace(`-`,`−`);return r===1?i:`${i}/${r}`}return Number(e.toPrecision(4)).toString().replace(`-`,`−`)},ze=Re;function Be(e){return e.fns.map(t=>t.kind===`polar`?`r = ${Le(t.r,e)}`:t.kind===`param`?`x = ${Le(t.x,e)}, y = ${Le(t.y,e)}`:`y = ${Le(t.y,e)}`)}function Ve(e){let t=[e.title||e.caption].filter(Boolean),n=Be(e).map((t,n)=>{let r=e.fns[n],i=r.kind===`fx`?e.x?`, x ${Re(r.domain?.[0]??e.x.min)} … ${Re(r.domain?.[1]??e.x.max)}`:``:`, ${r.kind===`polar`?`θ`:`t`} ${Re(r.t[0])} … ${Re(r.t[1])}`;return`${r.name?`${r.name}: `:``}${t}${i}`});return t.push(...n),e.params.length&&t.push(e.params.map(e=>`${e.label||e.name} = ${Re(e.value)} (${Re(e.min)} … ${Re(e.max)})`).join(`; `)),t.join(`
2
- `)}Object.freeze({questions:6,options:5,units:12,lecturesPerUnit:8,lessonsPerLecture:8,lessons:120,objectives:5,concepts:6,projects:3,milestones:6,rubric:8,starterFiles:12,starterFileBytes:64*1024,practiceItems:12,quizItems:30,options4:6,cards:60,libraryCards:300,sheetSections:24,sheetItems:16});function He(e,t=400){return e==null?``:String(e).replace(/\u0000/gu,``).trim().slice(0,t)}let Ue=Object.freeze([`intuition`,`definition`,`derivation`,`application`,`extension`]);function We(e){let t=He(e,200),n=t.search(/[::]/u);return n>0?t.slice(0,n).trim():t}function Ge(e){let t=[];for(let n of e?.units??[])for(let e of n.lectures??[])for(let r of e.lessons??[])t.push({unit:n,lecture:e,lesson:r,index:t.length});return t}function Ke(e,t){let n=e=>{let t=new Map;for(let n of e?.units??[])for(let e of n.lectures??[])for(let r of e.lessons??[])t.set(r.id,{lesson:r,unit:n.title});return t},r=e=>JSON.stringify([e.summary??``,e.objectives??[],e.estMinutes??0,(e.concepts??[]).map(e=>e.name),e.depth??``]),i=n(e),a=n(t),o=[],s=[],c=[];for(let[e,t]of a){let n=i.get(e);n?n.lesson.title===t.lesson.title?(r(n.lesson)!==r(t.lesson)||n.unit!==t.unit)&&c.push({title:t.lesson.title,unit:t.unit}):s.push({from:n.lesson.title,to:t.lesson.title,unit:t.unit}):o.push({title:t.lesson.title,unit:t.unit})}let l=[...i].filter(([e])=>!a.has(e)).map(([,e])=>({title:e.lesson.title,unit:e.unit})),u=new Set((e?.units??[]).map(e=>e.id)),d=new Set((t?.units??[]).map(e=>e.id));return{title:(e?.title??``)===(t?.title??``)?null:{from:e?.title??``,to:t?.title??``},unitsAdded:(t?.units??[]).filter(e=>!u.has(e.id)).map(e=>e.title),unitsRemoved:(e?.units??[]).filter(e=>!d.has(e.id)).map(e=>e.title),added:o,removed:l,renamed:s,changed:c}}function qe(e){return!e.title&&!e.unitsAdded.length&&!e.unitsRemoved.length&&!e.added.length&&!e.removed.length&&!e.renamed.length&&!e.changed.length}function Je(e,t){return Ge(e).find(e=>e.lesson.id===t)??null}function Ye(e){let t=new Map;for(let{lesson:n}of Ge(e))for(let e of n.concepts??[])t.set(e.id,{...e,lessonId:n.id});return t}function Xe(e,t){return e?.lessons?.[t]?.status??`new`}function N(e,t){let n=Ge(e),r=n.filter(e=>Xe(t,e.lesson.id)===`done`),i=n.filter(e=>Xe(t,e.lesson.id)!==`done`).reduce((e,t)=>e+(t.lesson.estMinutes||15),0);return{total:n.length,done:r.length,percent:n.length?Math.round(r.length/n.length*100):0,minutesLeft:i}}function Ze(e,t){let n=Ge(e);return n.find(e=>Xe(t,e.lesson.id)===`learning`)??n.find(e=>Xe(t,e.lesson.id)===`new`)??null}function Qe(e,t){let n=Ge(e),r=n.findIndex(e=>e.lesson.id===t);return r>=0?n[r+1]??null:null}let $e=new Set([`lt`,`gt`,`amp`,`quot`,`apos`]),et=Object.freeze({nbsp:160,ensp:8194,emsp:8195,thinsp:8201,times:215,divide:247,deg:176,plusmn:177,minus:8722,middot:183,sdot:8901,le:8804,ge:8805,ne:8800,asymp:8776,equiv:8801,infin:8734,prop:8733,radic:8730,sum:8721,prod:8719,int:8747,part:8706,nabla:8711,ang:8736,perp:8869,prime:8242,Prime:8243,there4:8756,isin:8712,notin:8713,sub:8834,sup:8835,cap:8745,cup:8746,forall:8704,exist:8707,empty:8709,not:172,larr:8592,rarr:8594,uarr:8593,darr:8595,harr:8596,lArr:8656,rArr:8658,hArr:8660,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,pi:960,rho:961,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,Gamma:915,Delta:916,Theta:920,Lambda:923,Xi:926,Pi:928,Sigma:931,Phi:934,Psi:936,Omega:937,sup1:185,sup2:178,sup3:179,frac12:189,frac14:188,frac34:190,micro:181,ohm:937,para:182,sect:167,copy:169,reg:174,trade:8482,hellip:8230,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,ldquo:8220,rdquo:8221,laquo:171,raquo:187,bull:8226,cent:162,pound:163,yen:165,euro:8364}),tt=Object.freeze(Object.fromEntries(`viewBox.preserveAspectRatio.markerWidth.markerHeight.markerUnits.refX.refY.gradientUnits.gradientTransform.patternUnits.patternContentUnits.patternTransform.startOffset.textLength.lengthAdjust.clipPathUnits.linearGradient.radialGradient.clipPath.textPath.svg.g.path.line.rect.circle.ellipse.polyline.polygon.text.tspan.defs.marker.stop.use.symbol.title.desc.mask.pattern`.split(`.`).map(e=>[e.toLowerCase(),e]))),nt=/\s*([^\s=/>"']+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'<>=`]+)))?/uy,rt=/^<(\/?)([^\s/>]+)([\s\S]*?)(\/?)>$/u,it=/^&(#\d{1,7}|#x[0-9a-fA-F]{1,6}|[A-Za-z][A-Za-z0-9]{0,31});/u,at=e=>e===9||e===10||e===13||e>=32&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111;function ot(e,t,n){let r=e.indexOf(n,t);return r<0?-1:r+n.length}function st(e,t){let n=``;for(let r=t+1;r<e.length;r+=1){let t=e[r];if(n)t===n&&(n=``);else if(t===`"`||t===`'`)n=t;else if(t===`>`)return r+1;else if(t===`<`)return-1}return-1}let ct=(e,t)=>/[A-Za-z_/]/u.test(e[t+1]??``);function lt(e,t){let n=it.exec(e.slice(t,t+40));if(!n)return[`&amp;`,1];let r=n[1];if(r.startsWith(`#`)){let e=r[1]===`x`?Number.parseInt(r.slice(2),16):Number.parseInt(r.slice(1),10);return[at(e)?n[0]:``,n[0].length]}if($e.has(r))return[n[0],n[0].length];let i=et[r];return[i?`&#${i};`:`&amp;${r};`,n[0].length]}function ut(e,{quote:t=``}={}){let n=``;for(let r=0;r<e.length;){let i=e[r];if(i===`&`){let[t,i]=lt(e,r);n+=t,r+=i;continue}n+=i===`<`?`&lt;`:i===t?`&quot;`:i,r+=1}return n}function dt(e){let t=[];for(nt.lastIndex=0;nt.lastIndex<e.length&&e.slice(nt.lastIndex).trim();){let n=nt.lastIndex,r=nt.exec(e);if(!r||nt.lastIndex===n)return null;t.push([r[1],r[2]??r[3]??r[4]??null,r[4]===void 0])}return t}function ft(e,t,{root:n=!1}={}){let r=rt.exec(e);if(!r)return e;let[,i,a,o,s]=r,c=tt[a.toLowerCase()]??a;if(i)return o.trim()?e:`</${c}>`;let l=dt(o);if(!l)return e;let u=new Set,d=[];for(let[e,n]of l){let r=tt[e.toLowerCase()]??e;if(n===null||u.has(r))continue;let i=r.includes(`:`)?r.split(`:`)[0]:``;i&&i!==`xmlns`&&i!==`xml`&&!t.has(i)&&i!==`xlink`||(u.add(r),d.push([r,n]))}return n&&(u.has(`xmlns`)||d.unshift([`xmlns`,`http://www.w3.org/2000/svg`]),!u.has(`xmlns:xlink`)&&t.has(`xlink:used`)&&d.push([`xmlns:xlink`,`http://www.w3.org/1999/xlink`])),`<${c}${d.map(([e,t])=>` ${e}="${ut(t,{quote:`"`})}"`).join(``)}${s?`/`:``}>`}function pt(e){let t=String(e??``);if(/=\s*\\"/u.test(t)&&(t=t.replace(/\\"/gu,`"`).replace(/\\n/gu,`
1
+ window.__ModuleLoader__.load({id:`dsh-aha-tutor`,factory:e=>{var t={exports:{}},n=t.exports;Object.defineProperty(n,Symbol.toStringTag,{value:`Module`});let r=e("react"),i=e("react/jsx-runtime"),a=e("@deepseek-ai/dsh-client-ui-primitives"),o=e("react-dom");var s=class extends r.Component{constructor(e){super(e),this.state={failed:!1,error:null,resetKey:e.resetKey},this.retry=()=>this.setState({failed:!1,error:null})}static getDerivedStateFromError(e){return{failed:!0,error:e}}static getDerivedStateFromProps(e,t){return e.resetKey===t.resetKey?null:{failed:!1,error:null,resetKey:e.resetKey}}componentDidCatch(e){this.props.onError?.(e)}render(){return this.state.failed?this.props.fallback({error:this.state.error,retry:this.retry}):this.props.children}};function c(e){return String(e?.message??e).slice(0,300)}function l({t:e,error:t,place:n=`page`,onRetry:i,onHome:a}){let o=i?(0,r.createElement)(`button`,{type:`button`,className:`aha-btn`,"data-size":n===`page`?void 0:`sm`,onClick:i},e(`retry`)):null;return n===`card`?(0,r.createElement)(`div`,{className:`aha-spread`,role:`alert`},(0,r.createElement)(`span`,{className:`aha-error`,title:c(t)},e(`crashPart`)),o):n===`tab`?(0,r.createElement)(`div`,{className:`aha-col`,role:`alert`,style:{gap:8}},(0,r.createElement)(`p`,{className:`aha-error`,title:c(t)},e(`crashPart`)),o?(0,r.createElement)(`div`,null,o):null):(0,r.createElement)(`div`,{className:`aha-page`},(0,r.createElement)(`div`,{className:`aha-card`,role:`alert`,style:{alignItems:`center`,textAlign:`center`,gap:12,padding:`28px 16px`}},(0,r.createElement)(`p`,{className:`aha-cardTitle`,title:c(t)},e(`crashPage`)),o?(0,r.createElement)(`p`,{className:`aha-hint`},e(`crashPageHint`)):null,(0,r.createElement)(`div`,{className:`aha-row`,style:{justifyContent:`center`}},o,(0,r.createElement)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:a},e(`backHome`)))))}var u=class extends Error{constructor(e,t){super(t),this.name=`ApiError`,this.code=e}};function d(e){async function t(t,n={}){let r;try{r=await e.call(`/aha-tutor`,t,n??{})}catch(e){throw new u(`connection`,e?.message||`Connection to DSH failed`)}if(!r?.ok)throw new u(r?.error?.code??`failed`,r?.error?.message??`Request failed`);return r.value}async function n(e,{onPartial:n,onProgress:r,onPreview:i,signal:a}={}){let o=e?.job;if(!o)return e;let s=0,c=o;for(;;){if(c.partial?.length&&(n?.(c.partial,s),s+=c.partial.length),c.progress&&r?.(c.progress),c.preview&&i?.(c.preview,c),c.status===`done`)return c.result;if(c.status===`cancelled`||a?.aborted)throw new u(`cancelled`,`cancelled`);if(c.status===`failed`)throw new u(c.error?.code??c.status,c.error?.message??c.status);if(c.status===`missing`)throw new u(`missing`,`The task was lost; try again`);await new Promise(e=>{setTimeout(e,650)}),c=await t(`job/get`,{id:o.id,since:s})}}async function r(e,r,i){return n(await t(e,r),i)}function i(e){let n=typeof e==`string`?e:e?.id;return n?t(`job/cancel`,{id:n}).catch(()=>void 0):Promise.resolve()}return{call:t,follow:n,run:r,cancel:i}}function f(e,t){return t?.id?{...e,jobId:t.id}:e}function p(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(r.error??Error(`read failed`)),r.onload=()=>{let e=String(r.result??``);t(e.slice(e.indexOf(`,`)+1))},r.readAsDataURL(e)})}function m(e,t=`aha`){return String(e??``).replace(/[<>:"/\\|?*\u0000-\u001f]/gu,` `).replace(/\s+/gu,` `).trim().slice(0,60).trim()||t}function h(e,t,n=`application/json`){let r=URL.createObjectURL(new Blob([t],{type:`${n};charset=utf-8`})),i=document.createElement(`a`);i.href=r,i.download=e,document.body.append(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(r),5e3)}function g(e,t){let n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=e,document.body.append(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e4)}let _=(0,r.createContext)(null);function v(){let e=(0,r.useContext)(_);if(!e)throw Error(`AppContext missing`);return e}function y(e,t=[]){let[n,i]=(0,r.useState)({loading:!0,error:null,value:void 0}),a=(0,r.useRef)(0),o=(0,r.useCallback)(()=>{let t=++a.current;i(e=>({...e,loading:!0,error:null})),Promise.resolve().then(e).then(e=>{a.current===t&&i({loading:!1,error:null,value:e})}).catch(e=>{a.current===t&&i(t=>({loading:!1,error:e,value:t.value}))})},t);return(0,r.useEffect)(()=>(o(),()=>{a.current+=1}),[o]),{...n,reload:o,setValue:e=>i(t=>({...t,value:typeof e==`function`?e(t.value):e}))}}function b(){let{api:e}=v(),[t,n]=(0,r.useState)({running:!1,progress:null,preview:null,error:null}),i=(0,r.useRef)(null),a=(0,r.useRef)(null);(0,r.useEffect)(()=>()=>i.current?.abort(),[]);let o=(0,r.useCallback)(async(t,r,{onPartial:o,existing:s}={})=>{i.current?.abort();let c=new AbortController;i.current=c,a.current=s?.id??null,n({running:!0,progress:null,preview:null,error:null});try{let i={signal:c.signal,onPartial:o,onProgress:e=>{c.signal.aborted||n(t=>({...t,progress:e}))},onPreview:e=>{c.signal.aborted||n(t=>({...t,preview:e}))}},l=s?{job:s}:await e.call(t,r);l?.job?.id&&!c.signal.aborted&&(a.current=l.job.id);let u=await e.follow(l,i);return c.signal.aborted||n({running:!1,progress:null,preview:null,error:null}),u}catch(e){throw c.signal.aborted||n({running:!1,progress:null,preview:null,error:e}),e}},[e]),s=(0,r.useCallback)(()=>{i.current?.abort(),a.current&&e.cancel(a.current),a.current=null,n({running:!1,progress:null,preview:null,error:null})},[e]);return{...t,run:o,cancel:s}}function x(e){let[t]=(0,r.useState)(()=>{if(!e)return!1;let t=`aha-tutor:once:${e}`;try{if(window.sessionStorage.getItem(t))return!1;window.sessionStorage.setItem(t,`1`)}catch{}return!0});return t}function S(e,t){let[n,i]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{if(i(!1),!e)return;let n=setTimeout(()=>i(!0),t);return()=>clearTimeout(n)},[e,t]),e&&n}function C(e,t){let n=`aha-tutor:${e}`,[i,a]=(0,r.useState)(()=>{try{let e=window.localStorage.getItem(n);return e===null?t:JSON.parse(e)}catch{return t}});return(0,r.useEffect)(()=>{try{window.localStorage.setItem(n,JSON.stringify(i))}catch{}},[n,i]),[i,a]}function w(){let e=()=>{if(document.body?.hasAttribute(`data-ds-dark-theme`))return!0;let e=getComputedStyle(document.documentElement).colorScheme;return/dark/iu.test(e)&&!/light/iu.test(e)?!0:!document.body&&window.matchMedia?.(`(prefers-color-scheme: dark)`).matches===!0},[t,n]=(0,r.useState)(e);return(0,r.useEffect)(()=>{let t=window.matchMedia?.(`(prefers-color-scheme: dark)`),r=()=>n(e());t?.addEventListener?.(`change`,r);let i=new MutationObserver(r);return i.observe(document.body,{attributes:!0,attributeFilter:[`data-ds-dark-theme`]}),i.observe(document.documentElement,{attributes:!0,attributeFilter:[`style`,`data-ds-theme-source`]}),()=>{t?.removeEventListener?.(`change`,r),i.disconnect()}},[]),t}function T(e){let t=new Uint8Array(e);globalThis.crypto.getRandomValues(t);let n=``;for(let e of t)n+=(e%36).toString(36);return n}function E(e){if(!/^[a-z]{2,6}$/u.test(e))throw TypeError(`invalid id prefix "${e}"`);return`${e}_${Date.now().toString(36)}${T(6)}`}Object.freeze({perLesson:3,span:4e3,terms:6});let D=Object.freeze({chars:240,nodes:400,depth:40});var O=class extends Error{constructor(e,{unknown:t,call:n=!1}={}){super(e),this.name=`ExprError`,t!==void 0&&(this.unknown=t,this.call=n)}};let k=Object.freeze({sin:[1,Math.sin],cos:[1,Math.cos],tan:[1,Math.tan],cot:[1,e=>1/Math.tan(e)],sec:[1,e=>1/Math.cos(e)],csc:[1,e=>1/Math.sin(e)],asin:[1,Math.asin],acos:[1,Math.acos],atan:[1,Math.atan],arcsin:[1,Math.asin],arccos:[1,Math.acos],arctan:[1,Math.atan],atan2:[2,Math.atan2],sinh:[1,Math.sinh],cosh:[1,Math.cosh],tanh:[1,Math.tanh],asinh:[1,Math.asinh],acosh:[1,Math.acosh],atanh:[1,Math.atanh],exp:[1,Math.exp],ln:[1,Math.log],log:[1,Math.log10],lg:[1,Math.log10],log10:[1,Math.log10],log2:[1,Math.log2],sqrt:[1,Math.sqrt],cbrt:[1,Math.cbrt],abs:[1,Math.abs],sign:[1,Math.sign],sgn:[1,Math.sign],mod:[2,(e,t)=>e-t*Math.floor(e/t)],floor:[1,Math.floor],ceil:[1,Math.ceil],round:[1,Math.round],min:[-2,Math.min],max:[-2,Math.max],pow:[2,Math.pow],if:[3,(e,t,n)=>A([e,t,n])],piecewise:[-2,(...e)=>A(e)]});function A(e){for(let t=0;t+1<e.length;t+=2){if(Number.isNaN(e[t]))return NaN;if(e[t])return e[t+1]}return e.length%2?e[e.length-1]:NaN}let ee=new Set([`floor`,`ceil`,`round`,`sign`,`sgn`]),te=Object.freeze({pi:Math.PI,π:Math.PI,e:Math.E}),ne=e=>Object.hasOwn(k,e),j=e=>Object.hasOwn(te,e),re=Object.freeze({alpha:`α`,beta:`β`,gamma:`γ`,delta:`δ`,epsilon:`ε`,zeta:`ζ`,eta:`η`,theta:`θ`,iota:`ι`,kappa:`κ`,lambda:`λ`,mu:`μ`,nu:`ν`,xi:`ξ`,rho:`ρ`,sigma:`σ`,tau:`τ`,upsilon:`υ`,phi:`φ`,chi:`χ`,psi:`ψ`,omega:`ω`,Gamma:`Γ`,Delta:`Δ`,Theta:`Θ`,Lambda:`Λ`,Xi:`Ξ`,Sigma:`Σ`,Phi:`Φ`,Psi:`Ψ`,Omega:`Ω`}),ie=Object.freeze({ϕ:`φ`,ϑ:`θ`,ϵ:`ε`,ϱ:`ρ`,ς:`σ`});function ae(e){let t=re[e]??ie[e]??e;return[t,Object.keys(re).find(e=>re[e]===t),...Object.keys(ie).filter(e=>ie[e]===t)].filter(t=>t&&t!==e)}let oe=[[/[−–—]/gu,`-`],[/[×·⋅∙]/gu,`*`],[/÷/gu,`/`],[/\*\*/gu,`^`],[/²/gu,`^2`],[/³/gu,`^3`],[/[([{]/gu,`(`],[/[)\]}]/gu,`)`],[/[,]/gu,`,`],[/[≤⩽]/gu,`<=`],[/[≥⩾]/gu,`>=`],[/≠/gu,`!=`],[/</gu,`<`],[/>/gu,`>`],[/=/gu,`=`],[/?/gu,`?`],[/:/gu,`:`],[/∧/gu,`&&`],[/∨/gu,`||`]],se=Object.freeze({le:`<=`,leq:`<=`,leqslant:`<=`,lt:`<`,ge:`>=`,geq:`>=`,geqslant:`>=`,gt:`>`,ne:`!=`,neq:`!=`,land:`&&`,wedge:`&&`,lor:`||`,vee:`||`});function ce(e,t){if(e[t]!==`{`)return null;let n=0;for(let r=t;r<e.length;r+=1)if(e[r]===`{`)n+=1;else if(e[r]===`}`&&(--n,n===0))return[e.slice(t+1,r),r+1];return null}let le=(e,t)=>{let n=t;for(;e[n]===` `;)n+=1;return n};function M(e){let t=e.replace(/\f/gu,`\\f`).replace(/\u0008/gu,`\\b`).replace(/[\t\r\n](?=[a-zA-Z])/gu,e=>({" ":`\\t`,"\r":`\\r`,"\n":`\\n`})[e]);if(!t.includes(`\\`)&&!t.includes(`_{`))return t;let n=``,r=0;for(;r<t.length;){let e=/^\\([a-zA-Z]+)/u.exec(t.slice(r));if(!e){let e=/^_\{([\p{L}\p{N}]+)\}/u.exec(t.slice(r)),i=/^\\[,;:! ]/u.test(t.slice(r));n+=e?`_${e[1]}`:i?` `:t[r],r+=e?e[0].length:i?2:1;continue}let i=e[1],a=le(t,r+e[0].length);if([`frac`,`dfrac`,`tfrac`].includes(i)){let e=ce(t,a),i=e&&ce(t,le(t,e[1]));if(i){n+=`((${M(e[0])})/(${M(i[0])}))`,r=i[1];continue}}if(i===`sqrt`){let e=t[a]===`[`?t.indexOf(`]`,a):-1,i=ce(t,le(t,e>=0?e+1:a));if(i){n+=e>=0?`((${M(i[0])})^(1/(${M(t.slice(a+1,e))})))`:`sqrt(${M(i[0])})`,r=i[1];continue}}if([`mathrm`,`operatorname`,`text`,`mathit`,`mathbf`].includes(i)){let e=ce(t,a);if(e){n+=M(e[0]),r=e[1];continue}}if(i===`left`||i===`right`){r=a;continue}n+=[`cdot`,`times`,`ast`].includes(i)?`*`:i===`div`?`/`:se[i]?` ${se[i]} `:i,r+=e[0].length}return n}function ue(e){let t=M(String(e??``));for(let[e,n]of oe)t=t.replace(e,n);let n=[],r=0;for(;r<t.length;){let e=t[r];if(/\s/u.test(e)){r+=1;continue}let i=/^(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?/u.exec(t.slice(r));if(i){n.push({type:`num`,value:Number(i[0])}),r+=i[0].length;continue}let a=/^[\p{L}_][\p{L}\p{N}_]*/u.exec(t.slice(r));if(a){n.push({type:`name`,value:a[0]}),r+=a[0].length;continue}let o=t.slice(r,r+2);if([`<=`,`>=`,`==`,`!=`,`&&`].includes(o)){n.push({type:o===`==`?`=`:o}),r+=2;continue}if(e===`&`){n.push({type:`&&`}),r+=1;continue}if(`+-*/^(),|√<>=?:`.includes(e)){n.push({type:e}),r+=1;continue}throw new O(`Unexpected "${e}"`)}return n}function de(e,t=[]){let n=String(e??``);if(!n.trim())throw new O(`Empty formula`);if(n.length>D.chars)throw new O(`Formula too long`);let r=new Set(t),i=ue(n),a=0,o=0,s=0,c=()=>i[a],l=e=>{let t=i[a];if(!t||e&&t.type!==e)throw new O(e?`Expected "${e}"`:`Unexpected end`);return a+=1,t},u=e=>{if(o+=1,o>D.nodes)throw new O(`Formula too long`);return e},d=e=>{if(s+=1,s>D.depth)throw new O(`Formula nested too deeply`);try{return e()}finally{--s}},f=(e,t)=>e?.type===`name`&&e.value===t,p=e=>e&&(e.type===`num`||e.type===`name`&&!fe.has(e.value)||e.type===`(`||e.type===`√`);function m(){let e=h();if(c()?.type!==`?`)return e;l();let t=d(m);l(`:`);let n=d(m);return u({k:`call`,f:`if`,args:[e,t,n]})}function h(){let e=g();for(;;){if(f(c(),`or`))l();else if(c()?.type===`|`&&i[a+1]?.type===`|`)a+=2;else return e;e=u({k:`or`,a:e,b:g()})}}function g(){let e=_();for(;f(c(),`and`)||c()?.type===`&&`;)l(),e=u({k:`and`,a:e,b:_()});return e}function _(){let e=v();if(!pe.has(c()?.type))return e;let t=[e],n=[];for(;pe.has(c()?.type);)n.push(l().type),t.push(v());return u({k:`cmp`,ops:n,args:t})}function v(){let e=y();for(;c()?.type===`+`||c()?.type===`-`;){let t=l().type;e=u({k:`bin`,op:t,a:e,b:y()})}return e}function y(){let e=b();for(;;){let t=c();if(t?.type===`*`||t?.type===`/`)l(),e=u({k:`bin`,op:t.type,a:e,b:b()});else if(p(t))e=u({k:`bin`,op:`*`,a:e,b:x()});else return e}}function b(){let e=c();return e?.type===`-`?(l(),u({k:`neg`,a:d(b)})):e?.type===`+`?(l(),d(b)):x()}function x(){let e=T();return c()?.type===`^`?(l(),u({k:`bin`,op:`^`,a:e,b:d(b)})):e}function S(e){let[t]=k[e];l(`(`);let n=[d(m)];for(;c()?.type===`,`;)l(),n.push(d(m));if(l(`)`),t>0?n.length!==t:n.length<-t)throw new O(`${e} takes ${Math.abs(t)} argument${Math.abs(t)>1?`s`:``}`);return u({k:`call`,f:e,args:n})}function C(e){if(r.has(e))return u({k:`var`,n:e});let t=ae(e).find(e=>r.has(e));if(t)return u({k:`var`,n:t});if(j(e))return u({k:`num`,v:te[e]});if(fe.has(e))throw new O(`Unexpected "${e}"`);if(ne(e)){if(c()?.type!==`(`)throw new O(`Write ${e}(…) with parentheses`);return S(e)}let n=w(e);if(!n)throw new O(`Unknown name "${e}"`,{unknown:e,call:c()?.type===`(`});let i=null;for(let[t,a]of n.entries()){let o;if(ne(a)){if(t!==n.length-1||c()?.type!==`(`)throw new O(`Unknown name "${e}"`,{unknown:e});o=S(a)}else o=u(r.has(a)?{k:`var`,n:a}:{k:`num`,v:te[a]});i=i?u({k:`bin`,op:`*`,a:i,b:o}):o}return i}function w(e){let t=[...r,...Object.keys(te),...Object.keys(k)].sort((e,t)=>t.length-e.length),n=[],i=e;for(;i;){let e=t.find(e=>i.startsWith(e));if(!e)return null;n.push(e),i=i.slice(e.length)}return n.length>1?n:null}function T(){let e=l();if(e.type===`num`)return u({k:`num`,v:e.value});if(e.type===`name`)return C(e.value);if(e.type===`(`){let e=d(m);return l(`)`),e}if(e.type===`|`){let e=d(v);return l(`|`),u({k:`call`,f:`abs`,args:[e]})}if(e.type===`√`)return u({k:`call`,f:`sqrt`,args:[d(x)]});throw new O(`Unexpected "${e.type}"`)}let E=m();if(a<i.length)throw new O(`Unexpected "${i[a].type===`name`||i[a].type===`num`?i[a].value:i[a].type}"`);return E}let fe=new Set([`and`,`or`]),pe=new Set([`<`,`<=`,`>`,`>=`,`=`,`!=`]),me=(e,t)=>Math.abs(e-t)<=1e-12*Math.max(1,Math.abs(e),Math.abs(t)),he=Object.freeze({"<":(e,t)=>e<t,"<=":(e,t)=>e<=t||me(e,t),">":(e,t)=>e>t,">=":(e,t)=>e>=t||me(e,t),"=":me,"!=":(e,t)=>!me(e,t)});function ge(e,t=[],n=null){let r=new Map(t.map((e,t)=>[e,t])),i=n?e=>{n.sig=(n.sig*31+(Number.isFinite(e)?e:0)+7)%1000000007}:()=>{},a=e=>{switch(e.k){case`num`:{let t=e.v;return()=>t}case`var`:{let t=r.get(e.n);if(t===void 0)throw new O(`Unknown name "${e.n}"`);return e=>e[t]}case`neg`:{let t=a(e.a);return e=>-t(e)}case`bin`:{let t=a(e.a),n=a(e.b);return e.op===`+`?e=>t(e)+n(e):e.op===`-`?e=>t(e)-n(e):e.op===`*`?e=>t(e)*n(e):e.op===`/`?e=>t(e)/n(e):e=>_e(t(e),n(e))}case`cmp`:{let t=e.args.map(a),n=e.ops.map(e=>he[e]);return e=>{let r=t[0](e);for(let a=0;a<n.length;a+=1){let o=t[a+1](e);if(Number.isNaN(r)||Number.isNaN(o))return NaN;if(!n[a](r,o))return i(0),0;r=o}return i(1),1}}case`and`:case`or`:{let t=a(e.a),n=a(e.b),r=e.k===`and`?0:1;return e=>{let i=t(e);if(Number.isNaN(i))return NaN;if(+!!i===r)return r;let a=n(e);return Number.isNaN(a)?NaN:+!!a}}case`call`:{let t=e.args.map(a);if(e.f===`if`||e.f===`piecewise`){let e=Math.floor(t.length/2),n=t.length%2?t[t.length-1]:null;return r=>{for(let n=0;n<e;n+=1){let e=t[n*2](r);if(Number.isNaN(e))return NaN;if(e)return i(n+2),t[n*2+1](r)}return i(1),n?n(r):NaN}}let n=k[e.f][1];if(e.f===`mod`){let[e,r]=t;return t=>{let a=e(t),o=r(t);return i(Math.floor(a/o)),n(a,o)}}if(t.length===1){let[r]=t;return ee.has(e.f)?e=>{let t=n(r(e));return i(t),t}:e=>n(r(e))}return e=>n(...t.map(t=>t(e)))}default:throw new O(`Bad formula`)}};return a(e)}function _e(e,t){let n=e**t;if(!Number.isNaN(n)||e>=0||!Number.isFinite(t))return n;for(let n of[3,5,7,9]){let r=Math.round(t*n);if(Math.abs(r/n-t)<1e-9)return(-((-e)**(1/n)))**r}return n}let ve={0:`⁰`,1:`¹`,2:`²`,3:`³`,4:`⁴`,5:`⁵`,6:`⁶`,7:`⁷`,8:`⁸`,9:`⁹`,"-":`⁻`},ye={pi:`π`,theta:`θ`,omega:`ω`,phi:`φ`,alpha:`α`,beta:`β`,lambda:`λ`,mu:`μ`,sigma:`σ`,tau:`τ`},be={"+":1,"-":1,"*":2,"/":2,"^":4};function xe(e){return Math.abs(e-Math.PI)<1e-12?`π`:Math.abs(e-Math.E)<1e-12?`e`:Number(e.toPrecision(6)).toString()}let Se=e=>[...String(e)].map(e=>ve[e]).join(``),Ce=e=>[...e].length===1&&/\p{L}/u.test(e),we=Object.freeze({"<":`<`,"<=":`≤`,">":`>`,">=":`≥`,"=":`=`,"!=":`≠`}),Te=Object.freeze({"<":`>=`,"<=":`>`,">":`<=`,">=":`<`,"=":`!=`,"!=":`=`});function Ee(e){let t=[],n=e;for(;;){for(let e=0;e+1<n.args.length;e+=2)t.push([n.args[e],n.args[e+1]]);if(n.args.length%2==0)return t;let e=n.args[n.args.length-1];if(e.k===`call`&&(e.f===`if`||e.f===`piecewise`)){n=e;continue}let r=t.length===1?t[0][0]:null,i=r?.k===`cmp`&&r.ops.length===1?{...r,ops:[Te[r.ops[0]]]}:null;return[...t,[i,e]]}}function De(e,t=ye){let n=e=>t[e]??e,r=(e,t=0)=>{switch(e.k){case`num`:return xe(e.v);case`var`:return n(e.n);case`neg`:{let n=r(e.a,3);return t>2?`(−${n})`:`−${n}`}case`cmp`:{let n=e.args.map((t,n)=>`${n?` ${we[e.ops[n-1]]} `:``}${r(t,1)}`).join(``);return t>.5?`(${n})`:n}case`and`:case`or`:{let n=`${r(e.a,.5)} ${e.k} ${r(e.b,.5)}`;return t>.4?`(${n})`:n}case`call`:if(e.f===`if`||e.f===`piecewise`){let n=Ee(e).map(([e,t])=>e?`${r(t)} (${r(e)})`:r(t)).join(`; `);return t>0?`{${n}}`:n}return e.f===`abs`?`|${r(e.args[0])}|`:e.f===`sqrt`?`√(${r(e.args[0])})`:`${e.f}(${e.args.map(e=>r(e)).join(`, `)})`;case`bin`:{let n=be[e.op],i;if(e.op===`^`){let t=r(e.a,5),n=e=>e.k===`num`&&Number.isInteger(e.v)&&Math.abs(e.v)<100,a=r(e.b);i=`${t}${n(e.b)?Se(e.b.v):e.b.k===`neg`&&n(e.b.a)?`⁻${Se(e.b.a.v)}`:Ce(a)?`^${a}`:`^(${a})`}`}else if(e.op===`*`){let t=r(e.a,n),a=r(e.b,n);i=e.a.k===`num`&&/\d$/u.test(t)&&/^[\p{L}(√|]/u.test(a)||Ce(t)&&(Ce(a)||a.startsWith(`(`))||e.a.k!==`call`&&/^[\d\p{L}]+$/u.test(t)&&/\p{L}$/u.test(t)&&Ce(a)||e.a.k!==`call`&&t.endsWith(`)`)&&a.startsWith(`(`)?`${t}${a}`:`${t}·${a}`}else{let t=r(e.a,n),a=r(e.b,e.op===`+`?n:n+.5);i=`${t} ${e.op===`-`?`−`:e.op} ${a}`}return n<t?`(${i})`:i}default:return``}};return r(e)}let Oe=Object.freeze({fns:4,params:6,points:8,lines:6,shades:3,tangents:3,samples:480}),ke=Object.freeze({fx:[`x`,`t`],param:[`t`,`θ`,`theta`],polar:[`θ`,`theta`,`t`]});Object.freeze({fx:[`x`],param:[`t`],polar:[`θ`,`theta`]});function Ae(e,t){return ke[e].filter(e=>!t.includes(e))}function je(e){let t=e.params.map(e=>e.name);return e.fns.map(e=>{let n=Ae(e.kind,t),r=[...n,...t],i={sig:0},a=e=>{let t=ge(de(e,r),r,i),a=Array(r.length).fill(0);return(e,r)=>{for(let t=0;t<n.length;t+=1)a[t]=e;for(let e=0;e<r.length;e+=1)a[n.length+e]=r[e];return t(a)}};if(e.kind===`polar`){let t=a(e.r);return{kind:`polar`,trace:i,at:(e,n)=>{i.sig=0;let r=t(e,n);return[r*Math.cos(e),r*Math.sin(e)]}}}if(e.kind===`param`){let t=a(e.x),n=a(e.y);return{kind:`param`,trace:i,at:(e,r)=>(i.sig=0,[t(e,r),n(e,r)])}}let o=a(e.y);return{kind:`fx`,y:o,trace:i,at:(e,t)=>(i.sig=0,[e,o(e,t)])}})}let Me=e=>e.params.map(e=>e.value);function Ne(e,t,n,r=e.x){return e.fns.map((e,i)=>{let a=t[i],[o,s]=e.kind===`fx`?[Math.max(r?.min??-5,e.domain?.[0]??-1/0),Math.min(r?.max??5,e.domain?.[1]??1/0)]:e.t,c=e.kind===`fx`?Oe.samples:Oe.samples*1.5,l=[];if(!(s>o))return l;let u=null;for(let e=0;e<=c;e+=1){let t=o+(s-o)*e/c,r=a.at(t,n),i=a.trace?.sig??0;if(u&&i!==u.sig&&u.point.every(Number.isFinite)&&r.every(Number.isFinite)){let[e,r]=[u.value,t];for(let t=0;t<24;t+=1){let t=(e+r)/2;a.at(t,n),a.trace.sig===u.sig?e=t:r=t}l.push(a.at(e,n),[NaN,NaN],a.at(r,n))}l.push(r),u={value:t,point:r,sig:i}}return l})}function Pe(e,t,n,r=1){let i=Math.max(1e-7,Math.abs(r)*1e-5);return(e.y(t+i,n)-e.y(t-i,n))/(2*i)}function Fe(e,t){return e[Math.min(e.length-1,Math.max(0,Math.round((e.length-1)*t)))]}function Ie(e,t=je(e)){let n=[[]];if(e.params.length<=4)for(let t of e.params){let e=[];for(let r of n)for(let n of new Set([t.min,t.value,t.max]))e.push([...r,n]);n.splice(0,n.length,...e)}else{let t=Me(e);n.splice(0,1,t,e.params.map(e=>e.min),e.params.map(e=>e.max)),e.params.forEach((e,r)=>{for(let i of[e.min,e.max])n.push(t.map((e,t)=>t===r?i:e))})}let r=[],i=[];for(let a of n)for(let n of Ne(e,t,a))for(let[e,t]of n)!Number.isFinite(e)||!Number.isFinite(t)||(r.push(e),i.push(t));for(let t of e.points)Number.isFinite(t.y)&&i.push(t.y);for(let t of e.lines)t.y!==void 0&&i.push(t.y);let a=(e,t)=>{if(!e.length)return t;let n=[...e].sort((e,t)=>e-t),[r,i]=[n[0],n[n.length-1]],[a,o]=[Fe(n,.03),Fe(n,.97)];i-r>6*Math.max(1e-9,o-a)&&([r,i]=[a,o]),i-r<1e-9&&([r,i]=[r-1,i+1]);let s=(i-r)*.08;return r>0&&r<(i-r)*.35&&(r=0),i<0&&-i<(i-r)*.35&&(i=0),{min:r===0?0:r-s,max:i===0?0:i+s}},o=e.x??a(r,{min:-5,max:5}),s=e.y??a(i,{min:-5,max:5});return{x:{min:o.min,max:o.max},y:{min:Math.min(s.min,s.max-1e-9),max:s.max}}}function Le(e,t){try{return De(de(e,[...new Set([...Object.values(ke).flat(),...t.params.map(e=>e.name)])]))}catch{return e}}let Re=e=>{if(!Number.isFinite(e))return String(e);let t=e/Math.PI;if(e!==0&&Math.abs(t*4-Math.round(t*4))<1e-6){let e=Math.round(t*4),[n,r]=e%4==0?[e/4,1]:e%2==0?[e/2,2]:[e,4],i=n===1?`π`:n===-1?`−π`:`${n}π`.replace(`-`,`−`);return r===1?i:`${i}/${r}`}return Number(e.toPrecision(4)).toString().replace(`-`,`−`)},ze=Re;function Be(e){return e.fns.map(t=>t.kind===`polar`?`r = ${Le(t.r,e)}`:t.kind===`param`?`x = ${Le(t.x,e)}, y = ${Le(t.y,e)}`:`y = ${Le(t.y,e)}`)}function Ve(e){let t=[e.title||e.caption].filter(Boolean),n=Be(e).map((t,n)=>{let r=e.fns[n],i=r.kind===`fx`?e.x?`, x ${Re(r.domain?.[0]??e.x.min)} … ${Re(r.domain?.[1]??e.x.max)}`:``:`, ${r.kind===`polar`?`θ`:`t`} ${Re(r.t[0])} … ${Re(r.t[1])}`;return`${r.name?`${r.name}: `:``}${t}${i}`});return t.push(...n),e.params.length&&t.push(e.params.map(e=>`${e.label||e.name} = ${Re(e.value)} (${Re(e.min)} … ${Re(e.max)})`).join(`; `)),t.join(`
2
+ `)}Object.freeze({questions:6,options:5,units:12,lecturesPerUnit:8,lessonsPerLecture:8,lessons:120,objectives:5,concepts:6,projects:3,milestones:6,rubric:8,starterFiles:12,starterFileBytes:64*1024,practiceItems:12,quizItems:30,options4:6,cards:60,libraryCards:300,sheetSections:24,sheetItems:16});function He(e,t=400){return e==null?``:String(e).replace(/\u0000/gu,``).trim().slice(0,t)}let Ue=Object.freeze([`intuition`,`definition`,`derivation`,`application`,`extension`]);function We(e){let t=He(e,200),n=t.search(/[::]/u);return n>0?t.slice(0,n).trim():t}function Ge(e){let t=[];for(let n of e?.units??[])for(let e of n.lectures??[])for(let r of e.lessons??[])t.push({unit:n,lecture:e,lesson:r,index:t.length});return t}function Ke(e,t){let n=e=>{let t=new Map;for(let n of e?.units??[])for(let e of n.lectures??[])for(let r of e.lessons??[])t.set(r.id,{lesson:r,unit:n.title});return t},r=e=>JSON.stringify([e.summary??``,e.objectives??[],e.estMinutes??0,(e.concepts??[]).map(e=>e.name),e.depth??``]),i=n(e),a=n(t),o=[],s=[],c=[];for(let[e,t]of a){let n=i.get(e);n?n.lesson.title===t.lesson.title?(r(n.lesson)!==r(t.lesson)||n.unit!==t.unit)&&c.push({title:t.lesson.title,unit:t.unit}):s.push({from:n.lesson.title,to:t.lesson.title,unit:t.unit}):o.push({title:t.lesson.title,unit:t.unit})}let l=[...i].filter(([e])=>!a.has(e)).map(([,e])=>({title:e.lesson.title,unit:e.unit})),u=new Set((e?.units??[]).map(e=>e.id)),d=new Set((t?.units??[]).map(e=>e.id));return{title:(e?.title??``)===(t?.title??``)?null:{from:e?.title??``,to:t?.title??``},unitsAdded:(t?.units??[]).filter(e=>!u.has(e.id)).map(e=>e.title),unitsRemoved:(e?.units??[]).filter(e=>!d.has(e.id)).map(e=>e.title),added:o,removed:l,renamed:s,changed:c}}function qe(e){return!e.title&&!e.unitsAdded.length&&!e.unitsRemoved.length&&!e.added.length&&!e.removed.length&&!e.renamed.length&&!e.changed.length}function Je(e,t){return Ge(e).find(e=>e.lesson.id===t)??null}function Ye(e){let t=new Map;for(let{lesson:n}of Ge(e))for(let e of n.concepts??[])t.set(e.id,{...e,lessonId:n.id});return t}function Xe(e,t){return e?.lessons?.[t]?.status??`new`}function Ze(e,t){let n=Ge(e),r=n.filter(e=>Xe(t,e.lesson.id)===`done`),i=n.filter(e=>Xe(t,e.lesson.id)!==`done`).reduce((e,t)=>e+(t.lesson.estMinutes||15),0);return{total:n.length,done:r.length,percent:n.length?Math.round(r.length/n.length*100):0,minutesLeft:i}}function N(e,t){let n=Ge(e);return n.find(e=>Xe(t,e.lesson.id)===`learning`)??n.find(e=>Xe(t,e.lesson.id)===`new`)??null}function Qe(e,t){let n=Ge(e),r=n.findIndex(e=>e.lesson.id===t);return r>=0?n[r+1]??null:null}let $e=new Set([`lt`,`gt`,`amp`,`quot`,`apos`]),et=Object.freeze({nbsp:160,ensp:8194,emsp:8195,thinsp:8201,times:215,divide:247,deg:176,plusmn:177,minus:8722,middot:183,sdot:8901,le:8804,ge:8805,ne:8800,asymp:8776,equiv:8801,infin:8734,prop:8733,radic:8730,sum:8721,prod:8719,int:8747,part:8706,nabla:8711,ang:8736,perp:8869,prime:8242,Prime:8243,there4:8756,isin:8712,notin:8713,sub:8834,sup:8835,cap:8745,cup:8746,forall:8704,exist:8707,empty:8709,not:172,larr:8592,rarr:8594,uarr:8593,darr:8595,harr:8596,lArr:8656,rArr:8658,hArr:8660,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,pi:960,rho:961,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,Gamma:915,Delta:916,Theta:920,Lambda:923,Xi:926,Pi:928,Sigma:931,Phi:934,Psi:936,Omega:937,sup1:185,sup2:178,sup3:179,frac12:189,frac14:188,frac34:190,micro:181,ohm:937,para:182,sect:167,copy:169,reg:174,trade:8482,hellip:8230,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,ldquo:8220,rdquo:8221,laquo:171,raquo:187,bull:8226,cent:162,pound:163,yen:165,euro:8364}),tt=Object.freeze(Object.fromEntries(`viewBox.preserveAspectRatio.markerWidth.markerHeight.markerUnits.refX.refY.gradientUnits.gradientTransform.patternUnits.patternContentUnits.patternTransform.startOffset.textLength.lengthAdjust.clipPathUnits.linearGradient.radialGradient.clipPath.textPath.svg.g.path.line.rect.circle.ellipse.polyline.polygon.text.tspan.defs.marker.stop.use.symbol.title.desc.mask.pattern`.split(`.`).map(e=>[e.toLowerCase(),e]))),nt=/\s*([^\s=/>"']+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'<>=`]+)))?/uy,rt=/^<(\/?)([^\s/>]+)([\s\S]*?)(\/?)>$/u,it=/^&(#\d{1,7}|#x[0-9a-fA-F]{1,6}|[A-Za-z][A-Za-z0-9]{0,31});/u,at=e=>e===9||e===10||e===13||e>=32&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111;function ot(e,t,n){let r=e.indexOf(n,t);return r<0?-1:r+n.length}function st(e,t){let n=``;for(let r=t+1;r<e.length;r+=1){let t=e[r];if(n)t===n&&(n=``);else if(t===`"`||t===`'`)n=t;else if(t===`>`)return r+1;else if(t===`<`)return-1}return-1}let ct=(e,t)=>/[A-Za-z_/]/u.test(e[t+1]??``);function lt(e,t){let n=it.exec(e.slice(t,t+40));if(!n)return[`&amp;`,1];let r=n[1];if(r.startsWith(`#`)){let e=r[1]===`x`?Number.parseInt(r.slice(2),16):Number.parseInt(r.slice(1),10);return[at(e)?n[0]:``,n[0].length]}if($e.has(r))return[n[0],n[0].length];let i=et[r];return[i?`&#${i};`:`&amp;${r};`,n[0].length]}function ut(e,{quote:t=``}={}){let n=``;for(let r=0;r<e.length;){let i=e[r];if(i===`&`){let[t,i]=lt(e,r);n+=t,r+=i;continue}n+=i===`<`?`&lt;`:i===t?`&quot;`:i,r+=1}return n}function dt(e){let t=[];for(nt.lastIndex=0;nt.lastIndex<e.length&&e.slice(nt.lastIndex).trim();){let n=nt.lastIndex,r=nt.exec(e);if(!r||nt.lastIndex===n)return null;t.push([r[1],r[2]??r[3]??r[4]??null,r[4]===void 0])}return t}function ft(e,t,{root:n=!1}={}){let r=rt.exec(e);if(!r)return e;let[,i,a,o,s]=r,c=tt[a.toLowerCase()]??a;if(i)return o.trim()?e:`</${c}>`;let l=dt(o);if(!l)return e;let u=new Set,d=[];for(let[e,n]of l){let r=tt[e.toLowerCase()]??e;if(n===null||u.has(r))continue;let i=r.includes(`:`)?r.split(`:`)[0]:``;i&&i!==`xmlns`&&i!==`xml`&&!t.has(i)&&i!==`xlink`||(u.add(r),d.push([r,n]))}return n&&(u.has(`xmlns`)||d.unshift([`xmlns`,`http://www.w3.org/2000/svg`]),!u.has(`xmlns:xlink`)&&t.has(`xlink:used`)&&d.push([`xmlns:xlink`,`http://www.w3.org/1999/xlink`])),`<${c}${d.map(([e,t])=>` ${e}="${ut(t,{quote:`"`})}"`).join(``)}${s?`/`:``}>`}function pt(e){let t=String(e??``);if(/=\s*\\"/u.test(t)&&(t=t.replace(/\\"/gu,`"`).replace(/\\n/gu,`
3
3
  `).replace(/\\t/gu,` `)),t=t.replace(/[^\t\n\r -퟿-�\u{10000}-\u{10FFFF}]/gu,``).trim().replace(/^(?:<\?xml[\s\S]*?\?>|<!DOCTYPE[^>]*>|<!--[\s\S]*?-->|\s)+/iu,``),!/^<svg[\s>/]/iu.test(t))return t;t=t.replace(/<script\b[\s\S]*?<\/script\s*>/giu,``).replace(/<foreignObject\b[\s\S]*?<\/foreignObject\s*>/giu,``);let n=new Set([...t.matchAll(/\sxmlns:([\w.-]+)\s*=/gu)].map(e=>e[1]));/\sxlink:[\w.-]+\s*=/u.test(t)&&n.add(`xlink:used`);let r=``,i=!1,a=0;for(let e=0;e<t.length&&!(i&&a===0);){let o=t[e];if(o===`<`){let o=t.startsWith(`<!--`,e)?`-->`:t.startsWith(`<![CDATA[`,e)?`]]>`:t.startsWith(`<?`,e)?`?>`:``;if(o){let n=ot(t,e,o);r+=n<0?ut(t.slice(e)):t.slice(e,n),e=n<0?t.length:n;continue}let s=ct(t,e)?st(t,e):-1;if(s<0){r+=`&lt;`,e+=1;continue}let c=t.slice(e,s);r+=ft(c,n,{root:!i}),i=!0,c[1]===`/`?--a:/\/\s*>$/u.test(c)||(a+=1),e=s;continue}if(o===`&`){let[n,i]=lt(t,e);r+=n,e+=i;continue}r+=o,e+=1}return r}Object.freeze({steps:48,opsPerStep:14,say:1200,opText:1600,listItems:12,tableRows:16,tableCols:8,svgBytes:48*1024,animBytes:64*1024,codeBytes:12*1024,chartPoints:400,chartSeries:6}),Object.freeze([`title`,`h`,`p`,`math`,`list`,`svg`,`chart`,`plot`,`table`,`code`,`note`,`mark`,`anim`,`col`,`page`,`missing`]),Object.freeze([`svg`,`chart`,`plot`,`anim`]),Object.freeze({heading:`h`,header:`h`,subtitle:`h`,text:`p`,paragraph:`p`,write:`p`,formula:`math`,equation:`math`,latex:`math`,bullets:`list`,bullet:`list`,diagram:`svg`,drawing:`svg`,figure:`svg`,graph:`chart`,function:`plot`,curve:`plot`,callout:`note`,highlight:`mark`,underline:`mark`,animation:`anim`,interactive:`anim`,column:`col`,newcolumn:`col`,newpage:`page`,clear:`page`});let mt=/[぀-ヿ㐀-䶿一-鿿가-힯]/gu;function ht(e,t=1){let n=String(e??``),r=(n.match(mt)??[]).length,i=n.replace(mt,` `).split(/\s+/u).filter(Boolean).length,a=r/4.4+i/2.6;return Math.round(a*1e3/Math.max(.5,Math.min(2,t||1)))}function gt(e){switch(e.t){case`title`:case`h`:case`p`:case`note`:return e.text.length;case`math`:return Math.min(80,e.tex.length);case`list`:return e.items.join(` `).length;case`table`:return e.rows.flat().join(` `).length/2;case`code`:return Math.min(400,e.code.length/2);default:return 60}}function _t(e){return e.t===`col`||e.t===`page`?0:e.t===`mark`||e.t===`missing`?600:e.t===`svg`||e.t===`chart`||e.t===`plot`||e.t===`anim`?2200:Math.min(7e3,Math.max(450,gt(e)*55))}function vt(e,{rate:t=1,speechMs:n}={}){let r=n??ht(e.say,t),i=e.ops.map(_t),a=i.reduce((e,t)=>e+t,0),o=r>0?r*.85:a,s=a>0&&o>0?Math.min(1.6,Math.max(.35,o/a)):1,c=i.map(e=>Math.round(e*s));return{speechMs:r,writeMs:c,durationMs:Math.max(r,c.reduce((e,t)=>e+t,0))+350}}function yt(e,{missing:t=`Figure not drawn`}={}){let n=[];e.title&&n.push(`# ${e.title}`,``);for(let r of e.steps){for(let e of r.ops)if(e.t===`missing`)n.push(`> ⚠ ${t}${e.caption?` · ${e.caption}`:``}${e.formula?` · \`${e.formula.replace(/`/gu,`'`)}\``:``}`,``);else if(e.t===`title`)n.push(`## ${e.text}`,``);else if(e.t===`h`)n.push(`### ${e.text}`,``);else if(e.t===`p`)n.push(e.text,``);else if(e.t===`math`)n.push(`$$${e.tex}$$`,``);else if(e.t===`list`)n.push(...e.items.map((t,n)=>e.ordered?`${n+1}. ${t}`:`- ${t}`),``);else if(e.t===`note`)n.push(`> ${e.text}`,``);else if(e.t===`code`)n.push(`\`\`\`${e.lang}`,e.code,"```",``);else if(e.t===`plot`)n.push(...Ve(e).split(`
4
4
  `).map(e=>`> 📈 ${e}`),``);else if(e.t===`table`){let t=e.head.length?e.head:e.rows[0].map(()=>` `);n.push(`| ${t.join(` | `)} |`,`| ${t.map(()=>`---`).join(` | `)} |`,...e.rows.map(e=>`| ${e.join(` | `)} |`),``)}else e.caption&&n.push(`*${e.caption}*`,``);r.say&&n.push(`<!-- ${r.say.replace(/--/gu,`—`)} -->`,``)}return n.join(`
5
5
  `).replace(/\n{3,}/gu,`
@@ -256,7 +256,7 @@ c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17
256
256
  c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558
257
257
  l0,-`+(t+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,
258
258
  -470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw Error(`Unknown stretchy delimiter.`)}};function yr(e){return`toText`in e}var br=class{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return this.classes.includes(e)}toNode(){for(var e=document.createDocumentFragment(),t=0;t<this.children.length;t++)e.appendChild(this.children[t].toNode());return e}toMarkup(){for(var e=``,t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e}toText(){return this.children.map(e=>{if(yr(e))return e.toText();throw Error(`Expected MathDomNode with toText, got `+e.constructor.name)}).join(``)}},xr={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},Sr={ex:!0,em:!0,mu:!0},Cr=function(e){return typeof e!=`string`&&(e=e.unit),e in xr||e in Sr||e===`ex`},wr=function(e,t){var n;if(e.unit in xr)n=xr[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if(e.unit===`mu`)n=t.fontMetrics().cssEmPerMu;else{var r=t.style.isTight()?t.havingStyle(t.style.text()):t;if(e.unit===`ex`)n=r.fontMetrics().xHeight;else if(e.unit===`em`)n=r.fontMetrics().quad;else throw new P(`Invalid unit: '`+e.unit+`'`);r!==t&&(n*=r.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*n,t.maxSize)},I=function(e){return+e.toFixed(4)+`em`},Tr=function(e){return e.filter(e=>e).join(` `)},Er=function(e){var t=``;for(var n of Object.keys(e)){var r=e[n];r!==void 0&&(t+=Dn(n)+`:`+r+`;`)}return t},Dr=function(e,t,n){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},t){t.style.isTight()&&this.classes.push(`mtight`);var r=t.getColor();r&&(this.style.color=r)}},Or=function(e){var t=document.createElement(e);t.className=Tr(this.classes),Object.assign(t.style,this.style);for(var n of Object.keys(this.attributes))t.setAttribute(n,this.attributes[n]);for(var r=0;r<this.children.length;r++)t.appendChild(this.children[r].toNode());return t},kr=/[\s"'>/=\x00-\x1f]/,Ar=function(e){var t=`<`+e;this.classes.length&&(t+=` class="`+An(Tr(this.classes))+`"`);var n=Er(this.style);n&&(t+=` style="`+An(n)+`"`);for(var r of Object.keys(this.attributes)){if(kr.test(r))throw new P(`Invalid attribute name '`+r+`'`);t+=` `+r+`="`+An(this.attributes[r])+`"`}t+=`>`;for(var i=0;i<this.children.length;i++)t+=this.children[i].toMarkup();return t+=`</`+e+`>`,t},jr=class{constructor(e,t,n,r){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,this.italic=void 0,Dr.call(this,e,n,r),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return this.classes.includes(e)}toNode(){return Or.call(this,`span`)}toMarkup(){return Ar.call(this,`span`)}},Mr=class{constructor(e,t,n,r){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,Dr.call(this,t,r),this.children=n||[],this.setAttribute(`href`,e)}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return this.classes.includes(e)}toNode(){return Or.call(this,`a`)}toMarkup(){return Ar.call(this,`a`)}},Nr=class{constructor(e,t,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=[`mord`],this.height=0,this.depth=0,this.maxFontSize=0,this.style=n}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createElement(`img`);return e.src=this.src,e.alt=this.alt,e.className=`mord`,Object.assign(e.style,this.style),e}toMarkup(){var e=`<img src="`+An(this.src)+`"`+(` alt="`+An(this.alt)+`"`),t=Er(this.style);return t&&(e+=` style="`+An(t)+`"`),e+=`'/>`,e}},Pr={î:`ı̂`,ï:`ı̈`,í:`ı́`,ì:`ı̀`},Fr=class{constructor(e,t,n,r,i,a,o,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=e,this.height=t||0,this.depth=n||0,this.italic=r||0,this.skew=i||0,this.width=a||0,this.classes=o||[],this.style=s||{},this.maxFontSize=0;var c=rr(this.text.charCodeAt(0));c&&this.classes.push(c+`_fallback`),/[îïíì]/.test(this.text)&&(this.text=Pr[this.text])}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createTextNode(this.text),t=null;return this.italic>0&&(t=document.createElement(`span`),t.style.marginRight=I(this.italic)),this.classes.length>0&&(t||=document.createElement(`span`),t.className=Tr(this.classes)),Object.keys(this.style).length>0&&(t||=document.createElement(`span`),Object.assign(t.style,this.style)),t?(t.appendChild(e),t):e}toMarkup(){var e=!1,t=`<span`;this.classes.length&&(e=!0,t+=` class="`,t+=An(Tr(this.classes)),t+=`"`);var n=``;this.italic>0&&(n+=`margin-right:`+I(this.italic)+`;`),n+=Er(this.style),n&&(e=!0,t+=` style="`+An(n)+`"`);var r=An(this.text);return e?(t+=`>`,t+=r,t+=`</span>`,t):r}},Ir=class{constructor(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}toNode(){var e=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);for(var t of Object.keys(this.attributes))e.setAttribute(t,this.attributes[t]);for(var n=0;n<this.children.length;n++)e.appendChild(this.children[n].toNode());return e}toMarkup(){var e=`<svg xmlns="http://www.w3.org/2000/svg"`;for(var t of Object.keys(this.attributes))e+=` `+t+`="`+An(this.attributes[t])+`"`;e+=`>`;for(var n=0;n<this.children.length;n++)e+=this.children[n].toMarkup();return e+=`</svg>`,e}},Lr=class{constructor(e,t){this.pathName=void 0,this.alternate=void 0,this.pathName=e,this.alternate=t}toNode(){var e=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);return this.alternate?e.setAttribute(`d`,this.alternate):e.setAttribute(`d`,_r[this.pathName]),e}toMarkup(){return this.alternate?`<path d="`+An(this.alternate)+`"/>`:`<path d="`+An(_r[this.pathName])+`"/>`}},Rr=class{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);for(var t of Object.keys(this.attributes))e.setAttribute(t,this.attributes[t]);return e}toMarkup(){var e=`<line`;for(var t of Object.keys(this.attributes))e+=` `+t+`="`+An(this.attributes[t])+`"`;return e+=`/>`,e}};function zr(e){if(e instanceof Fr)return e;throw Error(`Expected symbolNode but got `+String(e)+`.`)}function Br(e){if(e instanceof jr)return e;throw Error(`Expected span<HtmlDomNode> but got `+String(e)+`.`)}var Vr=e=>e instanceof jr||e instanceof Mr||e instanceof br,Hr={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},Ur={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},Wr={Å:`A`,Ð:`D`,Þ:`o`,å:`a`,ð:`d`,þ:`o`,А:`A`,Б:`B`,В:`B`,Г:`F`,Д:`A`,Е:`E`,Ж:`K`,З:`3`,И:`N`,Й:`N`,К:`K`,Л:`N`,М:`M`,Н:`H`,О:`O`,П:`N`,Р:`P`,С:`C`,Т:`T`,У:`y`,Ф:`O`,Х:`X`,Ц:`U`,Ч:`h`,Ш:`W`,Щ:`W`,Ъ:`B`,Ы:`X`,Ь:`B`,Э:`3`,Ю:`X`,Я:`R`,а:`a`,б:`b`,в:`a`,г:`r`,д:`y`,е:`e`,ж:`m`,з:`e`,и:`n`,й:`n`,к:`n`,л:`n`,м:`m`,н:`n`,о:`o`,п:`n`,р:`p`,с:`c`,т:`o`,у:`y`,ф:`b`,х:`x`,ц:`n`,ч:`n`,ш:`w`,щ:`w`,ъ:`a`,ы:`m`,ь:`a`,э:`e`,ю:`m`,я:`r`};function Gr(e,t){Hr[e]=t}function Kr(e,t,n){if(!Hr[t])throw Error(`Font metrics not found for font: `+t+`.`);var r=e.charCodeAt(0),i=Hr[t][r];if(!i&&e[0]in Wr&&(r=Wr[e[0]].charCodeAt(0),i=Hr[t][r]),!i&&n===`text`&&ar(r)&&(i=Hr[t][77]),i)return{depth:i[0],height:i[1],italic:i[2],skew:i[3],width:i[4]}}var qr={};function Jr(e){var t=e>=5?0:e>=3?1:2;if(!qr[t]){var n=qr[t]={cssEmPerMu:Ur.quad[t]/18};for(var r of Object.keys(Ur))n[r]=Ur[r][t]}return qr[t]}var Yr={math:{},text:{}};function L(e,t,n,r,i,a){Yr[e][i]={font:t,group:n,replace:r},a&&r&&(Yr[e][r]=Yr[e][i])}var R=`math`,z=`text`,B=`main`,V=`ams`,Xr=`accent-token`,H=`bin`,Zr=`close`,Qr=`inner`,U=`mathord`,$r=`op-token`,ei=`open`,ti=`punct`,W=`rel`,ni=`spacing`,G=`textord`;L(R,B,W,`≡`,`\\equiv`,!0),L(R,B,W,`≺`,`\\prec`,!0),L(R,B,W,`≻`,`\\succ`,!0),L(R,B,W,`∼`,`\\sim`,!0),L(R,B,W,`⊥`,`\\perp`),L(R,B,W,`⪯`,`\\preceq`,!0),L(R,B,W,`⪰`,`\\succeq`,!0),L(R,B,W,`≃`,`\\simeq`,!0),L(R,B,W,`∣`,`\\mid`,!0),L(R,B,W,`≪`,`\\ll`,!0),L(R,B,W,`≫`,`\\gg`,!0),L(R,B,W,`≍`,`\\asymp`,!0),L(R,B,W,`∥`,`\\parallel`),L(R,B,W,`⋈`,`\\bowtie`,!0),L(R,B,W,`⌣`,`\\smile`,!0),L(R,B,W,`⊑`,`\\sqsubseteq`,!0),L(R,B,W,`⊒`,`\\sqsupseteq`,!0),L(R,B,W,`≐`,`\\doteq`,!0),L(R,B,W,`⌢`,`\\frown`,!0),L(R,B,W,`∋`,`\\ni`,!0),L(R,B,W,`∝`,`\\propto`,!0),L(R,B,W,`⊢`,`\\vdash`,!0),L(R,B,W,`⊣`,`\\dashv`,!0),L(R,B,W,`∋`,`\\owns`),L(R,B,ti,`.`,`\\ldotp`),L(R,B,ti,`⋅`,`\\cdotp`),L(R,B,ti,`⋅`,`·`),L(z,B,G,`⋅`,`·`),L(R,B,G,`#`,`\\#`),L(z,B,G,`#`,`\\#`),L(R,B,G,`&`,`\\&`),L(z,B,G,`&`,`\\&`),L(R,B,G,`ℵ`,`\\aleph`,!0),L(R,B,G,`∀`,`\\forall`,!0),L(R,B,G,`ℏ`,`\\hbar`,!0),L(R,B,G,`∃`,`\\exists`,!0),L(R,B,G,`∇`,`\\nabla`,!0),L(R,B,G,`♭`,`\\flat`,!0),L(R,B,G,`ℓ`,`\\ell`,!0),L(R,B,G,`♮`,`\\natural`,!0),L(R,B,G,`♣`,`\\clubsuit`,!0),L(R,B,G,`℘`,`\\wp`,!0),L(R,B,G,`♯`,`\\sharp`,!0),L(R,B,G,`♢`,`\\diamondsuit`,!0),L(R,B,G,`ℜ`,`\\Re`,!0),L(R,B,G,`♡`,`\\heartsuit`,!0),L(R,B,G,`ℑ`,`\\Im`,!0),L(R,B,G,`♠`,`\\spadesuit`,!0),L(R,B,G,`§`,`\\S`,!0),L(z,B,G,`§`,`\\S`),L(R,B,G,`¶`,`\\P`,!0),L(z,B,G,`¶`,`\\P`),L(R,B,G,`†`,`\\dag`),L(z,B,G,`†`,`\\dag`),L(z,B,G,`†`,`\\textdagger`),L(R,B,G,`‡`,`\\ddag`),L(z,B,G,`‡`,`\\ddag`),L(z,B,G,`‡`,`\\textdaggerdbl`),L(R,B,Zr,`⎱`,`\\rmoustache`,!0),L(R,B,ei,`⎰`,`\\lmoustache`,!0),L(R,B,Zr,`⟯`,`\\rgroup`,!0),L(R,B,ei,`⟮`,`\\lgroup`,!0),L(R,B,H,`∓`,`\\mp`,!0),L(R,B,H,`⊖`,`\\ominus`,!0),L(R,B,H,`⊎`,`\\uplus`,!0),L(R,B,H,`⊓`,`\\sqcap`,!0),L(R,B,H,`∗`,`\\ast`),L(R,B,H,`⊔`,`\\sqcup`,!0),L(R,B,H,`◯`,`\\bigcirc`,!0),L(R,B,H,`∙`,`\\bullet`,!0),L(R,B,H,`‡`,`\\ddagger`),L(R,B,H,`≀`,`\\wr`,!0),L(R,B,H,`⨿`,`\\amalg`),L(R,B,H,`&`,`\\And`),L(R,B,W,`⟵`,`\\longleftarrow`,!0),L(R,B,W,`⇐`,`\\Leftarrow`,!0),L(R,B,W,`⟸`,`\\Longleftarrow`,!0),L(R,B,W,`⟶`,`\\longrightarrow`,!0),L(R,B,W,`⇒`,`\\Rightarrow`,!0),L(R,B,W,`⟹`,`\\Longrightarrow`,!0),L(R,B,W,`↔`,`\\leftrightarrow`,!0),L(R,B,W,`⟷`,`\\longleftrightarrow`,!0),L(R,B,W,`⇔`,`\\Leftrightarrow`,!0),L(R,B,W,`⟺`,`\\Longleftrightarrow`,!0),L(R,B,W,`↦`,`\\mapsto`,!0),L(R,B,W,`⟼`,`\\longmapsto`,!0),L(R,B,W,`↗`,`\\nearrow`,!0),L(R,B,W,`↩`,`\\hookleftarrow`,!0),L(R,B,W,`↪`,`\\hookrightarrow`,!0),L(R,B,W,`↘`,`\\searrow`,!0),L(R,B,W,`↼`,`\\leftharpoonup`,!0),L(R,B,W,`⇀`,`\\rightharpoonup`,!0),L(R,B,W,`↙`,`\\swarrow`,!0),L(R,B,W,`↽`,`\\leftharpoondown`,!0),L(R,B,W,`⇁`,`\\rightharpoondown`,!0),L(R,B,W,`↖`,`\\nwarrow`,!0),L(R,B,W,`⇌`,`\\rightleftharpoons`,!0),L(R,V,W,`≮`,`\\nless`,!0),L(R,V,W,``,`\\@nleqslant`),L(R,V,W,``,`\\@nleqq`),L(R,V,W,`⪇`,`\\lneq`,!0),L(R,V,W,`≨`,`\\lneqq`,!0),L(R,V,W,``,`\\@lvertneqq`),L(R,V,W,`⋦`,`\\lnsim`,!0),L(R,V,W,`⪉`,`\\lnapprox`,!0),L(R,V,W,`⊀`,`\\nprec`,!0),L(R,V,W,`⋠`,`\\npreceq`,!0),L(R,V,W,`⋨`,`\\precnsim`,!0),L(R,V,W,`⪹`,`\\precnapprox`,!0),L(R,V,W,`≁`,`\\nsim`,!0),L(R,V,W,``,`\\@nshortmid`),L(R,V,W,`∤`,`\\nmid`,!0),L(R,V,W,`⊬`,`\\nvdash`,!0),L(R,V,W,`⊭`,`\\nvDash`,!0),L(R,V,W,`⋪`,`\\ntriangleleft`),L(R,V,W,`⋬`,`\\ntrianglelefteq`,!0),L(R,V,W,`⊊`,`\\subsetneq`,!0),L(R,V,W,``,`\\@varsubsetneq`),L(R,V,W,`⫋`,`\\subsetneqq`,!0),L(R,V,W,``,`\\@varsubsetneqq`),L(R,V,W,`≯`,`\\ngtr`,!0),L(R,V,W,``,`\\@ngeqslant`),L(R,V,W,``,`\\@ngeqq`),L(R,V,W,`⪈`,`\\gneq`,!0),L(R,V,W,`≩`,`\\gneqq`,!0),L(R,V,W,``,`\\@gvertneqq`),L(R,V,W,`⋧`,`\\gnsim`,!0),L(R,V,W,`⪊`,`\\gnapprox`,!0),L(R,V,W,`⊁`,`\\nsucc`,!0),L(R,V,W,`⋡`,`\\nsucceq`,!0),L(R,V,W,`⋩`,`\\succnsim`,!0),L(R,V,W,`⪺`,`\\succnapprox`,!0),L(R,V,W,`≆`,`\\ncong`,!0),L(R,V,W,``,`\\@nshortparallel`),L(R,V,W,`∦`,`\\nparallel`,!0),L(R,V,W,`⊯`,`\\nVDash`,!0),L(R,V,W,`⋫`,`\\ntriangleright`),L(R,V,W,`⋭`,`\\ntrianglerighteq`,!0),L(R,V,W,``,`\\@nsupseteqq`),L(R,V,W,`⊋`,`\\supsetneq`,!0),L(R,V,W,``,`\\@varsupsetneq`),L(R,V,W,`⫌`,`\\supsetneqq`,!0),L(R,V,W,``,`\\@varsupsetneqq`),L(R,V,W,`⊮`,`\\nVdash`,!0),L(R,V,W,`⪵`,`\\precneqq`,!0),L(R,V,W,`⪶`,`\\succneqq`,!0),L(R,V,W,``,`\\@nsubseteqq`),L(R,V,H,`⊴`,`\\unlhd`),L(R,V,H,`⊵`,`\\unrhd`),L(R,V,W,`↚`,`\\nleftarrow`,!0),L(R,V,W,`↛`,`\\nrightarrow`,!0),L(R,V,W,`⇍`,`\\nLeftarrow`,!0),L(R,V,W,`⇏`,`\\nRightarrow`,!0),L(R,V,W,`↮`,`\\nleftrightarrow`,!0),L(R,V,W,`⇎`,`\\nLeftrightarrow`,!0),L(R,V,W,`△`,`\\vartriangle`),L(R,V,G,`ℏ`,`\\hslash`),L(R,V,G,`▽`,`\\triangledown`),L(R,V,G,`◊`,`\\lozenge`),L(R,V,G,`Ⓢ`,`\\circledS`),L(R,V,G,`®`,`\\circledR`),L(z,V,G,`®`,`\\circledR`),L(R,V,G,`∡`,`\\measuredangle`,!0),L(R,V,G,`∄`,`\\nexists`),L(R,V,G,`℧`,`\\mho`),L(R,V,G,`Ⅎ`,`\\Finv`,!0),L(R,V,G,`⅁`,`\\Game`,!0),L(R,V,G,`‵`,`\\backprime`),L(R,V,G,`▲`,`\\blacktriangle`),L(R,V,G,`▼`,`\\blacktriangledown`),L(R,V,G,`■`,`\\blacksquare`),L(R,V,G,`⧫`,`\\blacklozenge`),L(R,V,G,`★`,`\\bigstar`),L(R,V,G,`∢`,`\\sphericalangle`,!0),L(R,V,G,`∁`,`\\complement`,!0),L(R,V,G,`ð`,`\\eth`,!0),L(z,B,G,`ð`,`ð`),L(R,V,G,`╱`,`\\diagup`),L(R,V,G,`╲`,`\\diagdown`),L(R,V,G,`□`,`\\square`),L(R,V,G,`□`,`\\Box`),L(R,V,G,`◊`,`\\Diamond`),L(R,V,G,`¥`,`\\yen`,!0),L(z,V,G,`¥`,`\\yen`,!0),L(R,V,G,`✓`,`\\checkmark`,!0),L(z,V,G,`✓`,`\\checkmark`),L(R,V,G,`ℶ`,`\\beth`,!0),L(R,V,G,`ℸ`,`\\daleth`,!0),L(R,V,G,`ℷ`,`\\gimel`,!0),L(R,V,G,`ϝ`,`\\digamma`,!0),L(R,V,G,`ϰ`,`\\varkappa`),L(R,V,ei,`┌`,`\\@ulcorner`,!0),L(R,V,Zr,`┐`,`\\@urcorner`,!0),L(R,V,ei,`└`,`\\@llcorner`,!0),L(R,V,Zr,`┘`,`\\@lrcorner`,!0),L(R,V,W,`≦`,`\\leqq`,!0),L(R,V,W,`⩽`,`\\leqslant`,!0),L(R,V,W,`⪕`,`\\eqslantless`,!0),L(R,V,W,`≲`,`\\lesssim`,!0),L(R,V,W,`⪅`,`\\lessapprox`,!0),L(R,V,W,`≊`,`\\approxeq`,!0),L(R,V,H,`⋖`,`\\lessdot`),L(R,V,W,`⋘`,`\\lll`,!0),L(R,V,W,`≶`,`\\lessgtr`,!0),L(R,V,W,`⋚`,`\\lesseqgtr`,!0),L(R,V,W,`⪋`,`\\lesseqqgtr`,!0),L(R,V,W,`≑`,`\\doteqdot`),L(R,V,W,`≓`,`\\risingdotseq`,!0),L(R,V,W,`≒`,`\\fallingdotseq`,!0),L(R,V,W,`∽`,`\\backsim`,!0),L(R,V,W,`⋍`,`\\backsimeq`,!0),L(R,V,W,`⫅`,`\\subseteqq`,!0),L(R,V,W,`⋐`,`\\Subset`,!0),L(R,V,W,`⊏`,`\\sqsubset`,!0),L(R,V,W,`≼`,`\\preccurlyeq`,!0),L(R,V,W,`⋞`,`\\curlyeqprec`,!0),L(R,V,W,`≾`,`\\precsim`,!0),L(R,V,W,`⪷`,`\\precapprox`,!0),L(R,V,W,`⊲`,`\\vartriangleleft`),L(R,V,W,`⊴`,`\\trianglelefteq`),L(R,V,W,`⊨`,`\\vDash`,!0),L(R,V,W,`⊪`,`\\Vvdash`,!0),L(R,V,W,`⌣`,`\\smallsmile`),L(R,V,W,`⌢`,`\\smallfrown`),L(R,V,W,`≏`,`\\bumpeq`,!0),L(R,V,W,`≎`,`\\Bumpeq`,!0),L(R,V,W,`≧`,`\\geqq`,!0),L(R,V,W,`⩾`,`\\geqslant`,!0),L(R,V,W,`⪖`,`\\eqslantgtr`,!0),L(R,V,W,`≳`,`\\gtrsim`,!0),L(R,V,W,`⪆`,`\\gtrapprox`,!0),L(R,V,H,`⋗`,`\\gtrdot`),L(R,V,W,`⋙`,`\\ggg`,!0),L(R,V,W,`≷`,`\\gtrless`,!0),L(R,V,W,`⋛`,`\\gtreqless`,!0),L(R,V,W,`⪌`,`\\gtreqqless`,!0),L(R,V,W,`≖`,`\\eqcirc`,!0),L(R,V,W,`≗`,`\\circeq`,!0),L(R,V,W,`≜`,`\\triangleq`,!0),L(R,V,W,`∼`,`\\thicksim`),L(R,V,W,`≈`,`\\thickapprox`),L(R,V,W,`⫆`,`\\supseteqq`,!0),L(R,V,W,`⋑`,`\\Supset`,!0),L(R,V,W,`⊐`,`\\sqsupset`,!0),L(R,V,W,`≽`,`\\succcurlyeq`,!0),L(R,V,W,`⋟`,`\\curlyeqsucc`,!0),L(R,V,W,`≿`,`\\succsim`,!0),L(R,V,W,`⪸`,`\\succapprox`,!0),L(R,V,W,`⊳`,`\\vartriangleright`),L(R,V,W,`⊵`,`\\trianglerighteq`),L(R,V,W,`⊩`,`\\Vdash`,!0),L(R,V,W,`∣`,`\\shortmid`),L(R,V,W,`∥`,`\\shortparallel`),L(R,V,W,`≬`,`\\between`,!0),L(R,V,W,`⋔`,`\\pitchfork`,!0),L(R,V,W,`∝`,`\\varpropto`),L(R,V,W,`◀`,`\\blacktriangleleft`),L(R,V,W,`∴`,`\\therefore`,!0),L(R,V,W,`∍`,`\\backepsilon`),L(R,V,W,`▶`,`\\blacktriangleright`),L(R,V,W,`∵`,`\\because`,!0),L(R,V,W,`⋘`,`\\llless`),L(R,V,W,`⋙`,`\\gggtr`),L(R,V,H,`⊲`,`\\lhd`),L(R,V,H,`⊳`,`\\rhd`),L(R,V,W,`≂`,`\\eqsim`,!0),L(R,B,W,`⋈`,`\\Join`),L(R,V,W,`≑`,`\\Doteq`,!0),L(R,V,H,`∔`,`\\dotplus`,!0),L(R,V,H,`∖`,`\\smallsetminus`),L(R,V,H,`⋒`,`\\Cap`,!0),L(R,V,H,`⋓`,`\\Cup`,!0),L(R,V,H,`⩞`,`\\doublebarwedge`,!0),L(R,V,H,`⊟`,`\\boxminus`,!0),L(R,V,H,`⊞`,`\\boxplus`,!0),L(R,V,H,`⋇`,`\\divideontimes`,!0),L(R,V,H,`⋉`,`\\ltimes`,!0),L(R,V,H,`⋊`,`\\rtimes`,!0),L(R,V,H,`⋋`,`\\leftthreetimes`,!0),L(R,V,H,`⋌`,`\\rightthreetimes`,!0),L(R,V,H,`⋏`,`\\curlywedge`,!0),L(R,V,H,`⋎`,`\\curlyvee`,!0),L(R,V,H,`⊝`,`\\circleddash`,!0),L(R,V,H,`⊛`,`\\circledast`,!0),L(R,V,H,`⋅`,`\\centerdot`),L(R,V,H,`⊺`,`\\intercal`,!0),L(R,V,H,`⋒`,`\\doublecap`),L(R,V,H,`⋓`,`\\doublecup`),L(R,V,H,`⊠`,`\\boxtimes`,!0),L(R,V,W,`⇢`,`\\dashrightarrow`,!0),L(R,V,W,`⇠`,`\\dashleftarrow`,!0),L(R,V,W,`⇇`,`\\leftleftarrows`,!0),L(R,V,W,`⇆`,`\\leftrightarrows`,!0),L(R,V,W,`⇚`,`\\Lleftarrow`,!0),L(R,V,W,`↞`,`\\twoheadleftarrow`,!0),L(R,V,W,`↢`,`\\leftarrowtail`,!0),L(R,V,W,`↫`,`\\looparrowleft`,!0),L(R,V,W,`⇋`,`\\leftrightharpoons`,!0),L(R,V,W,`↶`,`\\curvearrowleft`,!0),L(R,V,W,`↺`,`\\circlearrowleft`,!0),L(R,V,W,`↰`,`\\Lsh`,!0),L(R,V,W,`⇈`,`\\upuparrows`,!0),L(R,V,W,`↿`,`\\upharpoonleft`,!0),L(R,V,W,`⇃`,`\\downharpoonleft`,!0),L(R,B,W,`⊶`,`\\origof`,!0),L(R,B,W,`⊷`,`\\imageof`,!0),L(R,V,W,`⊸`,`\\multimap`,!0),L(R,V,W,`↭`,`\\leftrightsquigarrow`,!0),L(R,V,W,`⇉`,`\\rightrightarrows`,!0),L(R,V,W,`⇄`,`\\rightleftarrows`,!0),L(R,V,W,`↠`,`\\twoheadrightarrow`,!0),L(R,V,W,`↣`,`\\rightarrowtail`,!0),L(R,V,W,`↬`,`\\looparrowright`,!0),L(R,V,W,`↷`,`\\curvearrowright`,!0),L(R,V,W,`↻`,`\\circlearrowright`,!0),L(R,V,W,`↱`,`\\Rsh`,!0),L(R,V,W,`⇊`,`\\downdownarrows`,!0),L(R,V,W,`↾`,`\\upharpoonright`,!0),L(R,V,W,`⇂`,`\\downharpoonright`,!0),L(R,V,W,`⇝`,`\\rightsquigarrow`,!0),L(R,V,W,`⇝`,`\\leadsto`),L(R,V,W,`⇛`,`\\Rrightarrow`,!0),L(R,V,W,`↾`,`\\restriction`),L(R,B,G,`‘`,"`"),L(R,B,G,`$`,`\\$`),L(z,B,G,`$`,`\\$`),L(z,B,G,`$`,`\\textdollar`),L(R,B,G,`%`,`\\%`),L(z,B,G,`%`,`\\%`),L(R,B,G,`_`,`\\_`),L(z,B,G,`_`,`\\_`),L(z,B,G,`_`,`\\textunderscore`),L(R,B,G,`∠`,`\\angle`,!0),L(R,B,G,`∞`,`\\infty`,!0),L(R,B,G,`′`,`\\prime`),L(R,B,G,`△`,`\\triangle`),L(R,B,G,`Γ`,`\\Gamma`,!0),L(R,B,G,`Δ`,`\\Delta`,!0),L(R,B,G,`Θ`,`\\Theta`,!0),L(R,B,G,`Λ`,`\\Lambda`,!0),L(R,B,G,`Ξ`,`\\Xi`,!0),L(R,B,G,`Π`,`\\Pi`,!0),L(R,B,G,`Σ`,`\\Sigma`,!0),L(R,B,G,`Υ`,`\\Upsilon`,!0),L(R,B,G,`Φ`,`\\Phi`,!0),L(R,B,G,`Ψ`,`\\Psi`,!0),L(R,B,G,`Ω`,`\\Omega`,!0),L(R,B,G,`A`,`Α`),L(R,B,G,`B`,`Β`),L(R,B,G,`E`,`Ε`),L(R,B,G,`Z`,`Ζ`),L(R,B,G,`H`,`Η`),L(R,B,G,`I`,`Ι`),L(R,B,G,`K`,`Κ`),L(R,B,G,`M`,`Μ`),L(R,B,G,`N`,`Ν`),L(R,B,G,`O`,`Ο`),L(R,B,G,`P`,`Ρ`),L(R,B,G,`T`,`Τ`),L(R,B,G,`X`,`Χ`),L(R,B,G,`¬`,`\\neg`,!0),L(R,B,G,`¬`,`\\lnot`),L(R,B,G,`⊤`,`\\top`),L(R,B,G,`⊥`,`\\bot`),L(R,B,G,`∅`,`\\emptyset`),L(R,V,G,`∅`,`\\varnothing`),L(R,B,U,`α`,`\\alpha`,!0),L(R,B,U,`β`,`\\beta`,!0),L(R,B,U,`γ`,`\\gamma`,!0),L(R,B,U,`δ`,`\\delta`,!0),L(R,B,U,`ϵ`,`\\epsilon`,!0),L(R,B,U,`ζ`,`\\zeta`,!0),L(R,B,U,`η`,`\\eta`,!0),L(R,B,U,`θ`,`\\theta`,!0),L(R,B,U,`ι`,`\\iota`,!0),L(R,B,U,`κ`,`\\kappa`,!0),L(R,B,U,`λ`,`\\lambda`,!0),L(R,B,U,`μ`,`\\mu`,!0),L(R,B,U,`ν`,`\\nu`,!0),L(R,B,U,`ξ`,`\\xi`,!0),L(R,B,U,`ο`,`\\omicron`,!0),L(R,B,U,`π`,`\\pi`,!0),L(R,B,U,`ρ`,`\\rho`,!0),L(R,B,U,`σ`,`\\sigma`,!0),L(R,B,U,`τ`,`\\tau`,!0),L(R,B,U,`υ`,`\\upsilon`,!0),L(R,B,U,`ϕ`,`\\phi`,!0),L(R,B,U,`χ`,`\\chi`,!0),L(R,B,U,`ψ`,`\\psi`,!0),L(R,B,U,`ω`,`\\omega`,!0),L(R,B,U,`ε`,`\\varepsilon`,!0),L(R,B,U,`ϑ`,`\\vartheta`,!0),L(R,B,U,`ϖ`,`\\varpi`,!0),L(R,B,U,`ϱ`,`\\varrho`,!0),L(R,B,U,`ς`,`\\varsigma`,!0),L(R,B,U,`φ`,`\\varphi`,!0),L(R,B,H,`∗`,`*`,!0),L(R,B,H,`+`,`+`),L(R,B,H,`−`,`-`,!0),L(R,B,H,`⋅`,`\\cdot`,!0),L(R,B,H,`∘`,`\\circ`,!0),L(R,B,H,`÷`,`\\div`,!0),L(R,B,H,`±`,`\\pm`,!0),L(R,B,H,`×`,`\\times`,!0),L(R,B,H,`∩`,`\\cap`,!0),L(R,B,H,`∪`,`\\cup`,!0),L(R,B,H,`∖`,`\\setminus`,!0),L(R,B,H,`∧`,`\\land`),L(R,B,H,`∨`,`\\lor`),L(R,B,H,`∧`,`\\wedge`,!0),L(R,B,H,`∨`,`\\vee`,!0),L(R,B,G,`√`,`\\surd`),L(R,B,ei,`⟨`,`\\langle`,!0),L(R,B,ei,`∣`,`\\lvert`),L(R,B,ei,`∥`,`\\lVert`),L(R,B,Zr,`?`,`?`),L(R,B,Zr,`!`,`!`),L(R,B,Zr,`⟩`,`\\rangle`,!0),L(R,B,Zr,`∣`,`\\rvert`),L(R,B,Zr,`∥`,`\\rVert`),L(R,B,W,`=`,`=`),L(R,B,W,`:`,`:`),L(R,B,W,`≈`,`\\approx`,!0),L(R,B,W,`≅`,`\\cong`,!0),L(R,B,W,`≥`,`\\ge`),L(R,B,W,`≥`,`\\geq`,!0),L(R,B,W,`←`,`\\gets`),L(R,B,W,`>`,`\\gt`,!0),L(R,B,W,`∈`,`\\in`,!0),L(R,B,W,``,`\\@not`),L(R,B,W,`⊂`,`\\subset`,!0),L(R,B,W,`⊃`,`\\supset`,!0),L(R,B,W,`⊆`,`\\subseteq`,!0),L(R,B,W,`⊇`,`\\supseteq`,!0),L(R,V,W,`⊈`,`\\nsubseteq`,!0),L(R,V,W,`⊉`,`\\nsupseteq`,!0),L(R,B,W,`⊨`,`\\models`),L(R,B,W,`←`,`\\leftarrow`,!0),L(R,B,W,`≤`,`\\le`),L(R,B,W,`≤`,`\\leq`,!0),L(R,B,W,`<`,`\\lt`,!0),L(R,B,W,`→`,`\\rightarrow`,!0),L(R,B,W,`→`,`\\to`),L(R,V,W,`≱`,`\\ngeq`,!0),L(R,V,W,`≰`,`\\nleq`,!0),L(R,B,ni,`\xA0`,`\\ `),L(R,B,ni,`\xA0`,`\\space`),L(R,B,ni,`\xA0`,`\\nobreakspace`),L(z,B,ni,`\xA0`,`\\ `),L(z,B,ni,`\xA0`,` `),L(z,B,ni,`\xA0`,`\\space`),L(z,B,ni,`\xA0`,`\\nobreakspace`),L(R,B,ni,``,`\\nobreak`),L(R,B,ni,``,`\\allowbreak`),L(R,B,ti,`,`,`,`),L(R,B,ti,`;`,`;`),L(R,V,H,`⊼`,`\\barwedge`,!0),L(R,V,H,`⊻`,`\\veebar`,!0),L(R,B,H,`⊙`,`\\odot`,!0),L(R,B,H,`⊕`,`\\oplus`,!0),L(R,B,H,`⊗`,`\\otimes`,!0),L(R,B,G,`∂`,`\\partial`,!0),L(R,B,H,`⊘`,`\\oslash`,!0),L(R,V,H,`⊚`,`\\circledcirc`,!0),L(R,V,H,`⊡`,`\\boxdot`,!0),L(R,B,H,`△`,`\\bigtriangleup`),L(R,B,H,`▽`,`\\bigtriangledown`),L(R,B,H,`†`,`\\dagger`),L(R,B,H,`⋄`,`\\diamond`),L(R,B,H,`⋆`,`\\star`),L(R,B,H,`◃`,`\\triangleleft`),L(R,B,H,`▹`,`\\triangleright`),L(R,B,ei,`{`,`\\{`),L(z,B,G,`{`,`\\{`),L(z,B,G,`{`,`\\textbraceleft`),L(R,B,Zr,`}`,`\\}`),L(z,B,G,`}`,`\\}`),L(z,B,G,`}`,`\\textbraceright`),L(R,B,ei,`{`,`\\lbrace`),L(R,B,Zr,`}`,`\\rbrace`),L(R,B,ei,`[`,`\\lbrack`,!0),L(z,B,G,`[`,`\\lbrack`,!0),L(R,B,Zr,`]`,`\\rbrack`,!0),L(z,B,G,`]`,`\\rbrack`,!0),L(R,B,ei,`(`,`\\lparen`,!0),L(R,B,Zr,`)`,`\\rparen`,!0),L(z,B,G,`<`,`\\textless`,!0),L(z,B,G,`>`,`\\textgreater`,!0),L(R,B,ei,`⌊`,`\\lfloor`,!0),L(R,B,Zr,`⌋`,`\\rfloor`,!0),L(R,B,ei,`⌈`,`\\lceil`,!0),L(R,B,Zr,`⌉`,`\\rceil`,!0),L(R,B,G,`\\`,`\\backslash`),L(R,B,G,`∣`,`|`),L(R,B,G,`∣`,`\\vert`),L(z,B,G,`|`,`\\textbar`,!0),L(R,B,G,`∥`,`\\|`),L(R,B,G,`∥`,`\\Vert`),L(z,B,G,`∥`,`\\textbardbl`),L(z,B,G,`~`,`\\textasciitilde`),L(z,B,G,`\\`,`\\textbackslash`),L(z,B,G,`^`,`\\textasciicircum`),L(R,B,W,`↑`,`\\uparrow`,!0),L(R,B,W,`⇑`,`\\Uparrow`,!0),L(R,B,W,`↓`,`\\downarrow`,!0),L(R,B,W,`⇓`,`\\Downarrow`,!0),L(R,B,W,`↕`,`\\updownarrow`,!0),L(R,B,W,`⇕`,`\\Updownarrow`,!0),L(R,B,$r,`∐`,`\\coprod`),L(R,B,$r,`⋁`,`\\bigvee`),L(R,B,$r,`⋀`,`\\bigwedge`),L(R,B,$r,`⨄`,`\\biguplus`),L(R,B,$r,`⋂`,`\\bigcap`),L(R,B,$r,`⋃`,`\\bigcup`),L(R,B,$r,`∫`,`\\int`),L(R,B,$r,`∫`,`\\intop`),L(R,B,$r,`∬`,`\\iint`),L(R,B,$r,`∭`,`\\iiint`),L(R,B,$r,`∏`,`\\prod`),L(R,B,$r,`∑`,`\\sum`),L(R,B,$r,`⨂`,`\\bigotimes`),L(R,B,$r,`⨁`,`\\bigoplus`),L(R,B,$r,`⨀`,`\\bigodot`),L(R,B,$r,`∮`,`\\oint`),L(R,B,$r,`∯`,`\\oiint`),L(R,B,$r,`∰`,`\\oiiint`),L(R,B,$r,`⨆`,`\\bigsqcup`),L(R,B,$r,`∫`,`\\smallint`),L(z,B,Qr,`…`,`\\textellipsis`),L(R,B,Qr,`…`,`\\mathellipsis`),L(z,B,Qr,`…`,`\\ldots`,!0),L(R,B,Qr,`…`,`\\ldots`,!0),L(R,B,Qr,`⋯`,`\\@cdots`,!0),L(R,B,Qr,`⋱`,`\\ddots`,!0),L(R,B,G,`⋮`,`\\varvdots`),L(z,B,G,`⋮`,`\\varvdots`),L(R,B,Xr,`ˊ`,`\\acute`),L(R,B,Xr,`ˋ`,`\\grave`),L(R,B,Xr,`¨`,`\\ddot`),L(R,B,Xr,`~`,`\\tilde`),L(R,B,Xr,`ˉ`,`\\bar`),L(R,B,Xr,`˘`,`\\breve`),L(R,B,Xr,`ˇ`,`\\check`),L(R,B,Xr,`^`,`\\hat`),L(R,B,Xr,`⃗`,`\\vec`),L(R,B,Xr,`˙`,`\\dot`),L(R,B,Xr,`˚`,`\\mathring`),L(R,B,U,``,`\\@imath`),L(R,B,U,``,`\\@jmath`),L(R,B,G,`ı`,`ı`),L(R,B,G,`ȷ`,`ȷ`),L(z,B,G,`ı`,`\\i`,!0),L(z,B,G,`ȷ`,`\\j`,!0),L(z,B,G,`ß`,`\\ss`,!0),L(z,B,G,`æ`,`\\ae`,!0),L(z,B,G,`œ`,`\\oe`,!0),L(z,B,G,`ø`,`\\o`,!0),L(z,B,G,`Æ`,`\\AE`,!0),L(z,B,G,`Œ`,`\\OE`,!0),L(z,B,G,`Ø`,`\\O`,!0),L(z,B,Xr,`ˊ`,`\\'`),L(z,B,Xr,`ˋ`,"\\`"),L(z,B,Xr,`ˆ`,`\\^`),L(z,B,Xr,`˜`,`\\~`),L(z,B,Xr,`ˉ`,`\\=`),L(z,B,Xr,`˘`,`\\u`),L(z,B,Xr,`˙`,`\\.`),L(z,B,Xr,`¸`,`\\c`),L(z,B,Xr,`˚`,`\\r`),L(z,B,Xr,`ˇ`,`\\v`),L(z,B,Xr,`¨`,`\\"`),L(z,B,Xr,`˝`,`\\H`),L(z,B,Xr,`◯`,`\\textcircled`);var ri={"--":!0,"---":!0,"``":!0,"''":!0};L(z,B,G,`–`,`--`,!0),L(z,B,G,`–`,`\\textendash`),L(z,B,G,`—`,`---`,!0),L(z,B,G,`—`,`\\textemdash`),L(z,B,G,`‘`,"`",!0),L(z,B,G,`‘`,`\\textquoteleft`),L(z,B,G,`’`,`'`,!0),L(z,B,G,`’`,`\\textquoteright`),L(z,B,G,`“`,"``",!0),L(z,B,G,`“`,`\\textquotedblleft`),L(z,B,G,`”`,`''`,!0),L(z,B,G,`”`,`\\textquotedblright`),L(R,B,G,`°`,`\\degree`,!0),L(z,B,G,`°`,`\\degree`),L(z,B,G,`°`,`\\textdegree`,!0),L(R,B,G,`£`,`\\pounds`),L(R,B,G,`£`,`\\mathsterling`,!0),L(z,B,G,`£`,`\\pounds`),L(z,B,G,`£`,`\\textsterling`,!0),L(R,V,G,`✠`,`\\maltese`),L(z,V,G,`✠`,`\\maltese`);for(var ii=`0123456789/@."`,ai=0;ai<ii.length;ai++){var oi=ii.charAt(ai);L(R,B,G,oi,oi)}for(var si=`0123456789!@*()-=+";:?/.,`,ci=0;ci<si.length;ci++){var li=si.charAt(ci);L(z,B,G,li,li)}for(var ui=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`,di=0;di<ui.length;di++){var fi=ui.charAt(di);L(R,B,U,fi,fi),L(z,B,G,fi,fi)}L(R,V,G,`C`,`ℂ`),L(z,V,G,`C`,`ℂ`),L(R,V,G,`H`,`ℍ`),L(z,V,G,`H`,`ℍ`),L(R,V,G,`N`,`ℕ`),L(z,V,G,`N`,`ℕ`),L(R,V,G,`P`,`ℙ`),L(z,V,G,`P`,`ℙ`),L(R,V,G,`Q`,`ℚ`),L(z,V,G,`Q`,`ℚ`),L(R,V,G,`R`,`ℝ`),L(z,V,G,`R`,`ℝ`),L(R,V,G,`Z`,`ℤ`),L(z,V,G,`Z`,`ℤ`),L(R,B,U,`h`,`ℎ`),L(z,B,U,`h`,`ℎ`);for(var K,pi=0;pi<ui.length;pi++){var mi=ui.charAt(pi);K=String.fromCharCode(55349,56320+pi),L(R,B,U,mi,K),L(z,B,G,mi,K),K=String.fromCharCode(55349,56372+pi),L(R,B,U,mi,K),L(z,B,G,mi,K),K=String.fromCharCode(55349,56424+pi),L(R,B,U,mi,K),L(z,B,G,mi,K),K=String.fromCharCode(55349,56580+pi),L(R,B,U,mi,K),L(z,B,G,mi,K),K=String.fromCharCode(55349,56684+pi),L(R,B,U,mi,K),L(z,B,G,mi,K),K=String.fromCharCode(55349,56736+pi),L(R,B,U,mi,K),L(z,B,G,mi,K),K=String.fromCharCode(55349,56788+pi),L(R,B,U,mi,K),L(z,B,G,mi,K),K=String.fromCharCode(55349,56840+pi),L(R,B,U,mi,K),L(z,B,G,mi,K),K=String.fromCharCode(55349,56944+pi),L(R,B,U,mi,K),L(z,B,G,mi,K),pi<26&&(K=String.fromCharCode(55349,56632+pi),L(R,B,U,mi,K),L(z,B,G,mi,K),K=String.fromCharCode(55349,56476+pi),L(R,B,U,mi,K),L(z,B,G,mi,K))}K=String.fromCharCode(55349,56668),L(R,B,U,`k`,K),L(z,B,G,`k`,K);for(var hi=0;hi<10;hi++){var gi=hi.toString();K=String.fromCharCode(55349,57294+hi),L(R,B,U,gi,K),L(z,B,G,gi,K),K=String.fromCharCode(55349,57314+hi),L(R,B,U,gi,K),L(z,B,G,gi,K),K=String.fromCharCode(55349,57324+hi),L(R,B,U,gi,K),L(z,B,G,gi,K),K=String.fromCharCode(55349,57334+hi),L(R,B,U,gi,K),L(z,B,G,gi,K)}for(var _i=`ÐÞþ`,vi=0;vi<_i.length;vi++){var yi=_i.charAt(vi);L(R,B,U,yi,yi),L(z,B,G,yi,yi)}var bi={mathClass:`mathbf`,textClass:`textbf`,font:`Main-Bold`},xi={mathClass:`mathnormal`,textClass:`textit`,font:`Math-Italic`},Si={mathClass:`boldsymbol`,textClass:`boldsymbol`,font:`Main-BoldItalic`},Ci={mathClass:`mathscr`,textClass:`textscr`,font:`Script-Regular`},wi={mathClass:``,textClass:``,font:``},Ti={mathClass:`mathfrak`,textClass:`textfrak`,font:`Fraktur-Regular`},Ei={mathClass:`mathbb`,textClass:`textbb`,font:`AMS-Regular`},Di={mathClass:`mathboldfrak`,textClass:`textboldfrak`,font:`Fraktur-Regular`},Oi={mathClass:`mathsf`,textClass:`textsf`,font:`SansSerif-Regular`},ki={mathClass:`mathboldsf`,textClass:`textboldsf`,font:`SansSerif-Bold`},Ai={mathClass:`mathitsf`,textClass:`textitsf`,font:`SansSerif-Italic`},ji={mathClass:`mathtt`,textClass:`texttt`,font:`Typewriter-Regular`},Mi=[bi,bi,xi,xi,Si,Si,Ci,wi,wi,wi,Ti,Ti,Ei,Ei,Di,Di,Oi,Oi,ki,ki,Ai,Ai,wi,wi,ji,ji],Ni=[bi,wi,Oi,ki,ji],Pi=e=>{var t=e.charCodeAt(0),n=e.charCodeAt(1),r=(t-55296)*1024+(n-56320)+65536;if(119808<=r&&r<120484)return Mi[Math.floor((r-119808)/26)];if(120782<=r&&r<=120831)return Ni[Math.floor((r-120782)/10)];if(r===120485||r===120486)return Mi[0];if(120486<r&&r<120782)return wi;throw new P(`Unsupported character: `+e)},Fi=function(e,t,n){if(Yr[n][e]){var r=Yr[n][e].replace;r&&(e=r)}return{value:e,metrics:Kr(e,t,n)}},Ii=function(e,t,n,r,i){var a=Fi(e,t,n),o=a.metrics;e=a.value;var s;if(o){var c=o.italic;(n===`text`||r&&r.font===`mathit`)&&(c=0),s=new Fr(e,o.height,o.depth,c,o.skew,o.width,i)}else typeof console<`u`&&console.warn(`No character metrics `+(`for '`+e+`' in style '`+t+`' and mode '`+n+`'`)),s=new Fr(e,0,0,0,0,0,i);if(r){s.maxFontSize=r.sizeMultiplier,r.style.isTight()&&s.classes.push(`mtight`);var l=r.getColor();l&&(s.style.color=l)}return s},Li=function(e,t,n,r){return r===void 0&&(r=[]),n.font===`boldsymbol`&&Fi(e,`Main-Bold`,t).metrics?Ii(e,`Main-Bold`,t,n,r.concat([`mathbf`])):e===`\\`||Yr[t][e].font===`main`?Ii(e,`Main-Regular`,t,n,r):Ii(e,`AMS-Regular`,t,n,r.concat([`amsrm`]))},Ri=function(e,t,n){return n!==`textord`&&Fi(e,`Math-BoldItalic`,t).metrics?{fontName:`Math-BoldItalic`,fontClass:`boldsymbol`}:{fontName:`Main-Bold`,fontClass:`mathbf`}},zi=function(e,t){var n=e.type===`mathord`?`mathord`:`textord`,r=e.mode,i=e.text,a=[`mord`],o=t.font,s=t.fontFamily,c=t.fontWeight,l=t.fontShape,u=r===`math`||r===`text`&&!!o,d=u?o:s,f=``,p=``;if(i.charCodeAt(0)===55349){var m=Pi(i);f=m.font,p=m[r+`Class`]}if(f)return Ii(i,f,r,t,a.concat(p));if(d){var h,g;if(d===`boldsymbol`){var _=Ri(i,r,n);h=_.fontName,g=[_.fontClass]}else u?(h=Qi[o].fontName,g=[o]):(h=Zi(s,c,l),g=[s,c,l]);if(Fi(i,h,r).metrics)return Ii(i,h,r,t,a.concat(g));if(Object.prototype.hasOwnProperty.call(ri,i)&&h.slice(0,10)===`Typewriter`){for(var v=[],y=0;y<i.length;y++)v.push(Ii(i[y],h,r,t,a.concat(g)));return Ki(v)}}if(n===`mathord`)return Ii(i,`Math-Italic`,r,t,a.concat([`mathnormal`]));if(n===`textord`){var b=Yr[r][i]&&Yr[r][i].font;if(b===`ams`)return Ii(i,Zi(`amsrm`,c,l),r,t,a.concat(`amsrm`,c,l));if(b===`main`||!b)return Ii(i,Zi(`textrm`,c,l),r,t,a.concat(c,l));var x=Zi(b,c,l);return Ii(i,x,r,t,a.concat(x,c,l))}else throw Error(`unexpected type: `+n+` in makeOrd`)},Bi=(e,t)=>{if(Tr(e.classes)!==Tr(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize||e.italic!==0&&e.hasClass(`mathnormal`))return!1;if(e.classes.length===1){var n=e.classes[0];if(n===`mbin`||n===`mord`)return!1}for(var r of Object.keys(e.style))if(e.style[r]!==t.style[r])return!1;for(var i of Object.keys(t.style))if(e.style[i]!==t.style[i])return!1;return!0},Vi=e=>{for(var t=0;t<e.length-1;t++){var n=e[t],r=e[t+1];n instanceof Fr&&r instanceof Fr&&Bi(n,r)&&(n.text+=r.text,n.height=Math.max(n.height,r.height),n.depth=Math.max(n.depth,r.depth),n.italic=r.italic,e.splice(t+1,1),t--)}return e},Hi=function(e){for(var t=0,n=0,r=0,i=0;i<e.children.length;i++){var a=e.children[i];a.height>t&&(t=a.height),a.depth>n&&(n=a.depth),a.maxFontSize>r&&(r=a.maxFontSize)}e.height=t,e.depth=n,e.maxFontSize=r},q=function(e,t,n,r){var i=new jr(e,t,n,r);return Hi(i),i},Ui=(e,t,n,r)=>new jr(e,t,n,r),Wi=function(e,t,n){var r=q([e],[],t);return r.height=Math.max(n||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),r.style.borderBottomWidth=I(r.height),r.maxFontSize=1,r},Gi=function(e,t,n,r){var i=new Mr(e,t,n,r);return Hi(i),i},Ki=function(e){var t=new br(e);return Hi(t),t},qi=function(e,t){return e instanceof br?q([],[e],t):e},Ji=function(e){if(e.positionType===`individualShift`){for(var t=e.children,n=[t[0]],r=-t[0].shift-t[0].elem.depth,i=r,a=1;a<t.length;a++){var o=-t[a].shift-i-t[a].elem.depth,s=o-(t[a-1].elem.height+t[a-1].elem.depth);i+=o,n.push({type:`kern`,size:s}),n.push(t[a])}return{children:n,depth:r}}var c;if(e.positionType===`top`){for(var l=e.positionData,u=0;u<e.children.length;u++){var d=e.children[u];l-=d.type===`kern`?d.size:d.elem.height+d.elem.depth}c=l}else if(e.positionType===`bottom`)c=-e.positionData;else{var f=e.children[0];if(f.type!==`elem`)throw Error(`First child must have type "elem".`);if(e.positionType===`shift`)c=-f.elem.depth-e.positionData;else if(e.positionType===`firstBaseline`)c=-f.elem.depth;else throw Error(`Invalid positionType `+e.positionType+`.`)}return{children:e.children,depth:c}},Yi=function(e,t){for(var n=Ji(e),r=n.children,i=n.depth,a=0,o=0;o<r.length;o++){var s=r[o];if(s.type===`elem`){var c=s.elem;a=Math.max(a,c.maxFontSize,c.height)}}a+=2;var l=q([`pstrut`],[]);l.style.height=I(a);for(var u=[],d=i,f=i,p=i,m=0;m<r.length;m++){var h=r[m];if(h.type===`kern`)p+=h.size;else{var g=h.elem,_=h.wrapperClasses||[],v=h.wrapperStyle||{},y=q(_,[l,g],void 0,v);y.style.top=I(-a-p-g.depth),h.marginLeft&&(y.style.marginLeft=h.marginLeft),h.marginRight&&(y.style.marginRight=h.marginRight),u.push(y),p+=g.height+g.depth}d=Math.min(d,p),f=Math.max(f,p)}var b=q([`vlist`],u);b.style.height=I(f);var x;if(d<0){var S=q([`vlist`],[q([],[])]);S.style.height=I(-d),x=[q([`vlist-r`],[b,q([`vlist-s`],[new Fr(`​`)])]),q([`vlist-r`],[S])]}else x=[q([`vlist-r`],[b])];var C=q([`vlist-t`],x);return x.length===2&&C.classes.push(`vlist-t2`),C.height=f,C.depth=-d,C},Xi=(e,t)=>{var n=q([`mspace`],[],t),r=wr(e,t);return n.style.marginRight=I(r),n},Zi=(e,t,n)=>{var r,i;switch(e){case`amsrm`:r=`AMS`;break;case`textrm`:r=`Main`;break;case`textsf`:r=`SansSerif`;break;case`texttt`:r=`Typewriter`;break;default:r=e}return i=t===`textbf`&&n===`textit`?`BoldItalic`:t===`textbf`?`Bold`:n===`textit`?`Italic`:`Regular`,r+`-`+i},Qi={mathbf:{variant:`bold`,fontName:`Main-Bold`},mathrm:{variant:`normal`,fontName:`Main-Regular`},textit:{variant:`italic`,fontName:`Main-Italic`},mathit:{variant:`italic`,fontName:`Main-Italic`},mathnormal:{variant:`italic`,fontName:`Math-Italic`},mathsfit:{variant:`sans-serif-italic`,fontName:`SansSerif-Italic`},mathbb:{variant:`double-struck`,fontName:`AMS-Regular`},mathcal:{variant:`script`,fontName:`Caligraphic-Regular`},mathfrak:{variant:`fraktur`,fontName:`Fraktur-Regular`},mathscr:{variant:`script`,fontName:`Script-Regular`},mathsf:{variant:`sans-serif`,fontName:`SansSerif-Regular`},mathtt:{variant:`monospace`,fontName:`Typewriter-Regular`}},$i={vec:[`vec`,.471,.714],oiintSize1:[`oiintSize1`,.957,.499],oiintSize2:[`oiintSize2`,1.472,.659],oiiintSize1:[`oiiintSize1`,1.304,.499],oiiintSize2:[`oiiintSize2`,1.98,.659]},ea=function(e,t){var n=$i[e],r=n[0],i=n[1],a=n[2],o=Ui([`katex-overlay`],[new Ir([new Lr(r)],{width:I(i),height:I(a),style:`width:`+I(i),viewBox:`0 0 `+1e3*i+` `+1e3*a,preserveAspectRatio:`xMinYMin`})],t);return o.height=a,o.style.height=I(a),o.style.width=I(i),o},ta={number:3,unit:`mu`},na={number:4,unit:`mu`},ra={number:5,unit:`mu`},ia={mord:{mop:ta,mbin:na,mrel:ra,minner:ta},mop:{mord:ta,mop:ta,mrel:ra,minner:ta},mbin:{mord:na,mop:na,mopen:na,minner:na},mrel:{mord:ra,mop:ra,mopen:ra,minner:ra},mopen:{},mclose:{mop:ta,mbin:na,mrel:ra,minner:ta},mpunct:{mord:ta,mop:ta,mrel:ra,mopen:ta,mclose:ta,mpunct:ta,minner:ta},minner:{mord:ta,mop:ta,mbin:na,mrel:ra,mopen:ta,mpunct:ta,minner:ta}},aa={mord:{mop:ta},mop:{mord:ta,mop:ta},mbin:{},mrel:{},mopen:{},mclose:{mop:ta},mpunct:{},minner:{mop:ta}},oa={},sa={},ca={};function J(e){for(var t=e.type,n=e.names,r=e.htmlBuilder,i=e.mathmlBuilder,a=0;a<n.length;++a)oa[n[a]]=e;t&&(r&&(sa[t]=r),i&&(ca[t]=i))}function la(e){var t=e.type,n=e.htmlBuilder,r=e.mathmlBuilder;n&&(sa[t]=n),r&&(ca[t]=r)}var ua=function(e){return e.type===`ordgroup`&&e.body.length===1?e.body[0]:e},da=function(e){return e.type===`ordgroup`?e.body:[e]},fa=new Set([`leftmost`,`mbin`,`mopen`,`mrel`,`mop`,`mpunct`]),pa=new Set([`rightmost`,`mrel`,`mclose`,`mpunct`]),ma={display:F.DISPLAY,text:F.TEXT,script:F.SCRIPT,scriptscript:F.SCRIPTSCRIPT},ha={mord:`mord`,mop:`mop`,mbin:`mbin`,mrel:`mrel`,mopen:`mopen`,mclose:`mclose`,mpunct:`mpunct`,minner:`minner`},ga=function(e,t,n,r){r===void 0&&(r=[null,null]);for(var i=[],a=0;a<e.length;a++){var o=Sa(e[a],t);if(o instanceof br){var s=o.children;i.push(...s)}else i.push(o)}if(Vi(i),!n)return i;var c=t;if(e.length===1){var l=e[0];l.type===`sizing`?c=t.havingSize(l.size):l.type===`styling`&&(c=t.havingStyle(ma[l.style]))}var u=q([r[0]||`leftmost`],[],t),d=q([r[1]||`rightmost`],[],t),f=n===`root`;return _a(i,(e,t)=>{var n=t.classes[0],r=e.classes[0];n===`mbin`&&pa.has(r)?t.classes[0]=`mord`:r===`mbin`&&fa.has(n)&&(e.classes[0]=`mord`)},{node:u},d,f),_a(i,(e,t)=>{var n=ba(t),r=ba(e),i=n&&r?e.hasClass(`mtight`)?aa[n]?.[r]:ia[n]?.[r]:null;if(i)return Xi(i,c)},{node:u},d,f),i},_a=function(e,t,n,r,i){r&&e.push(r);for(var a=0;a<e.length;a++){var o=e[a],s=va(o);if(s){_a(s.children,t,n,null,i);continue}var c=!o.hasClass(`mspace`);if(c){var l=t(o,n.node);l&&(n.insertAfter?n.insertAfter(l):(e.unshift(l),a++))}c?n.node=o:i&&o.hasClass(`katex-newline`)&&(n.node=q([`leftmost`])),n.insertAfter=(t=>n=>{e.splice(t+1,0,n),a++})(a)}r&&e.pop()},va=function(e){return e instanceof br||e instanceof Mr||e instanceof jr&&e.hasClass(`enclosing`)?e:null},ya=function(e,t){var n=va(e);if(n){var r=n.children;if(r.length){if(t===`right`)return ya(r[r.length-1],`right`);if(t===`left`)return ya(r[0],`left`)}}return e},ba=function(e,t){return e?(t&&(e=ya(e,t)),ha[e.classes[0]]||null):null},xa=function(e,t){var n=[`nulldelimiter`].concat(e.baseSizingClasses());return q(t.concat(n))},Sa=function(e,t,n){if(!e)return q();if(sa[e.type]){var r=sa[e.type](e,t);if(n&&t.size!==n.size){r=q(t.sizingClasses(n),[r],t);var i=t.sizeMultiplier/n.sizeMultiplier;r.height*=i,r.depth*=i}return r}else throw new P(`Got group of unknown type: '`+e.type+`'`)};function Ca(e,t){var n=q([`katex-base`],e,t),r=q([`katex-strut`]);return r.style.height=I(n.height+n.depth),n.depth&&(r.style.verticalAlign=I(-n.depth)),n.children.unshift(r),n}function wa(e,t){var n=null;e.length===1&&e[0].type===`tag`&&(n=e[0].tag,e=e[0].body);var r=ga(e,t,`root`),i;r.length===2&&r[1].hasClass(`katex-tag`)&&(i=r.pop());for(var a=[],o=[],s=0;s<r.length;s++)if(o.push(r[s]),r[s].hasClass(`mbin`)||r[s].hasClass(`mrel`)||r[s].hasClass(`allowbreak`)){for(var c=!1;s<r.length-1&&r[s+1].hasClass(`mspace`)&&!r[s+1].hasClass(`katex-newline`);)s++,o.push(r[s]),r[s].hasClass(`nobreak`)&&(c=!0);c||(a.push(Ca(o,t)),o=[])}else r[s].hasClass(`katex-newline`)&&(o.pop(),o.length>0&&(a.push(Ca(o,t)),o=[]),a.push(r[s]));o.length>0&&a.push(Ca(o,t));var l;n?(l=Ca(ga(n,t,!0),t),l.classes=[`katex-tag`],a.push(l)):i&&a.push(i);var u=q([`katex-html`],a);if(u.setAttribute(`aria-hidden`,`true`),l){var d=l.children[0];d.style.height=I(u.height+u.depth),u.depth&&(d.style.verticalAlign=I(-u.depth))}return u}function Ta(e){return new br(e)}var Y=class{constructor(e,t,n){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=t||[],this.classes=n||[]}setAttribute(e,t){this.attributes[e]=t}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS(`http://www.w3.org/1998/Math/MathML`,this.type);for(var t of Object.entries(this.attributes)){var n=t[0],r=t[1];e.setAttribute(n,r)}this.classes.length>0&&(e.className=Tr(this.classes));for(var i=0;i<this.children.length;i++)if(this.children[i]instanceof Ea&&this.children[i+1]instanceof Ea){for(var a=this.children[i].toText()+this.children[++i].toText();this.children[i+1]instanceof Ea;)a+=this.children[++i].toText();e.appendChild(new Ea(a).toNode())}else e.appendChild(this.children[i].toNode());return e}toMarkup(){var e=`<`+this.type;for(var t of Object.entries(this.attributes)){var n=t[0],r=t[1];e+=` `+n+`="`,e+=An(r),e+=`"`}this.classes.length>0&&(e+=` class ="`+An(Tr(this.classes))+`"`),e+=`>`;for(var i=0;i<this.children.length;i++)e+=this.children[i].toMarkup();return e+=`</`+this.type+`>`,e}toText(){return this.children.map(e=>e.toText()).join(``)}},Ea=class{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return An(this.toText())}toText(){return this.text}},Da=class{constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character=` `:e>=.1666&&e<=.1667?this.character=` `:e>=.2222&&e<=.2223?this.character=` `:e>=.2777&&e<=.2778?this.character=`  `:e>=-.05556&&e<=-.05555?this.character=` ⁣`:e>=-.1667&&e<=-.1666?this.character=` ⁣`:e>=-.2223&&e<=-.2222?this.character=` ⁣`:e>=-.2778&&e<=-.2777?this.character=` ⁣`:this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS(`http://www.w3.org/1998/Math/MathML`,`mspace`);return e.setAttribute(`width`,I(this.width)),e}toMarkup(){return this.character?`<mtext>`+this.character+`</mtext>`:`<mspace width="`+I(this.width)+`"/>`}toText(){return this.character?this.character:` `}},Oa=new Set([`\\imath`,`\\jmath`]),ka=new Set([`mrow`,`mtable`]),Aa=function(e,t,n){var r,i;return Yr[t][e]&&Yr[t][e].replace&&e.charCodeAt(0)!==55349&&!(Object.prototype.hasOwnProperty.call(ri,e)&&((n==null||(r=n.fontFamily)==null?void 0:r.slice(4,6))===`tt`||(n==null||(i=n.font)==null?void 0:i.slice(4,6))===`tt`))&&(e=Yr[t][e].replace),new Ea(e)},ja=function(e){return e.length===1?e[0]:new Y(`mrow`,e)},Ma={mathit:`italic`,boldsymbol:e=>e.type===`textord`?`bold`:`bold-italic`,mathbf:`bold`,mathbb:`double-struck`,mathsfit:`sans-serif-italic`,mathfrak:`fraktur`,mathscr:`script`,mathcal:`script`,mathsf:`sans-serif`,mathtt:`monospace`},Na=(e,t)=>{if(e.mode===`text`){if(t.fontFamily===`texttt`)return`monospace`;if(t.fontFamily===`textsf`)return t.fontShape===`textit`&&t.fontWeight===`textbf`?`sans-serif-bold-italic`:t.fontShape===`textit`?`sans-serif-italic`:t.fontWeight===`textbf`?`bold-sans-serif`:`sans-serif`;if(t.fontShape===`textit`&&t.fontWeight===`textbf`)return`bold-italic`;if(t.fontShape===`textit`)return`italic`;if(t.fontWeight===`textbf`)return`bold`}var n=t.font;if(!n||n===`mathnormal`)return null;var r=e.mode,i=Ma[n];if(i)return typeof i==`function`?i(e):i;var a=e.text;if(Oa.has(a))return null;if(Yr[r][a]){var o=Yr[r][a].replace;o&&(a=o)}var s=Qi[n].fontName;return Kr(a,s,r)?Qi[n].variant:null};function Pa(e){if(!e)return!1;if(e.type===`mi`&&e.children.length===1){var t=e.children[0];return t instanceof Ea&&t.text===`.`}else if(e.type===`mo`&&e.children.length===1&&e.getAttribute(`separator`)===`true`&&e.getAttribute(`lspace`)===`0em`&&e.getAttribute(`rspace`)===`0em`){var n=e.children[0];return n instanceof Ea&&n.text===`,`}else return!1}var Fa=function(e,t,n){if(e.length===1){var r=La(e[0],t);return n&&r instanceof Y&&r.type===`mo`&&(r.setAttribute(`lspace`,`0em`),r.setAttribute(`rspace`,`0em`)),[r]}for(var i=[],a,o=0;o<e.length;o++){var s=La(e[o],t);if(s instanceof Y&&a instanceof Y){if(s.type===`mtext`&&a.type===`mtext`&&s.getAttribute(`mathvariant`)===a.getAttribute(`mathvariant`)){a.children.push(...s.children);continue}else if(s.type===`mn`&&a.type===`mn`){a.children.push(...s.children);continue}else if(Pa(s)&&a.type===`mn`){a.children.push(...s.children);continue}else if(s.type===`mn`&&Pa(a))s.children=[...a.children,...s.children],i.pop();else if((s.type===`msup`||s.type===`msub`)&&s.children.length>=1&&(a.type===`mn`||Pa(a))){var c=s.children[0];c instanceof Y&&c.type===`mn`&&(c.children=[...a.children,...c.children],i.pop())}else if(a.type===`mi`&&a.children.length===1){var l=a.children[0];if(l instanceof Ea&&l.text===`̸`&&(s.type===`mo`||s.type===`mi`||s.type===`mn`)){var u=s.children[0];u instanceof Ea&&u.text.length>0&&(u.text=u.text.slice(0,1)+`̸`+u.text.slice(1),i.pop())}}}i.push(s),a=s}return i},Ia=function(e,t,n){return ja(Fa(e,t,n))},La=function(e,t){if(!e)return new Y(`mrow`);if(ca[e.type])return ca[e.type](e,t);throw new P(`Got group of unknown type: '`+e.type+`'`)};function Ra(e,t,n,r,i){var a=Fa(e,n),o=a.length===1&&a[0]instanceof Y&&ka.has(a[0].type)?a[0]:new Y(`mrow`,a),s=new Y(`annotation`,[new Ea(t)]);s.setAttribute(`encoding`,`application/x-tex`);var c=new Y(`math`,[new Y(`semantics`,[o,s])]);return c.setAttribute(`xmlns`,`http://www.w3.org/1998/Math/MathML`),r&&c.setAttribute(`display`,`block`),q([i?`katex`:`katex-mathml`],[c])}var za=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],Ba=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],Va=function(e,t){return t.size<2?e:za[e-1][t.size-1]},Ha=class e{constructor(t){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=t.style,this.color=t.color,this.size=t.size||e.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||``,this.fontFamily=t.fontFamily||``,this.fontWeight=t.fontWeight||``,this.fontShape=t.fontShape||``,this.sizeMultiplier=Ba[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}extend(t){var n={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};return Object.assign(n,t),new e(n)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:Va(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:Ba[e-1]})}havingBaseStyle(t){t||=this.style.text();var n=Va(e.BASESIZE,t);return this.size===n&&this.textSize===e.BASESIZE&&this.style===t?this:this.extend({style:t,size:n})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:``})}withTextFontWeight(e){return this.extend({fontWeight:e,font:``})}withTextFontShape(e){return this.extend({fontShape:e,font:``})}sizingClasses(e){return e.size===this.size?[]:[`katex-sizing`,`reset-size`+e.size,`size`+this.size]}baseSizingClasses(){return this.size===e.BASESIZE?[]:[`katex-sizing`,`reset-size`+this.size,`size`+e.BASESIZE]}fontMetrics(){return this._fontMetrics||=Jr(this.size),this._fontMetrics}getColor(){return this.phantom?`transparent`:this.color}};Ha.BASESIZE=6;var Ua=function(e){return new Ha({style:e.displayMode?F.DISPLAY:F.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},Wa=function(e,t){if(t.displayMode){var n=[`katex-display`];t.leqno&&n.push(`leqno`),t.fleqn&&n.push(`fleqn`),e=q(n,[e])}return e},Ga=function(e,t,n){var r=Ua(n),i;return n.output===`mathml`?Ra(e,t,r,n.displayMode,!0):(i=n.output===`html`?q([`katex`],[wa(e,r)]):q([`katex`],[Ra(e,t,r,n.displayMode,!1),wa(e,r)]),Wa(i,n))},Ka=function(e,t,n){return Wa(q([`katex`],[wa(e,Ua(n))]),n)},qa={widehat:`^`,widecheck:`ˇ`,widetilde:`~`,utilde:`~`,overleftarrow:`←`,underleftarrow:`←`,xleftarrow:`←`,overrightarrow:`→`,underrightarrow:`→`,xrightarrow:`→`,underbrace:`⏟`,overbrace:`⏞`,underbracket:`⎵`,overbracket:`⎴`,overgroup:`⏠`,undergroup:`⏡`,overleftrightarrow:`↔`,underleftrightarrow:`↔`,xleftrightarrow:`↔`,Overrightarrow:`⇒`,xRightarrow:`⇒`,overleftharpoon:`↼`,xleftharpoonup:`↼`,overrightharpoon:`⇀`,xrightharpoonup:`⇀`,xLeftarrow:`⇐`,xLeftrightarrow:`⇔`,xhookleftarrow:`↩`,xhookrightarrow:`↪`,xmapsto:`↦`,xrightharpoondown:`⇁`,xleftharpoondown:`↽`,xrightleftharpoons:`⇌`,xleftrightharpoons:`⇋`,xtwoheadleftarrow:`↞`,xtwoheadrightarrow:`↠`,xlongequal:`=`,xtofrom:`⇄`,xrightleftarrows:`⇄`,xrightequilibrium:`⇌`,xleftequilibrium:`⇋`,"\\cdrightarrow":`→`,"\\cdleftarrow":`←`,"\\cdlongequal":`=`},Ja=function(e){var t=new Y(`mo`,[new Ea(qa[e.replace(/^\\/,``)])]);return t.setAttribute(`stretchy`,`true`),t},Ya={overrightarrow:[[`rightarrow`],.888,522,`xMaxYMin`],overleftarrow:[[`leftarrow`],.888,522,`xMinYMin`],underrightarrow:[[`rightarrow`],.888,522,`xMaxYMin`],underleftarrow:[[`leftarrow`],.888,522,`xMinYMin`],xrightarrow:[[`rightarrow`],1.469,522,`xMaxYMin`],"\\cdrightarrow":[[`rightarrow`],3,522,`xMaxYMin`],xleftarrow:[[`leftarrow`],1.469,522,`xMinYMin`],"\\cdleftarrow":[[`leftarrow`],3,522,`xMinYMin`],Overrightarrow:[[`doublerightarrow`],.888,560,`xMaxYMin`],xRightarrow:[[`doublerightarrow`],1.526,560,`xMaxYMin`],xLeftarrow:[[`doubleleftarrow`],1.526,560,`xMinYMin`],overleftharpoon:[[`leftharpoon`],.888,522,`xMinYMin`],xleftharpoonup:[[`leftharpoon`],.888,522,`xMinYMin`],xleftharpoondown:[[`leftharpoondown`],.888,522,`xMinYMin`],overrightharpoon:[[`rightharpoon`],.888,522,`xMaxYMin`],xrightharpoonup:[[`rightharpoon`],.888,522,`xMaxYMin`],xrightharpoondown:[[`rightharpoondown`],.888,522,`xMaxYMin`],xlongequal:[[`longequal`],.888,334,`xMinYMin`],"\\cdlongequal":[[`longequal`],3,334,`xMinYMin`],xtwoheadleftarrow:[[`twoheadleftarrow`],.888,334,`xMinYMin`],xtwoheadrightarrow:[[`twoheadrightarrow`],.888,334,`xMaxYMin`],overleftrightarrow:[[`leftarrow`,`rightarrow`],.888,522],overbrace:[[`leftbrace`,`midbrace`,`rightbrace`],1.6,548],underbrace:[[`leftbraceunder`,`midbraceunder`,`rightbraceunder`],1.6,548],underleftrightarrow:[[`leftarrow`,`rightarrow`],.888,522],xleftrightarrow:[[`leftarrow`,`rightarrow`],1.75,522],xLeftrightarrow:[[`doubleleftarrow`,`doublerightarrow`],1.75,560],xrightleftharpoons:[[`leftharpoondownplus`,`rightharpoonplus`],1.75,716],xleftrightharpoons:[[`leftharpoonplus`,`rightharpoondownplus`],1.75,716],xhookleftarrow:[[`leftarrow`,`righthook`],1.08,522],xhookrightarrow:[[`lefthook`,`rightarrow`],1.08,522],overlinesegment:[[`leftlinesegment`,`rightlinesegment`],.888,522],underlinesegment:[[`leftlinesegment`,`rightlinesegment`],.888,522],overbracket:[[`leftbracketover`,`rightbracketover`],1.6,440],underbracket:[[`leftbracketunder`,`rightbracketunder`],1.6,410],overgroup:[[`leftgroup`,`rightgroup`],.888,342],undergroup:[[`leftgroupunder`,`rightgroupunder`],.888,342],xmapsto:[[`leftmapsto`,`rightarrow`],1.5,522],xtofrom:[[`leftToFrom`,`rightToFrom`],1.75,528],xrightleftarrows:[[`baraboveleftarrow`,`rightarrowabovebar`],1.75,901],xrightequilibrium:[[`baraboveshortleftharpoon`,`rightharpoonaboveshortbar`],1.75,716],xleftequilibrium:[[`shortbaraboveleftharpoon`,`shortrightharpoonabovebar`],1.75,716]},Xa=new Set([`widehat`,`widecheck`,`widetilde`,`utilde`]),Za=function(e,t){function n(){var n=4e5,r=e.label.slice(1);if(Xa.has(r)&&`base`in e){var i=e.base.type===`ordgroup`?e.base.body.length:1,a,o,s;if(i>5)r===`widehat`||r===`widecheck`?(a=420,n=2364,s=.42,o=r+`4`):(a=312,n=2340,s=.34,o=`tilde4`);else{var c=[1,1,2,2,3,3][i];r===`widehat`||r===`widecheck`?(n=[0,1062,2364,2364,2364][c],a=[0,239,300,360,420][c],s=[0,.24,.3,.3,.36,.42][c],o=r+c):(n=[0,600,1033,2339,2340][c],a=[0,260,286,306,312][c],s=[0,.26,.286,.3,.306,.34][c],o=`tilde`+c)}return{span:Ui([],[new Ir([new Lr(o)],{width:`100%`,height:I(s),viewBox:`0 0 `+n+` `+a,preserveAspectRatio:`none`})],t),minWidth:0,height:s}}else{var l=[],u=Ya[r];if(!u)throw Error(`No SVG data for "`+r+`".`);var d=u[0],f=u[1],p=u[2],m=p/1e3,h=d.length,g,_;if(h===1){if(u.length!==4)throw Error(`Expected 4-tuple for single-path SVG data "`+r+`".`);g=[`hide-tail`],_=[u[3]]}else if(h===2)g=[`halfarrow-left`,`halfarrow-right`],_=[`xMinYMin`,`xMaxYMin`];else if(h===3)g=[`brace-left`,`brace-center`,`brace-right`],_=[`xMinYMin`,`xMidYMin`,`xMaxYMin`];else throw Error(`Correct katexImagesData or update code here to support
259
- `+h+` children.`);for(var v=0;v<h;v++){var y=new Ir([new Lr(d[v])],{width:`400em`,height:I(m),viewBox:`0 0 `+n+` `+p,preserveAspectRatio:_[v]+` slice`}),b=Ui([g[v]],[y],t);if(h===1)return{span:b,minWidth:f,height:m};b.style.height=I(m),l.push(b)}return{span:q([`katex-stretchy`],l,t),minWidth:f,height:m}}}var r=n(),i=r.span,a=r.minWidth,o=r.height;return i.height=o,i.style.height=I(o),a>0&&(i.style.minWidth=I(a)),i},Qa=function(e,t,n,r,i){var a,o=e.height+e.depth+n+r;if(/fbox|color|angl/.test(t)){if(a=q([`katex-stretchy`,t],[],i),t===`fbox`){var s=i.color&&i.getColor();s&&(a.style.borderColor=s)}}else{var c=[];/^[bx]cancel$/.test(t)&&c.push(new Rr({x1:`0`,y1:`0`,x2:`100%`,y2:`100%`,"stroke-width":`0.046em`})),/^x?cancel$/.test(t)&&c.push(new Rr({x1:`0`,y1:`100%`,x2:`100%`,y2:`0`,"stroke-width":`0.046em`})),a=Ui([],[new Ir(c,{width:`100%`,height:I(o)})],i)}return a.height=o,a.style.height=I(o),a},$a=[`bin`,`close`,`inner`,`open`,`punct`,`rel`],eo=[`accent-token`,`mathord`,`op-token`,`spacing`,`textord`],to=new Set($a),no=new Set(eo);function ro(e){return to.has(e)}function X(e,t){if(!e||e.type!==t)throw Error(`Expected node of type `+t+`, but got `+(e?`node of type `+e.type:String(e)));return e}function io(e){var t=ao(e);if(!t)throw Error(`Expected node of symbol group type, but got `+(e?`node of type `+e.type:String(e)));return t}function ao(e){return e.type===`atom`||no.has(e.type)?e:null}function oo(e,t,n){var r=``;for(var i of e.body)if(i.type===`textord`)r+=i.text;else if(n&&i.type===`spacing`&&i.text===` `)r+=` `;else throw new P(t,e);return r}var so=e=>{if(e instanceof Fr)return e;if(Vr(e)&&e.children.length===1)return so(e.children[0])},co=(e,t)=>{var n,r,i;e&&e.type===`supsub`?(r=X(e.base,`accent`),n=r.base,e.base=n,i=Br(Sa(e,t)),e.base=r):(r=X(e,`accent`),n=r.base);var a=Sa(n,t.havingCrampedStyle()),o=r.isShifty&&Nn(n),s=0;o&&(s=so(a)?.skew??0);var c=r.label===`\\c`,l=c?a.height+a.depth:Math.min(a.height,t.fontMetrics().xHeight),u;if(r.isStretchy)u=Za(r,t),u=Yi({positionType:`firstBaseline`,children:[{type:`elem`,elem:a},{type:`elem`,elem:u,wrapperClasses:[`svg-align`],wrapperStyle:s>0?{width:`calc(100% - `+I(2*s)+`)`,marginLeft:I(2*s)}:void 0}]});else{var d,f;r.label===`\\vec`?(d=ea(`vec`,t),f=$i.vec[1]):(d=zi({type:`textord`,mode:r.mode,text:r.label},t),d=zr(d),d.italic=0,f=d.width,c&&(l+=d.depth)),u=q([`accent-body`],[d]);var p=r.label===`\\textcircled`;p&&(u.classes.push(`accent-full`),l=a.height);var m=s;p||(m-=f/2),u.style.left=I(m),r.label===`\\textcircled`&&(u.style.top=`.2em`),u=Yi({positionType:`firstBaseline`,children:[{type:`elem`,elem:a},{type:`kern`,size:-l},{type:`elem`,elem:u}]})}var h=q([`mord`,`katex-accent`],[u],t);return i?(i.children[0]=h,i.height=Math.max(h.height,i.height),i.classes[0]=`mord`,i):h},lo=(e,t)=>{var n=e.isStretchy?Ja(e.label):new Y(`mo`,[Aa(e.label,e.mode)]),r=new Y(`mover`,[La(e.base,t),n]);return r.setAttribute(`accent`,`true`),r},uo=new RegExp([`\\acute`,`\\grave`,`\\ddot`,`\\tilde`,`\\bar`,`\\breve`,`\\check`,`\\hat`,`\\vec`,`\\dot`,`\\mathring`].map(e=>`\\`+e).join(`|`));J({type:`accent`,names:[`\\acute`,`\\grave`,`\\ddot`,`\\tilde`,`\\bar`,`\\breve`,`\\check`,`\\hat`,`\\vec`,`\\dot`,`\\mathring`,`\\widecheck`,`\\widehat`,`\\widetilde`,`\\overrightarrow`,`\\overleftarrow`,`\\Overrightarrow`,`\\overleftrightarrow`,`\\overgroup`,`\\overlinesegment`,`\\overleftharpoon`,`\\overrightharpoon`],numArgs:1,handler:(e,t)=>{var n=ua(t[0]),r=!uo.test(e.funcName),i=!r||e.funcName===`\\widehat`||e.funcName===`\\widetilde`||e.funcName===`\\widecheck`;return{type:`accent`,mode:e.parser.mode,label:e.funcName,isStretchy:r,isShifty:i,base:n}},htmlBuilder:co,mathmlBuilder:lo}),J({type:`accent`,names:[`\\'`,"\\`",`\\^`,`\\~`,`\\=`,`\\u`,`\\.`,`\\"`,`\\c`,`\\r`,`\\H`,`\\v`,`\\textcircled`],numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:[`primitive`],handler:(e,t)=>{var n=t[0],r=e.parser.mode;return r===`math`&&(e.parser.settings.reportNonstrict(`mathVsTextAccents`,`LaTeX's accent `+e.funcName+` works only in text mode`),r=`text`),{type:`accent`,mode:r,label:e.funcName,isStretchy:!1,isShifty:!0,base:n}}}),J({type:`accentUnder`,names:[`\\underleftarrow`,`\\underrightarrow`,`\\underleftrightarrow`,`\\undergroup`,`\\underlinesegment`,`\\utilde`],numArgs:1,handler:(e,t)=>{var n=e.parser,r=e.funcName,i=t[0];return{type:`accentUnder`,mode:n.mode,label:r,base:i}},htmlBuilder:(e,t)=>{var n=Sa(e.base,t),r=Za(e,t),i=e.label===`\\utilde`?.12:0;return q([`mord`,`accentunder`],[Yi({positionType:`top`,positionData:n.height,children:[{type:`elem`,elem:r,wrapperClasses:[`svg-align`]},{type:`kern`,size:i},{type:`elem`,elem:n}]})],t)},mathmlBuilder:(e,t)=>{var n=Ja(e.label),r=new Y(`munder`,[La(e.base,t),n]);return r.setAttribute(`accentunder`,`true`),r}});var fo=e=>{var t=new Y(`mpadded`,e?[e]:[]);return t.setAttribute(`width`,`+0.6em`),t.setAttribute(`lspace`,`0.3em`),t};J({type:`xArrow`,names:[`\\xleftarrow`,`\\xrightarrow`,`\\xLeftarrow`,`\\xRightarrow`,`\\xleftrightarrow`,`\\xLeftrightarrow`,`\\xhookleftarrow`,`\\xhookrightarrow`,`\\xmapsto`,`\\xrightharpoondown`,`\\xrightharpoonup`,`\\xleftharpoondown`,`\\xleftharpoonup`,`\\xrightleftharpoons`,`\\xleftrightharpoons`,`\\xlongequal`,`\\xtwoheadrightarrow`,`\\xtwoheadleftarrow`,`\\xtofrom`,`\\xrightleftarrows`,`\\xrightequilibrium`,`\\xleftequilibrium`,`\\\\cdrightarrow`,`\\\\cdleftarrow`,`\\\\cdlongequal`],numArgs:1,numOptionalArgs:1,handler(e,t,n){var r=e.parser,i=e.funcName;return{type:`xArrow`,mode:r.mode,label:i,body:t[0],below:n[0]}},htmlBuilder(e,t){var n=t.style,r=t.havingStyle(n.sup()),i=qi(Sa(e.body,r,t),t),a=e.label.slice(0,2)===`\\x`?`x`:`cd`;i.classes.push(a+`-arrow-pad`);var o;e.below&&(r=t.havingStyle(n.sub()),o=qi(Sa(e.below,r,t),t),o.classes.push(a+`-arrow-pad`));var s=Za(e,t),c=-t.fontMetrics().axisHeight+.5*s.height,l=-t.fontMetrics().axisHeight-.5*s.height-.111;(i.depth>.25||e.label===`\\xleftequilibrium`)&&(l-=i.depth);var u;if(o){var d=-t.fontMetrics().axisHeight+o.height+.5*s.height+.111;u=Yi({positionType:`individualShift`,children:[{type:`elem`,elem:i,shift:l},{type:`elem`,elem:s,shift:c,wrapperClasses:[`svg-align`]},{type:`elem`,elem:o,shift:d}]})}else u=Yi({positionType:`individualShift`,children:[{type:`elem`,elem:i,shift:l},{type:`elem`,elem:s,shift:c,wrapperClasses:[`svg-align`]}]});return q([`mrel`,`x-arrow`],[u],t)},mathmlBuilder(e,t){var n=Ja(e.label);n.setAttribute(`minsize`,e.label.charAt(0)===`x`?`1.75em`:`3.0em`);var r;if(e.body){var i=fo(La(e.body,t));r=e.below?new Y(`munderover`,[n,fo(La(e.below,t)),i]):new Y(`mover`,[n,i])}else e.below?r=new Y(`munder`,[n,fo(La(e.below,t))]):(r=fo(),r=new Y(`mover`,[n,r]));return r}});function po(e,t){var n=ga(e.body,t,!0);return q([e.mclass],n,t)}function mo(e,t){var n,r=Fa(e.body,t);return e.mclass===`minner`?n=new Y(`mpadded`,r):e.mclass===`mord`?e.isCharacterBox?(n=r[0],n.type=`mi`):n=new Y(`mi`,r):(e.isCharacterBox?(n=r[0],n.type=`mo`):n=new Y(`mo`,r),e.mclass===`mbin`?(n.attributes.lspace=`0.22em`,n.attributes.rspace=`0.22em`):e.mclass===`mpunct`?(n.attributes.lspace=`0em`,n.attributes.rspace=`0.17em`):(e.mclass===`mopen`||e.mclass===`mclose`)&&(n.attributes.lspace=`0em`,n.attributes.rspace=`0em`)),n}J({type:`mclass`,names:[`\\mathord`,`\\mathbin`,`\\mathrel`,`\\mathopen`,`\\mathclose`,`\\mathpunct`,`\\mathinner`],numArgs:1,primitive:!0,handler(e,t){var n=e.parser,r=e.funcName,i=t[0];return{type:`mclass`,mode:n.mode,mclass:`m`+r.slice(5),body:da(i),isCharacterBox:Nn(i)}},htmlBuilder:po,mathmlBuilder:mo});var ho=e=>{var t=e.type===`ordgroup`&&e.body.length?e.body[0]:e;return t.type===`atom`&&(t.family===`bin`||t.family===`rel`)?`m`+t.family:`mord`};J({type:`mclass`,names:[`\\@binrel`],numArgs:2,handler(e,t){return{type:`mclass`,mode:e.parser.mode,mclass:ho(t[0]),body:da(t[1]),isCharacterBox:Nn(t[1])}}}),J({type:`mclass`,names:[`\\stackrel`,`\\overset`,`\\underset`],numArgs:2,handler(e,t){var n=e.parser,r=e.funcName,i=t[1],a=t[0],o=r===`\\stackrel`?`mrel`:ho(i),s={type:`op`,mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:r!==`\\stackrel`,body:da(i)},c=r===`\\underset`?{type:`supsub`,mode:a.mode,base:s,sub:a}:{type:`supsub`,mode:a.mode,base:s,sup:a};return{type:`mclass`,mode:n.mode,mclass:o,body:[c],isCharacterBox:Nn(c)}}}),J({type:`pmb`,names:[`\\pmb`],numArgs:1,allowedInText:!0,handler(e,t){return{type:`pmb`,mode:e.parser.mode,mclass:ho(t[0]),body:da(t[0])}},htmlBuilder(e,t){var n=ga(e.body,t,!0),r=q([e.mclass],n,t);return r.style.textShadow=`0.02em 0.01em 0.04px`,r},mathmlBuilder(e,t){var n=new Y(`mstyle`,Fa(e.body,t));return n.setAttribute(`style`,`text-shadow: 0.02em 0.01em 0.04px`),n}});var go={">":`\\\\cdrightarrow`,"<":`\\\\cdleftarrow`,"=":`\\\\cdlongequal`,A:`\\uparrow`,V:`\\downarrow`,"|":`\\Vert`,".":`no arrow`},_o=()=>({type:`styling`,body:[],mode:`math`,style:`display`,resetFont:!0}),vo=e=>e.type===`textord`&&e.text===`@`,yo=(e,t)=>(e.type===`mathord`||e.type===`atom`)&&e.text===t;function bo(e,t,n){var r=go[e];switch(r){case`\\\\cdrightarrow`:case`\\\\cdleftarrow`:return n.callFunction(r,[t[0]],[t[1]]);case`\\uparrow`:case`\\downarrow`:var i=n.callFunction(`\\\\cdleft`,[t[0]],[]),a={type:`atom`,text:r,mode:`math`,family:`rel`},o={type:`ordgroup`,mode:`math`,body:[i,n.callFunction(`\\Big`,[a],[]),n.callFunction(`\\\\cdright`,[t[1]],[])]};return n.callFunction(`\\\\cdparent`,[o],[]);case`\\\\cdlongequal`:return n.callFunction(`\\\\cdlongequal`,[],[]);case`\\Vert`:return n.callFunction(`\\Big`,[{type:`textord`,text:`\\Vert`,mode:`math`}],[]);default:return{type:`textord`,text:` `,mode:`math`}}}function xo(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set(`\\cr`,`\\\\\\relax`),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,`\\\\`)),e.gullet.endGroup(),e.gullet.beginGroup();var n=e.fetch().text;if(n===`&`||n===`\\\\`)e.consume();else if(n===`\\end`){t[t.length-1].length===0&&t.pop();break}else throw new P(`Expected \\\\ or \\cr or \\end`,e.nextToken)}for(var r=[],i=[r],a=0;a<t.length;a++){for(var o=t[a],s=_o(),c=0;c<o.length;c++)if(!vo(o[c]))s.body.push(o[c]);else{r.push(s),c+=1;var l=io(o[c]).text,u=[,,];if(u[0]={type:`ordgroup`,mode:`math`,body:[]},u[1]={type:`ordgroup`,mode:`math`,body:[]},!`=|.`.includes(l))if(`<>AV`.includes(l))for(var d=0;d<2;d++){for(var f=!0,p=c+1;p<o.length;p++){if(yo(o[p],l)){f=!1,c=p;break}if(vo(o[p]))throw new P(`Missing a `+l+` character to complete a CD arrow.`,o[p]);u[d].body.push(o[p])}if(f)throw new P(`Missing a `+l+` character to complete a CD arrow.`,o[c])}else throw new P(`Expected one of "<>AV=|." after @`,o[c]);var m={type:`styling`,body:[bo(l,u,e)],mode:`math`,style:`display`,resetFont:!0};r.push(m),s=_o()}a%2==0?r.push(s):r.shift(),r=[],i.push(r)}return e.gullet.endGroup(),e.gullet.endGroup(),{type:`array`,mode:`math`,body:i,arraystretch:1,addJot:!0,rowGaps:[null],cols:Array(i[0].length).fill({type:`align`,align:`c`,pregap:.25,postgap:.25}),colSeparationType:`CD`,hLinesBeforeRow:Array(i.length+1).fill([])}}J({type:`cdlabel`,names:[`\\\\cdleft`,`\\\\cdright`],numArgs:1,handler(e,t){var n=e.parser,r=e.funcName;return{type:`cdlabel`,mode:n.mode,side:r.slice(4),label:t[0]}},htmlBuilder(e,t){var n=t.havingStyle(t.style.sup()),r=qi(Sa(e.label,n,t),t);return r.classes.push(`cd-label-`+e.side),r.style.bottom=I(.8-r.depth),r.height=0,r.depth=0,r},mathmlBuilder(e,t){var n=new Y(`mrow`,[La(e.label,t)]);return n=new Y(`mpadded`,[n]),n.setAttribute(`width`,`0`),e.side===`left`&&n.setAttribute(`lspace`,`-1width`),n.setAttribute(`voffset`,`0.7em`),n=new Y(`mstyle`,[n]),n.setAttribute(`displaystyle`,`false`),n.setAttribute(`scriptlevel`,`1`),n}}),J({type:`cdlabelparent`,names:[`\\\\cdparent`],numArgs:1,handler(e,t){return{type:`cdlabelparent`,mode:e.parser.mode,fragment:t[0]}},htmlBuilder(e,t){var n=qi(Sa(e.fragment,t),t);return n.classes.push(`cd-vert-arrow`),n},mathmlBuilder(e,t){return new Y(`mrow`,[La(e.fragment,t)])}}),J({type:`textord`,names:[`\\@char`],numArgs:1,allowedInText:!0,handler(e,t){var n=e.parser,r=oo(X(t[0],`ordgroup`),`\\@char has non-numeric argument`),i=parseInt(r),a;if(isNaN(i))throw new P(`\\@char has non-numeric argument `+r);if(i<0||i>1114111)throw new P(`\\@char with invalid code point `+r);return i<=65535?a=String.fromCharCode(i):(i-=65536,a=String.fromCharCode((i>>10)+55296,(i&1023)+56320)),{type:`textord`,mode:n.mode,text:a}}}),J({type:`color`,names:[`\\textcolor`],numArgs:2,allowedInText:!0,argTypes:[`color`,`original`],handler(e,t){var n=e.parser,r=X(t[0],`color-token`).color,i=t[1];return{type:`color`,mode:n.mode,color:r,body:da(i)}},htmlBuilder:(e,t)=>Ki(ga(e.body,t.withColor(e.color),!1)),mathmlBuilder:(e,t)=>{var n=new Y(`mstyle`,Fa(e.body,t.withColor(e.color)));return n.setAttribute(`mathcolor`,e.color),n}}),J({type:`color`,names:[`\\color`],numArgs:1,allowedInText:!0,argTypes:[`color`],handler(e,t){var n=e.parser,r=e.breakOnTokenText,i=X(t[0],`color-token`).color;n.gullet.macros.set(`\\current@color`,i);var a=n.parseExpression(!0,r);return{type:`color`,mode:n.mode,color:i,body:a}}}),J({type:`cr`,names:[`\\\\`],numArgs:0,numOptionalArgs:0,allowedInText:!0,handler(e,t,n){var r=e.parser,i=r.gullet.future().text===`[`?r.parseSizeGroup(!0):null,a=!r.settings.displayMode||!r.settings.useStrictBehavior(`newLineInDisplayMode`,`In LaTeX, \\\\ or \\newline does nothing in display mode`);return{type:`cr`,mode:r.mode,newLine:a,size:i&&X(i,`size`).value}},htmlBuilder(e,t){var n=q([`mspace`],[],t);return e.newLine&&(n.classes.push(`katex-newline`),e.size&&(n.style.marginTop=I(wr(e.size,t)))),n},mathmlBuilder(e,t){var n=new Y(`mspace`);return e.newLine&&(n.setAttribute(`linebreak`,`newline`),e.size&&n.setAttribute(`height`,I(wr(e.size,t)))),n}});var So={"\\global":`\\global`,"\\long":`\\\\globallong`,"\\\\globallong":`\\\\globallong`,"\\def":`\\gdef`,"\\gdef":`\\gdef`,"\\edef":`\\xdef`,"\\xdef":`\\xdef`,"\\let":`\\\\globallet`,"\\futurelet":`\\\\globalfuture`},Co=e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new P(`Expected a control sequence`,e);return t},wo=e=>{var t=e.gullet.popToken();return t.text===`=`&&(t=e.gullet.popToken(),t.text===` `&&(t=e.gullet.popToken())),t},To=(e,t,n,r)=>{var i=e.gullet.macros.get(n.text);i??=(n.noexpand=!0,{tokens:[n],numArgs:0,unexpandable:!e.gullet.isExpandable(n.text)}),e.gullet.macros.set(t,i,r)};J({type:`internal`,names:[`\\global`,`\\long`,`\\\\globallong`],numArgs:0,allowedInText:!0,handler(e){var t=e.parser,n=e.funcName;t.consumeSpaces();var r=t.fetch();if(So[r.text])return(n===`\\global`||n===`\\\\globallong`)&&(r.text=So[r.text]),X(t.parseFunction(),`internal`);throw new P(`Invalid token after macro prefix`,r)}}),J({type:`internal`,names:[`\\def`,`\\gdef`,`\\edef`,`\\xdef`],numArgs:0,allowedInText:!0,primitive:!0,handler(e){var t=e.parser,n=e.funcName,r=t.gullet.popToken(),i=r.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new P(`Expected a control sequence`,r);for(var a=0,o,s=[[]];t.gullet.future().text!==`{`;)if(r=t.gullet.popToken(),r.text===`#`){if(t.gullet.future().text===`{`){o=t.gullet.future(),s[a].push(`{`);break}if(r=t.gullet.popToken(),!/^[1-9]$/.test(r.text))throw new P(`Invalid argument number "`+r.text+`"`);if(parseInt(r.text)!==a+1)throw new P(`Argument number "`+r.text+`" out of order`);a++,s.push([])}else if(r.text===`EOF`)throw new P(`Expected a macro definition`);else s[a].push(r.text);var c=t.gullet.consumeArg().tokens;return o&&c.unshift(o),(n===`\\edef`||n===`\\xdef`)&&(c=t.gullet.expandTokens(c),c.reverse()),t.gullet.macros.set(i,{tokens:c,numArgs:a,delimiters:s},n===So[n]),{type:`internal`,mode:t.mode}}}),J({type:`internal`,names:[`\\let`,`\\\\globallet`],numArgs:0,allowedInText:!0,primitive:!0,handler(e){var t=e.parser,n=e.funcName,r=Co(t.gullet.popToken());return t.gullet.consumeSpaces(),To(t,r,wo(t),n===`\\\\globallet`),{type:`internal`,mode:t.mode}}}),J({type:`internal`,names:[`\\futurelet`,`\\\\globalfuture`],numArgs:0,allowedInText:!0,primitive:!0,handler(e){var t=e.parser,n=e.funcName,r=Co(t.gullet.popToken()),i=t.gullet.popToken(),a=t.gullet.popToken();return To(t,r,a,n===`\\\\globalfuture`),t.gullet.pushToken(a),t.gullet.pushToken(i),{type:`internal`,mode:t.mode}}});var Eo=function(e,t,n){var r=Kr(Yr.math[e]&&Yr.math[e].replace||e,t,n);if(!r)throw Error(`Unsupported symbol `+e+` and font size `+t+`.`);return r},Do=function(e,t,n,r){var i=n.havingBaseStyle(t),a=q(r.concat(i.sizingClasses(n)),[e],n),o=i.sizeMultiplier/n.sizeMultiplier;return a.height*=o,a.depth*=o,a.maxFontSize=i.sizeMultiplier,a},Oo=function(e,t,n){var r=t.havingBaseStyle(n),i=(1-t.sizeMultiplier/r.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push(`delimcenter`),e.style.top=I(i),e.height-=i,e.depth+=i},ko=function(e,t,n,r,i,a){var o=Do(Ii(e,`Main-Regular`,i,r),t,r,a);return n&&Oo(o,r,t),o},Ao=function(e,t,n,r){return Ii(e,`Size`+t+`-Regular`,n,r)},jo=function(e,t,n,r,i,a){var o=Ao(e,t,i,r),s=Do(q([`delimsizing`,`size`+t],[o],r),F.TEXT,r,a);return n&&Oo(s,r,F.TEXT),s},Mo=function(e,t,n){return{type:`elem`,elem:q([`delimsizinginner`,t===`Size1-Regular`?`delim-size1`:`delim-size4`],[q([],[Ii(e,t,n)])])}},No=function(e,t,n){var r=Hr[`Size4-Regular`][e.charCodeAt(0)]?Hr[`Size4-Regular`][e.charCodeAt(0)][4]:Hr[`Size1-Regular`][e.charCodeAt(0)][4],i=Ui([],[new Ir([new Lr(`inner`,gr(e,Math.round(1e3*t)))],{width:I(r),height:I(t),style:`width:`+I(r),viewBox:`0 0 `+1e3*r+` `+Math.round(1e3*t),preserveAspectRatio:`xMinYMin`})],n);return i.height=t,i.style.height=I(t),i.style.width=I(r),{type:`elem`,elem:i}},Po=.008,Fo={type:`kern`,size:-1*Po},Io=new Set([`|`,`\\lvert`,`\\rvert`,`\\vert`]),Lo=new Set([`\\|`,`\\lVert`,`\\rVert`,`\\Vert`]),Ro=function(e,t,n,r,i,a){var o,s,c,l,u=``,d=0;o=c=l=e,s=null;var f=`Size1-Regular`;e===`\\uparrow`?c=l=`⏐`:e===`\\Uparrow`?c=l=`‖`:e===`\\downarrow`?o=c=`⏐`:e===`\\Downarrow`?o=c=`‖`:e===`\\updownarrow`?(o=`\\uparrow`,c=`⏐`,l=`\\downarrow`):e===`\\Updownarrow`?(o=`\\Uparrow`,c=`‖`,l=`\\Downarrow`):Io.has(e)?(c=`∣`,u=`vert`,d=333):Lo.has(e)?(c=`∥`,u=`doublevert`,d=556):e===`[`||e===`\\lbrack`?(o=`⎡`,c=`⎢`,l=`⎣`,f=`Size4-Regular`,u=`lbrack`,d=667):e===`]`||e===`\\rbrack`?(o=`⎤`,c=`⎥`,l=`⎦`,f=`Size4-Regular`,u=`rbrack`,d=667):e===`\\lfloor`||e===`⌊`?(c=o=`⎢`,l=`⎣`,f=`Size4-Regular`,u=`lfloor`,d=667):e===`\\lceil`||e===`⌈`?(o=`⎡`,c=l=`⎢`,f=`Size4-Regular`,u=`lceil`,d=667):e===`\\rfloor`||e===`⌋`?(c=o=`⎥`,l=`⎦`,f=`Size4-Regular`,u=`rfloor`,d=667):e===`\\rceil`||e===`⌉`?(o=`⎤`,c=l=`⎥`,f=`Size4-Regular`,u=`rceil`,d=667):e===`(`||e===`\\lparen`?(o=`⎛`,c=`⎜`,l=`⎝`,f=`Size4-Regular`,u=`lparen`,d=875):e===`)`||e===`\\rparen`?(o=`⎞`,c=`⎟`,l=`⎠`,f=`Size4-Regular`,u=`rparen`,d=875):e===`\\{`||e===`\\lbrace`?(o=`⎧`,s=`⎨`,l=`⎩`,c=`⎪`,f=`Size4-Regular`):e===`\\}`||e===`\\rbrace`?(o=`⎫`,s=`⎬`,l=`⎭`,c=`⎪`,f=`Size4-Regular`):e===`\\lgroup`||e===`⟮`?(o=`⎧`,l=`⎩`,c=`⎪`,f=`Size4-Regular`):e===`\\rgroup`||e===`⟯`?(o=`⎫`,l=`⎭`,c=`⎪`,f=`Size4-Regular`):e===`\\lmoustache`||e===`⎰`?(o=`⎧`,l=`⎭`,c=`⎪`,f=`Size4-Regular`):(e===`\\rmoustache`||e===`⎱`)&&(o=`⎫`,l=`⎩`,c=`⎪`,f=`Size4-Regular`);var p=Eo(o,f,i),m=p.height+p.depth,h=Eo(c,f,i),g=h.height+h.depth,_=Eo(l,f,i),v=_.height+_.depth,y=0,b=1;if(s!==null){var x=Eo(s,f,i);y=x.height+x.depth,b=2}var S=m+v+y,C=S+Math.max(0,Math.ceil((t-S)/(b*g)))*b*g,w=r.fontMetrics().axisHeight;n&&(w*=r.sizeMultiplier);var T=C/2-w,E=[];if(u.length>0){var D=C-m-v,O=Math.round(C*1e3),k=vr(u,Math.round(D*1e3)),A=new Lr(u,k),ee=I(d/1e3),te=I(O/1e3),j=Ui([],[new Ir([A],{width:ee,height:te,viewBox:`0 0 `+d+` `+O})],r);j.height=O/1e3,j.style.width=ee,j.style.height=te,E.push({type:`elem`,elem:j})}else{if(E.push(Mo(l,f,i)),E.push(Fo),s===null){var ne=C-m-v+2*Po;E.push(No(c,ne,r))}else{var re=(C-m-v-y)/2+2*Po;E.push(No(c,re,r)),E.push(Fo),E.push(Mo(s,f,i)),E.push(Fo),E.push(No(c,re,r))}E.push(Fo),E.push(Mo(o,f,i))}var ie=r.havingBaseStyle(F.TEXT);return Do(q([`delimsizing`,`mult`],[Yi({positionType:`bottom`,positionData:T,children:E})],ie),F.TEXT,r,a)},zo=80,Bo=.08,Vo=function(e,t,n,r,i){return Ui([`hide-tail`],[new Ir([new Lr(e,hr(e,r,n))],{width:`400em`,height:I(t),viewBox:`0 0 400000 `+n,preserveAspectRatio:`xMinYMin slice`})],i)},Ho=function(e,t){var n=t.havingBaseSizing(),r=Qo(`\\surd`,e*n.sizeMultiplier,Xo,n),i=n.sizeMultiplier,a=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),o,s,c,l,u;return r.type===`small`?(l=1e3+1e3*a+zo,e<1?i=1:e<1.4&&(i=.7),s=(1+a+Bo)/i,c=(1+a)/i,o=Vo(`sqrtMain`,s,l,a,t),o.style.minWidth=`0.853em`,u=.833/i):r.type===`large`?(l=(1e3+zo)*Ko[r.size],c=(Ko[r.size]+a)/i,s=(Ko[r.size]+a+Bo)/i,o=Vo(`sqrtSize`+r.size,s,l,a,t),o.style.minWidth=`1.02em`,u=1/i):(s=e+a+Bo,c=e+a,l=Math.floor(1e3*e+a)+zo,o=Vo(`sqrtTall`,s,l,a,t),o.style.minWidth=`0.742em`,u=1.056),o.height=c,o.style.height=I(s),{span:o,advanceWidth:u,ruleWidth:(t.fontMetrics().sqrtRuleThickness+a)*i}},Uo=new Set([`(`,`\\lparen`,`)`,`\\rparen`,`[`,`\\lbrack`,`]`,`\\rbrack`,`\\{`,`\\lbrace`,`\\}`,`\\rbrace`,`\\lfloor`,`\\rfloor`,`⌊`,`⌋`,`\\lceil`,`\\rceil`,`⌈`,`⌉`,`\\surd`]),Wo=new Set([`\\uparrow`,`\\downarrow`,`\\updownarrow`,`\\Uparrow`,`\\Downarrow`,`\\Updownarrow`,`|`,`\\|`,`\\vert`,`\\Vert`,`\\lvert`,`\\rvert`,`\\lVert`,`\\rVert`,`\\lgroup`,`\\rgroup`,`⟮`,`⟯`,`\\lmoustache`,`\\rmoustache`,`⎰`,`⎱`]),Go=new Set([`<`,`>`,`\\langle`,`\\rangle`,`/`,`\\backslash`,`\\lt`,`\\gt`]),Ko=[0,1.2,1.8,2.4,3],qo=function(e,t,n,r,i){if(e===`<`||e===`\\lt`||e===`⟨`?e=`\\langle`:(e===`>`||e===`\\gt`||e===`⟩`)&&(e=`\\rangle`),Uo.has(e)||Go.has(e))return jo(e,t,!1,n,r,i);if(Wo.has(e))return Ro(e,Ko[t],!1,n,r,i);throw new P(`Illegal delimiter: '`+e+`'`)},Jo=[{type:`small`,style:F.SCRIPTSCRIPT},{type:`small`,style:F.SCRIPT},{type:`small`,style:F.TEXT},{type:`large`,size:1},{type:`large`,size:2},{type:`large`,size:3},{type:`large`,size:4}],Yo=[{type:`small`,style:F.SCRIPTSCRIPT},{type:`small`,style:F.SCRIPT},{type:`small`,style:F.TEXT},{type:`stack`}],Xo=[{type:`small`,style:F.SCRIPTSCRIPT},{type:`small`,style:F.SCRIPT},{type:`small`,style:F.TEXT},{type:`large`,size:1},{type:`large`,size:2},{type:`large`,size:3},{type:`large`,size:4},{type:`stack`}],Zo=function(e){if(e.type===`small`)return`Main-Regular`;if(e.type===`large`)return`Size`+e.size+`-Regular`;if(e.type===`stack`)return`Size4-Regular`;var t=e.type;throw Error(`Add support for delim type '`+t+`' here.`)},Qo=function(e,t,n,r){for(var i=Math.min(2,3-r.style.size);i<n.length;i++){var a=n[i];if(a.type===`stack`)break;var o=Eo(e,Zo(a),`math`),s=o.height+o.depth;if(a.type===`small`){var c=r.havingBaseStyle(a.style);s*=c.sizeMultiplier}if(s>t)return a}return n[n.length-1]},$o=function(e,t,n,r,i,a){e===`<`||e===`\\lt`||e===`⟨`?e=`\\langle`:(e===`>`||e===`\\gt`||e===`⟩`)&&(e=`\\rangle`);var o=Go.has(e)?Jo:Uo.has(e)?Xo:Yo,s=Qo(e,t,o,r);return s.type===`small`?ko(e,s.style,n,r,i,a):s.type===`large`?jo(e,s.size,n,r,i,a):Ro(e,t,n,r,i,a)},es=function(e,t,n,r,i,a){var o=r.fontMetrics().axisHeight*r.sizeMultiplier,s=901,c=5/r.fontMetrics().ptPerEm,l=Math.max(t-o,n+o);return $o(e,Math.max(l/500*s,2*l-c),!0,r,i,a)},ts={"\\bigl":{mclass:`mopen`,size:1},"\\Bigl":{mclass:`mopen`,size:2},"\\biggl":{mclass:`mopen`,size:3},"\\Biggl":{mclass:`mopen`,size:4},"\\bigr":{mclass:`mclose`,size:1},"\\Bigr":{mclass:`mclose`,size:2},"\\biggr":{mclass:`mclose`,size:3},"\\Biggr":{mclass:`mclose`,size:4},"\\bigm":{mclass:`mrel`,size:1},"\\Bigm":{mclass:`mrel`,size:2},"\\biggm":{mclass:`mrel`,size:3},"\\Biggm":{mclass:`mrel`,size:4},"\\big":{mclass:`mord`,size:1},"\\Big":{mclass:`mord`,size:2},"\\bigg":{mclass:`mord`,size:3},"\\Bigg":{mclass:`mord`,size:4}},ns=new Set(`(,\\lparen,),\\rparen,[,\\lbrack,],\\rbrack,\\{,\\lbrace,\\},\\rbrace,\\lfloor,\\rfloor,⌊,⌋,\\lceil,\\rceil,⌈,⌉,<,>,\\langle,⟨,\\rangle,⟩,\\lt,\\gt,\\lvert,\\rvert,\\lVert,\\rVert,\\lgroup,\\rgroup,⟮,⟯,\\lmoustache,\\rmoustache,⎰,⎱,/,\\backslash,|,\\vert,\\|,\\Vert,\\uparrow,\\Uparrow,\\downarrow,\\Downarrow,\\updownarrow,\\Updownarrow,.`.split(`,`));function rs(e){return`isMiddle`in e}function is(e,t){var n=ao(e);if(n&&ns.has(n.text))return n;throw n?new P(`Invalid delimiter '`+n.text+`' after '`+t.funcName+`'`,e):new P(`Invalid delimiter type '`+e.type+`'`,e)}J({type:`delimsizing`,names:[`\\bigl`,`\\Bigl`,`\\biggl`,`\\Biggl`,`\\bigr`,`\\Bigr`,`\\biggr`,`\\Biggr`,`\\bigm`,`\\Bigm`,`\\biggm`,`\\Biggm`,`\\big`,`\\Big`,`\\bigg`,`\\Bigg`],numArgs:1,argTypes:[`primitive`],handler:(e,t)=>{var n=is(ua(t[0]),e);return{type:`delimsizing`,mode:e.parser.mode,size:ts[e.funcName].size,mclass:ts[e.funcName].mclass,delim:n.text}},htmlBuilder:(e,t)=>e.delim===`.`?q([e.mclass]):qo(e.delim,e.size,t,e.mode,[e.mclass]),mathmlBuilder:e=>{var t=[];e.delim!==`.`&&t.push(Aa(e.delim,e.mode));var n=new Y(`mo`,t);e.mclass===`mopen`||e.mclass===`mclose`?n.setAttribute(`fence`,`true`):n.setAttribute(`fence`,`false`),n.setAttribute(`stretchy`,`true`);var r=I(Ko[e.size]);return n.setAttribute(`minsize`,r),n.setAttribute(`maxsize`,r),n}});function as(e){if(!e.body)throw Error(`Bug: The leftright ParseNode wasn't fully parsed.`)}J({type:`leftright-right`,names:[`\\right`],numArgs:1,primitive:!0,handler:(e,t)=>{var n=e.parser.gullet.macros.get(`\\current@color`);if(n&&typeof n!=`string`)throw new P(`\\current@color set to non-string in \\right`);return{type:`leftright-right`,mode:e.parser.mode,delim:is(t[0],e).text,color:n}}}),J({type:`leftright`,names:[`\\left`],numArgs:1,primitive:!0,handler:(e,t)=>{var n=is(t[0],e),r=e.parser;++r.leftrightDepth;var i=r.parseExpression(!1);--r.leftrightDepth,r.expect(`\\right`,!1);var a=X(r.parseFunction(),`leftright-right`);return{type:`leftright`,mode:r.mode,body:i,left:n.text,right:a.delim,rightColor:a.color}},htmlBuilder:(e,t)=>{as(e);for(var n=ga(e.body,t,!0,[`mopen`,`mclose`]),r=0,i=0,a=!1,o=0;o<n.length;o++){var s=n[o];rs(s)?a=!0:(r=Math.max(n[o].height,r),i=Math.max(n[o].depth,i))}r*=t.sizeMultiplier,i*=t.sizeMultiplier;var c=e.left===`.`?xa(t,[`mopen`]):es(e.left,r,i,t,e.mode,[`mopen`]);if(n.unshift(c),a)for(var l=1;l<n.length;l++){var u=n[l];if(rs(u)){var d=u.isMiddle;n[l]=es(d.delim,r,i,d.options,e.mode,[])}}var f;if(e.right===`.`)f=xa(t,[`mclose`]);else{var p=e.rightColor?t.withColor(e.rightColor):t;f=es(e.right,r,i,p,e.mode,[`mclose`])}return n.push(f),q([`minner`],n,t)},mathmlBuilder:(e,t)=>{as(e);var n=Fa(e.body,t);if(e.left!==`.`){var r=new Y(`mo`,[Aa(e.left,e.mode)]);r.setAttribute(`fence`,`true`),n.unshift(r)}if(e.right!==`.`){var i=new Y(`mo`,[Aa(e.right,e.mode)]);i.setAttribute(`fence`,`true`),e.rightColor&&i.setAttribute(`mathcolor`,e.rightColor),n.push(i)}return ja(n)}}),J({type:`middle`,names:[`\\middle`],numArgs:1,primitive:!0,handler:(e,t)=>{var n=is(t[0],e);if(!e.parser.leftrightDepth)throw new P(`\\middle without preceding \\left`,n);return{type:`middle`,mode:e.parser.mode,delim:n.text}},htmlBuilder:(e,t)=>{var n;return e.delim===`.`?n=xa(t,[]):(n=qo(e.delim,1,t,e.mode,[]),n.isMiddle={delim:e.delim,options:t}),n},mathmlBuilder:(e,t)=>{var n=new Y(`mo`,[e.delim===`\\vert`||e.delim===`|`?Aa(`|`,`text`):Aa(e.delim,e.mode)]);return n.setAttribute(`fence`,`true`),n.setAttribute(`lspace`,`0.05em`),n.setAttribute(`rspace`,`0.05em`),n}}),J({type:`enclose`,names:[`\\colorbox`],numArgs:2,allowedInText:!0,argTypes:[`color`,`hbox`],handler(e,t,n){var r=e.parser,i=e.funcName,a=X(t[0],`color-token`).color,o=t[1];return{type:`enclose`,mode:r.mode,label:i,backgroundColor:a,body:o}},htmlBuilder:(e,t)=>{var n=qi(Sa(e.body,t),t),r=e.label.slice(1),i=t.sizeMultiplier,a,o,s=Nn(e.body);if(r===`sout`)a=q([`katex-stretchy`,`katex-sout`]),a.height=t.fontMetrics().defaultRuleThickness/i,o=-.5*t.fontMetrics().xHeight;else if(r===`phase`){var c=wr({number:.6,unit:`pt`},t),l=wr({number:.35,unit:`ex`},t),u=t.havingBaseSizing();i/=u.sizeMultiplier;var d=n.height+n.depth+c+l;n.style.paddingLeft=I(d/2+c);var f=Math.floor(1e3*d*i);a=Ui([`hide-tail`],[new Ir([new Lr(`phase`,pr(f))],{width:`400em`,height:I(f/1e3),viewBox:`0 0 400000 `+f,preserveAspectRatio:`xMinYMin slice`})],t),a.style.height=I(d),o=n.depth+c+l}else{/cancel/.test(r)?s||n.classes.push(`cancel-pad`):r===`angl`?n.classes.push(`anglpad`):n.classes.push(`boxpad`);var p,m,h=0;/box/.test(r)?(h=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),p=t.fontMetrics().fboxsep+(r===`colorbox`?0:h),m=p):r===`angl`?(h=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness),p=4*h,m=Math.max(0,.25-n.depth)):(p=s?.2:0,m=p),a=Qa(n,r,p,m,t),/fbox|boxed|fcolorbox/.test(r)?(a.style.borderStyle=`solid`,a.style.borderWidth=I(h)):r===`angl`&&h!==.049&&(a.style.borderTopWidth=I(h),a.style.borderRightWidth=I(h)),o=n.depth+m,e.backgroundColor&&(a.style.backgroundColor=e.backgroundColor,e.borderColor&&(a.style.borderColor=e.borderColor))}var g;if(e.backgroundColor)g=Yi({positionType:`individualShift`,children:[{type:`elem`,elem:a,shift:o},{type:`elem`,elem:n,shift:0}]});else{var _=/cancel|phase/.test(r)?[`svg-align`]:[];g=Yi({positionType:`individualShift`,children:[{type:`elem`,elem:n,shift:0},{type:`elem`,elem:a,shift:o,wrapperClasses:_}]})}return/cancel/.test(r)&&(g.height=n.height,g.depth=n.depth),/cancel/.test(r)&&!s?q([`mord`,`cancel-lap`],[g],t):q([`mord`],[g],t)},mathmlBuilder:(e,t)=>{var n,r=new Y(e.label.includes(`colorbox`)?`mpadded`:`menclose`,[La(e.body,t)]);switch(e.label){case`\\cancel`:r.setAttribute(`notation`,`updiagonalstrike`);break;case`\\bcancel`:r.setAttribute(`notation`,`downdiagonalstrike`);break;case`\\phase`:r.setAttribute(`notation`,`phasorangle`);break;case`\\sout`:r.setAttribute(`notation`,`horizontalstrike`);break;case`\\fbox`:r.setAttribute(`notation`,`box`);break;case`\\angl`:r.setAttribute(`notation`,`actuarial`);break;case`\\fcolorbox`:case`\\colorbox`:if(n=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,r.setAttribute(`width`,`+`+2*n+`pt`),r.setAttribute(`height`,`+`+2*n+`pt`),r.setAttribute(`lspace`,n+`pt`),r.setAttribute(`voffset`,n+`pt`),e.label===`\\fcolorbox`){var i=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);r.setAttribute(`style`,`border: `+I(i)+` solid `+e.borderColor)}break;case`\\xcancel`:r.setAttribute(`notation`,`updiagonalstrike downdiagonalstrike`);break}return e.backgroundColor&&r.setAttribute(`mathbackground`,e.backgroundColor),r}}),J({type:`enclose`,names:[`\\fcolorbox`],numArgs:3,allowedInText:!0,argTypes:[`color`,`color`,`hbox`],handler(e,t,n){var r=e.parser,i=e.funcName,a=X(t[0],`color-token`).color,o=X(t[1],`color-token`).color,s=t[2];return{type:`enclose`,mode:r.mode,label:i,backgroundColor:o,borderColor:a,body:s}}}),J({type:`enclose`,names:[`\\fbox`],numArgs:1,argTypes:[`hbox`],allowedInText:!0,handler(e,t){return{type:`enclose`,mode:e.parser.mode,label:`\\fbox`,body:t[0]}}}),J({type:`enclose`,names:[`\\cancel`,`\\bcancel`,`\\xcancel`,`\\phase`],numArgs:1,handler(e,t){var n=e.parser,r=e.funcName,i=t[0];return{type:`enclose`,mode:n.mode,label:r,body:i}}}),J({type:`enclose`,names:[`\\sout`],numArgs:1,allowedInText:!0,handler(e,t){var n=e.parser,r=e.funcName;n.mode===`math`&&n.settings.reportNonstrict(`mathVsSout`,`LaTeX's \\sout works only in text mode`);var i=t[0];return{type:`enclose`,mode:n.mode,label:r,body:i}}}),J({type:`enclose`,names:[`\\angl`],numArgs:1,argTypes:[`hbox`],allowedInText:!1,handler(e,t){return{type:`enclose`,mode:e.parser.mode,label:`\\angl`,body:t[0]}}});var os={};function ss(e){for(var t=e.type,n=e.names,r=e.props,i=e.handler,a=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:r.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:i},c=0;c<n.length;++c)os[n[c]]=s;a&&(sa[t]=a),o&&(ca[t]=o)}var cs={};function Z(e,t){cs[e]=t}var ls=class e{constructor(e,t,n){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=n}static range(t,n){return n?!t||!t.loc||!n.loc||t.loc.lexer!==n.loc.lexer?null:new e(t.loc.lexer,t.loc.start,n.loc.end):t&&t.loc}},us=class e{constructor(e,t){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=t}range(t,n){return new e(n,ls.range(this,t))}};function ds(e){var t=[];e.consumeSpaces();var n=e.fetch().text;for(n===`\\relax`&&(e.consume(),e.consumeSpaces(),n=e.fetch().text);n===`\\hline`||n===`\\hdashline`;)e.consume(),t.push(n===`\\hdashline`),e.consumeSpaces(),n=e.fetch().text;return t}var fs=e=>{if(!e.parser.settings.displayMode)throw new P(`{`+e.envName+`} can be used only in display mode.`)},ps=new Set([`gather`,`gather*`]);function ms(e){if(!e.includes(`ed`))return!e.includes(`*`)}function hs(e,t,n){var r=t.hskipBeforeAndAfter,i=t.addJot,a=t.cols,o=t.arraystretch,s=t.colSeparationType,c=t.autoTag,l=t.singleRow,u=t.emptySingleRow,d=t.maxNumCols,f=t.leqno;if(e.gullet.beginGroup(),l||e.gullet.macros.set(`\\cr`,`\\\\\\relax`),!o){var p=e.gullet.expandMacroAsText(`\\arraystretch`);if(p==null)o=1;else if(o=parseFloat(p),!o||o<0)throw new P(`Invalid \\arraystretch: `+p)}e.gullet.beginGroup();var m=[],h=[m],g=[],_=[],v=c==null?void 0:[];function y(){c&&e.gullet.macros.set(`\\@eqnsw`,`1`,!0)}function b(){v&&(e.gullet.macros.get(`\\df@tag`)?(v.push(e.subparse([new us(`\\df@tag`)])),e.gullet.macros.set(`\\df@tag`,void 0,!0)):v.push(!!c&&e.gullet.macros.get(`\\@eqnsw`)===`1`))}for(y(),_.push(ds(e));;){var x=e.parseExpression(!1,l?`\\end`:`\\\\`);e.gullet.endGroup(),e.gullet.beginGroup();var S={type:`ordgroup`,mode:e.mode,body:x};n&&(S={type:`styling`,mode:e.mode,style:n,resetFont:!0,body:[S]}),m.push(S);var C=e.fetch().text;if(C===`&`){if(d&&m.length===d){if(l||s)throw new P(`Too many tab characters: &`,e.nextToken);e.settings.reportNonstrict(`textEnv`,`Too few columns specified in the {array} column argument.`)}e.consume()}else if(C===`\\end`){b(),m.length===1&&S.type===`styling`&&S.body.length===1&&S.body[0].type===`ordgroup`&&S.body[0].body.length===0&&(h.length>1||!u)&&!Array.isArray(v?.[v.length-1])&&h.pop(),_.length<h.length+1&&_.push([]);break}else if(C===`\\\\`){e.consume();var w=void 0;e.gullet.future().text!==` `&&(w=e.parseSizeGroup(!0)),g.push(w?w.value:null),b(),_.push(ds(e)),m=[],h.push(m),y()}else throw new P(`Expected & or \\\\ or \\cr or \\end`,e.nextToken)}return e.gullet.endGroup(),e.gullet.endGroup(),{type:`array`,mode:e.mode,addJot:i,arraystretch:o,body:h,cols:a,rowGaps:g,hskipBeforeAndAfter:r,hLinesBeforeRow:_,colSeparationType:s,tags:v,leqno:f}}function gs(e){return e.slice(0,1)===`d`?`display`:`text`}var _s=function(e,t){var n,r,i=e.body.length,a=e.hLinesBeforeRow,o=0,s=Array(i),c=[],l=Math.max(t.fontMetrics().arrayRuleWidth,t.minRuleThickness),u=1/t.fontMetrics().ptPerEm,d=5*u;e.colSeparationType&&e.colSeparationType===`small`&&(d=.2778*(t.havingStyle(F.SCRIPT).sizeMultiplier/t.sizeMultiplier));var f=e.colSeparationType===`CD`?wr({number:3,unit:`ex`},t):12*u,p=3*u,m=e.arraystretch*f,h=.7*m,g=.3*m,_=0;function v(e){for(var t=0;t<e.length;++t)t>0&&(_+=.25),c.push({pos:_,isDashed:e[t]})}for(v(a[0]),n=0;n<e.body.length;++n){var y=e.body[n],b=h,x=g;o<y.length&&(o=y.length);var S={cells:Array(y.length),height:0,depth:0,pos:0};for(r=0;r<y.length;++r){var C=Sa(y[r],t);x<C.depth&&(x=C.depth),b<C.height&&(b=C.height),S.cells[r]=C}var w=e.rowGaps[n],T=0;w&&(T=wr(w,t),T>0&&(T+=g,x<T&&(x=T),T=0)),e.addJot&&n<e.body.length-1&&(x+=p),S.height=b,S.depth=x,_+=b,S.pos=_,_+=x+T,s[n]=S,v(a[n+1])}var E=_/2+t.fontMetrics().axisHeight,D=e.cols||[],O=[],k,A,ee=[];if(e.tags&&e.tags.some(e=>e))for(n=0;n<i;++n){var te=s[n],j=te.pos-E,ne=e.tags[n],re=void 0;re=ne===!0?q([`eqn-num`],[],t):ne===!1?q([],[],t):q([],ga(ne,t,!0),t),re.depth=te.depth,re.height=te.height,ee.push({type:`elem`,elem:re,shift:j})}for(r=0,A=0;r<o||A<D.length;++r,++A){for(var ie=D[A],ae=!0;(oe=ie)?.type===`separator`;){var oe;if(ae||(k=q([`arraycolsep`],[]),k.style.width=I(t.fontMetrics().doubleRuleSep),O.push(k)),ie.separator===`|`||ie.separator===`:`){var se=ie.separator===`|`?`solid`:`dashed`,ce=q([`vertical-separator`],[],t);ce.style.height=I(_),ce.style.borderRightWidth=I(l),ce.style.borderRightStyle=se,ce.style.margin=`0 `+I(-l/2);var le=_-E;le&&(ce.style.verticalAlign=I(-le)),O.push(ce)}else throw new P(`Invalid separator type: `+ie.separator);A++,ie=D[A],ae=!1}if(!(r>=o)){var M=void 0;(r>0||e.hskipBeforeAndAfter)&&(M=ie?.pregap??d,M!==0&&(k=q([`arraycolsep`],[]),k.style.width=I(M),O.push(k)));var ue=[];for(n=0;n<i;++n){var de=s[n],fe=de.cells[r];if(fe){var pe=de.pos-E;fe.depth=de.depth,fe.height=de.height,ue.push({type:`elem`,elem:fe,shift:pe})}}var me=Yi({positionType:`individualShift`,children:ue}),he=q([`col-align-`+(ie?.align||`c`)],[me]);O.push(he),(r<o-1||e.hskipBeforeAndAfter)&&(M=ie?.postgap??d,M!==0&&(k=q([`arraycolsep`],[]),k.style.width=I(M),O.push(k)))}}var ge=q([`mtable`],O);if(c.length>0){for(var _e=Wi(`katex-hline`,t,l),ve=Wi(`katex-hdashline`,t,l),ye=[{type:`elem`,elem:ge,shift:0}];c.length>0;){var be=c.pop(),xe=be.pos-E;be.isDashed?ye.push({type:`elem`,elem:ve,shift:xe}):ye.push({type:`elem`,elem:_e,shift:xe})}ge=Yi({positionType:`individualShift`,children:ye})}if(ee.length===0)return q([`mord`],[ge],t);var Se=q([`katex-tag`],[Yi({positionType:`individualShift`,children:ee})],t);return Ki([ge,Se])},vs={c:`center `,l:`left `,r:`right `},ys=function(e,t){for(var n=[],r=new Y(`mtd`,[],[`mtr-glue`]),i=new Y(`mtd`,[],[`mml-eqn-num`]),a=0;a<e.body.length;a++){for(var o=e.body[a],s=[],c=0;c<o.length;c++)s.push(new Y(`mtd`,[La(o[c],t)]));e.tags&&e.tags[a]&&(s.unshift(r),s.push(r),e.leqno?s.unshift(i):s.push(i)),n.push(new Y(`mtr`,s))}var l=new Y(`mtable`,n),u=e.arraystretch===.5?.1:.16+e.arraystretch-1+(e.addJot?.09:0);l.setAttribute(`rowspacing`,I(u));var d=``,f=``;if(e.cols&&e.cols.length>0){var p=e.cols,m=``,h=!1,g=0,_=p.length;p[0].type===`separator`&&(d+=`top `,g=1),p[p.length-1].type===`separator`&&(d+=`bottom `,--_);for(var v=g;v<_;v++){var y=p[v];y.type===`align`?(f+=vs[y.align],h&&(m+=`none `),h=!0):y.type===`separator`&&(h&&=(m+=y.separator===`|`?`solid `:`dashed `,!1))}l.setAttribute(`columnalign`,f.trim()),/[sd]/.test(m)&&l.setAttribute(`columnlines`,m.trim())}if(e.colSeparationType===`align`){for(var b=e.cols||[],x=``,S=1;S<b.length;S++)x+=S%2?`0em `:`1em `;l.setAttribute(`columnspacing`,x.trim())}else e.colSeparationType===`alignat`||e.colSeparationType===`gather`?l.setAttribute(`columnspacing`,`0em`):e.colSeparationType===`small`?l.setAttribute(`columnspacing`,`0.2778em`):e.colSeparationType===`CD`?l.setAttribute(`columnspacing`,`0.5em`):l.setAttribute(`columnspacing`,`1em`);var C=``,w=e.hLinesBeforeRow;d+=w[0].length>0?`left `:``,d+=w[w.length-1].length>0?`right `:``;for(var T=1;T<w.length-1;T++)C+=w[T].length===0?`none `:w[T][0]?`dashed `:`solid `;return/[sd]/.test(C)&&l.setAttribute(`rowlines`,C.trim()),d!==``&&(l=new Y(`menclose`,[l]),l.setAttribute(`notation`,d.trim())),e.arraystretch&&e.arraystretch<1&&(l=new Y(`mstyle`,[l]),l.setAttribute(`scriptlevel`,`1`)),l},bs=function(e,t){e.envName.includes(`ed`)||fs(e);var n=[],r=e.envName===`split`,i=hs(e.parser,{cols:n,addJot:!0,autoTag:r?void 0:ms(e.envName),emptySingleRow:!0,colSeparationType:e.envName.includes(`at`)?`alignat`:`align`,maxNumCols:r?2:void 0,leqno:e.parser.settings.leqno},`display`),a=0,o=0,s={type:`ordgroup`,mode:e.mode,body:[]};if(t[0]&&t[0].type===`ordgroup`){var c=`Number of columns should be a positive integer`,l=oo(t[0],c);if(!/^[0-9]+$/.test(l)||Number(l)<1)throw new P(c,t[0]);a=Number(l),o=a*2}var u=!o;i.body.forEach(function(e){for(var t=1;t<e.length;t+=2)X(X(e[t],`styling`).body[0],`ordgroup`).body.unshift(s);if(u)o<e.length&&(o=e.length);else{var n=e.length/2;if(a<n)throw new P(`Too many math in a row: `+(`expected `+a+`, but got `+n),e[0])}});for(var d=0;d<o;++d){var f=`r`,p=0;d%2==1?f=`l`:d>0&&u&&(p=1),n[d]={type:`align`,align:f,pregap:p,postgap:0}}return i.colSeparationType=u?`align`:`alignat`,i};ss({type:`array`,names:[`array`,`darray`],props:{numArgs:1},handler(e,t){var n=(ao(t[0])?[t[0]]:X(t[0],`ordgroup`).body).map(function(e){var t=io(e).text;if(`lcr`.includes(t))return{type:`align`,align:t};if(t===`|`)return{type:`separator`,separator:`|`};if(t===`:`)return{type:`separator`,separator:`:`};throw new P(`Unknown column alignment: `+t,e)}),r={cols:n,hskipBeforeAndAfter:!0,maxNumCols:n.length};return hs(e.parser,r,gs(e.envName))},htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`matrix`,`pmatrix`,`bmatrix`,`Bmatrix`,`vmatrix`,`Vmatrix`,`matrix*`,`pmatrix*`,`bmatrix*`,`Bmatrix*`,`vmatrix*`,`Vmatrix*`],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:[`(`,`)`],bmatrix:[`[`,`]`],Bmatrix:[`\\{`,`\\}`],vmatrix:[`|`,`|`],Vmatrix:[`\\Vert`,`\\Vert`]}[e.envName.replace(`*`,``)],n=`c`,r={hskipBeforeAndAfter:!1,cols:[{type:`align`,align:n}]};if(e.envName.charAt(e.envName.length-1)===`*`){var i=e.parser;if(i.consumeSpaces(),i.fetch().text===`[`){if(i.consume(),i.consumeSpaces(),n=i.fetch().text,!`lcr`.includes(n))throw new P(`Expected l or c or r`,i.nextToken);i.consume(),i.consumeSpaces(),i.expect(`]`),i.consume(),r.cols=[{type:`align`,align:n}]}}var a=hs(e.parser,r,gs(e.envName)),o=Math.max(0,...a.body.map(e=>e.length));return a.cols=Array(o).fill({type:`align`,align:n}),t?{type:`leftright`,mode:e.mode,body:[a],left:t[0],right:t[1],rightColor:void 0}:a},htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`smallmatrix`],props:{numArgs:0},handler(e){var t=hs(e.parser,{arraystretch:.5},`script`);return t.colSeparationType=`small`,t},htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`subarray`],props:{numArgs:1},handler(e,t){var n=(ao(t[0])?[t[0]]:X(t[0],`ordgroup`).body).map(function(e){var t=io(e).text;if(`lc`.includes(t))return{type:`align`,align:t};throw new P(`Unknown column alignment: `+t,e)});if(n.length>1)throw new P(`{subarray} can contain only one column`);var r={cols:n,hskipBeforeAndAfter:!1,arraystretch:.5},i=hs(e.parser,r,`script`);if(i.body.length>0&&i.body[0].length>1)throw new P(`{subarray} can contain only one column`);return i},htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`cases`,`dcases`,`rcases`,`drcases`],props:{numArgs:0},handler(e){var t=hs(e.parser,{arraystretch:1.2,cols:[{type:`align`,align:`l`,pregap:0,postgap:1},{type:`align`,align:`l`,pregap:0,postgap:0}]},gs(e.envName));return{type:`leftright`,mode:e.mode,body:[t],left:e.envName.includes(`r`)?`.`:`\\{`,right:e.envName.includes(`r`)?`\\}`:`.`,rightColor:void 0}},htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`align`,`align*`,`aligned`,`split`],props:{numArgs:0},handler:bs,htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`gathered`,`gather`,`gather*`],props:{numArgs:0},handler(e){ps.has(e.envName)&&fs(e);var t={cols:[{type:`align`,align:`c`}],addJot:!0,colSeparationType:`gather`,autoTag:ms(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return hs(e.parser,t,`display`)},htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`alignat`,`alignat*`,`alignedat`],props:{numArgs:1},handler:bs,htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`equation`,`equation*`],props:{numArgs:0},handler(e){fs(e);var t={autoTag:ms(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return hs(e.parser,t,`display`)},htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`CD`],props:{numArgs:0},handler(e){return fs(e),xo(e.parser)},htmlBuilder:_s,mathmlBuilder:ys}),Z(`\\nonumber`,`\\gdef\\@eqnsw{0}`),Z(`\\notag`,`\\nonumber`),J({type:`text`,names:[`\\hline`,`\\hdashline`],numArgs:0,allowedInText:!0,allowedInMath:!0,handler(e,t){throw new P(e.funcName+` valid only within array environment`)}});var xs=os;J({type:`environment`,names:[`\\begin`,`\\end`],numArgs:1,argTypes:[`text`],handler(e,t){var n=e.parser,r=e.funcName,i=t[0];if(i.type!==`ordgroup`)throw new P(`Invalid environment name`,i);var a=oo(i,`Environment name should contain only text characters and spaces`,!0);if(r===`\\begin`){if(!Object.prototype.hasOwnProperty.call(xs,a))throw new P(`No such environment: `+a,i);var o=xs[a],s=n.parseArguments(`\\begin{`+a+`}`,o),c=s.args,l=s.optArgs,u={mode:n.mode,envName:a,parser:n},d=o.handler(u,c,l);n.expect(`\\end`,!1);var f=n.nextToken,p=X(n.parseFunction(),`environment`);if(p.name!==a)throw new P(`Mismatch: \\begin{`+a+`} matched by \\end{`+p.name+`}`,f);return d}return{type:`environment`,mode:n.mode,name:a,nameGroup:i}}});var Ss=(e,t)=>{var n=e.font,r=t.withFont(n);return Sa(e.body,r)},Cs=(e,t)=>{var n=e.font,r=t.withFont(n);return La(e.body,r)},ws={"\\Bbb":`\\mathbb`,"\\bold":`\\mathbf`,"\\frak":`\\mathfrak`};J({type:`font`,names:[`\\mathrm`,`\\mathit`,`\\mathbf`,`\\mathnormal`,`\\mathsfit`,`\\mathbb`,`\\mathcal`,`\\mathfrak`,`\\mathscr`,`\\mathsf`,`\\mathtt`,`\\Bbb`,`\\bold`,`\\frak`],numArgs:1,allowedInArgument:!0,handler:(e,t)=>{var n=e.parser,r=e.funcName,i=ua(t[0]),a=r in ws?ws[r]:r;return{type:`font`,mode:n.mode,font:a.slice(1),body:i}},htmlBuilder:Ss,mathmlBuilder:Cs}),J({type:`mclass`,names:[`\\boldsymbol`,`\\bm`],numArgs:1,handler:(e,t)=>{var n=e.parser,r=t[0];return{type:`mclass`,mode:n.mode,mclass:ho(r),body:[{type:`font`,mode:n.mode,font:`boldsymbol`,body:r}],isCharacterBox:Nn(r)}}}),J({type:`font`,names:[`\\rm`,`\\sf`,`\\tt`,`\\bf`,`\\it`,`\\cal`],numArgs:0,allowedInText:!0,handler:(e,t)=>{var n=e.parser,r=e.funcName,i=e.breakOnTokenText,a=n.mode,o=n.parseExpression(!0,i);return{type:`font`,mode:a,font:`math`+r.slice(1),body:{type:`ordgroup`,mode:n.mode,body:o}}}});var Ts=(e,t)=>{var n=t.style,r=n.fracNum(),i=n.fracDen(),a=t.havingStyle(r),o=Sa(e.numer,a,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,c=3.5/t.fontMetrics().ptPerEm;o.height=o.height<s?s:o.height,o.depth=o.depth<c?c:o.depth}a=t.havingStyle(i);var l=Sa(e.denom,a,t),u,d,f;e.hasBarLine?(e.barSize?(d=wr(e.barSize,t),u=Wi(`frac-line`,t,d)):u=Wi(`frac-line`,t),d=u.height,f=u.height):(u=null,d=0,f=t.fontMetrics().defaultRuleThickness);var p,m,h;n.size===F.DISPLAY.size?(p=t.fontMetrics().num1,m=d>0?3*f:7*f,h=t.fontMetrics().denom1):(d>0?(p=t.fontMetrics().num2,m=f):(p=t.fontMetrics().num3,m=3*f),h=t.fontMetrics().denom2);var g;if(u){var _=t.fontMetrics().axisHeight;p-o.depth-(_+.5*d)<m&&(p+=m-(p-o.depth-(_+.5*d))),_-.5*d-(l.height-h)<m&&(h+=m-(_-.5*d-(l.height-h)));var v=-(_-.5*d);g=Yi({positionType:`individualShift`,children:[{type:`elem`,elem:l,shift:h},{type:`elem`,elem:u,shift:v},{type:`elem`,elem:o,shift:-p}]})}else{var y=p-o.depth-(l.height-h);y<m&&(p+=.5*(m-y),h+=.5*(m-y)),g=Yi({positionType:`individualShift`,children:[{type:`elem`,elem:l,shift:h},{type:`elem`,elem:o,shift:-p}]})}a=t.havingStyle(n),g.height*=a.sizeMultiplier/t.sizeMultiplier,g.depth*=a.sizeMultiplier/t.sizeMultiplier;var b=n.size===F.DISPLAY.size?t.fontMetrics().delim1:n.size===F.SCRIPTSCRIPT.size?t.havingStyle(F.SCRIPT).fontMetrics().delim2:t.fontMetrics().delim2,x=e.leftDelim==null?xa(t,[`mopen`]):$o(e.leftDelim,b,!0,t.havingStyle(n),e.mode,[`mopen`]),S=e.continued?q([]):e.rightDelim==null?xa(t,[`mclose`]):$o(e.rightDelim,b,!0,t.havingStyle(n),e.mode,[`mclose`]);return q([`mord`].concat(a.sizingClasses(t)),[x,q([`mfrac`],[g]),S],t)},Es=(e,t)=>{var n=new Y(`mfrac`,[La(e.numer,t),La(e.denom,t)]);if(!e.hasBarLine)n.setAttribute(`linethickness`,`0px`);else if(e.barSize){var r=wr(e.barSize,t);n.setAttribute(`linethickness`,I(r))}if(e.leftDelim!=null||e.rightDelim!=null){var i=[];if(e.leftDelim!=null){var a=new Y(`mo`,[new Ea(e.leftDelim.replace(`\\`,``))]);a.setAttribute(`fence`,`true`),i.push(a)}if(i.push(n),e.rightDelim!=null){var o=new Y(`mo`,[new Ea(e.rightDelim.replace(`\\`,``))]);o.setAttribute(`fence`,`true`),i.push(o)}return ja(i)}return n},Ds=(e,t)=>t?{type:`styling`,mode:e.mode,style:t,body:[e]}:e;J({type:`genfrac`,names:[`\\cfrac`,`\\dfrac`,`\\frac`,`\\tfrac`,`\\dbinom`,`\\binom`,`\\tbinom`,`\\\\atopfrac`,`\\\\bracefrac`,`\\\\brackfrac`],numArgs:2,allowedInArgument:!0,handler:(e,t)=>{var n=e.parser,r=e.funcName,i=t[0],a=t[1],o,s=null,c=null;switch(r){case`\\cfrac`:case`\\dfrac`:case`\\frac`:case`\\tfrac`:o=!0;break;case`\\\\atopfrac`:o=!1;break;case`\\dbinom`:case`\\binom`:case`\\tbinom`:o=!1,s=`(`,c=`)`;break;case`\\\\bracefrac`:o=!1,s=`\\{`,c=`\\}`;break;case`\\\\brackfrac`:o=!1,s=`[`,c=`]`;break;default:throw Error(`Unrecognized genfrac command`)}var l=r===`\\cfrac`,u=null;return l||r.startsWith(`\\d`)?u=`display`:r.startsWith(`\\t`)&&(u=`text`),Ds({type:`genfrac`,mode:n.mode,numer:i,denom:a,continued:l,hasBarLine:o,leftDelim:s,rightDelim:c,barSize:null},u)},htmlBuilder:Ts,mathmlBuilder:Es}),J({type:`infix`,names:[`\\over`,`\\choose`,`\\atop`,`\\brace`,`\\brack`],numArgs:0,infix:!0,handler(e){var t=e.parser,n=e.funcName,r=e.token,i;switch(n){case`\\over`:i=`\\frac`;break;case`\\choose`:i=`\\binom`;break;case`\\atop`:i=`\\\\atopfrac`;break;case`\\brace`:i=`\\\\bracefrac`;break;case`\\brack`:i=`\\\\brackfrac`;break;default:throw Error(`Unrecognized infix genfrac command`)}return{type:`infix`,mode:t.mode,replaceWith:i,token:r}}});var Os=[`display`,`text`,`script`,`scriptscript`],ks=function(e){var t=null;return e.length>0&&(t=e,t=t===`.`?null:t),t};J({type:`genfrac`,names:[`\\genfrac`],numArgs:6,allowedInArgument:!0,argTypes:[`math`,`math`,`size`,`text`,`math`,`math`],handler(e,t){var n=e.parser,r=t[4],i=t[5],a=ua(t[0]),o=a.type===`atom`&&a.family===`open`?ks(a.text):null,s=ua(t[1]),c=s.type===`atom`&&s.family===`close`?ks(s.text):null,l=X(t[2],`size`),u,d=null;l.isBlank?u=!0:(d=l.value,u=d.number>0);var f=null,p=t[3];if(p.type===`ordgroup`){if(p.body.length>0){var m=X(p.body[0],`textord`);f=Os[Number(m.text)]}}else p=X(p,`textord`),f=Os[Number(p.text)];return Ds({type:`genfrac`,mode:n.mode,numer:r,denom:i,continued:!1,hasBarLine:u,barSize:d,leftDelim:o,rightDelim:c},f)}}),J({type:`infix`,names:[`\\above`],numArgs:1,argTypes:[`size`],infix:!0,handler(e,t){var n=e.parser;e.funcName;var r=e.token;return{type:`infix`,mode:n.mode,replaceWith:`\\\\abovefrac`,size:X(t[0],`size`).value,token:r}}}),J({type:`genfrac`,names:[`\\\\abovefrac`],numArgs:3,argTypes:[`math`,`size`,`math`],handler:(e,t)=>{var n=e.parser;e.funcName;var r=t[0],i=X(t[1],`infix`).size;if(!i)throw Error(`\\\\abovefrac expected size, but got `+String(i));var a=t[2],o=i.number>0;return{type:`genfrac`,mode:n.mode,numer:r,denom:a,continued:!1,hasBarLine:o,barSize:i,leftDelim:null,rightDelim:null}}});var As=(e,t)=>{var n=t.style,r,i;e.type===`supsub`?(r=e.sup?Sa(e.sup,t.havingStyle(n.sup()),t):Sa(e.sub,t.havingStyle(n.sub()),t),i=X(e.base,`horizBrace`)):i=X(e,`horizBrace`);var a=Sa(i.base,t.havingBaseStyle(F.DISPLAY)),o=Za(i,t),s=i.isOver?Yi({positionType:`firstBaseline`,children:[{type:`elem`,elem:a},{type:`kern`,size:.1},{type:`elem`,elem:o,wrapperClasses:[`svg-align`]}]}):Yi({positionType:`bottom`,positionData:a.depth+.1+o.height,children:[{type:`elem`,elem:o,wrapperClasses:[`svg-align`]},{type:`kern`,size:.1},{type:`elem`,elem:a}]});if(r){var c=q([`minner`,i.isOver?`mover`:`munder`],[s],t);s=i.isOver?Yi({positionType:`firstBaseline`,children:[{type:`elem`,elem:c},{type:`kern`,size:.2},{type:`elem`,elem:r}]}):Yi({positionType:`bottom`,positionData:c.depth+.2+r.height+r.depth,children:[{type:`elem`,elem:r},{type:`kern`,size:.2},{type:`elem`,elem:c}]})}return q([`minner`,i.isOver?`mover`:`munder`],[s],t)};J({type:`horizBrace`,names:[`\\overbrace`,`\\underbrace`,`\\overbracket`,`\\underbracket`],numArgs:1,handler(e,t){var n=e.parser,r=e.funcName;return{type:`horizBrace`,mode:n.mode,label:r,isOver:r.includes(`\\over`),base:t[0]}},htmlBuilder:As,mathmlBuilder:(e,t)=>{var n=Ja(e.label);return new Y(e.isOver?`mover`:`munder`,[La(e.base,t),n])}}),J({type:`href`,names:[`\\href`],numArgs:2,argTypes:[`url`,`original`],allowedInText:!0,handler:(e,t)=>{var n=e.parser,r=t[1],i=X(t[0],`url`).url;return n.settings.isTrusted({command:`\\href`,url:i})?{type:`href`,mode:n.mode,href:i,body:da(r)}:n.formatUnsupportedCmd(`\\href`)},htmlBuilder:(e,t)=>{var n=ga(e.body,t,!1);return Gi(e.href,[],n,t)},mathmlBuilder:(e,t)=>{var n=Ia(e.body,t);return n instanceof Y||(n=new Y(`mrow`,[n])),n.setAttribute(`href`,e.href),n}}),J({type:`href`,names:[`\\url`],numArgs:1,argTypes:[`url`],allowedInText:!0,handler:(e,t)=>{var n=e.parser,r=X(t[0],`url`).url;if(!n.settings.isTrusted({command:`\\url`,url:r}))return n.formatUnsupportedCmd(`\\url`);for(var i=[],a=0;a<r.length;a++){var o=r[a];o===`~`&&(o=`\\textasciitilde`),i.push({type:`textord`,mode:`text`,text:o})}var s={type:`text`,mode:n.mode,font:`\\texttt`,body:i};return{type:`href`,mode:n.mode,href:r,body:da(s)}}}),J({type:`hbox`,names:[`\\hbox`],numArgs:1,argTypes:[`text`],allowedInText:!0,primitive:!0,handler(e,t){return{type:`hbox`,mode:e.parser.mode,body:da(t[0])}},htmlBuilder(e,t){return Ki(ga(e.body,t.withFont(``),!1))},mathmlBuilder(e,t){return new Y(`mrow`,Fa(e.body,t.withFont(``)))}}),J({type:`html`,names:[`\\htmlClass`,`\\htmlId`,`\\htmlStyle`,`\\htmlData`],numArgs:2,argTypes:[`raw`,`original`],allowedInText:!0,handler:(e,t)=>{var n=e.parser,r=e.funcName;e.token;var i=X(t[0],`raw`).string,a=t[1];n.settings.strict&&n.settings.reportNonstrict(`htmlExtension`,`HTML extension is disabled on strict mode`);var o,s={};switch(r){case`\\htmlClass`:s.class=i,o={command:`\\htmlClass`,class:i};break;case`\\htmlId`:s.id=i,o={command:`\\htmlId`,id:i};break;case`\\htmlStyle`:s.style=i,o={command:`\\htmlStyle`,style:i};break;case`\\htmlData`:for(var c=`{,}`,l=[],u=``,d=0;d<i.length;d++)i.startsWith(c,d)?(u+=`,`,d+=c.length-1):i[d]===`,`?(l.push(u),u=``):u+=i[d];l.push(u);for(var f=0;f<l.length;f++){var p=l[f],m=p.indexOf(`=`);if(m<0)throw new P(`\\htmlData key/value '`+p+`' missing equals sign`);var h=p.slice(0,m),g=p.slice(m+1);s[`data-`+h.trim()]=g}o={command:`\\htmlData`,attributes:s};break;default:throw Error(`Unrecognized html command`)}return n.settings.isTrusted(o)?{type:`html`,mode:n.mode,attributes:s,body:da(a)}:n.formatUnsupportedCmd(r)},htmlBuilder:(e,t)=>{var n=ga(e.body,t,!1),r=[`enclosing`];e.attributes.class&&r.push(...e.attributes.class.trim().split(/\s+/));var i=q(r,n,t);for(var a of Object.entries(e.attributes)){var o=a[0],s=a[1];o!==`class`&&i.setAttribute(o,s)}return i},mathmlBuilder:(e,t)=>Ia(e.body,t)}),J({type:`htmlmathml`,names:[`\\html@mathml`],numArgs:2,allowedInArgument:!0,allowedInText:!0,handler:(e,t)=>({type:`htmlmathml`,mode:e.parser.mode,html:da(t[0]),mathml:da(t[1])}),htmlBuilder:(e,t)=>Ki(ga(e.html,t,!1)),mathmlBuilder:(e,t)=>Ia(e.mathml,t)});var js=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:`bp`};var t=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!t)throw new P(`Invalid size: '`+e+`' in \\includegraphics`);var n={number:+(t[1]+t[2]),unit:t[3]};if(!Cr(n))throw new P(`Invalid unit: '`+n.unit+`' in \\includegraphics.`);return n};J({type:`includegraphics`,names:[`\\includegraphics`],numArgs:1,numOptionalArgs:1,argTypes:[`raw`,`url`],allowedInText:!1,handler:(e,t,n)=>{var r=e.parser,i={number:0,unit:`em`},a={number:.9,unit:`em`},o={number:0,unit:`em`},s=``;if(n[0])for(var c=X(n[0],`raw`).string.split(`,`),l=0;l<c.length;l++){var u=c[l].split(`=`);if(u.length===2){var d=u[1].trim();switch(u[0].trim()){case`alt`:s=d;break;case`width`:i=js(d);break;case`height`:a=js(d);break;case`totalheight`:o=js(d);break;default:throw new P(`Invalid key: '`+u[0]+`' in \\includegraphics.`)}}}var f=X(t[0],`url`).url;return s===``&&(s=f,s=s.replace(/^.*[\\/]/,``),s=s.substring(0,s.lastIndexOf(`.`))),r.settings.isTrusted({command:`\\includegraphics`,url:f})?{type:`includegraphics`,mode:r.mode,alt:s,width:i,height:a,totalheight:o,src:f}:r.formatUnsupportedCmd(`\\includegraphics`)},htmlBuilder:(e,t)=>{var n=wr(e.height,t),r=0;e.totalheight.number>0&&(r=wr(e.totalheight,t)-n);var i=0;e.width.number>0&&(i=wr(e.width,t));var a={height:I(n+r)};i>0&&(a.width=I(i)),r>0&&(a.verticalAlign=I(-r));var o=new Nr(e.src,e.alt,a);return o.height=n,o.depth=r,o},mathmlBuilder:(e,t)=>{var n=new Y(`mglyph`,[]);n.setAttribute(`alt`,e.alt);var r=wr(e.height,t),i=0;if(e.totalheight.number>0&&(i=wr(e.totalheight,t)-r,n.setAttribute(`valign`,I(-i))),n.setAttribute(`height`,I(r+i)),e.width.number>0){var a=wr(e.width,t);n.setAttribute(`width`,I(a))}return n.setAttribute(`src`,e.src),n}}),J({type:`kern`,names:[`\\kern`,`\\mkern`,`\\hskip`,`\\mskip`],numArgs:1,argTypes:[`size`],primitive:!0,allowedInText:!0,handler(e,t){var n=e.parser,r=e.funcName,i=X(t[0],`size`);if(n.settings.strict){var a=r[1]===`m`,o=i.value.unit===`mu`;a?(o||n.settings.reportNonstrict(`mathVsTextUnits`,`LaTeX's `+r+` supports only mu units, `+(`not `+i.value.unit+` units`)),n.mode!==`math`&&n.settings.reportNonstrict(`mathVsTextUnits`,`LaTeX's `+r+` works only in math mode`)):o&&n.settings.reportNonstrict(`mathVsTextUnits`,`LaTeX's `+r+` doesn't support mu units`)}return{type:`kern`,mode:n.mode,dimension:i.value}},htmlBuilder(e,t){return Xi(e.dimension,t)},mathmlBuilder(e,t){return new Da(wr(e.dimension,t))}}),J({type:`lap`,names:[`\\mathllap`,`\\mathrlap`,`\\mathclap`],numArgs:1,allowedInText:!0,handler:(e,t)=>{var n=e.parser,r=e.funcName,i=t[0];return{type:`lap`,mode:n.mode,alignment:r.slice(5),body:i}},htmlBuilder:(e,t)=>{var n;e.alignment===`clap`?(n=q([],[Sa(e.body,t)]),n=q([`katex-inner`],[n],t)):n=q([`katex-inner`],[Sa(e.body,t)]);var r=q([`katex-fix`],[]),i=q([e.alignment],[n,r],t),a=q([`katex-strut`]);return a.style.height=I(i.height+i.depth),i.depth&&(a.style.verticalAlign=I(-i.depth)),i.children.unshift(a),i=q([`katex-thinbox`],[i],t),q([`mord`,`katex-vbox`],[i],t)},mathmlBuilder:(e,t)=>{var n=new Y(`mpadded`,[La(e.body,t)]);if(e.alignment!==`rlap`){var r=e.alignment===`llap`?`-1`:`-0.5`;n.setAttribute(`lspace`,r+`width`)}return n.setAttribute(`width`,`0px`),n}}),J({type:`styling`,names:[`\\(`,`$`],numArgs:0,allowedInText:!0,allowedInMath:!1,handler(e,t){var n=e.funcName,r=e.parser,i=r.mode;r.switchMode(`math`);var a=n===`\\(`?`\\)`:`$`,o=r.parseExpression(!1,a);return r.expect(a),r.switchMode(i),{type:`styling`,mode:r.mode,style:`text`,resetFont:!0,body:o}}}),J({type:`text`,names:[`\\)`,`\\]`],numArgs:0,allowedInText:!0,allowedInMath:!1,handler(e,t){throw new P(`Mismatched `+e.funcName)}});var Ms=(e,t)=>{switch(t.style.size){case F.DISPLAY.size:return e.display;case F.TEXT.size:return e.text;case F.SCRIPT.size:return e.script;case F.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};J({type:`mathchoice`,names:[`\\mathchoice`],numArgs:4,primitive:!0,handler:(e,t)=>({type:`mathchoice`,mode:e.parser.mode,display:da(t[0]),text:da(t[1]),script:da(t[2]),scriptscript:da(t[3])}),htmlBuilder:(e,t)=>Ki(ga(Ms(e,t),t,!1)),mathmlBuilder:(e,t)=>Ia(Ms(e,t),t)});var Ns=(e,t,n,r,i,a,o)=>{e=q([],[e]);var s=n&&Nn(n),c,l;if(t){var u=Sa(t,r.havingStyle(i.sup()),r);l={elem:u,kern:Math.max(r.fontMetrics().bigOpSpacing1,r.fontMetrics().bigOpSpacing3-u.depth)}}if(n){var d=Sa(n,r.havingStyle(i.sub()),r);c={elem:d,kern:Math.max(r.fontMetrics().bigOpSpacing2,r.fontMetrics().bigOpSpacing4-d.height)}}var f;if(l&&c)f=Yi({positionType:`bottom`,positionData:r.fontMetrics().bigOpSpacing5+c.elem.height+c.elem.depth+c.kern+e.depth+o,children:[{type:`kern`,size:r.fontMetrics().bigOpSpacing5},{type:`elem`,elem:c.elem,marginLeft:I(-a)},{type:`kern`,size:c.kern},{type:`elem`,elem:e},{type:`kern`,size:l.kern},{type:`elem`,elem:l.elem,marginLeft:I(a)},{type:`kern`,size:r.fontMetrics().bigOpSpacing5}]});else if(c)f=Yi({positionType:`top`,positionData:e.height-o,children:[{type:`kern`,size:r.fontMetrics().bigOpSpacing5},{type:`elem`,elem:c.elem,marginLeft:I(-a)},{type:`kern`,size:c.kern},{type:`elem`,elem:e}]});else if(l)f=Yi({positionType:`bottom`,positionData:e.depth+o,children:[{type:`elem`,elem:e},{type:`kern`,size:l.kern},{type:`elem`,elem:l.elem,marginLeft:I(a)},{type:`kern`,size:r.fontMetrics().bigOpSpacing5}]});else return e;var p=[f];if(c&&a!==0&&!s){var m=q([`mspace`],[],r);m.style.marginRight=I(a),p.unshift(m)}return q([`mop`,`op-limits`],p,r)},Ps=new Set([`\\smallint`]),Fs=(e,t)=>{var n,r,i=!1,a;e.type===`supsub`?(n=e.sup,r=e.sub,a=X(e.base,`op`),i=!0):a=X(e,`op`);var o=t.style,s=!1;o.size===F.DISPLAY.size&&a.symbol&&!Ps.has(a.name)&&(s=!0);var c,l;if(a.symbol){var u=s?`Size2-Regular`:`Size1-Regular`,d=``;if((a.name===`\\oiint`||a.name===`\\oiiint`)&&(d=a.name.slice(1),a.name=d===`oiint`?`\\iint`:`\\iiint`),c=Ii(a.name,u,`math`,t,[`mop`,`op-symbol`,s?`large-op`:`small-op`]),l=c.italic,d.length>0){var f=ea(d+`Size`+(s?`2`:`1`),t);c=Yi({positionType:`individualShift`,children:[{type:`elem`,elem:c,shift:0},{type:`elem`,elem:f,shift:s?.08:0}]}),a.name=`\\`+d,c.classes.unshift(`mop`),c.italic=l}}else if(a.body){var p=ga(a.body,t,!0);p.length===1&&p[0]instanceof Fr?(c=p[0],c.classes[0]=`mop`):c=q([`mop`],p,t)}else{for(var m=[],h=1;h<a.name.length;h++)m.push(Li(a.name[h],a.mode,t));c=q([`mop`],m,t)}var g=0,_=0;return(c instanceof Fr||a.name===`\\oiint`||a.name===`\\oiiint`)&&!a.suppressBaseShift&&(g=(c.height-c.depth)/2-t.fontMetrics().axisHeight,_=c.italic??0),i?Ns(c,n,r,t,o,_,g):(g&&(c.style.position=`relative`,c.style.top=I(g)),c)},Is=(e,t)=>{var n;if(e.symbol)n=new Y(`mo`,[Aa(e.name,e.mode)]),Ps.has(e.name)&&n.setAttribute(`largeop`,`false`);else if(e.body)n=new Y(`mo`,Fa(e.body,t));else{n=new Y(`mi`,[new Ea(e.name.slice(1))]);var r=new Y(`mo`,[Aa(`⁡`,`text`)]);n=e.parentIsSupSub?new Y(`mrow`,[n,r]):Ta([n,r])}return n},Ls={"∏":`\\prod`,"∐":`\\coprod`,"∑":`\\sum`,"⋀":`\\bigwedge`,"⋁":`\\bigvee`,"⋂":`\\bigcap`,"⋃":`\\bigcup`,"⨀":`\\bigodot`,"⨁":`\\bigoplus`,"⨂":`\\bigotimes`,"⨄":`\\biguplus`,"⨆":`\\bigsqcup`};J({type:`op`,names:`\\coprod.\\bigvee.\\bigwedge.\\biguplus.\\bigcap.\\bigcup.\\intop.\\prod.\\sum.\\bigotimes.\\bigoplus.\\bigodot.\\bigsqcup.\\smallint.∏.∐.∑.⋀.⋁.⋂.⋃.⨀.⨁.⨂.⨄.⨆`.split(`.`),numArgs:0,handler:(e,t)=>{var n=e.parser,r=e.funcName;return r.length===1&&(r=Ls[r]),{type:`op`,mode:n.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:Fs,mathmlBuilder:Is}),J({type:`op`,names:[`\\mathop`],numArgs:1,primitive:!0,handler:(e,t)=>{var n=e.parser,r=t[0];return{type:`op`,mode:n.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:da(r)}}});var Rs={"∫":`\\int`,"∬":`\\iint`,"∭":`\\iiint`,"∮":`\\oint`,"∯":`\\oiint`,"∰":`\\oiiint`};J({type:`op`,names:`\\arcsin.\\arccos.\\arctan.\\arctg.\\arcctg.\\arg.\\ch.\\cos.\\cosec.\\cosh.\\cot.\\cotg.\\coth.\\csc.\\ctg.\\cth.\\deg.\\dim.\\exp.\\hom.\\ker.\\lg.\\ln.\\log.\\sec.\\sin.\\sinh.\\sh.\\tan.\\tanh.\\tg.\\th`.split(`.`),numArgs:0,handler(e){var t=e.parser,n=e.funcName;return{type:`op`,mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:n}}}),J({type:`op`,names:[`\\det`,`\\gcd`,`\\inf`,`\\lim`,`\\max`,`\\min`,`\\Pr`,`\\sup`],numArgs:0,handler(e){var t=e.parser,n=e.funcName;return{type:`op`,mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:n}}}),J({type:`op`,names:[`\\int`,`\\iint`,`\\iiint`,`\\oint`,`\\oiint`,`\\oiiint`,`∫`,`∬`,`∭`,`∮`,`∯`,`∰`],numArgs:0,allowedInArgument:!0,handler(e){var t=e.parser,n=e.funcName;return n.length===1&&(n=Rs[n]),{type:`op`,mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}}});var zs=(e,t)=>{var n,r,i=!1,a;e.type===`supsub`?(n=e.sup,r=e.sub,a=X(e.base,`operatorname`),i=!0):a=X(e,`operatorname`);var o;if(a.body.length>0){for(var s=ga(a.body.map(e=>{var t=`text`in e?e.text:void 0;return typeof t==`string`?{type:`textord`,mode:e.mode,text:t}:e}),t.withFont(`mathrm`),!0),c=0;c<s.length;c++){var l=s[c];l instanceof Fr&&(l.text=l.text.replace(/\u2212/,`-`).replace(/\u2217/,`*`))}o=q([`mop`],s,t)}else o=q([`mop`],[],t);return i?Ns(o,n,r,t,t.style,0,0):o};J({type:`operatorname`,names:[`\\operatorname@`,`\\operatornamewithlimits`],numArgs:1,handler:(e,t)=>{var n=e.parser,r=e.funcName,i=t[0];return{type:`operatorname`,mode:n.mode,body:da(i),alwaysHandleSupSub:r===`\\operatornamewithlimits`,limits:!1,parentIsSupSub:!1}},htmlBuilder:zs,mathmlBuilder:(e,t)=>{for(var n=Fa(e.body,t.withFont(`mathrm`)),r=!0,i=0;i<n.length;i++){var a=n[i];if(!(a instanceof Da))if(a instanceof Y)switch(a.type){case`mi`:case`mn`:case`mspace`:case`mtext`:break;case`mo`:var o=a.children[0];a.children.length===1&&o instanceof Ea?o.text=o.text.replace(/\u2212/,`-`).replace(/\u2217/,`*`):r=!1;break;default:r=!1}else r=!1}r&&(n=[new Ea(n.map(e=>e.toText()).join(``))]);var s=new Y(`mi`,n);s.setAttribute(`mathvariant`,`normal`);var c=new Y(`mo`,[Aa(`⁡`,`text`)]);return e.parentIsSupSub?new Y(`mrow`,[s,c]):Ta([s,c])}}),Z(`\\operatorname`,`\\@ifstar\\operatornamewithlimits\\operatorname@`),la({type:`ordgroup`,htmlBuilder(e,t){return e.semisimple?Ki(ga(e.body,t,!1)):q([`mord`],ga(e.body,t,!0),t)},mathmlBuilder(e,t){return Ia(e.body,t,!0)}}),J({type:`overline`,names:[`\\overline`],numArgs:1,handler(e,t){var n=e.parser,r=t[0];return{type:`overline`,mode:n.mode,body:r}},htmlBuilder(e,t){var n=Sa(e.body,t.havingCrampedStyle()),r=Wi(`overline-line`,t),i=t.fontMetrics().defaultRuleThickness;return q([`mord`,`katex-overline`],[Yi({positionType:`firstBaseline`,children:[{type:`elem`,elem:n},{type:`kern`,size:3*i},{type:`elem`,elem:r},{type:`kern`,size:i}]})],t)},mathmlBuilder(e,t){var n=new Y(`mo`,[new Ea(`‾`)]);n.setAttribute(`stretchy`,`true`);var r=new Y(`mover`,[La(e.body,t),n]);return r.setAttribute(`accent`,`true`),r}}),J({type:`phantom`,names:[`\\phantom`],numArgs:1,allowedInText:!0,handler:(e,t)=>{var n=e.parser,r=t[0];return{type:`phantom`,mode:n.mode,body:da(r)}},htmlBuilder:(e,t)=>Ki(ga(e.body,t.withPhantom(),!1)),mathmlBuilder:(e,t)=>new Y(`mphantom`,Fa(e.body,t))}),Z(`\\hphantom`,`\\smash{\\phantom{#1}}`),J({type:`vphantom`,names:[`\\vphantom`],numArgs:1,allowedInText:!0,handler:(e,t)=>{var n=e.parser,r=t[0];return{type:`vphantom`,mode:n.mode,body:r}},htmlBuilder:(e,t)=>q([`mord`,`rlap`],[q([`katex-inner`],[Sa(e.body,t.withPhantom())]),q([`katex-fix`],[])],t),mathmlBuilder:(e,t)=>{var n=new Y(`mpadded`,[new Y(`mphantom`,Fa(da(e.body),t))]);return n.setAttribute(`width`,`0px`),n}}),J({type:`raisebox`,names:[`\\raisebox`],numArgs:2,argTypes:[`size`,`hbox`],allowedInText:!0,handler(e,t){var n=e.parser,r=X(t[0],`size`).value,i=t[1];return{type:`raisebox`,mode:n.mode,dy:r,body:i}},htmlBuilder(e,t){var n=Sa(e.body,t);return Yi({positionType:`shift`,positionData:-wr(e.dy,t),children:[{type:`elem`,elem:n}]})},mathmlBuilder(e,t){var n=new Y(`mpadded`,[La(e.body,t)]),r=e.dy.number+e.dy.unit;return n.setAttribute(`voffset`,r),n}});var Bs=(e,t)=>({type:`reflectbox`,mode:e.parser.mode,body:t[0]});J({type:`reflectbox`,names:[`\\reflectbox`],numArgs:1,argTypes:[`hbox`],allowedInText:!0,handler:Bs,htmlBuilder(e,t){return q([`mord`,`reflectbox`],[Sa(e.body,t)],t)},mathmlBuilder(e,t){return La(e.body,t)}}),J({type:`reflectbox`,names:[`\\mathreflectbox`],numArgs:1,argTypes:[`math`],handler:Bs}),J({type:`internal`,names:[`\\relax`],numArgs:0,allowedInText:!0,allowedInArgument:!0,handler(e){return{type:`internal`,mode:e.parser.mode}}}),J({type:`rule`,names:[`\\rule`],numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:[`size`,`size`,`size`],handler(e,t,n){var r=e.parser,i=n[0],a=X(t[0],`size`),o=X(t[1],`size`);return{type:`rule`,mode:r.mode,shift:i&&X(i,`size`).value,width:a.value,height:o.value}},htmlBuilder(e,t){var n=q([`mord`,`katex-rule`],[],t),r=wr(e.width,t),i=wr(e.height,t),a=e.shift?wr(e.shift,t):0;return n.style.borderRightWidth=I(r),n.style.borderTopWidth=I(i),n.style.bottom=I(a),n.width=r,n.height=i+a,n.depth=-a,n.maxFontSize=i*1.125*t.sizeMultiplier,n},mathmlBuilder(e,t){var n=wr(e.width,t),r=wr(e.height,t),i=e.shift?wr(e.shift,t):0,a=t.color&&t.getColor()||`black`,o=new Y(`mspace`);o.setAttribute(`mathbackground`,a),o.setAttribute(`width`,I(n)),o.setAttribute(`height`,I(r));var s=new Y(`mpadded`,[o]);return i>=0?s.setAttribute(`height`,I(i)):(s.setAttribute(`height`,I(i)),s.setAttribute(`depth`,I(-i))),s.setAttribute(`voffset`,I(i)),s}});function Vs(e,t,n){for(var r=ga(e,t,!1),i=t.sizeMultiplier/n.sizeMultiplier,a=0;a<r.length;a++){var o=r[a].classes.indexOf(`katex-sizing`);o<0?Array.prototype.push.apply(r[a].classes,t.sizingClasses(n)):r[a].classes[o+1]===`reset-size`+t.size&&(r[a].classes[o+1]=`reset-size`+n.size),r[a].height*=i,r[a].depth*=i}return Ki(r)}var Hs=[`\\tiny`,`\\sixptsize`,`\\scriptsize`,`\\footnotesize`,`\\small`,`\\normalsize`,`\\large`,`\\Large`,`\\LARGE`,`\\huge`,`\\Huge`];J({type:`sizing`,names:Hs,numArgs:0,allowedInText:!0,handler:(e,t)=>{var n=e.breakOnTokenText,r=e.funcName,i=e.parser,a=i.parseExpression(!1,n);return{type:`sizing`,mode:i.mode,size:Hs.indexOf(r)+1,body:a}},htmlBuilder:(e,t)=>{var n=t.havingSize(e.size);return Vs(e.body,n,t)},mathmlBuilder:(e,t)=>{var n=t.havingSize(e.size),r=new Y(`mstyle`,Fa(e.body,n));return r.setAttribute(`mathsize`,I(n.sizeMultiplier)),r}}),J({type:`smash`,names:[`\\smash`],numArgs:1,numOptionalArgs:1,allowedInText:!0,handler:(e,t,n)=>{var r=e.parser,i=!1,a=!1,o=n[0]&&X(n[0],`ordgroup`);if(o)for(var s,c=0;c<o.body.length;++c){var l=o.body[c];if(s=io(l).text,s===`t`)i=!0;else if(s===`b`)a=!0;else{i=!1,a=!1;break}}else i=!0,a=!0;var u=t[0];return{type:`smash`,mode:r.mode,body:u,smashHeight:i,smashDepth:a}},htmlBuilder:(e,t)=>{var n=q([],[Sa(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return n;if(e.smashHeight&&(n.height=0),e.smashDepth&&(n.depth=0),e.smashHeight&&e.smashDepth)return q([`mord`,`katex-smash`],[n],t);if(n.children)for(var r=0;r<n.children.length;r++)e.smashHeight&&(n.children[r].height=0),e.smashDepth&&(n.children[r].depth=0);return q([`mord`],[Yi({positionType:`firstBaseline`,children:[{type:`elem`,elem:n}]})],t)},mathmlBuilder:(e,t)=>{var n=new Y(`mpadded`,[La(e.body,t)]);return e.smashHeight&&n.setAttribute(`height`,`0px`),e.smashDepth&&n.setAttribute(`depth`,`0px`),n}}),J({type:`sqrt`,names:[`\\sqrt`],numArgs:1,numOptionalArgs:1,handler(e,t,n){var r=e.parser,i=n[0],a=t[0];return{type:`sqrt`,mode:r.mode,body:a,index:i}},htmlBuilder(e,t){var n=Sa(e.body,t.havingCrampedStyle());n.height===0&&(n.height=t.fontMetrics().xHeight),n=qi(n,t);var r=t.fontMetrics().defaultRuleThickness,i=r;t.style.id<F.TEXT.id&&(i=t.fontMetrics().xHeight);var a=r+i/4,o=Ho(n.height+n.depth+a+r,t),s=o.span,c=o.ruleWidth,l=o.advanceWidth,u=s.height-c;u>n.height+n.depth+a&&(a=(a+u-n.height-n.depth)/2);var d=s.height-n.height-a-c;n.style.paddingLeft=I(l);var f=Yi({positionType:`firstBaseline`,children:[{type:`elem`,elem:n,wrapperClasses:[`svg-align`]},{type:`kern`,size:-(n.height+d)},{type:`elem`,elem:s},{type:`kern`,size:c}]});if(e.index){var p=t.havingStyle(F.SCRIPTSCRIPT),m=Sa(e.index,p,t);return q([`mord`,`sqrt`],[q([`katex-root`],[Yi({positionType:`shift`,positionData:-(.6*(f.height-f.depth)),children:[{type:`elem`,elem:m}]})]),f],t)}else return q([`mord`,`sqrt`],[f],t)},mathmlBuilder(e,t){var n=e.body,r=e.index;return r?new Y(`mroot`,[La(n,t),La(r,t)]):new Y(`msqrt`,[La(n,t)])}});var Us={display:F.DISPLAY,text:F.TEXT,script:F.SCRIPT,scriptscript:F.SCRIPTSCRIPT};function Ws(e){return e in Us}J({type:`styling`,names:[`\\displaystyle`,`\\textstyle`,`\\scriptstyle`,`\\scriptscriptstyle`],numArgs:0,allowedInText:!0,primitive:!0,handler(e,t){var n=e.breakOnTokenText,r=e.funcName,i=e.parser,a=i.parseExpression(!0,n),o=r.slice(1,r.length-5);if(!Ws(o))throw Error(`Unknown style: `+o);return{type:`styling`,mode:i.mode,style:o,body:a}},htmlBuilder(e,t){var n=Us[e.style],r=t.havingStyle(n);return e.resetFont&&(r=r.withFont(``)),Vs(e.body,r,t)},mathmlBuilder(e,t){var n=Us[e.style],r=t.havingStyle(n);e.resetFont&&(r=r.withFont(``));var i=new Y(`mstyle`,Fa(e.body,r)),a={display:[`0`,`true`],text:[`0`,`false`],script:[`1`,`false`],scriptscript:[`2`,`false`]}[e.style];return i.setAttribute(`scriptlevel`,a[0]),i.setAttribute(`displaystyle`,a[1]),i}});var Gs=function(e,t){var n=e.base;return n?n.type===`op`?n.limits&&(t.style.size===F.DISPLAY.size||n.alwaysHandleSupSub)?Fs:null:n.type===`operatorname`?n.alwaysHandleSupSub&&(t.style.size===F.DISPLAY.size||n.limits)?zs:null:n.type===`accent`?Nn(n.base)?co:null:n.type===`horizBrace`&&!e.sub===n.isOver?As:null:null};la({type:`supsub`,htmlBuilder(e,t){var n=Gs(e,t);if(n)return n(e,t);var r=e.base,i=e.sup,a=e.sub,o=Sa(r,t),s,c,l=t.fontMetrics(),u=0,d=0,f=r&&Nn(r);if(i){var p=t.havingStyle(t.style.sup());s=Sa(i,p,t),f||(u=o.height-p.fontMetrics().supDrop*p.sizeMultiplier/t.sizeMultiplier)}if(a){var m=t.havingStyle(t.style.sub());c=Sa(a,m,t),f||(d=o.depth+m.fontMetrics().subDrop*m.sizeMultiplier/t.sizeMultiplier)}var h=t.style===F.DISPLAY?l.sup1:t.style.cramped?l.sup3:l.sup2,g=t.sizeMultiplier,_=I(.5/l.ptPerEm/g),v=null;if(c){var y=e.base&&e.base.type===`op`&&e.base.name&&(e.base.name===`\\oiint`||e.base.name===`\\oiiint`);(o instanceof Fr||y)&&(v=I(-(o.italic??0)))}var b;if(s&&c){u=Math.max(u,h,s.depth+.25*l.xHeight),d=Math.max(d,l.sub2);var x=4*l.defaultRuleThickness;if(u-s.depth-(c.height-d)<x){d=x-(u-s.depth)+c.height;var S=.8*l.xHeight-(u-s.depth);S>0&&(u+=S,d-=S)}b=Yi({positionType:`individualShift`,children:[{type:`elem`,elem:c,shift:d,marginRight:_,marginLeft:v},{type:`elem`,elem:s,shift:-u,marginRight:_}]})}else if(c)d=Math.max(d,l.sub1,c.height-.8*l.xHeight),b=Yi({positionType:`shift`,positionData:d,children:[{type:`elem`,elem:c,marginLeft:v,marginRight:_}]});else if(s)u=Math.max(u,h,s.depth+.25*l.xHeight),b=Yi({positionType:`shift`,positionData:-u,children:[{type:`elem`,elem:s,marginRight:_}]});else throw Error(`supsub must have either sup or sub.`);return q([ba(o,`right`)||`mord`],[o,q([`msupsub`],[b])],t)},mathmlBuilder(e,t){var n=!1,r,i;e.base&&e.base.type===`horizBrace`&&(i=!!e.sup,i===e.base.isOver&&(n=!0,r=e.base.isOver)),e.base&&(e.base.type===`op`||e.base.type===`operatorname`)&&(e.base.parentIsSupSub=!0);var a=[La(e.base,t)];e.sub&&a.push(La(e.sub,t)),e.sup&&a.push(La(e.sup,t));var o;if(n)o=r?`mover`:`munder`;else if(!e.sub){var s=e.base;o=s&&s.type===`op`&&s.limits&&(t.style===F.DISPLAY||s.alwaysHandleSupSub)||s&&s.type===`operatorname`&&s.alwaysHandleSupSub&&(s.limits||t.style===F.DISPLAY)?`mover`:`msup`}else if(e.sup){var c=e.base;o=c&&c.type===`op`&&c.limits&&t.style===F.DISPLAY||c&&c.type===`operatorname`&&c.alwaysHandleSupSub&&(t.style===F.DISPLAY||c.limits)?`munderover`:`msubsup`}else{var l=e.base;o=l&&l.type===`op`&&l.limits&&(t.style===F.DISPLAY||l.alwaysHandleSupSub)||l&&l.type===`operatorname`&&l.alwaysHandleSupSub&&(l.limits||t.style===F.DISPLAY)?`munder`:`msub`}return new Y(o,a)}}),la({type:`atom`,htmlBuilder(e,t){return Li(e.text,e.mode,t,[`m`+e.family])},mathmlBuilder(e,t){var n=new Y(`mo`,[Aa(e.text,e.mode)]);if(e.family===`bin`){var r=Na(e,t);r===`bold-italic`&&n.setAttribute(`mathvariant`,r)}else e.family===`punct`?n.setAttribute(`separator`,`true`):(e.family===`open`||e.family===`close`)&&n.setAttribute(`stretchy`,`false`);return n}});var Ks={mi:`italic`,mn:`normal`,mtext:`normal`};la({type:`mathord`,htmlBuilder(e,t){return zi(e,t)},mathmlBuilder(e,t){var n=new Y(`mi`,[Aa(e.text,e.mode,t)]),r=Na(e,t)||`italic`;return r!==Ks[n.type]&&n.setAttribute(`mathvariant`,r),n}}),la({type:`textord`,htmlBuilder(e,t){return zi(e,t)},mathmlBuilder(e,t){var n=Aa(e.text,e.mode,t),r=Na(e,t)||`normal`,i=e.mode===`text`?new Y(`mtext`,[n]):/[0-9]/.test(e.text)?new Y(`mn`,[n]):e.text===`\\prime`?new Y(`mo`,[n]):new Y(`mi`,[n]);return r!==Ks[i.type]&&i.setAttribute(`mathvariant`,r),i}});var qs=new Map([[`\\nobreak`,`nobreak`],[`\\allowbreak`,`allowbreak`]]),Js=new Map([[` `,{}],[`\\ `,{}],[`~`,{className:`nobreak`}],[`\\space`,{}],[`\\nobreakspace`,{className:`nobreak`}]]);la({type:`spacing`,htmlBuilder(e,t){var n=Js.get(e.text),r=qs.get(e.text);if(n){var i=n.className||``;if(e.mode===`text`){var a=zi(e,t);return a.classes.push(i),a}else return q([`mspace`,i],[Li(e.text,e.mode,t)],t)}else if(r)return q([`mspace`,r],[],t);else throw new P(`Unknown type of space "`+e.text+`"`)},mathmlBuilder(e,t){var n;if(Js.has(e.text))n=new Y(`mtext`,[new Ea(`\xA0`)]);else if(qs.has(e.text))return new Y(`mspace`);else throw new P(`Unknown type of space "`+e.text+`"`);return n}});var Ys=()=>{var e=new Y(`mtd`,[]);return e.setAttribute(`width`,`50%`),e};la({type:`tag`,mathmlBuilder(e,t){var n=new Y(`mtable`,[new Y(`mtr`,[Ys(),new Y(`mtd`,[Ia(e.body,t)]),Ys(),new Y(`mtd`,[Ia(e.tag,t)])])]);return n.setAttribute(`width`,`100%`),n}});var Xs={"\\text":void 0,"\\textrm":`textrm`,"\\textsf":`textsf`,"\\texttt":`texttt`,"\\textnormal":`textrm`},Zs={"\\textbf":`textbf`,"\\textmd":`textmd`},Qs={"\\textit":`textit`,"\\textup":`textup`},$s=(e,t)=>{var n=e.font;return n?Xs[n]?t.withTextFontFamily(Xs[n]):Zs[n]?t.withTextFontWeight(Zs[n]):n===`\\emph`?t.fontShape===`textit`?t.withTextFontShape(`textup`):t.withTextFontShape(`textit`):t.withTextFontShape(Qs[n]):t};J({type:`text`,names:[`\\text`,`\\textrm`,`\\textsf`,`\\texttt`,`\\textnormal`,`\\textbf`,`\\textmd`,`\\textit`,`\\textup`,`\\emph`],numArgs:1,argTypes:[`text`],allowedInArgument:!0,allowedInText:!0,handler(e,t){var n=e.parser,r=e.funcName,i=t[0];return{type:`text`,mode:n.mode,body:da(i),font:r}},htmlBuilder(e,t){var n=$s(e,t);return q([`mord`,`text`],ga(e.body,n,!0),n)},mathmlBuilder(e,t){var n=$s(e,t);return Ia(e.body,n)}}),J({type:`underline`,names:[`\\underline`],numArgs:1,allowedInText:!0,handler(e,t){return{type:`underline`,mode:e.parser.mode,body:t[0]}},htmlBuilder(e,t){var n=Sa(e.body,t),r=Wi(`underline-line`,t),i=t.fontMetrics().defaultRuleThickness;return q([`mord`,`katex-underline`],[Yi({positionType:`top`,positionData:n.height,children:[{type:`kern`,size:i},{type:`elem`,elem:r},{type:`kern`,size:3*i},{type:`elem`,elem:n}]})],t)},mathmlBuilder(e,t){var n=new Y(`mo`,[new Ea(`‾`)]);n.setAttribute(`stretchy`,`true`);var r=new Y(`munder`,[La(e.body,t),n]);return r.setAttribute(`accentunder`,`true`),r}}),J({type:`vcenter`,names:[`\\vcenter`],numArgs:1,argTypes:[`original`],allowedInText:!1,handler(e,t){return{type:`vcenter`,mode:e.parser.mode,body:t[0]}},htmlBuilder(e,t){var n=Sa(e.body,t),r=t.fontMetrics().axisHeight;return Yi({positionType:`shift`,positionData:.5*(n.height-r-(n.depth+r)),children:[{type:`elem`,elem:n}]})},mathmlBuilder(e,t){return new Y(`mrow`,[new Y(`mpadded`,[La(e.body,t)],[`vcenter`])])}}),J({type:`verb`,names:[`\\verb`],numArgs:0,allowedInText:!0,handler(e,t,n){throw new P(`\\verb ended by end of line instead of matching delimiter`)},htmlBuilder(e,t){for(var n=ec(e),r=[],i=t.havingStyle(t.style.text()),a=0;a<n.length;a++){var o=n[a];o===`~`&&(o=`\\textasciitilde`),r.push(Ii(o,`Typewriter-Regular`,e.mode,i,[`mord`,`texttt`]))}return q([`mord`,`text`].concat(i.sizingClasses(t)),Vi(r),i)},mathmlBuilder(e,t){var n=new Y(`mtext`,[new Ea(ec(e))]);return n.setAttribute(`mathvariant`,`monospace`),n}});var ec=e=>e.body.replace(/ /g,e.star?`␣`:`\xA0`),tc=oa,nc=`[ \r
259
+ `+h+` children.`);for(var v=0;v<h;v++){var y=new Ir([new Lr(d[v])],{width:`400em`,height:I(m),viewBox:`0 0 `+n+` `+p,preserveAspectRatio:_[v]+` slice`}),b=Ui([g[v]],[y],t);if(h===1)return{span:b,minWidth:f,height:m};b.style.height=I(m),l.push(b)}return{span:q([`katex-stretchy`],l,t),minWidth:f,height:m}}}var r=n(),i=r.span,a=r.minWidth,o=r.height;return i.height=o,i.style.height=I(o),a>0&&(i.style.minWidth=I(a)),i},Qa=function(e,t,n,r,i){var a,o=e.height+e.depth+n+r;if(/fbox|color|angl/.test(t)){if(a=q([`katex-stretchy`,t],[],i),t===`fbox`){var s=i.color&&i.getColor();s&&(a.style.borderColor=s)}}else{var c=[];/^[bx]cancel$/.test(t)&&c.push(new Rr({x1:`0`,y1:`0`,x2:`100%`,y2:`100%`,"stroke-width":`0.046em`})),/^x?cancel$/.test(t)&&c.push(new Rr({x1:`0`,y1:`100%`,x2:`100%`,y2:`0`,"stroke-width":`0.046em`})),a=Ui([],[new Ir(c,{width:`100%`,height:I(o)})],i)}return a.height=o,a.style.height=I(o),a},$a=[`bin`,`close`,`inner`,`open`,`punct`,`rel`],eo=[`accent-token`,`mathord`,`op-token`,`spacing`,`textord`],to=new Set($a),no=new Set(eo);function ro(e){return to.has(e)}function X(e,t){if(!e||e.type!==t)throw Error(`Expected node of type `+t+`, but got `+(e?`node of type `+e.type:String(e)));return e}function io(e){var t=ao(e);if(!t)throw Error(`Expected node of symbol group type, but got `+(e?`node of type `+e.type:String(e)));return t}function ao(e){return e.type===`atom`||no.has(e.type)?e:null}function oo(e,t,n){var r=``;for(var i of e.body)if(i.type===`textord`)r+=i.text;else if(n&&i.type===`spacing`&&i.text===` `)r+=` `;else throw new P(t,e);return r}var so=e=>{if(e instanceof Fr)return e;if(Vr(e)&&e.children.length===1)return so(e.children[0])},co=(e,t)=>{var n,r,i;e&&e.type===`supsub`?(r=X(e.base,`accent`),n=r.base,e.base=n,i=Br(Sa(e,t)),e.base=r):(r=X(e,`accent`),n=r.base);var a=Sa(n,t.havingCrampedStyle()),o=r.isShifty&&Nn(n),s=0;o&&(s=so(a)?.skew??0);var c=r.label===`\\c`,l=c?a.height+a.depth:Math.min(a.height,t.fontMetrics().xHeight),u;if(r.isStretchy)u=Za(r,t),u=Yi({positionType:`firstBaseline`,children:[{type:`elem`,elem:a},{type:`elem`,elem:u,wrapperClasses:[`svg-align`],wrapperStyle:s>0?{width:`calc(100% - `+I(2*s)+`)`,marginLeft:I(2*s)}:void 0}]});else{var d,f;r.label===`\\vec`?(d=ea(`vec`,t),f=$i.vec[1]):(d=zi({type:`textord`,mode:r.mode,text:r.label},t),d=zr(d),d.italic=0,f=d.width,c&&(l+=d.depth)),u=q([`accent-body`],[d]);var p=r.label===`\\textcircled`;p&&(u.classes.push(`accent-full`),l=a.height);var m=s;p||(m-=f/2),u.style.left=I(m),r.label===`\\textcircled`&&(u.style.top=`.2em`),u=Yi({positionType:`firstBaseline`,children:[{type:`elem`,elem:a},{type:`kern`,size:-l},{type:`elem`,elem:u}]})}var h=q([`mord`,`katex-accent`],[u],t);return i?(i.children[0]=h,i.height=Math.max(h.height,i.height),i.classes[0]=`mord`,i):h},lo=(e,t)=>{var n=e.isStretchy?Ja(e.label):new Y(`mo`,[Aa(e.label,e.mode)]),r=new Y(`mover`,[La(e.base,t),n]);return r.setAttribute(`accent`,`true`),r},uo=new RegExp([`\\acute`,`\\grave`,`\\ddot`,`\\tilde`,`\\bar`,`\\breve`,`\\check`,`\\hat`,`\\vec`,`\\dot`,`\\mathring`].map(e=>`\\`+e).join(`|`));J({type:`accent`,names:[`\\acute`,`\\grave`,`\\ddot`,`\\tilde`,`\\bar`,`\\breve`,`\\check`,`\\hat`,`\\vec`,`\\dot`,`\\mathring`,`\\widecheck`,`\\widehat`,`\\widetilde`,`\\overrightarrow`,`\\overleftarrow`,`\\Overrightarrow`,`\\overleftrightarrow`,`\\overgroup`,`\\overlinesegment`,`\\overleftharpoon`,`\\overrightharpoon`],numArgs:1,handler:(e,t)=>{var n=ua(t[0]),r=!uo.test(e.funcName),i=!r||e.funcName===`\\widehat`||e.funcName===`\\widetilde`||e.funcName===`\\widecheck`;return{type:`accent`,mode:e.parser.mode,label:e.funcName,isStretchy:r,isShifty:i,base:n}},htmlBuilder:co,mathmlBuilder:lo}),J({type:`accent`,names:[`\\'`,"\\`",`\\^`,`\\~`,`\\=`,`\\u`,`\\.`,`\\"`,`\\c`,`\\r`,`\\H`,`\\v`,`\\textcircled`],numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:[`primitive`],handler:(e,t)=>{var n=t[0],r=e.parser.mode;return r===`math`&&(e.parser.settings.reportNonstrict(`mathVsTextAccents`,`LaTeX's accent `+e.funcName+` works only in text mode`),r=`text`),{type:`accent`,mode:r,label:e.funcName,isStretchy:!1,isShifty:!0,base:n}}}),J({type:`accentUnder`,names:[`\\underleftarrow`,`\\underrightarrow`,`\\underleftrightarrow`,`\\undergroup`,`\\underlinesegment`,`\\utilde`],numArgs:1,handler:(e,t)=>{var n=e.parser,r=e.funcName,i=t[0];return{type:`accentUnder`,mode:n.mode,label:r,base:i}},htmlBuilder:(e,t)=>{var n=Sa(e.base,t),r=Za(e,t),i=e.label===`\\utilde`?.12:0;return q([`mord`,`accentunder`],[Yi({positionType:`top`,positionData:n.height,children:[{type:`elem`,elem:r,wrapperClasses:[`svg-align`]},{type:`kern`,size:i},{type:`elem`,elem:n}]})],t)},mathmlBuilder:(e,t)=>{var n=Ja(e.label),r=new Y(`munder`,[La(e.base,t),n]);return r.setAttribute(`accentunder`,`true`),r}});var fo=e=>{var t=new Y(`mpadded`,e?[e]:[]);return t.setAttribute(`width`,`+0.6em`),t.setAttribute(`lspace`,`0.3em`),t};J({type:`xArrow`,names:[`\\xleftarrow`,`\\xrightarrow`,`\\xLeftarrow`,`\\xRightarrow`,`\\xleftrightarrow`,`\\xLeftrightarrow`,`\\xhookleftarrow`,`\\xhookrightarrow`,`\\xmapsto`,`\\xrightharpoondown`,`\\xrightharpoonup`,`\\xleftharpoondown`,`\\xleftharpoonup`,`\\xrightleftharpoons`,`\\xleftrightharpoons`,`\\xlongequal`,`\\xtwoheadrightarrow`,`\\xtwoheadleftarrow`,`\\xtofrom`,`\\xrightleftarrows`,`\\xrightequilibrium`,`\\xleftequilibrium`,`\\\\cdrightarrow`,`\\\\cdleftarrow`,`\\\\cdlongequal`],numArgs:1,numOptionalArgs:1,handler(e,t,n){var r=e.parser,i=e.funcName;return{type:`xArrow`,mode:r.mode,label:i,body:t[0],below:n[0]}},htmlBuilder(e,t){var n=t.style,r=t.havingStyle(n.sup()),i=qi(Sa(e.body,r,t),t),a=e.label.slice(0,2)===`\\x`?`x`:`cd`;i.classes.push(a+`-arrow-pad`);var o;e.below&&(r=t.havingStyle(n.sub()),o=qi(Sa(e.below,r,t),t),o.classes.push(a+`-arrow-pad`));var s=Za(e,t),c=-t.fontMetrics().axisHeight+.5*s.height,l=-t.fontMetrics().axisHeight-.5*s.height-.111;(i.depth>.25||e.label===`\\xleftequilibrium`)&&(l-=i.depth);var u;if(o){var d=-t.fontMetrics().axisHeight+o.height+.5*s.height+.111;u=Yi({positionType:`individualShift`,children:[{type:`elem`,elem:i,shift:l},{type:`elem`,elem:s,shift:c,wrapperClasses:[`svg-align`]},{type:`elem`,elem:o,shift:d}]})}else u=Yi({positionType:`individualShift`,children:[{type:`elem`,elem:i,shift:l},{type:`elem`,elem:s,shift:c,wrapperClasses:[`svg-align`]}]});return q([`mrel`,`x-arrow`],[u],t)},mathmlBuilder(e,t){var n=Ja(e.label);n.setAttribute(`minsize`,e.label.charAt(0)===`x`?`1.75em`:`3.0em`);var r;if(e.body){var i=fo(La(e.body,t));r=e.below?new Y(`munderover`,[n,fo(La(e.below,t)),i]):new Y(`mover`,[n,i])}else e.below?r=new Y(`munder`,[n,fo(La(e.below,t))]):(r=fo(),r=new Y(`mover`,[n,r]));return r}});function po(e,t){var n=ga(e.body,t,!0);return q([e.mclass],n,t)}function mo(e,t){var n,r=Fa(e.body,t);return e.mclass===`minner`?n=new Y(`mpadded`,r):e.mclass===`mord`?e.isCharacterBox?(n=r[0],n.type=`mi`):n=new Y(`mi`,r):(e.isCharacterBox?(n=r[0],n.type=`mo`):n=new Y(`mo`,r),e.mclass===`mbin`?(n.attributes.lspace=`0.22em`,n.attributes.rspace=`0.22em`):e.mclass===`mpunct`?(n.attributes.lspace=`0em`,n.attributes.rspace=`0.17em`):(e.mclass===`mopen`||e.mclass===`mclose`)&&(n.attributes.lspace=`0em`,n.attributes.rspace=`0em`)),n}J({type:`mclass`,names:[`\\mathord`,`\\mathbin`,`\\mathrel`,`\\mathopen`,`\\mathclose`,`\\mathpunct`,`\\mathinner`],numArgs:1,primitive:!0,handler(e,t){var n=e.parser,r=e.funcName,i=t[0];return{type:`mclass`,mode:n.mode,mclass:`m`+r.slice(5),body:da(i),isCharacterBox:Nn(i)}},htmlBuilder:po,mathmlBuilder:mo});var ho=e=>{var t=e.type===`ordgroup`&&e.body.length?e.body[0]:e;return t.type===`atom`&&(t.family===`bin`||t.family===`rel`)?`m`+t.family:`mord`};J({type:`mclass`,names:[`\\@binrel`],numArgs:2,handler(e,t){return{type:`mclass`,mode:e.parser.mode,mclass:ho(t[0]),body:da(t[1]),isCharacterBox:Nn(t[1])}}}),J({type:`mclass`,names:[`\\stackrel`,`\\overset`,`\\underset`],numArgs:2,handler(e,t){var n=e.parser,r=e.funcName,i=t[1],a=t[0],o=r===`\\stackrel`?`mrel`:ho(i),s={type:`op`,mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:r!==`\\stackrel`,body:da(i)},c=r===`\\underset`?{type:`supsub`,mode:a.mode,base:s,sub:a}:{type:`supsub`,mode:a.mode,base:s,sup:a};return{type:`mclass`,mode:n.mode,mclass:o,body:[c],isCharacterBox:Nn(c)}}}),J({type:`pmb`,names:[`\\pmb`],numArgs:1,allowedInText:!0,handler(e,t){return{type:`pmb`,mode:e.parser.mode,mclass:ho(t[0]),body:da(t[0])}},htmlBuilder(e,t){var n=ga(e.body,t,!0),r=q([e.mclass],n,t);return r.style.textShadow=`0.02em 0.01em 0.04px`,r},mathmlBuilder(e,t){var n=new Y(`mstyle`,Fa(e.body,t));return n.setAttribute(`style`,`text-shadow: 0.02em 0.01em 0.04px`),n}});var go={">":`\\\\cdrightarrow`,"<":`\\\\cdleftarrow`,"=":`\\\\cdlongequal`,A:`\\uparrow`,V:`\\downarrow`,"|":`\\Vert`,".":`no arrow`},_o=()=>({type:`styling`,body:[],mode:`math`,style:`display`,resetFont:!0}),vo=e=>e.type===`textord`&&e.text===`@`,yo=(e,t)=>(e.type===`mathord`||e.type===`atom`)&&e.text===t;function bo(e,t,n){var r=go[e];switch(r){case`\\\\cdrightarrow`:case`\\\\cdleftarrow`:return n.callFunction(r,[t[0]],[t[1]]);case`\\uparrow`:case`\\downarrow`:var i=n.callFunction(`\\\\cdleft`,[t[0]],[]),a={type:`atom`,text:r,mode:`math`,family:`rel`},o={type:`ordgroup`,mode:`math`,body:[i,n.callFunction(`\\Big`,[a],[]),n.callFunction(`\\\\cdright`,[t[1]],[])]};return n.callFunction(`\\\\cdparent`,[o],[]);case`\\\\cdlongequal`:return n.callFunction(`\\\\cdlongequal`,[],[]);case`\\Vert`:return n.callFunction(`\\Big`,[{type:`textord`,text:`\\Vert`,mode:`math`}],[]);default:return{type:`textord`,text:` `,mode:`math`}}}function xo(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set(`\\cr`,`\\\\\\relax`),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,`\\\\`)),e.gullet.endGroup(),e.gullet.beginGroup();var n=e.fetch().text;if(n===`&`||n===`\\\\`)e.consume();else if(n===`\\end`){t[t.length-1].length===0&&t.pop();break}else throw new P(`Expected \\\\ or \\cr or \\end`,e.nextToken)}for(var r=[],i=[r],a=0;a<t.length;a++){for(var o=t[a],s=_o(),c=0;c<o.length;c++)if(!vo(o[c]))s.body.push(o[c]);else{r.push(s),c+=1;var l=io(o[c]).text,u=[,,];if(u[0]={type:`ordgroup`,mode:`math`,body:[]},u[1]={type:`ordgroup`,mode:`math`,body:[]},!`=|.`.includes(l))if(`<>AV`.includes(l))for(var d=0;d<2;d++){for(var f=!0,p=c+1;p<o.length;p++){if(yo(o[p],l)){f=!1,c=p;break}if(vo(o[p]))throw new P(`Missing a `+l+` character to complete a CD arrow.`,o[p]);u[d].body.push(o[p])}if(f)throw new P(`Missing a `+l+` character to complete a CD arrow.`,o[c])}else throw new P(`Expected one of "<>AV=|." after @`,o[c]);var m={type:`styling`,body:[bo(l,u,e)],mode:`math`,style:`display`,resetFont:!0};r.push(m),s=_o()}a%2==0?r.push(s):r.shift(),r=[],i.push(r)}return e.gullet.endGroup(),e.gullet.endGroup(),{type:`array`,mode:`math`,body:i,arraystretch:1,addJot:!0,rowGaps:[null],cols:Array(i[0].length).fill({type:`align`,align:`c`,pregap:.25,postgap:.25}),colSeparationType:`CD`,hLinesBeforeRow:Array(i.length+1).fill([])}}J({type:`cdlabel`,names:[`\\\\cdleft`,`\\\\cdright`],numArgs:1,handler(e,t){var n=e.parser,r=e.funcName;return{type:`cdlabel`,mode:n.mode,side:r.slice(4),label:t[0]}},htmlBuilder(e,t){var n=t.havingStyle(t.style.sup()),r=qi(Sa(e.label,n,t),t);return r.classes.push(`cd-label-`+e.side),r.style.bottom=I(.8-r.depth),r.height=0,r.depth=0,r},mathmlBuilder(e,t){var n=new Y(`mrow`,[La(e.label,t)]);return n=new Y(`mpadded`,[n]),n.setAttribute(`width`,`0`),e.side===`left`&&n.setAttribute(`lspace`,`-1width`),n.setAttribute(`voffset`,`0.7em`),n=new Y(`mstyle`,[n]),n.setAttribute(`displaystyle`,`false`),n.setAttribute(`scriptlevel`,`1`),n}}),J({type:`cdlabelparent`,names:[`\\\\cdparent`],numArgs:1,handler(e,t){return{type:`cdlabelparent`,mode:e.parser.mode,fragment:t[0]}},htmlBuilder(e,t){var n=qi(Sa(e.fragment,t),t);return n.classes.push(`cd-vert-arrow`),n},mathmlBuilder(e,t){return new Y(`mrow`,[La(e.fragment,t)])}}),J({type:`textord`,names:[`\\@char`],numArgs:1,allowedInText:!0,handler(e,t){var n=e.parser,r=oo(X(t[0],`ordgroup`),`\\@char has non-numeric argument`),i=parseInt(r),a;if(isNaN(i))throw new P(`\\@char has non-numeric argument `+r);if(i<0||i>1114111)throw new P(`\\@char with invalid code point `+r);return i<=65535?a=String.fromCharCode(i):(i-=65536,a=String.fromCharCode((i>>10)+55296,(i&1023)+56320)),{type:`textord`,mode:n.mode,text:a}}}),J({type:`color`,names:[`\\textcolor`],numArgs:2,allowedInText:!0,argTypes:[`color`,`original`],handler(e,t){var n=e.parser,r=X(t[0],`color-token`).color,i=t[1];return{type:`color`,mode:n.mode,color:r,body:da(i)}},htmlBuilder:(e,t)=>Ki(ga(e.body,t.withColor(e.color),!1)),mathmlBuilder:(e,t)=>{var n=new Y(`mstyle`,Fa(e.body,t.withColor(e.color)));return n.setAttribute(`mathcolor`,e.color),n}}),J({type:`color`,names:[`\\color`],numArgs:1,allowedInText:!0,argTypes:[`color`],handler(e,t){var n=e.parser,r=e.breakOnTokenText,i=X(t[0],`color-token`).color;n.gullet.macros.set(`\\current@color`,i);var a=n.parseExpression(!0,r);return{type:`color`,mode:n.mode,color:i,body:a}}}),J({type:`cr`,names:[`\\\\`],numArgs:0,numOptionalArgs:0,allowedInText:!0,handler(e,t,n){var r=e.parser,i=r.gullet.future().text===`[`?r.parseSizeGroup(!0):null,a=!r.settings.displayMode||!r.settings.useStrictBehavior(`newLineInDisplayMode`,`In LaTeX, \\\\ or \\newline does nothing in display mode`);return{type:`cr`,mode:r.mode,newLine:a,size:i&&X(i,`size`).value}},htmlBuilder(e,t){var n=q([`mspace`],[],t);return e.newLine&&(n.classes.push(`katex-newline`),e.size&&(n.style.marginTop=I(wr(e.size,t)))),n},mathmlBuilder(e,t){var n=new Y(`mspace`);return e.newLine&&(n.setAttribute(`linebreak`,`newline`),e.size&&n.setAttribute(`height`,I(wr(e.size,t)))),n}});var So={"\\global":`\\global`,"\\long":`\\\\globallong`,"\\\\globallong":`\\\\globallong`,"\\def":`\\gdef`,"\\gdef":`\\gdef`,"\\edef":`\\xdef`,"\\xdef":`\\xdef`,"\\let":`\\\\globallet`,"\\futurelet":`\\\\globalfuture`},Co=e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new P(`Expected a control sequence`,e);return t},wo=e=>{var t=e.gullet.popToken();return t.text===`=`&&(t=e.gullet.popToken(),t.text===` `&&(t=e.gullet.popToken())),t},To=(e,t,n,r)=>{var i=e.gullet.macros.get(n.text);i??=(n.noexpand=!0,{tokens:[n],numArgs:0,unexpandable:!e.gullet.isExpandable(n.text)}),e.gullet.macros.set(t,i,r)};J({type:`internal`,names:[`\\global`,`\\long`,`\\\\globallong`],numArgs:0,allowedInText:!0,handler(e){var t=e.parser,n=e.funcName;t.consumeSpaces();var r=t.fetch();if(So[r.text])return(n===`\\global`||n===`\\\\globallong`)&&(r.text=So[r.text]),X(t.parseFunction(),`internal`);throw new P(`Invalid token after macro prefix`,r)}}),J({type:`internal`,names:[`\\def`,`\\gdef`,`\\edef`,`\\xdef`],numArgs:0,allowedInText:!0,primitive:!0,handler(e){var t=e.parser,n=e.funcName,r=t.gullet.popToken(),i=r.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new P(`Expected a control sequence`,r);for(var a=0,o,s=[[]];t.gullet.future().text!==`{`;)if(r=t.gullet.popToken(),r.text===`#`){if(t.gullet.future().text===`{`){o=t.gullet.future(),s[a].push(`{`);break}if(r=t.gullet.popToken(),!/^[1-9]$/.test(r.text))throw new P(`Invalid argument number "`+r.text+`"`);if(parseInt(r.text)!==a+1)throw new P(`Argument number "`+r.text+`" out of order`);a++,s.push([])}else if(r.text===`EOF`)throw new P(`Expected a macro definition`);else s[a].push(r.text);var c=t.gullet.consumeArg().tokens;return o&&c.unshift(o),(n===`\\edef`||n===`\\xdef`)&&(c=t.gullet.expandTokens(c),c.reverse()),t.gullet.macros.set(i,{tokens:c,numArgs:a,delimiters:s},n===So[n]),{type:`internal`,mode:t.mode}}}),J({type:`internal`,names:[`\\let`,`\\\\globallet`],numArgs:0,allowedInText:!0,primitive:!0,handler(e){var t=e.parser,n=e.funcName,r=Co(t.gullet.popToken());return t.gullet.consumeSpaces(),To(t,r,wo(t),n===`\\\\globallet`),{type:`internal`,mode:t.mode}}}),J({type:`internal`,names:[`\\futurelet`,`\\\\globalfuture`],numArgs:0,allowedInText:!0,primitive:!0,handler(e){var t=e.parser,n=e.funcName,r=Co(t.gullet.popToken()),i=t.gullet.popToken(),a=t.gullet.popToken();return To(t,r,a,n===`\\\\globalfuture`),t.gullet.pushToken(a),t.gullet.pushToken(i),{type:`internal`,mode:t.mode}}});var Eo=function(e,t,n){var r=Kr(Yr.math[e]&&Yr.math[e].replace||e,t,n);if(!r)throw Error(`Unsupported symbol `+e+` and font size `+t+`.`);return r},Do=function(e,t,n,r){var i=n.havingBaseStyle(t),a=q(r.concat(i.sizingClasses(n)),[e],n),o=i.sizeMultiplier/n.sizeMultiplier;return a.height*=o,a.depth*=o,a.maxFontSize=i.sizeMultiplier,a},Oo=function(e,t,n){var r=t.havingBaseStyle(n),i=(1-t.sizeMultiplier/r.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push(`delimcenter`),e.style.top=I(i),e.height-=i,e.depth+=i},ko=function(e,t,n,r,i,a){var o=Do(Ii(e,`Main-Regular`,i,r),t,r,a);return n&&Oo(o,r,t),o},Ao=function(e,t,n,r){return Ii(e,`Size`+t+`-Regular`,n,r)},jo=function(e,t,n,r,i,a){var o=Ao(e,t,i,r),s=Do(q([`delimsizing`,`size`+t],[o],r),F.TEXT,r,a);return n&&Oo(s,r,F.TEXT),s},Mo=function(e,t,n){return{type:`elem`,elem:q([`delimsizinginner`,t===`Size1-Regular`?`delim-size1`:`delim-size4`],[q([],[Ii(e,t,n)])])}},No=function(e,t,n){var r=Hr[`Size4-Regular`][e.charCodeAt(0)]?Hr[`Size4-Regular`][e.charCodeAt(0)][4]:Hr[`Size1-Regular`][e.charCodeAt(0)][4],i=Ui([],[new Ir([new Lr(`inner`,gr(e,Math.round(1e3*t)))],{width:I(r),height:I(t),style:`width:`+I(r),viewBox:`0 0 `+1e3*r+` `+Math.round(1e3*t),preserveAspectRatio:`xMinYMin`})],n);return i.height=t,i.style.height=I(t),i.style.width=I(r),{type:`elem`,elem:i}},Po=.008,Fo={type:`kern`,size:-1*Po},Io=new Set([`|`,`\\lvert`,`\\rvert`,`\\vert`]),Lo=new Set([`\\|`,`\\lVert`,`\\rVert`,`\\Vert`]),Ro=function(e,t,n,r,i,a){var o,s,c,l,u=``,d=0;o=c=l=e,s=null;var f=`Size1-Regular`;e===`\\uparrow`?c=l=`⏐`:e===`\\Uparrow`?c=l=`‖`:e===`\\downarrow`?o=c=`⏐`:e===`\\Downarrow`?o=c=`‖`:e===`\\updownarrow`?(o=`\\uparrow`,c=`⏐`,l=`\\downarrow`):e===`\\Updownarrow`?(o=`\\Uparrow`,c=`‖`,l=`\\Downarrow`):Io.has(e)?(c=`∣`,u=`vert`,d=333):Lo.has(e)?(c=`∥`,u=`doublevert`,d=556):e===`[`||e===`\\lbrack`?(o=`⎡`,c=`⎢`,l=`⎣`,f=`Size4-Regular`,u=`lbrack`,d=667):e===`]`||e===`\\rbrack`?(o=`⎤`,c=`⎥`,l=`⎦`,f=`Size4-Regular`,u=`rbrack`,d=667):e===`\\lfloor`||e===`⌊`?(c=o=`⎢`,l=`⎣`,f=`Size4-Regular`,u=`lfloor`,d=667):e===`\\lceil`||e===`⌈`?(o=`⎡`,c=l=`⎢`,f=`Size4-Regular`,u=`lceil`,d=667):e===`\\rfloor`||e===`⌋`?(c=o=`⎥`,l=`⎦`,f=`Size4-Regular`,u=`rfloor`,d=667):e===`\\rceil`||e===`⌉`?(o=`⎤`,c=l=`⎥`,f=`Size4-Regular`,u=`rceil`,d=667):e===`(`||e===`\\lparen`?(o=`⎛`,c=`⎜`,l=`⎝`,f=`Size4-Regular`,u=`lparen`,d=875):e===`)`||e===`\\rparen`?(o=`⎞`,c=`⎟`,l=`⎠`,f=`Size4-Regular`,u=`rparen`,d=875):e===`\\{`||e===`\\lbrace`?(o=`⎧`,s=`⎨`,l=`⎩`,c=`⎪`,f=`Size4-Regular`):e===`\\}`||e===`\\rbrace`?(o=`⎫`,s=`⎬`,l=`⎭`,c=`⎪`,f=`Size4-Regular`):e===`\\lgroup`||e===`⟮`?(o=`⎧`,l=`⎩`,c=`⎪`,f=`Size4-Regular`):e===`\\rgroup`||e===`⟯`?(o=`⎫`,l=`⎭`,c=`⎪`,f=`Size4-Regular`):e===`\\lmoustache`||e===`⎰`?(o=`⎧`,l=`⎭`,c=`⎪`,f=`Size4-Regular`):(e===`\\rmoustache`||e===`⎱`)&&(o=`⎫`,l=`⎩`,c=`⎪`,f=`Size4-Regular`);var p=Eo(o,f,i),m=p.height+p.depth,h=Eo(c,f,i),g=h.height+h.depth,_=Eo(l,f,i),v=_.height+_.depth,y=0,b=1;if(s!==null){var x=Eo(s,f,i);y=x.height+x.depth,b=2}var S=m+v+y,C=S+Math.max(0,Math.ceil((t-S)/(b*g)))*b*g,w=r.fontMetrics().axisHeight;n&&(w*=r.sizeMultiplier);var T=C/2-w,E=[];if(u.length>0){var D=C-m-v,O=Math.round(C*1e3),k=vr(u,Math.round(D*1e3)),A=new Lr(u,k),ee=I(d/1e3),te=I(O/1e3),ne=Ui([],[new Ir([A],{width:ee,height:te,viewBox:`0 0 `+d+` `+O})],r);ne.height=O/1e3,ne.style.width=ee,ne.style.height=te,E.push({type:`elem`,elem:ne})}else{if(E.push(Mo(l,f,i)),E.push(Fo),s===null){var j=C-m-v+2*Po;E.push(No(c,j,r))}else{var re=(C-m-v-y)/2+2*Po;E.push(No(c,re,r)),E.push(Fo),E.push(Mo(s,f,i)),E.push(Fo),E.push(No(c,re,r))}E.push(Fo),E.push(Mo(o,f,i))}var ie=r.havingBaseStyle(F.TEXT);return Do(q([`delimsizing`,`mult`],[Yi({positionType:`bottom`,positionData:T,children:E})],ie),F.TEXT,r,a)},zo=80,Bo=.08,Vo=function(e,t,n,r,i){return Ui([`hide-tail`],[new Ir([new Lr(e,hr(e,r,n))],{width:`400em`,height:I(t),viewBox:`0 0 400000 `+n,preserveAspectRatio:`xMinYMin slice`})],i)},Ho=function(e,t){var n=t.havingBaseSizing(),r=Qo(`\\surd`,e*n.sizeMultiplier,Xo,n),i=n.sizeMultiplier,a=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),o,s,c,l,u;return r.type===`small`?(l=1e3+1e3*a+zo,e<1?i=1:e<1.4&&(i=.7),s=(1+a+Bo)/i,c=(1+a)/i,o=Vo(`sqrtMain`,s,l,a,t),o.style.minWidth=`0.853em`,u=.833/i):r.type===`large`?(l=(1e3+zo)*Ko[r.size],c=(Ko[r.size]+a)/i,s=(Ko[r.size]+a+Bo)/i,o=Vo(`sqrtSize`+r.size,s,l,a,t),o.style.minWidth=`1.02em`,u=1/i):(s=e+a+Bo,c=e+a,l=Math.floor(1e3*e+a)+zo,o=Vo(`sqrtTall`,s,l,a,t),o.style.minWidth=`0.742em`,u=1.056),o.height=c,o.style.height=I(s),{span:o,advanceWidth:u,ruleWidth:(t.fontMetrics().sqrtRuleThickness+a)*i}},Uo=new Set([`(`,`\\lparen`,`)`,`\\rparen`,`[`,`\\lbrack`,`]`,`\\rbrack`,`\\{`,`\\lbrace`,`\\}`,`\\rbrace`,`\\lfloor`,`\\rfloor`,`⌊`,`⌋`,`\\lceil`,`\\rceil`,`⌈`,`⌉`,`\\surd`]),Wo=new Set([`\\uparrow`,`\\downarrow`,`\\updownarrow`,`\\Uparrow`,`\\Downarrow`,`\\Updownarrow`,`|`,`\\|`,`\\vert`,`\\Vert`,`\\lvert`,`\\rvert`,`\\lVert`,`\\rVert`,`\\lgroup`,`\\rgroup`,`⟮`,`⟯`,`\\lmoustache`,`\\rmoustache`,`⎰`,`⎱`]),Go=new Set([`<`,`>`,`\\langle`,`\\rangle`,`/`,`\\backslash`,`\\lt`,`\\gt`]),Ko=[0,1.2,1.8,2.4,3],qo=function(e,t,n,r,i){if(e===`<`||e===`\\lt`||e===`⟨`?e=`\\langle`:(e===`>`||e===`\\gt`||e===`⟩`)&&(e=`\\rangle`),Uo.has(e)||Go.has(e))return jo(e,t,!1,n,r,i);if(Wo.has(e))return Ro(e,Ko[t],!1,n,r,i);throw new P(`Illegal delimiter: '`+e+`'`)},Jo=[{type:`small`,style:F.SCRIPTSCRIPT},{type:`small`,style:F.SCRIPT},{type:`small`,style:F.TEXT},{type:`large`,size:1},{type:`large`,size:2},{type:`large`,size:3},{type:`large`,size:4}],Yo=[{type:`small`,style:F.SCRIPTSCRIPT},{type:`small`,style:F.SCRIPT},{type:`small`,style:F.TEXT},{type:`stack`}],Xo=[{type:`small`,style:F.SCRIPTSCRIPT},{type:`small`,style:F.SCRIPT},{type:`small`,style:F.TEXT},{type:`large`,size:1},{type:`large`,size:2},{type:`large`,size:3},{type:`large`,size:4},{type:`stack`}],Zo=function(e){if(e.type===`small`)return`Main-Regular`;if(e.type===`large`)return`Size`+e.size+`-Regular`;if(e.type===`stack`)return`Size4-Regular`;var t=e.type;throw Error(`Add support for delim type '`+t+`' here.`)},Qo=function(e,t,n,r){for(var i=Math.min(2,3-r.style.size);i<n.length;i++){var a=n[i];if(a.type===`stack`)break;var o=Eo(e,Zo(a),`math`),s=o.height+o.depth;if(a.type===`small`){var c=r.havingBaseStyle(a.style);s*=c.sizeMultiplier}if(s>t)return a}return n[n.length-1]},$o=function(e,t,n,r,i,a){e===`<`||e===`\\lt`||e===`⟨`?e=`\\langle`:(e===`>`||e===`\\gt`||e===`⟩`)&&(e=`\\rangle`);var o=Go.has(e)?Jo:Uo.has(e)?Xo:Yo,s=Qo(e,t,o,r);return s.type===`small`?ko(e,s.style,n,r,i,a):s.type===`large`?jo(e,s.size,n,r,i,a):Ro(e,t,n,r,i,a)},es=function(e,t,n,r,i,a){var o=r.fontMetrics().axisHeight*r.sizeMultiplier,s=901,c=5/r.fontMetrics().ptPerEm,l=Math.max(t-o,n+o);return $o(e,Math.max(l/500*s,2*l-c),!0,r,i,a)},ts={"\\bigl":{mclass:`mopen`,size:1},"\\Bigl":{mclass:`mopen`,size:2},"\\biggl":{mclass:`mopen`,size:3},"\\Biggl":{mclass:`mopen`,size:4},"\\bigr":{mclass:`mclose`,size:1},"\\Bigr":{mclass:`mclose`,size:2},"\\biggr":{mclass:`mclose`,size:3},"\\Biggr":{mclass:`mclose`,size:4},"\\bigm":{mclass:`mrel`,size:1},"\\Bigm":{mclass:`mrel`,size:2},"\\biggm":{mclass:`mrel`,size:3},"\\Biggm":{mclass:`mrel`,size:4},"\\big":{mclass:`mord`,size:1},"\\Big":{mclass:`mord`,size:2},"\\bigg":{mclass:`mord`,size:3},"\\Bigg":{mclass:`mord`,size:4}},ns=new Set(`(,\\lparen,),\\rparen,[,\\lbrack,],\\rbrack,\\{,\\lbrace,\\},\\rbrace,\\lfloor,\\rfloor,⌊,⌋,\\lceil,\\rceil,⌈,⌉,<,>,\\langle,⟨,\\rangle,⟩,\\lt,\\gt,\\lvert,\\rvert,\\lVert,\\rVert,\\lgroup,\\rgroup,⟮,⟯,\\lmoustache,\\rmoustache,⎰,⎱,/,\\backslash,|,\\vert,\\|,\\Vert,\\uparrow,\\Uparrow,\\downarrow,\\Downarrow,\\updownarrow,\\Updownarrow,.`.split(`,`));function rs(e){return`isMiddle`in e}function is(e,t){var n=ao(e);if(n&&ns.has(n.text))return n;throw n?new P(`Invalid delimiter '`+n.text+`' after '`+t.funcName+`'`,e):new P(`Invalid delimiter type '`+e.type+`'`,e)}J({type:`delimsizing`,names:[`\\bigl`,`\\Bigl`,`\\biggl`,`\\Biggl`,`\\bigr`,`\\Bigr`,`\\biggr`,`\\Biggr`,`\\bigm`,`\\Bigm`,`\\biggm`,`\\Biggm`,`\\big`,`\\Big`,`\\bigg`,`\\Bigg`],numArgs:1,argTypes:[`primitive`],handler:(e,t)=>{var n=is(ua(t[0]),e);return{type:`delimsizing`,mode:e.parser.mode,size:ts[e.funcName].size,mclass:ts[e.funcName].mclass,delim:n.text}},htmlBuilder:(e,t)=>e.delim===`.`?q([e.mclass]):qo(e.delim,e.size,t,e.mode,[e.mclass]),mathmlBuilder:e=>{var t=[];e.delim!==`.`&&t.push(Aa(e.delim,e.mode));var n=new Y(`mo`,t);e.mclass===`mopen`||e.mclass===`mclose`?n.setAttribute(`fence`,`true`):n.setAttribute(`fence`,`false`),n.setAttribute(`stretchy`,`true`);var r=I(Ko[e.size]);return n.setAttribute(`minsize`,r),n.setAttribute(`maxsize`,r),n}});function as(e){if(!e.body)throw Error(`Bug: The leftright ParseNode wasn't fully parsed.`)}J({type:`leftright-right`,names:[`\\right`],numArgs:1,primitive:!0,handler:(e,t)=>{var n=e.parser.gullet.macros.get(`\\current@color`);if(n&&typeof n!=`string`)throw new P(`\\current@color set to non-string in \\right`);return{type:`leftright-right`,mode:e.parser.mode,delim:is(t[0],e).text,color:n}}}),J({type:`leftright`,names:[`\\left`],numArgs:1,primitive:!0,handler:(e,t)=>{var n=is(t[0],e),r=e.parser;++r.leftrightDepth;var i=r.parseExpression(!1);--r.leftrightDepth,r.expect(`\\right`,!1);var a=X(r.parseFunction(),`leftright-right`);return{type:`leftright`,mode:r.mode,body:i,left:n.text,right:a.delim,rightColor:a.color}},htmlBuilder:(e,t)=>{as(e);for(var n=ga(e.body,t,!0,[`mopen`,`mclose`]),r=0,i=0,a=!1,o=0;o<n.length;o++){var s=n[o];rs(s)?a=!0:(r=Math.max(n[o].height,r),i=Math.max(n[o].depth,i))}r*=t.sizeMultiplier,i*=t.sizeMultiplier;var c=e.left===`.`?xa(t,[`mopen`]):es(e.left,r,i,t,e.mode,[`mopen`]);if(n.unshift(c),a)for(var l=1;l<n.length;l++){var u=n[l];if(rs(u)){var d=u.isMiddle;n[l]=es(d.delim,r,i,d.options,e.mode,[])}}var f;if(e.right===`.`)f=xa(t,[`mclose`]);else{var p=e.rightColor?t.withColor(e.rightColor):t;f=es(e.right,r,i,p,e.mode,[`mclose`])}return n.push(f),q([`minner`],n,t)},mathmlBuilder:(e,t)=>{as(e);var n=Fa(e.body,t);if(e.left!==`.`){var r=new Y(`mo`,[Aa(e.left,e.mode)]);r.setAttribute(`fence`,`true`),n.unshift(r)}if(e.right!==`.`){var i=new Y(`mo`,[Aa(e.right,e.mode)]);i.setAttribute(`fence`,`true`),e.rightColor&&i.setAttribute(`mathcolor`,e.rightColor),n.push(i)}return ja(n)}}),J({type:`middle`,names:[`\\middle`],numArgs:1,primitive:!0,handler:(e,t)=>{var n=is(t[0],e);if(!e.parser.leftrightDepth)throw new P(`\\middle without preceding \\left`,n);return{type:`middle`,mode:e.parser.mode,delim:n.text}},htmlBuilder:(e,t)=>{var n;return e.delim===`.`?n=xa(t,[]):(n=qo(e.delim,1,t,e.mode,[]),n.isMiddle={delim:e.delim,options:t}),n},mathmlBuilder:(e,t)=>{var n=new Y(`mo`,[e.delim===`\\vert`||e.delim===`|`?Aa(`|`,`text`):Aa(e.delim,e.mode)]);return n.setAttribute(`fence`,`true`),n.setAttribute(`lspace`,`0.05em`),n.setAttribute(`rspace`,`0.05em`),n}}),J({type:`enclose`,names:[`\\colorbox`],numArgs:2,allowedInText:!0,argTypes:[`color`,`hbox`],handler(e,t,n){var r=e.parser,i=e.funcName,a=X(t[0],`color-token`).color,o=t[1];return{type:`enclose`,mode:r.mode,label:i,backgroundColor:a,body:o}},htmlBuilder:(e,t)=>{var n=qi(Sa(e.body,t),t),r=e.label.slice(1),i=t.sizeMultiplier,a,o,s=Nn(e.body);if(r===`sout`)a=q([`katex-stretchy`,`katex-sout`]),a.height=t.fontMetrics().defaultRuleThickness/i,o=-.5*t.fontMetrics().xHeight;else if(r===`phase`){var c=wr({number:.6,unit:`pt`},t),l=wr({number:.35,unit:`ex`},t),u=t.havingBaseSizing();i/=u.sizeMultiplier;var d=n.height+n.depth+c+l;n.style.paddingLeft=I(d/2+c);var f=Math.floor(1e3*d*i);a=Ui([`hide-tail`],[new Ir([new Lr(`phase`,pr(f))],{width:`400em`,height:I(f/1e3),viewBox:`0 0 400000 `+f,preserveAspectRatio:`xMinYMin slice`})],t),a.style.height=I(d),o=n.depth+c+l}else{/cancel/.test(r)?s||n.classes.push(`cancel-pad`):r===`angl`?n.classes.push(`anglpad`):n.classes.push(`boxpad`);var p,m,h=0;/box/.test(r)?(h=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),p=t.fontMetrics().fboxsep+(r===`colorbox`?0:h),m=p):r===`angl`?(h=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness),p=4*h,m=Math.max(0,.25-n.depth)):(p=s?.2:0,m=p),a=Qa(n,r,p,m,t),/fbox|boxed|fcolorbox/.test(r)?(a.style.borderStyle=`solid`,a.style.borderWidth=I(h)):r===`angl`&&h!==.049&&(a.style.borderTopWidth=I(h),a.style.borderRightWidth=I(h)),o=n.depth+m,e.backgroundColor&&(a.style.backgroundColor=e.backgroundColor,e.borderColor&&(a.style.borderColor=e.borderColor))}var g;if(e.backgroundColor)g=Yi({positionType:`individualShift`,children:[{type:`elem`,elem:a,shift:o},{type:`elem`,elem:n,shift:0}]});else{var _=/cancel|phase/.test(r)?[`svg-align`]:[];g=Yi({positionType:`individualShift`,children:[{type:`elem`,elem:n,shift:0},{type:`elem`,elem:a,shift:o,wrapperClasses:_}]})}return/cancel/.test(r)&&(g.height=n.height,g.depth=n.depth),/cancel/.test(r)&&!s?q([`mord`,`cancel-lap`],[g],t):q([`mord`],[g],t)},mathmlBuilder:(e,t)=>{var n,r=new Y(e.label.includes(`colorbox`)?`mpadded`:`menclose`,[La(e.body,t)]);switch(e.label){case`\\cancel`:r.setAttribute(`notation`,`updiagonalstrike`);break;case`\\bcancel`:r.setAttribute(`notation`,`downdiagonalstrike`);break;case`\\phase`:r.setAttribute(`notation`,`phasorangle`);break;case`\\sout`:r.setAttribute(`notation`,`horizontalstrike`);break;case`\\fbox`:r.setAttribute(`notation`,`box`);break;case`\\angl`:r.setAttribute(`notation`,`actuarial`);break;case`\\fcolorbox`:case`\\colorbox`:if(n=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,r.setAttribute(`width`,`+`+2*n+`pt`),r.setAttribute(`height`,`+`+2*n+`pt`),r.setAttribute(`lspace`,n+`pt`),r.setAttribute(`voffset`,n+`pt`),e.label===`\\fcolorbox`){var i=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);r.setAttribute(`style`,`border: `+I(i)+` solid `+e.borderColor)}break;case`\\xcancel`:r.setAttribute(`notation`,`updiagonalstrike downdiagonalstrike`);break}return e.backgroundColor&&r.setAttribute(`mathbackground`,e.backgroundColor),r}}),J({type:`enclose`,names:[`\\fcolorbox`],numArgs:3,allowedInText:!0,argTypes:[`color`,`color`,`hbox`],handler(e,t,n){var r=e.parser,i=e.funcName,a=X(t[0],`color-token`).color,o=X(t[1],`color-token`).color,s=t[2];return{type:`enclose`,mode:r.mode,label:i,backgroundColor:o,borderColor:a,body:s}}}),J({type:`enclose`,names:[`\\fbox`],numArgs:1,argTypes:[`hbox`],allowedInText:!0,handler(e,t){return{type:`enclose`,mode:e.parser.mode,label:`\\fbox`,body:t[0]}}}),J({type:`enclose`,names:[`\\cancel`,`\\bcancel`,`\\xcancel`,`\\phase`],numArgs:1,handler(e,t){var n=e.parser,r=e.funcName,i=t[0];return{type:`enclose`,mode:n.mode,label:r,body:i}}}),J({type:`enclose`,names:[`\\sout`],numArgs:1,allowedInText:!0,handler(e,t){var n=e.parser,r=e.funcName;n.mode===`math`&&n.settings.reportNonstrict(`mathVsSout`,`LaTeX's \\sout works only in text mode`);var i=t[0];return{type:`enclose`,mode:n.mode,label:r,body:i}}}),J({type:`enclose`,names:[`\\angl`],numArgs:1,argTypes:[`hbox`],allowedInText:!1,handler(e,t){return{type:`enclose`,mode:e.parser.mode,label:`\\angl`,body:t[0]}}});var os={};function ss(e){for(var t=e.type,n=e.names,r=e.props,i=e.handler,a=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:r.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:i},c=0;c<n.length;++c)os[n[c]]=s;a&&(sa[t]=a),o&&(ca[t]=o)}var cs={};function Z(e,t){cs[e]=t}var ls=class e{constructor(e,t,n){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=n}static range(t,n){return n?!t||!t.loc||!n.loc||t.loc.lexer!==n.loc.lexer?null:new e(t.loc.lexer,t.loc.start,n.loc.end):t&&t.loc}},us=class e{constructor(e,t){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=t}range(t,n){return new e(n,ls.range(this,t))}};function ds(e){var t=[];e.consumeSpaces();var n=e.fetch().text;for(n===`\\relax`&&(e.consume(),e.consumeSpaces(),n=e.fetch().text);n===`\\hline`||n===`\\hdashline`;)e.consume(),t.push(n===`\\hdashline`),e.consumeSpaces(),n=e.fetch().text;return t}var fs=e=>{if(!e.parser.settings.displayMode)throw new P(`{`+e.envName+`} can be used only in display mode.`)},ps=new Set([`gather`,`gather*`]);function ms(e){if(!e.includes(`ed`))return!e.includes(`*`)}function hs(e,t,n){var r=t.hskipBeforeAndAfter,i=t.addJot,a=t.cols,o=t.arraystretch,s=t.colSeparationType,c=t.autoTag,l=t.singleRow,u=t.emptySingleRow,d=t.maxNumCols,f=t.leqno;if(e.gullet.beginGroup(),l||e.gullet.macros.set(`\\cr`,`\\\\\\relax`),!o){var p=e.gullet.expandMacroAsText(`\\arraystretch`);if(p==null)o=1;else if(o=parseFloat(p),!o||o<0)throw new P(`Invalid \\arraystretch: `+p)}e.gullet.beginGroup();var m=[],h=[m],g=[],_=[],v=c==null?void 0:[];function y(){c&&e.gullet.macros.set(`\\@eqnsw`,`1`,!0)}function b(){v&&(e.gullet.macros.get(`\\df@tag`)?(v.push(e.subparse([new us(`\\df@tag`)])),e.gullet.macros.set(`\\df@tag`,void 0,!0)):v.push(!!c&&e.gullet.macros.get(`\\@eqnsw`)===`1`))}for(y(),_.push(ds(e));;){var x=e.parseExpression(!1,l?`\\end`:`\\\\`);e.gullet.endGroup(),e.gullet.beginGroup();var S={type:`ordgroup`,mode:e.mode,body:x};n&&(S={type:`styling`,mode:e.mode,style:n,resetFont:!0,body:[S]}),m.push(S);var C=e.fetch().text;if(C===`&`){if(d&&m.length===d){if(l||s)throw new P(`Too many tab characters: &`,e.nextToken);e.settings.reportNonstrict(`textEnv`,`Too few columns specified in the {array} column argument.`)}e.consume()}else if(C===`\\end`){b(),m.length===1&&S.type===`styling`&&S.body.length===1&&S.body[0].type===`ordgroup`&&S.body[0].body.length===0&&(h.length>1||!u)&&!Array.isArray(v?.[v.length-1])&&h.pop(),_.length<h.length+1&&_.push([]);break}else if(C===`\\\\`){e.consume();var w=void 0;e.gullet.future().text!==` `&&(w=e.parseSizeGroup(!0)),g.push(w?w.value:null),b(),_.push(ds(e)),m=[],h.push(m),y()}else throw new P(`Expected & or \\\\ or \\cr or \\end`,e.nextToken)}return e.gullet.endGroup(),e.gullet.endGroup(),{type:`array`,mode:e.mode,addJot:i,arraystretch:o,body:h,cols:a,rowGaps:g,hskipBeforeAndAfter:r,hLinesBeforeRow:_,colSeparationType:s,tags:v,leqno:f}}function gs(e){return e.slice(0,1)===`d`?`display`:`text`}var _s=function(e,t){var n,r,i=e.body.length,a=e.hLinesBeforeRow,o=0,s=Array(i),c=[],l=Math.max(t.fontMetrics().arrayRuleWidth,t.minRuleThickness),u=1/t.fontMetrics().ptPerEm,d=5*u;e.colSeparationType&&e.colSeparationType===`small`&&(d=.2778*(t.havingStyle(F.SCRIPT).sizeMultiplier/t.sizeMultiplier));var f=e.colSeparationType===`CD`?wr({number:3,unit:`ex`},t):12*u,p=3*u,m=e.arraystretch*f,h=.7*m,g=.3*m,_=0;function v(e){for(var t=0;t<e.length;++t)t>0&&(_+=.25),c.push({pos:_,isDashed:e[t]})}for(v(a[0]),n=0;n<e.body.length;++n){var y=e.body[n],b=h,x=g;o<y.length&&(o=y.length);var S={cells:Array(y.length),height:0,depth:0,pos:0};for(r=0;r<y.length;++r){var C=Sa(y[r],t);x<C.depth&&(x=C.depth),b<C.height&&(b=C.height),S.cells[r]=C}var w=e.rowGaps[n],T=0;w&&(T=wr(w,t),T>0&&(T+=g,x<T&&(x=T),T=0)),e.addJot&&n<e.body.length-1&&(x+=p),S.height=b,S.depth=x,_+=b,S.pos=_,_+=x+T,s[n]=S,v(a[n+1])}var E=_/2+t.fontMetrics().axisHeight,D=e.cols||[],O=[],k,A,ee=[];if(e.tags&&e.tags.some(e=>e))for(n=0;n<i;++n){var te=s[n],ne=te.pos-E,j=e.tags[n],re=void 0;re=j===!0?q([`eqn-num`],[],t):j===!1?q([],[],t):q([],ga(j,t,!0),t),re.depth=te.depth,re.height=te.height,ee.push({type:`elem`,elem:re,shift:ne})}for(r=0,A=0;r<o||A<D.length;++r,++A){for(var ie=D[A],ae=!0;(oe=ie)?.type===`separator`;){var oe;if(ae||(k=q([`arraycolsep`],[]),k.style.width=I(t.fontMetrics().doubleRuleSep),O.push(k)),ie.separator===`|`||ie.separator===`:`){var se=ie.separator===`|`?`solid`:`dashed`,ce=q([`vertical-separator`],[],t);ce.style.height=I(_),ce.style.borderRightWidth=I(l),ce.style.borderRightStyle=se,ce.style.margin=`0 `+I(-l/2);var le=_-E;le&&(ce.style.verticalAlign=I(-le)),O.push(ce)}else throw new P(`Invalid separator type: `+ie.separator);A++,ie=D[A],ae=!1}if(!(r>=o)){var M=void 0;(r>0||e.hskipBeforeAndAfter)&&(M=ie?.pregap??d,M!==0&&(k=q([`arraycolsep`],[]),k.style.width=I(M),O.push(k)));var ue=[];for(n=0;n<i;++n){var de=s[n],fe=de.cells[r];if(fe){var pe=de.pos-E;fe.depth=de.depth,fe.height=de.height,ue.push({type:`elem`,elem:fe,shift:pe})}}var me=Yi({positionType:`individualShift`,children:ue}),he=q([`col-align-`+(ie?.align||`c`)],[me]);O.push(he),(r<o-1||e.hskipBeforeAndAfter)&&(M=ie?.postgap??d,M!==0&&(k=q([`arraycolsep`],[]),k.style.width=I(M),O.push(k)))}}var ge=q([`mtable`],O);if(c.length>0){for(var _e=Wi(`katex-hline`,t,l),ve=Wi(`katex-hdashline`,t,l),ye=[{type:`elem`,elem:ge,shift:0}];c.length>0;){var be=c.pop(),xe=be.pos-E;be.isDashed?ye.push({type:`elem`,elem:ve,shift:xe}):ye.push({type:`elem`,elem:_e,shift:xe})}ge=Yi({positionType:`individualShift`,children:ye})}if(ee.length===0)return q([`mord`],[ge],t);var Se=q([`katex-tag`],[Yi({positionType:`individualShift`,children:ee})],t);return Ki([ge,Se])},vs={c:`center `,l:`left `,r:`right `},ys=function(e,t){for(var n=[],r=new Y(`mtd`,[],[`mtr-glue`]),i=new Y(`mtd`,[],[`mml-eqn-num`]),a=0;a<e.body.length;a++){for(var o=e.body[a],s=[],c=0;c<o.length;c++)s.push(new Y(`mtd`,[La(o[c],t)]));e.tags&&e.tags[a]&&(s.unshift(r),s.push(r),e.leqno?s.unshift(i):s.push(i)),n.push(new Y(`mtr`,s))}var l=new Y(`mtable`,n),u=e.arraystretch===.5?.1:.16+e.arraystretch-1+(e.addJot?.09:0);l.setAttribute(`rowspacing`,I(u));var d=``,f=``;if(e.cols&&e.cols.length>0){var p=e.cols,m=``,h=!1,g=0,_=p.length;p[0].type===`separator`&&(d+=`top `,g=1),p[p.length-1].type===`separator`&&(d+=`bottom `,--_);for(var v=g;v<_;v++){var y=p[v];y.type===`align`?(f+=vs[y.align],h&&(m+=`none `),h=!0):y.type===`separator`&&(h&&=(m+=y.separator===`|`?`solid `:`dashed `,!1))}l.setAttribute(`columnalign`,f.trim()),/[sd]/.test(m)&&l.setAttribute(`columnlines`,m.trim())}if(e.colSeparationType===`align`){for(var b=e.cols||[],x=``,S=1;S<b.length;S++)x+=S%2?`0em `:`1em `;l.setAttribute(`columnspacing`,x.trim())}else e.colSeparationType===`alignat`||e.colSeparationType===`gather`?l.setAttribute(`columnspacing`,`0em`):e.colSeparationType===`small`?l.setAttribute(`columnspacing`,`0.2778em`):e.colSeparationType===`CD`?l.setAttribute(`columnspacing`,`0.5em`):l.setAttribute(`columnspacing`,`1em`);var C=``,w=e.hLinesBeforeRow;d+=w[0].length>0?`left `:``,d+=w[w.length-1].length>0?`right `:``;for(var T=1;T<w.length-1;T++)C+=w[T].length===0?`none `:w[T][0]?`dashed `:`solid `;return/[sd]/.test(C)&&l.setAttribute(`rowlines`,C.trim()),d!==``&&(l=new Y(`menclose`,[l]),l.setAttribute(`notation`,d.trim())),e.arraystretch&&e.arraystretch<1&&(l=new Y(`mstyle`,[l]),l.setAttribute(`scriptlevel`,`1`)),l},bs=function(e,t){e.envName.includes(`ed`)||fs(e);var n=[],r=e.envName===`split`,i=hs(e.parser,{cols:n,addJot:!0,autoTag:r?void 0:ms(e.envName),emptySingleRow:!0,colSeparationType:e.envName.includes(`at`)?`alignat`:`align`,maxNumCols:r?2:void 0,leqno:e.parser.settings.leqno},`display`),a=0,o=0,s={type:`ordgroup`,mode:e.mode,body:[]};if(t[0]&&t[0].type===`ordgroup`){var c=`Number of columns should be a positive integer`,l=oo(t[0],c);if(!/^[0-9]+$/.test(l)||Number(l)<1)throw new P(c,t[0]);a=Number(l),o=a*2}var u=!o;i.body.forEach(function(e){for(var t=1;t<e.length;t+=2)X(X(e[t],`styling`).body[0],`ordgroup`).body.unshift(s);if(u)o<e.length&&(o=e.length);else{var n=e.length/2;if(a<n)throw new P(`Too many math in a row: `+(`expected `+a+`, but got `+n),e[0])}});for(var d=0;d<o;++d){var f=`r`,p=0;d%2==1?f=`l`:d>0&&u&&(p=1),n[d]={type:`align`,align:f,pregap:p,postgap:0}}return i.colSeparationType=u?`align`:`alignat`,i};ss({type:`array`,names:[`array`,`darray`],props:{numArgs:1},handler(e,t){var n=(ao(t[0])?[t[0]]:X(t[0],`ordgroup`).body).map(function(e){var t=io(e).text;if(`lcr`.includes(t))return{type:`align`,align:t};if(t===`|`)return{type:`separator`,separator:`|`};if(t===`:`)return{type:`separator`,separator:`:`};throw new P(`Unknown column alignment: `+t,e)}),r={cols:n,hskipBeforeAndAfter:!0,maxNumCols:n.length};return hs(e.parser,r,gs(e.envName))},htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`matrix`,`pmatrix`,`bmatrix`,`Bmatrix`,`vmatrix`,`Vmatrix`,`matrix*`,`pmatrix*`,`bmatrix*`,`Bmatrix*`,`vmatrix*`,`Vmatrix*`],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:[`(`,`)`],bmatrix:[`[`,`]`],Bmatrix:[`\\{`,`\\}`],vmatrix:[`|`,`|`],Vmatrix:[`\\Vert`,`\\Vert`]}[e.envName.replace(`*`,``)],n=`c`,r={hskipBeforeAndAfter:!1,cols:[{type:`align`,align:n}]};if(e.envName.charAt(e.envName.length-1)===`*`){var i=e.parser;if(i.consumeSpaces(),i.fetch().text===`[`){if(i.consume(),i.consumeSpaces(),n=i.fetch().text,!`lcr`.includes(n))throw new P(`Expected l or c or r`,i.nextToken);i.consume(),i.consumeSpaces(),i.expect(`]`),i.consume(),r.cols=[{type:`align`,align:n}]}}var a=hs(e.parser,r,gs(e.envName)),o=Math.max(0,...a.body.map(e=>e.length));return a.cols=Array(o).fill({type:`align`,align:n}),t?{type:`leftright`,mode:e.mode,body:[a],left:t[0],right:t[1],rightColor:void 0}:a},htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`smallmatrix`],props:{numArgs:0},handler(e){var t=hs(e.parser,{arraystretch:.5},`script`);return t.colSeparationType=`small`,t},htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`subarray`],props:{numArgs:1},handler(e,t){var n=(ao(t[0])?[t[0]]:X(t[0],`ordgroup`).body).map(function(e){var t=io(e).text;if(`lc`.includes(t))return{type:`align`,align:t};throw new P(`Unknown column alignment: `+t,e)});if(n.length>1)throw new P(`{subarray} can contain only one column`);var r={cols:n,hskipBeforeAndAfter:!1,arraystretch:.5},i=hs(e.parser,r,`script`);if(i.body.length>0&&i.body[0].length>1)throw new P(`{subarray} can contain only one column`);return i},htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`cases`,`dcases`,`rcases`,`drcases`],props:{numArgs:0},handler(e){var t=hs(e.parser,{arraystretch:1.2,cols:[{type:`align`,align:`l`,pregap:0,postgap:1},{type:`align`,align:`l`,pregap:0,postgap:0}]},gs(e.envName));return{type:`leftright`,mode:e.mode,body:[t],left:e.envName.includes(`r`)?`.`:`\\{`,right:e.envName.includes(`r`)?`\\}`:`.`,rightColor:void 0}},htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`align`,`align*`,`aligned`,`split`],props:{numArgs:0},handler:bs,htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`gathered`,`gather`,`gather*`],props:{numArgs:0},handler(e){ps.has(e.envName)&&fs(e);var t={cols:[{type:`align`,align:`c`}],addJot:!0,colSeparationType:`gather`,autoTag:ms(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return hs(e.parser,t,`display`)},htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`alignat`,`alignat*`,`alignedat`],props:{numArgs:1},handler:bs,htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`equation`,`equation*`],props:{numArgs:0},handler(e){fs(e);var t={autoTag:ms(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return hs(e.parser,t,`display`)},htmlBuilder:_s,mathmlBuilder:ys}),ss({type:`array`,names:[`CD`],props:{numArgs:0},handler(e){return fs(e),xo(e.parser)},htmlBuilder:_s,mathmlBuilder:ys}),Z(`\\nonumber`,`\\gdef\\@eqnsw{0}`),Z(`\\notag`,`\\nonumber`),J({type:`text`,names:[`\\hline`,`\\hdashline`],numArgs:0,allowedInText:!0,allowedInMath:!0,handler(e,t){throw new P(e.funcName+` valid only within array environment`)}});var xs=os;J({type:`environment`,names:[`\\begin`,`\\end`],numArgs:1,argTypes:[`text`],handler(e,t){var n=e.parser,r=e.funcName,i=t[0];if(i.type!==`ordgroup`)throw new P(`Invalid environment name`,i);var a=oo(i,`Environment name should contain only text characters and spaces`,!0);if(r===`\\begin`){if(!Object.prototype.hasOwnProperty.call(xs,a))throw new P(`No such environment: `+a,i);var o=xs[a],s=n.parseArguments(`\\begin{`+a+`}`,o),c=s.args,l=s.optArgs,u={mode:n.mode,envName:a,parser:n},d=o.handler(u,c,l);n.expect(`\\end`,!1);var f=n.nextToken,p=X(n.parseFunction(),`environment`);if(p.name!==a)throw new P(`Mismatch: \\begin{`+a+`} matched by \\end{`+p.name+`}`,f);return d}return{type:`environment`,mode:n.mode,name:a,nameGroup:i}}});var Ss=(e,t)=>{var n=e.font,r=t.withFont(n);return Sa(e.body,r)},Cs=(e,t)=>{var n=e.font,r=t.withFont(n);return La(e.body,r)},ws={"\\Bbb":`\\mathbb`,"\\bold":`\\mathbf`,"\\frak":`\\mathfrak`};J({type:`font`,names:[`\\mathrm`,`\\mathit`,`\\mathbf`,`\\mathnormal`,`\\mathsfit`,`\\mathbb`,`\\mathcal`,`\\mathfrak`,`\\mathscr`,`\\mathsf`,`\\mathtt`,`\\Bbb`,`\\bold`,`\\frak`],numArgs:1,allowedInArgument:!0,handler:(e,t)=>{var n=e.parser,r=e.funcName,i=ua(t[0]),a=r in ws?ws[r]:r;return{type:`font`,mode:n.mode,font:a.slice(1),body:i}},htmlBuilder:Ss,mathmlBuilder:Cs}),J({type:`mclass`,names:[`\\boldsymbol`,`\\bm`],numArgs:1,handler:(e,t)=>{var n=e.parser,r=t[0];return{type:`mclass`,mode:n.mode,mclass:ho(r),body:[{type:`font`,mode:n.mode,font:`boldsymbol`,body:r}],isCharacterBox:Nn(r)}}}),J({type:`font`,names:[`\\rm`,`\\sf`,`\\tt`,`\\bf`,`\\it`,`\\cal`],numArgs:0,allowedInText:!0,handler:(e,t)=>{var n=e.parser,r=e.funcName,i=e.breakOnTokenText,a=n.mode,o=n.parseExpression(!0,i);return{type:`font`,mode:a,font:`math`+r.slice(1),body:{type:`ordgroup`,mode:n.mode,body:o}}}});var Ts=(e,t)=>{var n=t.style,r=n.fracNum(),i=n.fracDen(),a=t.havingStyle(r),o=Sa(e.numer,a,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,c=3.5/t.fontMetrics().ptPerEm;o.height=o.height<s?s:o.height,o.depth=o.depth<c?c:o.depth}a=t.havingStyle(i);var l=Sa(e.denom,a,t),u,d,f;e.hasBarLine?(e.barSize?(d=wr(e.barSize,t),u=Wi(`frac-line`,t,d)):u=Wi(`frac-line`,t),d=u.height,f=u.height):(u=null,d=0,f=t.fontMetrics().defaultRuleThickness);var p,m,h;n.size===F.DISPLAY.size?(p=t.fontMetrics().num1,m=d>0?3*f:7*f,h=t.fontMetrics().denom1):(d>0?(p=t.fontMetrics().num2,m=f):(p=t.fontMetrics().num3,m=3*f),h=t.fontMetrics().denom2);var g;if(u){var _=t.fontMetrics().axisHeight;p-o.depth-(_+.5*d)<m&&(p+=m-(p-o.depth-(_+.5*d))),_-.5*d-(l.height-h)<m&&(h+=m-(_-.5*d-(l.height-h)));var v=-(_-.5*d);g=Yi({positionType:`individualShift`,children:[{type:`elem`,elem:l,shift:h},{type:`elem`,elem:u,shift:v},{type:`elem`,elem:o,shift:-p}]})}else{var y=p-o.depth-(l.height-h);y<m&&(p+=.5*(m-y),h+=.5*(m-y)),g=Yi({positionType:`individualShift`,children:[{type:`elem`,elem:l,shift:h},{type:`elem`,elem:o,shift:-p}]})}a=t.havingStyle(n),g.height*=a.sizeMultiplier/t.sizeMultiplier,g.depth*=a.sizeMultiplier/t.sizeMultiplier;var b=n.size===F.DISPLAY.size?t.fontMetrics().delim1:n.size===F.SCRIPTSCRIPT.size?t.havingStyle(F.SCRIPT).fontMetrics().delim2:t.fontMetrics().delim2,x=e.leftDelim==null?xa(t,[`mopen`]):$o(e.leftDelim,b,!0,t.havingStyle(n),e.mode,[`mopen`]),S=e.continued?q([]):e.rightDelim==null?xa(t,[`mclose`]):$o(e.rightDelim,b,!0,t.havingStyle(n),e.mode,[`mclose`]);return q([`mord`].concat(a.sizingClasses(t)),[x,q([`mfrac`],[g]),S],t)},Es=(e,t)=>{var n=new Y(`mfrac`,[La(e.numer,t),La(e.denom,t)]);if(!e.hasBarLine)n.setAttribute(`linethickness`,`0px`);else if(e.barSize){var r=wr(e.barSize,t);n.setAttribute(`linethickness`,I(r))}if(e.leftDelim!=null||e.rightDelim!=null){var i=[];if(e.leftDelim!=null){var a=new Y(`mo`,[new Ea(e.leftDelim.replace(`\\`,``))]);a.setAttribute(`fence`,`true`),i.push(a)}if(i.push(n),e.rightDelim!=null){var o=new Y(`mo`,[new Ea(e.rightDelim.replace(`\\`,``))]);o.setAttribute(`fence`,`true`),i.push(o)}return ja(i)}return n},Ds=(e,t)=>t?{type:`styling`,mode:e.mode,style:t,body:[e]}:e;J({type:`genfrac`,names:[`\\cfrac`,`\\dfrac`,`\\frac`,`\\tfrac`,`\\dbinom`,`\\binom`,`\\tbinom`,`\\\\atopfrac`,`\\\\bracefrac`,`\\\\brackfrac`],numArgs:2,allowedInArgument:!0,handler:(e,t)=>{var n=e.parser,r=e.funcName,i=t[0],a=t[1],o,s=null,c=null;switch(r){case`\\cfrac`:case`\\dfrac`:case`\\frac`:case`\\tfrac`:o=!0;break;case`\\\\atopfrac`:o=!1;break;case`\\dbinom`:case`\\binom`:case`\\tbinom`:o=!1,s=`(`,c=`)`;break;case`\\\\bracefrac`:o=!1,s=`\\{`,c=`\\}`;break;case`\\\\brackfrac`:o=!1,s=`[`,c=`]`;break;default:throw Error(`Unrecognized genfrac command`)}var l=r===`\\cfrac`,u=null;return l||r.startsWith(`\\d`)?u=`display`:r.startsWith(`\\t`)&&(u=`text`),Ds({type:`genfrac`,mode:n.mode,numer:i,denom:a,continued:l,hasBarLine:o,leftDelim:s,rightDelim:c,barSize:null},u)},htmlBuilder:Ts,mathmlBuilder:Es}),J({type:`infix`,names:[`\\over`,`\\choose`,`\\atop`,`\\brace`,`\\brack`],numArgs:0,infix:!0,handler(e){var t=e.parser,n=e.funcName,r=e.token,i;switch(n){case`\\over`:i=`\\frac`;break;case`\\choose`:i=`\\binom`;break;case`\\atop`:i=`\\\\atopfrac`;break;case`\\brace`:i=`\\\\bracefrac`;break;case`\\brack`:i=`\\\\brackfrac`;break;default:throw Error(`Unrecognized infix genfrac command`)}return{type:`infix`,mode:t.mode,replaceWith:i,token:r}}});var Os=[`display`,`text`,`script`,`scriptscript`],ks=function(e){var t=null;return e.length>0&&(t=e,t=t===`.`?null:t),t};J({type:`genfrac`,names:[`\\genfrac`],numArgs:6,allowedInArgument:!0,argTypes:[`math`,`math`,`size`,`text`,`math`,`math`],handler(e,t){var n=e.parser,r=t[4],i=t[5],a=ua(t[0]),o=a.type===`atom`&&a.family===`open`?ks(a.text):null,s=ua(t[1]),c=s.type===`atom`&&s.family===`close`?ks(s.text):null,l=X(t[2],`size`),u,d=null;l.isBlank?u=!0:(d=l.value,u=d.number>0);var f=null,p=t[3];if(p.type===`ordgroup`){if(p.body.length>0){var m=X(p.body[0],`textord`);f=Os[Number(m.text)]}}else p=X(p,`textord`),f=Os[Number(p.text)];return Ds({type:`genfrac`,mode:n.mode,numer:r,denom:i,continued:!1,hasBarLine:u,barSize:d,leftDelim:o,rightDelim:c},f)}}),J({type:`infix`,names:[`\\above`],numArgs:1,argTypes:[`size`],infix:!0,handler(e,t){var n=e.parser;e.funcName;var r=e.token;return{type:`infix`,mode:n.mode,replaceWith:`\\\\abovefrac`,size:X(t[0],`size`).value,token:r}}}),J({type:`genfrac`,names:[`\\\\abovefrac`],numArgs:3,argTypes:[`math`,`size`,`math`],handler:(e,t)=>{var n=e.parser;e.funcName;var r=t[0],i=X(t[1],`infix`).size;if(!i)throw Error(`\\\\abovefrac expected size, but got `+String(i));var a=t[2],o=i.number>0;return{type:`genfrac`,mode:n.mode,numer:r,denom:a,continued:!1,hasBarLine:o,barSize:i,leftDelim:null,rightDelim:null}}});var As=(e,t)=>{var n=t.style,r,i;e.type===`supsub`?(r=e.sup?Sa(e.sup,t.havingStyle(n.sup()),t):Sa(e.sub,t.havingStyle(n.sub()),t),i=X(e.base,`horizBrace`)):i=X(e,`horizBrace`);var a=Sa(i.base,t.havingBaseStyle(F.DISPLAY)),o=Za(i,t),s=i.isOver?Yi({positionType:`firstBaseline`,children:[{type:`elem`,elem:a},{type:`kern`,size:.1},{type:`elem`,elem:o,wrapperClasses:[`svg-align`]}]}):Yi({positionType:`bottom`,positionData:a.depth+.1+o.height,children:[{type:`elem`,elem:o,wrapperClasses:[`svg-align`]},{type:`kern`,size:.1},{type:`elem`,elem:a}]});if(r){var c=q([`minner`,i.isOver?`mover`:`munder`],[s],t);s=i.isOver?Yi({positionType:`firstBaseline`,children:[{type:`elem`,elem:c},{type:`kern`,size:.2},{type:`elem`,elem:r}]}):Yi({positionType:`bottom`,positionData:c.depth+.2+r.height+r.depth,children:[{type:`elem`,elem:r},{type:`kern`,size:.2},{type:`elem`,elem:c}]})}return q([`minner`,i.isOver?`mover`:`munder`],[s],t)};J({type:`horizBrace`,names:[`\\overbrace`,`\\underbrace`,`\\overbracket`,`\\underbracket`],numArgs:1,handler(e,t){var n=e.parser,r=e.funcName;return{type:`horizBrace`,mode:n.mode,label:r,isOver:r.includes(`\\over`),base:t[0]}},htmlBuilder:As,mathmlBuilder:(e,t)=>{var n=Ja(e.label);return new Y(e.isOver?`mover`:`munder`,[La(e.base,t),n])}}),J({type:`href`,names:[`\\href`],numArgs:2,argTypes:[`url`,`original`],allowedInText:!0,handler:(e,t)=>{var n=e.parser,r=t[1],i=X(t[0],`url`).url;return n.settings.isTrusted({command:`\\href`,url:i})?{type:`href`,mode:n.mode,href:i,body:da(r)}:n.formatUnsupportedCmd(`\\href`)},htmlBuilder:(e,t)=>{var n=ga(e.body,t,!1);return Gi(e.href,[],n,t)},mathmlBuilder:(e,t)=>{var n=Ia(e.body,t);return n instanceof Y||(n=new Y(`mrow`,[n])),n.setAttribute(`href`,e.href),n}}),J({type:`href`,names:[`\\url`],numArgs:1,argTypes:[`url`],allowedInText:!0,handler:(e,t)=>{var n=e.parser,r=X(t[0],`url`).url;if(!n.settings.isTrusted({command:`\\url`,url:r}))return n.formatUnsupportedCmd(`\\url`);for(var i=[],a=0;a<r.length;a++){var o=r[a];o===`~`&&(o=`\\textasciitilde`),i.push({type:`textord`,mode:`text`,text:o})}var s={type:`text`,mode:n.mode,font:`\\texttt`,body:i};return{type:`href`,mode:n.mode,href:r,body:da(s)}}}),J({type:`hbox`,names:[`\\hbox`],numArgs:1,argTypes:[`text`],allowedInText:!0,primitive:!0,handler(e,t){return{type:`hbox`,mode:e.parser.mode,body:da(t[0])}},htmlBuilder(e,t){return Ki(ga(e.body,t.withFont(``),!1))},mathmlBuilder(e,t){return new Y(`mrow`,Fa(e.body,t.withFont(``)))}}),J({type:`html`,names:[`\\htmlClass`,`\\htmlId`,`\\htmlStyle`,`\\htmlData`],numArgs:2,argTypes:[`raw`,`original`],allowedInText:!0,handler:(e,t)=>{var n=e.parser,r=e.funcName;e.token;var i=X(t[0],`raw`).string,a=t[1];n.settings.strict&&n.settings.reportNonstrict(`htmlExtension`,`HTML extension is disabled on strict mode`);var o,s={};switch(r){case`\\htmlClass`:s.class=i,o={command:`\\htmlClass`,class:i};break;case`\\htmlId`:s.id=i,o={command:`\\htmlId`,id:i};break;case`\\htmlStyle`:s.style=i,o={command:`\\htmlStyle`,style:i};break;case`\\htmlData`:for(var c=`{,}`,l=[],u=``,d=0;d<i.length;d++)i.startsWith(c,d)?(u+=`,`,d+=c.length-1):i[d]===`,`?(l.push(u),u=``):u+=i[d];l.push(u);for(var f=0;f<l.length;f++){var p=l[f],m=p.indexOf(`=`);if(m<0)throw new P(`\\htmlData key/value '`+p+`' missing equals sign`);var h=p.slice(0,m),g=p.slice(m+1);s[`data-`+h.trim()]=g}o={command:`\\htmlData`,attributes:s};break;default:throw Error(`Unrecognized html command`)}return n.settings.isTrusted(o)?{type:`html`,mode:n.mode,attributes:s,body:da(a)}:n.formatUnsupportedCmd(r)},htmlBuilder:(e,t)=>{var n=ga(e.body,t,!1),r=[`enclosing`];e.attributes.class&&r.push(...e.attributes.class.trim().split(/\s+/));var i=q(r,n,t);for(var a of Object.entries(e.attributes)){var o=a[0],s=a[1];o!==`class`&&i.setAttribute(o,s)}return i},mathmlBuilder:(e,t)=>Ia(e.body,t)}),J({type:`htmlmathml`,names:[`\\html@mathml`],numArgs:2,allowedInArgument:!0,allowedInText:!0,handler:(e,t)=>({type:`htmlmathml`,mode:e.parser.mode,html:da(t[0]),mathml:da(t[1])}),htmlBuilder:(e,t)=>Ki(ga(e.html,t,!1)),mathmlBuilder:(e,t)=>Ia(e.mathml,t)});var js=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:`bp`};var t=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!t)throw new P(`Invalid size: '`+e+`' in \\includegraphics`);var n={number:+(t[1]+t[2]),unit:t[3]};if(!Cr(n))throw new P(`Invalid unit: '`+n.unit+`' in \\includegraphics.`);return n};J({type:`includegraphics`,names:[`\\includegraphics`],numArgs:1,numOptionalArgs:1,argTypes:[`raw`,`url`],allowedInText:!1,handler:(e,t,n)=>{var r=e.parser,i={number:0,unit:`em`},a={number:.9,unit:`em`},o={number:0,unit:`em`},s=``;if(n[0])for(var c=X(n[0],`raw`).string.split(`,`),l=0;l<c.length;l++){var u=c[l].split(`=`);if(u.length===2){var d=u[1].trim();switch(u[0].trim()){case`alt`:s=d;break;case`width`:i=js(d);break;case`height`:a=js(d);break;case`totalheight`:o=js(d);break;default:throw new P(`Invalid key: '`+u[0]+`' in \\includegraphics.`)}}}var f=X(t[0],`url`).url;return s===``&&(s=f,s=s.replace(/^.*[\\/]/,``),s=s.substring(0,s.lastIndexOf(`.`))),r.settings.isTrusted({command:`\\includegraphics`,url:f})?{type:`includegraphics`,mode:r.mode,alt:s,width:i,height:a,totalheight:o,src:f}:r.formatUnsupportedCmd(`\\includegraphics`)},htmlBuilder:(e,t)=>{var n=wr(e.height,t),r=0;e.totalheight.number>0&&(r=wr(e.totalheight,t)-n);var i=0;e.width.number>0&&(i=wr(e.width,t));var a={height:I(n+r)};i>0&&(a.width=I(i)),r>0&&(a.verticalAlign=I(-r));var o=new Nr(e.src,e.alt,a);return o.height=n,o.depth=r,o},mathmlBuilder:(e,t)=>{var n=new Y(`mglyph`,[]);n.setAttribute(`alt`,e.alt);var r=wr(e.height,t),i=0;if(e.totalheight.number>0&&(i=wr(e.totalheight,t)-r,n.setAttribute(`valign`,I(-i))),n.setAttribute(`height`,I(r+i)),e.width.number>0){var a=wr(e.width,t);n.setAttribute(`width`,I(a))}return n.setAttribute(`src`,e.src),n}}),J({type:`kern`,names:[`\\kern`,`\\mkern`,`\\hskip`,`\\mskip`],numArgs:1,argTypes:[`size`],primitive:!0,allowedInText:!0,handler(e,t){var n=e.parser,r=e.funcName,i=X(t[0],`size`);if(n.settings.strict){var a=r[1]===`m`,o=i.value.unit===`mu`;a?(o||n.settings.reportNonstrict(`mathVsTextUnits`,`LaTeX's `+r+` supports only mu units, `+(`not `+i.value.unit+` units`)),n.mode!==`math`&&n.settings.reportNonstrict(`mathVsTextUnits`,`LaTeX's `+r+` works only in math mode`)):o&&n.settings.reportNonstrict(`mathVsTextUnits`,`LaTeX's `+r+` doesn't support mu units`)}return{type:`kern`,mode:n.mode,dimension:i.value}},htmlBuilder(e,t){return Xi(e.dimension,t)},mathmlBuilder(e,t){return new Da(wr(e.dimension,t))}}),J({type:`lap`,names:[`\\mathllap`,`\\mathrlap`,`\\mathclap`],numArgs:1,allowedInText:!0,handler:(e,t)=>{var n=e.parser,r=e.funcName,i=t[0];return{type:`lap`,mode:n.mode,alignment:r.slice(5),body:i}},htmlBuilder:(e,t)=>{var n;e.alignment===`clap`?(n=q([],[Sa(e.body,t)]),n=q([`katex-inner`],[n],t)):n=q([`katex-inner`],[Sa(e.body,t)]);var r=q([`katex-fix`],[]),i=q([e.alignment],[n,r],t),a=q([`katex-strut`]);return a.style.height=I(i.height+i.depth),i.depth&&(a.style.verticalAlign=I(-i.depth)),i.children.unshift(a),i=q([`katex-thinbox`],[i],t),q([`mord`,`katex-vbox`],[i],t)},mathmlBuilder:(e,t)=>{var n=new Y(`mpadded`,[La(e.body,t)]);if(e.alignment!==`rlap`){var r=e.alignment===`llap`?`-1`:`-0.5`;n.setAttribute(`lspace`,r+`width`)}return n.setAttribute(`width`,`0px`),n}}),J({type:`styling`,names:[`\\(`,`$`],numArgs:0,allowedInText:!0,allowedInMath:!1,handler(e,t){var n=e.funcName,r=e.parser,i=r.mode;r.switchMode(`math`);var a=n===`\\(`?`\\)`:`$`,o=r.parseExpression(!1,a);return r.expect(a),r.switchMode(i),{type:`styling`,mode:r.mode,style:`text`,resetFont:!0,body:o}}}),J({type:`text`,names:[`\\)`,`\\]`],numArgs:0,allowedInText:!0,allowedInMath:!1,handler(e,t){throw new P(`Mismatched `+e.funcName)}});var Ms=(e,t)=>{switch(t.style.size){case F.DISPLAY.size:return e.display;case F.TEXT.size:return e.text;case F.SCRIPT.size:return e.script;case F.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};J({type:`mathchoice`,names:[`\\mathchoice`],numArgs:4,primitive:!0,handler:(e,t)=>({type:`mathchoice`,mode:e.parser.mode,display:da(t[0]),text:da(t[1]),script:da(t[2]),scriptscript:da(t[3])}),htmlBuilder:(e,t)=>Ki(ga(Ms(e,t),t,!1)),mathmlBuilder:(e,t)=>Ia(Ms(e,t),t)});var Ns=(e,t,n,r,i,a,o)=>{e=q([],[e]);var s=n&&Nn(n),c,l;if(t){var u=Sa(t,r.havingStyle(i.sup()),r);l={elem:u,kern:Math.max(r.fontMetrics().bigOpSpacing1,r.fontMetrics().bigOpSpacing3-u.depth)}}if(n){var d=Sa(n,r.havingStyle(i.sub()),r);c={elem:d,kern:Math.max(r.fontMetrics().bigOpSpacing2,r.fontMetrics().bigOpSpacing4-d.height)}}var f;if(l&&c)f=Yi({positionType:`bottom`,positionData:r.fontMetrics().bigOpSpacing5+c.elem.height+c.elem.depth+c.kern+e.depth+o,children:[{type:`kern`,size:r.fontMetrics().bigOpSpacing5},{type:`elem`,elem:c.elem,marginLeft:I(-a)},{type:`kern`,size:c.kern},{type:`elem`,elem:e},{type:`kern`,size:l.kern},{type:`elem`,elem:l.elem,marginLeft:I(a)},{type:`kern`,size:r.fontMetrics().bigOpSpacing5}]});else if(c)f=Yi({positionType:`top`,positionData:e.height-o,children:[{type:`kern`,size:r.fontMetrics().bigOpSpacing5},{type:`elem`,elem:c.elem,marginLeft:I(-a)},{type:`kern`,size:c.kern},{type:`elem`,elem:e}]});else if(l)f=Yi({positionType:`bottom`,positionData:e.depth+o,children:[{type:`elem`,elem:e},{type:`kern`,size:l.kern},{type:`elem`,elem:l.elem,marginLeft:I(a)},{type:`kern`,size:r.fontMetrics().bigOpSpacing5}]});else return e;var p=[f];if(c&&a!==0&&!s){var m=q([`mspace`],[],r);m.style.marginRight=I(a),p.unshift(m)}return q([`mop`,`op-limits`],p,r)},Ps=new Set([`\\smallint`]),Fs=(e,t)=>{var n,r,i=!1,a;e.type===`supsub`?(n=e.sup,r=e.sub,a=X(e.base,`op`),i=!0):a=X(e,`op`);var o=t.style,s=!1;o.size===F.DISPLAY.size&&a.symbol&&!Ps.has(a.name)&&(s=!0);var c,l;if(a.symbol){var u=s?`Size2-Regular`:`Size1-Regular`,d=``;if((a.name===`\\oiint`||a.name===`\\oiiint`)&&(d=a.name.slice(1),a.name=d===`oiint`?`\\iint`:`\\iiint`),c=Ii(a.name,u,`math`,t,[`mop`,`op-symbol`,s?`large-op`:`small-op`]),l=c.italic,d.length>0){var f=ea(d+`Size`+(s?`2`:`1`),t);c=Yi({positionType:`individualShift`,children:[{type:`elem`,elem:c,shift:0},{type:`elem`,elem:f,shift:s?.08:0}]}),a.name=`\\`+d,c.classes.unshift(`mop`),c.italic=l}}else if(a.body){var p=ga(a.body,t,!0);p.length===1&&p[0]instanceof Fr?(c=p[0],c.classes[0]=`mop`):c=q([`mop`],p,t)}else{for(var m=[],h=1;h<a.name.length;h++)m.push(Li(a.name[h],a.mode,t));c=q([`mop`],m,t)}var g=0,_=0;return(c instanceof Fr||a.name===`\\oiint`||a.name===`\\oiiint`)&&!a.suppressBaseShift&&(g=(c.height-c.depth)/2-t.fontMetrics().axisHeight,_=c.italic??0),i?Ns(c,n,r,t,o,_,g):(g&&(c.style.position=`relative`,c.style.top=I(g)),c)},Is=(e,t)=>{var n;if(e.symbol)n=new Y(`mo`,[Aa(e.name,e.mode)]),Ps.has(e.name)&&n.setAttribute(`largeop`,`false`);else if(e.body)n=new Y(`mo`,Fa(e.body,t));else{n=new Y(`mi`,[new Ea(e.name.slice(1))]);var r=new Y(`mo`,[Aa(`⁡`,`text`)]);n=e.parentIsSupSub?new Y(`mrow`,[n,r]):Ta([n,r])}return n},Ls={"∏":`\\prod`,"∐":`\\coprod`,"∑":`\\sum`,"⋀":`\\bigwedge`,"⋁":`\\bigvee`,"⋂":`\\bigcap`,"⋃":`\\bigcup`,"⨀":`\\bigodot`,"⨁":`\\bigoplus`,"⨂":`\\bigotimes`,"⨄":`\\biguplus`,"⨆":`\\bigsqcup`};J({type:`op`,names:`\\coprod.\\bigvee.\\bigwedge.\\biguplus.\\bigcap.\\bigcup.\\intop.\\prod.\\sum.\\bigotimes.\\bigoplus.\\bigodot.\\bigsqcup.\\smallint.∏.∐.∑.⋀.⋁.⋂.⋃.⨀.⨁.⨂.⨄.⨆`.split(`.`),numArgs:0,handler:(e,t)=>{var n=e.parser,r=e.funcName;return r.length===1&&(r=Ls[r]),{type:`op`,mode:n.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:Fs,mathmlBuilder:Is}),J({type:`op`,names:[`\\mathop`],numArgs:1,primitive:!0,handler:(e,t)=>{var n=e.parser,r=t[0];return{type:`op`,mode:n.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:da(r)}}});var Rs={"∫":`\\int`,"∬":`\\iint`,"∭":`\\iiint`,"∮":`\\oint`,"∯":`\\oiint`,"∰":`\\oiiint`};J({type:`op`,names:`\\arcsin.\\arccos.\\arctan.\\arctg.\\arcctg.\\arg.\\ch.\\cos.\\cosec.\\cosh.\\cot.\\cotg.\\coth.\\csc.\\ctg.\\cth.\\deg.\\dim.\\exp.\\hom.\\ker.\\lg.\\ln.\\log.\\sec.\\sin.\\sinh.\\sh.\\tan.\\tanh.\\tg.\\th`.split(`.`),numArgs:0,handler(e){var t=e.parser,n=e.funcName;return{type:`op`,mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:n}}}),J({type:`op`,names:[`\\det`,`\\gcd`,`\\inf`,`\\lim`,`\\max`,`\\min`,`\\Pr`,`\\sup`],numArgs:0,handler(e){var t=e.parser,n=e.funcName;return{type:`op`,mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:n}}}),J({type:`op`,names:[`\\int`,`\\iint`,`\\iiint`,`\\oint`,`\\oiint`,`\\oiiint`,`∫`,`∬`,`∭`,`∮`,`∯`,`∰`],numArgs:0,allowedInArgument:!0,handler(e){var t=e.parser,n=e.funcName;return n.length===1&&(n=Rs[n]),{type:`op`,mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}}});var zs=(e,t)=>{var n,r,i=!1,a;e.type===`supsub`?(n=e.sup,r=e.sub,a=X(e.base,`operatorname`),i=!0):a=X(e,`operatorname`);var o;if(a.body.length>0){for(var s=ga(a.body.map(e=>{var t=`text`in e?e.text:void 0;return typeof t==`string`?{type:`textord`,mode:e.mode,text:t}:e}),t.withFont(`mathrm`),!0),c=0;c<s.length;c++){var l=s[c];l instanceof Fr&&(l.text=l.text.replace(/\u2212/,`-`).replace(/\u2217/,`*`))}o=q([`mop`],s,t)}else o=q([`mop`],[],t);return i?Ns(o,n,r,t,t.style,0,0):o};J({type:`operatorname`,names:[`\\operatorname@`,`\\operatornamewithlimits`],numArgs:1,handler:(e,t)=>{var n=e.parser,r=e.funcName,i=t[0];return{type:`operatorname`,mode:n.mode,body:da(i),alwaysHandleSupSub:r===`\\operatornamewithlimits`,limits:!1,parentIsSupSub:!1}},htmlBuilder:zs,mathmlBuilder:(e,t)=>{for(var n=Fa(e.body,t.withFont(`mathrm`)),r=!0,i=0;i<n.length;i++){var a=n[i];if(!(a instanceof Da))if(a instanceof Y)switch(a.type){case`mi`:case`mn`:case`mspace`:case`mtext`:break;case`mo`:var o=a.children[0];a.children.length===1&&o instanceof Ea?o.text=o.text.replace(/\u2212/,`-`).replace(/\u2217/,`*`):r=!1;break;default:r=!1}else r=!1}r&&(n=[new Ea(n.map(e=>e.toText()).join(``))]);var s=new Y(`mi`,n);s.setAttribute(`mathvariant`,`normal`);var c=new Y(`mo`,[Aa(`⁡`,`text`)]);return e.parentIsSupSub?new Y(`mrow`,[s,c]):Ta([s,c])}}),Z(`\\operatorname`,`\\@ifstar\\operatornamewithlimits\\operatorname@`),la({type:`ordgroup`,htmlBuilder(e,t){return e.semisimple?Ki(ga(e.body,t,!1)):q([`mord`],ga(e.body,t,!0),t)},mathmlBuilder(e,t){return Ia(e.body,t,!0)}}),J({type:`overline`,names:[`\\overline`],numArgs:1,handler(e,t){var n=e.parser,r=t[0];return{type:`overline`,mode:n.mode,body:r}},htmlBuilder(e,t){var n=Sa(e.body,t.havingCrampedStyle()),r=Wi(`overline-line`,t),i=t.fontMetrics().defaultRuleThickness;return q([`mord`,`katex-overline`],[Yi({positionType:`firstBaseline`,children:[{type:`elem`,elem:n},{type:`kern`,size:3*i},{type:`elem`,elem:r},{type:`kern`,size:i}]})],t)},mathmlBuilder(e,t){var n=new Y(`mo`,[new Ea(`‾`)]);n.setAttribute(`stretchy`,`true`);var r=new Y(`mover`,[La(e.body,t),n]);return r.setAttribute(`accent`,`true`),r}}),J({type:`phantom`,names:[`\\phantom`],numArgs:1,allowedInText:!0,handler:(e,t)=>{var n=e.parser,r=t[0];return{type:`phantom`,mode:n.mode,body:da(r)}},htmlBuilder:(e,t)=>Ki(ga(e.body,t.withPhantom(),!1)),mathmlBuilder:(e,t)=>new Y(`mphantom`,Fa(e.body,t))}),Z(`\\hphantom`,`\\smash{\\phantom{#1}}`),J({type:`vphantom`,names:[`\\vphantom`],numArgs:1,allowedInText:!0,handler:(e,t)=>{var n=e.parser,r=t[0];return{type:`vphantom`,mode:n.mode,body:r}},htmlBuilder:(e,t)=>q([`mord`,`rlap`],[q([`katex-inner`],[Sa(e.body,t.withPhantom())]),q([`katex-fix`],[])],t),mathmlBuilder:(e,t)=>{var n=new Y(`mpadded`,[new Y(`mphantom`,Fa(da(e.body),t))]);return n.setAttribute(`width`,`0px`),n}}),J({type:`raisebox`,names:[`\\raisebox`],numArgs:2,argTypes:[`size`,`hbox`],allowedInText:!0,handler(e,t){var n=e.parser,r=X(t[0],`size`).value,i=t[1];return{type:`raisebox`,mode:n.mode,dy:r,body:i}},htmlBuilder(e,t){var n=Sa(e.body,t);return Yi({positionType:`shift`,positionData:-wr(e.dy,t),children:[{type:`elem`,elem:n}]})},mathmlBuilder(e,t){var n=new Y(`mpadded`,[La(e.body,t)]),r=e.dy.number+e.dy.unit;return n.setAttribute(`voffset`,r),n}});var Bs=(e,t)=>({type:`reflectbox`,mode:e.parser.mode,body:t[0]});J({type:`reflectbox`,names:[`\\reflectbox`],numArgs:1,argTypes:[`hbox`],allowedInText:!0,handler:Bs,htmlBuilder(e,t){return q([`mord`,`reflectbox`],[Sa(e.body,t)],t)},mathmlBuilder(e,t){return La(e.body,t)}}),J({type:`reflectbox`,names:[`\\mathreflectbox`],numArgs:1,argTypes:[`math`],handler:Bs}),J({type:`internal`,names:[`\\relax`],numArgs:0,allowedInText:!0,allowedInArgument:!0,handler(e){return{type:`internal`,mode:e.parser.mode}}}),J({type:`rule`,names:[`\\rule`],numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:[`size`,`size`,`size`],handler(e,t,n){var r=e.parser,i=n[0],a=X(t[0],`size`),o=X(t[1],`size`);return{type:`rule`,mode:r.mode,shift:i&&X(i,`size`).value,width:a.value,height:o.value}},htmlBuilder(e,t){var n=q([`mord`,`katex-rule`],[],t),r=wr(e.width,t),i=wr(e.height,t),a=e.shift?wr(e.shift,t):0;return n.style.borderRightWidth=I(r),n.style.borderTopWidth=I(i),n.style.bottom=I(a),n.width=r,n.height=i+a,n.depth=-a,n.maxFontSize=i*1.125*t.sizeMultiplier,n},mathmlBuilder(e,t){var n=wr(e.width,t),r=wr(e.height,t),i=e.shift?wr(e.shift,t):0,a=t.color&&t.getColor()||`black`,o=new Y(`mspace`);o.setAttribute(`mathbackground`,a),o.setAttribute(`width`,I(n)),o.setAttribute(`height`,I(r));var s=new Y(`mpadded`,[o]);return i>=0?s.setAttribute(`height`,I(i)):(s.setAttribute(`height`,I(i)),s.setAttribute(`depth`,I(-i))),s.setAttribute(`voffset`,I(i)),s}});function Vs(e,t,n){for(var r=ga(e,t,!1),i=t.sizeMultiplier/n.sizeMultiplier,a=0;a<r.length;a++){var o=r[a].classes.indexOf(`katex-sizing`);o<0?Array.prototype.push.apply(r[a].classes,t.sizingClasses(n)):r[a].classes[o+1]===`reset-size`+t.size&&(r[a].classes[o+1]=`reset-size`+n.size),r[a].height*=i,r[a].depth*=i}return Ki(r)}var Hs=[`\\tiny`,`\\sixptsize`,`\\scriptsize`,`\\footnotesize`,`\\small`,`\\normalsize`,`\\large`,`\\Large`,`\\LARGE`,`\\huge`,`\\Huge`];J({type:`sizing`,names:Hs,numArgs:0,allowedInText:!0,handler:(e,t)=>{var n=e.breakOnTokenText,r=e.funcName,i=e.parser,a=i.parseExpression(!1,n);return{type:`sizing`,mode:i.mode,size:Hs.indexOf(r)+1,body:a}},htmlBuilder:(e,t)=>{var n=t.havingSize(e.size);return Vs(e.body,n,t)},mathmlBuilder:(e,t)=>{var n=t.havingSize(e.size),r=new Y(`mstyle`,Fa(e.body,n));return r.setAttribute(`mathsize`,I(n.sizeMultiplier)),r}}),J({type:`smash`,names:[`\\smash`],numArgs:1,numOptionalArgs:1,allowedInText:!0,handler:(e,t,n)=>{var r=e.parser,i=!1,a=!1,o=n[0]&&X(n[0],`ordgroup`);if(o)for(var s,c=0;c<o.body.length;++c){var l=o.body[c];if(s=io(l).text,s===`t`)i=!0;else if(s===`b`)a=!0;else{i=!1,a=!1;break}}else i=!0,a=!0;var u=t[0];return{type:`smash`,mode:r.mode,body:u,smashHeight:i,smashDepth:a}},htmlBuilder:(e,t)=>{var n=q([],[Sa(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return n;if(e.smashHeight&&(n.height=0),e.smashDepth&&(n.depth=0),e.smashHeight&&e.smashDepth)return q([`mord`,`katex-smash`],[n],t);if(n.children)for(var r=0;r<n.children.length;r++)e.smashHeight&&(n.children[r].height=0),e.smashDepth&&(n.children[r].depth=0);return q([`mord`],[Yi({positionType:`firstBaseline`,children:[{type:`elem`,elem:n}]})],t)},mathmlBuilder:(e,t)=>{var n=new Y(`mpadded`,[La(e.body,t)]);return e.smashHeight&&n.setAttribute(`height`,`0px`),e.smashDepth&&n.setAttribute(`depth`,`0px`),n}}),J({type:`sqrt`,names:[`\\sqrt`],numArgs:1,numOptionalArgs:1,handler(e,t,n){var r=e.parser,i=n[0],a=t[0];return{type:`sqrt`,mode:r.mode,body:a,index:i}},htmlBuilder(e,t){var n=Sa(e.body,t.havingCrampedStyle());n.height===0&&(n.height=t.fontMetrics().xHeight),n=qi(n,t);var r=t.fontMetrics().defaultRuleThickness,i=r;t.style.id<F.TEXT.id&&(i=t.fontMetrics().xHeight);var a=r+i/4,o=Ho(n.height+n.depth+a+r,t),s=o.span,c=o.ruleWidth,l=o.advanceWidth,u=s.height-c;u>n.height+n.depth+a&&(a=(a+u-n.height-n.depth)/2);var d=s.height-n.height-a-c;n.style.paddingLeft=I(l);var f=Yi({positionType:`firstBaseline`,children:[{type:`elem`,elem:n,wrapperClasses:[`svg-align`]},{type:`kern`,size:-(n.height+d)},{type:`elem`,elem:s},{type:`kern`,size:c}]});if(e.index){var p=t.havingStyle(F.SCRIPTSCRIPT),m=Sa(e.index,p,t);return q([`mord`,`sqrt`],[q([`katex-root`],[Yi({positionType:`shift`,positionData:-(.6*(f.height-f.depth)),children:[{type:`elem`,elem:m}]})]),f],t)}else return q([`mord`,`sqrt`],[f],t)},mathmlBuilder(e,t){var n=e.body,r=e.index;return r?new Y(`mroot`,[La(n,t),La(r,t)]):new Y(`msqrt`,[La(n,t)])}});var Us={display:F.DISPLAY,text:F.TEXT,script:F.SCRIPT,scriptscript:F.SCRIPTSCRIPT};function Ws(e){return e in Us}J({type:`styling`,names:[`\\displaystyle`,`\\textstyle`,`\\scriptstyle`,`\\scriptscriptstyle`],numArgs:0,allowedInText:!0,primitive:!0,handler(e,t){var n=e.breakOnTokenText,r=e.funcName,i=e.parser,a=i.parseExpression(!0,n),o=r.slice(1,r.length-5);if(!Ws(o))throw Error(`Unknown style: `+o);return{type:`styling`,mode:i.mode,style:o,body:a}},htmlBuilder(e,t){var n=Us[e.style],r=t.havingStyle(n);return e.resetFont&&(r=r.withFont(``)),Vs(e.body,r,t)},mathmlBuilder(e,t){var n=Us[e.style],r=t.havingStyle(n);e.resetFont&&(r=r.withFont(``));var i=new Y(`mstyle`,Fa(e.body,r)),a={display:[`0`,`true`],text:[`0`,`false`],script:[`1`,`false`],scriptscript:[`2`,`false`]}[e.style];return i.setAttribute(`scriptlevel`,a[0]),i.setAttribute(`displaystyle`,a[1]),i}});var Gs=function(e,t){var n=e.base;return n?n.type===`op`?n.limits&&(t.style.size===F.DISPLAY.size||n.alwaysHandleSupSub)?Fs:null:n.type===`operatorname`?n.alwaysHandleSupSub&&(t.style.size===F.DISPLAY.size||n.limits)?zs:null:n.type===`accent`?Nn(n.base)?co:null:n.type===`horizBrace`&&!e.sub===n.isOver?As:null:null};la({type:`supsub`,htmlBuilder(e,t){var n=Gs(e,t);if(n)return n(e,t);var r=e.base,i=e.sup,a=e.sub,o=Sa(r,t),s,c,l=t.fontMetrics(),u=0,d=0,f=r&&Nn(r);if(i){var p=t.havingStyle(t.style.sup());s=Sa(i,p,t),f||(u=o.height-p.fontMetrics().supDrop*p.sizeMultiplier/t.sizeMultiplier)}if(a){var m=t.havingStyle(t.style.sub());c=Sa(a,m,t),f||(d=o.depth+m.fontMetrics().subDrop*m.sizeMultiplier/t.sizeMultiplier)}var h=t.style===F.DISPLAY?l.sup1:t.style.cramped?l.sup3:l.sup2,g=t.sizeMultiplier,_=I(.5/l.ptPerEm/g),v=null;if(c){var y=e.base&&e.base.type===`op`&&e.base.name&&(e.base.name===`\\oiint`||e.base.name===`\\oiiint`);(o instanceof Fr||y)&&(v=I(-(o.italic??0)))}var b;if(s&&c){u=Math.max(u,h,s.depth+.25*l.xHeight),d=Math.max(d,l.sub2);var x=4*l.defaultRuleThickness;if(u-s.depth-(c.height-d)<x){d=x-(u-s.depth)+c.height;var S=.8*l.xHeight-(u-s.depth);S>0&&(u+=S,d-=S)}b=Yi({positionType:`individualShift`,children:[{type:`elem`,elem:c,shift:d,marginRight:_,marginLeft:v},{type:`elem`,elem:s,shift:-u,marginRight:_}]})}else if(c)d=Math.max(d,l.sub1,c.height-.8*l.xHeight),b=Yi({positionType:`shift`,positionData:d,children:[{type:`elem`,elem:c,marginLeft:v,marginRight:_}]});else if(s)u=Math.max(u,h,s.depth+.25*l.xHeight),b=Yi({positionType:`shift`,positionData:-u,children:[{type:`elem`,elem:s,marginRight:_}]});else throw Error(`supsub must have either sup or sub.`);return q([ba(o,`right`)||`mord`],[o,q([`msupsub`],[b])],t)},mathmlBuilder(e,t){var n=!1,r,i;e.base&&e.base.type===`horizBrace`&&(i=!!e.sup,i===e.base.isOver&&(n=!0,r=e.base.isOver)),e.base&&(e.base.type===`op`||e.base.type===`operatorname`)&&(e.base.parentIsSupSub=!0);var a=[La(e.base,t)];e.sub&&a.push(La(e.sub,t)),e.sup&&a.push(La(e.sup,t));var o;if(n)o=r?`mover`:`munder`;else if(!e.sub){var s=e.base;o=s&&s.type===`op`&&s.limits&&(t.style===F.DISPLAY||s.alwaysHandleSupSub)||s&&s.type===`operatorname`&&s.alwaysHandleSupSub&&(s.limits||t.style===F.DISPLAY)?`mover`:`msup`}else if(e.sup){var c=e.base;o=c&&c.type===`op`&&c.limits&&t.style===F.DISPLAY||c&&c.type===`operatorname`&&c.alwaysHandleSupSub&&(t.style===F.DISPLAY||c.limits)?`munderover`:`msubsup`}else{var l=e.base;o=l&&l.type===`op`&&l.limits&&(t.style===F.DISPLAY||l.alwaysHandleSupSub)||l&&l.type===`operatorname`&&l.alwaysHandleSupSub&&(l.limits||t.style===F.DISPLAY)?`munder`:`msub`}return new Y(o,a)}}),la({type:`atom`,htmlBuilder(e,t){return Li(e.text,e.mode,t,[`m`+e.family])},mathmlBuilder(e,t){var n=new Y(`mo`,[Aa(e.text,e.mode)]);if(e.family===`bin`){var r=Na(e,t);r===`bold-italic`&&n.setAttribute(`mathvariant`,r)}else e.family===`punct`?n.setAttribute(`separator`,`true`):(e.family===`open`||e.family===`close`)&&n.setAttribute(`stretchy`,`false`);return n}});var Ks={mi:`italic`,mn:`normal`,mtext:`normal`};la({type:`mathord`,htmlBuilder(e,t){return zi(e,t)},mathmlBuilder(e,t){var n=new Y(`mi`,[Aa(e.text,e.mode,t)]),r=Na(e,t)||`italic`;return r!==Ks[n.type]&&n.setAttribute(`mathvariant`,r),n}}),la({type:`textord`,htmlBuilder(e,t){return zi(e,t)},mathmlBuilder(e,t){var n=Aa(e.text,e.mode,t),r=Na(e,t)||`normal`,i=e.mode===`text`?new Y(`mtext`,[n]):/[0-9]/.test(e.text)?new Y(`mn`,[n]):e.text===`\\prime`?new Y(`mo`,[n]):new Y(`mi`,[n]);return r!==Ks[i.type]&&i.setAttribute(`mathvariant`,r),i}});var qs=new Map([[`\\nobreak`,`nobreak`],[`\\allowbreak`,`allowbreak`]]),Js=new Map([[` `,{}],[`\\ `,{}],[`~`,{className:`nobreak`}],[`\\space`,{}],[`\\nobreakspace`,{className:`nobreak`}]]);la({type:`spacing`,htmlBuilder(e,t){var n=Js.get(e.text),r=qs.get(e.text);if(n){var i=n.className||``;if(e.mode===`text`){var a=zi(e,t);return a.classes.push(i),a}else return q([`mspace`,i],[Li(e.text,e.mode,t)],t)}else if(r)return q([`mspace`,r],[],t);else throw new P(`Unknown type of space "`+e.text+`"`)},mathmlBuilder(e,t){var n;if(Js.has(e.text))n=new Y(`mtext`,[new Ea(`\xA0`)]);else if(qs.has(e.text))return new Y(`mspace`);else throw new P(`Unknown type of space "`+e.text+`"`);return n}});var Ys=()=>{var e=new Y(`mtd`,[]);return e.setAttribute(`width`,`50%`),e};la({type:`tag`,mathmlBuilder(e,t){var n=new Y(`mtable`,[new Y(`mtr`,[Ys(),new Y(`mtd`,[Ia(e.body,t)]),Ys(),new Y(`mtd`,[Ia(e.tag,t)])])]);return n.setAttribute(`width`,`100%`),n}});var Xs={"\\text":void 0,"\\textrm":`textrm`,"\\textsf":`textsf`,"\\texttt":`texttt`,"\\textnormal":`textrm`},Zs={"\\textbf":`textbf`,"\\textmd":`textmd`},Qs={"\\textit":`textit`,"\\textup":`textup`},$s=(e,t)=>{var n=e.font;return n?Xs[n]?t.withTextFontFamily(Xs[n]):Zs[n]?t.withTextFontWeight(Zs[n]):n===`\\emph`?t.fontShape===`textit`?t.withTextFontShape(`textup`):t.withTextFontShape(`textit`):t.withTextFontShape(Qs[n]):t};J({type:`text`,names:[`\\text`,`\\textrm`,`\\textsf`,`\\texttt`,`\\textnormal`,`\\textbf`,`\\textmd`,`\\textit`,`\\textup`,`\\emph`],numArgs:1,argTypes:[`text`],allowedInArgument:!0,allowedInText:!0,handler(e,t){var n=e.parser,r=e.funcName,i=t[0];return{type:`text`,mode:n.mode,body:da(i),font:r}},htmlBuilder(e,t){var n=$s(e,t);return q([`mord`,`text`],ga(e.body,n,!0),n)},mathmlBuilder(e,t){var n=$s(e,t);return Ia(e.body,n)}}),J({type:`underline`,names:[`\\underline`],numArgs:1,allowedInText:!0,handler(e,t){return{type:`underline`,mode:e.parser.mode,body:t[0]}},htmlBuilder(e,t){var n=Sa(e.body,t),r=Wi(`underline-line`,t),i=t.fontMetrics().defaultRuleThickness;return q([`mord`,`katex-underline`],[Yi({positionType:`top`,positionData:n.height,children:[{type:`kern`,size:i},{type:`elem`,elem:r},{type:`kern`,size:3*i},{type:`elem`,elem:n}]})],t)},mathmlBuilder(e,t){var n=new Y(`mo`,[new Ea(`‾`)]);n.setAttribute(`stretchy`,`true`);var r=new Y(`munder`,[La(e.body,t),n]);return r.setAttribute(`accentunder`,`true`),r}}),J({type:`vcenter`,names:[`\\vcenter`],numArgs:1,argTypes:[`original`],allowedInText:!1,handler(e,t){return{type:`vcenter`,mode:e.parser.mode,body:t[0]}},htmlBuilder(e,t){var n=Sa(e.body,t),r=t.fontMetrics().axisHeight;return Yi({positionType:`shift`,positionData:.5*(n.height-r-(n.depth+r)),children:[{type:`elem`,elem:n}]})},mathmlBuilder(e,t){return new Y(`mrow`,[new Y(`mpadded`,[La(e.body,t)],[`vcenter`])])}}),J({type:`verb`,names:[`\\verb`],numArgs:0,allowedInText:!0,handler(e,t,n){throw new P(`\\verb ended by end of line instead of matching delimiter`)},htmlBuilder(e,t){for(var n=ec(e),r=[],i=t.havingStyle(t.style.text()),a=0;a<n.length;a++){var o=n[a];o===`~`&&(o=`\\textasciitilde`),r.push(Ii(o,`Typewriter-Regular`,e.mode,i,[`mord`,`texttt`]))}return q([`mord`,`text`].concat(i.sizingClasses(t)),Vi(r),i)},mathmlBuilder(e,t){var n=new Y(`mtext`,[new Ea(ec(e))]);return n.setAttribute(`mathvariant`,`monospace`),n}});var ec=e=>e.body.replace(/ /g,e.star?`␣`:`\xA0`),tc=oa,nc=`[ \r
260
260
  ]`,rc=`\\\\[a-zA-Z@]+`,ic=`\\\\[^\ud800-\udfff]`,ac=`(`+rc+`)`+nc+`*`,oc=`\\\\(
261
261
  |[ \r ]+
262
262
  ?)[ \r ]*`,sc=`[̀-ͯ]`,cc=RegExp(sc+`+$`),lc=`(`+nc+`+)|`+(oc+`|`)+`([!-\\[\\]-‧‪-퟿豈-￿]`+(sc+`*`)+`|[\ud800-\udbff][\udc00-\udfff]`+(sc+`*`)+`|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5`+(`|`+ac)+(`|`+ic+`)`),uc=class{constructor(e,t){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=t,this.tokenRegex=new RegExp(lc,`g`),this.catcodes={"%":14,"~":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){var e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new us(`EOF`,new ls(this,t,t));var n=this.tokenRegex.exec(e);if(n===null||n.index!==t)throw new P(`Unexpected character: '`+e[t]+`'`,new us(e[t],new ls(this,t,t+1)));var r=n[6]||n[3]||(n[2]?`\\ `:` `);if(this.catcodes[r]===14){var i=e.indexOf(`
@@ -265,18 +265,19 @@ l0,-`+(t+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,
265
265
  `){i();continue}r+=n;let a=n===`.`&&(e+1===t.length||/\s/u.test(t[e+1])&&/[\p{Lu}\p{Lo}]/u.test(t[e+2]??``));if(!(!ou.has(n)&&!a)){for(;e+1<t.length&&(ou.has(t[e+1])||su.has(t[e+1]));)r+=t[++e];i()}}};for(let e of t.matchAll(Ol))o(t.slice(a,e.index)),r+=e[0],a=e.index+e[0].length;return o(t.slice(a)),i(),n}function lu(e,t){return Math.max(1,Math.ceil(String(e??``).length/t))}function uu(e){switch(e.t){case`title`:return 1.6;case`h`:return 1.4;case`p`:return lu(e.text,26)*1.05;case`math`:{let t=[...iu(e.tex)].length;return t<=40?2:2+(Math.ceil(t/28)-1)*1.2}case`list`:return e.items.reduce((e,t)=>e+lu(t,24),0)*1.05;case`note`:return lu(e.text,24)+1;case`table`:return(e.rows.length+1)*1.1+.6;case`code`:return Math.min(14,e.code.split(`
266
266
  `).length*.8+1);case`svg`:case`chart`:return 8.5;case`plot`:return(e.equal?10:9)+e.params.length*1.1;case`anim`:return Math.round(e.height/34);case`missing`:return e.of===`plot`?9:8.5;default:return 0}}function du(e){let t=[],n=new Map,r=null,i=0,a=0,o=!1,s=e=>{r={title:e??``,columns:[[],[]]},t.push(r),i=0,a=0,o=!1};return s(``),e.forEach((e,c)=>{for(let l of e.ops??[]){if(l.t===`page`){r.columns[0].length||r.columns[1].length?s(l.title):r.title=l.title||r.title,n.set(l.id,{page:t.length-1,column:i});continue}if(l.t===`col`){i===0?(i=1,a=0):o?o=!1:s(``),n.set(l.id,{page:t.length-1,column:i});continue}if(l.t===`mark`){n.set(l.id,n.get(l.ref)??{page:t.length-1,column:i});continue}if(l.t===`title`){r.columns[0].length||r.columns[1].length?s(l.text):r.title=l.text,n.set(l.id,{page:t.length-1,column:0,title:!0});continue}let e=uu(l);a>0&&a+e>26&&(i===0?(i=1,a=0,o=!0):s(``)),r.columns[i].push({op:l,step:c}),n.set(l.id,{page:t.length-1,column:i}),a+=e}}),{pages:t,where:n}}function fu(e,t){return e.map((e,n)=>{let r=new Map(e.ops.map(e=>[e.id,`${t}${e.id}`]));return{...e,id:`${t}${e.id??n}`,aside:!0,ops:e.ops.map(e=>({...e,id:r.get(e.id),...e.t===`mark`?{ref:r.get(e.ref)??e.ref}:{}})),...e.check?{check:{...e.check,id:`${t}${e.check.id}`}}:{}}})}function pu(e,t=12e3){let n=[];for(let t of e)for(let e of t.ops)if(e.text&&n.push(e.text),e.caption&&n.push(e.caption),e.items&&n.push(...e.items),e.head&&n.push(...e.head),e.rows)for(let t of e.rows)n.push(...t);return[...new Set([...n.join(``)])].join(``).slice(0,t)}function mu(e,t,n){return!n||e<n.index?1:e>n.index?0:t<n.op?1:t>n.op?0:n.progress}function hu({text:e,reveal:t=1}){let n=(0,r.useMemo)(()=>jl(e),[e]),a=(0,r.useMemo)(()=>Nl(n),[n]);return(t>=1?n:Pl(n,a*t)).map((e,t)=>{if(e.kind===`math`){let n=(0,i.jsx)(Ic,{tex:e.tex},t);return e.style===`mark`?(0,i.jsx)(`mark`,{children:n},t):e.style===`bold`?(0,i.jsx)(`strong`,{children:n},t):n}return e.kind===`bold`?(0,i.jsx)(`strong`,{children:e.text},t):e.kind===`mark`?(0,i.jsx)(`mark`,{children:e.text},t):(0,i.jsx)(`span`,{children:e.text},t)})}let gu=Object.freeze({missing:`This figure could not be drawn`,redrawing:`Redrawing this figure…`,animation:`This animation could not play`});function _u({op:e,labels:t=gu,reveal:n=1,still:r=!1}){let a=e.redraw===!0&&!r;return(0,i.jsxs)(`div`,{className:`aha-op-missing`,"data-redraw":a?`true`:void 0,style:{opacity:Math.min(1,n*3)},children:[(0,i.jsxs)(`div`,{className:`aha-op-missingHead`,children:[a?(0,i.jsx)(`span`,{className:`aha-spinner`,"aria-hidden":`true`}):(0,i.jsx)(`span`,{"aria-hidden":`true`,children:`⚠`}),(0,i.jsx)(`span`,{children:a?t.redrawing:e.of===`anim`?t.animation:t.missing})]}),e.caption?(0,i.jsx)(`div`,{className:`aha-figCaption`,children:e.caption}):null,e.formula?(0,i.jsx)(`code`,{className:`aha-op-missingFormula`,children:e.formula}):null]})}function vu({markup:e,reveal:t,caption:n,fit:a=!1,fallback:o=null}){let s=(0,r.useRef)(null),c=(0,r.useMemo)(()=>$c(e),[e]);return(0,r.useLayoutEffect)(()=>{let e=a?s.current?.querySelector(`svg`):null;if(!e)return;let t=()=>dl(e);t();let n=typeof document<`u`?document.fonts:null;return n?.addEventListener?.(`loadingdone`,t),()=>n?.removeEventListener?.(`loadingdone`,t)},[c,a]),(0,r.useLayoutEffect)(()=>{let e=s.current?.querySelector(`svg`);if(!e)return;let n=[...e.querySelectorAll(`path,line,polyline,polygon,rect,circle,ellipse`)],r=[...e.querySelectorAll(`text`)],i=r.length?.8:1;n.forEach((e,r)=>{let a=0;try{a=e.getTotalLength?.()??0}catch{a=0}let o=r/Math.max(1,n.length)*i,s=(r+1)/Math.max(1,n.length)*i,c=Math.min(1,Math.max(0,(t-o)/Math.max(1e-4,s-o)));a>0&&c<1?(e.style.strokeDasharray=`${a}`,e.style.strokeDashoffset=`${a*(1-c)}`):(e.style.strokeDasharray=``,e.style.strokeDashoffset=``),e.style.fillOpacity=c>=1?``:String(c*.6),a||(e.style.opacity=String(c))});let a=r.length?Math.min(1,Math.max(0,(t-i)/(1-i))):1;r.forEach(e=>{e.style.opacity=String(t>=1?1:a)})},[t,c]),c?(0,i.jsxs)(`div`,{className:`aha-op-figure`,children:[(0,i.jsx)(`div`,{ref:s,dangerouslySetInnerHTML:{__html:c}}),n?(0,i.jsx)(`div`,{className:`aha-figCaption`,style:{opacity:t>=1?1:.4},children:n}):null]}):o}function yu({op:e,reveal:t,still:n,onInteract:a,labels:o}){let s=(0,r.useMemo)(()=>zc(e),[e]),[c,l]=(0,r.useState)(()=>Me(e));(0,r.useEffect)(()=>{l(Me(e))},[JSON.stringify([e.fns,e.params])]);let u=(0,r.useMemo)(()=>s?Kc(e,c,{prepared:s}):``,[e,s,c]);if(!s)return(0,i.jsx)(_u,{op:{of:`plot`,caption:e.caption||e.title,formula:Be(e).join(`; `)},labels:o,reveal:t,still:!0});let d=(e,t)=>{a?.(),l(n=>n.map((n,r)=>r===e?t:n))},f=t>=1;return(0,i.jsxs)(`div`,{className:`aha-plot`,children:[(0,i.jsx)(vu,{markup:u,reveal:t,caption:``}),!n&&e.params.length?(0,i.jsx)(`div`,{className:`aha-plotSliders`,"data-written":f,"aria-hidden":!f,children:e.params.map((e,t)=>(0,i.jsxs)(`label`,{className:`aha-plotSlider`,children:[(0,i.jsx)(`span`,{className:`aha-plotName`,children:e.label||e.name}),(0,i.jsx)(`input`,{type:`range`,min:e.min,max:e.max,step:e.step,value:c[t]??e.value,disabled:!f,onPointerDown:()=>a?.(),onChange:e=>d(t,Number(e.currentTarget.value))}),(0,i.jsx)(`span`,{className:`aha-plotValue`,children:ze(c[t]??e.value)})]},e.name))}):null,e.caption?(0,i.jsx)(`div`,{className:`aha-figCaption`,style:{opacity:f?1:.4},children:e.caption}):null]})}function bu({op:e,reveal:t,theme:n,labels:a}){let o=(0,r.useMemo)(()=>ol(e.html,n),[e.html,n]),s=(0,r.useRef)(null),[c,l]=(0,r.useState)(e.height),[u,d]=(0,r.useState)(0),[f,p]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{p(!1)},[e.html]),(0,r.useLayoutEffect)(()=>{let t=s.current;if(!t||typeof ResizeObserver!=`function`)return;let n=()=>l(Math.round(Math.max(120,Math.min(e.height,e.height*t.clientWidth/560))));n();let r=new ResizeObserver(n);return r.observe(t),()=>r.disconnect()},[e.height,t>0,f]),(0,r.useEffect)(()=>{let e=e=>{if(!s.current||e.source!==s.current.contentWindow)return;if(al(e.data)){p(!0);return}let t=il(e.data);t&&d(t)};return window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e)},[]),t<=0?null:f?(0,i.jsx)(Su,{op:e,labels:a,failed:!0}):(0,i.jsxs)(`div`,{className:`aha-op-figure`,style:{opacity:Math.min(1,t*3)},children:[(0,i.jsx)(`iframe`,{ref:s,className:`aha-op-anim`,title:e.caption||`animation`,sandbox:`allow-scripts`,referrerPolicy:`no-referrer`,srcDoc:o,style:{height:Math.max(c,u),colorScheme:n===`dark`?`dark`:`light`}}),e.caption?(0,i.jsx)(`div`,{className:`aha-figCaption`,children:e.caption}):null]})}function xu({tex:e,reveal:t}){let n=(0,r.useRef)(null),[a,o]=(0,r.useState)([]);(0,r.useLayoutEffect)(()=>{let e=n.current;if(!e)return;let t=-1,r=()=>{t=e.clientWidth,Cl(e),o(Tl(e))};r();let i=0,a=typeof ResizeObserver==`function`?new ResizeObserver(()=>{e.clientWidth!==t&&(cancelAnimationFrame(i),i=requestAnimationFrame(r))}):null;a?.observe(e);let s=typeof document<`u`?document.fonts:null;return s?.addEventListener?.(`loadingdone`,r),()=>{a?.disconnect(),cancelAnimationFrame(i),s?.removeEventListener?.(`loadingdone`,r)}},[e]);let{clip:s,pen:c}=Dl(a,t);return(0,i.jsx)(`div`,{ref:n,className:`aha-op-math`,style:s?{clipPath:s}:void 0,"data-pen":c?`${Math.round(c.x)} ${Math.round(c.y)}`:void 0,children:(0,i.jsx)(Ic,{tex:e,display:!0})})}function Su({op:e,label:t=``,labels:n,failed:r=!1}){let a=(0,i.jsx)(_u,{op:{of:`anim`,caption:e.caption},labels:n,still:!0});return e.poster?(0,i.jsx)(vu,{markup:e.poster,reveal:1,caption:e.caption,fit:!0,fallback:r?a:(0,i.jsxs)(`div`,{className:`aha-op-note`,"data-tone":`tip`,children:[`▶ `,e.caption||t]})}):r?a:(0,i.jsxs)(`div`,{className:`aha-op-note`,"data-tone":`tip`,children:[`▶ `,e.caption||t]})}function Cu({op:e,reveal:t,marks:n,aside:r,now:a,opRef:o,theme:s,still:c=!1,animationLabel:l=``,onInteract:u,fixedNote:d,figureLabels:f=gu}){let p=n.map(e=>(0,i.jsx)(`span`,{className:e.style===`circle`?`aha-markRing`:e.style===`box`?`aha-markBox`:`aha-markLine`,style:{opacity:e.reveal,clipPath:`inset(0 ${100-e.reveal*100}% 0 0)`}},e.id)),m;switch(e.t){case`h`:m=(0,i.jsx)(`div`,{className:`aha-op-h`,children:(0,i.jsx)(`span`,{children:(0,i.jsx)(hu,{text:e.text,reveal:t})})});break;case`p`:m=(0,i.jsx)(`div`,{className:`aha-op-p`,children:(0,i.jsx)(hu,{text:e.text,reveal:t})});break;case`math`:m=(0,i.jsx)(xu,{tex:e.tex,reveal:t});break;case`list`:{let n=e.items.reduce((e,t)=>e+Nl(jl(t)),0)*t;m=(0,i.jsx)(e.ordered?`ol`:`ul`,{className:`aha-op-list`,children:e.items.map((e,r)=>{let a=Nl(jl(e)),o=t>=1?1:Math.max(0,Math.min(1,n/Math.max(1,a)));return n-=a,o>0?(0,i.jsx)(`li`,{children:(0,i.jsx)(hu,{text:e,reveal:o})},r):null})});break}case`note`:m=(0,i.jsx)(`div`,{className:`aha-op-note`,"data-tone":e.tone,children:(0,i.jsx)(hu,{text:e.text,reveal:t})});break;case`svg`:m=(0,i.jsx)(vu,{markup:e.svg,reveal:t,caption:e.caption,fit:!0,fallback:(0,i.jsx)(_u,{op:{of:`svg`,caption:e.caption},labels:f,reveal:t,still:!0})});break;case`chart`:m=(0,i.jsx)(vu,{markup:Tn(e),reveal:t,caption:``});break;case`plot`:m=(0,i.jsx)(yu,{op:e,reveal:t,still:c,onInteract:u,labels:f});break;case`missing`:m=(0,i.jsx)(_u,{op:e,labels:f,reveal:t,still:c});break;case`table`:{let n=t>=1?e.rows.length:Math.floor(e.rows.length*t);m=(0,i.jsxs)(`table`,{className:`aha-op-table`,children:[e.head.length?(0,i.jsx)(`thead`,{children:(0,i.jsx)(`tr`,{children:e.head.map((e,t)=>(0,i.jsx)(`th`,{children:(0,i.jsx)(hu,{text:e})},t))})}):null,(0,i.jsx)(`tbody`,{children:e.rows.slice(0,n).map((e,t)=>(0,i.jsx)(`tr`,{children:e.map((e,t)=>(0,i.jsx)(`td`,{children:(0,i.jsx)(hu,{text:e})},t))},t))})]});break}case`code`:{let n=e.code.split(`
267
267
  `);m=(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`pre`,{className:`aha-op-code`,children:(t>=1?n:n.slice(0,Math.ceil(n.length*t))).join(`
268
- `)}),e.caption?(0,i.jsx)(`div`,{className:`aha-figCaption`,children:e.caption}):null]});break}case`anim`:m=c?(0,i.jsx)(Su,{op:e,label:l,labels:f}):(0,i.jsx)(bu,{op:e,reveal:t,theme:s,labels:f});break;default:m=null}let h=e.fixed&&d&&t>=1?d(e):null;return(0,i.jsxs)(`div`,{ref:o,className:`aha-op`,"data-t":e.t,"data-aside":r?`true`:void 0,"data-now":a?`true`:void 0,"data-op":e.id,children:[m,p,h?(0,i.jsxs)(`span`,{className:`aha-fixed`,title:h.title,children:[`✎ `,h.label]}):null]})}function wu({target:e,active:t,stage:n,scale:a=1,scrolls:o=!1}){let[s,c]=(0,r.useState)(null);return(0,r.useLayoutEffect)(()=>{let r=e?.current,i=n?.current;if(!t||!r||!i){c(e=>e===null?e:null);return}let s=r.getBoundingClientRect(),l=i.getBoundingClientRect(),u=r.querySelector(`.aha-op-math`),d=u?[]:r.querySelectorAll(`span,strong,mark,li,td,pre`),f=d[d.length-1]?.getBoundingClientRect(),p=f&&f.width?f.right:s.left+s.width*t.progress,m=f&&f.height?f.bottom-4*a:s.top+s.height/2;if(u?.dataset.pen){let[e,t]=u.dataset.pen.split(` `).map(Number),n=u.getBoundingClientRect();p=n.left+e*a,m=n.top+(t-4)*a}let h={left:Math.round((p-l.left)/a+(o?i.scrollLeft:0)),top:Math.round((m-l.top)/a+(o?i.scrollTop:0)),glide:!u};c(e=>e&&e.left===h.left&&e.top===h.top&&e.glide===h.glide?e:h)}),s?(0,i.jsxs)(`svg`,{className:`aha-pencil`,style:{left:s.left,top:s.top},"data-glide":s.glide,viewBox:`0 0 24 24`,"aria-hidden":`true`,children:[(0,i.jsx)(`path`,{d:`M3 21l3.5-1 11-11-2.5-2.5-11 11L3 21z`,fill:`var(--pencil)`,stroke:`var(--ink)`,strokeWidth:`1.2`,strokeLinejoin:`round`}),(0,i.jsx)(`path`,{d:`M14.5 6.5l2.5 2.5 2-2a1.77 1.77 0 0 0-2.5-2.5l-2 2z`,fill:`var(--accent)`,stroke:`var(--ink)`,strokeWidth:`1.2`})]}):null}let Tu=new Set([`p`,`h`,`list`,`note`,`math`,`title`]);function Eu({page:e,title:t,board:n,activeRef:r}){let{reveal:a,marks:o,nowIds:s,opMeta:c,activeOp:l,theme:u,onInteract:d,fixedNote:f,figureLabels:p}=n,m=t?a(t.id):1;return(0,i.jsxs)(i.Fragment,{children:[e.title&&m>0?(0,i.jsx)(`h2`,{className:`aha-boardTitle`,children:(0,i.jsx)(`span`,{children:(0,i.jsx)(hu,{text:e.title,reveal:m})})}):null,(0,i.jsx)(`div`,{className:`aha-cols`,children:e.columns.map((e,t)=>(0,i.jsx)(`div`,{className:`aha-colBody`,children:e.map(({op:e})=>{let t=a(e.id);if(t<=0)return null;let n=l?.id===e.id&&t<1;return(0,i.jsx)(Cu,{op:e,reveal:t,marks:o.get(e.id)??[],aside:c.get(e.id)?.aside,now:s.has(e.id),opRef:n?r:void 0,theme:u,onInteract:d,fixedNote:f,figureLabels:p},e.id)})},t))})]})}function Du(e,t,n){let{reveal:r,marks:i,nowIds:a}=n,o=[t?`t${Math.round(r(t.id)*1e3)}`:``];for(let t of e.columns)for(let{op:e}of t){let t=Math.round(r(e.id)*1e3);t<=0||o.push(`${e.id}:${t}${a.has(e.id)?`*`:``}${(i.get(e.id)??[]).map(e=>`/${e.id}:${Math.round(e.reveal*1e3)}`).join(``)}`)}return o.join(` `)}let Ou=(0,r.memo)(function({index:e,page:t,title:n,board:r,activeRef:a,label:o}){return(0,i.jsx)(`section`,{className:`aha-frame`,"data-frame":e,"aria-label":o,children:(0,i.jsx)(Eu,{page:t,title:n,board:r,activeRef:a})})},(e,t)=>e.signature===t.signature&&e.page===t.page&&e.activeRef===t.activeRef&&e.board.theme===t.board.theme&&e.label===t.label);function ku({board:e,layout:t,position:n,activePage:a,pencil:o,cover:s}){let{activeOp:c}=e,[l,u]=(0,r.useState)(null);(0,r.useEffect)(()=>{u(null)},[a]);let d=Math.min(t.pages.length-1,l??a),f=t.pages[d],p=(0,r.useRef)(null),m=(0,r.useRef)(null);(0,r.useEffect)(()=>{let e=p.current,t=c?e?.querySelector(`[data-op="${c.id}"]`):null;if(!e||!t)return;let n=t.getBoundingClientRect(),r=e.getBoundingClientRect();n.bottom>r.bottom-24?e.scrollTo({top:e.scrollTop+n.bottom-r.bottom+56,behavior:`smooth`}):n.top<r.top+8&&e.scrollTo({top:Math.max(0,e.scrollTop-(r.top-n.top)-24),behavior:`smooth`})},[c?`${c.id}:${Math.round((n?.progress??0)*4)}`:``,d]),(0,r.useEffect)(()=>{let e=p.current,t=e?.querySelectorAll(`[data-op]`),n=t?.[t.length-1];if(!s||!n)return;let r=n.getBoundingClientRect(),i=e.getBoundingClientRect().bottom-s-16;r.bottom>i&&e.scrollTo({top:e.scrollTop+r.bottom-i,behavior:`smooth`})},[s,d]);let h=t.pages.map((e,t)=>t).filter(e=>e<=Math.max(a,l??0)||!n);return(0,i.jsxs)(i.Fragment,{children:[h.length>1?(0,i.jsx)(`div`,{className:`aha-pager`,children:h.map(e=>(0,i.jsx)(`button`,{type:`button`,"data-active":e===d,onClick:()=>u(e),children:e+1},e))}):null,(0,i.jsxs)(`div`,{className:`aha-boardScroll`,ref:p,style:s?{paddingBottom:s+40}:void 0,children:[f?(0,i.jsx)(Eu,{page:f,title:e.titles.get(d),board:e,activeRef:m}):null,(0,i.jsx)(wu,{target:m,stage:p,scrolls:!0,active:o})]})]})}function Au({board:e,layout:t,position:n,activePage:a,pencil:o,cover:s}){let{t:c}=v(),{activeOp:l}=e,u=(0,r.useRef)(null),d=(0,r.useRef)(null),f=(0,r.useRef)(null),[p,m]=(0,r.useState)({width:0,height:0}),[h,g]=(0,r.useState)({x:16,y:16,k:1,animate:!1}),[_,y]=(0,r.useState)(!0),[b,x]=(0,r.useState)(!1),S=(0,r.useRef)({camera:h,size:p,pointers:new Map,drag:null}),C=(0,r.useRef)(-1);S.current.camera=h,S.current.size=p,(0,r.useLayoutEffect)(()=>{let e=u.current;if(!e)return;let t=()=>m(t=>t.width===e.clientWidth&&t.height===e.clientHeight?t:{width:e.clientWidth,height:e.clientHeight});t();let n=typeof ResizeObserver==`function`?new ResizeObserver(t):null;return n?.observe(e),()=>n?.disconnect()},[]);let w=Math.max(240,p.width-32),T=()=>({width:d.current?.offsetWidth??w,height:d.current?.offsetHeight??0}),E=(e,{animate:t=!1,manual:n=!1}={})=>{n&&y(!1),g(n=>({...vl(typeof e==`function`?e(n):e,S.current.size,T()),animate:t}))};(0,r.useEffect)(()=>{let e=u.current;if(!e)return;let t=t=>{t.preventDefault();let n=e.getBoundingClientRect(),r=yl(t,n.height);t.ctrlKey||t.metaKey?E(e=>hl(e,t.clientX-n.left,t.clientY-n.top,bl(r.y)),{manual:!0}):E(e=>({...e,x:e.x-(t.shiftKey?r.y:r.x),y:e.y-(t.shiftKey?0:r.y)}),{manual:!0})};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[]);let D=e=>{e.pointerType===`mouse`&&e.button!==0||e.target.closest?.(`button,a,input,textarea,select,iframe,.aha-canvasBar`)||(S.current.pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),S.current.drag||(S.current.drag={x:e.clientX,y:e.clientY,moved:!1}),u.current?.setPointerCapture?.(e.pointerId))},O=e=>{let{pointers:t,drag:n}=S.current,r=t.get(e.pointerId);if(!r)return;let i={x:e.clientX,y:e.clientY};if(t.size===1){if(!n.moved&&Math.hypot(i.x-n.x,i.y-n.y)<4)return;n.moved=!0,x(!0),t.set(e.pointerId,i),E(e=>({...e,x:e.x+i.x-r.x,y:e.y+i.y-r.y}),{manual:!0});return}let a=[...t.entries()].find(([t])=>t!==e.pointerId)?.[1];if(t.set(e.pointerId,i),!a)return;let o=u.current.getBoundingClientRect(),s={x:(r.x+a.x)/2,y:(r.y+a.y)/2,d:Math.hypot(r.x-a.x,r.y-a.y)},c={x:(i.x+a.x)/2,y:(i.y+a.y)/2,d:Math.hypot(i.x-a.x,i.y-a.y)};n.moved=!0,E(e=>{let t=hl(e,s.x-o.left,s.y-o.top,c.d/Math.max(1,s.d));return{...t,x:t.x+c.x-s.x,y:t.y+c.y-s.y}},{manual:!0})},k=e=>{S.current.pointers.delete(e.pointerId),S.current.pointers.size||(S.current.drag=null,x(!1))},A=(e,t)=>E(gl(S.current.size,e,{margin:16,maxZoom:t}),{animate:!0,manual:!0}),ee=e=>{let t=e.target.closest?.(`.aha-frame`);t&&A({x:t.offsetLeft,y:t.offsetTop,width:t.offsetWidth,height:t.offsetHeight})},te=e=>E(t=>hl(t,S.current.size.width/2,S.current.size.height/2,e),{animate:!0,manual:!0}),j=()=>A({x:0,y:0,...T()},1),ne=()=>E(e=>({...hl(e,S.current.size.width/2,S.current.size.height/2,1/e.k),x:16}),{animate:!0,manual:!0});(0,r.useLayoutEffect)(()=>{if(!_||!n||!p.height)return;let e=d.current?.querySelector(`[data-frame="${a}"]`);if(!e)return;let t=l?.t===`mark`?l.ref:l?.id,r=e.querySelectorAll(`[data-op]`),i=t?d.current.querySelector(`[data-op="${t}"]`):l?null:r[r.length-1]??null,o=e.offsetTop;for(let t=i;t&&t!==e;t=t.offsetParent)o+=t.offsetTop;let c=i?.offsetHeight??0,u=C.current!==a;C.current=a;let f=s>0&&!l?{bottom:s+16,end:!0}:void 0;g(t=>{let n=t.k===1&&t.x===16?t:{x:16,y:t.y,k:1},r=n.y;return(u||!i)&&(r+=16-(r+e.offsetTop)),i&&(r+=_l(S.current.size,{top:r+o,height:c},f)),r===t.y&&n===t?t:{...n,y:r,animate:!0}})},[l?`${l.id}:${Math.round((n?.progress??0)*4)}`:`page:${a}`,a,_,p.width,p.height,s]);let re=t.pages.map((e,t)=>t).filter(e=>!n||e<=a);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`div`,{ref:u,className:`aha-canvas`,"data-panning":b?`true`:void 0,onPointerDown:D,onPointerMove:O,onPointerUp:k,onPointerCancel:k,onDoubleClick:ee,children:(0,i.jsxs)(`div`,{ref:d,className:`aha-canvasWorld`,style:{width:w,transform:`translate(${h.x}px, ${h.y}px) scale(${h.k})`,transition:h.animate?`transform .45s ease`:`none`},children:[re.map(n=>(0,i.jsx)(Ou,{index:n,page:t.pages[n],title:e.titles.get(n),board:e,signature:Du(t.pages[n],e.titles.get(n),e),activeRef:n===a?f:null,label:c(`canvasPage`,{n:n+1})},n)),(0,i.jsx)(wu,{target:f,stage:d,scale:h.k,active:o})]})}),(0,i.jsxs)(`div`,{className:`aha-canvasBar`,role:`toolbar`,"aria-label":c(`canvasTools`),title:c(`canvasHelp`),children:[!_&&n?(0,i.jsx)(`button`,{type:`button`,className:`aha-canvasFollow`,onClick:()=>y(!0),children:c(`canvasFollow`)}):null,(0,i.jsx)(`button`,{type:`button`,"aria-label":c(`canvasZoomOut`),title:c(`canvasZoomOut`),onClick:()=>te(1/pl),children:`−`}),(0,i.jsxs)(`button`,{type:`button`,className:`aha-canvasZoom`,title:c(`canvasZoomReset`),onClick:ne,children:[Math.round(h.k*100),`%`]}),(0,i.jsx)(`button`,{type:`button`,"aria-label":c(`canvasZoomIn`),title:c(`canvasZoomIn`),onClick:()=>te(pl),children:`+`}),(0,i.jsx)(`button`,{type:`button`,title:c(`canvasFit`),onClick:j,children:c(`canvasFitShort`)})]})]})}function ju({steps:e,position:t,theme:n=`light`,font:a=`hand`,buffering:o=!1,bufferingLabel:s=``,view:c=`canvas`,onInteract:l,cover:u=0}){let{t:d}=v(),f=(0,r.useMemo)(()=>du(e),[e]),p=(0,r.useMemo)(()=>a===`hand`?pu(e):``,[e,a]);(0,r.useEffect)(()=>{if(!(!p||typeof document>`u`||!document.fonts?.load))for(let e of[`Aha Hand Latin`,`Aha Hand`])document.fonts.load(`20px '${e}'`,p).catch(()=>void 0)},[p]);let m=(0,r.useMemo)(()=>{let t=new Map;return e.forEach((e,n)=>e.ops.forEach((r,i)=>t.set(r.id,{stepIndex:n,opIndex:i,aside:e.aside===!0}))),t},[e]),h=(0,r.useMemo)(()=>{let t=new Map;for(let n of e)for(let e of n.ops)if(e.t===`title`){let n=f.where.get(e.id);n&&!t.has(n.page)&&t.set(n.page,e)}return t},[e,f]),g=t&&e[t.index]?.ops[t.op],_=g?f.where.get(g.id)?.page??0:t?Nu(f,e,t):0,y=e=>{let n=m.get(e);return n?mu(n.stepIndex,n.opIndex,t):0},b=new Map;e.forEach(e=>e.ops.forEach(e=>{if(e.t!==`mark`)return;let t=y(e.id);if(t<=0)return;let n=b.get(e.ref)??[];n.push({id:e.id,style:e.style,reveal:t}),b.set(e.ref,n)}));let x={reveal:y,marks:b,nowIds:new Set(t?.now??[]),opMeta:m,activeOp:g,theme:n,titles:h,onInteract:l,fixedNote:e=>({label:d(`fixed`),title:d(`fixedWas`,{was:e.fixed.was})}),figureLabels:(0,r.useMemo)(()=>({missing:d(`figureMissing`),redrawing:d(`figureRedrawing`),animation:d(`animationFailed`)}),[d])},S=g&&t&&t.progress<1&&Tu.has(g.t)?t:null;return(0,i.jsxs)(`div`,{className:`aha-board`,"data-theme":n,"data-font":a,"data-view":c===`pages`?`pages`:`canvas`,children:[(0,i.jsx)(c===`pages`?ku:Au,{board:x,layout:f,position:t,activePage:_,pencil:S,cover:u}),o?(0,i.jsxs)(`div`,{className:`aha-buffering`,children:[(0,i.jsx)(`span`,{className:`aha-spinner`}),s]}):null]})}function Mu({steps:e,title:t=``,theme:n=`light`,font:a=`hand`,footer:o={},animationLabel:s=``,fixedLabel:c=``,figureLabels:l=gu}){let u=(0,r.useMemo)(()=>du(e),[e]),d=(0,r.useMemo)(()=>new Set(e.flatMap(e=>e.aside?e.ops.map(e=>e.id):[])),[e]),f=(0,r.useMemo)(()=>{let t=new Map;for(let n of e)for(let e of n.ops)e.t===`mark`&&t.set(e.ref,[...t.get(e.ref)??[],{id:e.id,style:e.style,reveal:1}]);return t},[e]),p=u.pages.filter(e=>e.columns.some(e=>e.length));return p.map((e,r)=>{let u=e.title||(r===0?t:``);return(0,i.jsxs)(`div`,{className:`aha-board aha-exportPage`,"data-theme":n,"data-font":a,"data-sheet":r,children:[u?(0,i.jsx)(`h2`,{className:`aha-boardTitle`,children:(0,i.jsx)(`span`,{children:(0,i.jsx)(hu,{text:u})})}):null,(0,i.jsx)(`div`,{className:`aha-cols`,children:e.columns.map((e,t)=>(0,i.jsx)(`div`,{className:`aha-colBody`,children:e.map(({op:e})=>(0,i.jsx)(Cu,{op:e,reveal:1,marks:f.get(e.id)??[],aside:d.has(e.id),now:!1,theme:n,still:!0,animationLabel:s,fixedNote:c?()=>({label:c}):void 0,figureLabels:l},e.id))},t))}),(0,i.jsxs)(`div`,{className:`aha-exportFoot`,children:[(0,i.jsx)(`span`,{children:o.left??``}),(0,i.jsx)(`span`,{children:[o.right,`${r+1} / ${p.length}`].filter(Boolean).join(` · `)})]})]},r)})}function Nu(e,t,n){let r=0;return t.forEach((t,i)=>t.ops.forEach((t,a)=>{mu(i,a,n)>0&&(r=Math.max(r,e.where.get(t.id)?.page??0))})),r}function Pu({speech:e,onChange:t,onNarration:n,now:r=()=>performance.now(),frame:i,cancelFrame:a,startIndex:o=0}){let s=i??(e=>requestAnimationFrame(e)),c=a??(e=>cancelAnimationFrame(e)),l=[],u=!1,d=1,f=null,p=null,m=new Set,h={index:Math.max(0,o),op:0,progress:0,sentence:0,status:`idle`},g=()=>{if(!p?.synced||h.status!==`playing`&&h.status!==`paused`)return[];let e=Math.max(0,p.sentences.length-1);return p.step.ops.filter((t,n)=>n<=h.op&&Math.min(t.at,e)===h.sentence).map(e=>e.t===`mark`?e.ref:e.id)},_=()=>({...h,total:l.length,complete:u,rate:d,step:l[h.index]??null,now:g()}),v=()=>t?.(_());function y(){f!==null&&c(f),f=null}function b(){y(),e?.cancel?.();let t=l[h.index];if(!t){h.status=u?`ended`:`buffering`,v();return}h.op=0,h.progress=0,h.sentence=0,h.status=`playing`;let i=vt(t,{rate:d}),a=cu(t.say).map(au),o=!!t.say&&t.ops.some(e=>Number.isInteger(e.at));p={step:t,timing:i,startedAt:r(),elapsedBefore:0,speechDone:!t.say,silentUntil:null,token:{},sentences:a,exactSentence:!1,synced:o,written:0,lastTime:0,finishAt:null};let s=p.token;t.say&&((e?.speak(au(t.say),{rate:d,sentences:a,onSentence:e=>{!p||p.token!==s||(p.exactSentence=!0,h.sentence!==e&&(h.sentence=e,v()))}})??{done:Promise.resolve({silent:!0})}).done.then(e=>{!p||p.token!==s||(e?.silent||e?.error?p.silentUntil=ht(t.say,d)*.8:p.speechDone=!0,n?.(e))}),e?.prefetch?.(au(l[h.index+1]?.say??``))),v(),C()}function x(e){let t=p?.sentences??[];if(t.length<2)return 0;if(p.speechDone)return t.length-1;let n=ht(p.step.say,d),r=t.map(e=>[...e].length),i=r.reduce((e,t)=>e+t,0)||1,a=0;for(let t=0;t<r.length;t+=1)if(a+=r[t],e<a/i*n)return t;return t.length-1}function S(){return p?p.elapsedBefore+(h.status===`playing`?r()-p.startedAt:0):0}function C(){f=s(T)}function w(e,t,n){if(!p.synced)return e;let r=Math.max(0,e-p.lastTime);p.lastTime=e;let i=Math.max(0,p.sentences.length-1),a=p.speechDone?1/0:t,o=0,s=0;for(;o<n.length&&Math.min(p.step.ops[o].at,i)<=a;)s+=n[o],o+=1;return p.written=Math.min(p.written+r,s),p.written}function T(){if(f=null,h.status!==`playing`||!p)return;let e=S(),t=p.timing.writeMs;p.silentUntil!==null&&e>=p.silentUntil&&(p.speechDone=!0);let n=p.exactSentence?h.sentence:x(e),r=w(e,n,t),i=0,a=t.length,o=1;for(let e=0;e<t.length;e+=1){if(r<i+t[e]){a=e,o=t[e]?(r-i)/t[e]:1;break}i+=t[e]}let s=a!==h.op||Math.abs(o-h.progress)>.002||n!==h.sentence;if(h.op=a,h.sentence=n,h.progress=Math.min(1,Math.max(0,o)),a>=t.length&&p.speechDone&&(p.finishAt??=p.synced?e+450:i+450,e>=p.finishAt)){E();return}s&&v(),C()}function E(){let e=l[h.index];if(h.op=e?.ops.length??0,h.progress=1,e?.check&&!m.has(e.check.id)){h.status=`check`,v();return}D()}function D(){h.index+=1,b()}return{get state(){return _()},setSteps(e,{done:t=!1}={}){l=e,u=t,h.status===`buffering`&&l[h.index]?b():(h.status===`buffering`&&u&&(h.status=`ended`),v())},play(){if(h.status!==`playing`){if(h.status===`paused`&&p){h.status=`playing`,p.startedAt=r(),e?.resume?.(),v(),C();return}h.status===`ended`&&(h.index=0),h.status!==`check`&&b()}},pause(){h.status!==`playing`||!p||(p.elapsedBefore=S(),h.status=`paused`,y(),e?.pause?.(),v())},toggle(){h.status===`playing`?this.pause():this.play()},next(){let t=l[h.index];h.status===`check`&&t?.check&&m.add(t.check.id),t&&(y(),e?.cancel?.(),D())},prev(){y(),e?.cancel?.();let t=h.op===0&&h.progress<.05;h.index=Math.max(0,Math.min(l.length-1,t?h.index-1:h.index)),b()},seek(t){y(),e?.cancel?.(),h.index=Math.min(Math.max(0,t),Math.max(0,l.length)),b()},answer(e){m.add(e),h.status===`check`&&D()},setRate(t){let n=Math.min(2,Math.max(.5,Number(t)||1));if(p&&h.status===`playing`){let e=S(),t=d/n;p.elapsedBefore=e*t,p.startedAt=r(),p.timing=vt(p.step,{rate:n}),p.written*=t,p.lastTime=p.elapsedBefore,p.finishAt=null}d=n,e?.setRate?.(n),v()},insertAfterCurrent(e){if(!e?.length)return l;let t=Math.min(l.length,h.index+1);return l=[...l.slice(0,t),...e,...l.slice(t)],v(),l},dispose(){y(),e?.cancel?.(),p=null}}}function Fu(e,t,n,r=!1){if(!n)return[];if(!e.some(e=>Number.isInteger(e.goal)))return null;if(r)return Array(n).fill(`done`);let i=Array(n).fill(-1);e.forEach((e,t)=>{Number.isInteger(e.goal)&&e.goal<n&&(i[e.goal]=Math.max(i[e.goal],t))});let a=e[t]?.goal;return i.map((e,n)=>a===n?`current`:e>=0&&t>e?`done`:`todo`)}function Iu(e,t,n=[]){let r=[],i=e=>[`question`,`correction`,`challenge`].includes(e.kind)?e.kind:`reexplain`,a=new Set,o=e=>n.find(t=>e.startsWith(`${t.id}_`));e.forEach((e,n)=>{if(!(n>t)){if(e.aside){let t=o(e.id);t&&!a.has(t.id)&&(a.add(t.id),r.push({key:`${t.id}:ask`,kind:i(t),text:t.label,stepIndex:n,aside:!0}))}e.say&&r.push({key:e.id,kind:`say`,text:e.say,stepIndex:n,aside:e.aside===!0})}});for(let e of n)e.streaming&&!e.steps.length&&r.push({key:`${e.id}:ask`,kind:i(e),text:e.label,stepIndex:-1,aside:!0,pending:!0});return r}function Lu(e,t,n=null){let r=Math.min(t,e.length-1);for(;r>0&&e[r]?.aside;)--r;let i=e[r]?.id;return i?n&&e.findIndex(e=>e.id===n)>=r?n:i:n}let Ru=Object.freeze([{target:`.aha-stage`,title:`tourBoardTitle`,text:`tourBoard`},{target:`.aha-controls`,title:`tourControlsTitle`,text:`tourControls`},{target:`[data-tour=raise]`,title:`tourRaiseTitle`,text:`tourRaise`},{target:`[data-tour=reexplain]`,title:`tourReexplainTitle`,text:`tourReexplain`},{target:`[data-tour=challenge]`,title:`tourChallengeTitle`,text:`tourChallenge`},{target:`.aha-panel`,title:`tourPanelTitle`,text:`tourPanel`}]);function zu(e,t,n){let r=(e,t)=>Math.max(8,Math.min(e,t-8)),i=r(e.x,n.width-t.width);return e.y+e.height+12+t.height<=n.height-8?{x:i,y:e.y+e.height+12,side:`below`}:e.y-12-t.height>=8?{x:i,y:e.y-12-t.height,side:`above`}:{x:r(e.x+e.width-t.width-12,n.width-t.width),y:r(e.y+e.height-t.height-12,n.height-t.height),side:`inside`}}function Bu(e,t,n=6){let r=Math.max(0,e.x-n),i=Math.max(0,e.y-n);return{x:r,y:i,width:Math.min(t.width,e.x+e.width+n)-r,height:Math.min(t.height,e.y+e.height+n)-i}}function Vu({root:e,onDone:t}){let{t:n}=v(),[a,o]=(0,r.useState)(0),[s,c]=(0,r.useState)(null),l=(0,r.useRef)(null),[u]=(0,r.useState)(()=>Ru.filter(t=>e.current?.querySelector(t.target))),d=u[a];(0,r.useLayoutEffect)(()=>{let t=e.current;if(!t||!d)return;let n=()=>{let e=t.querySelector(d.target);if(!e)return;let n=t.getBoundingClientRect(),r=e.getBoundingClientRect(),i={width:n.width,height:n.height},a=Bu({x:r.left-n.left,y:r.top-n.top,width:r.width,height:r.height},i),o=l.current?.getBoundingClientRect(),s=zu(a,{width:o?.width??320,height:o?.height??150},i);c({hole:a,place:s})};t.querySelector(d.target)?.scrollIntoView?.({block:`nearest`}),n();let r=requestAnimationFrame(n),i=typeof ResizeObserver==`function`?new ResizeObserver(n):null;return i?.observe(t),()=>{cancelAnimationFrame(r),i?.disconnect()}},[a,d]);let f=()=>a+1<u.length?o(a+1):t(),p=()=>o(Math.max(0,a-1));return(0,r.useEffect)(()=>{let e=e=>{if(e.key===`Escape`)t();else if(e.key===`ArrowRight`||e.key===`Enter`)f();else if(e.key===`ArrowLeft`)p();else if(e.key!==` `)return;e.preventDefault(),e.stopImmediatePropagation()};return window.addEventListener(`keydown`,e,!0),()=>window.removeEventListener(`keydown`,e,!0)}),(0,r.useEffect)(()=>{d||t()},[d]),d?(0,i.jsxs)(`div`,{className:`aha-tour`,role:`dialog`,"aria-modal":`true`,"aria-label":n(`tourLabel`),children:[s?(0,i.jsx)(`div`,{className:`aha-tourHole`,style:{left:s.hole.x,top:s.hole.y,width:s.hole.width,height:s.hole.height}}):null,(0,i.jsxs)(`div`,{ref:l,className:`aha-tourCard`,"data-side":s?.place.side,style:s?{left:s.place.x,top:s.place.y}:{visibility:`hidden`},children:[(0,i.jsx)(`b`,{children:n(d.title)}),(0,i.jsx)(`p`,{children:n(d.text)}),(0,i.jsxs)(`div`,{className:`aha-tourActions`,children:[(0,i.jsxs)(`span`,{className:`aha-hint`,children:[a+1,` / `,u.length]}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:t,children:n(`tourSkip`)}),a>0?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:p,children:n(`tourBack`)}):null,(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,"data-size":`sm`,autoFocus:!0,onClick:f,children:a+1<u.length?n(`tourNext`):n(`tourStart`)})]})]})]}):null}function Hu({label:e}){return(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:8},children:[(0,i.jsx)(`span`,{className:`aha-spinner`}),e?(0,i.jsx)(`span`,{className:`aha-hint`,children:e}):null]})}function Uu({value:e}){return(0,i.jsx)(`div`,{className:`aha-progress`,children:(0,i.jsx)(`div`,{style:{width:`${Math.max(0,Math.min(100,e))}%`}})})}function Wu({progress:e,label:t,detail:n,onCancel:r}){let{t:a}=v(),o=e?.total?Math.round(e.done/e.total*100):0;return(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:6},children:[(0,i.jsx)(Hu,{label:t}),n?(0,i.jsx)(`span`,{className:`aha-hint`,children:n}):e?.total?(0,i.jsx)(Uu,{value:o}):null,r?(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:r,children:a(`cancel`)}),(0,i.jsx)(`span`,{className:`aha-hint`,children:a(`keepsRunning`)})]}):null]})}function Gu({kind:e,job:t}){let{t:n}=v(),r=t.progress,a=t.preview?.written??0,o=e===`quiz`,s=n(`generating`);return r?.label===`reading`&&(o||e===`cards`)&&(r.total>1?s=n(o?`studyPartsQuiz`:`studyPartsCards`,{done:r.done,total:r.total,count:a}):a&&(s=n(o?`quizWriting`:`cardsWriting`,{count:a}))),(0,i.jsxs)(`div`,{className:`aha-row`,style:{gap:8},children:[(0,i.jsx)(Hu,{label:s}),t.running?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:t.cancel,children:n(`cancel`)}):null]})}function Ku({title:e,onClose:t,children:n,footer:r,width:a}){return(0,i.jsx)(`div`,{className:`aha-modalBack`,onMouseDown:e=>{e.target===e.currentTarget&&t?.()},children:(0,i.jsxs)(`div`,{className:`aha-modal`,role:`dialog`,"aria-label":e,style:a?{width:`min(${a}px,100%)`}:void 0,children:[e?(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:e}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:t,"aria-label":`close`,children:`✕`})]}):null,n,r?(0,i.jsx)(`div`,{className:`aha-row`,style:{justifyContent:`flex-end`},children:r}):null]})})}function qu({text:e,onConfirm:t,onCancel:n,danger:r=!1}){let{t:a}=v();return(0,i.jsx)(Ku,{title:a(`confirm`),onClose:n,footer:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:n,children:a(`cancel`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":r?`danger`:`primary`,onClick:t,children:a(`confirm`)})]}),children:(0,i.jsx)(`p`,{children:e})})}function Ju(e,t){let n=String(t?.code??``).replace(/^aha-tutor\//u,``),r=`err_${n}`;return n&&e(r)!==r?e(r):e(`errorGeneric`,{message:t?.message??String(t)})}function Yu({error:e,style:t,reveal:n=!1}){let{t:a}=v(),o=(0,r.useRef)(null);return(0,r.useEffect)(()=>{n&&e&&o.current?.scrollIntoView?.({block:`nearest`})},[n,e]),e?(0,i.jsx)(`div`,{ref:o,className:`aha-error`,role:`alert`,style:t,title:e.message??void 0,children:Ju(a,e)}):null}function Xu({children:e}){return(0,i.jsx)(`div`,{className:`aha-empty`,children:e})}function Zu(){let{api:e}=v(),[t,n]=(0,r.useState)(null),[i,a]=(0,r.useState)(null),[o,s]=(0,r.useState)(null),[c,l]=(0,r.useState)(null);async function d(t){l(t?.job?.id??null);try{return await e.follow(t,{onProgress:s})}finally{l(null),s(null)}}async function f(t){try{let e=await fetch(new URL(`api/aha-tutor/upload?name=${encodeURIComponent(t.name)}`,document.baseURI),{method:`POST`,credentials:`same-origin`,headers:{"content-type":t.type||`application/octet-stream`},body:t});if(e.status!==404){let t=await e.json();if(!t?.ok)throw new u(t?.error?.code??`failed`,t?.error?.message??`Upload failed`);return(await d(t.value)).material}}catch(e){if(e?.message!==`Failed to fetch`)throw e}let n=await p(t);return(await d(await e.call(`material/upload`,{name:t.name,base64:n}))).material}async function m(e){let t=[];a(null);for(let r of e){n(r.name);try{t.push(await f(r))}catch(e){if(e?.code===`cancelled`)break;a(e)}}return n(null),t}async function h(t){n(t),a(null);try{return[(await d(await e.call(`material/url`,{url:t}))).material]}catch(e){return e?.code!==`cancelled`&&a(e),[]}finally{n(null)}}return{upload:m,addUrl:h,busy:t,error:i,progress:o,cancel:c?()=>e.cancel(c):null}}function Qu(e,t,n){return n?.label===`recognizing`&&n.total?e(`readingPictures`,{done:n.done,total:n.total,name:t}):n?.label===`summarizing`?e(`summarizingMaterial`,{name:t}):`${e(`reading`)} ${t}`}function $u({onAdded:e,compact:t=!1}){let{t:n}=v(),a=(0,r.useRef)(null),[o,s]=(0,r.useState)(``),[c,l]=(0,r.useState)(!1),{upload:u,addUrl:d,busy:f,error:p,progress:m,cancel:h}=Zu(),g=async t=>{let n=await u([...t]);n.length&&e?.(n)};return(0,i.jsxs)(`div`,{className:`aha-col`,children:[(0,i.jsxs)(`div`,{className:`aha-empty`,style:{padding:t?14:24,borderColor:c?`var(--aha-brand)`:void 0,cursor:`pointer`},onClick:()=>a.current?.click(),onDragOver:e=>{e.preventDefault(),l(!0)},onDragLeave:()=>l(!1),onDrop:e=>{e.preventDefault(),l(!1),g(e.dataTransfer.files)},children:[(0,i.jsxs)(`div`,{className:`aha-row`,style:{justifyContent:`center`},children:[(0,i.jsx)(Ht,{name:`upload`}),n(`dropHere`)]}),(0,i.jsx)(`input`,{ref:a,type:`file`,multiple:!0,accept:`.pdf,.docx,.pptx,.md,.markdown,.txt,.csv,.json,.tex,.py,.js,.ts,.html,.png,.jpg,.jpeg,.webp,.gif`,hidden:!0,onChange:e=>{g(e.currentTarget.files),e.currentTarget.value=``}})]}),(0,i.jsxs)(`form`,{className:`aha-row`,onSubmit:async t=>{if(t.preventDefault(),!o.trim())return;let n=await d(o.trim());n.length&&(s(``),e?.(n))},children:[(0,i.jsx)(`input`,{className:`aha-input`,style:{flex:1},value:o,placeholder:n(`urlPlaceholder`),onChange:e=>s(e.currentTarget.value)}),(0,i.jsxs)(`button`,{type:`submit`,className:`aha-btn`,disabled:!o.trim()||!!f,children:[(0,i.jsx)(Ht,{name:`link`}),n(`addUrl`)]})]}),f?(0,i.jsxs)(`div`,{className:`aha-row`,style:{gap:8},children:[(0,i.jsx)(Hu,{label:Qu(n,f,m)}),h?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:h,children:n(`cancel`)}):null]}):null,(0,i.jsx)(Yu,{error:p})]})}function ed({selected:e,onChange:t,onClose:n,exclude:r=[],max:a=8}){let{api:o,t:s}=v(),c=y(()=>o.call(`material/list`),[]),l=n=>t(e.includes(n)?e.filter(e=>e!==n):[...e,n].slice(0,a));return(0,i.jsxs)(Ku,{title:s(`pickMaterials`),onClose:n,width:640,footer:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:n,children:s(`confirm`)}),children:[(0,i.jsx)($u,{compact:!0,onAdded:n=>{c.reload(),t([...e,...n.map(e=>e.id)].slice(0,a))}}),c.loading&&!c.value?(0,i.jsx)(Hu,{label:s(`loading`)}):null,(0,i.jsx)(`div`,{className:`aha-col`,style:{gap:6,maxHeight:320,overflow:`auto`},children:(c.value??[]).filter(e=>!r.includes(e.id)).map(t=>(0,i.jsxs)(`label`,{className:`aha-option`,style:{flexDirection:`row`,alignItems:`center`,gap:10},children:[(0,i.jsx)(`input`,{type:`checkbox`,checked:e.includes(t.id),onChange:()=>l(t.id)}),(0,i.jsxs)(`span`,{className:`aha-col`,style:{gap:0},children:[(0,i.jsx)(`b`,{children:t.title}),(0,i.jsx)(`small`,{children:td(t,s)})]})]},t.id))})]})}function td(e,t){let n=[e.kind.toUpperCase()];e.pages&&n.push(t(`pages`,{count:e.pages})),e.slides&&n.push(t(`slides`,{count:e.slides}));let r=e.ocr?.read??0;return r&&e.kind===`image`?n.push(e.chars?t(`readPhoto`):t(`photoNoText`)):r?n.push(e.pages?t(`readScanPages`,{count:r}):t(`readPictures`,{count:r})):e.kind===`image`&&n.push(t(`imageNeedsVision`)),nd(e,t).length&&n.push(t(`readPartly`)),n.join(` · `)}function nd(e,t){let n=e.ocr;if(!n)return[];let r=[],i=!!e.pages;if(n.unread&&r.push(t(i?`unreadPages`:`unreadPictures`,{count:n.unread})),n.failed?.length){let a=[...new Set(n.failed.map(e=>e.page??e.slide??e.picture))].join(t(`listJoin`)),o=t(e.kind===`image`?`failedPhoto`:i?`failedPages`:e.slides?`failedSlides`:`failedPictures`,{list:a});r.push(n.reason?t(`failedWhy`,{what:o,reason:Ju(t,{code:n.reason})}):t(`failedRetry`,{what:o}))}return n.left&&r.push(t(i?`leftPages`:`leftPictures`,{count:n.left})),r}function rd(e,{page:t,end:n,label:r,endLabel:i}){let a=r??t,o=n&&n!==t?i??n:null;return{text:o&&String(o)!==String(a)?e(`pagesN`,{from:a,to:o}):e(`pageN`,{page:a}),pdf:r&&r!==String(t)||i&&i!==String(n)?o?e(`pdfPagesN`,{from:t,to:n}):e(`pdfPageN`,{page:t}):void 0}}function id(e){let{t}=v(),{text:n,pdf:r}=rd(t,e);return(0,i.jsx)(`span`,{className:`aha-pageRef`,title:r,"data-pdf":r?`true`:void 0,children:n})}function ad({sources:e}){let{t}=v(),n=(e??[]).map(e=>({source:e,words:e.page?rd(t,e):null})).filter(({source:e,words:t})=>t||e.title);if(!n.length)return null;let r=n.map(({source:e,words:t})=>t?.text??e.title).join(t(`listJoin`)),a=n.map(({source:e,words:t})=>[e.materialTitle,e.title,t?.text,t?.pdf].filter(Boolean).join(` · `)).join(`
269
- `);return(0,i.jsxs)(`span`,{className:`aha-lessonSource`,title:`${t(`lessonSourcesTitle`)}\n${a}`,children:[`📖 `,r]})}function od({material:e}){let{t}=v(),n=e.outline?.entries??[];return n.length?(0,i.jsxs)(`details`,{className:`aha-outline`,children:[(0,i.jsxs)(`summary`,{children:[t(`outlineTitle`,{count:n.length}),(0,i.jsxs)(`span`,{className:`aha-hint`,children:[` · `,t(e.outline.source===`bookmarks`?`outlineBookmarks`:`outlineHeadings`),e.printed?` · ${t(`outlinePrinted`)}`:``]})]}),(0,i.jsx)(`ol`,{children:n.map((e,t)=>(0,i.jsxs)(`li`,{"data-level":e.level,children:[(0,i.jsx)(`span`,{className:`aha-outlineTitle`,children:e.title}),e.page?(0,i.jsx)(id,{page:e.page,end:e.end,label:e.label,endLabel:e.endLabel}):null]},t))})]}):null}function sd({sources:e}){return(0,i.jsx)(`ol`,{className:`aha-sourceList`,children:(e??[]).filter(e=>/^https?:\/\//iu.test(String(e?.url??``))).map(e=>(0,i.jsxs)(`li`,{children:[(0,i.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,children:e.title||e.url}),(0,i.jsxs)(`span`,{className:`aha-hint`,children:[` · `,new URL(e.url).hostname]}),e.snippet?(0,i.jsx)(`p`,{className:`aha-hint`,children:e.snippet}):null]},e.url))})}function cd({title:e,emoji:t}){return e?(0,i.jsxs)(`span`,{className:`aha-hint`,title:e,children:[` · `,t?`${t} `:``,We(e)]}):null}function ld({value:e,stage:t,label:n}){let r=t===`none`?0:Math.round((Number(e)||0)/20),a=n?t===`none`?n:`${n} · ${Math.round(e??0)}%`:`${Math.round(e??0)}%`;return(0,i.jsx)(`span`,{className:`aha-meter`,title:a,"aria-label":a,role:`img`,"data-stage":t,children:[0,1,2,3,4].map(e=>(0,i.jsx)(`i`,{"data-on":e<r},e))})}function ud(e){return navigator.clipboard?.writeText(e).catch(()=>void 0)}let dd=Object.freeze({wrong:`itemCheck_wrong`,unclear:`itemCheck_unclear`,misgraded:`itemCheck_misgraded`,right:`itemCheck_right`});function fd({courseId:e,lessonId:t,unitId:n,deckId:r}={},i){return i?.id?i.context?i.context.source??null:r?{kind:`deck`,deckId:r,itemId:i.id}:e&&n?{kind:`quiz`,courseId:e,unitId:n,itemId:i.id}:e&&t?{kind:`practice`,courseId:e,lessonId:t,itemId:i.id}:null:null}let pd=(e,t=160)=>{let n=[...String(e??``).replace(/\s+/gu,` `).trim()];return n.length>t?`${n.slice(0,t).join(``)}…`:n.join(``)};function md(e,t=e?.answer){return e.kind===`choice`?(t=>{let n=e.options?.find(e=>e.id===t);return n?`${t.toUpperCase()}. ${n.text}`:String(t??``).toUpperCase()})(t):e.kind===`multi`?(Array.isArray(t)?t:[]).map(e=>String(e).toUpperCase()).join(`, `):e.kind===`order`?(Array.isArray(t)?t:[]).map(t=>e.options?.find(e=>e.id===t)?.text??t).join(` → `):e.kind===`number`?`${t}${e.unit?` ${e.unit}`:``}`:e.kind===`blank`?(Array.isArray(t)?t:[t]).join(` / `):pd(t)}function hd(e,t){let n=t?.fixed?.was;if(!n)return[];let r=[];n.prompt!==void 0&&r.push(e(`fixedPart_prompt`,{text:pd(n.prompt)||`—`}));for(let[t,i]of Object.entries(n.options??{}))r.push(e(`fixedPart_option`,{id:t.toUpperCase(),text:pd(i,80)}));if(n.answer!==void 0){let i=t.options?.map(e=>({...e,text:n.options?.[e.id]??e.text}));r.push(e(`fixedPart_answer`,{text:n.answer===null?`—`:md({...t,options:i,unit:n.unit??t.unit},n.answer)}))}return n.unit!==void 0&&n.answer===void 0&&r.push(e(`fixedPart_unit`,{text:n.unit||`—`})),n.tolerance!==void 0&&r.push(e(`fixedPart_tolerance`,{text:n.tolerance??`—`})),n.explanation!==void 0&&r.push(e(`fixedPart_explanation`,{text:pd(n.explanation)||`—`})),n.hints!==void 0&&r.push(e(`fixedPart_hints`,{text:pd((n.hints??[]).join(` / `))||`—`})),n.rubric!==void 0&&r.push(e(`fixedPart_rubric`,{text:pd((n.rubric??[]).join(` / `))||`—`})),n.figure&&r.push(e(`fixedPart_figure`)),r}function gd(e){return{score:Number(e?.score)||0,correct:e?.correct===!0,partial:e?.partial===!0,feedback:e?.feedback??``,wrongStep:e?.wrongStep??``,fix:e?.fix??``}}function _d(e,t,n){return{status:`done`,note:e?.note??``,verdict:t?.verdict??`right`,summary:t?.summary??``,explanation:t?.explanation??``,item:t?.item??e?.item??null,result:t?.result?{...n,...t.result,regraded:!0}:e?.result??null,earlier:(e?.earlier??0)+(Number(t?.earlier)||0)}}function vd(e,t,n){return e.map(e=>e.index===t?{...e,...n,index:t,regraded:!0}:e)}function yd(e,{index:t,verdict:n,regraded:r=!1,earlier:i=0,message:a}){return a===void 0?`${e(`itemCheckDone`,{n:t+1,verdict:e(dd[n]??dd.right)})}${r?e(`itemCheckRegraded`):``}${i?e(`itemCheckEarlier`,{count:i}):``}`:e(`itemCheckFailedNotice`,{n:t+1,message:a})}function bd({text:e,compact:t=!1,streaming:n=!1,className:o=``}){let{t:s}=v(),c=(0,r.useMemo)(()=>({code:{copyLabel:s(`copyCode`),copiedLabel:s(`copied`)},footnotes:s(`footnotes`)}),[s]);return(0,i.jsx)(`div`,{className:o?`aha-markdown ${o}`:`aha-markdown`,children:(0,i.jsx)(a.MarkdownText,{text:String(e??``),labels:c,streaming:n,variant:t?`compact`:`body`})})}let xd=16e3,Sd={NotAllowedError:{code:`mic-denied`},SecurityError:{code:`mic-denied`},NotFoundError:{code:`mic-missing`},OverconstrainedError:{code:`mic-missing`},NotReadableError:{code:`mic-busy`},AbortError:{code:`mic-busy`}},Cd={code:`mic-unsupported`},wd={code:`speech-audio`};function Td({code:e,device:t}){return Object.assign(Error(e),{name:`RecordingError`,code:e},t?{device:t}:{})}function Ed(){try{let e=JSON.parse(window.localStorage.getItem(`dsh.voice-input.microphone`)??`null`);if(typeof e?.id==`string`&&e.id&&typeof e.label==`string`)return{id:e.id,label:e.label.slice(0,120)}}catch{}return null}function Dd(e){let t=new Uint8Array(44+e.length*2),n=new DataView(t.buffer),r=(e,n)=>{for(let r=0;r<4;r+=1)t[e+r]=n.charCodeAt(r)};r(0,`RIFF`),n.setUint32(4,36+e.length*2,!0),r(8,`WAVE`),r(12,`fmt `),n.setUint32(16,16,!0),n.setUint16(20,1,!0),n.setUint16(22,1,!0),n.setUint32(24,xd,!0),n.setUint32(28,xd*2,!0),n.setUint16(32,2,!0),n.setUint16(34,16,!0),r(36,`data`),n.setUint32(40,e.length*2,!0);for(let t=0;t<e.length;t+=1){let r=Math.max(-1,Math.min(1,Number(e[t])||0));n.setInt16(44+t*2,Math.round(r<0?r*32768:r*32767),!0)}return t}async function Od(e,t){let n=new(globalThis.AudioContext??globalThis.webkitAudioContext);try{let r=await n.decodeAudioData(await e.arrayBuffer()),i=Math.max(1,Math.floor(Math.min(r.duration,t)*xd)),a=new OfflineAudioContext(1,i,xd),o=a.createBufferSource();return o.buffer=r,o.connect(a.destination),o.start(),Dd((await a.startRendering()).getChannelData(0))}finally{n.close?.()?.catch?.(()=>void 0)}}function kd(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return btoa(t)}function Ad({maxSeconds:e=120,onLimit:t}={}){let n=null,r=null,i=[],a=null,o=0,s=!1,c=()=>{clearTimeout(a);for(let e of n?.getTracks?.()??[])e.stop();n=null};async function l(){if(!globalThis.navigator?.mediaDevices?.getUserMedia||typeof MediaRecorder!=`function`)throw Td(Cd);let l=Ed();try{n=await navigator.mediaDevices.getUserMedia({audio:{channelCount:1,echoCancellation:!0,noiseSuppression:!0,...l?{deviceId:{exact:l.id}}:{}}})}catch(e){throw l&&(e?.name===`NotFoundError`||e?.name===`OverconstrainedError`)?Td({code:`mic-chosen-missing`,device:l.label}):Td(Sd[e?.name]??Cd)}if(s){c();return}i=[],r=new MediaRecorder(n),r.ondataavailable=e=>{e.data?.size&&i.push(e.data)},r.start(250),o=performance.now(),a=setTimeout(()=>t?.(),e*1e3)}function u(){return new Promise((t,n)=>{let a=r;if(r=null,!a||a.state===`inactive`){c(),n(Td(wd));return}a.onstop=async()=>{c();try{t(await Od(new Blob(i,{type:a.mimeType||`audio/webm`}),e))}catch{n(Td(wd))}},a.stop()})}function d(){s=!0;let e=r;r=null,i=[],e&&e.state!==`inactive`&&(e.onstop=null,e.stop()),c()}return{start:l,stop:u,cancel:d,elapsed:()=>o?(performance.now()-o)/1e3:0}}function jd(e){for(let t=e?.parentElement;t;t=t.parentElement)if(getComputedStyle(t).overflowX!==`visible`)return t;return null}function Md(e){let t=jd(e);if(!t)return 0;e.style.width=``,e.style.transform=``;let n=t.getBoundingClientRect();e.style.width=`${Math.min(e.getBoundingClientRect().width,n.width-16)}px`;let r=e.getBoundingClientRect(),i=r.left<n.left+8?n.left+8-r.left:Math.min(0,n.right-8-r.right);return i&&(e.style.transform=`translateX(${Math.round(i)}px)`),i}function Nd(e){Md(e);let t=jd(e);if(!t||typeof ResizeObserver!=`function`)return()=>void 0;let n=new ResizeObserver(()=>Md(e));return n.observe(t),()=>n.disconnect()}function Pd(e,{reducedMotion:t=Fd()}={}){let n=e?.closest?.(`.aha-main`);if(!n||n.scrollHeight<=n.clientHeight)return!1;let r=e.getBoundingClientRect().top-n.getBoundingClientRect().top-12;return Math.abs(r)<1?!1:(n.scrollTo({top:Math.max(0,n.scrollTop+r),behavior:t?`auto`:`smooth`}),!0)}function Fd(){return globalThis.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches===!0}let Id=e=>(e?.key===`v`||e?.key===`V`)&&!e.ctrlKey&&!e.metaKey&&!e.altKey,Ld=e=>!!e?.isContentEditable||/^(input|textarea|select)$/iu.test(String(e?.tagName??``));function Rd(){let e=null,t=e=>e===`starting`||e===`recording`;return{down(n,r){return n===`idle`?(e=r,`start`):(e=null,t(n)?`stop`:null)},up(n,r){if(e===null)return null;let i=r-e;return e=null,i>=350&&t(n)?`stop`:null}}}async function zd(e,t){try{let e=await fetch(new URL(`api/aha-tutor/speech`,document.baseURI),{method:`POST`,credentials:`same-origin`,headers:{"content-type":`audio/wav`},body:t});if(e.status!==404){let t=await e.json();if(!t?.ok)throw new u(t?.error?.code??`speech-failed`,t?.error?.message??`Speech recognition failed`);return t.value}}catch(e){if(e?.message!==`Failed to fetch`)throw e}return e.call(`speech/transcribe`,{base64:kd(t)})}let Bd=e=>`${Math.floor(e/60)}:${String(e%60).padStart(2,`0`)}`;function Vd(e,t){return t?.code===`mic-chosen-missing`&&t.device?e(`micChosenMissing`,{name:t.device}):Ju(e,t)}let Hd=(0,r.forwardRef)(function({onText:e,onStart:t,disabled:n=!1,keyHint:a=``},o){let{api:s,t:c}=v(),[l,u]=(0,r.useState)(null),[d,f]=(0,r.useState)(`idle`),[p,m]=(0,r.useState)(0),[h,g]=(0,r.useState)(null),[_,y]=(0,r.useState)(()=>Ed()?.label??``),b=(0,r.useRef)(null),x=(0,r.useRef)(null),S=(0,r.useRef)(null),C=(0,r.useRef)(`idle`),w=(0,r.useRef)(!1),T=(0,r.useRef)(null);T.current??=Rd();let E=e=>{C.current=e,f(e)};(0,r.useLayoutEffect)(()=>h&&x.current?Nd(x.current):void 0,[h]);async function D(){let e;try{e=await s.call(`speech/status`)}catch{e={state:`off`}}return u(e),e}(0,r.useEffect)(()=>(D(),()=>b.current?.cancel()),[]),(0,r.useEffect)(()=>{if(d!==`recording`)return;let e=setInterval(()=>m(Math.floor(b.current?.elapsed()??0)),250);return()=>clearInterval(e)},[d]);async function O(){let t=b.current;if(t){b.current=null,E(`working`);try{let{text:n}=await zd(s,await t.stop());e?.(n)}catch(e){g({text:Ju(c,e),error:!0}),/speech-(off|unprepared)$/u.test(String(e?.code??``))&&D()}finally{E(`idle`)}}}async function k(){g(null),w.current=!1,E(`starting`);let e=l?.state===`ready`?l:await D();if(e.state!==`ready`){E(`idle`),g({text:c(`voice_${e.state}`)});return}t?.();let n=Ad({maxSeconds:e.maxSeconds??120,onLimit:()=>{O()}});b.current=n,m(0);try{await n.start(),E(`recording`),w.current&&O()}catch(e){b.current=null,E(`idle`),g({text:Vd(c,e),error:!0})}}function A(){C.current===`starting`?w.current=!0:C.current===`recording`&&O()}function ee(){C.current===`recording`?O():C.current===`idle`&&k()}(0,r.useImperativeHandle)(o,()=>({press(e){if(n&&C.current===`idle`)return;let t=T.current.down(C.current,e);t===`start`?(S.current?.scrollIntoView?.({block:`nearest`}),k()):t===`stop`&&A()},release(e){T.current.up(C.current,e)===`stop`&&A()}}));let te=l!==null&&l.state!==`ready`,j=d===`recording`,ne=j?c(`voiceStop`):te?c(`voiceSetup`):_?c(`voiceAskWith`,{name:_}):c(`voiceAsk`);return(0,i.jsxs)(`span`,{className:`aha-mic`,children:[(0,i.jsxs)(`button`,{ref:S,type:`button`,className:`aha-btn aha-micBtn`,"data-state":d,"data-unavailable":te?`true`:void 0,"aria-pressed":j,"aria-label":c(j?`voiceStop`:`voiceAsk`),title:a?`${ne}\n${a}`:ne,disabled:n&&d===`idle`||d===`starting`||d===`working`,onClick:ee,onPointerEnter:()=>y(Ed()?.label??``),children:[d===`working`?(0,i.jsx)(`span`,{className:`aha-spinner`}):(0,i.jsx)(Ht,{name:j?`stop`:`mic`,size:16}),j?(0,i.jsx)(`span`,{className:`aha-micTime`,children:Bd(p)}):d===`working`?(0,i.jsx)(`span`,{className:`aha-micTime`,children:c(`voiceWorking`)}):null]}),h?(0,i.jsxs)(`span`,{ref:x,className:`aha-micNote`,role:`status`,"data-error":h.error?`true`:void 0,children:[h.text,(0,i.jsx)(`button`,{type:`button`,className:`aha-micClose`,"aria-label":c(`close`),onClick:()=>g(null),children:`×`})]}):null]})}),Ud=[[`sure`,`confSure`],[`unsure`,`confUnsure`],[`guess`,`confGuess`]];function Wd({item:e,language:t,onResult:n,onContinue:a,continueLabel:o,askConfidence:s=!0,compact:c=!1,keyboard:l=!1,onChallenge:u,check:d=null}){let{api:f,t:p}=v(),m=d?.item??e,[h,g]=(0,r.useState)(m.kind===`multi`||m.kind===`order`?[]:``),[_,y]=(0,r.useState)(null),[b,x]=(0,r.useState)(0),[S,C]=(0,r.useState)(null),[w,T]=(0,r.useState)(!1),[E,D]=(0,r.useState)(null),[O,k]=(0,r.useState)(!1),[A,ee]=(0,r.useState)(null),te=(0,r.useRef)(Date.now()),j=S&&d?.result?d.result:S;(0,r.useEffect)(()=>{g(e.kind===`multi`||e.kind===`order`?e.kind===`order`?e.options.map(e=>e.id):[]:``),y(null),x(0),C(null),D(null),k(!1),ee(null),te.current=Date.now()},[e]);let ne=m.kind===`multi`?h.length>0:m.kind===`order`||String(h).trim()!==``,re=ne&&(!s||_);async function ie(){if(!re||j||w)return;let e=Date.now()-te.current,r;if(m.kind===`short`||m.kind===`work`){T(!0),D(null);try{let e=await f.call(`lesson/grade`,{item:{kind:m.kind,prompt:m.prompt,answer:m.answer,rubric:m.rubric},response:h,language:t});r={score:e.score,correct:e.verdict===`correct`,partial:e.verdict===`partial`,feedback:e.feedback,errorTag:e.errorTag,misconception:e.misconception},m.kind===`work`&&Object.assign(r,{wrongStep:e.wrongStep??``,why:e.why??``,fix:e.fix??``})}catch(e){D(e),T(!1);return}T(!1)}else{let e=on(m,h);r={score:e.score,correct:e.correct,partial:!e.correct&&e.score>0,errorTag:e.correct?``:sn(m,h)}}let i={...r,response:typeof h==`string`?h:void 0,given:h,confidence:_??void 0,timeMs:e,hintsUsed:b};C(i),n?.(i)}function ae(e){if(e?.preventDefault(),A===null)return;let t=A.trim();ee(null),u?.(t)}let oe=e=>g(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]),se=(0,r.useRef)(null);se.current={result:j,ready:re,answered:ne,confidence:_,hints:b,submit:ie,toggle:oe,onContinue:a},(0,r.useEffect)(()=>{if(!l)return;let e=e=>{if(e.defaultPrevented||e.metaKey||e.ctrlKey||e.altKey||e.isComposing)return;let t=se.current,n=e.target,r=n instanceof HTMLElement&&(/^(input|textarea|select)$/iu.test(n.tagName)||n.isContentEditable);if(e.key===`Enter`){if(r)return;t.result?t.onContinue&&(e.preventDefault(),t.onContinue()):t.ready?(e.preventDefault(),t.submit()):t.answered&&s&&!t.confidence&&k(!0);return}if(!(r||t.result))if(/^[1-9]$/u.test(e.key)&&(m.kind===`choice`||m.kind===`multi`)){let n=m.options[Number(e.key)-1];if(!n)return;e.preventDefault(),m.kind===`multi`?t.toggle(n.id):g(n.id)}else(e.key===`h`||e.key===`H`)&&t.hints<(m.hints?.length??0)&&(e.preventDefault(),x(e=>e+1))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[l,m,s]);let ce=(e,t)=>g(n=>{let r=[...n],i=e+t;return i<0||i>=r.length?n:([r[e],r[i]]=[r[i],r[e]],r)}),le=e=>{if(j)return(Array.isArray(m.answer)?m.answer:[m.answer]).includes(e.id)?`right`:(Array.isArray(h)?h.includes(e.id):h===e.id)?`wrong`:void 0},M=m.fixed?hd(p,m):[],ue=M.length?`${p(`fixedWasItem`)}\n${M.join(`
270
- `)}`:``;return(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:c?8:12},children:[m.fixed?(0,i.jsx)(`div`,{children:(0,i.jsxs)(`span`,{className:`aha-itemFixed`,tabIndex:0,title:ue,"aria-label":`${p(`fixed`)}. ${ue}`,children:[`✎ `,p(`fixed`)]})}):null,(0,i.jsx)(bd,{text:m.prompt,compact:!0,className:`aha-itemPrompt`}),m.svg?(0,i.jsx)(Gd,{svg:m.svg}):m.plot?(0,i.jsx)(Gd,{plot:m.plot}):null,m.kind===`multi`?(0,i.jsx)(`span`,{className:`aha-hint`,children:p(`pickSeveral`)}):null,m.kind===`choice`||m.kind===`multi`?(0,i.jsx)(`div`,{className:`aha-col aha-options`,style:{gap:6},"data-grid":m.options.every(e=>e.text.length<=22),children:m.options.map(e=>{let t=m.kind===`multi`?h.includes(e.id):h===e.id,n=le(e);return(0,i.jsx)(`button`,{type:`button`,className:`aha-option`,"data-active":t,disabled:!!j,style:n===`right`?{borderColor:`var(--aha-ok)`}:n===`wrong`?{borderColor:`var(--aha-bad)`}:void 0,onClick:()=>m.kind===`multi`?oe(e.id):g(e.id),children:(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:8,flexWrap:`nowrap`},children:[(0,i.jsxs)(`b`,{children:[e.id.toUpperCase(),`.`]}),(0,i.jsx)(bd,{text:e.text,compact:!0})]})},e.id)})}):null,m.kind===`order`?(0,i.jsx)(`div`,{className:`aha-col`,style:{gap:6},children:h.map((e,t)=>(0,i.jsxs)(`div`,{className:`aha-option`,style:{flexDirection:`row`,alignItems:`center`,gap:8},children:[(0,i.jsx)(`span`,{style:{flex:1},children:(0,i.jsx)(bd,{text:m.options.find(t=>t.id===e)?.text??e,compact:!0})}),j?null:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>ce(t,-1),"aria-label":p(`moveUp`),children:`↑`}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>ce(t,1),"aria-label":p(`moveDown`),children:`↓`})]})]},e))}):null,m.kind===`blank`||m.kind===`number`?(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`input`,{className:`aha-input`,style:{maxWidth:360},value:h,disabled:!!j,placeholder:p(`yourAnswer`),inputMode:m.kind===`number`?`decimal`:void 0,onChange:e=>g(e.currentTarget.value),onKeyDown:e=>{e.key===`Enter`&&ie()}}),m.unit?(0,i.jsx)(`span`,{className:`aha-hint`,children:m.unit}):null]}):null,m.kind===`short`?(0,i.jsx)(`textarea`,{className:`aha-textarea`,value:h,disabled:!!j,placeholder:p(`yourAnswer`),onChange:e=>g(e.currentTarget.value)}):null,m.kind===`work`?(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:6},children:[(0,i.jsx)(`textarea`,{className:`aha-textarea aha-work`,rows:6,value:h,disabled:!!j,placeholder:p(`workPlaceholder`),onChange:e=>g(e.currentTarget.value)}),!j&&/\$[^$\n]+\$/u.test(h)?(0,i.jsx)(`div`,{className:`aha-workPreview`,"aria-label":p(`workPreview`),children:h.split(`
271
- `).filter(e=>e.trim()).map((e,t)=>(0,i.jsx)(bd,{text:e,compact:!0},t))}):null]}):null,m.hints?.length&&!j?(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[m.hints.slice(0,b).map((e,t)=>(0,i.jsxs)(`div`,{className:`aha-hint`,children:[`💡 `,e]},t)),b<m.hints.length?(0,i.jsx)(`div`,{children:(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>x(e=>e+1),children:[p(`hint`),` (`,b+1,`/`,m.hints.length,`)`]})}):null]}):null,s&&!j?(0,i.jsxs)(`div`,{className:`aha-row aha-confidence`,style:{gap:6},"data-nudge":O&&!_?`true`:void 0,children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:p(`confidence`)}),Ud.map(([e,t])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":_===e,onClick:()=>{y(e),k(!1)},children:p(t)},e))]}):null,(0,i.jsx)(Yu,{error:E}),j?(0,i.jsxs)(`div`,{className:`aha-feedback`,"data-ok":j.correct?`true`:j.partial?void 0:`false`,children:[(0,i.jsxs)(`b`,{children:[j.correct?p(`correct`):j.partial?p(`partial`):p(`incorrect`),j.regraded?p(`regraded`):``]}),j.feedback?(0,i.jsx)(bd,{text:j.feedback,compact:!0}):null,m.explanation?(0,i.jsx)(bd,{text:m.explanation,compact:!0}):null,j.wrongStep?(0,i.jsxs)(`div`,{className:`aha-wrongStep`,children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:p(`wrongStep`)}),(0,i.jsx)(bd,{text:j.wrongStep,compact:!0}),j.fix?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:p(`fixedStep`)}),(0,i.jsx)(bd,{text:j.fix,compact:!0})]}):null]}):null,m.kind!==`short`&&m.kind!==`work`&&!j.correct?(0,i.jsx)(`div`,{className:`aha-hint`,children:Kd(m)}):null,u&&A===null&&d?.status!==`checking`?(0,i.jsxs)(`button`,{type:`button`,className:`aha-itemFlag`,onClick:()=>ee(``),children:[`🧐 `,p(`itemChallenge`)]}):null]}):null,j&&A!==null?(0,i.jsxs)(`form`,{className:`aha-challengeBox aha-itemChallenge`,onSubmit:ae,children:[(0,i.jsx)(`b`,{children:p(`itemChallengeTitle`)}),(0,i.jsx)(`textarea`,{className:`aha-textarea`,rows:2,autoFocus:!0,value:A,placeholder:p(`itemChallengePlaceholder`),onChange:e=>{let t=e.currentTarget.value;ee(e=>e===null?e:t)},onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing&&ae(e),e.key===`Escape`&&ee(null)}}),(0,i.jsxs)(`div`,{className:`aha-challengeActions`,children:[(0,i.jsx)(Hd,{onText:e=>ee(t=>t===null?t:t.trim()?`${t.trimEnd()} ${e}`:e)}),(0,i.jsx)(`span`,{className:`aha-challengeHint`,children:p(`itemChallengeHint`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>ee(null),children:p(`cancel`)}),(0,i.jsx)(`button`,{type:`submit`,className:`aha-btn`,"data-kind":`primary`,children:p(`challengeSend`)})]})]}):null,j&&d?(0,i.jsxs)(`div`,{className:`aha-itemCheck`,"data-verdict":d.status===`done`?d.verdict:void 0,role:`status`,children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:p(`itemCheckTitle`)}),d.status===`checking`?(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:6},children:[(0,i.jsx)(`span`,{className:`aha-spinner`}),p(`itemChecking`)]}):null,d.status===`done`?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`b`,{children:p(dd[d.verdict]??dd.right)}),d.summary?(0,i.jsx)(bd,{text:d.summary,compact:!0}):null,d.explanation?(0,i.jsx)(bd,{text:d.explanation,compact:!0}):null,d.earlier?(0,i.jsx)(`span`,{className:`aha-hint`,children:p(`itemCheckEarlier`,{count:d.earlier}).trim()}):null]}):null,d.status===`failed`?(0,i.jsxs)(`div`,{className:`aha-row`,style:{gap:6},children:[(0,i.jsx)(Yu,{error:d.error}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>u?.(d.note??``),children:p(`retry`)})]}):null]}):null,(0,i.jsxs)(`div`,{className:`aha-row aha-itemActions`,children:[j?null:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:!re||w,onClick:ie,children:w?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`span`,{className:`aha-spinner`}),p(`grading`)]}):p(`submit`)}),j&&a?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:a,children:o??p(`continue`)}):null,!j&&a?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:a,children:p(`skip`)}):null]})]})}function Gd({svg:e,plot:t}){let n=(0,r.useMemo)(()=>$c(t?Kc(t):e),[e,t]);return n?(0,i.jsx)(`div`,{className:`aha-itemFigure`,dangerouslySetInnerHTML:{__html:n}}):null}function Kd(e){return e.kind===`choice`?`✔ ${e.answer.toUpperCase()}. ${e.options.find(t=>t.id===e.answer)?.text??``}`:e.kind===`multi`?`✔ ${e.answer.map(e=>e.toUpperCase()).join(`, `)}`:e.kind===`order`?`✔ ${e.answer.map(t=>e.options.find(e=>e.id===t)?.text??t).join(` → `)}`:e.kind===`number`?`✔ ${e.answer}${e.unit?` ${e.unit}`:``}`:e.kind===`blank`?`✔ ${e.answer.join(` / `)}`:``}let qd=[[`thinking`,`prepThinking`],[`writing`,`prepWriting`]];function Jd(e){if(!((e?.thinking??0)>0))return null;let t=qd.findIndex(([t])=>t===e.phase);return qd.map(([e,n],r)=>({name:e,key:n,state:r<t?`done`:r===t?`now`:`next`}))}function Yd({prep:e,label:t,first:n,hand:a=!0}){let{t:o}=v(),[s,c]=(0,r.useState)(()=>performance.now());(0,r.useEffect)(()=>{if(!n)return;let e=setInterval(()=>c(performance.now()),1e3);return()=>clearInterval(e)},[n]);let l=e.phase??`starting`,u=n?Jd(e):null,d=Math.max(0,Math.round(((e.elapsedMs??0)+s-(e.receivedAt??s))/1e3));return(0,i.jsxs)(`div`,{className:`aha-prep`,role:`status`,"aria-live":`polite`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:8,flexWrap:`nowrap`},children:[(0,i.jsx)(`span`,{className:`aha-spinner`}),(0,i.jsx)(`b`,{children:t})]}),n?(0,i.jsx)(`span`,{className:`aha-hint`,children:o(`prepSeconds`,{seconds:d})}):null]}),u?(0,i.jsx)(`ol`,{className:`aha-prepStages`,children:u.map(e=>(0,i.jsx)(`li`,{"data-state":e.state,children:o(e.key)},e.name))}):null,(0,i.jsx)(`div`,{className:`aha-prepNow`,children:l===`writing`?(0,i.jsxs)(i.Fragment,{children:[o(`prepStep`,{n:(e.steps??0)+1}),e.current?(0,i.jsxs)(i.Fragment,{children:[`:`,(0,i.jsx)(`span`,{className:`aha-prepHint`,"data-hand":a?`true`:void 0,children:(0,i.jsx)(hu,{text:e.current})})]}):`…`]}):l===`thinking`?o(`prepThinkingDetail`,{chars:(e.thinking??0).toLocaleString()}):o(`prepStarting`)}),l===`writing`?(0,i.jsx)(`div`,{className:`aha-hint`,children:o(`prepCounts`,{steps:e.steps??0,chars:(e.chars??0).toLocaleString()})}):null]})}let Xd=[.75,1,1.25,1.5,2],Zd=[[`analogy`,`styleAnalogy`],[`visual`,`styleVisual`],[`example`,`styleExample`],[`simpler`,`styleSimpler`],[`deeper`,`styleDeeper`]];function Qd({id:e,kind:t,label:n,anchorId:r,steps:i=[],streaming:a=!1,serverId:o}){return{id:e,kind:t,label:n,anchorId:r,streaming:a,serverId:o,steps:fu(i,`${e}_`).map(e=>({...e,anchorId:r}))}}let $d=e=>{let t=[...String(e??``).replace(/\s+/gu,` `).trim()];return t.length>28?`${t.slice(0,28).join(``)}…`:t.join(``)};function ef({scope:e,title:t,crumb:n,steps:a=[],stream:o=null,asides:s=[],objectives:c=[],language:l,startIndex:u=0,autoplay:d=!0,onPosition:p,onEnded:m,onStreamDone:h,header:g,stageClass:_,recordChecks:y=!0,reveal:b,tour:x=!0,talkKey:T=!0}){let{api:E,t:D,speech:O,settings:k,dsh:A}=v(),ee=w(),te=k.boardTheme===`dark`||k.boardTheme!==`light`&&ee?`dark`:`light`,j=e=>D(Zd.find(([t])=>t===e)?.[1]??`reexplain`),ne=e=>e?D(`correctionOf`,{tag:e}):D(`correction`),re=(e,t)=>[e||D(`challengeLabel`),t?D(`challenge_${t}`):``].filter(Boolean).join(` · `),[ie,ae]=(0,r.useState)(a),[oe,se]=(0,r.useState)(()=>s.map(e=>Qd({id:e.id,kind:e.kind,label:e.kind===`question`?e.question:e.kind===`correction`?ne(e.errorTag):e.kind===`challenge`?re(e.note,e.verdict):D(`reexplainedAs`,{style:j(e.style)}),anchorId:e.anchorStepId,steps:e.steps??[],serverId:e.id}))),ce=(0,r.useRef)([]),[le,M]=C(`classPanel`,!0),[ue,de]=C(`classTourSeen`,!1),[fe,pe]=(0,r.useState)(!1),me=x&&!ue,he=(0,r.useRef)(null),ge=(0,r.useRef)(null),_e=(0,r.useRef)(null),ve=(0,r.useRef)(null),ye=(0,r.useRef)(!1),be=(0,r.useRef)(null),[xe,Se]=(0,r.useState)(!o),[Ce,we]=(0,r.useState)(null),[Te,Ee]=(0,r.useState)(!0),[De,Oe]=(0,r.useState)(!1),[ke,Ae]=(0,r.useState)(null),je=(0,r.useRef)({failures:0,down:!1}),[Me,Ne]=(0,r.useState)(!1),[Pe,Fe]=(0,r.useState)(``),[Ie,Le]=(0,r.useState)(null),[Re,ze]=(0,r.useState)(null),[Be,Ve]=(0,r.useState)(null),He=(0,r.useRef)(new Set),[Ue,We]=(0,r.useState)(!1),[Ge,Ke]=(0,r.useState)(null),[qe,Je]=(0,r.useState)(null),Ye=(0,r.useRef)(0),Xe=(0,r.useRef)(null);Xe.current||=new AbortController,(0,r.useEffect)(()=>()=>Xe.current.abort(),[]),(0,r.useEffect)(()=>{Pd(he.current)},[b]);let N=(0,r.useMemo)(()=>{let e=[];for(let t of ie){e.push(t);for(let n of oe)n.anchorId===t.id&&e.push(...n.steps)}return e},[ie,oe]),Ze=(0,r.useMemo)(()=>{let e=oe.find(e=>e.streaming),t=e?N.findIndex(t=>t.id===e.anchorId):-1;if(t<0)return null;let n=t+1;for(;n<N.length&&N[n].aside;)n+=1;return n},[N,oe]),Qe=(0,r.useMemo)(()=>Ze===null?N:N.slice(0,Ze),[N,Ze]),$e=(0,r.useRef)(null);$e.current=e=>{if(je.current.down)return;let t=Nt(je.current.failures,e);je.current.failures=t.failures,t.stop&&(je.current.down=!0,O.configure({engine:`off`}),Ae({engine:k.voiceEngine??`browser`,...t.stop,dismissed:!1}))};let et=(0,r.useMemo)(()=>{let e=ie[Math.min(u,ie.length-1)]?.id,t=e?N.findIndex(t=>t.id===e):-1;return Pu({speech:O,onChange:we,onNarration:e=>$e.current(e),startIndex:t>=0?t:u})},[O]);(0,r.useEffect)(()=>()=>et.dispose(),[et]),(0,r.useEffect)(()=>{et.setSteps(Qe,{done:xe&&Ze===null})},[et,Qe,xe,Ze]);let tt=De||ke?`off`:k.voiceEngine??`browser`;(0,r.useEffect)(()=>{O.configure({engine:tt,voiceId:k.voiceId||void 0,language:l})},[O,tt,k.voiceId,l]),(0,r.useEffect)(()=>{et.setRate(k.voiceRate??1)},[et,k.voiceRate]);let[nt,rt]=(0,r.useState)(null);(0,r.useEffect)(()=>{if(!o)return;let e=new AbortController;return Se(!1),E.follow({job:o},{signal:e.signal,onPartial:e=>ae(t=>{let n=new Set(t.map(e=>e.id)),r=e.filter(e=>!n.has(e.id));return r.length?[...t,...r]:t}),onPreview:(e,t)=>{if(e?.phase===`repairing`){rt(null),Se(!0);return}rt(e?.phase?{...e,elapsedMs:t?.elapsedMs??0,receivedAt:performance.now()}:null)}}).then(e=>{let t=e?.board??e?.item?.board??e;t?.steps?.length&&ae(ce.current.length?Qt(t.steps,ce.current).steps:t.steps),rt(null),Se(!0),h?.(e)}).catch(t=>{e.signal.aborted||(rt(null),ae(e=>en(e)),Je(t),Se(!0))}),()=>e.abort()},[o]);let it=(0,r.useRef)(!1);(0,r.useEffect)(()=>{!d||it.current||!N.length||me||(it.current=!0,et.play())},[N.length,d,et,me]),(0,r.useEffect)(()=>{me&&N.length&&pe(!0)},[me,N.length>0]);let at=()=>{pe(!1),de(!0)},ot=Ce?.index??0,[st,ct]=(0,r.useState)(null);(0,r.useEffect)(()=>{ct(e=>Lu(N,ot,e))},[ot,N]);let lt=Math.max(0,N.findIndex(e=>e.id===st)),ut=Ce?.status===`ended`&&xe,dt=(0,r.useRef)(!1);(0,r.useEffect)(()=>{ut&&!dt.current&&(dt.current=!0,m?.()),ut||(dt.current=!1)},[ut]),(0,r.useEffect)(()=>{let e=e=>{Ld(e.target)||(e.key===` `?(e.preventDefault(),et.toggle()):e.key===`ArrowRight`?et.next():e.key===`ArrowLeft`?et.prev():T&&!fe&&Id(e)&&!e.repeat&&(e.preventDefault(),_e.current?_e.current.press(e.timeStamp):(ve.current={down:e.timeStamp,up:null},M(!0))))},t=e=>{!T||!Id(e)||(ve.current?ve.current.up=e.timeStamp:_e.current?.release(e.timeStamp))};return window.addEventListener(`keydown`,e),window.addEventListener(`keyup`,t),()=>{window.removeEventListener(`keydown`,e),window.removeEventListener(`keyup`,t)}},[et,T,fe]),(0,r.useEffect)(()=>{let e=ve.current;!le||!e||!_e.current||(ve.current=null,_e.current.press(e.down),e.up!==null&&_e.current.release(e.up))},[le]);let ft=(0,r.useCallback)(e=>{for(let t=Math.min(e,N.length-1);t>=0;--t)if(!N[t]?.aside)return N[t]?.id;return ie[0]?.id},[N,ie]),pt=(0,r.useCallback)(e=>{let t=Math.max(0,Math.min(e,N.length-1)),n=N[t]?.aside?ft(t):N[t]?.id;return Math.max(0,ie.findIndex(e=>e.id===n))},[N,ie,ft]);(0,r.useEffect)(()=>{Ce&&p?.(pt(ot))},[ot]),(0,r.useEffect)(()=>{if(!Ie)return;let e=Qe.findIndex(e=>e.id===Ie);if(e>=0){Le(null);let{index:t,status:n}=et.state;(t!==e||n!==`playing`)&&et.seek(e)}},[Qe,Ie,et]);async function mt({endpoint:t,payload:n,kind:r,label:i,anchorIndex:a,onStarted:s,onAdded:c,onFailed:l,onResult:u}){let d=ft(a);Ye.current+=1;let p=`a${Ye.current}`,m=Xe.current.signal,h=!1,g=e=>{let t=Qd({id:p,kind:r,label:i,anchorId:d,steps:e,streaming:!0});se(e=>e.map(e=>e.id===p?{...e,steps:t.steps}:e)),!h&&t.steps.length&&(h=!0,Ne(!1),Le(t.steps[0].id))},_=!1;Je(null);try{let{job:l}=await E.call(t,{...n,scope:f(e,o),stepIndex:pt(a),anchorStepId:d});s?.(),se(e=>[...e,Qd({id:p,kind:r,label:i,anchorId:d,streaming:!0})]),_=!0,c?.(p);let h=[],v=await E.follow({job:l},{signal:m,onPartial:e=>{h.push(...e),g([...h])}});g(v?.steps?.length?v.steps:h),se(e=>e.map(e=>e.id===p?{...e,streaming:!1,serverId:v?.aside?.id}:e)),Ne(!1),u?.(v,p)}catch(e){if(m.aborted)return;se(e=>e.flatMap(e=>e.id===p?e.steps.length?[{...e,steps:en(e.steps),streaming:!1}]:[]:[e])),Ne(!1),r===`question`&&!h&&Fe(e=>e||i),_||l?.(),Je(e)}}async function ht(e){e?.preventDefault();let t=Pe.trim();t&&(ye.current&&ge.current?.blur(),ye.current=!1,et.pause(),Ne(`answering`),await mt({endpoint:`lesson/ask`,payload:{question:t},kind:`question`,label:t,anchorIndex:ot,onStarted:()=>Fe(``)}))}async function gt(e){We(!1),et.pause(),Ne(`reexplaining`),await mt({endpoint:`lesson/reexplain`,payload:{style:e},kind:`reexplain`,label:D(`reexplainedAs`,{style:j(e)}),anchorIndex:Math.max(0,Math.min(ot,N.length-1))})}async function _t(e,t){Ne(`correcting`),await mt({endpoint:`lesson/correct`,payload:{item:{prompt:e.prompt,answer:e.answer},response:t.response,grade:{feedback:t.feedback,errorTag:t.errorTag,wrongStep:t.wrongStep,why:t.why,fix:t.fix}},kind:`correction`,label:ne(t.errorTag),anchorIndex:ot,onAdded:t=>Ve({checkId:e.id,asideId:t}),onFailed:()=>et.answer(e.id)})}(0,r.useEffect)(()=>{!Be||!oe.some(e=>e.id===Be.asideId)||(Ve(null),et.answer(Be.checkId))},[oe,Be,et]);function vt(e){et.pause(),We(!1),Ke({index:Math.max(0,Math.min(e,N.length-1)),note:``})}function yt(t){let n=N[t];if(!n?.aside)return n?{stepId:n.id}:null;let r=oe.find(e=>n.id.startsWith(`${e.id}_`));return!r||r.streaming?null:r.serverId&&e.kind===`lesson`?{stepId:n.id.slice(r.id.length+1),asideId:r.serverId}:{step:{id:n.id,say:n.say,ops:n.ops.map(({fixed:e,...t})=>t)}}}async function bt(e){if(e?.preventDefault(),!Ge)return;let t=yt(Ge.index),n=Ge.note.trim();Ke(null),t&&(et.pause(),Ne(`checking`),await mt({endpoint:`lesson/challenge`,payload:{target:t,note:n},kind:`challenge`,label:re(n),anchorIndex:ot,onResult:(e,t)=>{se(r=>r.map(r=>r.id===t?{...r,label:re(n,e?.verdict)}:r));let r=Array.isArray(e?.fixes)?e.fixes:[];r.length&&(e.target?.main?(ce.current.push(...r),ae(e=>Qt(e,r).steps)):e.target?.asideId?se(t=>t.map(t=>t.serverId===e.target.asideId?{...t,steps:Qt(t.steps,$t(r,`${t.id}_`)).steps}:t)):se(e=>e.map(e=>({...e,steps:Qt(e.steps,r).steps}))))}}))}function xt(){et.pause(),M(!0),setTimeout(()=>ge.current?.focus(),0)}let St=pt(ot),Ct=(0,r.useMemo)(()=>Fu(ie,St,c.length,Ce?.status===`ended`&&xe),[ie,St,c.length,Ce?.status,xe]),wt=(0,r.useMemo)(()=>Iu(N,Math.max(lt,ot),oe),[N,lt,ot,oe]);(0,r.useEffect)(()=>{let e=be.current;e&&(e.scrollTop=e.scrollHeight)},[wt.length,le]);let Tt=Ce?.step,Et=Ce?.status===`check`?Tt?.check:null,Dt=(0,r.useRef)(null),[Ot,kt]=(0,r.useState)(0);(0,r.useLayoutEffect)(()=>{let e=Dt.current;if(!e){kt(0);return}let t=()=>kt(Math.max(0,(e.offsetParent?.clientHeight??0)-e.offsetTop));t();let n=typeof ResizeObserver==`function`?new ResizeObserver(t):null;return n?.observe(e),()=>n?.disconnect()},[Et?.id]);let At=(0,r.useMemo)(()=>cu(Tt?.say),[Tt?.say]),jt=At[Math.min(Ce?.sentence??0,At.length-1)]??``;function Mt(t){ze({checkId:Et?.id,result:t}),!(!y||e.kind!==`lesson`)&&E.call(`lesson/record`,{courseId:e.courseId,lessonId:e.lessonId,conceptIds:Et?.conceptIds??[],evidence:{kind:`check`,score:t.score,correct:t.correct===!0,confidence:t.confidence,hintsUsed:t.hintsUsed,timeMs:t.timeMs,expectedMs:4e4,errorTag:t.errorTag},...Tt?.id&&!Tt.aside?{source:{kind:`check`,courseId:e.courseId,lessonId:e.lessonId,stepId:Tt.id},response:t.given??t.response??``,sig:fn(Et)}:{}}).catch(()=>void 0)}let Pt=Ce?.status??`idle`,Ft=(Pt===`buffering`||!N.length&&!xe)&&!qe,It=N.length+ +!xe,Lt=oe.find(e=>e.streaming),Rt=Me===`answering`||Lt?.kind===`question`?D(`answering`):Me===`correcting`||Lt?.kind===`correction`?D(`correcting`):Me===`checking`||Lt?.kind===`challenge`&&!Lt.steps.length?D(`checkingStep`):Me===`reexplaining`||Lt?D(`generating`):N.length?D(`bufferingLesson`):D(`preparingLesson`),zt=S(Ft&&!Me&&!Lt&&!xe,3e3)&&!!nt,Vt=Ct?Ct.filter(e=>e===`done`).length:0,Ht=!!Lt||!!Me,Ut=Et?.kind===`work`&&Re?.checkId===Et.id&&!Re.result.correct&&!!Re.result.response?.trim();function Wt(){if(Et){if(Ut){if(He.current.has(Et.id))return;He.current.add(Et.id),_t(Et,Re.result);return}et.answer(Et.id)}}function Gt({replay:e}){je.current={failures:0,down:!1},Ae(null),Oe(!1),O.configure({engine:k.voiceEngine??`browser`}),e&&(Pt===`playing`||Pt===`paused`)&&et.seek(ot)}let Kt=De||!!ke,qt=!ke||ke.dismissed?null:ke.engine===`cloud`?D(`voiceDownCloud`,{reason:Ju(D,ke)}):D(`voiceDownSystem`,{reason:Ju(D,ke)});return(0,i.jsxs)(`div`,{ref:he,className:`aha-class`,"data-panel":le?`open`:`closed`,children:[(0,i.jsxs)(`div`,{className:`aha-classBar`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:0},children:[n?(0,i.jsx)(`span`,{className:`aha-crumb`,children:n}):null,(0,i.jsx)(`span`,{className:`aha-cardTitle`,children:t})]}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[x?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,title:D(`tourReplay`),"aria-label":D(`tourReplay`),onClick:()=>{et.pause(),pe(!0)},children:`?`}):null,typeof g==`function`?g({steps:N}):g]})]}),(0,i.jsxs)(`div`,{className:`aha-classBody`,children:[(0,i.jsxs)(`div`,{className:`aha-classMain`,children:[(0,i.jsxs)(`div`,{className:`aha-stage ${_??``}`,children:[(0,i.jsx)(ju,{steps:N,position:Ce?{index:Ce.index,op:Ce.op,progress:Ce.progress,now:Ce.now}:{index:0,op:0,progress:0},theme:te,font:k.boardFont===`standard`?`standard`:`hand`,view:k.boardView===`pages`?`pages`:`canvas`,buffering:(Ft||!!Me)&&!zt,bufferingLabel:Rt,onInteract:()=>et.pause(),cover:Et?Ot:0}),zt?(0,i.jsx)(Yd,{prep:nt,label:Rt,first:!N.length,hand:k.boardFont!==`standard`}):null,Et?(0,i.jsxs)(`div`,{ref:Dt,className:`aha-checkCard`,children:[(0,i.jsx)(`div`,{className:`aha-spread`,children:(0,i.jsx)(`b`,{children:D(`checkTitle`)})}),(0,i.jsx)(Wd,{item:Et,language:l,onResult:Mt,onContinue:Wt,continueLabel:Ut?D(`seeCorrection`):void 0,keyboard:!0})]}):null]}),Te&&jt?(0,i.jsx)(`div`,{className:`aha-caption`,children:(0,i.jsx)(hu,{text:jt})}):(0,i.jsx)(`div`,{className:`aha-caption`}),(0,i.jsx)(Yu,{error:qe,style:{textAlign:`center`}}),Ge?(0,i.jsxs)(`form`,{className:`aha-challengeBox`,onSubmit:bt,children:[(0,i.jsx)(`b`,{children:Ge.index===ot?D(`challengeTitle`):D(`challengeTitleStep`,{n:Ge.index+1,text:$d(N[Ge.index]?.say)})}),(0,i.jsx)(`textarea`,{className:`aha-textarea`,rows:2,autoFocus:!0,value:Ge.note,placeholder:D(`challengePlaceholder`),onChange:e=>{let t=e.currentTarget.value;Ke(e=>e&&{...e,note:t})},onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing&&bt(e),e.key===`Escape`&&Ke(null)}}),(0,i.jsxs)(`div`,{className:`aha-challengeActions`,children:[(0,i.jsx)(Hd,{onStart:()=>et.pause(),onText:e=>Ke(t=>t&&{...t,note:t.note.trim()?`${t.note.trimEnd()} ${e}`:e})}),(0,i.jsx)(`span`,{className:`aha-challengeHint`,children:D(`challengeHint`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>Ke(null),children:D(`cancel`)}),(0,i.jsx)(`button`,{type:`submit`,className:`aha-btn`,"data-kind":`primary`,disabled:!yt(Ge.index),children:D(`challengeSend`)})]})]}):null,qt?(0,i.jsxs)(`div`,{className:`aha-voiceNote`,role:`status`,children:[(0,i.jsxs)(`span`,{className:`aha-voiceNoteText`,children:[`🔇 `,qt]}),(0,i.jsxs)(`span`,{className:`aha-voiceNoteActions`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>Gt({replay:!0}),children:D(`retry`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>Bt(A,`settings`),children:D(`openSettings`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>Ae(e=>e&&{...e,dismissed:!0}),title:D(`close`),"aria-label":D(`close`),children:`×`})]})]}):null,(0,i.jsxs)(`div`,{className:`aha-controls`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>et.prev(),title:D(`prevStep`),"aria-label":D(`prevStep`),children:`⏮`}),(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:()=>et.toggle(),disabled:!N.length,"aria-label":D(Pt===`playing`?`pause`:`play`),children:[Pt===`playing`?`⏸`:`▶`,` `,D(Pt===`playing`?`pause`:`play`)]}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>et.next(),title:D(`nextStep`),"aria-label":D(`nextStep`),children:`⏭`}),(0,i.jsx)(`span`,{className:`aha-tag`,children:D(`stepOf`,{current:Math.min(ot+1,Math.max(1,N.length)),total:Math.max(It,1)})}),(0,i.jsx)(`select`,{className:`aha-select`,style:{width:`auto`},value:Ce?.rate??1,onChange:e=>et.setRate(Number(e.currentTarget.value)),"aria-label":D(`speed`),children:Xd.map(e=>(0,i.jsxs)(`option`,{value:e,children:[e,`×`]},e))}),(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":!Kt,onClick:()=>ke?Gt({replay:!1}):Oe(e=>!e),children:Kt?`🔇 ${D(`voiceOff`)}`:`🔊 ${D(`voiceOn`)}`}),(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"data-active":Te,onClick:()=>Ee(e=>!e),children:[`CC `,D(`captions`)]}),(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"data-tour":`raise`,onClick:xt,disabled:!N.length,title:T?D(`raiseHandKey`):void 0,children:[`✋ `,D(`raiseHand`)]}),(0,i.jsxs)(`span`,{style:{position:`relative`},children:[(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"data-tour":`reexplain`,onClick:()=>We(e=>!e),disabled:!N.length,children:[`🔄 `,D(`reexplain`)]}),Ue?(0,i.jsx)(`div`,{className:`aha-card`,style:{position:`absolute`,bottom:`110%`,left:0,zIndex:10,padding:6,gap:2,minWidth:140},children:Zd.map(([e,t])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,style:{justifyContent:`flex-start`},onClick:()=>gt(e),children:D(t)},e))}):null]}),(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"data-tour":`challenge`,"aria-expanded":!!Ge,onClick:()=>Ge?Ke(null):vt(ot),disabled:!N.length||Ht,children:[`🧐 `,D(`challenge`)]}),le?null:(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"aria-expanded":!1,onClick:()=>M(!0),children:[`📋 `,D(`showPanel`)]})]})]}),le?(0,i.jsxs)(`aside`,{className:`aha-panel`,"aria-label":D(`panelTitle`),children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`b`,{children:c.length?D(`lessonGoals`):D(`transcript`)}),(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:6},children:[c.length&&Ct?(0,i.jsxs)(`span`,{className:`aha-tag`,children:[Vt,`/`,c.length]}):null,(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>M(!1),title:D(`hidePanel`),"aria-label":D(`hidePanel`),children:`›`})]})]}),c.length?(0,i.jsx)(`ol`,{className:`aha-goals`,children:c.map((e,t)=>(0,i.jsxs)(`li`,{"data-state":Ct?.[t]??`plain`,children:[(0,i.jsx)(`span`,{className:`aha-goalMark`,"aria-hidden":`true`,children:Ct?.[t]===`done`?`✓`:t+1}),(0,i.jsx)(`span`,{children:e})]},t))}):null,c.length?(0,i.jsx)(`b`,{className:`aha-panelHead`,children:D(`transcript`)}):null,(0,i.jsx)(`div`,{ref:be,className:`aha-transcript`,role:`list`,children:wt.map(e=>(0,i.jsxs)(`div`,{role:`listitem`,className:`aha-lineRow`,"data-aside":e.aside?`true`:void 0,children:[(0,i.jsxs)(`button`,{type:`button`,className:`aha-line`,"data-kind":e.kind,"data-current":e.stepIndex===ot?`true`:void 0,disabled:e.stepIndex<0,onClick:()=>et.seek(e.stepIndex),children:[e.kind===`question`?(0,i.jsx)(`span`,{className:`aha-lineTag`,children:`✋`}):e.kind===`reexplain`?(0,i.jsx)(`span`,{className:`aha-lineTag`,children:`🔄`}):e.kind===`correction`?(0,i.jsx)(`span`,{className:`aha-lineTag`,children:`✏️`}):e.kind===`challenge`?(0,i.jsx)(`span`,{className:`aha-lineTag`,children:`🧐`}):null,(0,i.jsx)(`span`,{className:`aha-lineText`,children:(0,i.jsx)(hu,{text:e.text})}),e.pending?(0,i.jsx)(Hu,{}):null]}),e.kind===`say`&&e.stepIndex>=0&&!Ht?(0,i.jsx)(`button`,{type:`button`,className:`aha-lineFlag`,title:D(`challenge`),"aria-label":D(`challengeStep`,{n:e.stepIndex+1}),onClick:()=>vt(e.stepIndex),children:D(`challengeLine`)}):null]},e.key))}),(0,i.jsxs)(`form`,{className:`aha-askBox`,onSubmit:ht,children:[(0,i.jsx)(`textarea`,{ref:ge,className:`aha-textarea`,rows:2,value:Pe,placeholder:D(`askPlaceholder`),disabled:!N.length,onChange:e=>Fe(e.currentTarget.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing?ht(e):e.key===`Escape`&&e.currentTarget.blur()}}),(0,i.jsxs)(`div`,{className:`aha-askActions`,children:[(0,i.jsx)(Hd,{ref:_e,disabled:!N.length,keyHint:T?D(`talkKeyHint`):``,onStart:()=>et.pause(),onText:e=>{ye.current=!0,Fe(t=>t.trim()?`${t.trimEnd()} ${e}`:e),ge.current?.focus()}}),(0,i.jsx)(`button`,{type:`submit`,className:`aha-btn`,"data-kind":`primary`,disabled:!Pe.trim()||Ht,children:D(`ask`)})]})]})]}):null]}),fe?(0,i.jsx)(Vu,{root:he,onDone:at}):null]})}let tf=[[`explain`,`modeExplain`,`💡`],[`solve`,`modeSolve`,`🧮`],[`visualize`,`modeVisualize`,`📈`]];function nf({draftMode:e,draftRequest:t,draftMaterials:n,token:a}){let{api:o,t:s}=v(),c=y(()=>o.call(`items/list`,{kind:`assist`}),[]),[l,u]=(0,r.useState)(tf.some(([t])=>t===e)?e:`explain`),[d,f]=(0,r.useState)(t??``),[p,m]=(0,r.useState)(Array.isArray(n)?n:[]),[h,g]=(0,r.useState)(!1),[_,b]=(0,r.useState)(null),[S,C]=(0,r.useState)(null),w=x(a);async function T(e=d){let t=e.trim();if(!t)return;C(null);let n=_?.threadId??E(`thd`);_?.stream&&!_.done&&o.cancel(_.stream);try{let{job:e}=await o.call(`assist/ask`,{mode:l,request:t,materialIds:p,threadId:_?.threadId,newThreadId:_?.threadId?void 0:n});b(r=>({threadId:n,turn:r?r.turn+1:0,stream:e,done:!1,steps:[],title:t.slice(0,80),language:void 0,key:`${n}:${Date.now()}`})),f(``)}catch(e){C(e)}}(0,r.useEffect)(()=>{w&&t&&T(t)},[]);async function D(e){C(null);try{let{item:t}=await o.call(`items/get`,{kind:`assist`,id:e}),n=t.turns.length-1;b({threadId:t.id,turn:n,stream:null,steps:t.turns[n]?.board?.steps??[],title:t.turns[n]?.request??t.title,language:t.language,key:`${t.id}:${n}:open`,opened:Date.now()})}catch(e){C(e)}}return(0,i.jsxs)(`div`,{className:`aha-page`,"data-wide":`true`,children:[(0,i.jsxs)(`div`,{className:`aha-split`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{minHeight:0},children:[_?(0,i.jsx)(ef,{scope:{kind:`thread`,id:_.threadId,turn:_.turn},title:_.title,steps:_.steps,stream:_.stream,language:_.language,recordChecks:!1,reveal:_.opened,onStreamDone:e=>{b(t=>t?.stream?.id===_.stream?.id?{...t,done:!0,turn:Number.isInteger(e?.turn)?e.turn:t.turn}:t),c.reload()}},_.key):(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:s(`assistTitle`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:s(`assistHint`)})]}),(0,i.jsxs)(`div`,{className:`aha-composer`,children:[(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:6},children:tf.map(([e,t,n])=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"data-active":l===e,onClick:()=>u(e),children:[n,` `,s(t)]},e))}),(0,i.jsx)(`textarea`,{value:d,placeholder:s(_?`followUp`:`assistPlaceholder`),onChange:e=>f(e.currentTarget.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&T()}}),(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>g(!0),children:p.length?s(`attached`,{count:p.length}):s(`attach`)}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[_?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>b(null),children:s(`newThread`)}):null,(0,i.jsx)(Hd,{onText:e=>f(t=>t.trim()?`${t.trimEnd()} ${e}`:e)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:!d.trim(),onClick:()=>T(),children:s(`ask`)})]})]})]}),(0,i.jsx)(Yu,{error:S})]}),(0,i.jsxs)(`aside`,{className:`aha-col`,style:{minHeight:0,overflow:`auto`},children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:s(`history`)}),c.loading&&!c.value?(0,i.jsx)(Hu,{}):(c.value??[]).map(e=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-option`,onClick:()=>D(e.id),children:[(0,i.jsx)(`b`,{children:e.title}),(0,i.jsx)(`small`,{children:new Date(e.updatedAt).toLocaleString()})]},e.id))]})]}),h?(0,i.jsx)(ed,{selected:p,onChange:m,onClose:()=>g(!1)}):null]})}Object.freeze({pInit:.2,pTransit:.15,pSlip:.1,pGuess:.2}),Object.freeze([{id:`struggling`,min:0},{id:`learning`,min:.4},{id:`proficient`,min:.7},{id:`mastered`,min:.9}]);let rf=(e,t,n)=>Math.min(n,Math.max(t,e));function af(e){return Math.round(rf(Number(e?.pKnown)||0,0,1)*100)}Object.freeze([`none`,`weak`,`learning`,`proficient`,`mastered`]);function of(e){return!e||!e.attempts&&!e.history?.length?`none`:sf(af(e))}function sf(e){let t=Number(e);return Number.isFinite(t)?t>=90?`mastered`:t>=70?`proficient`:t>=40?`learning`:`weak`:`none`}let cf=Object.freeze({none:`stageNone`,weak:`stageWeak`,learning:`stageLearning`,proficient:`stageProficient`,mastered:`stageMastered`});function lf(e){let t=e.filter(Boolean),n=t.length?t.reduce((e,t)=>e+(Number(t.score)||0),0)/t.length:0,r=0,i=0;for(let e of t)r=e.correct?r+1:0,i=Math.max(i,r);return{answered:t.length,correct:t.filter(e=>e.correct).length,accuracy:n,stars:n>=.9?3:n>=.6?2:1,streak:r,bestStreak:i}}function uf(e,{lessonId:t,unitId:n,nextLessonId:r}={}){let i=e?.action;return i===`remediate`?t?{kind:`relearn`,lessonId:t}:{kind:`review`}:i===`review`?{kind:`review`}:i===`challenge`&&n?{kind:`quiz`,unitId:n}:r?{kind:`next`,lessonId:r}:{kind:`course`}}function df(e,t){let n=(e.concepts??[]).map(e=>t?.concepts?.[e.id]);if(!n.some(e=>of(e)!==`none`))return{stage:`none`,percent:0};let r=Math.round(n.reduce((e,t)=>e+af(t??{pKnown:.2}),0)/n.length);return{stage:sf(r),percent:r}}function ff(e,t,{now:n=Date.now(),mistakes:r=0}={}){let i=Ye(e),a=Object.entries(t?.reviews??{}).filter(([e,t])=>i.has(e)&&Date.parse(t?.dueAt)<=n).length;if(a||r)return{kind:`review`,count:a,...r?{mistakes:r}:{}};let o=[...i.values()].map(e=>({concept:e,state:t?.concepts?.[e.id]})).filter(e=>of(e.state)===`weak`).sort((e,t)=>e.state.pKnown-t.state.pKnown)[0];if(o)return{kind:`practice`,lessonId:o.concept.lessonId,concept:o.concept.name};let s=Ze(e,t);return s?{kind:`lesson`,lessonId:s.lesson.id,title:s.lesson.title}:{kind:`done`,unitId:e.units?.at(-1)?.id??null}}function pf(e,t=Date.now()){return(Array.isArray(e)?e:[]).filter(e=>!e.resolvedAt&&Date.parse(e.dueAt)<=t).length}function mf(e,t,n=Date.now()){let r=ln(new Date(t)),i=ln(new Date(n));if(r===i)return e(`dayToday`);if(r===dn(i,1))return e(`dayTomorrow`);let a=un(r);return e(`monthDay`,{month:a.getMonth()+1,day:a.getDate()})}function hf(e,t,n=Date.now()){return t.resolvedAt?e(`mistakeResolvedOn`,{day:mf(e,t.resolvedAt,n)}):Date.parse(t.dueAt)<=n?e(`mistakeDueNow`):e(`mistakeDueOn`,{day:mf(e,t.dueAt,n)})}let gf=[[`outline`,`tabOutline`],[`practice`,`tabPractice`],[`sheets`,`tabSheets`],[`projects`,`tabProjects`],[`progress`,`tabProgress`]];function _f({courseId:e,tab:t=`outline`}){let{api:n,t:a,navigate:o,toast:s}=v(),c=y(()=>n.call(`course/get`,{courseId:e}),[e]),[l,u]=(0,r.useState)(t===`cards`?`practice`:t),[d,f]=(0,r.useState)(!1),[p,m]=(0,r.useState)(!1),[g,_]=(0,r.useState)(!1),b=c.value?.course,x=c.value?.progress,S=c.value?.ready?.cards,C=c.value?.mistakes,w=(0,r.useMemo)(()=>b?.units?N(b,x):null,[b,x]),T=(0,r.useMemo)(()=>b?.units?Ze(b,x):null,[b,x]),E=(0,r.useMemo)(()=>b?.units?ff(b,x,{mistakes:pf(C)}):null,[b,x,C]);if(c.loading&&!c.value)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Hu,{label:a(`loading`)})});if(!b)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Yu,{error:c.error})});if(b.status!==`ready`)return o(`craft`,{courseId:e},{replace:!0}),null;let D=e=>af(x?.concepts?.[e]??{pKnown:.2}),O=e=>x?.lessons?.[e]?.status??`new`;async function k(t){m(!1);try{let r=await n.call(`course/export`,{courseId:e,includeProgress:t});h(r.fileName,r.json)}catch(e){s(Ju(a,e))}}return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4,flex:1,minWidth:`min(260px, 100%)`},children:[(0,i.jsxs)(`div`,{className:`aha-row`,style:{flexWrap:`nowrap`},children:[(0,i.jsx)(`span`,{style:{fontSize:30},children:b.emoji}),(0,i.jsx)(`h2`,{className:`aha-title`,children:b.title})]}),b.subtitle?(0,i.jsx)(`p`,{className:`aha-subtitle`,children:b.subtitle}):null,w?(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4,maxWidth:480},children:[(0,i.jsx)(Uu,{value:w.percent}),(0,i.jsxs)(`span`,{className:`aha-hint`,children:[a(`lessonsCount`,w),` · `,a(`minutesLeft`,{minutes:w.minutesLeft})]})]}):null]}),(0,i.jsxs)(`div`,{className:`aha-row`,style:{position:`relative`},children:[T?(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:()=>o(`lesson`,{courseId:e,lessonId:T.lesson.id}),children:[(0,i.jsx)(Ht,{name:`play`,size:14}),a(`continueLearning`)]}):null,(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>f(e=>!e),children:`⋯`}),d?(0,i.jsxs)(`div`,{className:`aha-card`,style:{position:`absolute`,right:0,top:`110%`,zIndex:20,padding:6,gap:2,minWidth:180},onMouseLeave:()=>f(!1),children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,style:{justifyContent:`flex-start`},onClick:()=>{f(!1),o(`craft`,{courseId:e,edit:!0})},children:a(`editOutline`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,style:{justifyContent:`flex-start`},onClick:()=>{f(!1),o(`craft`,{courseId:e,edit:!0,add:!0})},children:a(`addMaterials`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,style:{justifyContent:`flex-start`},onClick:()=>{f(!1),m(!0)},children:a(`exportPack`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,style:{justifyContent:`flex-start`},onClick:async()=>{f(!1),await n.call(`course/update`,{courseId:e,archived:!b.archived}),c.reload()},children:b.archived?a(`unarchive`):a(`archive`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,style:{justifyContent:`flex-start`,color:`var(--aha-bad)`},onClick:()=>{f(!1),_(!0)},children:a(`deleteCourse`)})]}):null]})]}),E?(0,i.jsx)(vf,{step:E,courseId:e}):null,(0,i.jsx)(`div`,{className:`aha-tabs`,children:gf.map(([e,t])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-tab`,"data-active":l===e,onClick:()=>u(e),children:a(t)},e))}),l===`outline`?(0,i.jsx)(`div`,{className:`aha-tree`,children:b.units.map((t,n)=>(0,i.jsxs)(`div`,{className:`aha-unit`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`b`,{children:[a(`unitN`,{n:n+1}),` · `,t.title]}),(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:4},children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>o(`sheet`,{courseId:e,unitId:t.id}),children:a(`unitSheet`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>o(`practice`,{courseId:e,unitId:t.id}),children:a(`unitQuiz`)}),(0,i.jsx)(xf,{courseId:e,unitId:t.id,status:S?.units?.[t.id],ghost:!0})]})]}),t.summary?(0,i.jsx)(`p`,{className:`aha-hint`,children:t.summary}):null,t.lectures.map((t,n)=>(0,i.jsxs)(`div`,{className:`aha-lecture`,children:[(0,i.jsxs)(`div`,{className:`aha-hint`,style:{fontWeight:600},children:[a(`lectureN`,{n:n+1}),` · `,t.title]}),t.lessons.map(t=>(0,i.jsxs)(`div`,{className:`aha-lesson`,children:[(0,i.jsx)(`span`,{className:`aha-dot`,"data-state":O(t.id)}),(0,i.jsxs)(`span`,{className:`aha-lessonName`,style:{cursor:`pointer`},onClick:()=>o(`lesson`,{courseId:e,lessonId:t.id}),title:t.summary,children:[(0,i.jsx)(`span`,{children:t.title}),(0,i.jsx)(ad,{sources:(t.sources??[]).filter(e=>b.materialIds?.includes(e.materialId))})]}),t.kind===`remedial`?(0,i.jsx)(`span`,{className:`aha-tag`,children:a(`remedial`)}):null,t.depth?(0,i.jsx)(`span`,{className:`aha-depth`,"data-depth":t.depth,title:a(`depthTitle`),children:a(`depth_${t.depth}`)}):null,(0,i.jsx)(`span`,{className:`aha-hint`,children:a(`estMinutes`,{minutes:t.estMinutes})}),(0,i.jsx)(Sf,{lesson:t,progress:x}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>o(`lesson`,{courseId:e,lessonId:t.id}),children:a(`learn`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>o(`practice`,{courseId:e,lessonId:t.id}),children:a(`practice`)})]},t.id))]},t.id))]},t.id))}):null,l===`outline`&&b.sources?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:a(`courseSources`)}),(0,i.jsx)(sd,{sources:b.sources})]}):null,l===`practice`?(0,i.jsxs)(`div`,{className:`aha-col`,children:[(0,i.jsx)(yf,{courseId:e,course:b,rows:C??[]}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:()=>o(`practice`,{courseId:e,review:!0}),children:a(`startReview`)}),S?.decks?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,disabled:!S.review,onClick:()=>o(`cards`,{courseId:e}),children:S.review?a(`cardReviewDue`,{count:S.review}):a(`cardReviewNone`)}):null]}),b.units.map((t,n)=>(0,i.jsxs)(`div`,{className:`aha-card`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`b`,{children:[a(`unitN`,{n:n+1}),` · `,t.title]}),(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:4},children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>o(`practice`,{courseId:e,unitId:t.id}),children:a(`unitQuiz`)}),(0,i.jsx)(xf,{courseId:e,unitId:t.id,status:S?.units?.[t.id]})]})]}),(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:6},children:t.lectures.flatMap(e=>e.lessons).map(t=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,onClick:()=>o(`practice`,{courseId:e,lessonId:t.id}),children:t.title},t.id))})]},t.id))]}):null,l===`sheets`?(0,i.jsx)(`div`,{className:`aha-grid`,children:b.units.map((t,n)=>(0,i.jsxs)(`div`,{className:`aha-card`,"data-click":`true`,onClick:()=>o(`sheet`,{courseId:e,unitId:t.id}),children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:a(`unitN`,{n:n+1})}),(0,i.jsx)(`b`,{children:t.title}),(0,i.jsx)(`span`,{className:`aha-tag`,children:c.value.ready.sheets.includes(t.id)?a(`open`):a(`generate`)})]},t.id))}):null,l===`projects`?b.projects?.length?(0,i.jsx)(`div`,{className:`aha-grid`,children:b.projects.map(t=>(0,i.jsxs)(`div`,{className:`aha-card`,"data-click":`true`,onClick:()=>o(`project`,{courseId:e,projectId:t.id}),children:[(0,i.jsx)(`b`,{children:t.title}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t.brief.slice(0,160)}),(0,i.jsx)(`span`,{className:`aha-tag`,children:x?.projects?.[t.id]?.status===`passed`?`✔`:t.kind})]},t.id))}):(0,i.jsx)(Xu,{children:a(`empty`)}):null,l===`progress`?(0,i.jsxs)(`div`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:a(`conceptMastery`)}),(0,i.jsx)(`div`,{className:`aha-col`,style:{gap:4},children:Ge(b).flatMap(({lesson:e})=>e.concepts.map(t=>({concept:t,lesson:e}))).map(({concept:e,lesson:t})=>{let n=x?.concepts?.[e.id],r=of(n);return(0,i.jsxs)(`div`,{className:`aha-spread`,style:{padding:`3px 0`,borderBottom:`1px solid var(--aha-border)`},children:[(0,i.jsxs)(`span`,{children:[e.name,` `,(0,i.jsxs)(`span`,{className:`aha-hint`,children:[`· `,t.title]})]}),(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:8},children:[n?.misconceptions?.length?(0,i.jsxs)(`span`,{className:`aha-tag`,title:n.misconceptions.join(`
272
- `),children:[`⚠ `,n.misconceptions.length]}):null,(0,i.jsx)(`span`,{className:`aha-level`,"data-level":r,children:a(cf[r])}),(0,i.jsx)(ld,{value:D(e.id),stage:r,label:a(cf[r])}),(0,i.jsx)(`span`,{className:`aha-hint`,style:{width:36,textAlign:`right`},children:r===`none`?`—`:`${D(e.id)}%`})]})]},e.id)})})]}):null,p?(0,i.jsx)(Ku,{title:a(`exportPack`),onClose:()=>m(!1),footer:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>k(!1),children:a(`exportPack`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:()=>k(!0),children:a(`exportWithProgress`)})]}),children:(0,i.jsx)(`p`,{className:`aha-hint`,children:b.title})}):null,g?(0,i.jsx)(qu,{danger:!0,text:a(`deleteConfirm`,{title:b.title}),onCancel:()=>_(!1),onConfirm:async()=>{await n.call(`course/remove`,{courseId:e}),o(`courses`,{},{replace:!0})}}):null]})}function vf({step:e,courseId:t}){let{t:n,navigate:r}=v(),a={review:[e.mistakes?e.count?n(`nextStepReviewMistakes`,{mistakes:e.mistakes,count:e.count}):n(`nextStepMistakes`,{count:e.mistakes}):n(`nextStepReview`,{count:e.count}),n(`startReview`),()=>r(`practice`,{courseId:t,review:!0})],practice:[n(`nextStepWeak`,{concept:e.concept}),n(`practiceThis`),()=>r(`practice`,{courseId:t,lessonId:e.lessonId})],lesson:[n(`nextStepLesson`,{title:e.title}),n(`continueLearning`),()=>r(`lesson`,{courseId:t,lessonId:e.lessonId})],done:[n(`nextStepDone`),n(`unitQuiz`),e.unitId?()=>r(`practice`,{courseId:t,unitId:e.unitId}):null]}[e.kind];if(!a)return null;let[o,s,c]=a;return(0,i.jsxs)(`div`,{className:`aha-card aha-nextStep`,"data-kind":e.kind,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:2,flex:1,minWidth:200},children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:n(`nextStepTitle`)}),(0,i.jsx)(`b`,{children:o})]}),c?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:c,children:s}):null]})}function yf({courseId:e,course:t,rows:n}){let{t:a,navigate:o}=v(),[s,c]=(0,r.useState)(!1),l=Date.now(),u=n.filter(e=>!e.resolvedAt),d=n.filter(e=>e.resolvedAt),f=pf(n,l),p=u.find(e=>Date.parse(e.dueAt)>l),m=[[f,`mistakeCountDue`],[u.length,`mistakeCountOpen`],[d.length,`mistakeCountResolved`]].filter(([e])=>e).map(([e,t])=>a(t,{count:e})).join(` · `);return(0,i.jsxs)(`section`,{className:`aha-card aha-mistakeBook`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:2,flex:1,minWidth:`min(220px, 100%)`},children:[(0,i.jsx)(`b`,{children:a(`mistakeBook`)}),(0,i.jsx)(`span`,{className:`aha-hint`,children:m||a(`mistakeEmpty`)})]}),u.length?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":f?`primary`:void 0,disabled:!f,onClick:()=>o(`practice`,{courseId:e,mistakes:!0}),children:f?a(`practiceMistakesDue`,{count:f}):a(`mistakeDueOn`,{day:mf(a,p.dueAt,l)})}):null]}),u.length?(0,i.jsx)(`ul`,{className:`aha-mistakeList`,children:(s?u:u.slice(0,5)).map(e=>(0,i.jsx)(bf,{row:e,course:t,now:l},`${e.key}~${e.sig}`))}):null,u.length>5?(0,i.jsx)(`div`,{children:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>c(e=>!e),children:s?a(`mistakeShowFewer`):a(`mistakeShowAll`,{count:u.length})})}):null,d.length?(0,i.jsxs)(`details`,{className:`aha-mistakeResolved`,children:[(0,i.jsx)(`summary`,{children:a(`mistakeResolvedList`,{count:d.length})}),(0,i.jsx)(`ul`,{className:`aha-mistakeList`,children:d.map(e=>(0,i.jsx)(bf,{row:e,course:t,now:l},`${e.key}~${e.sig}`))})]}):null]})}function bf({row:e,course:t,now:n}){let{t:r}=v(),a=e.source?.kind===`quiz`?t.units.findIndex(t=>t.id===e.unitId):-1,o=e.source?.kind===`quiz`?`${r(`mistakeFrom_quiz`)} · ${a>=0?`${r(`unitN`,{n:a+1})} ${t.units[a].title}`:``}`:`${r(e.source?.kind===`check`?`mistakeFrom_check`:`mistakeFrom_practice`)} · ${Je(t,e.lessonId)?.lesson.title??``}`,s=!e.resolvedAt&&Date.parse(e.dueAt)<=n;return(0,i.jsxs)(`li`,{className:`aha-mistakeRow`,"data-due":s?`true`:void 0,children:[(0,i.jsx)(bd,{text:e.prompt,compact:!0,className:`aha-mistakePrompt`}),e.answer?(0,i.jsx)(bd,{text:r(`mistakeLastAnswer`,{answer:e.answer}),compact:!0,className:`aha-mistakeAnswer`}):null,(0,i.jsxs)(`div`,{className:`aha-mistakeMeta`,children:[(0,i.jsx)(`span`,{children:o}),e.figure?(0,i.jsx)(`span`,{children:r(`mistakeFigure`)}):null,(0,i.jsx)(`span`,{children:r(`mistakeWrongTimes`,{count:e.wrong})}),(0,i.jsx)(`span`,{className:`aha-mistakeWhen`,"data-due":s?`true`:void 0,children:hf(r,e,n)})]})]})}function xf({courseId:e,unitId:t,status:n,ghost:r=!1}){let{t:a,navigate:o}=v(),s=n?.due??0;return(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":r?`ghost`:void 0,title:s?a(`unitCardsDueTitle`,{count:s}):void 0,onClick:()=>o(`cards`,{courseId:e,unitId:t}),children:s?a(`unitCardsDue`,{count:s}):a(`unitCards`)})}function Sf({lesson:e,progress:t}){let{t:n}=v(),{stage:r,percent:a}=df(e,t);return(0,i.jsx)(ld,{value:a,stage:r,label:n(cf[r])})}let Cf=[[`all`,`filterAll`],[`active`,`filterActive`],[`done`,`filterDone`],[`archived`,`filterArchived`]];function wf(){let{api:e,t,navigate:n,toast:a}=v(),o=y(()=>e.call(`course/list`),[]),[s,c]=(0,r.useState)(`all`),[l,u]=(0,r.useState)(``),[d,f]=(0,r.useState)(null),p=(0,r.useRef)(null),m=(o.value??[]).filter(e=>s===`archived`?e.archived:e.archived?!1:s===`active`?e.status!==`ready`||e.progress.percent<100:s!==`done`||e.status===`ready`&&e.progress.percent>=100).filter(e=>!l.trim()||`${e.title} ${e.subtitle}`.toLowerCase().includes(l.trim().toLowerCase()));async function h(r){f(null);try{let i=await r.text(),o=await e.call(`course/import`,{json:i});a(t(`courseReady`)),n(`course`,{courseId:o.id})}catch(e){f(e)}}return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:t(`coursesTitle`)}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>p.current?.click(),children:t(`importPack`)}),(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:()=>n(`home`),children:[`+ `,t(`modeCourse`)]}),(0,i.jsx)(`input`,{ref:p,type:`file`,accept:`.json,application/json`,hidden:!0,onChange:e=>{let t=e.currentTarget.files?.[0];t&&h(t),e.currentTarget.value=``}})]})]}),(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:6},children:Cf.map(([e,n])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":s===e,onClick:()=>c(e),children:t(n)},e))}),(0,i.jsx)(`input`,{className:`aha-input`,style:{maxWidth:260},value:l,placeholder:t(`searchCourses`),onChange:e=>u(e.currentTarget.value)})]}),(0,i.jsx)(Yu,{error:d??o.error}),o.loading&&!o.value?(0,i.jsx)(Hu,{label:t(`loading`)}):m.length?(0,i.jsx)(`div`,{className:`aha-grid`,children:m.map(e=>(0,i.jsxs)(`div`,{className:`aha-card`,"data-click":`true`,onClick:()=>n(e.status===`ready`?`course`:`craft`,{courseId:e.id}),children:[(0,i.jsxs)(`div`,{className:`aha-row`,style:{flexWrap:`nowrap`},children:[(0,i.jsx)(`span`,{style:{fontSize:26},children:e.emoji}),(0,i.jsx)(`span`,{className:`aha-cardTitle`,children:e.title})]}),e.subtitle?(0,i.jsx)(`p`,{className:`aha-hint`,children:e.subtitle}):null,e.status===`ready`?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Uu,{value:e.progress.percent}),(0,i.jsxs)(`span`,{className:`aha-hint`,children:[t(`lessonsCount`,e.progress),e.next?` · ${t(`nextUp`,{title:e.next.title})}`:``]})]}):(0,i.jsx)(`span`,{className:`aha-tag`,children:e.status===`intake`?t(`statusIntake`):t(`statusBlueprint`)})]},e.id))}):(0,i.jsx)(Xu,{children:t(`noCourses`)})]})}let Tf=Object.freeze([{maxWidth:210,font:16,line:22,padX:16,padY:11},{maxWidth:220,font:14.5,line:20,padX:14,padY:9},{maxWidth:210,font:13.5,line:19,padX:12,padY:8},{maxWidth:250,font:13.5,line:19,padX:12,padY:7}]),Ef=Object.freeze({x:56,y:10,unit:18,meta:20}),Df=/[⺀-￿]/u;function Of(e,t){let n=0;for(let r of String(e??``))n+=Df.test(r)?t:r===` `?t*.3:t*.58;return n}function kf(e,t,n){let r=Tf[t],i=r.maxWidth-r.padX*2-12,a=Of(e,r.font),o=Math.max(1,Math.ceil(a/i));return{w:Math.ceil(Math.min(r.maxWidth,Math.max(56,a+r.padX*2+12))),h:Math.ceil(o*r.line+r.padY*2+(n?Ef.meta:0))}}function Af(e){let t=[],n=[],r={key:`root`,title:e?.title??``,children:(e?.units??[]).map(e=>({key:e.key,title:e.title,children:(e.lectures??[]).map(e=>({key:e.key,title:e.title,children:(e.lessons??[]).map(e=>({key:e.key,title:e.title,meta:e.meta??null,children:[]}))}))}))},i=new Map,a=[0,0,0,0],o=(e,t)=>{let n=kf(e.title,t,!!e.meta);i.set(e,n),a[t]=Math.max(a[t],n.w);for(let n of e.children)o(n,t+1)};o(r,0);let s=[0];for(let e=1;e<4;e+=1)s[e]=s[e-1]+a[e-1]+Ef.x;let c=0,l=[-1/0,-1/0,-1/0,-1/0],u=`root`,d=(e,r)=>{let{w:a,h:o}=i.get(e),f;if(!e.children.length)f=c+o/2,c+=o+Ef.y;else{let t=e.children.map((e,t)=>(r===0&&t>0&&(c+=Ef.unit),d(e,r+1)));f=(t[0].centre+t[t.length-1].centre)/2;for(let t of e.children)n.push({from:e.key,to:t.key})}let p=f-o/2;return p<l[r]+Ef.y&&(p=l[r]+Ef.y),l[r]=p+o,c=Math.max(c,p+o+Ef.y),t.push({key:e.key,level:r,x:s[r],y:p,w:a,h:o,title:e.title,meta:e.meta??null}),(e.key!==`root`||!e.children.length)&&(u=jf(e)),{centre:p+o/2}};d(r,0);let f=Math.max(...t.map(e=>e.x+e.w)),p=Math.max(...t.map(e=>e.y+e.h)),m=new Map,h=0,g=e=>{m.set(e.key,h++),e.children.forEach(g)};return g(r),t.sort((e,t)=>m.get(e.key)-m.get(t.key)),{nodes:t,links:n,width:f,height:p,last:u}}function jf(e){let t=e;for(;t.children.length;)t=t.children[t.children.length-1];return t.key}function Mf(e,t=``){return{title:e?.title||t,units:(e?.units??[]).map((e,t)=>({key:`u${t}`,title:e.title,lectures:(e.lectures??[]).map((e,n)=>({key:`u${t}.${n}`,title:e.title||`…`,lessons:(e.lessons??[]).map((e,r)=>({key:`u${t}.${n}.${r}`,title:typeof e==`string`?e:e?.title??``}))}))}))}}function Nf(e,t){let n=e.x+e.w,r=e.y+e.h/2,i=t.x,a=t.y+t.h/2,o=(n+i)/2;return`M${n} ${r} C${o} ${r} ${o} ${a} ${i} ${a}`}function Pf({tree:e,live:t=!1,onPick:n,renderMeta:a}){let{t:o}=v(),s=(0,r.useMemo)(()=>Af(e),[e]),c=(0,r.useMemo)(()=>new Map(s.nodes.map(e=>[e.key,e])),[s]),l=(0,r.useRef)(null),[u,d]=(0,r.useState)({width:0,height:0}),[f,p]=(0,r.useState)({x:20,y:20,k:1,animate:!1}),[m,h]=(0,r.useState)(!0),g=(0,r.useRef)({size:u,map:s,pointers:new Map,drag:null});g.current.size=u,g.current.map=s,(0,r.useLayoutEffect)(()=>{let e=l.current;if(!e)return;let t=()=>d(t=>t.width===e.clientWidth&&t.height===e.clientHeight?t:{width:e.clientWidth,height:e.clientHeight});t();let n=typeof ResizeObserver==`function`?new ResizeObserver(t):null;return n?.observe(e),()=>n?.disconnect()},[]);let _=()=>({width:g.current.map.width,height:g.current.map.height}),y=(e,{animate:t=!1,manual:n=!1}={})=>{n&&h(!1),p(n=>({...vl(typeof e==`function`?e(n):e,g.current.size,_(),60),animate:t}))},b=(e=!0)=>y(gl(g.current.size,{x:0,y:-30,width:_().width,height:_().height+30},{margin:20,maxZoom:1}),{animate:e});(0,r.useLayoutEffect)(()=>{if(!u.width||!u.height)return;if(!t){b(!1);return}if(!m)return;let e=c.get(s.last);e&&p(t=>{let n=Math.min(1,Math.max(.55,(u.width-40)/Math.max(1,s.width))),r=Math.min(20,u.width-20-(e.x+e.w)*n),i=(e.y+e.h)*n,a=Math.min(50,u.height-40-i);return t.k===n&&t.x===r&&t.y===a?t:{x:r,y:a,k:n,animate:!0}})},[s,t,m,u.width,u.height]),(0,r.useEffect)(()=>{let e=l.current;if(!e)return;let t=t=>{t.preventDefault();let n=e.getBoundingClientRect(),r=yl(t,n.height);t.ctrlKey||t.metaKey?y(e=>hl(e,t.clientX-n.left,t.clientY-n.top,bl(r.y)),{manual:!0}):y(e=>({...e,x:e.x-(t.shiftKey?r.y:r.x),y:e.y-(t.shiftKey?0:r.y)}),{manual:!0})};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[]);let x=e=>{e.pointerType===`mouse`&&e.button!==0||e.target.closest?.(`.aha-mapBar`)||(g.current.pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),g.current.drag||(g.current.drag={x:e.clientX,y:e.clientY,moved:!1}))},S=e=>{let{pointers:t,drag:n}=g.current,r=t.get(e.pointerId);if(!r||!n)return;let i={x:e.clientX,y:e.clientY};if(t.size===1){if(!n.moved&&Math.hypot(i.x-n.x,i.y-n.y)<5)return;n.moved||l.current?.setPointerCapture?.(e.pointerId),n.moved=!0,t.set(e.pointerId,i),y(e=>({...e,x:e.x+i.x-r.x,y:e.y+i.y-r.y}),{manual:!0});return}let a=[...t.entries()].find(([t])=>t!==e.pointerId)?.[1];if(t.set(e.pointerId,i),!a)return;let o=l.current.getBoundingClientRect(),s={x:(r.x+a.x)/2,y:(r.y+a.y)/2,d:Math.hypot(r.x-a.x,r.y-a.y)},c={x:(i.x+a.x)/2,y:(i.y+a.y)/2,d:Math.hypot(i.x-a.x,i.y-a.y)};n.moved=!0,y(e=>{let t=hl(e,s.x-o.left,s.y-o.top,c.d/Math.max(1,s.d));return{...t,x:t.x+c.x-s.x,y:t.y+c.y-s.y}},{manual:!0})},C=e=>{let t=g.current.drag?.moved;if(g.current.pointers.delete(e.pointerId),g.current.pointers.size||(g.current.drag=null),!t&&n){let t=e.target.closest?.(`[data-pick]`)?.dataset.pick;t&&n(t)}},w=e=>y(t=>hl(t,g.current.size.width/2,g.current.size.height/2,e),{animate:!0,manual:!0});return(0,i.jsxs)(`div`,{className:`aha-map`,children:[(0,i.jsx)(`div`,{ref:l,className:`aha-mapView`,onPointerDown:x,onPointerMove:S,onPointerUp:C,onPointerCancel:C,onDoubleClick:()=>b(),children:(0,i.jsxs)(`div`,{className:`aha-mapWorld`,style:{width:s.width,height:s.height,transform:`translate(${f.x}px, ${f.y}px) scale(${f.k})`,transition:f.animate?`transform .45s ease`:`none`},children:[(0,i.jsx)(`svg`,{className:`aha-mapLinks`,width:s.width,height:s.height,"aria-hidden":`true`,children:s.links.map(e=>{let t=c.get(e.from),n=c.get(e.to);return t&&n?(0,i.jsx)(`path`,{d:Nf(t,n)},`${e.from}>${e.to}`):null})}),s.nodes.map(e=>(0,i.jsxs)(`div`,{className:`aha-mapNode`,"data-level":e.level,"data-pick":n&&e.level===3?e.key:void 0,style:{left:e.x,top:e.y,width:e.w,minHeight:e.h},title:n&&e.level===3?o(`mapPick`):void 0,children:[(0,i.jsx)(`span`,{className:`aha-mapTitle`,children:e.title}),e.meta&&a?(0,i.jsx)(`span`,{className:`aha-mapMeta`,children:a(e.meta)}):null]},e.key))]})}),(0,i.jsxs)(`div`,{className:`aha-mapBar`,role:`toolbar`,"aria-label":o(`mapTools`),children:[t&&!m?(0,i.jsx)(`button`,{type:`button`,className:`aha-mapFollow`,onClick:()=>h(!0),children:o(`mapFollow`)}):null,(0,i.jsx)(`button`,{type:`button`,"aria-label":o(`canvasZoomOut`),title:o(`canvasZoomOut`),onClick:()=>w(1/pl),children:`−`}),(0,i.jsxs)(`button`,{type:`button`,className:`aha-mapZoom`,title:o(`canvasZoomReset`),onClick:()=>y(e=>({...hl(e,g.current.size.width/2,g.current.size.height/2,1/e.k)}),{animate:!0,manual:!0}),children:[Math.round(f.k*100),`%`]}),(0,i.jsx)(`button`,{type:`button`,"aria-label":o(`canvasZoomIn`),title:o(`canvasZoomIn`),onClick:()=>w(pl),children:`+`}),(0,i.jsx)(`button`,{type:`button`,title:o(`canvasFit`),onClick:()=>{h(!1),b()},children:o(`canvasFitShort`)})]})]})}let Ff=[[`intensive`,`paceIntensive`,`paceIntensiveHint`],[`balanced`,`paceBalanced`,`paceBalancedHint`],[`relaxed`,`paceRelaxed`,`paceRelaxedHint`]],If=[[`auto`,`sizeAuto`,`sizeAutoHint`],[`short`,`sizeShort`,`sizeShortHint`],[`standard`,`sizeStandard`,`sizeStandardHint`],[`full`,`sizeFull`,`sizeFullHint`]],Lf=[60,120,180,300,420,600];function Rf({jobId:e,courseId:t,edit:n=!1,add:a=!1}){let{api:o,t:s,navigate:c}=v(),[l,u]=(0,r.useState)(null),[d,f]=(0,r.useState)(`questions`);return(0,r.useEffect)(()=>{if(!e||t)return;let n=new AbortController;return o.follow({job:{id:e,status:`running`}},{signal:n.signal,onProgress:e=>f(e?.label===`research`?`research`:`questions`)}).then(e=>c(`craft`,{courseId:e.courseId},{replace:!0})).catch(e=>{n.signal.aborted||u(e)}),()=>n.abort()},[e,t]),t?(0,i.jsx)(zf,{courseId:t,edit:n,add:a}):(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:s(`craftQuestionsTitle`)}),l?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Yu,{error:l}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>c(`home`),children:s(`back`)})]}):(0,i.jsx)(Hu,{label:s(d===`research`?`researching`:`thinkingQuestions`)})]})}function zf({courseId:e,edit:t,add:n}){let{api:a,t:o,navigate:s}=v(),c=y(()=>a.call(`course/get`,{courseId:e}),[e]),l=b(),u=c.value?.course;return(0,r.useEffect)(()=>{let e=c.value?.jobs?.questions??c.value?.jobs?.blueprint??c.value?.jobs?.confirm;!e||l.running||l.run(null,null,{existing:e}).then(()=>c.reload()).catch(()=>void 0)},[c.value]),(0,r.useEffect)(()=>{u?.status===`ready`&&!l.running&&!t&&s(`course`,{courseId:e},{replace:!0})},[u?.status]),c.loading&&!c.value?(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Hu,{label:o(`loading`)})}):c.error&&!c.value?(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Yu,{error:c.error})}):u?u.status===`intake`?(0,i.jsx)(Bf,{course:u,intake:c.value.intake,job:l,onDone:()=>c.reload()}):(0,i.jsx)(Kf,{course:u,proposal:c.value.proposal,progress:c.value.progress,boards:c.value.ready?.boards??[],job:l,onChange:()=>c.reload(),adding:n}):null}function Bf({course:e,intake:t,job:n,onDone:a}){let{t:o}=v(),s=t?.questionnaire?.questions??[],[c,l]=(0,r.useState)({}),[u,d]=(0,r.useState)(`balanced`),[f,p]=(0,r.useState)(`auto`),[m,h]=(0,r.useState)(180),[g,_]=(0,r.useState)(``),y=(e,t)=>l(n=>{let r=n[e.id]??{choice:[],other:``},i=e.multi?r.choice.includes(t)?r.choice.filter(e=>e!==t):[...r.choice,t]:[t];return{...n,[e.id]:{...r,choice:i}}});async function b(){try{await n.run(`course/intake`,{courseId:e.id,answers:c,timeline:u,size:f,weeklyMinutes:m,deadline:g||void 0}),a()}catch{}}return n.running?n.progress?.label===`questions`?(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:e.goal}),(0,i.jsx)(Wu,{progress:n.progress,label:o(`thinkingQuestions`),onCancel:n.cancel})]}):(0,i.jsx)(Hf,{course:e,job:n,research:t?.research}):(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:o(`craftQuestionsTitle`)}),(0,i.jsx)(`p`,{className:`aha-subtitle`,children:e.goal}),(0,i.jsx)(`p`,{className:`aha-hint`,children:o(`craftQuestionsHint`)}),t?.research?(0,i.jsx)(Vf,{research:t.research}):null]}),s.map((e,t)=>(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsxs)(`div`,{className:`aha-cardTitle`,children:[t+1,`. `,e.prompt]}),(0,i.jsx)(`div`,{className:`aha-grid`,style:{gridTemplateColumns:`repeat(auto-fill,minmax(220px,1fr))`},children:e.options.map(t=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-option`,"data-active":c[e.id]?.choice?.includes(t.id)??!1,onClick:()=>y(e,t.id),children:[(0,i.jsx)(`b`,{children:t.label}),t.detail?(0,i.jsx)(`small`,{children:t.detail}):null]},t.id))}),(0,i.jsx)(`input`,{className:`aha-input`,placeholder:o(`craftOther`),value:c[e.id]?.other??``,onChange:t=>{let n=t.currentTarget.value;l(t=>({...t,[e.id]:{choice:t[e.id]?.choice??[],other:n}}))}})]},e.id)),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`div`,{className:`aha-cardTitle`,children:o(`craftSize`)}),(0,i.jsx)(`div`,{className:`aha-grid`,style:{gridTemplateColumns:`repeat(auto-fill,minmax(180px,1fr))`},children:If.map(([e,t,n])=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-option`,"data-active":f===e,onClick:()=>p(e),children:[(0,i.jsx)(`b`,{children:o(t)}),(0,i.jsx)(`small`,{children:o(n)})]},e))})]}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`div`,{className:`aha-cardTitle`,children:o(`craftPace`)}),(0,i.jsx)(`div`,{className:`aha-grid`,style:{gridTemplateColumns:`repeat(auto-fill,minmax(200px,1fr))`},children:Ff.map(([e,t,n])=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-option`,"data-active":u===e,onClick:()=>d(e),children:[(0,i.jsx)(`b`,{children:o(t)}),(0,i.jsx)(`small`,{children:o(n)})]},e))}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsxs)(`label`,{className:`aha-label`,style:{flex:1,minWidth:220},children:[o(`weeklyMinutes`),(0,i.jsx)(`select`,{className:`aha-select`,value:m,onChange:e=>h(Number(e.currentTarget.value)),children:Lf.map(e=>(0,i.jsx)(`option`,{value:e,children:o(`minutesUnit`,{minutes:e})},e))})]}),(0,i.jsxs)(`label`,{className:`aha-label`,style:{flex:1,minWidth:220},children:[o(`deadline`),(0,i.jsx)(`input`,{className:`aha-input`,type:`date`,value:g,onChange:e=>_(e.currentTarget.value)})]})]})]}),(0,i.jsx)(Yu,{error:n.error}),(0,i.jsx)(`div`,{className:`aha-row`,children:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:b,children:o(`makeBlueprint`)})})]})}function Vf({research:e}){let{t}=v();return e.skipped?(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`researchSkipped`,{reason:t(`researchSkipped_${e.skipped}`)})}):(0,i.jsxs)(`details`,{className:`aha-sources`,children:[(0,i.jsx)(`summary`,{children:t(`researchFound`,{count:e.sources.length})}),(0,i.jsx)(sd,{sources:e.sources})]})}function Hf({course:e,job:t,research:n}){let{t:a}=v(),o=t.preview?.units??[],s=(0,r.useMemo)(()=>Mf(t.preview,e.goal),[t.preview,e.goal]),c=o.reduce((e,t)=>e+t.lectures.reduce((e,t)=>e+t.lessons.length,0),0),l=t.progress?.label===`materials`?`materials`:o.length?`lessons`:`units`,u=[...n?.sources?.length?[[`research`,a(`buildResearch`,{count:n.sources.length})]]:[],[`answers`,a(`buildAnswers`)],...e.materialIds?.length?[[`materials`,a(`buildMaterials`)]]:[],[`units`,a(`buildUnits`)],[`lessons`,c?a(`buildLessonsSoFar`,{count:c}):a(`buildLessons`)]],d=u.findIndex(([e])=>e===l);return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:t.preview?.title||e.goal}),(0,i.jsxs)(`p`,{className:`aha-hint`,children:[a(`designingBlueprint`),` `,a(`keepsRunning`)]})]}),(0,i.jsx)(`ol`,{className:`aha-buildLog`,children:u.map(([e,t],n)=>(0,i.jsxs)(`li`,{"data-state":n<d?`done`:n===d?`current`:`todo`,children:[(0,i.jsx)(`span`,{className:`aha-buildMark`,"aria-hidden":`true`,children:n<d?`✓`:n===d?(0,i.jsx)(`span`,{className:`aha-spinner`}):``}),(0,i.jsx)(`span`,{children:t})]},e))}),o.length?(0,i.jsx)(Pf,{tree:s,live:!0}):null,(0,i.jsx)(`div`,{className:`aha-row`,children:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:t.cancel,children:a(`cancel`)})})]})}function Uf(e){return JSON.parse(JSON.stringify(e??[]))}function Wf(e,t,n){let r=[...e],i=t+n;return i<0||i>=r.length?e:([r[t],r[i]]=[r[i],r[t]],r)}function Gf({course:e,job:t,onDone:n,onClose:a}){let{api:o,t:s}=v(),c=y(()=>o.call(`material/list`),[]),[l,u]=(0,r.useState)([]),[d,f]=(0,r.useState)(!1),[p,m]=(0,r.useState)(``),h=new Map((c.value??[]).map(e=>[e.id,e.title]));async function g(){try{await t.run(`course/add-materials`,{courseId:e.id,materialIds:l,instruction:p.trim()}),n()}catch{}}return(0,i.jsxs)(`section`,{className:`aha-card aha-addMaterials`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`b`,{children:s(`addMaterialsTitle`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:a,children:s(`cancel`)})]}),(0,i.jsx)(`p`,{className:`aha-hint`,children:s(`addMaterialsHint`)}),(0,i.jsxs)(`div`,{className:`aha-row`,style:{gap:6},children:[l.map(e=>(0,i.jsx)(`span`,{className:`aha-tag`,children:h.get(e)??`…`},e)),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>{c.reload(),f(!0)},children:l.length?s(`changeMaterials`):s(`pickMaterials`)})]}),(0,i.jsx)(`input`,{className:`aha-input`,value:p,placeholder:s(`addMaterialsPlaceholder`),"aria-label":s(`addMaterialsPlaceholder`),onChange:e=>m(e.currentTarget.value)}),(0,i.jsx)(`div`,{className:`aha-row`,children:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:!l.length,onClick:g,children:s(`addMaterialsSend`)})}),d?(0,i.jsx)(ed,{selected:l,max:12,exclude:e.materialIds??[],onChange:e=>{u(e),c.reload()},onClose:()=>f(!1)}):null]})}function Kf({course:e,proposal:t,progress:n,boards:a,job:o,onChange:s,adding:c=!1}){let{api:l,t:u,toast:d,navigate:f}=v(),p=e.status===`ready`,[m,h]=(0,r.useState)(()=>Uf(e.units)),[g,_]=(0,r.useState)(e.title),[y,x]=(0,r.useState)(!1),[S,C]=(0,r.useState)(``),[w,T]=(0,r.useState)(!1),[E,D]=(0,r.useState)(null),[O,k]=(0,r.useState)(null),[A,ee]=(0,r.useState)(null),[te,j]=(0,r.useState)(null),[ne,re]=(0,r.useState)(p?`list`:`map`),[ie,ae]=(0,r.useState)(c),[oe,se]=(0,r.useState)(null),ce=(0,r.useRef)(null),le=b();(0,r.useEffect)(()=>{h(Uf(e.units)),_(e.title),x(!1)},[e]);let M=e=>{h(t=>{let n=Uf(t);return e(n),n.filter(e=>e.lectures.length).map(e=>({...e,lectures:e.lectures.filter(e=>e.lessons.length)}))}),x(!0)},ue=(0,r.useMemo)(()=>m.reduce((e,t)=>e+t.lectures.reduce((e,t)=>e+t.lessons.length,0),0),[m]),de=(0,r.useMemo)(()=>m.reduce((e,t)=>e+t.lectures.reduce((e,t)=>e+t.lessons.reduce((e,t)=>e+(t.estMinutes||15),0),0),0),[m]),fe=(0,r.useMemo)(()=>t?.blueprint?.units?Ke(e,t.blueprint):null,[e,t]),pe=e=>!!e.id&&((n?.lessons?.[e.id]?.status??`new`)!==`new`||a.includes(e.id)),me=!!fe||!!te,he=(0,r.useMemo)(()=>({title:g,units:m.map((e,t)=>({key:`u${t}`,title:e.title,lectures:e.lectures.map((e,n)=>({key:`u${t}.${n}`,title:e.title,lessons:e.lessons.map((e,r)=>({key:`u${t}.${n}.${r}`,title:e.title,meta:{depth:e.depth,minutes:e.estMinutes}}))}))}))}),[m,g]),ge=e=>(0,i.jsxs)(i.Fragment,{children:[e.depth?(0,i.jsx)(`span`,{className:`aha-depth`,"data-depth":e.depth,children:u(`depth_${e.depth}`)}):null,(0,i.jsx)(`span`,{children:u(`estMinutes`,{minutes:e.minutes})})]});(0,r.useEffect)(()=>{if(!oe||ne!==`list`)return;let e=ce.current?.querySelector(`[data-path="${oe}"]`);e?.scrollIntoView({block:`center`,behavior:`smooth`}),e?.querySelector(`input`)?.focus({preventScroll:!0});let t=setTimeout(()=>se(null),1700);return()=>clearTimeout(t)},[oe,ne]);async function _e(){T(!0),D(null);try{return await l.call(`course/save-blueprint`,{courseId:e.id,blueprint:{...e,title:g,units:m}}),x(!1),d(u(`saved`)),s(),!0}catch(e){return D(e),!1}finally{T(!1)}}async function ve(t,n){t?.preventDefault();let r=n??S.trim();if(r&&!(y&&!await _e()))try{await o.run(`course/revise`,{courseId:e.id,instruction:r}),C(``),s()}catch{}}async function ye(t,n){D(null);try{await l.call(t,{courseId:e.id}),n&&d(n),s()}catch(e){D(e)}}async function be(t,n,r,i){ee(null);let a=m[t],o=a.lectures[n];j(`${t}.${n}.${r}`);try{let s=await le.run(`course/rework-lesson`,{courseId:e.id,lesson:o.lessons[r],unitTitle:a.title,lectureTitle:o.title,mode:i});M(e=>{e[t].lectures[n].lessons.splice(r,1,...s.lessons)}),d(u(i===`split`?`splitDone`:`deepenDone`))}catch{}finally{j(null)}}async function xe(){if(!(y&&!await _e()))try{await o.run(`course/confirm`,{courseId:e.id}),s()}catch{}}async function Se(){y&&!await _e()||f(`course`,{courseId:e.id})}if(o.running){let t=o.progress?.label===`practice`||o.progress?.label===`projects`?u(`confirming`,{done:o.progress.done,total:o.progress.total}):o.progress?.done?u(`revisingSoFar`,{count:o.progress.done}):u(`revising`);return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`h2`,{className:`aha-title`,children:[e.emoji,` `,e.title]}),(0,i.jsx)(Wu,{progress:o.progress,label:t,onCancel:o.cancel})]})}let Ce=(e,t)=>k({text:e,run:t});return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4,flex:1},children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:u(p?`editOutline`:`blueprintTitle`)}),(0,i.jsxs)(`div`,{className:`aha-row`,style:{flexWrap:`nowrap`},children:[(0,i.jsx)(`span`,{style:{fontSize:28},children:e.emoji}),(0,i.jsx)(`input`,{className:`aha-input aha-title`,style:{border:`none`,padding:`2px 4px`},value:g,disabled:me,onChange:e=>{_(e.currentTarget.value),x(!0)}})]}),e.subtitle?(0,i.jsx)(`p`,{className:`aha-subtitle`,children:e.subtitle}):null,(0,i.jsxs)(`p`,{className:`aha-hint`,children:[u(`lessonsCount`,{done:0,total:ue}),` · `,u(`minutesLeft`,{minutes:de})]})]}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[y?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,disabled:w||me,onClick:_e,children:u(`saveEdits`)}):null,p?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:w||me,onClick:Se,children:u(y?`saveAndBack`:`backToCourse`)}):(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:me,onClick:xe,children:u(`confirmCourse`)})]})]}),e.summary?(0,i.jsx)(`p`,{children:e.summary}):null,fe?(0,i.jsxs)(`section`,{className:`aha-card aha-proposal`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:2},children:[(0,i.jsx)(`b`,{children:u(`proposalTitle`)}),t.materials?.length?(0,i.jsx)(`span`,{className:`aha-hint`,children:u(`proposalMaterials`,{titles:t.materials.map(e=>`《${e.title}》`).join(``)})}):null,t.instruction?(0,i.jsxs)(`span`,{className:`aha-hint`,children:[`“`,t.instruction,`”`]}):null]}),qe(fe)?(0,i.jsx)(`p`,{className:`aha-hint`,children:u(`proposalNoChange`)}):(0,i.jsxs)(`ul`,{className:`aha-diff`,children:[fe.title?(0,i.jsxs)(`li`,{"data-kind":`renamed`,children:[(0,i.jsx)(`span`,{className:`aha-diffTag`,children:u(`diffRenamed`)}),fe.title.from,` → `,fe.title.to]}):null,fe.unitsAdded.map((e,t)=>(0,i.jsxs)(`li`,{"data-kind":`added`,children:[(0,i.jsx)(`span`,{className:`aha-diffTag`,children:u(`diffAdded`)}),u(`diffUnit`,{title:e})]},`ua${t}`)),fe.unitsRemoved.map((e,t)=>(0,i.jsxs)(`li`,{"data-kind":`removed`,children:[(0,i.jsx)(`span`,{className:`aha-diffTag`,children:u(`diffRemoved`)}),u(`diffUnit`,{title:e})]},`ur${t}`)),fe.added.map((e,t)=>(0,i.jsxs)(`li`,{"data-kind":`added`,children:[(0,i.jsx)(`span`,{className:`aha-diffTag`,children:u(`diffAdded`)}),e.title,(0,i.jsxs)(`span`,{className:`aha-hint`,children:[` · `,e.unit]})]},`a${t}`)),fe.removed.map((e,t)=>(0,i.jsxs)(`li`,{"data-kind":`removed`,children:[(0,i.jsx)(`span`,{className:`aha-diffTag`,children:u(`diffRemoved`)}),e.title,(0,i.jsxs)(`span`,{className:`aha-hint`,children:[` · `,e.unit]})]},`r${t}`)),fe.renamed.map((e,t)=>(0,i.jsxs)(`li`,{"data-kind":`renamed`,children:[(0,i.jsx)(`span`,{className:`aha-diffTag`,children:u(`diffRenamed`)}),e.from,` → `,e.to]},`n${t}`)),fe.changed.map((e,t)=>(0,i.jsxs)(`li`,{"data-kind":`changed`,children:[(0,i.jsx)(`span`,{className:`aha-diffTag`,children:u(`diffChanged`)}),e.title,(0,i.jsxs)(`span`,{className:`aha-hint`,children:[` · `,e.unit]})]},`c${t}`))]}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:()=>ye(`course/proposal-apply`,u(`proposalApplied`)),children:u(`applyProposal`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>ye(`course/proposal-discard`),children:u(`discardProposal`)})]})]}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`p`,{className:`aha-hint`,children:u(`blueprintHint`)}),(0,i.jsxs)(`form`,{className:`aha-row`,onSubmit:ve,children:[(0,i.jsx)(`input`,{className:`aha-input`,style:{flex:1},value:S,placeholder:u(`revisePlaceholder`),onChange:e=>C(e.currentTarget.value),"aria-label":u(`reviseLabel`)}),(0,i.jsx)(`button`,{type:`submit`,className:`aha-btn`,disabled:!S.trim()||me,children:u(`revise`)}),p?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,disabled:me,onClick:()=>ve(null,u(`extendInstruction`)),children:u(`extendCourse`)}):null,(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,disabled:me,"aria-expanded":ie,onClick:()=>ae(e=>!e),children:u(`addMaterials`)})]}),ie?(0,i.jsx)(Gf,{course:e,job:o,onClose:()=>ae(!1),onDone:()=>{ae(!1),s()}}):null]}),(0,i.jsx)(Yu,{error:E??o.error??le.error}),(0,i.jsxs)(`div`,{className:`aha-viewToggle`,role:`group`,"aria-label":u(`outlineView`),children:[(0,i.jsx)(`button`,{type:`button`,"aria-pressed":ne===`list`,onClick:()=>re(`list`),children:u(`viewList`)}),(0,i.jsx)(`button`,{type:`button`,"aria-pressed":ne===`map`,onClick:()=>re(`map`),children:u(`viewMap`)})]}),ne===`map`?(0,i.jsx)(Pf,{tree:he,renderMeta:ge,onPick:e=>{se(e),re(`list`)}}):(0,i.jsxs)(`fieldset`,{ref:ce,className:`aha-tree`,disabled:me,children:[m.map((t,n)=>(0,i.jsxs)(`div`,{className:`aha-unit`,children:[(0,i.jsxs)(`div`,{className:`aha-lesson`,style:{fontWeight:650},children:[(0,i.jsx)(`span`,{className:`aha-tag`,children:u(`unitN`,{n:n+1})}),(0,i.jsx)(`input`,{value:t.title,onChange:e=>{let t=e.currentTarget.value;M(e=>{e[n].title=t})}}),(0,i.jsx)(qf,{onUp:()=>M(e=>{e.splice(0,e.length,...Wf(e,n,-1))}),onDown:()=>M(e=>{e.splice(0,e.length,...Wf(e,n,1))}),onRemove:()=>Ce(u(`confirmRemoveUnit`,{title:t.title}),()=>M(e=>{e.splice(n,1)}))})]}),t.lectures.map((t,r)=>(0,i.jsxs)(`div`,{className:`aha-lecture`,children:[(0,i.jsxs)(`div`,{className:`aha-lesson`,style:{fontWeight:600},children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:u(`lectureN`,{n:r+1})}),(0,i.jsx)(`input`,{value:t.title,onChange:e=>{let t=e.currentTarget.value;M(e=>{e[n].lectures[r].title=t})}}),(0,i.jsx)(qf,{onUp:()=>M(e=>{let t=e[n].lectures;t.splice(0,t.length,...Wf(t,r,-1))}),onDown:()=>M(e=>{let t=e[n].lectures;t.splice(0,t.length,...Wf(t,r,1))}),onRemove:()=>Ce(u(`confirmRemoveLecture`,{title:t.title}),()=>M(e=>{e[n].lectures.splice(r,1)}))})]}),t.lessons.map((t,a)=>{let o=`${n}.${r}.${a}`,s=()=>M(e=>{e[n].lectures[r].lessons.splice(a,1)});return(0,i.jsxs)(`div`,{className:`aha-lesson`,"data-path":`u${o}`,"data-flash":oe===`u${o}`?`true`:void 0,children:[(0,i.jsx)(`span`,{className:`aha-dot`}),(0,i.jsxs)(`span`,{className:`aha-lessonName`,children:[(0,i.jsx)(`input`,{value:t.title,title:t.summary,onChange:e=>{let t=e.currentTarget.value;M(e=>{e[n].lectures[r].lessons[a].title=t})}}),(0,i.jsx)(ad,{sources:(t.sources??[]).filter(t=>e.materialIds?.includes(t.materialId))})]}),(0,i.jsxs)(`select`,{className:`aha-depthSelect`,"data-depth":t.depth||void 0,value:t.depth??``,title:u(`depthTitle`),"aria-label":u(`depthTitle`),onChange:e=>{let t=e.currentTarget.value;M(e=>{let i=e[n].lectures[r].lessons[a];t?i.depth=t:delete i.depth})},children:[(0,i.jsx)(`option`,{value:``,children:u(`depthNone`)}),Ue.map(e=>(0,i.jsx)(`option`,{value:e,children:u(`depth_${e}`)},e))]}),(0,i.jsx)(`span`,{className:`aha-hint`,children:u(`estMinutes`,{minutes:t.estMinutes})}),te===o?(0,i.jsx)(Hu,{}):pe(t)?null:(0,i.jsxs)(`span`,{className:`aha-menuAnchor`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,title:u(`reworkLesson`),"aria-label":u(`reworkLesson`),"aria-expanded":A===o,onClick:()=>ee(e=>e===o?null:o),children:`✦`}),A===o?(0,i.jsxs)(`div`,{className:`aha-card aha-menu`,onMouseLeave:()=>ee(null),children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>be(n,r,a,`split`),children:u(`splitLesson`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>be(n,r,a,`deepen`),children:u(`deepenLesson`)})]}):null]}),(0,i.jsx)(qf,{onUp:()=>M(e=>{let t=e[n].lectures[r].lessons;t.splice(0,t.length,...Wf(t,a,-1))}),onDown:()=>M(e=>{let t=e[n].lectures[r].lessons;t.splice(0,t.length,...Wf(t,a,1))}),onRemove:()=>pe(t)?Ce(u(`confirmRemoveStarted`,{title:t.title}),s):s()})]},t.id??a)}),(0,i.jsx)(`div`,{children:(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>M(e=>{e[n].lectures[r].lessons.push({title:u(`untitled`),objectives:[],concepts:[],estMinutes:15})}),children:[`+ `,u(`addLesson`)]})})]},t.id??r)),(0,i.jsx)(`div`,{children:(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>M(e=>{e[n].lectures.push({title:u(`untitled`),lessons:[{title:u(`untitled`),objectives:[],concepts:[],estMinutes:15}]})}),children:[`+ `,u(`addLecture`)]})})]},t.id??n)),(0,i.jsx)(`div`,{children:(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>M(e=>{e.push({title:u(`untitled`),objectives:[],lectures:[{title:u(`untitled`),lessons:[{title:u(`untitled`),objectives:[],concepts:[],estMinutes:15}]}]})}),children:[`+ `,u(`addUnit`)]})})]}),e.projects?.length?(0,i.jsxs)(`section`,{className:`aha-col`,children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:u(`projects`)}),(0,i.jsx)(`div`,{className:`aha-grid`,children:e.projects.map(e=>(0,i.jsxs)(`div`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:e.title}),(0,i.jsx)(`p`,{className:`aha-hint`,children:e.brief})]},e.id))})]}):null,O?(0,i.jsx)(qu,{danger:!0,text:O.text,onConfirm:()=>{O.run(),k(null)},onCancel:()=>k(null)}):null]})}function qf({onUp:e,onDown:t,onRemove:n}){let{t:r}=v();return(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:2,flexWrap:`nowrap`},children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:e,title:r(`moveUp`),"aria-label":r(`moveUp`),children:`↑`}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:t,title:r(`moveDown`),"aria-label":r(`moveDown`),children:`↓`}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:n,title:r(`remove`),"aria-label":r(`remove`),children:`✕`})]})}function Jf({courseId:e,lessonId:t}){let{api:n,t:a,navigate:o}=v(),s=b(),[c,l]=(0,r.useState)(null),[u,d]=(0,r.useState)(null),f=async r=>{d(null);try{let i=await n.call(`lesson/handout`,{courseId:e,lessonId:t,force:r});l(i.job?(await s.run(null,null,{existing:i.job})).handout:i.handout)}catch(e){d(e)}};(0,r.useEffect)(()=>{f(!1)},[e,t]);let p=()=>{for(let e of document.querySelectorAll(`.aha-handout details`))e.open=!0;window.print()},m=(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>o(`lesson`,{courseId:e,lessonId:t}),children:[`← `,a(`backToLesson`)]});return u?(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsx)(Yu,{error:u}),(0,i.jsx)(`div`,{className:`aha-row`,children:m})]}):c?(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:860},children:[(0,i.jsxs)(`div`,{className:`aha-spread aha-noprint`,children:[m,(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:p,children:a(`print`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>{l(null),f(!0)},children:a(`regenerate`)})]})]}),(0,i.jsxs)(`article`,{className:`aha-printable aha-handout`,children:[(0,i.jsxs)(`header`,{children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:a(`handout`)}),(0,i.jsx)(`h2`,{children:c.title}),c.summary?(0,i.jsx)(`p`,{className:`aha-handoutSummary`,children:(0,i.jsx)(hu,{text:c.summary})}):null]}),(0,i.jsxs)(`section`,{children:[(0,i.jsx)(`h3`,{children:a(`handoutPoints`)}),(0,i.jsx)(`ol`,{className:`aha-handoutPoints`,children:c.points.map((e,t)=>(0,i.jsxs)(`li`,{children:[(0,i.jsx)(`b`,{children:(0,i.jsx)(hu,{text:e.title})}),e.oneLine?(0,i.jsx)(`div`,{className:`aha-handoutOneLine`,children:(0,i.jsx)(hu,{text:e.oneLine})}):null,e.detail?(0,i.jsx)(`div`,{className:`aha-hint`,children:(0,i.jsx)(hu,{text:e.detail})}):null]},t))})]}),c.example?(0,i.jsxs)(`section`,{children:[(0,i.jsx)(`h3`,{children:a(`handoutExample`)}),(0,i.jsx)(`p`,{children:(0,i.jsx)(hu,{text:c.example.problem})}),(0,i.jsx)(`ol`,{className:`aha-handoutSteps`,children:c.example.steps.map((e,t)=>(0,i.jsx)(`li`,{children:(0,i.jsx)(hu,{text:e})},t))}),c.example.answer?(0,i.jsxs)(`div`,{className:`aha-handoutAnswer`,children:[(0,i.jsx)(`b`,{children:a(`handoutAnswer`)}),` `,(0,i.jsx)(hu,{text:c.example.answer})]}):null]}):null,c.mistakes.length?(0,i.jsxs)(`section`,{children:[(0,i.jsx)(`h3`,{children:a(`handoutMistakes`)}),(0,i.jsx)(`ul`,{className:`aha-handoutMistakes`,children:c.mistakes.map((e,t)=>(0,i.jsxs)(`li`,{children:[(0,i.jsx)(`span`,{"data-wrong":`true`,children:(0,i.jsx)(hu,{text:e.mistake})}),e.fix?(0,i.jsxs)(`span`,{children:[`→ `,(0,i.jsx)(hu,{text:e.fix})]}):null]},t))})]}):null,c.glossary.length?(0,i.jsxs)(`section`,{children:[(0,i.jsx)(`h3`,{children:a(`handoutGlossary`)}),(0,i.jsx)(`dl`,{className:`aha-handoutGlossary`,children:c.glossary.map((e,t)=>(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`dt`,{children:(0,i.jsx)(hu,{text:e.term})}),(0,i.jsx)(`dd`,{children:(0,i.jsx)(hu,{text:e.meaning})})]},t))})]}):null,c.questions.length?(0,i.jsxs)(`section`,{children:[(0,i.jsx)(`h3`,{children:a(`handoutQuestions`)}),(0,i.jsx)(`ol`,{className:`aha-handoutQuestions`,children:c.questions.map((e,t)=>(0,i.jsxs)(`li`,{children:[(0,i.jsx)(hu,{text:e.question}),e.answer?(0,i.jsxs)(`details`,{children:[(0,i.jsx)(`summary`,{children:a(`handoutAnswer`)}),(0,i.jsx)(hu,{text:e.answer})]}):null]},t))})]}):null]})]}):(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Wu,{progress:s.progress,label:a(`handoutMaking`),onCancel:s.running?s.cancel:void 0})})}function Yf({item:e,day:t,today:n,onToggle:r}){let{t:a,navigate:o}=v(),s=e.kind!==`exam`&&t<=n,c=e.checked===`auto`;return(0,i.jsxs)(`div`,{className:`aha-planItem`,"data-checked":e.checked?`true`:void 0,children:[s?(0,i.jsx)(`input`,{type:`checkbox`,className:`aha-check`,checked:!!e.checked,disabled:c,title:c?a(`checkedAuto`):void 0,"aria-label":e.checked?a(`unmarkDone`):a(`markDone`),onChange:()=>r?.(e,t)}):null,(0,i.jsx)(`span`,{className:`aha-tag`,children:e.kind===`lesson`?a(`lessonItem`):e.kind===`review`?a(`reviewItem`):a(`examItem`)}),(0,i.jsxs)(`span`,{className:`aha-planTitle`,children:[e.title,(0,i.jsx)(cd,{title:e.courseTitle,emoji:e.courseEmoji})]}),e.minutes?(0,i.jsx)(`span`,{className:`aha-hint`,children:a(`minutesUnit`,{minutes:e.minutes})}):null,e.kind===`lesson`&&!e.checked?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>o(`lesson`,{courseId:e.courseId,lessonId:e.refId}),children:a(`learn`)}):null,e.kind===`review`&&!e.checked&&t===n?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>o(`practice`,{courseId:e.courseId??void 0,review:!0}),children:a(`review`)}):null]})}function Xf(e,t,n,r){return t.checked===`manual`?e.call(`plan/uncheck`,{today:r,day:n,refId:t.refId}):e.call(`plan/check`,{today:r,day:n,item:t})}let Zf=[[`course`,`modeCourse`,`🎓`],[`explain`,`modeExplain`,`💡`],[`solve`,`modeSolve`,`🧮`],[`visualize`,`modeVisualize`,`📈`],[`digest`,`modeDigest`,`📚`],[`short`,`modeShort`,`🎬`]];function Qf(){let{api:e,t,navigate:n,toast:a}=v(),[o,s]=(0,r.useState)(`course`),[c,l]=C(`craftWeb`,!0),[u,d]=(0,r.useState)(null),[f,p]=(0,r.useState)(``),[m,h]=(0,r.useState)([]),[g,_]=(0,r.useState)(!1),[b,x]=(0,r.useState)(!1),[S,w]=(0,r.useState)(null),T=y(()=>e.call(`course/list`),[]),E=y(()=>e.call(`plan/get`,{today:ln(new Date)}),[]),D=y(()=>e.call(`samples/list`),[]),O=u??(!m.length&&c);function k(){d(!O),m.length||l(!O)}async function A(t=!1){let r=f.trim();if(w(null),o===`course`){if(!r&&!m.length)return;x(!0);try{let{job:i}=await e.call(`course/start`,{goal:r,materialIds:m,quick:t,web:O});n(`craft`,{jobId:i.id})}catch(e){w(e)}finally{x(!1)}return}if(o===`digest`){if(!m.length){_(!0);return}n(`item`,{kind:`digest`,materialId:m[0]});return}if(o===`short`){let e=/^https?:\/\//iu.test(r);n(`shorts`,{draftTopic:e?``:r,draftUrl:e?r:``,token:Date.now().toString(36)});return}r&&n(`assist`,{draftMode:o,draftRequest:r,draftMaterials:m,token:Date.now().toString(36)})}let ee=(T.value??[]).filter(e=>e.status===`ready`&&!e.archived&&e.progress.percent<100).slice(0,3),te=(T.value??[]).filter(e=>e.status!==`ready`&&!e.archived).slice(0,2),j=E.value?.today??[],ne=ln(new Date);async function re(t,n){try{E.setValue(await Xf(e,t,n,ne))}catch(e){w(e)}}return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`section`,{className:`aha-hero`,children:[(0,i.jsx)(`div`,{className:`aha-heroTitle`,children:t(`heroTitle`)}),(0,i.jsx)(`p`,{className:`aha-subtitle`,children:t(`heroHint`)}),(0,i.jsxs)(`div`,{className:`aha-composer`,children:[(0,i.jsx)(`textarea`,{value:f,placeholder:t(`heroPlaceholder`),onChange:e=>p(e.currentTarget.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&A()}}),(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`div`,{className:`aha-row`,style:{gap:6},children:[(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>_(!0),children:[(0,i.jsx)(Ht,{name:`plus`,size:15}),m.length?t(`attached`,{count:m.length}):t(`attach`)]}),o===`course`?(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"data-active":O,"aria-pressed":O,onClick:k,title:t(`webResearchHint`),children:[`🌐 `,t(`webResearch`)]}):null]}),(0,i.jsxs)(`div`,{className:`aha-row`,style:{gap:6},children:[o===`course`?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,disabled:b,onClick:()=>A(!0),children:t(`quickStart`)}):null,(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:b||!f.trim()&&!m.length,onClick:()=>A(!1),children:[b?(0,i.jsx)(`span`,{className:`aha-spinner`}):null,t(`start`)]})]})]})]}),(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:8},children:Zf.map(([e,n,r])=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"data-active":o===e,onClick:()=>s(e),children:[r,` `,t(n)]},e))}),(0,i.jsx)(Yu,{error:S})]}),ee.length||te.length?(0,i.jsxs)(`section`,{className:`aha-col`,children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:t(`continueLearning`)}),(0,i.jsx)(`div`,{className:`aha-grid`,children:[...te,...ee].map(e=>(0,i.jsxs)(`div`,{className:`aha-card`,"data-click":`true`,onClick:()=>n(e.status===`ready`?`course`:`craft`,{courseId:e.id}),children:[(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`span`,{style:{fontSize:24},children:e.emoji}),(0,i.jsx)(`span`,{className:`aha-cardTitle`,children:e.title})]}),e.status===`ready`?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Uu,{value:e.progress.percent}),(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:t(`lessonsCount`,e.progress)}),e.next?(0,i.jsx)(`span`,{className:`aha-hint`,children:t(`nextUp`,{title:e.next.title})}):null]}),e.next?(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:t=>{t.stopPropagation(),n(`lesson`,{courseId:e.id,lessonId:e.next.lessonId})},children:[(0,i.jsx)(Ht,{name:`play`,size:14}),t(`continueLearning`)]}):null]}):(0,i.jsx)(`span`,{className:`aha-tag`,children:e.status===`intake`?t(`statusIntake`):t(`statusBlueprint`)})]},e.id))})]}):null,(0,i.jsxs)(`section`,{className:`aha-col`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:t(`todayPlan`)}),(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>n(`plan`),children:[t(`navPlan`),` →`]})]}),E.loading&&!E.value?(0,i.jsx)(Hu,{}):j.length?(0,i.jsx)(`div`,{className:`aha-col`,style:{gap:6},children:j.map(e=>(0,i.jsx)(`div`,{className:`aha-card`,style:{padding:`6px 14px`},children:(0,i.jsx)(Yf,{item:e,day:ne,today:ne,onToggle:re})},`${e.kind}:${e.refId}`))}):(0,i.jsx)(Xu,{children:t(`noPlanToday`)})]}),D.value?.length?(0,i.jsxs)(`section`,{className:`aha-col`,children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:t(`sampleCourses`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`sampleHint`)}),(0,i.jsx)(`div`,{className:`aha-grid`,children:D.value.map(r=>(0,i.jsxs)(`div`,{className:`aha-card`,children:[(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`span`,{style:{fontSize:24},children:r.emoji}),(0,i.jsx)(`span`,{className:`aha-cardTitle`,children:r.title})]}),(0,i.jsx)(`p`,{className:`aha-hint`,children:r.subtitle}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:async()=>{try{let i=await e.call(`samples/import`,{id:r.id});a(t(`courseReady`)),n(`course`,{courseId:i.id})}catch(e){a(Ju(t,e))}},children:t(`importSample`)})]},r.id))})]}):null,g?(0,i.jsx)(ed,{selected:m,onChange:h,onClose:()=>_(!1)}):null]})}let $f=`http://www.w3.org/2000/svg`,ep=new Set([`SCRIPT`,`STYLE`,`TEMPLATE`,`IFRAME`,`BUTTON`,`INPUT`,`TEXTAREA`,`SELECT`]),tp=[`Top`,`Right`,`Bottom`,`Left`],np=[`fill`,`fill-opacity`,`fill-rule`,`stroke`,`stroke-width`,`stroke-opacity`,`stroke-dasharray`,`stroke-dashoffset`,`stroke-linecap`,`stroke-linejoin`,`stroke-miterlimit`,`opacity`,`font-family`,`font-size`,`font-style`,`font-weight`,`text-anchor`,`dominant-baseline`],rp=typeof Intl<`u`&&typeof Intl.Segmenter==`function`?new Intl.Segmenter(void 0,{granularity:`grapheme`}):null;function ip(e){if(rp)return Array.from(rp.segment(e),e=>({index:e.index,text:e.segment}));let t=[],n=0;for(let r of e)t.push({index:n,text:r}),n+=r.length;return t}function ap(e){if(!e||e===`transparent`||e===`none`)return!1;let t=/^(?:rgba?|hsla?|color|lab|lch|oklab|oklch)\((.*)\)$/u.exec(e.trim());if(!t)return!0;let n=t[1],r=n.includes(`/`)?n.split(`/`).pop():n.split(`,`).length===4?n.split(`,`).pop():null;return r===null||Number.parseFloat(r)>0}function op(e){if(!e||!e.startsWith(`linear-gradient(`))return[];let t=e.slice(16);if(/^\s*(?:to\s+(?!bottom)|-?[\d.]+(?:deg|turn|rad))/u.test(t)&&!/^\s*180deg/u.test(t))return[];let n=[...t.matchAll(/((?:rgba?|hsla?|color|oklab|oklch|lab|lch)\([^)]*\)|transparent|#[0-9a-f]{3,8})\s+(-?[\d.]+)%/giu)].map(e=>({color:e[1],at:Number.parseFloat(e[2])/100})),r=[];for(let e=0;e+1<n.length;e+=1){let[t,i]=[n[e],n[e+1]];t.color===i.color&&ap(t.color)&&i.at>t.at&&r.push({color:t.color,from:Math.max(0,t.at),to:Math.min(1,i.at)})}return r}function sp(e,t,n){let[r,i=r]=String(e||`0`).trim().split(/\s+/u),a=(e,t)=>e.endsWith(`%`)?Number.parseFloat(e)/100*t:Number.parseFloat(e)||0;return{x:a(r,t),y:a(i,n)}}function cp(e,t,n){let r=[e.borderTopLeftRadius,e.borderTopRightRadius,e.borderBottomRightRadius,e.borderBottomLeftRadius].map(e=>sp(e,t,n));return r.some(e=>e.x>0&&e.y>0)?r:null}function lp(e){return`${e.fontStyle.startsWith(`oblique`)?`italic`:e.fontStyle} ${e.fontWeight} ${e.fontSize} ${e.fontFamily}`}function up(e,t){if(!e)return t;if(!t)return e;let n=Math.max(e.x,t.x),r=Math.max(e.y,t.y);return{x:n,y:r,w:Math.max(0,Math.min(e.x+e.w,t.x+t.w)-n),h:Math.max(0,Math.min(e.y+e.h,t.y+t.h)-r)}}function dp(e,t){let n=Math.min(e.x,t.x),r=Math.min(e.y,t.y);return{x:n,y:r,w:Math.max(e.x+e.w,t.x+t.w)-n,h:Math.max(e.y+e.h,t.y+t.h)-r}}function fp(e,t){return e===`dashed`?[t*3,t*2.2]:e===`dotted`?[.01,t*2]:null}async function pp(e,{timeoutMs:t=1e4}={}){e.offsetHeight,await new Promise(e=>{setTimeout(e,50)});let n=document.fonts;if(!n)return;let r=(e.textContent??``).slice(0,2e4),i=[`Aha Hand Latin`,`Aha Hand`].map(e=>n.load?.(`20px '${e}'`,r).catch(()=>void 0));await Promise.race([Promise.all([...i,n.ready]),new Promise(e=>{setTimeout(e,t)})])}function mp(e){for(let t of e.querySelectorAll(`.aha-op-math`))Cl(t);for(let t of e.querySelectorAll(`.aha-op-table`)){let e=t.closest(`.aha-op`)?.clientWidth??0;if(!e||t.offsetWidth<=e+1)continue;let n=e/t.offsetWidth,r=getComputedStyle(t);t.style.fontSize=`${Math.max(10,(Number.parseFloat(r.fontSize)||16)*n)}px`,t.style.lineHeight=`${Math.max(14,(Number.parseFloat(r.lineHeight)||24)*n)}px`}}function hp(e,{scale:t=2}={}){let n=e.getBoundingClientRect(),r=[],i=new Map,a=document.createElement(`canvas`).getContext(`2d`),o=document.createRange(),s=e=>({x:e.left-n.left,y:e.top-n.top,w:e.width,h:e.height}),c=e=>{let t=i.get(e);if(!t){a.font=e;let n=a.measureText(`Hg`),r=Number.parseFloat(/([\d.]+)px/u.exec(e)?.[1]??`16`);t={ascent:Number.isFinite(n.fontBoundingBoxAscent)?n.fontBoundingBoxAscent:r*.8,descent:Number.isFinite(n.fontBoundingBoxDescent)?n.fontBoundingBoxDescent:r*.2},i.set(e,t)}return t},l=getComputedStyle(e);r.push({kind:`paper`,w:n.width,h:n.height,paper:l.getPropertyValue(`--paper`).trim()||l.backgroundColor,dot:l.getPropertyValue(`--grid`).trim()});let u=(e,t)=>{let i=e.data;if(!i||!/\S/u.test(i))return;let a=getComputedStyle(e.parentElement);if(!ap(a.color))return;let s=lp(a),{ascent:l}=c(s),u=null,d=()=>{u&&/\S/u.test(u.text)&&r.push({kind:`text`,text:u.text,x:u.x,y:u.top+l,font:s,color:a.color,alpha:t.alpha,clip:t.clip}),u=null};for(let t of ip(i)){if(t.text===`
273
- `||t.text===`\r`||t.text===` `){d();continue}o.setStart(e,t.index),o.setEnd(e,t.index+t.text.length);let r=o.getClientRects(),i=r[r.length-1];if(!i||i.width<=0){/\s/u.test(t.text)||d();continue}let a=i.left-n.left,s=i.top-n.top;u&&Math.abs(s-u.top)<1&&Math.abs(a-u.right)<1?(u.text+=t.text,u.right=a+i.width):(d(),u={text:t.text,x:a,top:s,right:a+i.width})}d()},d=(e,t,n,i,a)=>{let o=t.backgroundColor,c=op(t.backgroundImage);for(let e of n){let n=s(e);ap(o)&&r.push({kind:`fill`,box:n,color:o,radius:cp(t,n.w,n.h),alpha:i,clip:a});for(let e of c)r.push({kind:`fill`,box:{x:n.x,y:n.y+n.h*e.from,w:n.w,h:n.h*(e.to-e.from)},color:e.color,alpha:i,clip:a})}let l=tp.map(e=>({width:Number.parseFloat(t[`border${e}Width`])||0,style:t[`border${e}Style`],color:t[`border${e}Color`]})),u=l.map(e=>e.width>0&&e.style!==`none`&&e.style!==`hidden`&&ap(e.color));if(!u.some(Boolean))return;let d=(e.tagName===`TD`||e.tagName===`TH`)&&t.borderCollapse===`collapse`,f=!d&&u.every(Boolean)&&l.every(e=>e.width===l[0].width&&e.style===l[0].style&&e.color===l[0].color);for(let e of n){let n=s(e);if(f){let e=l[0].width,o=cp(t,n.w,n.h)?.map(t=>({x:Math.max(0,t.x-e/2),y:Math.max(0,t.y-e/2)}))??null;r.push({kind:`stroke`,box:{x:n.x+e/2,y:n.y+e/2,w:Math.max(0,n.w-e),h:Math.max(0,n.h-e)},width:e,color:l[0].color,dash:fp(l[0].style,e),radius:o,alpha:i,clip:a});continue}l.forEach((e,t)=>{if(!u[t])return;let o=d?0:e.width/2,s=[[n.x,n.y+o,n.x+n.w,n.y+o],[n.x+n.w-o,n.y,n.x+n.w-o,n.y+n.h],[n.x,n.y+n.h-o,n.x+n.w,n.y+n.h-o],[n.x+o,n.y,n.x+o,n.y+n.h]][t];r.push({kind:`line`,points:s,width:e.width,color:e.color,dash:fp(e.style,e.width),alpha:i,clip:a})})}},f=(e,t,n,i)=>{let a=e.parentElement;if(!a||t.listStyleType===`none`||t.display!==`list-item`)return;let o=lp(t),{ascent:l,descent:u}=c(o),d=Number.parseFloat(t.fontSize)||16,f=Number.parseFloat(t.lineHeight)||(l+u)*1.2,p=s(e.getBoundingClientRect()),m=[...a.children].filter(e=>e.tagName===`LI`),h=a.tagName===`OL`?`${m.indexOf(e)+(Number(a.getAttribute(`start`))||1)}.`:`•`;r.push({kind:`text`,text:h,align:`right`,x:p.x-d*.4,y:p.y+(Number.parseFloat(t.paddingTop)||0)+(f-l-u)/2+l,font:o,color:t.color,alpha:n,clip:i})},p=(e,i,a,o)=>{let l=e.getBoundingClientRect(),u=s(l),d=i.overflow===`visible`||i.overflowX===`visible`;if(d)try{let t=e.getBBox(),r=e.getScreenCTM();if(r&&(t.width||t.height)){let e=[[t.x,t.y],[t.x+t.width,t.y],[t.x,t.y+t.height],[t.x+t.width,t.y+t.height]].map(([e,t])=>[r.a*e+r.c*t+r.e-n.left,r.b*e+r.d*t+r.f-n.top]),i=e.map(e=>e[0]),a=e.map(e=>e[1]);u=dp(u,{x:Math.min(...i)-4,y:Math.min(...a)-4,w:Math.max(...i)-Math.min(...i)+8,h:Math.max(...a)-Math.min(...a)+8})}}catch{}if(u=up(u,o??{x:0,y:0,w:n.width,h:n.height}),u.w<.5||u.h<.5)return;let f=[],p=e.cloneNode(!0),m=(e,t)=>{let r=getComputedStyle(e),i=np.map(e=>[e,r.getPropertyValue(e)]).filter(([,e])=>e&&!e.includes(`url(`));r.display===`none`&&i.push([`display`,`none`]),r.visibility===`hidden`&&i.push([`visibility`,`hidden`]),t.setAttribute(`style`,i.map(([e,t])=>`${e}:${t}`).join(`;`));let s=e.tagName.toLowerCase();if((s===`text`||s===`tspan`)&&![...e.children].length&&/\S/u.test(e.textContent??``)){let i=e.getScreenCTM?.(),s=i&&Math.abs(i.b)<.001&&Math.abs(i.c)<.001&&i.a>0,l=r.fill;if(s&&ap(l)&&!l.includes(`url(`)&&!ap(r.stroke)&&r.display!==`none`&&r.visibility!==`hidden`){let s=e.getBoundingClientRect(),u=(Number.parseFloat(r.fontSize)||16)*i.d,d=`${r.fontStyle.startsWith(`oblique`)?`italic`:r.fontStyle} ${r.fontWeight} ${u}px ${r.fontFamily}`,p=(Number.parseFloat(r.fillOpacity)||1)*(Number.parseFloat(r.opacity)||1);f.push({kind:`text`,text:e.textContent.replace(/\s+/gu,` `).trim(),x:s.left-n.left,y:s.top-n.top+c(d).ascent,font:d,color:l,alpha:a*p,clip:o}),t.setAttribute(`style`,`${t.getAttribute(`style`)};visibility:hidden`)}}let l=[...e.children],u=[...t.children];l.forEach((e,t)=>{u[t]&&m(e,u[t])})};m(e,p),p.setAttribute(`x`,String(l.left-n.left-u.x)),p.setAttribute(`y`,String(l.top-n.top-u.y)),p.setAttribute(`width`,String(l.width)),p.setAttribute(`height`,String(l.height)),d&&p.setAttribute(`overflow`,`visible`);let h=new XMLSerializer().serializeToString(p),g=`<svg xmlns="${$f}" width="${Math.ceil(u.w*t)}" height="${Math.ceil(u.h*t)}" viewBox="0 0 ${u.w} ${u.h}" preserveAspectRatio="none">${h}</svg>`;r.push({kind:`image`,markup:g,box:u,alpha:a,clip:null}),r.push(...f)},m=(e,t)=>{if(ep.has(e.tagName)||e.classList.contains(`katex-mathml`))return;let n=getComputedStyle(e);if(n.display===`none`||n.visibility===`hidden`||n.visibility===`collapse`)return;let r=t.alpha*(Number.parseFloat(n.opacity)||0);if(r<=.01)return;if(e.namespaceURI===$f){e.tagName.toLowerCase()===`svg`&&p(e,n,r,t.clip);return}d(e,n,[...e.getClientRects()].filter(e=>e.width>0&&e.height>0),r,t.clip),e.tagName===`LI`&&f(e,n,r,t.clip);let i=n.overflowX!==`visible`||n.overflowY!==`visible`;h(e,{alpha:r,clip:i?up(t.clip,s(e.getBoundingClientRect())):t.clip})},h=(e,t)=>{for(let n of e.childNodes)n.nodeType===Node.TEXT_NODE?u(n,t):n.nodeType===Node.ELEMENT_NODE&&m(n,t)};return h(e,{alpha:1,clip:null}),o.detach?.(),{width:Math.ceil(n.width),height:Math.ceil(n.height),ops:r}}async function gp(e){return await Promise.all(e.ops.map(async e=>{if(e.kind!==`image`)return;let t=new Image;t.src=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e.markup)}`;try{await t.decode(),e.image=t}catch{e.image=null}})),e}function _p(e,t,n){e.beginPath(),n&&e.roundRect?e.roundRect(t.x,t.y,t.w,t.h,n):e.rect(t.x,t.y,t.w,t.h)}let vp={paper(e,t){if(e.fillStyle=t.paper||`#fdfcf8`,e.fillRect(0,0,t.w,t.h),t.dot){e.fillStyle=t.dot,e.beginPath();for(let n=22/2;n<t.w;n+=22)for(let r=22/2;r<t.h;r+=22)e.moveTo(n+1.1,r),e.arc(n,r,1.1,0,Math.PI*2);e.fill()}},fill(e,t){e.fillStyle=t.color,_p(e,t.box,t.radius),e.fill()},stroke(e,t){e.strokeStyle=t.color,e.lineWidth=t.width,t.dash&&(e.setLineDash(t.dash),e.lineCap=t.dash[0]<.1?`round`:`butt`),_p(e,t.box,t.radius),e.stroke()},line(e,t){e.strokeStyle=t.color,e.lineWidth=t.width,t.dash&&(e.setLineDash(t.dash),e.lineCap=t.dash[0]<.1?`round`:`butt`),e.beginPath(),e.moveTo(t.points[0],t.points[1]),e.lineTo(t.points[2],t.points[3]),e.stroke()},text(e,t){e.font=t.font,e.fillStyle=t.color,e.textBaseline=`alphabetic`,e.textAlign=t.align??`left`,e.fillText(t.text,t.x,t.y)},image(e,t){t.image&&e.drawImage(t.image,t.box.x,t.box.y,t.box.w,t.box.h)}};function yp(e,t=2){let n=document.createElement(`canvas`);n.width=Math.max(1,Math.round(e.width*t)),n.height=Math.max(1,Math.round(e.height*t));let r=n.getContext(`2d`);r.scale(t,t);for(let t of e.ops)r.save(),r.globalAlpha=Math.min(1,t.alpha??1),t.clip&&(r.beginPath(),r.rect(t.clip.x,t.clip.y,t.clip.w,t.clip.h),r.clip()),vp[t.kind]?.(r,t),r.restore();return n}function bp(e){let t=`FEFF`;for(let n of String(e??``)){let e=n.codePointAt(0),r=e>65535?[55296+(e-65536>>10),56320+(e-65536&1023)]:[e];for(let e of r)t+=e.toString(16).toUpperCase().padStart(4,`0`)}return`<${t}>`}function xp(e){let t=e=>String(e).padStart(2,`0`);return`(D:${e.getUTCFullYear()}${t(e.getUTCMonth()+1)}${t(e.getUTCDate())}${t(e.getUTCHours())}${t(e.getUTCMinutes())}${t(e.getUTCSeconds())}Z)`}let Sp=e=>String(Math.round(e*.75*100)/100);function Cp(e,{title:t=``,creator:n=``,date:r=new Date}={}){let i=new TextEncoder,a=[],o=[],s=0,c=e=>{let t=typeof e==`string`?i.encode(e):e;a.push(t),s+=t.length},l=(e,...t)=>{o[e]=s,c(`${e} 0 obj\n`);for(let e of t)c(e);c(`
268
+ `)}),e.caption?(0,i.jsx)(`div`,{className:`aha-figCaption`,children:e.caption}):null]});break}case`anim`:m=c?(0,i.jsx)(Su,{op:e,label:l,labels:f}):(0,i.jsx)(bu,{op:e,reveal:t,theme:s,labels:f});break;default:m=null}let h=e.fixed&&d&&t>=1?d(e):null;return(0,i.jsxs)(`div`,{ref:o,className:`aha-op`,"data-t":e.t,"data-aside":r?`true`:void 0,"data-now":a?`true`:void 0,"data-op":e.id,children:[m,p,h?(0,i.jsxs)(`span`,{className:`aha-fixed`,title:h.title,children:[`✎ `,h.label]}):null]})}function wu({target:e,active:t,stage:n,scale:a=1,scrolls:o=!1}){let[s,c]=(0,r.useState)(null);return(0,r.useLayoutEffect)(()=>{let r=e?.current,i=n?.current;if(!t||!r||!i){c(e=>e===null?e:null);return}let s=r.getBoundingClientRect(),l=i.getBoundingClientRect(),u=r.querySelector(`.aha-op-math`),d=u?[]:r.querySelectorAll(`span,strong,mark,li,td,pre`),f=d[d.length-1]?.getBoundingClientRect(),p=f&&f.width?f.right:s.left+s.width*t.progress,m=f&&f.height?f.bottom-4*a:s.top+s.height/2;if(u?.dataset.pen){let[e,t]=u.dataset.pen.split(` `).map(Number),n=u.getBoundingClientRect();p=n.left+e*a,m=n.top+(t-4)*a}let h={left:Math.round((p-l.left)/a+(o?i.scrollLeft:0)),top:Math.round((m-l.top)/a+(o?i.scrollTop:0)),glide:!u};c(e=>e&&e.left===h.left&&e.top===h.top&&e.glide===h.glide?e:h)}),s?(0,i.jsxs)(`svg`,{className:`aha-pencil`,style:{left:s.left,top:s.top},"data-glide":s.glide,viewBox:`0 0 24 24`,"aria-hidden":`true`,children:[(0,i.jsx)(`path`,{d:`M3 21l3.5-1 11-11-2.5-2.5-11 11L3 21z`,fill:`var(--pencil)`,stroke:`var(--ink)`,strokeWidth:`1.2`,strokeLinejoin:`round`}),(0,i.jsx)(`path`,{d:`M14.5 6.5l2.5 2.5 2-2a1.77 1.77 0 0 0-2.5-2.5l-2 2z`,fill:`var(--accent)`,stroke:`var(--ink)`,strokeWidth:`1.2`})]}):null}let Tu=new Set([`p`,`h`,`list`,`note`,`math`,`title`]);function Eu({page:e,title:t,board:n,activeRef:r}){let{reveal:a,marks:o,nowIds:s,opMeta:c,activeOp:l,theme:u,onInteract:d,fixedNote:f,figureLabels:p}=n,m=t?a(t.id):1;return(0,i.jsxs)(i.Fragment,{children:[e.title&&m>0?(0,i.jsx)(`h2`,{className:`aha-boardTitle`,children:(0,i.jsx)(`span`,{children:(0,i.jsx)(hu,{text:e.title,reveal:m})})}):null,(0,i.jsx)(`div`,{className:`aha-cols`,children:e.columns.map((e,t)=>(0,i.jsx)(`div`,{className:`aha-colBody`,children:e.map(({op:e})=>{let t=a(e.id);if(t<=0)return null;let n=l?.id===e.id&&t<1;return(0,i.jsx)(Cu,{op:e,reveal:t,marks:o.get(e.id)??[],aside:c.get(e.id)?.aside,now:s.has(e.id),opRef:n?r:void 0,theme:u,onInteract:d,fixedNote:f,figureLabels:p},e.id)})},t))})]})}function Du(e,t,n){let{reveal:r,marks:i,nowIds:a}=n,o=[t?`t${Math.round(r(t.id)*1e3)}`:``];for(let t of e.columns)for(let{op:e}of t){let t=Math.round(r(e.id)*1e3);t<=0||o.push(`${e.id}:${t}${a.has(e.id)?`*`:``}${(i.get(e.id)??[]).map(e=>`/${e.id}:${Math.round(e.reveal*1e3)}`).join(``)}`)}return o.join(` `)}let Ou=(0,r.memo)(function({index:e,page:t,title:n,board:r,activeRef:a,label:o}){return(0,i.jsx)(`section`,{className:`aha-frame`,"data-frame":e,"aria-label":o,children:(0,i.jsx)(Eu,{page:t,title:n,board:r,activeRef:a})})},(e,t)=>e.signature===t.signature&&e.page===t.page&&e.activeRef===t.activeRef&&e.board.theme===t.board.theme&&e.label===t.label);function ku({board:e,layout:t,position:n,activePage:a,pencil:o,cover:s}){let{activeOp:c}=e,[l,u]=(0,r.useState)(null);(0,r.useEffect)(()=>{u(null)},[a]);let d=Math.min(t.pages.length-1,l??a),f=t.pages[d],p=(0,r.useRef)(null),m=(0,r.useRef)(null);(0,r.useEffect)(()=>{let e=p.current,t=c?e?.querySelector(`[data-op="${c.id}"]`):null;if(!e||!t)return;let n=t.getBoundingClientRect(),r=e.getBoundingClientRect();n.bottom>r.bottom-24?e.scrollTo({top:e.scrollTop+n.bottom-r.bottom+56,behavior:`smooth`}):n.top<r.top+8&&e.scrollTo({top:Math.max(0,e.scrollTop-(r.top-n.top)-24),behavior:`smooth`})},[c?`${c.id}:${Math.round((n?.progress??0)*4)}`:``,d]),(0,r.useEffect)(()=>{let e=p.current,t=e?.querySelectorAll(`[data-op]`),n=t?.[t.length-1];if(!s||!n)return;let r=n.getBoundingClientRect(),i=e.getBoundingClientRect().bottom-s-16;r.bottom>i&&e.scrollTo({top:e.scrollTop+r.bottom-i,behavior:`smooth`})},[s,d]);let h=t.pages.map((e,t)=>t).filter(e=>e<=Math.max(a,l??0)||!n);return(0,i.jsxs)(i.Fragment,{children:[h.length>1?(0,i.jsx)(`div`,{className:`aha-pager`,children:h.map(e=>(0,i.jsx)(`button`,{type:`button`,"data-active":e===d,onClick:()=>u(e),children:e+1},e))}):null,(0,i.jsxs)(`div`,{className:`aha-boardScroll`,ref:p,style:s?{paddingBottom:s+40}:void 0,children:[f?(0,i.jsx)(Eu,{page:f,title:e.titles.get(d),board:e,activeRef:m}):null,(0,i.jsx)(wu,{target:m,stage:p,scrolls:!0,active:o})]})]})}function Au({board:e,layout:t,position:n,activePage:a,pencil:o,cover:s}){let{t:c}=v(),{activeOp:l}=e,u=(0,r.useRef)(null),d=(0,r.useRef)(null),f=(0,r.useRef)(null),[p,m]=(0,r.useState)({width:0,height:0}),[h,g]=(0,r.useState)({x:16,y:16,k:1,animate:!1}),[_,y]=(0,r.useState)(!0),[b,x]=(0,r.useState)(!1),S=(0,r.useRef)({camera:h,size:p,pointers:new Map,drag:null}),C=(0,r.useRef)(-1);S.current.camera=h,S.current.size=p,(0,r.useLayoutEffect)(()=>{let e=u.current;if(!e)return;let t=()=>m(t=>t.width===e.clientWidth&&t.height===e.clientHeight?t:{width:e.clientWidth,height:e.clientHeight});t();let n=typeof ResizeObserver==`function`?new ResizeObserver(t):null;return n?.observe(e),()=>n?.disconnect()},[]);let w=Math.max(240,p.width-32),T=()=>({width:d.current?.offsetWidth??w,height:d.current?.offsetHeight??0}),E=(e,{animate:t=!1,manual:n=!1}={})=>{n&&y(!1),g(n=>({...vl(typeof e==`function`?e(n):e,S.current.size,T()),animate:t}))};(0,r.useEffect)(()=>{let e=u.current;if(!e)return;let t=t=>{t.preventDefault();let n=e.getBoundingClientRect(),r=yl(t,n.height);t.ctrlKey||t.metaKey?E(e=>hl(e,t.clientX-n.left,t.clientY-n.top,bl(r.y)),{manual:!0}):E(e=>({...e,x:e.x-(t.shiftKey?r.y:r.x),y:e.y-(t.shiftKey?0:r.y)}),{manual:!0})};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[]);let D=e=>{e.pointerType===`mouse`&&e.button!==0||e.target.closest?.(`button,a,input,textarea,select,iframe,.aha-canvasBar`)||(S.current.pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),S.current.drag||(S.current.drag={x:e.clientX,y:e.clientY,moved:!1}),u.current?.setPointerCapture?.(e.pointerId))},O=e=>{let{pointers:t,drag:n}=S.current,r=t.get(e.pointerId);if(!r)return;let i={x:e.clientX,y:e.clientY};if(t.size===1){if(!n.moved&&Math.hypot(i.x-n.x,i.y-n.y)<4)return;n.moved=!0,x(!0),t.set(e.pointerId,i),E(e=>({...e,x:e.x+i.x-r.x,y:e.y+i.y-r.y}),{manual:!0});return}let a=[...t.entries()].find(([t])=>t!==e.pointerId)?.[1];if(t.set(e.pointerId,i),!a)return;let o=u.current.getBoundingClientRect(),s={x:(r.x+a.x)/2,y:(r.y+a.y)/2,d:Math.hypot(r.x-a.x,r.y-a.y)},c={x:(i.x+a.x)/2,y:(i.y+a.y)/2,d:Math.hypot(i.x-a.x,i.y-a.y)};n.moved=!0,E(e=>{let t=hl(e,s.x-o.left,s.y-o.top,c.d/Math.max(1,s.d));return{...t,x:t.x+c.x-s.x,y:t.y+c.y-s.y}},{manual:!0})},k=e=>{S.current.pointers.delete(e.pointerId),S.current.pointers.size||(S.current.drag=null,x(!1))},A=(e,t)=>E(gl(S.current.size,e,{margin:16,maxZoom:t}),{animate:!0,manual:!0}),ee=e=>{let t=e.target.closest?.(`.aha-frame`);t&&A({x:t.offsetLeft,y:t.offsetTop,width:t.offsetWidth,height:t.offsetHeight})},te=e=>E(t=>hl(t,S.current.size.width/2,S.current.size.height/2,e),{animate:!0,manual:!0}),ne=()=>A({x:0,y:0,...T()},1),j=()=>E(e=>({...hl(e,S.current.size.width/2,S.current.size.height/2,1/e.k),x:16}),{animate:!0,manual:!0});(0,r.useLayoutEffect)(()=>{if(!_||!n||!p.height)return;let e=d.current?.querySelector(`[data-frame="${a}"]`);if(!e)return;let t=l?.t===`mark`?l.ref:l?.id,r=e.querySelectorAll(`[data-op]`),i=t?d.current.querySelector(`[data-op="${t}"]`):l?null:r[r.length-1]??null,o=e.offsetTop;for(let t=i;t&&t!==e;t=t.offsetParent)o+=t.offsetTop;let c=i?.offsetHeight??0,u=C.current!==a;C.current=a;let f=s>0&&!l?{bottom:s+16,end:!0}:void 0;g(t=>{let n=t.k===1&&t.x===16?t:{x:16,y:t.y,k:1},r=n.y;return(u||!i)&&(r+=16-(r+e.offsetTop)),i&&(r+=_l(S.current.size,{top:r+o,height:c},f)),r===t.y&&n===t?t:{...n,y:r,animate:!0}})},[l?`${l.id}:${Math.round((n?.progress??0)*4)}`:`page:${a}`,a,_,p.width,p.height,s]);let re=t.pages.map((e,t)=>t).filter(e=>!n||e<=a);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`div`,{ref:u,className:`aha-canvas`,"data-panning":b?`true`:void 0,onPointerDown:D,onPointerMove:O,onPointerUp:k,onPointerCancel:k,onDoubleClick:ee,children:(0,i.jsxs)(`div`,{ref:d,className:`aha-canvasWorld`,style:{width:w,transform:`translate(${h.x}px, ${h.y}px) scale(${h.k})`,transition:h.animate?`transform .45s ease`:`none`},children:[re.map(n=>(0,i.jsx)(Ou,{index:n,page:t.pages[n],title:e.titles.get(n),board:e,signature:Du(t.pages[n],e.titles.get(n),e),activeRef:n===a?f:null,label:c(`canvasPage`,{n:n+1})},n)),(0,i.jsx)(wu,{target:f,stage:d,scale:h.k,active:o})]})}),(0,i.jsxs)(`div`,{className:`aha-canvasBar`,role:`toolbar`,"aria-label":c(`canvasTools`),title:c(`canvasHelp`),children:[!_&&n?(0,i.jsx)(`button`,{type:`button`,className:`aha-canvasFollow`,onClick:()=>y(!0),children:c(`canvasFollow`)}):null,(0,i.jsx)(`button`,{type:`button`,"aria-label":c(`canvasZoomOut`),title:c(`canvasZoomOut`),onClick:()=>te(1/pl),children:`−`}),(0,i.jsxs)(`button`,{type:`button`,className:`aha-canvasZoom`,title:c(`canvasZoomReset`),onClick:j,children:[Math.round(h.k*100),`%`]}),(0,i.jsx)(`button`,{type:`button`,"aria-label":c(`canvasZoomIn`),title:c(`canvasZoomIn`),onClick:()=>te(pl),children:`+`}),(0,i.jsx)(`button`,{type:`button`,title:c(`canvasFit`),onClick:ne,children:c(`canvasFitShort`)})]})]})}function ju({steps:e,position:t,theme:n=`light`,font:a=`hand`,buffering:o=!1,bufferingLabel:s=``,view:c=`canvas`,onInteract:l,cover:u=0}){let{t:d}=v(),f=(0,r.useMemo)(()=>du(e),[e]),p=(0,r.useMemo)(()=>a===`hand`?pu(e):``,[e,a]);(0,r.useEffect)(()=>{if(!(!p||typeof document>`u`||!document.fonts?.load))for(let e of[`Aha Hand Latin`,`Aha Hand`])document.fonts.load(`20px '${e}'`,p).catch(()=>void 0)},[p]);let m=(0,r.useMemo)(()=>{let t=new Map;return e.forEach((e,n)=>e.ops.forEach((r,i)=>t.set(r.id,{stepIndex:n,opIndex:i,aside:e.aside===!0}))),t},[e]),h=(0,r.useMemo)(()=>{let t=new Map;for(let n of e)for(let e of n.ops)if(e.t===`title`){let n=f.where.get(e.id);n&&!t.has(n.page)&&t.set(n.page,e)}return t},[e,f]),g=t&&e[t.index]?.ops[t.op],_=g?f.where.get(g.id)?.page??0:t?Nu(f,e,t):0,y=e=>{let n=m.get(e);return n?mu(n.stepIndex,n.opIndex,t):0},b=new Map;e.forEach(e=>e.ops.forEach(e=>{if(e.t!==`mark`)return;let t=y(e.id);if(t<=0)return;let n=b.get(e.ref)??[];n.push({id:e.id,style:e.style,reveal:t}),b.set(e.ref,n)}));let x={reveal:y,marks:b,nowIds:new Set(t?.now??[]),opMeta:m,activeOp:g,theme:n,titles:h,onInteract:l,fixedNote:e=>({label:d(`fixed`),title:d(`fixedWas`,{was:e.fixed.was})}),figureLabels:(0,r.useMemo)(()=>({missing:d(`figureMissing`),redrawing:d(`figureRedrawing`),animation:d(`animationFailed`)}),[d])},S=g&&t&&t.progress<1&&Tu.has(g.t)?t:null;return(0,i.jsxs)(`div`,{className:`aha-board`,"data-theme":n,"data-font":a,"data-view":c===`pages`?`pages`:`canvas`,children:[(0,i.jsx)(c===`pages`?ku:Au,{board:x,layout:f,position:t,activePage:_,pencil:S,cover:u}),o?(0,i.jsxs)(`div`,{className:`aha-buffering`,children:[(0,i.jsx)(`span`,{className:`aha-spinner`}),s]}):null]})}function Mu({steps:e,title:t=``,theme:n=`light`,font:a=`hand`,footer:o={},animationLabel:s=``,fixedLabel:c=``,figureLabels:l=gu}){let u=(0,r.useMemo)(()=>du(e),[e]),d=(0,r.useMemo)(()=>new Set(e.flatMap(e=>e.aside?e.ops.map(e=>e.id):[])),[e]),f=(0,r.useMemo)(()=>{let t=new Map;for(let n of e)for(let e of n.ops)e.t===`mark`&&t.set(e.ref,[...t.get(e.ref)??[],{id:e.id,style:e.style,reveal:1}]);return t},[e]),p=u.pages.filter(e=>e.columns.some(e=>e.length));return p.map((e,r)=>{let u=e.title||(r===0?t:``);return(0,i.jsxs)(`div`,{className:`aha-board aha-exportPage`,"data-theme":n,"data-font":a,"data-sheet":r,children:[u?(0,i.jsx)(`h2`,{className:`aha-boardTitle`,children:(0,i.jsx)(`span`,{children:(0,i.jsx)(hu,{text:u})})}):null,(0,i.jsx)(`div`,{className:`aha-cols`,children:e.columns.map((e,t)=>(0,i.jsx)(`div`,{className:`aha-colBody`,children:e.map(({op:e})=>(0,i.jsx)(Cu,{op:e,reveal:1,marks:f.get(e.id)??[],aside:d.has(e.id),now:!1,theme:n,still:!0,animationLabel:s,fixedNote:c?()=>({label:c}):void 0,figureLabels:l},e.id))},t))}),(0,i.jsxs)(`div`,{className:`aha-exportFoot`,children:[(0,i.jsx)(`span`,{children:o.left??``}),(0,i.jsx)(`span`,{children:[o.right,`${r+1} / ${p.length}`].filter(Boolean).join(` · `)})]})]},r)})}function Nu(e,t,n){let r=0;return t.forEach((t,i)=>t.ops.forEach((t,a)=>{mu(i,a,n)>0&&(r=Math.max(r,e.where.get(t.id)?.page??0))})),r}function Pu({speech:e,onChange:t,onNarration:n,now:r=()=>performance.now(),frame:i,cancelFrame:a,startIndex:o=0}){let s=i??(e=>requestAnimationFrame(e)),c=a??(e=>cancelAnimationFrame(e)),l=[],u=!1,d=1,f=null,p=null,m=new Set,h={index:Math.max(0,o),op:0,progress:0,sentence:0,status:`idle`},g=()=>{if(!p?.synced||h.status!==`playing`&&h.status!==`paused`)return[];let e=Math.max(0,p.sentences.length-1);return p.step.ops.filter((t,n)=>n<=h.op&&Math.min(t.at,e)===h.sentence).map(e=>e.t===`mark`?e.ref:e.id)},_=()=>({...h,total:l.length,complete:u,rate:d,step:l[h.index]??null,now:g()}),v=()=>t?.(_());function y(){f!==null&&c(f),f=null}function b(){y(),e?.cancel?.();let t=l[h.index];if(!t){h.status=u?`ended`:`buffering`,v();return}h.op=0,h.progress=0,h.sentence=0,h.status=`playing`;let i=vt(t,{rate:d}),a=cu(t.say).map(au),o=!!t.say&&t.ops.some(e=>Number.isInteger(e.at));p={step:t,timing:i,startedAt:r(),elapsedBefore:0,speechDone:!t.say,silentUntil:null,token:{},sentences:a,exactSentence:!1,synced:o,written:0,lastTime:0,finishAt:null};let s=p.token;t.say&&((e?.speak(au(t.say),{rate:d,sentences:a,onSentence:e=>{!p||p.token!==s||(p.exactSentence=!0,h.sentence!==e&&(h.sentence=e,v()))}})??{done:Promise.resolve({silent:!0})}).done.then(e=>{!p||p.token!==s||(e?.silent||e?.error?p.silentUntil=ht(t.say,d)*.8:p.speechDone=!0,n?.(e))}),e?.prefetch?.(au(l[h.index+1]?.say??``))),v(),C()}function x(e){let t=p?.sentences??[];if(t.length<2)return 0;if(p.speechDone)return t.length-1;let n=ht(p.step.say,d),r=t.map(e=>[...e].length),i=r.reduce((e,t)=>e+t,0)||1,a=0;for(let t=0;t<r.length;t+=1)if(a+=r[t],e<a/i*n)return t;return t.length-1}function S(){return p?p.elapsedBefore+(h.status===`playing`?r()-p.startedAt:0):0}function C(){f=s(T)}function w(e,t,n){if(!p.synced)return e;let r=Math.max(0,e-p.lastTime);p.lastTime=e;let i=Math.max(0,p.sentences.length-1),a=p.speechDone?1/0:t,o=0,s=0;for(;o<n.length&&Math.min(p.step.ops[o].at,i)<=a;)s+=n[o],o+=1;return p.written=Math.min(p.written+r,s),p.written}function T(){if(f=null,h.status!==`playing`||!p)return;let e=S(),t=p.timing.writeMs;p.silentUntil!==null&&e>=p.silentUntil&&(p.speechDone=!0);let n=p.exactSentence?h.sentence:x(e),r=w(e,n,t),i=0,a=t.length,o=1;for(let e=0;e<t.length;e+=1){if(r<i+t[e]){a=e,o=t[e]?(r-i)/t[e]:1;break}i+=t[e]}let s=a!==h.op||Math.abs(o-h.progress)>.002||n!==h.sentence;if(h.op=a,h.sentence=n,h.progress=Math.min(1,Math.max(0,o)),a>=t.length&&p.speechDone&&(p.finishAt??=p.synced?e+450:i+450,e>=p.finishAt)){E();return}s&&v(),C()}function E(){let e=l[h.index];if(h.op=e?.ops.length??0,h.progress=1,e?.check&&!m.has(e.check.id)){h.status=`check`,v();return}D()}function D(){h.index+=1,b()}return{get state(){return _()},setSteps(e,{done:t=!1}={}){l=e,u=t,h.status===`buffering`&&l[h.index]?b():(h.status===`buffering`&&u&&(h.status=`ended`),v())},play(){if(h.status!==`playing`){if(h.status===`paused`&&p){h.status=`playing`,p.startedAt=r(),e?.resume?.(),v(),C();return}h.status===`ended`&&(h.index=0),h.status!==`check`&&b()}},pause(){h.status!==`playing`||!p||(p.elapsedBefore=S(),h.status=`paused`,y(),e?.pause?.(),v())},toggle(){h.status===`playing`?this.pause():this.play()},next(){let t=l[h.index];h.status===`check`&&t?.check&&m.add(t.check.id),t&&(y(),e?.cancel?.(),D())},prev(){y(),e?.cancel?.();let t=h.op===0&&h.progress<.05;h.index=Math.max(0,Math.min(l.length-1,t?h.index-1:h.index)),b()},seek(t){y(),e?.cancel?.(),h.index=Math.min(Math.max(0,t),Math.max(0,l.length)),b()},answer(e){m.add(e),h.status===`check`&&D()},setRate(t){let n=Math.min(2,Math.max(.5,Number(t)||1));if(p&&h.status===`playing`){let e=S(),t=d/n;p.elapsedBefore=e*t,p.startedAt=r(),p.timing=vt(p.step,{rate:n}),p.written*=t,p.lastTime=p.elapsedBefore,p.finishAt=null}d=n,e?.setRate?.(n),v()},insertAfterCurrent(e){if(!e?.length)return l;let t=Math.min(l.length,h.index+1);return l=[...l.slice(0,t),...e,...l.slice(t)],v(),l},dispose(){y(),e?.cancel?.(),p=null}}}function Fu(e,t,n,r=!1){if(!n)return[];if(!e.some(e=>Number.isInteger(e.goal)))return null;if(r)return Array(n).fill(`done`);let i=Array(n).fill(-1);e.forEach((e,t)=>{Number.isInteger(e.goal)&&e.goal<n&&(i[e.goal]=Math.max(i[e.goal],t))});let a=e[t]?.goal;return i.map((e,n)=>a===n?`current`:e>=0&&t>e?`done`:`todo`)}function Iu(e,t,n=[]){let r=[],i=e=>[`question`,`correction`,`challenge`].includes(e.kind)?e.kind:`reexplain`,a=new Set,o=e=>n.find(t=>e.startsWith(`${t.id}_`));e.forEach((e,n)=>{if(!(n>t)){if(e.aside){let t=o(e.id);t&&!a.has(t.id)&&(a.add(t.id),r.push({key:`${t.id}:ask`,kind:i(t),text:t.label,stepIndex:n,aside:!0}))}e.say&&r.push({key:e.id,kind:`say`,text:e.say,stepIndex:n,aside:e.aside===!0})}});for(let e of n)e.streaming&&!e.steps.length&&r.push({key:`${e.id}:ask`,kind:i(e),text:e.label,stepIndex:-1,aside:!0,pending:!0});return r}function Lu(e,t,n=null){let r=Math.min(t,e.length-1);for(;r>0&&e[r]?.aside;)--r;let i=e[r]?.id;return i?n&&e.findIndex(e=>e.id===n)>=r?n:i:n}let Ru=Object.freeze([{target:`.aha-stage`,title:`tourBoardTitle`,text:`tourBoard`},{target:`.aha-controls`,title:`tourControlsTitle`,text:`tourControls`},{target:`[data-tour=raise]`,title:`tourRaiseTitle`,text:`tourRaise`},{target:`[data-tour=reexplain]`,title:`tourReexplainTitle`,text:`tourReexplain`},{target:`[data-tour=challenge]`,title:`tourChallengeTitle`,text:`tourChallenge`},{target:`.aha-panel`,title:`tourPanelTitle`,text:`tourPanel`}]);function zu(e,t,n){let r=(e,t)=>Math.max(8,Math.min(e,t-8)),i=r(e.x,n.width-t.width);return e.y+e.height+12+t.height<=n.height-8?{x:i,y:e.y+e.height+12,side:`below`}:e.y-12-t.height>=8?{x:i,y:e.y-12-t.height,side:`above`}:{x:r(e.x+e.width-t.width-12,n.width-t.width),y:r(e.y+e.height-t.height-12,n.height-t.height),side:`inside`}}function Bu(e,t,n=6){let r=Math.max(0,e.x-n),i=Math.max(0,e.y-n);return{x:r,y:i,width:Math.min(t.width,e.x+e.width+n)-r,height:Math.min(t.height,e.y+e.height+n)-i}}function Vu({root:e,onDone:t}){let{t:n}=v(),[a,o]=(0,r.useState)(0),[s,c]=(0,r.useState)(null),l=(0,r.useRef)(null),[u]=(0,r.useState)(()=>Ru.filter(t=>e.current?.querySelector(t.target))),d=u[a];(0,r.useLayoutEffect)(()=>{let t=e.current;if(!t||!d)return;let n=()=>{let e=t.querySelector(d.target);if(!e)return;let n=t.getBoundingClientRect(),r=e.getBoundingClientRect(),i={width:n.width,height:n.height},a=Bu({x:r.left-n.left,y:r.top-n.top,width:r.width,height:r.height},i),o=l.current?.getBoundingClientRect(),s=zu(a,{width:o?.width??320,height:o?.height??150},i);c({hole:a,place:s})};t.querySelector(d.target)?.scrollIntoView?.({block:`nearest`}),n();let r=requestAnimationFrame(n),i=typeof ResizeObserver==`function`?new ResizeObserver(n):null;return i?.observe(t),()=>{cancelAnimationFrame(r),i?.disconnect()}},[a,d]);let f=()=>a+1<u.length?o(a+1):t(),p=()=>o(Math.max(0,a-1));return(0,r.useEffect)(()=>{let e=e=>{if(e.key===`Escape`)t();else if(e.key===`ArrowRight`||e.key===`Enter`)f();else if(e.key===`ArrowLeft`)p();else if(e.key!==` `)return;e.preventDefault(),e.stopImmediatePropagation()};return window.addEventListener(`keydown`,e,!0),()=>window.removeEventListener(`keydown`,e,!0)}),(0,r.useEffect)(()=>{d||t()},[d]),d?(0,i.jsxs)(`div`,{className:`aha-tour`,role:`dialog`,"aria-modal":`true`,"aria-label":n(`tourLabel`),children:[s?(0,i.jsx)(`div`,{className:`aha-tourHole`,style:{left:s.hole.x,top:s.hole.y,width:s.hole.width,height:s.hole.height}}):null,(0,i.jsxs)(`div`,{ref:l,className:`aha-tourCard`,"data-side":s?.place.side,style:s?{left:s.place.x,top:s.place.y}:{visibility:`hidden`},children:[(0,i.jsx)(`b`,{children:n(d.title)}),(0,i.jsx)(`p`,{children:n(d.text)}),(0,i.jsxs)(`div`,{className:`aha-tourActions`,children:[(0,i.jsxs)(`span`,{className:`aha-hint`,children:[a+1,` / `,u.length]}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:t,children:n(`tourSkip`)}),a>0?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:p,children:n(`tourBack`)}):null,(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,"data-size":`sm`,autoFocus:!0,onClick:f,children:a+1<u.length?n(`tourNext`):n(`tourStart`)})]})]})]}):null}function Hu({label:e}){return(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:8},children:[(0,i.jsx)(`span`,{className:`aha-spinner`}),e?(0,i.jsx)(`span`,{className:`aha-hint`,children:e}):null]})}function Uu({value:e}){return(0,i.jsx)(`div`,{className:`aha-progress`,children:(0,i.jsx)(`div`,{style:{width:`${Math.max(0,Math.min(100,e))}%`}})})}function Wu({progress:e,label:t,detail:n,onCancel:r}){let{t:a}=v(),o=e?.total?Math.round(e.done/e.total*100):0;return(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:6},children:[(0,i.jsx)(Hu,{label:t}),n?(0,i.jsx)(`span`,{className:`aha-hint`,children:n}):e?.total?(0,i.jsx)(Uu,{value:o}):null,r?(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:r,children:a(`cancel`)}),(0,i.jsx)(`span`,{className:`aha-hint`,children:a(`keepsRunning`)})]}):null]})}function Gu({kind:e,job:t}){let{t:n}=v(),r=t.progress,a=t.preview?.written??0,o=e===`quiz`,s=n(`generating`);return r?.label===`reading`&&(o||e===`cards`)&&(r.total>1?s=n(o?`studyPartsQuiz`:`studyPartsCards`,{done:r.done,total:r.total,count:a}):a&&(s=n(o?`quizWriting`:`cardsWriting`,{count:a}))),(0,i.jsxs)(`div`,{className:`aha-row`,style:{gap:8},children:[(0,i.jsx)(Hu,{label:s}),t.running?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:t.cancel,children:n(`cancel`)}):null]})}function Ku({title:e,onClose:t,children:n,footer:r,width:a}){return(0,i.jsx)(`div`,{className:`aha-modalBack`,onMouseDown:e=>{e.target===e.currentTarget&&t?.()},children:(0,i.jsxs)(`div`,{className:`aha-modal`,role:`dialog`,"aria-label":e,style:a?{width:`min(${a}px,100%)`}:void 0,children:[e?(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:e}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:t,"aria-label":`close`,children:`✕`})]}):null,n,r?(0,i.jsx)(`div`,{className:`aha-row`,style:{justifyContent:`flex-end`},children:r}):null]})})}function qu({text:e,onConfirm:t,onCancel:n,danger:r=!1}){let{t:a}=v();return(0,i.jsx)(Ku,{title:a(`confirm`),onClose:n,footer:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:n,children:a(`cancel`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":r?`danger`:`primary`,onClick:t,children:a(`confirm`)})]}),children:(0,i.jsx)(`p`,{children:e})})}function Ju(e,t){let n=String(t?.code??``).replace(/^aha-tutor\//u,``),r=`err_${n}`;return n&&e(r)!==r?e(r):e(`errorGeneric`,{message:t?.message??String(t)})}function Yu({error:e,style:t,reveal:n=!1}){let{t:a}=v(),o=(0,r.useRef)(null);return(0,r.useEffect)(()=>{n&&e&&o.current?.scrollIntoView?.({block:`nearest`})},[n,e]),e?(0,i.jsx)(`div`,{ref:o,className:`aha-error`,role:`alert`,style:t,title:e.message??void 0,children:Ju(a,e)}):null}function Xu({children:e}){return(0,i.jsx)(`div`,{className:`aha-empty`,children:e})}function Zu(){let{api:e}=v(),[t,n]=(0,r.useState)(null),[i,a]=(0,r.useState)(null),[o,s]=(0,r.useState)(null),[c,l]=(0,r.useState)(null);async function d(t){l(t?.job?.id??null);try{return await e.follow(t,{onProgress:s})}finally{l(null),s(null)}}async function f(t){try{let e=await fetch(new URL(`api/aha-tutor/upload?name=${encodeURIComponent(t.name)}`,document.baseURI),{method:`POST`,credentials:`same-origin`,headers:{"content-type":t.type||`application/octet-stream`},body:t});if(e.status!==404){let t=await e.json();if(!t?.ok)throw new u(t?.error?.code??`failed`,t?.error?.message??`Upload failed`);return(await d(t.value)).material}}catch(e){if(e?.message!==`Failed to fetch`)throw e}let n=await p(t);return(await d(await e.call(`material/upload`,{name:t.name,base64:n}))).material}async function m(e){let t=[];a(null);for(let r of e){n(r.name);try{t.push(await f(r))}catch(e){if(e?.code===`cancelled`)break;a(e)}}return n(null),t}async function h(t){n(t),a(null);try{return[(await d(await e.call(`material/url`,{url:t}))).material]}catch(e){return e?.code!==`cancelled`&&a(e),[]}finally{n(null)}}return{upload:m,addUrl:h,busy:t,error:i,progress:o,cancel:c?()=>e.cancel(c):null}}function Qu(e,t,n){return n?.label===`recognizing`&&n.total?e(`readingPictures`,{done:n.done,total:n.total,name:t}):n?.label===`summarizing`?e(`summarizingMaterial`,{name:t}):`${e(`reading`)} ${t}`}function $u({onAdded:e,compact:t=!1}){let{t:n}=v(),a=(0,r.useRef)(null),[o,s]=(0,r.useState)(``),[c,l]=(0,r.useState)(!1),{upload:u,addUrl:d,busy:f,error:p,progress:m,cancel:h}=Zu(),g=async t=>{let n=await u([...t]);n.length&&e?.(n)};return(0,i.jsxs)(`div`,{className:`aha-col`,children:[(0,i.jsxs)(`div`,{className:`aha-empty`,style:{padding:t?14:24,borderColor:c?`var(--aha-brand)`:void 0,cursor:`pointer`},onClick:()=>a.current?.click(),onDragOver:e=>{e.preventDefault(),l(!0)},onDragLeave:()=>l(!1),onDrop:e=>{e.preventDefault(),l(!1),g(e.dataTransfer.files)},children:[(0,i.jsxs)(`div`,{className:`aha-row`,style:{justifyContent:`center`},children:[(0,i.jsx)(Ht,{name:`upload`}),n(`dropHere`)]}),(0,i.jsx)(`input`,{ref:a,type:`file`,multiple:!0,accept:`.pdf,.docx,.pptx,.md,.markdown,.txt,.csv,.json,.tex,.py,.js,.ts,.html,.png,.jpg,.jpeg,.webp,.gif`,hidden:!0,onChange:e=>{g(e.currentTarget.files),e.currentTarget.value=``}})]}),(0,i.jsxs)(`form`,{className:`aha-row`,onSubmit:async t=>{if(t.preventDefault(),!o.trim())return;let n=await d(o.trim());n.length&&(s(``),e?.(n))},children:[(0,i.jsx)(`input`,{className:`aha-input`,style:{flex:1},value:o,placeholder:n(`urlPlaceholder`),onChange:e=>s(e.currentTarget.value)}),(0,i.jsxs)(`button`,{type:`submit`,className:`aha-btn`,disabled:!o.trim()||!!f,children:[(0,i.jsx)(Ht,{name:`link`}),n(`addUrl`)]})]}),f?(0,i.jsxs)(`div`,{className:`aha-row`,style:{gap:8},children:[(0,i.jsx)(Hu,{label:Qu(n,f,m)}),h?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:h,children:n(`cancel`)}):null]}):null,(0,i.jsx)(Yu,{error:p})]})}function ed({selected:e,onChange:t,onClose:n,exclude:r=[],max:a=8}){let{api:o,t:s}=v(),c=y(()=>o.call(`material/list`),[]),l=n=>t(e.includes(n)?e.filter(e=>e!==n):[...e,n].slice(0,a));return(0,i.jsxs)(Ku,{title:s(`pickMaterials`),onClose:n,width:640,footer:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:n,children:s(`confirm`)}),children:[(0,i.jsx)($u,{compact:!0,onAdded:n=>{c.reload(),t([...e,...n.map(e=>e.id)].slice(0,a))}}),c.loading&&!c.value?(0,i.jsx)(Hu,{label:s(`loading`)}):null,(0,i.jsx)(`div`,{className:`aha-col`,style:{gap:6,maxHeight:320,overflow:`auto`},children:(c.value??[]).filter(e=>!r.includes(e.id)).map(t=>(0,i.jsxs)(`label`,{className:`aha-option`,style:{flexDirection:`row`,alignItems:`center`,gap:10},children:[(0,i.jsx)(`input`,{type:`checkbox`,checked:e.includes(t.id),onChange:()=>l(t.id)}),(0,i.jsxs)(`span`,{className:`aha-col`,style:{gap:0},children:[(0,i.jsx)(`b`,{children:t.title}),(0,i.jsx)(`small`,{children:td(t,s)})]})]},t.id))})]})}function td(e,t){let n=[e.kind.toUpperCase()];e.pages&&n.push(t(`pages`,{count:e.pages})),e.slides&&n.push(t(`slides`,{count:e.slides}));let r=e.ocr?.read??0;return r&&e.kind===`image`?n.push(e.chars?t(`readPhoto`):t(`photoNoText`)):r?n.push(e.pages?t(`readScanPages`,{count:r}):t(`readPictures`,{count:r})):e.kind===`image`&&n.push(t(`imageNeedsVision`)),nd(e,t).length&&n.push(t(`readPartly`)),n.join(` · `)}function nd(e,t){let n=e.ocr;if(!n)return[];let r=[],i=!!e.pages;if(n.unread&&r.push(t(i?`unreadPages`:`unreadPictures`,{count:n.unread})),n.failed?.length){let a=[...new Set(n.failed.map(e=>e.page??e.slide??e.picture))].join(t(`listJoin`)),o=t(e.kind===`image`?`failedPhoto`:i?`failedPages`:e.slides?`failedSlides`:`failedPictures`,{list:a});r.push(n.reason?t(`failedWhy`,{what:o,reason:Ju(t,{code:n.reason})}):t(`failedRetry`,{what:o}))}return n.left&&r.push(t(i?`leftPages`:`leftPictures`,{count:n.left})),r}function rd(e,{page:t,end:n,label:r,endLabel:i}){let a=r??t,o=n&&n!==t?i??n:null;return{text:o&&String(o)!==String(a)?e(`pagesN`,{from:a,to:o}):e(`pageN`,{page:a}),pdf:r&&r!==String(t)||i&&i!==String(n)?o?e(`pdfPagesN`,{from:t,to:n}):e(`pdfPageN`,{page:t}):void 0}}function id(e){let{t}=v(),{text:n,pdf:r}=rd(t,e);return(0,i.jsx)(`span`,{className:`aha-pageRef`,title:r,"data-pdf":r?`true`:void 0,children:n})}function ad({sources:e}){let{t}=v(),n=(e??[]).map(e=>({source:e,words:e.page?rd(t,e):null})).filter(({source:e,words:t})=>t||e.title);if(!n.length)return null;let r=n.map(({source:e,words:t})=>t?.text??e.title).join(t(`listJoin`)),a=n.map(({source:e,words:t})=>[e.materialTitle,e.title,t?.text,t?.pdf].filter(Boolean).join(` · `)).join(`
269
+ `);return(0,i.jsxs)(`span`,{className:`aha-lessonSource`,title:`${t(`lessonSourcesTitle`)}\n${a}`,children:[`📖 `,r]})}function od({material:e}){let{t}=v(),n=e.outline?.entries??[];return n.length?(0,i.jsxs)(`details`,{className:`aha-outline`,children:[(0,i.jsxs)(`summary`,{children:[t(`outlineTitle`,{count:n.length}),(0,i.jsxs)(`span`,{className:`aha-hint`,children:[` · `,t(e.outline.source===`bookmarks`?`outlineBookmarks`:`outlineHeadings`),e.printed?` · ${t(`outlinePrinted`)}`:``]})]}),(0,i.jsx)(`ol`,{children:n.map((e,t)=>(0,i.jsxs)(`li`,{"data-level":e.level,children:[(0,i.jsx)(`span`,{className:`aha-outlineTitle`,children:e.title}),e.page?(0,i.jsx)(id,{page:e.page,end:e.end,label:e.label,endLabel:e.endLabel}):null]},t))})]}):null}function sd({sources:e}){return(0,i.jsx)(`ol`,{className:`aha-sourceList`,children:(e??[]).filter(e=>/^https?:\/\//iu.test(String(e?.url??``))).map(e=>(0,i.jsxs)(`li`,{children:[(0,i.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,children:e.title||e.url}),(0,i.jsxs)(`span`,{className:`aha-hint`,children:[` · `,new URL(e.url).hostname]}),e.snippet?(0,i.jsx)(`p`,{className:`aha-hint`,children:e.snippet}):null]},e.url))})}function cd({title:e,emoji:t}){return e?(0,i.jsxs)(`span`,{className:`aha-hint`,title:e,children:[` · `,t?`${t} `:``,We(e)]}):null}function ld({value:e,stage:t,label:n}){let r=t===`none`?0:Math.round((Number(e)||0)/20),a=n?t===`none`?n:`${n} · ${Math.round(e??0)}%`:`${Math.round(e??0)}%`;return(0,i.jsx)(`span`,{className:`aha-meter`,title:a,"aria-label":a,role:`img`,"data-stage":t,children:[0,1,2,3,4].map(e=>(0,i.jsx)(`i`,{"data-on":e<r},e))})}function ud(e){return navigator.clipboard?.writeText(e).catch(()=>void 0)}let dd=Object.freeze({wrong:`itemCheck_wrong`,unclear:`itemCheck_unclear`,misgraded:`itemCheck_misgraded`,right:`itemCheck_right`});function fd({courseId:e,lessonId:t,unitId:n,deckId:r,conceptId:i}={},a){return a?.id?a.context?a.context.source??null:r?{kind:`deck`,deckId:r,itemId:a.id}:e&&n?{kind:`quiz`,courseId:e,unitId:n,itemId:a.id}:e&&i?{kind:`drill`,courseId:e,conceptId:i,itemId:a.id}:e&&t?{kind:`practice`,courseId:e,lessonId:t,itemId:a.id}:null:null}let pd=(e,t=160)=>{let n=[...String(e??``).replace(/\s+/gu,` `).trim()];return n.length>t?`${n.slice(0,t).join(``)}…`:n.join(``)};function md(e,t=e?.answer){return e.kind===`choice`?(t=>{let n=e.options?.find(e=>e.id===t);return n?`${t.toUpperCase()}. ${n.text}`:String(t??``).toUpperCase()})(t):e.kind===`multi`?(Array.isArray(t)?t:[]).map(e=>String(e).toUpperCase()).join(`, `):e.kind===`order`?(Array.isArray(t)?t:[]).map(t=>e.options?.find(e=>e.id===t)?.text??t).join(` → `):e.kind===`number`?`${t}${e.unit?` ${e.unit}`:``}`:e.kind===`blank`?(Array.isArray(t)?t:[t]).join(` / `):pd(t)}function hd(e,t=e?.answer,n=!1){let r=t=>{let n=e.options?.find(e=>e.id===t);return n?`${String(t).toUpperCase()}. ${pd(n.text,120)}`:String(t).toUpperCase()},i=(Array.isArray(t)?t:[t]).filter(e=>e!=null&&e!==``);if(e.kind===`choice`||e.kind===`multi`)return i.map(r).join(` / `);if(e.kind===`order`)return i.map(t=>pd(e.options?.find(e=>e.id===t)?.text??t,80)).join(` → `);let a=i.map(e=>String(e).trim()).filter(Boolean).join(` / `);return a?e.kind===`number`?n||!e.unit?pd(a,60):`${a} ${e.unit}`:pd(a,e.kind===`blank`?160:300):``}let gd=[`short`,`work`];function _d(e,{topic:t=``,items:n=[],results:r=[]}={}){let i=new Map(r.map(e=>[e.index,e])),a=r.filter(e=>e.correct).length,o=[`${t?`${pd(t,40)} `:``}${e(`practiceDone`,{correct:a,total:n.length})}`];return n.forEach((t,n)=>{o.push(`${n+1}. ${pd(t.prompt,120)}`);let r=i.get(n);if(!r){o.push(` ${e(`quizReportSkipped`)}`);return}let a=r.correct?`✔`:r.partial?`◐`:`✘`;o.push(` ${a} ${e(`quizReportGiven`,{answer:hd(t,r.given??r.response,!0)||`—`})}`);let s=r.correct?``:hd(t);s&&o.push(` ${e(gd.includes(t.kind)?`quizReportModel`:`quizReportKey`,{answer:s})}`),r.feedback&&o.push(` ${e(`quizReportFeedback`,{text:pd(r.feedback,240)})}`)}),o.join(`
270
+ `)}function vd(e,t){let n=t?.fixed?.was;if(!n)return[];let r=[];n.prompt!==void 0&&r.push(e(`fixedPart_prompt`,{text:pd(n.prompt)||`—`}));for(let[t,i]of Object.entries(n.options??{}))r.push(e(`fixedPart_option`,{id:t.toUpperCase(),text:pd(i,80)}));if(n.answer!==void 0){let i=t.options?.map(e=>({...e,text:n.options?.[e.id]??e.text}));r.push(e(`fixedPart_answer`,{text:n.answer===null?`—`:md({...t,options:i,unit:n.unit??t.unit},n.answer)}))}return n.unit!==void 0&&n.answer===void 0&&r.push(e(`fixedPart_unit`,{text:n.unit||`—`})),n.tolerance!==void 0&&r.push(e(`fixedPart_tolerance`,{text:n.tolerance??`—`})),n.explanation!==void 0&&r.push(e(`fixedPart_explanation`,{text:pd(n.explanation)||`—`})),n.hints!==void 0&&r.push(e(`fixedPart_hints`,{text:pd((n.hints??[]).join(` / `))||`—`})),n.rubric!==void 0&&r.push(e(`fixedPart_rubric`,{text:pd((n.rubric??[]).join(` / `))||`—`})),n.figure&&r.push(e(`fixedPart_figure`)),r}function yd(e,t,n,{lessonId:r}={}){let i=fd(e,t);if(!i||!n)return null;let a=i.courseId??null;return{request:{source:i,response:n.given??n.response??``,shown:bd(n),sig:fn(t)},record:a?{courseId:a,lessonId:t.context?.lessonId??i.lessonId??r??null,conceptIds:t.conceptIds??[]}:null}}function bd(e){return{score:Number(e?.score)||0,correct:e?.correct===!0,partial:e?.partial===!0,feedback:e?.feedback??``,wrongStep:e?.wrongStep??``,fix:e?.fix??``}}function xd(e,t,n){return{status:`done`,note:e?.note??``,verdict:t?.verdict??`right`,summary:t?.summary??``,explanation:t?.explanation??``,item:t?.item??e?.item??null,result:t?.result?{...n,...t.result,regraded:!0}:e?.result??null,earlier:(e?.earlier??0)+(Number(t?.earlier)||0)}}function Sd(e,t,n){return e.map(e=>e.index===t?{...e,...n,index:t,regraded:!0}:e)}function Cd(e,{index:t,verdict:n,regraded:r=!1,earlier:i=0,message:a}){return a===void 0?`${e(`itemCheckDone`,{n:t+1,verdict:e(dd[n]??dd.right)})}${r?e(`itemCheckRegraded`):``}${i?e(`itemCheckEarlier`,{count:i}):``}`:e(`itemCheckFailedNotice`,{n:t+1,message:a})}function wd({text:e,compact:t=!1,streaming:n=!1,className:o=``}){let{t:s}=v(),c=(0,r.useMemo)(()=>({code:{copyLabel:s(`copyCode`),copiedLabel:s(`copied`)},footnotes:s(`footnotes`)}),[s]);return(0,i.jsx)(`div`,{className:o?`aha-markdown ${o}`:`aha-markdown`,children:(0,i.jsx)(a.MarkdownText,{text:String(e??``),labels:c,streaming:n,variant:t?`compact`:`body`})})}let Td=16e3,Ed={NotAllowedError:{code:`mic-denied`},SecurityError:{code:`mic-denied`},NotFoundError:{code:`mic-missing`},OverconstrainedError:{code:`mic-missing`},NotReadableError:{code:`mic-busy`},AbortError:{code:`mic-busy`}},Dd={code:`mic-unsupported`},Od={code:`speech-audio`};function kd({code:e,device:t}){return Object.assign(Error(e),{name:`RecordingError`,code:e},t?{device:t}:{})}function Ad(){try{let e=JSON.parse(window.localStorage.getItem(`dsh.voice-input.microphone`)??`null`);if(typeof e?.id==`string`&&e.id&&typeof e.label==`string`)return{id:e.id,label:e.label.slice(0,120)}}catch{}return null}function jd(e){let t=new Uint8Array(44+e.length*2),n=new DataView(t.buffer),r=(e,n)=>{for(let r=0;r<4;r+=1)t[e+r]=n.charCodeAt(r)};r(0,`RIFF`),n.setUint32(4,36+e.length*2,!0),r(8,`WAVE`),r(12,`fmt `),n.setUint32(16,16,!0),n.setUint16(20,1,!0),n.setUint16(22,1,!0),n.setUint32(24,Td,!0),n.setUint32(28,Td*2,!0),n.setUint16(32,2,!0),n.setUint16(34,16,!0),r(36,`data`),n.setUint32(40,e.length*2,!0);for(let t=0;t<e.length;t+=1){let r=Math.max(-1,Math.min(1,Number(e[t])||0));n.setInt16(44+t*2,Math.round(r<0?r*32768:r*32767),!0)}return t}async function Md(e,t){let n=new(globalThis.AudioContext??globalThis.webkitAudioContext);try{let r=await n.decodeAudioData(await e.arrayBuffer()),i=Math.max(1,Math.floor(Math.min(r.duration,t)*Td)),a=new OfflineAudioContext(1,i,Td),o=a.createBufferSource();return o.buffer=r,o.connect(a.destination),o.start(),jd((await a.startRendering()).getChannelData(0))}finally{n.close?.()?.catch?.(()=>void 0)}}function Nd(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return btoa(t)}function Pd({maxSeconds:e=120,onLimit:t}={}){let n=null,r=null,i=[],a=null,o=0,s=!1,c=()=>{clearTimeout(a);for(let e of n?.getTracks?.()??[])e.stop();n=null};async function l(){if(!globalThis.navigator?.mediaDevices?.getUserMedia||typeof MediaRecorder!=`function`)throw kd(Dd);let l=Ad();try{n=await navigator.mediaDevices.getUserMedia({audio:{channelCount:1,echoCancellation:!0,noiseSuppression:!0,...l?{deviceId:{exact:l.id}}:{}}})}catch(e){throw l&&(e?.name===`NotFoundError`||e?.name===`OverconstrainedError`)?kd({code:`mic-chosen-missing`,device:l.label}):kd(Ed[e?.name]??Dd)}if(s){c();return}i=[],r=new MediaRecorder(n),r.ondataavailable=e=>{e.data?.size&&i.push(e.data)},r.start(250),o=performance.now(),a=setTimeout(()=>t?.(),e*1e3)}function u(){return new Promise((t,n)=>{let a=r;if(r=null,!a||a.state===`inactive`){c(),n(kd(Od));return}a.onstop=async()=>{c();try{t(await Md(new Blob(i,{type:a.mimeType||`audio/webm`}),e))}catch{n(kd(Od))}},a.stop()})}function d(){s=!0;let e=r;r=null,i=[],e&&e.state!==`inactive`&&(e.onstop=null,e.stop()),c()}return{start:l,stop:u,cancel:d,elapsed:()=>o?(performance.now()-o)/1e3:0}}function Fd(e){for(let t=e?.parentElement;t;t=t.parentElement)if(getComputedStyle(t).overflowX!==`visible`)return t;return null}function Id(e){let t=Fd(e);if(!t)return 0;e.style.width=``,e.style.transform=``;let n=t.getBoundingClientRect();e.style.width=`${Math.min(e.getBoundingClientRect().width,n.width-16)}px`;let r=e.getBoundingClientRect(),i=r.left<n.left+8?n.left+8-r.left:Math.min(0,n.right-8-r.right);return i&&(e.style.transform=`translateX(${Math.round(i)}px)`),i}function Ld(e){Id(e);let t=Fd(e);if(!t||typeof ResizeObserver!=`function`)return()=>void 0;let n=new ResizeObserver(()=>Id(e));return n.observe(t),()=>n.disconnect()}function Rd(e,{reducedMotion:t=zd()}={}){let n=e?.closest?.(`.aha-main`);if(!n||n.scrollHeight<=n.clientHeight)return!1;let r=e.getBoundingClientRect().top-n.getBoundingClientRect().top-12;return Math.abs(r)<1?!1:(n.scrollTo({top:Math.max(0,n.scrollTop+r),behavior:t?`auto`:`smooth`}),!0)}function zd(){return globalThis.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches===!0}let Bd=e=>(e?.key===`v`||e?.key===`V`)&&!e.ctrlKey&&!e.metaKey&&!e.altKey,Vd=e=>!!e?.isContentEditable||/^(input|textarea|select)$/iu.test(String(e?.tagName??``));function Hd(){let e=null,t=e=>e===`starting`||e===`recording`;return{down(n,r){return n===`idle`?(e=r,`start`):(e=null,t(n)?`stop`:null)},up(n,r){if(e===null)return null;let i=r-e;return e=null,i>=350&&t(n)?`stop`:null}}}async function Ud(e,t){try{let e=await fetch(new URL(`api/aha-tutor/speech`,document.baseURI),{method:`POST`,credentials:`same-origin`,headers:{"content-type":`audio/wav`},body:t});if(e.status!==404){let t=await e.json();if(!t?.ok)throw new u(t?.error?.code??`speech-failed`,t?.error?.message??`Speech recognition failed`);return t.value}}catch(e){if(e?.message!==`Failed to fetch`)throw e}return e.call(`speech/transcribe`,{base64:Nd(t)})}let Wd=e=>`${Math.floor(e/60)}:${String(e%60).padStart(2,`0`)}`;function Gd(e,t){return t?.code===`mic-chosen-missing`&&t.device?e(`micChosenMissing`,{name:t.device}):Ju(e,t)}let Kd=(0,r.forwardRef)(function({onText:e,onStart:t,disabled:n=!1,keyHint:a=``},o){let{api:s,t:c}=v(),[l,u]=(0,r.useState)(null),[d,f]=(0,r.useState)(`idle`),[p,m]=(0,r.useState)(0),[h,g]=(0,r.useState)(null),[_,y]=(0,r.useState)(()=>Ad()?.label??``),b=(0,r.useRef)(null),x=(0,r.useRef)(null),S=(0,r.useRef)(null),C=(0,r.useRef)(`idle`),w=(0,r.useRef)(!1),T=(0,r.useRef)(null);T.current??=Hd();let E=e=>{C.current=e,f(e)};(0,r.useLayoutEffect)(()=>h&&x.current?Ld(x.current):void 0,[h]);async function D(){let e;try{e=await s.call(`speech/status`)}catch{e={state:`off`}}return u(e),e}(0,r.useEffect)(()=>(D(),()=>b.current?.cancel()),[]),(0,r.useEffect)(()=>{if(d!==`recording`)return;let e=setInterval(()=>m(Math.floor(b.current?.elapsed()??0)),250);return()=>clearInterval(e)},[d]);async function O(){let t=b.current;if(t){b.current=null,E(`working`);try{let{text:n}=await Ud(s,await t.stop());e?.(n)}catch(e){g({text:Ju(c,e),error:!0}),/speech-(off|unprepared)$/u.test(String(e?.code??``))&&D()}finally{E(`idle`)}}}async function k(){g(null),w.current=!1,E(`starting`);let e=l?.state===`ready`?l:await D();if(e.state!==`ready`){E(`idle`),g({text:c(`voice_${e.state}`)});return}t?.();let n=Pd({maxSeconds:e.maxSeconds??120,onLimit:()=>{O()}});b.current=n,m(0);try{await n.start(),E(`recording`),w.current&&O()}catch(e){b.current=null,E(`idle`),g({text:Gd(c,e),error:!0})}}function A(){C.current===`starting`?w.current=!0:C.current===`recording`&&O()}function ee(){C.current===`recording`?O():C.current===`idle`&&k()}(0,r.useImperativeHandle)(o,()=>({press(e){if(n&&C.current===`idle`)return;let t=T.current.down(C.current,e);t===`start`?(S.current?.scrollIntoView?.({block:`nearest`}),k()):t===`stop`&&A()},release(e){T.current.up(C.current,e)===`stop`&&A()}}));let te=l!==null&&l.state!==`ready`,ne=d===`recording`,j=ne?c(`voiceStop`):te?c(`voiceSetup`):_?c(`voiceAskWith`,{name:_}):c(`voiceAsk`);return(0,i.jsxs)(`span`,{className:`aha-mic`,children:[(0,i.jsxs)(`button`,{ref:S,type:`button`,className:`aha-btn aha-micBtn`,"data-state":d,"data-unavailable":te?`true`:void 0,"aria-pressed":ne,"aria-label":c(ne?`voiceStop`:`voiceAsk`),title:a?`${j}\n${a}`:j,disabled:n&&d===`idle`||d===`starting`||d===`working`,onClick:ee,onPointerEnter:()=>y(Ad()?.label??``),children:[d===`working`?(0,i.jsx)(`span`,{className:`aha-spinner`}):(0,i.jsx)(Ht,{name:ne?`stop`:`mic`,size:16}),ne?(0,i.jsx)(`span`,{className:`aha-micTime`,children:Wd(p)}):d===`working`?(0,i.jsx)(`span`,{className:`aha-micTime`,children:c(`voiceWorking`)}):null]}),h?(0,i.jsxs)(`span`,{ref:x,className:`aha-micNote`,role:`status`,"data-error":h.error?`true`:void 0,children:[h.text,(0,i.jsx)(`button`,{type:`button`,className:`aha-micClose`,"aria-label":c(`close`),onClick:()=>g(null),children:`×`})]}):null]})}),qd=[[`sure`,`confSure`],[`unsure`,`confUnsure`],[`guess`,`confGuess`]];function Jd({item:e,language:t,onResult:n,onContinue:a,continueLabel:o,askConfidence:s=!0,compact:c=!1,keyboard:l=!1,onExplain:u,onChallenge:d,check:f=null}){let{api:p,t:m}=v(),h=f?.item??e,[g,_]=(0,r.useState)(h.kind===`multi`||h.kind===`order`?[]:``),[y,b]=(0,r.useState)(null),[x,S]=(0,r.useState)(0),[C,w]=(0,r.useState)(null),[T,E]=(0,r.useState)(!1),[D,O]=(0,r.useState)(null),[k,A]=(0,r.useState)(!1),[ee,te]=(0,r.useState)(null),ne=(0,r.useRef)(Date.now()),j=C&&f?.result?f.result:C;(0,r.useEffect)(()=>{_(e.kind===`multi`||e.kind===`order`?e.kind===`order`?e.options.map(e=>e.id):[]:``),b(null),S(0),w(null),O(null),A(!1),te(null),ne.current=Date.now()},[e]);let re=h.kind===`multi`?g.length>0:h.kind===`order`||String(g).trim()!==``,ie=re&&(!s||y);async function ae(){if(!ie||j||T)return;let e=Date.now()-ne.current,r;if(h.kind===`short`||h.kind===`work`){E(!0),O(null);try{let e=await p.call(`lesson/grade`,{item:{kind:h.kind,prompt:h.prompt,answer:h.answer,rubric:h.rubric},response:g,language:t});r={score:e.score,correct:e.verdict===`correct`,partial:e.verdict===`partial`,feedback:e.feedback,errorTag:e.errorTag,misconception:e.misconception},h.kind===`work`&&Object.assign(r,{wrongStep:e.wrongStep??``,why:e.why??``,fix:e.fix??``})}catch(e){O(e),E(!1);return}E(!1)}else{let e=on(h,g);r={score:e.score,correct:e.correct,partial:!e.correct&&e.score>0,errorTag:e.correct?``:sn(h,g)}}let i={...r,response:typeof g==`string`?g:void 0,given:g,confidence:y??void 0,timeMs:e,hintsUsed:x};w(i),n?.(i)}function oe(e){if(e?.preventDefault(),ee===null)return;let t=ee.trim();te(null),d?.(t)}let se=e=>_(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]),ce=(0,r.useRef)(null);ce.current={result:j,ready:ie,answered:re,confidence:y,hints:x,submit:ae,toggle:se,onContinue:a},(0,r.useEffect)(()=>{if(!l)return;let e=e=>{if(e.defaultPrevented||e.metaKey||e.ctrlKey||e.altKey||e.isComposing)return;let t=ce.current,n=e.target,r=n instanceof HTMLElement&&(/^(input|textarea|select)$/iu.test(n.tagName)||n.isContentEditable);if(e.key===`Enter`){if(r)return;t.result?t.onContinue&&(e.preventDefault(),t.onContinue()):t.ready?(e.preventDefault(),t.submit()):t.answered&&s&&!t.confidence&&A(!0);return}if(!(r||t.result))if(/^[1-9]$/u.test(e.key)&&(h.kind===`choice`||h.kind===`multi`)){let n=h.options[Number(e.key)-1];if(!n)return;e.preventDefault(),h.kind===`multi`?t.toggle(n.id):_(n.id)}else(e.key===`h`||e.key===`H`)&&t.hints<(h.hints?.length??0)&&(e.preventDefault(),S(e=>e+1))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[l,h,s]);let le=(e,t)=>_(n=>{let r=[...n],i=e+t;return i<0||i>=r.length?n:([r[e],r[i]]=[r[i],r[e]],r)}),M=e=>{if(j)return(Array.isArray(h.answer)?h.answer:[h.answer]).includes(e.id)?`right`:(Array.isArray(g)?g.includes(e.id):g===e.id)?`wrong`:void 0},ue=h.fixed?vd(m,h):[],de=ue.length?`${m(`fixedWasItem`)}\n${ue.join(`
271
+ `)}`:``;return(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:c?8:12},children:[h.fixed?(0,i.jsx)(`div`,{children:(0,i.jsxs)(`span`,{className:`aha-itemFixed`,tabIndex:0,title:de,"aria-label":`${m(`fixed`)}. ${de}`,children:[`✎ `,m(`fixed`)]})}):null,(0,i.jsx)(wd,{text:h.prompt,compact:!0,className:`aha-itemPrompt`}),h.svg?(0,i.jsx)(Yd,{svg:h.svg}):h.plot?(0,i.jsx)(Yd,{plot:h.plot}):null,h.kind===`multi`?(0,i.jsx)(`span`,{className:`aha-hint`,children:m(`pickSeveral`)}):null,h.kind===`choice`||h.kind===`multi`?(0,i.jsx)(`div`,{className:`aha-col aha-options`,style:{gap:6},"data-grid":h.options.every(e=>e.text.length<=22),children:h.options.map(e=>{let t=h.kind===`multi`?g.includes(e.id):g===e.id,n=M(e);return(0,i.jsx)(`button`,{type:`button`,className:`aha-option`,"data-active":t,disabled:!!j,style:n===`right`?{borderColor:`var(--aha-ok)`}:n===`wrong`?{borderColor:`var(--aha-bad)`}:void 0,onClick:()=>h.kind===`multi`?se(e.id):_(e.id),children:(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:8,flexWrap:`nowrap`},children:[(0,i.jsxs)(`b`,{children:[e.id.toUpperCase(),`.`]}),(0,i.jsx)(wd,{text:e.text,compact:!0})]})},e.id)})}):null,h.kind===`order`?(0,i.jsx)(`div`,{className:`aha-col`,style:{gap:6},children:g.map((e,t)=>(0,i.jsxs)(`div`,{className:`aha-option`,style:{flexDirection:`row`,alignItems:`center`,gap:8},children:[(0,i.jsx)(`span`,{style:{flex:1},children:(0,i.jsx)(wd,{text:h.options.find(t=>t.id===e)?.text??e,compact:!0})}),j?null:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>le(t,-1),"aria-label":m(`moveUp`),children:`↑`}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>le(t,1),"aria-label":m(`moveDown`),children:`↓`})]})]},e))}):null,h.kind===`blank`||h.kind===`number`?(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`input`,{className:`aha-input`,style:{maxWidth:360},value:g,disabled:!!j,placeholder:m(`yourAnswer`),inputMode:h.kind===`number`?`decimal`:void 0,onChange:e=>_(e.currentTarget.value),onKeyDown:e=>{e.key===`Enter`&&ae()}}),h.unit?(0,i.jsx)(`span`,{className:`aha-hint`,children:h.unit}):null]}):null,h.kind===`short`?(0,i.jsx)(`textarea`,{className:`aha-textarea`,value:g,disabled:!!j,placeholder:m(`yourAnswer`),onChange:e=>_(e.currentTarget.value)}):null,h.kind===`work`?(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:6},children:[(0,i.jsx)(`textarea`,{className:`aha-textarea aha-work`,rows:6,value:g,disabled:!!j,placeholder:m(`workPlaceholder`),onChange:e=>_(e.currentTarget.value)}),!j&&/\$[^$\n]+\$/u.test(g)?(0,i.jsx)(`div`,{className:`aha-workPreview`,"aria-label":m(`workPreview`),children:g.split(`
272
+ `).filter(e=>e.trim()).map((e,t)=>(0,i.jsx)(wd,{text:e,compact:!0},t))}):null]}):null,h.hints?.length&&!j?(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[h.hints.slice(0,x).map((e,t)=>(0,i.jsxs)(`div`,{className:`aha-hint`,children:[`💡 `,e]},t)),x<h.hints.length?(0,i.jsx)(`div`,{children:(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>S(e=>e+1),children:[m(`hint`),` (`,x+1,`/`,h.hints.length,`)`]})}):null]}):null,s&&!j?(0,i.jsxs)(`div`,{className:`aha-row aha-confidence`,style:{gap:6},"data-nudge":k&&!y?`true`:void 0,children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:m(`confidence`)}),qd.map(([e,t])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":y===e,onClick:()=>{b(e),A(!1)},children:m(t)},e))]}):null,(0,i.jsx)(Yu,{error:D}),j?(0,i.jsxs)(`div`,{className:`aha-feedback`,"data-ok":j.correct?`true`:j.partial?void 0:`false`,children:[(0,i.jsxs)(`b`,{children:[j.correct?m(`correct`):j.partial?m(`partial`):m(`incorrect`),j.regraded?m(`regraded`):``]}),j.feedback?(0,i.jsx)(wd,{text:j.feedback,compact:!0}):null,h.explanation?(0,i.jsx)(wd,{text:h.explanation,compact:!0}):null,j.wrongStep?(0,i.jsxs)(`div`,{className:`aha-wrongStep`,children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:m(`wrongStep`)}),(0,i.jsx)(wd,{text:j.wrongStep,compact:!0}),j.fix?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:m(`fixedStep`)}),(0,i.jsx)(wd,{text:j.fix,compact:!0})]}):null]}):null,h.kind!==`short`&&h.kind!==`work`&&!j.correct?(0,i.jsx)(wd,{text:Xd(h),compact:!0,className:`aha-hint`}):null,u||d&&ee===null&&f?.status!==`checking`?(0,i.jsxs)(`div`,{className:`aha-feedbackActions`,children:[u?(0,i.jsxs)(`button`,{type:`button`,className:`aha-itemFlag aha-explainFlag`,"data-strong":j.correct?void 0:`true`,onClick:()=>u(),children:[`👩‍🏫 `,m(`explainThis`)]}):null,d&&ee===null&&f?.status!==`checking`?(0,i.jsxs)(`button`,{type:`button`,className:`aha-itemFlag`,onClick:()=>te(``),children:[`🧐 `,m(`itemChallenge`)]}):null]}):null]}):null,j&&ee!==null?(0,i.jsxs)(`form`,{className:`aha-challengeBox aha-itemChallenge`,onSubmit:oe,children:[(0,i.jsx)(`b`,{children:m(`itemChallengeTitle`)}),(0,i.jsx)(`textarea`,{className:`aha-textarea`,rows:2,autoFocus:!0,value:ee,placeholder:m(`itemChallengePlaceholder`),onChange:e=>{let t=e.currentTarget.value;te(e=>e===null?e:t)},onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing&&oe(e),e.key===`Escape`&&te(null)}}),(0,i.jsxs)(`div`,{className:`aha-challengeActions`,children:[(0,i.jsx)(Kd,{onText:e=>te(t=>t===null?t:t.trim()?`${t.trimEnd()} ${e}`:e)}),(0,i.jsx)(`span`,{className:`aha-challengeHint`,children:m(`itemChallengeHint`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>te(null),children:m(`cancel`)}),(0,i.jsx)(`button`,{type:`submit`,className:`aha-btn`,"data-kind":`primary`,children:m(`challengeSend`)})]})]}):null,j&&f?(0,i.jsxs)(`div`,{className:`aha-itemCheck`,"data-verdict":f.status===`done`?f.verdict:void 0,role:`status`,children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:m(`itemCheckTitle`)}),f.status===`checking`?(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:6},children:[(0,i.jsx)(`span`,{className:`aha-spinner`}),m(`itemChecking`)]}):null,f.status===`done`?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`b`,{children:m(dd[f.verdict]??dd.right)}),f.summary?(0,i.jsx)(wd,{text:f.summary,compact:!0}):null,f.explanation?(0,i.jsx)(wd,{text:f.explanation,compact:!0}):null,f.earlier?(0,i.jsx)(`span`,{className:`aha-hint`,children:m(`itemCheckEarlier`,{count:f.earlier}).trim()}):null]}):null,f.status===`failed`?(0,i.jsxs)(`div`,{className:`aha-row`,style:{gap:6},children:[(0,i.jsx)(Yu,{error:f.error}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>d?.(f.note??``),children:m(`retry`)})]}):null]}):null,(0,i.jsxs)(`div`,{className:`aha-row aha-itemActions`,children:[j?null:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:!ie||T,onClick:ae,children:T?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`span`,{className:`aha-spinner`}),m(`grading`)]}):m(`submit`)}),j&&a?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:a,children:o??m(`continue`)}):null,!j&&a?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:a,children:m(`skip`)}):null]})]})}function Yd({svg:e,plot:t}){let n=(0,r.useMemo)(()=>$c(t?Kc(t):e),[e,t]);return n?(0,i.jsx)(`div`,{className:`aha-itemFigure`,dangerouslySetInnerHTML:{__html:n}}):null}function Xd(e){return e.kind===`choice`?`✔ ${e.answer.toUpperCase()}. ${e.options.find(t=>t.id===e.answer)?.text??``}`:e.kind===`multi`?`✔ ${e.answer.map(e=>e.toUpperCase()).join(`, `)}`:e.kind===`order`?`✔ ${e.answer.map(t=>e.options.find(e=>e.id===t)?.text??t).join(` → `)}`:e.kind===`number`?`✔ ${e.answer}${e.unit?` ${e.unit}`:``}`:e.kind===`blank`?`✔ ${e.answer.join(` / `)}`:``}let Zd=[[`thinking`,`prepThinking`],[`writing`,`prepWriting`]];function Qd(e){if(!((e?.thinking??0)>0))return null;let t=Zd.findIndex(([t])=>t===e.phase);return Zd.map(([e,n],r)=>({name:e,key:n,state:r<t?`done`:r===t?`now`:`next`}))}function $d({prep:e,label:t,first:n,hand:a=!0}){let{t:o}=v(),[s,c]=(0,r.useState)(()=>performance.now());(0,r.useEffect)(()=>{if(!n)return;let e=setInterval(()=>c(performance.now()),1e3);return()=>clearInterval(e)},[n]);let l=e.phase??`starting`,u=n?Qd(e):null,d=Math.max(0,Math.round(((e.elapsedMs??0)+s-(e.receivedAt??s))/1e3));return(0,i.jsxs)(`div`,{className:`aha-prep`,role:`status`,"aria-live":`polite`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:8,flexWrap:`nowrap`},children:[(0,i.jsx)(`span`,{className:`aha-spinner`}),(0,i.jsx)(`b`,{children:t})]}),n?(0,i.jsx)(`span`,{className:`aha-hint`,children:o(`prepSeconds`,{seconds:d})}):null]}),u?(0,i.jsx)(`ol`,{className:`aha-prepStages`,children:u.map(e=>(0,i.jsx)(`li`,{"data-state":e.state,children:o(e.key)},e.name))}):null,(0,i.jsx)(`div`,{className:`aha-prepNow`,children:l===`writing`?(0,i.jsxs)(i.Fragment,{children:[o(`prepStep`,{n:(e.steps??0)+1}),e.current?(0,i.jsxs)(i.Fragment,{children:[`:`,(0,i.jsx)(`span`,{className:`aha-prepHint`,"data-hand":a?`true`:void 0,children:(0,i.jsx)(hu,{text:e.current})})]}):`…`]}):l===`thinking`?o(`prepThinkingDetail`,{chars:(e.thinking??0).toLocaleString()}):o(`prepStarting`)}),l===`writing`?(0,i.jsx)(`div`,{className:`aha-hint`,children:o(`prepCounts`,{steps:e.steps??0,chars:(e.chars??0).toLocaleString()})}):null]})}let ef=[.75,1,1.25,1.5,2],tf=[[`analogy`,`styleAnalogy`],[`visual`,`styleVisual`],[`example`,`styleExample`],[`simpler`,`styleSimpler`],[`deeper`,`styleDeeper`]];function nf({id:e,kind:t,label:n,anchorId:r,steps:i=[],streaming:a=!1,serverId:o}){return{id:e,kind:t,label:n,anchorId:r,streaming:a,serverId:o,steps:fu(i,`${e}_`).map(e=>({...e,anchorId:r}))}}let rf=e=>{let t=[...String(e??``).replace(/\s+/gu,` `).trim()];return t.length>28?`${t.slice(0,28).join(``)}…`:t.join(``)};function af({scope:e,title:t,crumb:n,steps:a=[],stream:o=null,asides:s=[],objectives:c=[],language:l,startIndex:u=0,autoplay:d=!0,onPosition:p,onEnded:m,onStreamDone:h,header:g,stageClass:_,recordChecks:y=!0,checkRecord:b=null,reveal:x,tour:T=!0,talkKey:E=!0}){let{api:D,t:O,speech:k,settings:A,dsh:ee}=v(),te=w(),ne=A.boardTheme===`dark`||A.boardTheme!==`light`&&te?`dark`:`light`,j=e=>O(tf.find(([t])=>t===e)?.[1]??`reexplain`),re=e=>e?O(`correctionOf`,{tag:e}):O(`correction`),ie=(e,t)=>[e||O(`challengeLabel`),t?O(`challenge_${t}`):``].filter(Boolean).join(` · `),[ae,oe]=(0,r.useState)(a),[se,ce]=(0,r.useState)(()=>s.map(e=>nf({id:e.id,kind:e.kind,label:e.kind===`question`?e.question:e.kind===`correction`?re(e.errorTag):e.kind===`challenge`?ie(e.note,e.verdict):O(`reexplainedAs`,{style:j(e.style)}),anchorId:e.anchorStepId,steps:e.steps??[],serverId:e.id}))),le=(0,r.useRef)([]),[M,ue]=C(`classPanel`,!0),[de,fe]=C(`classTourSeen`,!1),[pe,me]=(0,r.useState)(!1),he=T&&!de,ge=(0,r.useRef)(null),_e=(0,r.useRef)(null),ve=(0,r.useRef)(null),ye=(0,r.useRef)(null),be=(0,r.useRef)(!1),xe=(0,r.useRef)(null),[Se,Ce]=(0,r.useState)(!o),[we,Te]=(0,r.useState)(null),[Ee,De]=(0,r.useState)(!0),[Oe,ke]=(0,r.useState)(!1),[Ae,je]=(0,r.useState)(null),Me=(0,r.useRef)({failures:0,down:!1}),[Ne,Pe]=(0,r.useState)(!1),[Fe,Ie]=(0,r.useState)(``),[Le,Re]=(0,r.useState)(null),[ze,Be]=(0,r.useState)(null),[Ve,He]=(0,r.useState)(null),Ue=(0,r.useRef)(new Set),[We,Ge]=(0,r.useState)(!1),[Ke,qe]=(0,r.useState)(null),[Je,Ye]=(0,r.useState)(null),Xe=(0,r.useRef)(0),Ze=(0,r.useRef)(null);Ze.current||=new AbortController,(0,r.useEffect)(()=>()=>Ze.current.abort(),[]),(0,r.useEffect)(()=>{Rd(ge.current)},[x]);let N=(0,r.useMemo)(()=>{let e=[];for(let t of ae){e.push(t);for(let n of se)n.anchorId===t.id&&e.push(...n.steps)}return e},[ae,se]),Qe=(0,r.useMemo)(()=>{let e=se.find(e=>e.streaming),t=e?N.findIndex(t=>t.id===e.anchorId):-1;if(t<0)return null;let n=t+1;for(;n<N.length&&N[n].aside;)n+=1;return n},[N,se]),$e=(0,r.useMemo)(()=>Qe===null?N:N.slice(0,Qe),[N,Qe]),et=(0,r.useRef)(null);et.current=e=>{if(Me.current.down)return;let t=Nt(Me.current.failures,e);Me.current.failures=t.failures,t.stop&&(Me.current.down=!0,k.configure({engine:`off`}),je({engine:A.voiceEngine??`browser`,...t.stop,dismissed:!1}))};let tt=(0,r.useMemo)(()=>{let e=ae[Math.min(u,ae.length-1)]?.id,t=e?N.findIndex(t=>t.id===e):-1;return Pu({speech:k,onChange:Te,onNarration:e=>et.current(e),startIndex:t>=0?t:u})},[k]);(0,r.useEffect)(()=>()=>tt.dispose(),[tt]),(0,r.useEffect)(()=>{tt.setSteps($e,{done:Se&&Qe===null})},[tt,$e,Se,Qe]);let nt=Oe||Ae?`off`:A.voiceEngine??`browser`;(0,r.useEffect)(()=>{k.configure({engine:nt,voiceId:A.voiceId||void 0,language:l})},[k,nt,A.voiceId,l]),(0,r.useEffect)(()=>{tt.setRate(A.voiceRate??1)},[tt,A.voiceRate]);let[rt,it]=(0,r.useState)(null);(0,r.useEffect)(()=>{if(!o)return;let e=new AbortController;return Ce(!1),D.follow({job:o},{signal:e.signal,onPartial:e=>oe(t=>{let n=new Set(t.map(e=>e.id)),r=e.filter(e=>!n.has(e.id));return r.length?[...t,...r]:t}),onPreview:(e,t)=>{if(e?.phase===`repairing`){it(null),Ce(!0);return}it(e?.phase?{...e,elapsedMs:t?.elapsedMs??0,receivedAt:performance.now()}:null)}}).then(e=>{let t=e?.board??e?.item?.board??e;t?.steps?.length&&oe(le.current.length?Qt(t.steps,le.current).steps:t.steps),it(null),Ce(!0),h?.(e)}).catch(t=>{e.signal.aborted||(it(null),oe(e=>en(e)),Ye(t),Ce(!0))}),()=>e.abort()},[o]);let at=(0,r.useRef)(!1);(0,r.useEffect)(()=>{!d||at.current||!N.length||he||(at.current=!0,tt.play())},[N.length,d,tt,he]),(0,r.useEffect)(()=>{he&&N.length&&me(!0)},[he,N.length>0]);let ot=()=>{me(!1),fe(!0)},st=we?.index??0,[ct,lt]=(0,r.useState)(null);(0,r.useEffect)(()=>{lt(e=>Lu(N,st,e))},[st,N]);let ut=Math.max(0,N.findIndex(e=>e.id===ct)),dt=we?.status===`ended`&&Se,ft=(0,r.useRef)(!1);(0,r.useEffect)(()=>{dt&&!ft.current&&(ft.current=!0,m?.()),dt||(ft.current=!1)},[dt]),(0,r.useEffect)(()=>{let e=e=>{Vd(e.target)||(e.key===` `?(e.preventDefault(),tt.toggle()):e.key===`ArrowRight`?tt.next():e.key===`ArrowLeft`?tt.prev():E&&!pe&&Bd(e)&&!e.repeat&&(e.preventDefault(),ve.current?ve.current.press(e.timeStamp):(ye.current={down:e.timeStamp,up:null},ue(!0))))},t=e=>{!E||!Bd(e)||(ye.current?ye.current.up=e.timeStamp:ve.current?.release(e.timeStamp))};return window.addEventListener(`keydown`,e),window.addEventListener(`keyup`,t),()=>{window.removeEventListener(`keydown`,e),window.removeEventListener(`keyup`,t)}},[tt,E,pe]),(0,r.useEffect)(()=>{let e=ye.current;!M||!e||!ve.current||(ye.current=null,ve.current.press(e.down),e.up!==null&&ve.current.release(e.up))},[M]);let pt=(0,r.useCallback)(e=>{for(let t=Math.min(e,N.length-1);t>=0;--t)if(!N[t]?.aside)return N[t]?.id;return ae[0]?.id},[N,ae]),mt=(0,r.useCallback)(e=>{let t=Math.max(0,Math.min(e,N.length-1)),n=N[t]?.aside?pt(t):N[t]?.id;return Math.max(0,ae.findIndex(e=>e.id===n))},[N,ae,pt]);(0,r.useEffect)(()=>{we&&p?.(mt(st))},[st]),(0,r.useEffect)(()=>{if(!Le)return;let e=$e.findIndex(e=>e.id===Le);if(e>=0){Re(null);let{index:t,status:n}=tt.state;(t!==e||n!==`playing`)&&tt.seek(e)}},[$e,Le,tt]);async function ht({endpoint:t,payload:n,kind:r,label:i,anchorIndex:a,onStarted:s,onAdded:c,onFailed:l,onResult:u}){let d=pt(a);Xe.current+=1;let p=`a${Xe.current}`,m=Ze.current.signal,h=!1,g=e=>{let t=nf({id:p,kind:r,label:i,anchorId:d,steps:e,streaming:!0});ce(e=>e.map(e=>e.id===p?{...e,steps:t.steps}:e)),!h&&t.steps.length&&(h=!0,Pe(!1),Re(t.steps[0].id))},_=!1;Ye(null);try{let{job:l}=await D.call(t,{...n,scope:f(e,o),stepIndex:mt(a),anchorStepId:d});s?.(),ce(e=>[...e,nf({id:p,kind:r,label:i,anchorId:d,streaming:!0})]),_=!0,c?.(p);let h=[],v=await D.follow({job:l},{signal:m,onPartial:e=>{h.push(...e),g([...h])}});g(v?.steps?.length?v.steps:h),ce(e=>e.map(e=>e.id===p?{...e,streaming:!1,serverId:v?.aside?.id}:e)),Pe(!1),u?.(v,p)}catch(e){if(m.aborted)return;ce(e=>e.flatMap(e=>e.id===p?e.steps.length?[{...e,steps:en(e.steps),streaming:!1}]:[]:[e])),Pe(!1),r===`question`&&!h&&Ie(e=>e||i),_||l?.(),Ye(e)}}async function gt(e){e?.preventDefault();let t=Fe.trim();t&&(be.current&&_e.current?.blur(),be.current=!1,tt.pause(),Pe(`answering`),await ht({endpoint:`lesson/ask`,payload:{question:t},kind:`question`,label:t,anchorIndex:st,onStarted:()=>Ie(``)}))}async function _t(e){Ge(!1),tt.pause(),Pe(`reexplaining`),await ht({endpoint:`lesson/reexplain`,payload:{style:e},kind:`reexplain`,label:O(`reexplainedAs`,{style:j(e)}),anchorIndex:Math.max(0,Math.min(st,N.length-1))})}async function vt(e,t){Pe(`correcting`),await ht({endpoint:`lesson/correct`,payload:{item:{prompt:e.prompt,answer:e.answer},response:t.response,grade:{feedback:t.feedback,errorTag:t.errorTag,wrongStep:t.wrongStep,why:t.why,fix:t.fix}},kind:`correction`,label:re(t.errorTag),anchorIndex:st,onAdded:t=>He({checkId:e.id,asideId:t}),onFailed:()=>tt.answer(e.id)})}(0,r.useEffect)(()=>{!Ve||!se.some(e=>e.id===Ve.asideId)||(He(null),tt.answer(Ve.checkId))},[se,Ve,tt]);function yt(e){tt.pause(),Ge(!1),qe({index:Math.max(0,Math.min(e,N.length-1)),note:``})}function bt(t){let n=N[t];if(!n?.aside)return n?{stepId:n.id}:null;let r=se.find(e=>n.id.startsWith(`${e.id}_`));return!r||r.streaming?null:r.serverId&&e.kind===`lesson`?{stepId:n.id.slice(r.id.length+1),asideId:r.serverId}:{step:{id:n.id,say:n.say,ops:n.ops.map(({fixed:e,...t})=>t)}}}async function xt(e){if(e?.preventDefault(),!Ke)return;let t=bt(Ke.index),n=Ke.note.trim();qe(null),t&&(tt.pause(),Pe(`checking`),await ht({endpoint:`lesson/challenge`,payload:{target:t,note:n},kind:`challenge`,label:ie(n),anchorIndex:st,onResult:(e,t)=>{ce(r=>r.map(r=>r.id===t?{...r,label:ie(n,e?.verdict)}:r));let r=Array.isArray(e?.fixes)?e.fixes:[];r.length&&(e.target?.main?(le.current.push(...r),oe(e=>Qt(e,r).steps)):e.target?.asideId?ce(t=>t.map(t=>t.serverId===e.target.asideId?{...t,steps:Qt(t.steps,$t(r,`${t.id}_`)).steps}:t)):ce(e=>e.map(e=>({...e,steps:Qt(e.steps,r).steps}))))}}))}function St(){tt.pause(),ue(!0),setTimeout(()=>_e.current?.focus(),0)}let Ct=mt(st),wt=(0,r.useMemo)(()=>Fu(ae,Ct,c.length,we?.status===`ended`&&Se),[ae,Ct,c.length,we?.status,Se]),Tt=(0,r.useMemo)(()=>Iu(N,Math.max(ut,st),se),[N,ut,st,se]);(0,r.useEffect)(()=>{let e=xe.current;e&&(e.scrollTop=e.scrollHeight)},[Tt.length,M]);let Et=we?.step,Dt=we?.status===`check`?Et?.check:null,Ot=(0,r.useRef)(null),[kt,At]=(0,r.useState)(0);(0,r.useLayoutEffect)(()=>{let e=Ot.current;if(!e){At(0);return}let t=()=>At(Math.max(0,(e.offsetParent?.clientHeight??0)-e.offsetTop));t();let n=typeof ResizeObserver==`function`?new ResizeObserver(t):null;return n?.observe(e),()=>n?.disconnect()},[Dt?.id]);let jt=(0,r.useMemo)(()=>cu(Et?.say),[Et?.say]),Mt=jt[Math.min(we?.sentence??0,jt.length-1)]??``;function Pt(t){Be({checkId:Dt?.id,result:t});let n=e.kind===`lesson`,r=n?{courseId:e.courseId,lessonId:e.lessonId}:b;!y||!r?.courseId||D.call(`lesson/record`,{courseId:r.courseId,...r.lessonId?{lessonId:r.lessonId}:{},conceptIds:Dt?.conceptIds?.length?Dt.conceptIds:r.conceptIds??[],evidence:{kind:`check`,score:t.score,correct:t.correct===!0,confidence:t.confidence,hintsUsed:t.hintsUsed,timeMs:t.timeMs,expectedMs:4e4,errorTag:t.errorTag},...n&&Et?.id&&!Et.aside?{source:{kind:`check`,courseId:e.courseId,lessonId:e.lessonId,stepId:Et.id},response:t.given??t.response??``,sig:fn(Dt)}:{}}).catch(()=>void 0)}let Ft=we?.status??`idle`,It=(Ft===`buffering`||!N.length&&!Se)&&!Je,Lt=N.length+ +!Se,Rt=se.find(e=>e.streaming),zt=Ne===`answering`||Rt?.kind===`question`?O(`answering`):Ne===`correcting`||Rt?.kind===`correction`?O(`correcting`):Ne===`checking`||Rt?.kind===`challenge`&&!Rt.steps.length?O(`checkingStep`):Ne===`reexplaining`||Rt?O(`generating`):N.length?O(`bufferingLesson`):O(`preparingLesson`),Vt=S(It&&!Ne&&!Rt&&!Se,3e3)&&!!rt,Ht=wt?wt.filter(e=>e===`done`).length:0,Ut=!!Rt||!!Ne,Wt=Dt?.kind===`work`&&ze?.checkId===Dt.id&&!ze.result.correct&&!!ze.result.response?.trim();function Gt(){if(Dt){if(Wt){if(Ue.current.has(Dt.id))return;Ue.current.add(Dt.id),vt(Dt,ze.result);return}tt.answer(Dt.id)}}function Kt({replay:e}){Me.current={failures:0,down:!1},je(null),ke(!1),k.configure({engine:A.voiceEngine??`browser`}),e&&(Ft===`playing`||Ft===`paused`)&&tt.seek(st)}let qt=Oe||!!Ae,Jt=!Ae||Ae.dismissed?null:Ae.engine===`cloud`?O(`voiceDownCloud`,{reason:Ju(O,Ae)}):O(`voiceDownSystem`,{reason:Ju(O,Ae)});return(0,i.jsxs)(`div`,{ref:ge,className:`aha-class`,"data-panel":M?`open`:`closed`,children:[(0,i.jsxs)(`div`,{className:`aha-classBar`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:0},children:[n?(0,i.jsx)(`span`,{className:`aha-crumb`,children:n}):null,(0,i.jsx)(`span`,{className:`aha-cardTitle`,children:t})]}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[T?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,title:O(`tourReplay`),"aria-label":O(`tourReplay`),onClick:()=>{tt.pause(),me(!0)},children:`?`}):null,typeof g==`function`?g({steps:N}):g]})]}),(0,i.jsxs)(`div`,{className:`aha-classBody`,children:[(0,i.jsxs)(`div`,{className:`aha-classMain`,children:[(0,i.jsxs)(`div`,{className:`aha-stage ${_??``}`,children:[(0,i.jsx)(ju,{steps:N,position:we?{index:we.index,op:we.op,progress:we.progress,now:we.now}:{index:0,op:0,progress:0},theme:ne,font:A.boardFont===`standard`?`standard`:`hand`,view:A.boardView===`pages`?`pages`:`canvas`,buffering:(It||!!Ne)&&!Vt,bufferingLabel:zt,onInteract:()=>tt.pause(),cover:Dt?kt:0}),Vt?(0,i.jsx)($d,{prep:rt,label:zt,first:!N.length,hand:A.boardFont!==`standard`}):null,Dt?(0,i.jsxs)(`div`,{ref:Ot,className:`aha-checkCard`,children:[(0,i.jsx)(`div`,{className:`aha-spread`,children:(0,i.jsx)(`b`,{children:O(`checkTitle`)})}),(0,i.jsx)(Jd,{item:Dt,language:l,onResult:Pt,onContinue:Gt,continueLabel:Wt?O(`seeCorrection`):void 0,keyboard:!0})]}):null]}),Ee&&Mt?(0,i.jsx)(`div`,{className:`aha-caption`,children:(0,i.jsx)(hu,{text:Mt})}):(0,i.jsx)(`div`,{className:`aha-caption`}),(0,i.jsx)(Yu,{error:Je,style:{textAlign:`center`}}),Ke?(0,i.jsxs)(`form`,{className:`aha-challengeBox`,onSubmit:xt,children:[(0,i.jsx)(`b`,{children:Ke.index===st?O(`challengeTitle`):O(`challengeTitleStep`,{n:Ke.index+1,text:rf(N[Ke.index]?.say)})}),(0,i.jsx)(`textarea`,{className:`aha-textarea`,rows:2,autoFocus:!0,value:Ke.note,placeholder:O(`challengePlaceholder`),onChange:e=>{let t=e.currentTarget.value;qe(e=>e&&{...e,note:t})},onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing&&xt(e),e.key===`Escape`&&qe(null)}}),(0,i.jsxs)(`div`,{className:`aha-challengeActions`,children:[(0,i.jsx)(Kd,{onStart:()=>tt.pause(),onText:e=>qe(t=>t&&{...t,note:t.note.trim()?`${t.note.trimEnd()} ${e}`:e})}),(0,i.jsx)(`span`,{className:`aha-challengeHint`,children:O(`challengeHint`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>qe(null),children:O(`cancel`)}),(0,i.jsx)(`button`,{type:`submit`,className:`aha-btn`,"data-kind":`primary`,disabled:!bt(Ke.index),children:O(`challengeSend`)})]})]}):null,Jt?(0,i.jsxs)(`div`,{className:`aha-voiceNote`,role:`status`,children:[(0,i.jsxs)(`span`,{className:`aha-voiceNoteText`,children:[`🔇 `,Jt]}),(0,i.jsxs)(`span`,{className:`aha-voiceNoteActions`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>Kt({replay:!0}),children:O(`retry`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>Bt(ee,`settings`),children:O(`openSettings`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>je(e=>e&&{...e,dismissed:!0}),title:O(`close`),"aria-label":O(`close`),children:`×`})]})]}):null,(0,i.jsxs)(`div`,{className:`aha-controls`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>tt.prev(),title:O(`prevStep`),"aria-label":O(`prevStep`),children:`⏮`}),(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:()=>tt.toggle(),disabled:!N.length,"aria-label":O(Ft===`playing`?`pause`:`play`),children:[Ft===`playing`?`⏸`:`▶`,` `,O(Ft===`playing`?`pause`:`play`)]}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>tt.next(),title:O(`nextStep`),"aria-label":O(`nextStep`),children:`⏭`}),(0,i.jsx)(`span`,{className:`aha-tag`,children:O(`stepOf`,{current:Math.min(st+1,Math.max(1,N.length)),total:Math.max(Lt,1)})}),(0,i.jsx)(`select`,{className:`aha-select`,style:{width:`auto`},value:we?.rate??1,onChange:e=>tt.setRate(Number(e.currentTarget.value)),"aria-label":O(`speed`),children:ef.map(e=>(0,i.jsxs)(`option`,{value:e,children:[e,`×`]},e))}),(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":!qt,onClick:()=>Ae?Kt({replay:!1}):ke(e=>!e),children:qt?`🔇 ${O(`voiceOff`)}`:`🔊 ${O(`voiceOn`)}`}),(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"data-active":Ee,onClick:()=>De(e=>!e),children:[`CC `,O(`captions`)]}),(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"data-tour":`raise`,onClick:St,disabled:!N.length,title:E?O(`raiseHandKey`):void 0,children:[`✋ `,O(`raiseHand`)]}),(0,i.jsxs)(`span`,{style:{position:`relative`},children:[(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"data-tour":`reexplain`,onClick:()=>Ge(e=>!e),disabled:!N.length,children:[`🔄 `,O(`reexplain`)]}),We?(0,i.jsx)(`div`,{className:`aha-card`,style:{position:`absolute`,bottom:`110%`,left:0,zIndex:10,padding:6,gap:2,minWidth:140},children:tf.map(([e,t])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,style:{justifyContent:`flex-start`},onClick:()=>_t(e),children:O(t)},e))}):null]}),(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"data-tour":`challenge`,"aria-expanded":!!Ke,onClick:()=>Ke?qe(null):yt(st),disabled:!N.length||Ut,children:[`🧐 `,O(`challenge`)]}),M?null:(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"aria-expanded":!1,onClick:()=>ue(!0),children:[`📋 `,O(`showPanel`)]})]})]}),M?(0,i.jsxs)(`aside`,{className:`aha-panel`,"aria-label":O(`panelTitle`),children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`b`,{children:c.length?O(`lessonGoals`):O(`transcript`)}),(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:6},children:[c.length&&wt?(0,i.jsxs)(`span`,{className:`aha-tag`,children:[Ht,`/`,c.length]}):null,(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>ue(!1),title:O(`hidePanel`),"aria-label":O(`hidePanel`),children:`›`})]})]}),c.length?(0,i.jsx)(`ol`,{className:`aha-goals`,children:c.map((e,t)=>(0,i.jsxs)(`li`,{"data-state":wt?.[t]??`plain`,children:[(0,i.jsx)(`span`,{className:`aha-goalMark`,"aria-hidden":`true`,children:wt?.[t]===`done`?`✓`:t+1}),(0,i.jsx)(`span`,{children:e})]},t))}):null,c.length?(0,i.jsx)(`b`,{className:`aha-panelHead`,children:O(`transcript`)}):null,(0,i.jsx)(`div`,{ref:xe,className:`aha-transcript`,role:`list`,children:Tt.map(e=>(0,i.jsxs)(`div`,{role:`listitem`,className:`aha-lineRow`,"data-aside":e.aside?`true`:void 0,children:[(0,i.jsxs)(`button`,{type:`button`,className:`aha-line`,"data-kind":e.kind,"data-current":e.stepIndex===st?`true`:void 0,disabled:e.stepIndex<0,onClick:()=>tt.seek(e.stepIndex),children:[e.kind===`question`?(0,i.jsx)(`span`,{className:`aha-lineTag`,children:`✋`}):e.kind===`reexplain`?(0,i.jsx)(`span`,{className:`aha-lineTag`,children:`🔄`}):e.kind===`correction`?(0,i.jsx)(`span`,{className:`aha-lineTag`,children:`✏️`}):e.kind===`challenge`?(0,i.jsx)(`span`,{className:`aha-lineTag`,children:`🧐`}):null,(0,i.jsx)(`span`,{className:`aha-lineText`,children:(0,i.jsx)(hu,{text:e.text})}),e.pending?(0,i.jsx)(Hu,{}):null]}),e.kind===`say`&&e.stepIndex>=0&&!Ut?(0,i.jsx)(`button`,{type:`button`,className:`aha-lineFlag`,title:O(`challenge`),"aria-label":O(`challengeStep`,{n:e.stepIndex+1}),onClick:()=>yt(e.stepIndex),children:O(`challengeLine`)}):null]},e.key))}),(0,i.jsxs)(`form`,{className:`aha-askBox`,onSubmit:gt,children:[(0,i.jsx)(`textarea`,{ref:_e,className:`aha-textarea`,rows:2,value:Fe,placeholder:O(`askPlaceholder`),disabled:!N.length,onChange:e=>Ie(e.currentTarget.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing?gt(e):e.key===`Escape`&&e.currentTarget.blur()}}),(0,i.jsxs)(`div`,{className:`aha-askActions`,children:[(0,i.jsx)(Kd,{ref:ve,disabled:!N.length,keyHint:E?O(`talkKeyHint`):``,onStart:()=>tt.pause(),onText:e=>{be.current=!0,Ie(t=>t.trim()?`${t.trimEnd()} ${e}`:e),_e.current?.focus()}}),(0,i.jsx)(`button`,{type:`submit`,className:`aha-btn`,"data-kind":`primary`,disabled:!Fe.trim()||Ut,children:O(`ask`)})]})]})]}):null]}),pe?(0,i.jsx)(Vu,{root:ge,onDone:ot}):null]})}let of=[[`explain`,`modeExplain`,`💡`],[`solve`,`modeSolve`,`🧮`],[`visualize`,`modeVisualize`,`📈`]];function sf({draftMode:e,draftRequest:t,draftMaterials:n,token:a}){let{api:o,t:s}=v(),c=y(()=>o.call(`items/list`,{kind:`assist`}),[]),[l,u]=(0,r.useState)(of.some(([t])=>t===e)?e:`explain`),[d,f]=(0,r.useState)(t??``),[p,m]=(0,r.useState)(Array.isArray(n)?n:[]),[h,g]=(0,r.useState)(!1),[_,b]=(0,r.useState)(null),[S,C]=(0,r.useState)(null),w=x(a);async function T(e=d){let t=e.trim();if(!t)return;C(null);let n=_?.threadId??E(`thd`);_?.stream&&!_.done&&o.cancel(_.stream);try{let{job:e}=await o.call(`assist/ask`,{mode:l,request:t,materialIds:p,threadId:_?.threadId,newThreadId:_?.threadId?void 0:n});b(r=>({threadId:n,turn:r?r.turn+1:0,stream:e,done:!1,steps:[],title:t.slice(0,80),language:void 0,key:`${n}:${Date.now()}`})),f(``)}catch(e){C(e)}}(0,r.useEffect)(()=>{w&&t&&T(t)},[]);async function D(e){C(null);try{let{item:t}=await o.call(`items/get`,{kind:`assist`,id:e}),n=t.turns.length-1;b({threadId:t.id,turn:n,stream:null,steps:t.turns[n]?.board?.steps??[],title:t.turns[n]?.request??t.title,language:t.language,key:`${t.id}:${n}:open`,opened:Date.now()})}catch(e){C(e)}}return(0,i.jsxs)(`div`,{className:`aha-page`,"data-wide":`true`,children:[(0,i.jsxs)(`div`,{className:`aha-split`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{minHeight:0},children:[_?(0,i.jsx)(af,{scope:{kind:`thread`,id:_.threadId,turn:_.turn},title:_.title,steps:_.steps,stream:_.stream,language:_.language,recordChecks:!1,reveal:_.opened,onStreamDone:e=>{b(t=>t?.stream?.id===_.stream?.id?{...t,done:!0,turn:Number.isInteger(e?.turn)?e.turn:t.turn}:t),c.reload()}},_.key):(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:s(`assistTitle`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:s(`assistHint`)})]}),(0,i.jsxs)(`div`,{className:`aha-composer`,children:[(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:6},children:of.map(([e,t,n])=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"data-active":l===e,onClick:()=>u(e),children:[n,` `,s(t)]},e))}),(0,i.jsx)(`textarea`,{value:d,placeholder:s(_?`followUp`:`assistPlaceholder`),onChange:e=>f(e.currentTarget.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&T()}}),(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>g(!0),children:p.length?s(`attached`,{count:p.length}):s(`attach`)}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[_?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>b(null),children:s(`newThread`)}):null,(0,i.jsx)(Kd,{onText:e=>f(t=>t.trim()?`${t.trimEnd()} ${e}`:e)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:!d.trim(),onClick:()=>T(),children:s(`ask`)})]})]})]}),(0,i.jsx)(Yu,{error:S})]}),(0,i.jsxs)(`aside`,{className:`aha-col`,style:{minHeight:0,overflow:`auto`},children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:s(`history`)}),c.loading&&!c.value?(0,i.jsx)(Hu,{}):(c.value??[]).map(e=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-option`,onClick:()=>D(e.id),children:[(0,i.jsx)(`b`,{children:e.title}),(0,i.jsx)(`small`,{children:new Date(e.updatedAt).toLocaleString()})]},e.id))]})]}),h?(0,i.jsx)(ed,{selected:p,onChange:m,onClose:()=>g(!1)}):null]})}function cf({request:e,record:t=null,title:n,language:a,explained:o=null,onStarted:s,onClose:c}){let{api:l,t:u}=v(),[d,f]=(0,r.useState)(null),[p,m]=(0,r.useState)(null),[h,g]=(0,r.useState)(0),_=(0,r.useRef)(null),y=(0,r.useRef)(c);return y.current=c,(0,r.useEffect)(()=>{let t=!0;return m(null),f(null),(async()=>{if(o&&h===0){let e=await l.call(`items/get`,{kind:`assist`,id:o.threadId}).catch(e=>e?.code===`not-found`?null:Promise.reject(e)),t=e?.item?.turns?.[0]?.board;if(t?.steps?.length)return{threadId:o.threadId,steps:t.steps,stream:null,language:e.item.language};if((o.job?.id?await l.call(`job/get`,{id:o.job.id}).catch(()=>null):null)?.status===`running`)return{threadId:o.threadId,steps:[],stream:o.job}}let t=E(`thd`),{job:n}=await l.call(`item/explain`,{...e,newThreadId:t});return s?.({threadId:t,job:n}),{threadId:t,steps:[],stream:n}})().then(e=>{t&&f(e)}).catch(e=>{t&&m(e)}),()=>{t=!1}},[h]),(0,r.useEffect)(()=>{_.current?.focus();let e=e=>{if(e.key!==`Escape`||e.defaultPrevented)return;let t=e.target;t instanceof HTMLElement&&(/^(input|textarea|select)$/iu.test(t.tagName)||t.isContentEditable)||y.current?.()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),(0,i.jsx)(`div`,{className:`aha-explainBack`,children:(0,i.jsxs)(`div`,{ref:_,className:`aha-explain`,role:`dialog`,"aria-modal":`true`,"aria-label":u(`explainTitle`),tabIndex:-1,children:[(0,i.jsxs)(`div`,{className:`aha-explainBar`,children:[(0,i.jsx)(`b`,{className:`aha-explainName`,children:u(`explainTitle`)}),(0,i.jsx)(`span`,{className:`aha-hint aha-explainSaved`,children:u(`explainSaved`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:c,children:u(`explainClose`)})]}),(0,i.jsx)(`div`,{className:`aha-explainBody`,children:p?(0,i.jsxs)(`div`,{className:`aha-col`,style:{padding:16},children:[(0,i.jsx)(Yu,{error:p}),(0,i.jsx)(`div`,{children:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>g(e=>e+1),children:u(`retry`)})})]}):d?(0,i.jsx)(af,{scope:{kind:`thread`,id:d.threadId,turn:0},title:n?(0,i.jsx)(hu,{text:n}):null,steps:d.steps,stream:d.stream,language:d.language??a,recordChecks:!!t?.courseId,checkRecord:t,tour:!1,talkKey:!1},d.threadId):(0,i.jsx)(Hu,{})})]})})}Object.freeze({pInit:.2,pTransit:.15,pSlip:.1,pGuess:.2}),Object.freeze([{id:`struggling`,min:0},{id:`learning`,min:.4},{id:`proficient`,min:.7},{id:`mastered`,min:.9}]);let lf=(e,t,n)=>Math.min(n,Math.max(t,e));function uf(e){return Math.round(lf(Number(e?.pKnown)||0,0,1)*100)}Object.freeze([`none`,`weak`,`learning`,`proficient`,`mastered`]);function df(e){return!e||!e.attempts&&!e.history?.length?`none`:ff(uf(e))}function ff(e){let t=Number(e);return Number.isFinite(t)?t>=90?`mastered`:t>=70?`proficient`:t>=40?`learning`:`weak`:`none`}let pf=Object.freeze({none:`stageNone`,weak:`stageWeak`,learning:`stageLearning`,proficient:`stageProficient`,mastered:`stageMastered`});function mf(e){let t=e.filter(Boolean),n=t.length?t.reduce((e,t)=>e+(Number(t.score)||0),0)/t.length:0,r=0,i=0;for(let e of t)r=e.correct?r+1:0,i=Math.max(i,r);return{answered:t.length,correct:t.filter(e=>e.correct).length,accuracy:n,stars:n>=.9?3:n>=.6?2:1,streak:r,bestStreak:i}}function hf(e,{lessonId:t,unitId:n,nextLessonId:r}={}){let i=e?.action;return i===`remediate`?t?{kind:`relearn`,lessonId:t}:{kind:`review`}:i===`review`?{kind:`review`}:i===`challenge`&&n?{kind:`quiz`,unitId:n}:r?{kind:`next`,lessonId:r}:{kind:`course`}}function gf(e,t){let n=(e.concepts??[]).map(e=>t?.concepts?.[e.id]);if(!n.some(e=>df(e)!==`none`))return{stage:`none`,percent:0};let r=Math.round(n.reduce((e,t)=>e+uf(t??{pKnown:.2}),0)/n.length);return{stage:ff(r),percent:r}}function _f(e,t,{now:n=Date.now(),mistakes:r=0}={}){let i=Ye(e),a=Object.entries(t?.reviews??{}).filter(([e,t])=>i.has(e)&&Date.parse(t?.dueAt)<=n).length;if(a||r)return{kind:`review`,count:a,...r?{mistakes:r}:{}};let o=[...i.values()].map(e=>({concept:e,state:t?.concepts?.[e.id]})).filter(e=>df(e.state)===`weak`).sort((e,t)=>e.state.pKnown-t.state.pKnown)[0];if(o)return{kind:`practice`,lessonId:o.concept.lessonId,conceptId:o.concept.id,concept:o.concept.name};let s=N(e,t);return s?{kind:`lesson`,lessonId:s.lesson.id,title:s.lesson.title}:{kind:`done`,unitId:e.units?.at(-1)?.id??null}}function vf(e,t=Date.now()){return(Array.isArray(e)?e:[]).filter(e=>!e.resolvedAt&&Date.parse(e.dueAt)<=t).length}function yf(e,t,n=Date.now()){let r=ln(new Date(t)),i=ln(new Date(n));if(r===i)return e(`dayToday`);if(r===dn(i,1))return e(`dayTomorrow`);let a=un(r);return e(`monthDay`,{month:a.getMonth()+1,day:a.getDate()})}function bf(e,t,n=Date.now()){return t.resolvedAt?e(`mistakeResolvedOn`,{day:yf(e,t.resolvedAt,n)}):Date.parse(t.dueAt)<=n?e(`mistakeDueNow`):e(`mistakeDueOn`,{day:yf(e,t.dueAt,n)})}let xf=[[`outline`,`tabOutline`],[`practice`,`tabPractice`],[`sheets`,`tabSheets`],[`projects`,`tabProjects`],[`progress`,`tabProgress`]];function Sf({courseId:e,tab:t=`outline`}){let{api:n,t:a,navigate:o,toast:s}=v(),c=y(()=>n.call(`course/get`,{courseId:e}),[e]),[l,u]=(0,r.useState)(t===`cards`?`practice`:t),[d,f]=(0,r.useState)(!1),[p,m]=(0,r.useState)(!1),[g,_]=(0,r.useState)(!1),b=c.value?.course,x=c.value?.progress,S=c.value?.ready?.cards,C=c.value?.mistakes,w=(0,r.useMemo)(()=>b?.units?Ze(b,x):null,[b,x]),T=(0,r.useMemo)(()=>b?.units?N(b,x):null,[b,x]),E=(0,r.useMemo)(()=>b?.units?_f(b,x,{mistakes:vf(C)}):null,[b,x,C]);if(c.loading&&!c.value)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Hu,{label:a(`loading`)})});if(!b)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Yu,{error:c.error})});if(b.status!==`ready`)return o(`craft`,{courseId:e},{replace:!0}),null;let D=e=>uf(x?.concepts?.[e]??{pKnown:.2}),O=e=>x?.lessons?.[e]?.status??`new`;async function k(t){m(!1);try{let r=await n.call(`course/export`,{courseId:e,includeProgress:t});h(r.fileName,r.json)}catch(e){s(Ju(a,e))}}return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4,flex:1,minWidth:`min(260px, 100%)`},children:[(0,i.jsxs)(`div`,{className:`aha-row`,style:{flexWrap:`nowrap`},children:[(0,i.jsx)(`span`,{style:{fontSize:30},children:b.emoji}),(0,i.jsx)(`h2`,{className:`aha-title`,children:b.title})]}),b.subtitle?(0,i.jsx)(`p`,{className:`aha-subtitle`,children:b.subtitle}):null,w?(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4,maxWidth:480},children:[(0,i.jsx)(Uu,{value:w.percent}),(0,i.jsxs)(`span`,{className:`aha-hint`,children:[a(`lessonsCount`,w),` · `,a(`minutesLeft`,{minutes:w.minutesLeft})]})]}):null]}),(0,i.jsxs)(`div`,{className:`aha-row`,style:{position:`relative`},children:[T?(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:()=>o(`lesson`,{courseId:e,lessonId:T.lesson.id}),children:[(0,i.jsx)(Ht,{name:`play`,size:14}),a(`continueLearning`)]}):null,(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>f(e=>!e),children:`⋯`}),d?(0,i.jsxs)(`div`,{className:`aha-card`,style:{position:`absolute`,right:0,top:`110%`,zIndex:20,padding:6,gap:2,minWidth:180},onMouseLeave:()=>f(!1),children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,style:{justifyContent:`flex-start`},onClick:()=>{f(!1),o(`craft`,{courseId:e,edit:!0})},children:a(`editOutline`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,style:{justifyContent:`flex-start`},onClick:()=>{f(!1),o(`craft`,{courseId:e,edit:!0,add:!0})},children:a(`addMaterials`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,style:{justifyContent:`flex-start`},onClick:()=>{f(!1),m(!0)},children:a(`exportPack`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,style:{justifyContent:`flex-start`},onClick:async()=>{f(!1),await n.call(`course/update`,{courseId:e,archived:!b.archived}),c.reload()},children:b.archived?a(`unarchive`):a(`archive`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,style:{justifyContent:`flex-start`,color:`var(--aha-bad)`},onClick:()=>{f(!1),_(!0)},children:a(`deleteCourse`)})]}):null]})]}),E?(0,i.jsx)(Cf,{step:E,courseId:e}):null,(0,i.jsx)(`div`,{className:`aha-tabs`,children:xf.map(([e,t])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-tab`,"data-active":l===e,onClick:()=>u(e),children:a(t)},e))}),l===`outline`?(0,i.jsx)(`div`,{className:`aha-tree`,children:b.units.map((t,n)=>(0,i.jsxs)(`div`,{className:`aha-unit`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`b`,{children:[a(`unitN`,{n:n+1}),` · `,t.title]}),(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:4},children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>o(`sheet`,{courseId:e,unitId:t.id}),children:a(`unitSheet`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>o(`practice`,{courseId:e,unitId:t.id}),children:a(`unitQuiz`)}),(0,i.jsx)(Ef,{courseId:e,unitId:t.id,status:S?.units?.[t.id],ghost:!0})]})]}),t.summary?(0,i.jsx)(`p`,{className:`aha-hint`,children:t.summary}):null,t.lectures.map((t,n)=>(0,i.jsxs)(`div`,{className:`aha-lecture`,children:[(0,i.jsxs)(`div`,{className:`aha-hint`,style:{fontWeight:600},children:[a(`lectureN`,{n:n+1}),` · `,t.title]}),t.lessons.map(t=>(0,i.jsxs)(`div`,{className:`aha-lesson`,children:[(0,i.jsx)(`span`,{className:`aha-dot`,"data-state":O(t.id)}),(0,i.jsxs)(`span`,{className:`aha-lessonName`,style:{cursor:`pointer`},onClick:()=>o(`lesson`,{courseId:e,lessonId:t.id}),title:t.summary,children:[(0,i.jsx)(`span`,{children:t.title}),(0,i.jsx)(ad,{sources:(t.sources??[]).filter(e=>b.materialIds?.includes(e.materialId))})]}),t.kind===`remedial`?(0,i.jsx)(`span`,{className:`aha-tag`,children:a(`remedial`)}):null,t.depth?(0,i.jsx)(`span`,{className:`aha-depth`,"data-depth":t.depth,title:a(`depthTitle`),children:a(`depth_${t.depth}`)}):null,(0,i.jsx)(`span`,{className:`aha-hint`,children:a(`estMinutes`,{minutes:t.estMinutes})}),(0,i.jsx)(Df,{lesson:t,progress:x}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>o(`lesson`,{courseId:e,lessonId:t.id}),children:a(`learn`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>o(`practice`,{courseId:e,lessonId:t.id}),children:a(`practice`)})]},t.id))]},t.id))]},t.id))}):null,l===`outline`&&b.sources?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:a(`courseSources`)}),(0,i.jsx)(sd,{sources:b.sources})]}):null,l===`practice`?(0,i.jsxs)(`div`,{className:`aha-col`,children:[(0,i.jsx)(wf,{courseId:e,course:b,rows:C??[]}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:()=>o(`practice`,{courseId:e,review:!0}),children:a(`startReview`)}),S?.decks?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,disabled:!S.review,onClick:()=>o(`cards`,{courseId:e}),children:S.review?a(`cardReviewDue`,{count:S.review}):a(`cardReviewNone`)}):null]}),b.units.map((t,n)=>(0,i.jsxs)(`div`,{className:`aha-card`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`b`,{children:[a(`unitN`,{n:n+1}),` · `,t.title]}),(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:4},children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>o(`practice`,{courseId:e,unitId:t.id}),children:a(`unitQuiz`)}),(0,i.jsx)(Ef,{courseId:e,unitId:t.id,status:S?.units?.[t.id]})]})]}),(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:6},children:t.lectures.flatMap(e=>e.lessons).map(t=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,onClick:()=>o(`practice`,{courseId:e,lessonId:t.id}),children:t.title},t.id))})]},t.id))]}):null,l===`sheets`?(0,i.jsx)(`div`,{className:`aha-grid`,children:b.units.map((t,n)=>(0,i.jsxs)(`div`,{className:`aha-card`,"data-click":`true`,onClick:()=>o(`sheet`,{courseId:e,unitId:t.id}),children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:a(`unitN`,{n:n+1})}),(0,i.jsx)(`b`,{children:t.title}),(0,i.jsx)(`span`,{className:`aha-tag`,children:c.value.ready.sheets.includes(t.id)?a(`open`):a(`generate`)})]},t.id))}):null,l===`projects`?b.projects?.length?(0,i.jsx)(`div`,{className:`aha-grid`,children:b.projects.map(t=>(0,i.jsxs)(`div`,{className:`aha-card`,"data-click":`true`,onClick:()=>o(`project`,{courseId:e,projectId:t.id}),children:[(0,i.jsx)(`b`,{children:t.title}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t.brief.slice(0,160)}),(0,i.jsx)(`span`,{className:`aha-tag`,children:x?.projects?.[t.id]?.status===`passed`?`✔`:t.kind})]},t.id))}):(0,i.jsx)(Xu,{children:a(`empty`)}):null,l===`progress`?(0,i.jsxs)(`div`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:a(`conceptMastery`)}),(0,i.jsx)(`div`,{className:`aha-col`,style:{gap:4},children:Ge(b).flatMap(({lesson:e})=>e.concepts.map(t=>({concept:t,lesson:e}))).map(({concept:t,lesson:n})=>{let r=x?.concepts?.[t.id],s=df(r);return(0,i.jsxs)(`div`,{className:`aha-spread`,style:{padding:`3px 0`,borderBottom:`1px solid var(--aha-border)`},children:[(0,i.jsxs)(`span`,{children:[t.name,` `,(0,i.jsxs)(`span`,{className:`aha-hint`,children:[`· `,n.title]})]}),(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:8},children:[r?.misconceptions?.length?(0,i.jsxs)(`span`,{className:`aha-tag`,title:r.misconceptions.join(`
273
+ `),children:[`⚠ `,r.misconceptions.length]}):null,(0,i.jsx)(`span`,{className:`aha-level`,"data-level":s,children:a(pf[s])}),(0,i.jsx)(ld,{value:D(t.id),stage:s,label:a(pf[s])}),(0,i.jsx)(`span`,{className:`aha-hint`,style:{width:36,textAlign:`right`},children:s===`none`?`—`:`${D(t.id)}%`}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>o(`practice`,{courseId:e,conceptId:t.id}),children:a(`drillThis`)})]})]},t.id)})})]}):null,p?(0,i.jsx)(Ku,{title:a(`exportPack`),onClose:()=>m(!1),footer:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>k(!1),children:a(`exportPack`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:()=>k(!0),children:a(`exportWithProgress`)})]}),children:(0,i.jsx)(`p`,{className:`aha-hint`,children:b.title})}):null,g?(0,i.jsx)(qu,{danger:!0,text:a(`deleteConfirm`,{title:b.title}),onCancel:()=>_(!1),onConfirm:async()=>{await n.call(`course/remove`,{courseId:e}),o(`courses`,{},{replace:!0})}}):null]})}function Cf({step:e,courseId:t}){let{t:n,navigate:r}=v(),a={review:[e.mistakes?e.count?n(`nextStepReviewMistakes`,{mistakes:e.mistakes,count:e.count}):n(`nextStepMistakes`,{count:e.mistakes}):n(`nextStepReview`,{count:e.count}),n(`startReview`),()=>r(`practice`,{courseId:t,review:!0})],practice:[n(`nextStepWeak`,{concept:e.concept}),n(`drillThis`),()=>r(`practice`,e.conceptId?{courseId:t,conceptId:e.conceptId}:{courseId:t,lessonId:e.lessonId})],lesson:[n(`nextStepLesson`,{title:e.title}),n(`continueLearning`),()=>r(`lesson`,{courseId:t,lessonId:e.lessonId})],done:[n(`nextStepDone`),n(`unitQuiz`),e.unitId?()=>r(`practice`,{courseId:t,unitId:e.unitId}):null]}[e.kind];if(!a)return null;let[o,s,c]=a;return(0,i.jsxs)(`div`,{className:`aha-card aha-nextStep`,"data-kind":e.kind,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:2,flex:1,minWidth:200},children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:n(`nextStepTitle`)}),(0,i.jsx)(`b`,{children:o})]}),c?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:c,children:s}):null]})}function wf({courseId:e,course:t,rows:n}){let{t:a,navigate:o}=v(),[s,c]=(0,r.useState)(!1),[l,u]=(0,r.useState)(null),d=(0,r.useRef)(new Map),f=Date.now(),p=n.filter(e=>!e.resolvedAt),m=n.filter(e=>e.resolvedAt),h=vf(n,f),g=p.find(e=>Date.parse(e.dueAt)>f),_=[[h,`mistakeCountDue`],[p.length,`mistakeCountOpen`],[m.length,`mistakeCountResolved`]].filter(([e])=>e).map(([e,t])=>a(t,{count:e})).join(` · `);return(0,i.jsxs)(`section`,{className:`aha-card aha-mistakeBook`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:2,flex:1,minWidth:`min(220px, 100%)`},children:[(0,i.jsx)(`b`,{children:a(`mistakeBook`)}),(0,i.jsx)(`span`,{className:`aha-hint`,children:_||a(`mistakeEmpty`)})]}),p.length?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":h?`primary`:void 0,disabled:!h,onClick:()=>o(`practice`,{courseId:e,mistakes:!0}),children:h?a(`practiceMistakesDue`,{count:h}):a(`mistakeDueOn`,{day:yf(a,g.dueAt,f)})}):null]}),p.length?(0,i.jsx)(`ul`,{className:`aha-mistakeList`,children:(s?p:p.slice(0,5)).map(e=>(0,i.jsx)(Tf,{row:e,course:t,now:f,onExplain:()=>u(e)},`${e.key}~${e.sig}`))}):null,p.length>5?(0,i.jsx)(`div`,{children:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>c(e=>!e),children:s?a(`mistakeShowFewer`):a(`mistakeShowAll`,{count:p.length})})}):null,m.length?(0,i.jsxs)(`details`,{className:`aha-mistakeResolved`,children:[(0,i.jsx)(`summary`,{children:a(`mistakeResolvedList`,{count:m.length})}),(0,i.jsx)(`ul`,{className:`aha-mistakeList`,children:m.map(e=>(0,i.jsx)(Tf,{row:e,course:t,now:f,onExplain:()=>u(e)},`${e.key}~${e.sig}`))})]}):null,l?(0,i.jsx)(cf,{request:{source:{...l.source,courseId:e},sig:l.sig,book:!0},record:{courseId:e,lessonId:l.lessonId,conceptIds:[]},title:l.prompt.slice(0,80),language:t.language,explained:d.current.get(`${l.key}~${l.sig}`)??null,onStarted:e=>d.current.set(`${l.key}~${l.sig}`,e),onClose:()=>u(null)},`${l.key}~${l.sig}`):null]})}function Tf({row:e,course:t,now:n,onExplain:r}){let{t:a}=v(),o=e.source?.kind===`quiz`?t.units.findIndex(t=>t.id===e.unitId):-1,s=e.source?.kind===`quiz`?`${a(`mistakeFrom_quiz`)} · ${o>=0?`${a(`unitN`,{n:o+1})} ${t.units[o].title}`:``}`:e.source?.kind===`drill`?`${a(`mistakeFrom_drill`)} · ${Ye(t).get(e.source.conceptId)?.name??``}`:`${a(e.source?.kind===`check`?`mistakeFrom_check`:`mistakeFrom_practice`)} · ${Je(t,e.lessonId)?.lesson.title??``}`,c=!e.resolvedAt&&Date.parse(e.dueAt)<=n;return(0,i.jsxs)(`li`,{className:`aha-mistakeRow`,"data-due":c?`true`:void 0,children:[(0,i.jsx)(wd,{text:e.prompt,compact:!0,className:`aha-mistakePrompt`}),e.answer?(0,i.jsx)(wd,{text:a(`mistakeLastAnswer`,{answer:e.answer}),compact:!0,className:`aha-mistakeAnswer`}):null,(0,i.jsxs)(`div`,{className:`aha-mistakeMeta`,children:[(0,i.jsx)(`span`,{children:s}),e.figure?(0,i.jsx)(`span`,{children:a(`mistakeFigure`)}):null,(0,i.jsx)(`span`,{children:a(`mistakeWrongTimes`,{count:e.wrong})}),(0,i.jsx)(`span`,{className:`aha-mistakeWhen`,"data-due":c?`true`:void 0,children:bf(a,e,n)}),r&&e.source?(0,i.jsxs)(`button`,{type:`button`,className:`aha-itemFlag aha-explainFlag aha-mistakeExplain`,onClick:r,children:[`👩‍🏫 `,a(`explainThis`)]}):null]})]})}function Ef({courseId:e,unitId:t,status:n,ghost:r=!1}){let{t:a,navigate:o}=v(),s=n?.due??0;return(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":r?`ghost`:void 0,title:s?a(`unitCardsDueTitle`,{count:s}):void 0,onClick:()=>o(`cards`,{courseId:e,unitId:t}),children:s?a(`unitCardsDue`,{count:s}):a(`unitCards`)})}function Df({lesson:e,progress:t}){let{t:n}=v(),{stage:r,percent:a}=gf(e,t);return(0,i.jsx)(ld,{value:a,stage:r,label:n(pf[r])})}let Of=[[`all`,`filterAll`],[`active`,`filterActive`],[`done`,`filterDone`],[`archived`,`filterArchived`]];function kf(){let{api:e,t,navigate:n,toast:a}=v(),o=y(()=>e.call(`course/list`),[]),[s,c]=(0,r.useState)(`all`),[l,u]=(0,r.useState)(``),[d,f]=(0,r.useState)(null),p=(0,r.useRef)(null),m=(o.value??[]).filter(e=>s===`archived`?e.archived:e.archived?!1:s===`active`?e.status!==`ready`||e.progress.percent<100:s!==`done`||e.status===`ready`&&e.progress.percent>=100).filter(e=>!l.trim()||`${e.title} ${e.subtitle}`.toLowerCase().includes(l.trim().toLowerCase()));async function h(r){f(null);try{let i=await r.text(),o=await e.call(`course/import`,{json:i});a(t(`courseReady`)),n(`course`,{courseId:o.id})}catch(e){f(e)}}return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:t(`coursesTitle`)}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>p.current?.click(),children:t(`importPack`)}),(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:()=>n(`home`),children:[`+ `,t(`modeCourse`)]}),(0,i.jsx)(`input`,{ref:p,type:`file`,accept:`.json,application/json`,hidden:!0,onChange:e=>{let t=e.currentTarget.files?.[0];t&&h(t),e.currentTarget.value=``}})]})]}),(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:6},children:Of.map(([e,n])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":s===e,onClick:()=>c(e),children:t(n)},e))}),(0,i.jsx)(`input`,{className:`aha-input`,style:{maxWidth:260},value:l,placeholder:t(`searchCourses`),onChange:e=>u(e.currentTarget.value)})]}),(0,i.jsx)(Yu,{error:d??o.error}),o.loading&&!o.value?(0,i.jsx)(Hu,{label:t(`loading`)}):m.length?(0,i.jsx)(`div`,{className:`aha-grid`,children:m.map(e=>(0,i.jsxs)(`div`,{className:`aha-card`,"data-click":`true`,onClick:()=>n(e.status===`ready`?`course`:`craft`,{courseId:e.id}),children:[(0,i.jsxs)(`div`,{className:`aha-row`,style:{flexWrap:`nowrap`},children:[(0,i.jsx)(`span`,{style:{fontSize:26},children:e.emoji}),(0,i.jsx)(`span`,{className:`aha-cardTitle`,children:e.title})]}),e.subtitle?(0,i.jsx)(`p`,{className:`aha-hint`,children:e.subtitle}):null,e.status===`ready`?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Uu,{value:e.progress.percent}),(0,i.jsxs)(`span`,{className:`aha-hint`,children:[t(`lessonsCount`,e.progress),e.next?` · ${t(`nextUp`,{title:e.next.title})}`:``]})]}):(0,i.jsx)(`span`,{className:`aha-tag`,children:e.status===`intake`?t(`statusIntake`):t(`statusBlueprint`)})]},e.id))}):(0,i.jsx)(Xu,{children:t(`noCourses`)})]})}let Af=Object.freeze([{maxWidth:210,font:16,line:22,padX:16,padY:11},{maxWidth:220,font:14.5,line:20,padX:14,padY:9},{maxWidth:210,font:13.5,line:19,padX:12,padY:8},{maxWidth:250,font:13.5,line:19,padX:12,padY:7}]),jf=Object.freeze({x:56,y:10,unit:18,meta:20}),Mf=/[⺀-￿]/u;function Nf(e,t){let n=0;for(let r of String(e??``))n+=Mf.test(r)?t:r===` `?t*.3:t*.58;return n}function Pf(e,t,n){let r=Af[t],i=r.maxWidth-r.padX*2-12,a=Nf(e,r.font),o=Math.max(1,Math.ceil(a/i));return{w:Math.ceil(Math.min(r.maxWidth,Math.max(56,a+r.padX*2+12))),h:Math.ceil(o*r.line+r.padY*2+(n?jf.meta:0))}}function Ff(e){let t=[],n=[],r={key:`root`,title:e?.title??``,children:(e?.units??[]).map(e=>({key:e.key,title:e.title,children:(e.lectures??[]).map(e=>({key:e.key,title:e.title,children:(e.lessons??[]).map(e=>({key:e.key,title:e.title,meta:e.meta??null,children:[]}))}))}))},i=new Map,a=[0,0,0,0],o=(e,t)=>{let n=Pf(e.title,t,!!e.meta);i.set(e,n),a[t]=Math.max(a[t],n.w);for(let n of e.children)o(n,t+1)};o(r,0);let s=[0];for(let e=1;e<4;e+=1)s[e]=s[e-1]+a[e-1]+jf.x;let c=0,l=[-1/0,-1/0,-1/0,-1/0],u=`root`,d=(e,r)=>{let{w:a,h:o}=i.get(e),f;if(!e.children.length)f=c+o/2,c+=o+jf.y;else{let t=e.children.map((e,t)=>(r===0&&t>0&&(c+=jf.unit),d(e,r+1)));f=(t[0].centre+t[t.length-1].centre)/2;for(let t of e.children)n.push({from:e.key,to:t.key})}let p=f-o/2;return p<l[r]+jf.y&&(p=l[r]+jf.y),l[r]=p+o,c=Math.max(c,p+o+jf.y),t.push({key:e.key,level:r,x:s[r],y:p,w:a,h:o,title:e.title,meta:e.meta??null}),(e.key!==`root`||!e.children.length)&&(u=If(e)),{centre:p+o/2}};d(r,0);let f=Math.max(...t.map(e=>e.x+e.w)),p=Math.max(...t.map(e=>e.y+e.h)),m=new Map,h=0,g=e=>{m.set(e.key,h++),e.children.forEach(g)};return g(r),t.sort((e,t)=>m.get(e.key)-m.get(t.key)),{nodes:t,links:n,width:f,height:p,last:u}}function If(e){let t=e;for(;t.children.length;)t=t.children[t.children.length-1];return t.key}function Lf(e,t=``){return{title:e?.title||t,units:(e?.units??[]).map((e,t)=>({key:`u${t}`,title:e.title,lectures:(e.lectures??[]).map((e,n)=>({key:`u${t}.${n}`,title:e.title||`…`,lessons:(e.lessons??[]).map((e,r)=>({key:`u${t}.${n}.${r}`,title:typeof e==`string`?e:e?.title??``}))}))}))}}function Rf(e,t){let n=e.x+e.w,r=e.y+e.h/2,i=t.x,a=t.y+t.h/2,o=(n+i)/2;return`M${n} ${r} C${o} ${r} ${o} ${a} ${i} ${a}`}function zf({tree:e,live:t=!1,onPick:n,renderMeta:a}){let{t:o}=v(),s=(0,r.useMemo)(()=>Ff(e),[e]),c=(0,r.useMemo)(()=>new Map(s.nodes.map(e=>[e.key,e])),[s]),l=(0,r.useRef)(null),[u,d]=(0,r.useState)({width:0,height:0}),[f,p]=(0,r.useState)({x:20,y:20,k:1,animate:!1}),[m,h]=(0,r.useState)(!0),g=(0,r.useRef)({size:u,map:s,pointers:new Map,drag:null});g.current.size=u,g.current.map=s,(0,r.useLayoutEffect)(()=>{let e=l.current;if(!e)return;let t=()=>d(t=>t.width===e.clientWidth&&t.height===e.clientHeight?t:{width:e.clientWidth,height:e.clientHeight});t();let n=typeof ResizeObserver==`function`?new ResizeObserver(t):null;return n?.observe(e),()=>n?.disconnect()},[]);let _=()=>({width:g.current.map.width,height:g.current.map.height}),y=(e,{animate:t=!1,manual:n=!1}={})=>{n&&h(!1),p(n=>({...vl(typeof e==`function`?e(n):e,g.current.size,_(),60),animate:t}))},b=(e=!0)=>y(gl(g.current.size,{x:0,y:-30,width:_().width,height:_().height+30},{margin:20,maxZoom:1}),{animate:e});(0,r.useLayoutEffect)(()=>{if(!u.width||!u.height)return;if(!t){b(!1);return}if(!m)return;let e=c.get(s.last);e&&p(t=>{let n=Math.min(1,Math.max(.55,(u.width-40)/Math.max(1,s.width))),r=Math.min(20,u.width-20-(e.x+e.w)*n),i=(e.y+e.h)*n,a=Math.min(50,u.height-40-i);return t.k===n&&t.x===r&&t.y===a?t:{x:r,y:a,k:n,animate:!0}})},[s,t,m,u.width,u.height]),(0,r.useEffect)(()=>{let e=l.current;if(!e)return;let t=t=>{t.preventDefault();let n=e.getBoundingClientRect(),r=yl(t,n.height);t.ctrlKey||t.metaKey?y(e=>hl(e,t.clientX-n.left,t.clientY-n.top,bl(r.y)),{manual:!0}):y(e=>({...e,x:e.x-(t.shiftKey?r.y:r.x),y:e.y-(t.shiftKey?0:r.y)}),{manual:!0})};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[]);let x=e=>{e.pointerType===`mouse`&&e.button!==0||e.target.closest?.(`.aha-mapBar`)||(g.current.pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),g.current.drag||(g.current.drag={x:e.clientX,y:e.clientY,moved:!1}))},S=e=>{let{pointers:t,drag:n}=g.current,r=t.get(e.pointerId);if(!r||!n)return;let i={x:e.clientX,y:e.clientY};if(t.size===1){if(!n.moved&&Math.hypot(i.x-n.x,i.y-n.y)<5)return;n.moved||l.current?.setPointerCapture?.(e.pointerId),n.moved=!0,t.set(e.pointerId,i),y(e=>({...e,x:e.x+i.x-r.x,y:e.y+i.y-r.y}),{manual:!0});return}let a=[...t.entries()].find(([t])=>t!==e.pointerId)?.[1];if(t.set(e.pointerId,i),!a)return;let o=l.current.getBoundingClientRect(),s={x:(r.x+a.x)/2,y:(r.y+a.y)/2,d:Math.hypot(r.x-a.x,r.y-a.y)},c={x:(i.x+a.x)/2,y:(i.y+a.y)/2,d:Math.hypot(i.x-a.x,i.y-a.y)};n.moved=!0,y(e=>{let t=hl(e,s.x-o.left,s.y-o.top,c.d/Math.max(1,s.d));return{...t,x:t.x+c.x-s.x,y:t.y+c.y-s.y}},{manual:!0})},C=e=>{let t=g.current.drag?.moved;if(g.current.pointers.delete(e.pointerId),g.current.pointers.size||(g.current.drag=null),!t&&n){let t=e.target.closest?.(`[data-pick]`)?.dataset.pick;t&&n(t)}},w=e=>y(t=>hl(t,g.current.size.width/2,g.current.size.height/2,e),{animate:!0,manual:!0});return(0,i.jsxs)(`div`,{className:`aha-map`,children:[(0,i.jsx)(`div`,{ref:l,className:`aha-mapView`,onPointerDown:x,onPointerMove:S,onPointerUp:C,onPointerCancel:C,onDoubleClick:()=>b(),children:(0,i.jsxs)(`div`,{className:`aha-mapWorld`,style:{width:s.width,height:s.height,transform:`translate(${f.x}px, ${f.y}px) scale(${f.k})`,transition:f.animate?`transform .45s ease`:`none`},children:[(0,i.jsx)(`svg`,{className:`aha-mapLinks`,width:s.width,height:s.height,"aria-hidden":`true`,children:s.links.map(e=>{let t=c.get(e.from),n=c.get(e.to);return t&&n?(0,i.jsx)(`path`,{d:Rf(t,n)},`${e.from}>${e.to}`):null})}),s.nodes.map(e=>(0,i.jsxs)(`div`,{className:`aha-mapNode`,"data-level":e.level,"data-pick":n&&e.level===3?e.key:void 0,style:{left:e.x,top:e.y,width:e.w,minHeight:e.h},title:n&&e.level===3?o(`mapPick`):void 0,children:[(0,i.jsx)(`span`,{className:`aha-mapTitle`,children:e.title}),e.meta&&a?(0,i.jsx)(`span`,{className:`aha-mapMeta`,children:a(e.meta)}):null]},e.key))]})}),(0,i.jsxs)(`div`,{className:`aha-mapBar`,role:`toolbar`,"aria-label":o(`mapTools`),children:[t&&!m?(0,i.jsx)(`button`,{type:`button`,className:`aha-mapFollow`,onClick:()=>h(!0),children:o(`mapFollow`)}):null,(0,i.jsx)(`button`,{type:`button`,"aria-label":o(`canvasZoomOut`),title:o(`canvasZoomOut`),onClick:()=>w(1/pl),children:`−`}),(0,i.jsxs)(`button`,{type:`button`,className:`aha-mapZoom`,title:o(`canvasZoomReset`),onClick:()=>y(e=>({...hl(e,g.current.size.width/2,g.current.size.height/2,1/e.k)}),{animate:!0,manual:!0}),children:[Math.round(f.k*100),`%`]}),(0,i.jsx)(`button`,{type:`button`,"aria-label":o(`canvasZoomIn`),title:o(`canvasZoomIn`),onClick:()=>w(pl),children:`+`}),(0,i.jsx)(`button`,{type:`button`,title:o(`canvasFit`),onClick:()=>{h(!1),b()},children:o(`canvasFitShort`)})]})]})}let Bf=[[`intensive`,`paceIntensive`,`paceIntensiveHint`],[`balanced`,`paceBalanced`,`paceBalancedHint`],[`relaxed`,`paceRelaxed`,`paceRelaxedHint`]],Vf=[[`auto`,`sizeAuto`,`sizeAutoHint`],[`short`,`sizeShort`,`sizeShortHint`],[`standard`,`sizeStandard`,`sizeStandardHint`],[`full`,`sizeFull`,`sizeFullHint`]],Hf=[60,120,180,300,420,600];function Uf({jobId:e,courseId:t,edit:n=!1,add:a=!1}){let{api:o,t:s,navigate:c}=v(),[l,u]=(0,r.useState)(null),[d,f]=(0,r.useState)(`questions`);return(0,r.useEffect)(()=>{if(!e||t)return;let n=new AbortController;return o.follow({job:{id:e,status:`running`}},{signal:n.signal,onProgress:e=>f(e?.label===`research`?`research`:`questions`)}).then(e=>c(`craft`,{courseId:e.courseId},{replace:!0})).catch(e=>{n.signal.aborted||u(e)}),()=>n.abort()},[e,t]),t?(0,i.jsx)(Wf,{courseId:t,edit:n,add:a}):(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:s(`craftQuestionsTitle`)}),l?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Yu,{error:l}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>c(`home`),children:s(`back`)})]}):(0,i.jsx)(Hu,{label:s(d===`research`?`researching`:`thinkingQuestions`)})]})}function Wf({courseId:e,edit:t,add:n}){let{api:a,t:o,navigate:s}=v(),c=y(()=>a.call(`course/get`,{courseId:e}),[e]),l=b(),u=c.value?.course;return(0,r.useEffect)(()=>{let e=c.value?.jobs?.questions??c.value?.jobs?.blueprint??c.value?.jobs?.confirm;!e||l.running||l.run(null,null,{existing:e}).then(()=>c.reload()).catch(()=>void 0)},[c.value]),(0,r.useEffect)(()=>{u?.status===`ready`&&!l.running&&!t&&s(`course`,{courseId:e},{replace:!0})},[u?.status]),c.loading&&!c.value?(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Hu,{label:o(`loading`)})}):c.error&&!c.value?(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Yu,{error:c.error})}):u?u.status===`intake`?(0,i.jsx)(Gf,{course:u,intake:c.value.intake,job:l,onDone:()=>c.reload()}):(0,i.jsx)(Zf,{course:u,proposal:c.value.proposal,progress:c.value.progress,boards:c.value.ready?.boards??[],job:l,onChange:()=>c.reload(),adding:n}):null}function Gf({course:e,intake:t,job:n,onDone:a}){let{t:o}=v(),s=t?.questionnaire?.questions??[],[c,l]=(0,r.useState)({}),[u,d]=(0,r.useState)(`balanced`),[f,p]=(0,r.useState)(`auto`),[m,h]=(0,r.useState)(180),[g,_]=(0,r.useState)(``),y=(e,t)=>l(n=>{let r=n[e.id]??{choice:[],other:``},i=e.multi?r.choice.includes(t)?r.choice.filter(e=>e!==t):[...r.choice,t]:[t];return{...n,[e.id]:{...r,choice:i}}});async function b(){try{await n.run(`course/intake`,{courseId:e.id,answers:c,timeline:u,size:f,weeklyMinutes:m,deadline:g||void 0}),a()}catch{}}return n.running?n.progress?.label===`questions`?(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:e.goal}),(0,i.jsx)(Wu,{progress:n.progress,label:o(`thinkingQuestions`),onCancel:n.cancel})]}):(0,i.jsx)(qf,{course:e,job:n,research:t?.research}):(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:o(`craftQuestionsTitle`)}),(0,i.jsx)(`p`,{className:`aha-subtitle`,children:e.goal}),(0,i.jsx)(`p`,{className:`aha-hint`,children:o(`craftQuestionsHint`)}),t?.research?(0,i.jsx)(Kf,{research:t.research}):null]}),s.map((e,t)=>(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsxs)(`div`,{className:`aha-cardTitle`,children:[t+1,`. `,e.prompt]}),(0,i.jsx)(`div`,{className:`aha-grid`,style:{gridTemplateColumns:`repeat(auto-fill,minmax(220px,1fr))`},children:e.options.map(t=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-option`,"data-active":c[e.id]?.choice?.includes(t.id)??!1,onClick:()=>y(e,t.id),children:[(0,i.jsx)(`b`,{children:t.label}),t.detail?(0,i.jsx)(`small`,{children:t.detail}):null]},t.id))}),(0,i.jsx)(`input`,{className:`aha-input`,placeholder:o(`craftOther`),value:c[e.id]?.other??``,onChange:t=>{let n=t.currentTarget.value;l(t=>({...t,[e.id]:{choice:t[e.id]?.choice??[],other:n}}))}})]},e.id)),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`div`,{className:`aha-cardTitle`,children:o(`craftSize`)}),(0,i.jsx)(`div`,{className:`aha-grid`,style:{gridTemplateColumns:`repeat(auto-fill,minmax(180px,1fr))`},children:Vf.map(([e,t,n])=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-option`,"data-active":f===e,onClick:()=>p(e),children:[(0,i.jsx)(`b`,{children:o(t)}),(0,i.jsx)(`small`,{children:o(n)})]},e))})]}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`div`,{className:`aha-cardTitle`,children:o(`craftPace`)}),(0,i.jsx)(`div`,{className:`aha-grid`,style:{gridTemplateColumns:`repeat(auto-fill,minmax(200px,1fr))`},children:Bf.map(([e,t,n])=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-option`,"data-active":u===e,onClick:()=>d(e),children:[(0,i.jsx)(`b`,{children:o(t)}),(0,i.jsx)(`small`,{children:o(n)})]},e))}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsxs)(`label`,{className:`aha-label`,style:{flex:1,minWidth:220},children:[o(`weeklyMinutes`),(0,i.jsx)(`select`,{className:`aha-select`,value:m,onChange:e=>h(Number(e.currentTarget.value)),children:Hf.map(e=>(0,i.jsx)(`option`,{value:e,children:o(`minutesUnit`,{minutes:e})},e))})]}),(0,i.jsxs)(`label`,{className:`aha-label`,style:{flex:1,minWidth:220},children:[o(`deadline`),(0,i.jsx)(`input`,{className:`aha-input`,type:`date`,value:g,onChange:e=>_(e.currentTarget.value)})]})]})]}),(0,i.jsx)(Yu,{error:n.error}),(0,i.jsx)(`div`,{className:`aha-row`,children:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:b,children:o(`makeBlueprint`)})})]})}function Kf({research:e}){let{t}=v();return e.skipped?(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`researchSkipped`,{reason:t(`researchSkipped_${e.skipped}`)})}):(0,i.jsxs)(`details`,{className:`aha-sources`,children:[(0,i.jsx)(`summary`,{children:t(`researchFound`,{count:e.sources.length})}),(0,i.jsx)(sd,{sources:e.sources})]})}function qf({course:e,job:t,research:n}){let{t:a}=v(),o=t.preview?.units??[],s=(0,r.useMemo)(()=>Lf(t.preview,e.goal),[t.preview,e.goal]),c=o.reduce((e,t)=>e+t.lectures.reduce((e,t)=>e+t.lessons.length,0),0),l=t.progress?.label===`materials`?`materials`:o.length?`lessons`:`units`,u=[...n?.sources?.length?[[`research`,a(`buildResearch`,{count:n.sources.length})]]:[],[`answers`,a(`buildAnswers`)],...e.materialIds?.length?[[`materials`,a(`buildMaterials`)]]:[],[`units`,a(`buildUnits`)],[`lessons`,c?a(`buildLessonsSoFar`,{count:c}):a(`buildLessons`)]],d=u.findIndex(([e])=>e===l);return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:t.preview?.title||e.goal}),(0,i.jsxs)(`p`,{className:`aha-hint`,children:[a(`designingBlueprint`),` `,a(`keepsRunning`)]})]}),(0,i.jsx)(`ol`,{className:`aha-buildLog`,children:u.map(([e,t],n)=>(0,i.jsxs)(`li`,{"data-state":n<d?`done`:n===d?`current`:`todo`,children:[(0,i.jsx)(`span`,{className:`aha-buildMark`,"aria-hidden":`true`,children:n<d?`✓`:n===d?(0,i.jsx)(`span`,{className:`aha-spinner`}):``}),(0,i.jsx)(`span`,{children:t})]},e))}),o.length?(0,i.jsx)(zf,{tree:s,live:!0}):null,(0,i.jsx)(`div`,{className:`aha-row`,children:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:t.cancel,children:a(`cancel`)})})]})}function Jf(e){return JSON.parse(JSON.stringify(e??[]))}function Yf(e,t,n){let r=[...e],i=t+n;return i<0||i>=r.length?e:([r[t],r[i]]=[r[i],r[t]],r)}function Xf({course:e,job:t,onDone:n,onClose:a}){let{api:o,t:s}=v(),c=y(()=>o.call(`material/list`),[]),[l,u]=(0,r.useState)([]),[d,f]=(0,r.useState)(!1),[p,m]=(0,r.useState)(``),h=new Map((c.value??[]).map(e=>[e.id,e.title]));async function g(){try{await t.run(`course/add-materials`,{courseId:e.id,materialIds:l,instruction:p.trim()}),n()}catch{}}return(0,i.jsxs)(`section`,{className:`aha-card aha-addMaterials`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`b`,{children:s(`addMaterialsTitle`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:a,children:s(`cancel`)})]}),(0,i.jsx)(`p`,{className:`aha-hint`,children:s(`addMaterialsHint`)}),(0,i.jsxs)(`div`,{className:`aha-row`,style:{gap:6},children:[l.map(e=>(0,i.jsx)(`span`,{className:`aha-tag`,children:h.get(e)??`…`},e)),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>{c.reload(),f(!0)},children:l.length?s(`changeMaterials`):s(`pickMaterials`)})]}),(0,i.jsx)(`input`,{className:`aha-input`,value:p,placeholder:s(`addMaterialsPlaceholder`),"aria-label":s(`addMaterialsPlaceholder`),onChange:e=>m(e.currentTarget.value)}),(0,i.jsx)(`div`,{className:`aha-row`,children:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:!l.length,onClick:g,children:s(`addMaterialsSend`)})}),d?(0,i.jsx)(ed,{selected:l,max:12,exclude:e.materialIds??[],onChange:e=>{u(e),c.reload()},onClose:()=>f(!1)}):null]})}function Zf({course:e,proposal:t,progress:n,boards:a,job:o,onChange:s,adding:c=!1}){let{api:l,t:u,toast:d,navigate:f}=v(),p=e.status===`ready`,[m,h]=(0,r.useState)(()=>Jf(e.units)),[g,_]=(0,r.useState)(e.title),[y,x]=(0,r.useState)(!1),[S,C]=(0,r.useState)(``),[w,T]=(0,r.useState)(!1),[E,D]=(0,r.useState)(null),[O,k]=(0,r.useState)(null),[A,ee]=(0,r.useState)(null),[te,ne]=(0,r.useState)(null),[j,re]=(0,r.useState)(p?`list`:`map`),[ie,ae]=(0,r.useState)(c),[oe,se]=(0,r.useState)(null),ce=(0,r.useRef)(null),le=b();(0,r.useEffect)(()=>{h(Jf(e.units)),_(e.title),x(!1)},[e]);let M=e=>{h(t=>{let n=Jf(t);return e(n),n.filter(e=>e.lectures.length).map(e=>({...e,lectures:e.lectures.filter(e=>e.lessons.length)}))}),x(!0)},ue=(0,r.useMemo)(()=>m.reduce((e,t)=>e+t.lectures.reduce((e,t)=>e+t.lessons.length,0),0),[m]),de=(0,r.useMemo)(()=>m.reduce((e,t)=>e+t.lectures.reduce((e,t)=>e+t.lessons.reduce((e,t)=>e+(t.estMinutes||15),0),0),0),[m]),fe=(0,r.useMemo)(()=>t?.blueprint?.units?Ke(e,t.blueprint):null,[e,t]),pe=e=>!!e.id&&((n?.lessons?.[e.id]?.status??`new`)!==`new`||a.includes(e.id)),me=!!fe||!!te,he=(0,r.useMemo)(()=>({title:g,units:m.map((e,t)=>({key:`u${t}`,title:e.title,lectures:e.lectures.map((e,n)=>({key:`u${t}.${n}`,title:e.title,lessons:e.lessons.map((e,r)=>({key:`u${t}.${n}.${r}`,title:e.title,meta:{depth:e.depth,minutes:e.estMinutes}}))}))}))}),[m,g]),ge=e=>(0,i.jsxs)(i.Fragment,{children:[e.depth?(0,i.jsx)(`span`,{className:`aha-depth`,"data-depth":e.depth,children:u(`depth_${e.depth}`)}):null,(0,i.jsx)(`span`,{children:u(`estMinutes`,{minutes:e.minutes})})]});(0,r.useEffect)(()=>{if(!oe||j!==`list`)return;let e=ce.current?.querySelector(`[data-path="${oe}"]`);e?.scrollIntoView({block:`center`,behavior:`smooth`}),e?.querySelector(`input`)?.focus({preventScroll:!0});let t=setTimeout(()=>se(null),1700);return()=>clearTimeout(t)},[oe,j]);async function _e(){T(!0),D(null);try{return await l.call(`course/save-blueprint`,{courseId:e.id,blueprint:{...e,title:g,units:m}}),x(!1),d(u(`saved`)),s(),!0}catch(e){return D(e),!1}finally{T(!1)}}async function ve(t,n){t?.preventDefault();let r=n??S.trim();if(r&&!(y&&!await _e()))try{await o.run(`course/revise`,{courseId:e.id,instruction:r}),C(``),s()}catch{}}async function ye(t,n){D(null);try{await l.call(t,{courseId:e.id}),n&&d(n),s()}catch(e){D(e)}}async function be(t,n,r,i){ee(null);let a=m[t],o=a.lectures[n];ne(`${t}.${n}.${r}`);try{let s=await le.run(`course/rework-lesson`,{courseId:e.id,lesson:o.lessons[r],unitTitle:a.title,lectureTitle:o.title,mode:i});M(e=>{e[t].lectures[n].lessons.splice(r,1,...s.lessons)}),d(u(i===`split`?`splitDone`:`deepenDone`))}catch{}finally{ne(null)}}async function xe(){if(!(y&&!await _e()))try{await o.run(`course/confirm`,{courseId:e.id}),s()}catch{}}async function Se(){y&&!await _e()||f(`course`,{courseId:e.id})}if(o.running){let t=o.progress?.label===`practice`||o.progress?.label===`projects`?u(`confirming`,{done:o.progress.done,total:o.progress.total}):o.progress?.done?u(`revisingSoFar`,{count:o.progress.done}):u(`revising`);return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`h2`,{className:`aha-title`,children:[e.emoji,` `,e.title]}),(0,i.jsx)(Wu,{progress:o.progress,label:t,onCancel:o.cancel})]})}let Ce=(e,t)=>k({text:e,run:t});return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4,flex:1},children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:u(p?`editOutline`:`blueprintTitle`)}),(0,i.jsxs)(`div`,{className:`aha-row`,style:{flexWrap:`nowrap`},children:[(0,i.jsx)(`span`,{style:{fontSize:28},children:e.emoji}),(0,i.jsx)(`input`,{className:`aha-input aha-title`,style:{border:`none`,padding:`2px 4px`},value:g,disabled:me,onChange:e=>{_(e.currentTarget.value),x(!0)}})]}),e.subtitle?(0,i.jsx)(`p`,{className:`aha-subtitle`,children:e.subtitle}):null,(0,i.jsxs)(`p`,{className:`aha-hint`,children:[u(`lessonsCount`,{done:0,total:ue}),` · `,u(`minutesLeft`,{minutes:de})]})]}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[y?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,disabled:w||me,onClick:_e,children:u(`saveEdits`)}):null,p?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:w||me,onClick:Se,children:u(y?`saveAndBack`:`backToCourse`)}):(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:me,onClick:xe,children:u(`confirmCourse`)})]})]}),e.summary?(0,i.jsx)(`p`,{children:e.summary}):null,fe?(0,i.jsxs)(`section`,{className:`aha-card aha-proposal`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:2},children:[(0,i.jsx)(`b`,{children:u(`proposalTitle`)}),t.materials?.length?(0,i.jsx)(`span`,{className:`aha-hint`,children:u(`proposalMaterials`,{titles:t.materials.map(e=>`《${e.title}》`).join(``)})}):null,t.instruction?(0,i.jsxs)(`span`,{className:`aha-hint`,children:[`“`,t.instruction,`”`]}):null]}),qe(fe)?(0,i.jsx)(`p`,{className:`aha-hint`,children:u(`proposalNoChange`)}):(0,i.jsxs)(`ul`,{className:`aha-diff`,children:[fe.title?(0,i.jsxs)(`li`,{"data-kind":`renamed`,children:[(0,i.jsx)(`span`,{className:`aha-diffTag`,children:u(`diffRenamed`)}),fe.title.from,` → `,fe.title.to]}):null,fe.unitsAdded.map((e,t)=>(0,i.jsxs)(`li`,{"data-kind":`added`,children:[(0,i.jsx)(`span`,{className:`aha-diffTag`,children:u(`diffAdded`)}),u(`diffUnit`,{title:e})]},`ua${t}`)),fe.unitsRemoved.map((e,t)=>(0,i.jsxs)(`li`,{"data-kind":`removed`,children:[(0,i.jsx)(`span`,{className:`aha-diffTag`,children:u(`diffRemoved`)}),u(`diffUnit`,{title:e})]},`ur${t}`)),fe.added.map((e,t)=>(0,i.jsxs)(`li`,{"data-kind":`added`,children:[(0,i.jsx)(`span`,{className:`aha-diffTag`,children:u(`diffAdded`)}),e.title,(0,i.jsxs)(`span`,{className:`aha-hint`,children:[` · `,e.unit]})]},`a${t}`)),fe.removed.map((e,t)=>(0,i.jsxs)(`li`,{"data-kind":`removed`,children:[(0,i.jsx)(`span`,{className:`aha-diffTag`,children:u(`diffRemoved`)}),e.title,(0,i.jsxs)(`span`,{className:`aha-hint`,children:[` · `,e.unit]})]},`r${t}`)),fe.renamed.map((e,t)=>(0,i.jsxs)(`li`,{"data-kind":`renamed`,children:[(0,i.jsx)(`span`,{className:`aha-diffTag`,children:u(`diffRenamed`)}),e.from,` → `,e.to]},`n${t}`)),fe.changed.map((e,t)=>(0,i.jsxs)(`li`,{"data-kind":`changed`,children:[(0,i.jsx)(`span`,{className:`aha-diffTag`,children:u(`diffChanged`)}),e.title,(0,i.jsxs)(`span`,{className:`aha-hint`,children:[` · `,e.unit]})]},`c${t}`))]}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:()=>ye(`course/proposal-apply`,u(`proposalApplied`)),children:u(`applyProposal`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>ye(`course/proposal-discard`),children:u(`discardProposal`)})]})]}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`p`,{className:`aha-hint`,children:u(`blueprintHint`)}),(0,i.jsxs)(`form`,{className:`aha-row`,onSubmit:ve,children:[(0,i.jsx)(`input`,{className:`aha-input`,style:{flex:1},value:S,placeholder:u(`revisePlaceholder`),onChange:e=>C(e.currentTarget.value),"aria-label":u(`reviseLabel`)}),(0,i.jsx)(`button`,{type:`submit`,className:`aha-btn`,disabled:!S.trim()||me,children:u(`revise`)}),p?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,disabled:me,onClick:()=>ve(null,u(`extendInstruction`)),children:u(`extendCourse`)}):null,(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,disabled:me,"aria-expanded":ie,onClick:()=>ae(e=>!e),children:u(`addMaterials`)})]}),ie?(0,i.jsx)(Xf,{course:e,job:o,onClose:()=>ae(!1),onDone:()=>{ae(!1),s()}}):null]}),(0,i.jsx)(Yu,{error:E??o.error??le.error}),(0,i.jsxs)(`div`,{className:`aha-viewToggle`,role:`group`,"aria-label":u(`outlineView`),children:[(0,i.jsx)(`button`,{type:`button`,"aria-pressed":j===`list`,onClick:()=>re(`list`),children:u(`viewList`)}),(0,i.jsx)(`button`,{type:`button`,"aria-pressed":j===`map`,onClick:()=>re(`map`),children:u(`viewMap`)})]}),j===`map`?(0,i.jsx)(zf,{tree:he,renderMeta:ge,onPick:e=>{se(e),re(`list`)}}):(0,i.jsxs)(`fieldset`,{ref:ce,className:`aha-tree`,disabled:me,children:[m.map((t,n)=>(0,i.jsxs)(`div`,{className:`aha-unit`,children:[(0,i.jsxs)(`div`,{className:`aha-lesson`,style:{fontWeight:650},children:[(0,i.jsx)(`span`,{className:`aha-tag`,children:u(`unitN`,{n:n+1})}),(0,i.jsx)(`input`,{value:t.title,onChange:e=>{let t=e.currentTarget.value;M(e=>{e[n].title=t})}}),(0,i.jsx)(Qf,{onUp:()=>M(e=>{e.splice(0,e.length,...Yf(e,n,-1))}),onDown:()=>M(e=>{e.splice(0,e.length,...Yf(e,n,1))}),onRemove:()=>Ce(u(`confirmRemoveUnit`,{title:t.title}),()=>M(e=>{e.splice(n,1)}))})]}),t.lectures.map((t,r)=>(0,i.jsxs)(`div`,{className:`aha-lecture`,children:[(0,i.jsxs)(`div`,{className:`aha-lesson`,style:{fontWeight:600},children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:u(`lectureN`,{n:r+1})}),(0,i.jsx)(`input`,{value:t.title,onChange:e=>{let t=e.currentTarget.value;M(e=>{e[n].lectures[r].title=t})}}),(0,i.jsx)(Qf,{onUp:()=>M(e=>{let t=e[n].lectures;t.splice(0,t.length,...Yf(t,r,-1))}),onDown:()=>M(e=>{let t=e[n].lectures;t.splice(0,t.length,...Yf(t,r,1))}),onRemove:()=>Ce(u(`confirmRemoveLecture`,{title:t.title}),()=>M(e=>{e[n].lectures.splice(r,1)}))})]}),t.lessons.map((t,a)=>{let o=`${n}.${r}.${a}`,s=()=>M(e=>{e[n].lectures[r].lessons.splice(a,1)});return(0,i.jsxs)(`div`,{className:`aha-lesson`,"data-path":`u${o}`,"data-flash":oe===`u${o}`?`true`:void 0,children:[(0,i.jsx)(`span`,{className:`aha-dot`}),(0,i.jsxs)(`span`,{className:`aha-lessonName`,children:[(0,i.jsx)(`input`,{value:t.title,title:t.summary,onChange:e=>{let t=e.currentTarget.value;M(e=>{e[n].lectures[r].lessons[a].title=t})}}),(0,i.jsx)(ad,{sources:(t.sources??[]).filter(t=>e.materialIds?.includes(t.materialId))})]}),(0,i.jsxs)(`select`,{className:`aha-depthSelect`,"data-depth":t.depth||void 0,value:t.depth??``,title:u(`depthTitle`),"aria-label":u(`depthTitle`),onChange:e=>{let t=e.currentTarget.value;M(e=>{let i=e[n].lectures[r].lessons[a];t?i.depth=t:delete i.depth})},children:[(0,i.jsx)(`option`,{value:``,children:u(`depthNone`)}),Ue.map(e=>(0,i.jsx)(`option`,{value:e,children:u(`depth_${e}`)},e))]}),(0,i.jsx)(`span`,{className:`aha-hint`,children:u(`estMinutes`,{minutes:t.estMinutes})}),te===o?(0,i.jsx)(Hu,{}):pe(t)?null:(0,i.jsxs)(`span`,{className:`aha-menuAnchor`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,title:u(`reworkLesson`),"aria-label":u(`reworkLesson`),"aria-expanded":A===o,onClick:()=>ee(e=>e===o?null:o),children:`✦`}),A===o?(0,i.jsxs)(`div`,{className:`aha-card aha-menu`,onMouseLeave:()=>ee(null),children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>be(n,r,a,`split`),children:u(`splitLesson`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>be(n,r,a,`deepen`),children:u(`deepenLesson`)})]}):null]}),(0,i.jsx)(Qf,{onUp:()=>M(e=>{let t=e[n].lectures[r].lessons;t.splice(0,t.length,...Yf(t,a,-1))}),onDown:()=>M(e=>{let t=e[n].lectures[r].lessons;t.splice(0,t.length,...Yf(t,a,1))}),onRemove:()=>pe(t)?Ce(u(`confirmRemoveStarted`,{title:t.title}),s):s()})]},t.id??a)}),(0,i.jsx)(`div`,{children:(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>M(e=>{e[n].lectures[r].lessons.push({title:u(`untitled`),objectives:[],concepts:[],estMinutes:15})}),children:[`+ `,u(`addLesson`)]})})]},t.id??r)),(0,i.jsx)(`div`,{children:(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>M(e=>{e[n].lectures.push({title:u(`untitled`),lessons:[{title:u(`untitled`),objectives:[],concepts:[],estMinutes:15}]})}),children:[`+ `,u(`addLecture`)]})})]},t.id??n)),(0,i.jsx)(`div`,{children:(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>M(e=>{e.push({title:u(`untitled`),objectives:[],lectures:[{title:u(`untitled`),lessons:[{title:u(`untitled`),objectives:[],concepts:[],estMinutes:15}]}]})}),children:[`+ `,u(`addUnit`)]})})]}),e.projects?.length?(0,i.jsxs)(`section`,{className:`aha-col`,children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:u(`projects`)}),(0,i.jsx)(`div`,{className:`aha-grid`,children:e.projects.map(e=>(0,i.jsxs)(`div`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:e.title}),(0,i.jsx)(`p`,{className:`aha-hint`,children:e.brief})]},e.id))})]}):null,O?(0,i.jsx)(qu,{danger:!0,text:O.text,onConfirm:()=>{O.run(),k(null)},onCancel:()=>k(null)}):null]})}function Qf({onUp:e,onDown:t,onRemove:n}){let{t:r}=v();return(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:2,flexWrap:`nowrap`},children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:e,title:r(`moveUp`),"aria-label":r(`moveUp`),children:`↑`}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:t,title:r(`moveDown`),"aria-label":r(`moveDown`),children:`↓`}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:n,title:r(`remove`),"aria-label":r(`remove`),children:`✕`})]})}function $f({courseId:e,lessonId:t}){let{api:n,t:a,navigate:o}=v(),s=b(),[c,l]=(0,r.useState)(null),[u,d]=(0,r.useState)(null),f=async r=>{d(null);try{let i=await n.call(`lesson/handout`,{courseId:e,lessonId:t,force:r});l(i.job?(await s.run(null,null,{existing:i.job})).handout:i.handout)}catch(e){d(e)}};(0,r.useEffect)(()=>{f(!1)},[e,t]);let p=()=>{for(let e of document.querySelectorAll(`.aha-handout details`))e.open=!0;window.print()},m=(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>o(`lesson`,{courseId:e,lessonId:t}),children:[`← `,a(`backToLesson`)]});return u?(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsx)(Yu,{error:u}),(0,i.jsx)(`div`,{className:`aha-row`,children:m})]}):c?(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:860},children:[(0,i.jsxs)(`div`,{className:`aha-spread aha-noprint`,children:[m,(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:p,children:a(`print`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>{l(null),f(!0)},children:a(`regenerate`)})]})]}),(0,i.jsxs)(`article`,{className:`aha-printable aha-handout`,children:[(0,i.jsxs)(`header`,{children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:a(`handout`)}),(0,i.jsx)(`h2`,{children:c.title}),c.summary?(0,i.jsx)(`p`,{className:`aha-handoutSummary`,children:(0,i.jsx)(hu,{text:c.summary})}):null]}),(0,i.jsxs)(`section`,{children:[(0,i.jsx)(`h3`,{children:a(`handoutPoints`)}),(0,i.jsx)(`ol`,{className:`aha-handoutPoints`,children:c.points.map((e,t)=>(0,i.jsxs)(`li`,{children:[(0,i.jsx)(`b`,{children:(0,i.jsx)(hu,{text:e.title})}),e.oneLine?(0,i.jsx)(`div`,{className:`aha-handoutOneLine`,children:(0,i.jsx)(hu,{text:e.oneLine})}):null,e.detail?(0,i.jsx)(`div`,{className:`aha-hint`,children:(0,i.jsx)(hu,{text:e.detail})}):null]},t))})]}),c.example?(0,i.jsxs)(`section`,{children:[(0,i.jsx)(`h3`,{children:a(`handoutExample`)}),(0,i.jsx)(`p`,{children:(0,i.jsx)(hu,{text:c.example.problem})}),(0,i.jsx)(`ol`,{className:`aha-handoutSteps`,children:c.example.steps.map((e,t)=>(0,i.jsx)(`li`,{children:(0,i.jsx)(hu,{text:e})},t))}),c.example.answer?(0,i.jsxs)(`div`,{className:`aha-handoutAnswer`,children:[(0,i.jsx)(`b`,{children:a(`handoutAnswer`)}),` `,(0,i.jsx)(hu,{text:c.example.answer})]}):null]}):null,c.mistakes.length?(0,i.jsxs)(`section`,{children:[(0,i.jsx)(`h3`,{children:a(`handoutMistakes`)}),(0,i.jsx)(`ul`,{className:`aha-handoutMistakes`,children:c.mistakes.map((e,t)=>(0,i.jsxs)(`li`,{children:[(0,i.jsx)(`span`,{"data-wrong":`true`,children:(0,i.jsx)(hu,{text:e.mistake})}),e.fix?(0,i.jsxs)(`span`,{children:[`→ `,(0,i.jsx)(hu,{text:e.fix})]}):null]},t))})]}):null,c.glossary.length?(0,i.jsxs)(`section`,{children:[(0,i.jsx)(`h3`,{children:a(`handoutGlossary`)}),(0,i.jsx)(`dl`,{className:`aha-handoutGlossary`,children:c.glossary.map((e,t)=>(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`dt`,{children:(0,i.jsx)(hu,{text:e.term})}),(0,i.jsx)(`dd`,{children:(0,i.jsx)(hu,{text:e.meaning})})]},t))})]}):null,c.questions.length?(0,i.jsxs)(`section`,{children:[(0,i.jsx)(`h3`,{children:a(`handoutQuestions`)}),(0,i.jsx)(`ol`,{className:`aha-handoutQuestions`,children:c.questions.map((e,t)=>(0,i.jsxs)(`li`,{children:[(0,i.jsx)(hu,{text:e.question}),e.answer?(0,i.jsxs)(`details`,{children:[(0,i.jsx)(`summary`,{children:a(`handoutAnswer`)}),(0,i.jsx)(hu,{text:e.answer})]}):null]},t))})]}):null]})]}):(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Wu,{progress:s.progress,label:a(`handoutMaking`),onCancel:s.running?s.cancel:void 0})})}function ep({item:e,day:t,today:n,onToggle:r}){let{t:a,navigate:o}=v(),s=e.kind!==`exam`&&t<=n,c=e.checked===`auto`;return(0,i.jsxs)(`div`,{className:`aha-planItem`,"data-checked":e.checked?`true`:void 0,children:[s?(0,i.jsx)(`input`,{type:`checkbox`,className:`aha-check`,checked:!!e.checked,disabled:c,title:c?a(`checkedAuto`):void 0,"aria-label":e.checked?a(`unmarkDone`):a(`markDone`),onChange:()=>r?.(e,t)}):null,(0,i.jsx)(`span`,{className:`aha-tag`,children:e.kind===`lesson`?a(`lessonItem`):e.kind===`review`?a(`reviewItem`):a(`examItem`)}),(0,i.jsxs)(`span`,{className:`aha-planTitle`,children:[e.title,(0,i.jsx)(cd,{title:e.courseTitle,emoji:e.courseEmoji})]}),e.minutes?(0,i.jsx)(`span`,{className:`aha-hint`,children:a(`minutesUnit`,{minutes:e.minutes})}):null,e.kind===`lesson`&&!e.checked?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>o(`lesson`,{courseId:e.courseId,lessonId:e.refId}),children:a(`learn`)}):null,e.kind===`review`&&!e.checked&&t===n?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>o(`practice`,{courseId:e.courseId??void 0,review:!0}),children:a(`review`)}):null]})}function tp(e,t,n,r){return t.checked===`manual`?e.call(`plan/uncheck`,{today:r,day:n,refId:t.refId}):e.call(`plan/check`,{today:r,day:n,item:t})}let np=[[`course`,`modeCourse`,`🎓`],[`explain`,`modeExplain`,`💡`],[`solve`,`modeSolve`,`🧮`],[`visualize`,`modeVisualize`,`📈`],[`digest`,`modeDigest`,`📚`],[`short`,`modeShort`,`🎬`]];function rp(){let{api:e,t,navigate:n,toast:a}=v(),[o,s]=(0,r.useState)(`course`),[c,l]=C(`craftWeb`,!0),[u,d]=(0,r.useState)(null),[f,p]=(0,r.useState)(``),[m,h]=(0,r.useState)([]),[g,_]=(0,r.useState)(!1),[b,x]=(0,r.useState)(!1),[S,w]=(0,r.useState)(null),T=y(()=>e.call(`course/list`),[]),E=y(()=>e.call(`plan/get`,{today:ln(new Date)}),[]),D=y(()=>e.call(`samples/list`),[]),O=u??(!m.length&&c);function k(){d(!O),m.length||l(!O)}async function A(t=!1){let r=f.trim();if(w(null),o===`course`){if(!r&&!m.length)return;x(!0);try{let{job:i}=await e.call(`course/start`,{goal:r,materialIds:m,quick:t,web:O});n(`craft`,{jobId:i.id})}catch(e){w(e)}finally{x(!1)}return}if(o===`digest`){if(!m.length){_(!0);return}n(`item`,{kind:`digest`,materialId:m[0]});return}if(o===`short`){let e=/^https?:\/\//iu.test(r);n(`shorts`,{draftTopic:e?``:r,draftUrl:e?r:``,token:Date.now().toString(36)});return}r&&n(`assist`,{draftMode:o,draftRequest:r,draftMaterials:m,token:Date.now().toString(36)})}let ee=(T.value??[]).filter(e=>e.status===`ready`&&!e.archived&&e.progress.percent<100).slice(0,3),te=(T.value??[]).filter(e=>e.status!==`ready`&&!e.archived).slice(0,2),ne=E.value?.today??[],j=ln(new Date);async function re(t,n){try{E.setValue(await tp(e,t,n,j))}catch(e){w(e)}}return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`section`,{className:`aha-hero`,children:[(0,i.jsx)(`div`,{className:`aha-heroTitle`,children:t(`heroTitle`)}),(0,i.jsx)(`p`,{className:`aha-subtitle`,children:t(`heroHint`)}),(0,i.jsxs)(`div`,{className:`aha-composer`,children:[(0,i.jsx)(`textarea`,{value:f,placeholder:t(`heroPlaceholder`),onChange:e=>p(e.currentTarget.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&A()}}),(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`div`,{className:`aha-row`,style:{gap:6},children:[(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>_(!0),children:[(0,i.jsx)(Ht,{name:`plus`,size:15}),m.length?t(`attached`,{count:m.length}):t(`attach`)]}),o===`course`?(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"data-active":O,"aria-pressed":O,onClick:k,title:t(`webResearchHint`),children:[`🌐 `,t(`webResearch`)]}):null]}),(0,i.jsxs)(`div`,{className:`aha-row`,style:{gap:6},children:[o===`course`?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,disabled:b,onClick:()=>A(!0),children:t(`quickStart`)}):null,(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:b||!f.trim()&&!m.length,onClick:()=>A(!1),children:[b?(0,i.jsx)(`span`,{className:`aha-spinner`}):null,t(`start`)]})]})]})]}),(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:8},children:np.map(([e,n,r])=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"data-active":o===e,onClick:()=>s(e),children:[r,` `,t(n)]},e))}),(0,i.jsx)(Yu,{error:S})]}),ee.length||te.length?(0,i.jsxs)(`section`,{className:`aha-col`,children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:t(`continueLearning`)}),(0,i.jsx)(`div`,{className:`aha-grid`,children:[...te,...ee].map(e=>(0,i.jsxs)(`div`,{className:`aha-card`,"data-click":`true`,onClick:()=>n(e.status===`ready`?`course`:`craft`,{courseId:e.id}),children:[(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`span`,{style:{fontSize:24},children:e.emoji}),(0,i.jsx)(`span`,{className:`aha-cardTitle`,children:e.title})]}),e.status===`ready`?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Uu,{value:e.progress.percent}),(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:t(`lessonsCount`,e.progress)}),e.next?(0,i.jsx)(`span`,{className:`aha-hint`,children:t(`nextUp`,{title:e.next.title})}):null]}),e.next?(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:t=>{t.stopPropagation(),n(`lesson`,{courseId:e.id,lessonId:e.next.lessonId})},children:[(0,i.jsx)(Ht,{name:`play`,size:14}),t(`continueLearning`)]}):null]}):(0,i.jsx)(`span`,{className:`aha-tag`,children:e.status===`intake`?t(`statusIntake`):t(`statusBlueprint`)})]},e.id))})]}):null,(0,i.jsxs)(`section`,{className:`aha-col`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:t(`todayPlan`)}),(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>n(`plan`),children:[t(`navPlan`),` →`]})]}),E.loading&&!E.value?(0,i.jsx)(Hu,{}):ne.length?(0,i.jsx)(`div`,{className:`aha-col`,style:{gap:6},children:ne.map(e=>(0,i.jsx)(`div`,{className:`aha-card`,style:{padding:`6px 14px`},children:(0,i.jsx)(ep,{item:e,day:j,today:j,onToggle:re})},`${e.kind}:${e.refId}`))}):(0,i.jsx)(Xu,{children:t(`noPlanToday`)})]}),D.value?.length?(0,i.jsxs)(`section`,{className:`aha-col`,children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:t(`sampleCourses`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`sampleHint`)}),(0,i.jsx)(`div`,{className:`aha-grid`,children:D.value.map(r=>(0,i.jsxs)(`div`,{className:`aha-card`,children:[(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`span`,{style:{fontSize:24},children:r.emoji}),(0,i.jsx)(`span`,{className:`aha-cardTitle`,children:r.title})]}),(0,i.jsx)(`p`,{className:`aha-hint`,children:r.subtitle}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:async()=>{try{let i=await e.call(`samples/import`,{id:r.id});a(t(`courseReady`)),n(`course`,{courseId:i.id})}catch(e){a(Ju(t,e))}},children:t(`importSample`)})]},r.id))})]}):null,g?(0,i.jsx)(ed,{selected:m,onChange:h,onClose:()=>_(!1)}):null]})}let ip=`http://www.w3.org/2000/svg`,ap=new Set([`SCRIPT`,`STYLE`,`TEMPLATE`,`IFRAME`,`BUTTON`,`INPUT`,`TEXTAREA`,`SELECT`]),op=[`Top`,`Right`,`Bottom`,`Left`],sp=[`fill`,`fill-opacity`,`fill-rule`,`stroke`,`stroke-width`,`stroke-opacity`,`stroke-dasharray`,`stroke-dashoffset`,`stroke-linecap`,`stroke-linejoin`,`stroke-miterlimit`,`opacity`,`font-family`,`font-size`,`font-style`,`font-weight`,`text-anchor`,`dominant-baseline`],cp=typeof Intl<`u`&&typeof Intl.Segmenter==`function`?new Intl.Segmenter(void 0,{granularity:`grapheme`}):null;function lp(e){if(cp)return Array.from(cp.segment(e),e=>({index:e.index,text:e.segment}));let t=[],n=0;for(let r of e)t.push({index:n,text:r}),n+=r.length;return t}function up(e){if(!e||e===`transparent`||e===`none`)return!1;let t=/^(?:rgba?|hsla?|color|lab|lch|oklab|oklch)\((.*)\)$/u.exec(e.trim());if(!t)return!0;let n=t[1],r=n.includes(`/`)?n.split(`/`).pop():n.split(`,`).length===4?n.split(`,`).pop():null;return r===null||Number.parseFloat(r)>0}function dp(e){if(!e||!e.startsWith(`linear-gradient(`))return[];let t=e.slice(16);if(/^\s*(?:to\s+(?!bottom)|-?[\d.]+(?:deg|turn|rad))/u.test(t)&&!/^\s*180deg/u.test(t))return[];let n=[...t.matchAll(/((?:rgba?|hsla?|color|oklab|oklch|lab|lch)\([^)]*\)|transparent|#[0-9a-f]{3,8})\s+(-?[\d.]+)%/giu)].map(e=>({color:e[1],at:Number.parseFloat(e[2])/100})),r=[];for(let e=0;e+1<n.length;e+=1){let[t,i]=[n[e],n[e+1]];t.color===i.color&&up(t.color)&&i.at>t.at&&r.push({color:t.color,from:Math.max(0,t.at),to:Math.min(1,i.at)})}return r}function fp(e,t,n){let[r,i=r]=String(e||`0`).trim().split(/\s+/u),a=(e,t)=>e.endsWith(`%`)?Number.parseFloat(e)/100*t:Number.parseFloat(e)||0;return{x:a(r,t),y:a(i,n)}}function pp(e,t,n){let r=[e.borderTopLeftRadius,e.borderTopRightRadius,e.borderBottomRightRadius,e.borderBottomLeftRadius].map(e=>fp(e,t,n));return r.some(e=>e.x>0&&e.y>0)?r:null}function mp(e){return`${e.fontStyle.startsWith(`oblique`)?`italic`:e.fontStyle} ${e.fontWeight} ${e.fontSize} ${e.fontFamily}`}function hp(e,t){if(!e)return t;if(!t)return e;let n=Math.max(e.x,t.x),r=Math.max(e.y,t.y);return{x:n,y:r,w:Math.max(0,Math.min(e.x+e.w,t.x+t.w)-n),h:Math.max(0,Math.min(e.y+e.h,t.y+t.h)-r)}}function gp(e,t){let n=Math.min(e.x,t.x),r=Math.min(e.y,t.y);return{x:n,y:r,w:Math.max(e.x+e.w,t.x+t.w)-n,h:Math.max(e.y+e.h,t.y+t.h)-r}}function _p(e,t){return e===`dashed`?[t*3,t*2.2]:e===`dotted`?[.01,t*2]:null}async function vp(e,{timeoutMs:t=1e4}={}){e.offsetHeight,await new Promise(e=>{setTimeout(e,50)});let n=document.fonts;if(!n)return;let r=(e.textContent??``).slice(0,2e4),i=[`Aha Hand Latin`,`Aha Hand`].map(e=>n.load?.(`20px '${e}'`,r).catch(()=>void 0));await Promise.race([Promise.all([...i,n.ready]),new Promise(e=>{setTimeout(e,t)})])}function yp(e){for(let t of e.querySelectorAll(`.aha-op-math`))Cl(t);for(let t of e.querySelectorAll(`.aha-op-table`)){let e=t.closest(`.aha-op`)?.clientWidth??0;if(!e||t.offsetWidth<=e+1)continue;let n=e/t.offsetWidth,r=getComputedStyle(t);t.style.fontSize=`${Math.max(10,(Number.parseFloat(r.fontSize)||16)*n)}px`,t.style.lineHeight=`${Math.max(14,(Number.parseFloat(r.lineHeight)||24)*n)}px`}}function bp(e,{scale:t=2}={}){let n=e.getBoundingClientRect(),r=[],i=new Map,a=document.createElement(`canvas`).getContext(`2d`),o=document.createRange(),s=e=>({x:e.left-n.left,y:e.top-n.top,w:e.width,h:e.height}),c=e=>{let t=i.get(e);if(!t){a.font=e;let n=a.measureText(`Hg`),r=Number.parseFloat(/([\d.]+)px/u.exec(e)?.[1]??`16`);t={ascent:Number.isFinite(n.fontBoundingBoxAscent)?n.fontBoundingBoxAscent:r*.8,descent:Number.isFinite(n.fontBoundingBoxDescent)?n.fontBoundingBoxDescent:r*.2},i.set(e,t)}return t},l=getComputedStyle(e);r.push({kind:`paper`,w:n.width,h:n.height,paper:l.getPropertyValue(`--paper`).trim()||l.backgroundColor,dot:l.getPropertyValue(`--grid`).trim()});let u=(e,t)=>{let i=e.data;if(!i||!/\S/u.test(i))return;let a=getComputedStyle(e.parentElement);if(!up(a.color))return;let s=mp(a),{ascent:l}=c(s),u=null,d=()=>{u&&/\S/u.test(u.text)&&r.push({kind:`text`,text:u.text,x:u.x,y:u.top+l,font:s,color:a.color,alpha:t.alpha,clip:t.clip}),u=null};for(let t of lp(i)){if(t.text===`
274
+ `||t.text===`\r`||t.text===` `){d();continue}o.setStart(e,t.index),o.setEnd(e,t.index+t.text.length);let r=o.getClientRects(),i=r[r.length-1];if(!i||i.width<=0){/\s/u.test(t.text)||d();continue}let a=i.left-n.left,s=i.top-n.top;u&&Math.abs(s-u.top)<1&&Math.abs(a-u.right)<1?(u.text+=t.text,u.right=a+i.width):(d(),u={text:t.text,x:a,top:s,right:a+i.width})}d()},d=(e,t,n,i,a)=>{let o=t.backgroundColor,c=dp(t.backgroundImage);for(let e of n){let n=s(e);up(o)&&r.push({kind:`fill`,box:n,color:o,radius:pp(t,n.w,n.h),alpha:i,clip:a});for(let e of c)r.push({kind:`fill`,box:{x:n.x,y:n.y+n.h*e.from,w:n.w,h:n.h*(e.to-e.from)},color:e.color,alpha:i,clip:a})}let l=op.map(e=>({width:Number.parseFloat(t[`border${e}Width`])||0,style:t[`border${e}Style`],color:t[`border${e}Color`]})),u=l.map(e=>e.width>0&&e.style!==`none`&&e.style!==`hidden`&&up(e.color));if(!u.some(Boolean))return;let d=(e.tagName===`TD`||e.tagName===`TH`)&&t.borderCollapse===`collapse`,f=!d&&u.every(Boolean)&&l.every(e=>e.width===l[0].width&&e.style===l[0].style&&e.color===l[0].color);for(let e of n){let n=s(e);if(f){let e=l[0].width,o=pp(t,n.w,n.h)?.map(t=>({x:Math.max(0,t.x-e/2),y:Math.max(0,t.y-e/2)}))??null;r.push({kind:`stroke`,box:{x:n.x+e/2,y:n.y+e/2,w:Math.max(0,n.w-e),h:Math.max(0,n.h-e)},width:e,color:l[0].color,dash:_p(l[0].style,e),radius:o,alpha:i,clip:a});continue}l.forEach((e,t)=>{if(!u[t])return;let o=d?0:e.width/2,s=[[n.x,n.y+o,n.x+n.w,n.y+o],[n.x+n.w-o,n.y,n.x+n.w-o,n.y+n.h],[n.x,n.y+n.h-o,n.x+n.w,n.y+n.h-o],[n.x+o,n.y,n.x+o,n.y+n.h]][t];r.push({kind:`line`,points:s,width:e.width,color:e.color,dash:_p(e.style,e.width),alpha:i,clip:a})})}},f=(e,t,n,i)=>{let a=e.parentElement;if(!a||t.listStyleType===`none`||t.display!==`list-item`)return;let o=mp(t),{ascent:l,descent:u}=c(o),d=Number.parseFloat(t.fontSize)||16,f=Number.parseFloat(t.lineHeight)||(l+u)*1.2,p=s(e.getBoundingClientRect()),m=[...a.children].filter(e=>e.tagName===`LI`),h=a.tagName===`OL`?`${m.indexOf(e)+(Number(a.getAttribute(`start`))||1)}.`:`•`;r.push({kind:`text`,text:h,align:`right`,x:p.x-d*.4,y:p.y+(Number.parseFloat(t.paddingTop)||0)+(f-l-u)/2+l,font:o,color:t.color,alpha:n,clip:i})},p=(e,i,a,o)=>{let l=e.getBoundingClientRect(),u=s(l),d=i.overflow===`visible`||i.overflowX===`visible`;if(d)try{let t=e.getBBox(),r=e.getScreenCTM();if(r&&(t.width||t.height)){let e=[[t.x,t.y],[t.x+t.width,t.y],[t.x,t.y+t.height],[t.x+t.width,t.y+t.height]].map(([e,t])=>[r.a*e+r.c*t+r.e-n.left,r.b*e+r.d*t+r.f-n.top]),i=e.map(e=>e[0]),a=e.map(e=>e[1]);u=gp(u,{x:Math.min(...i)-4,y:Math.min(...a)-4,w:Math.max(...i)-Math.min(...i)+8,h:Math.max(...a)-Math.min(...a)+8})}}catch{}if(u=hp(u,o??{x:0,y:0,w:n.width,h:n.height}),u.w<.5||u.h<.5)return;let f=[],p=e.cloneNode(!0),m=(e,t)=>{let r=getComputedStyle(e),i=sp.map(e=>[e,r.getPropertyValue(e)]).filter(([,e])=>e&&!e.includes(`url(`));r.display===`none`&&i.push([`display`,`none`]),r.visibility===`hidden`&&i.push([`visibility`,`hidden`]),t.setAttribute(`style`,i.map(([e,t])=>`${e}:${t}`).join(`;`));let s=e.tagName.toLowerCase();if((s===`text`||s===`tspan`)&&![...e.children].length&&/\S/u.test(e.textContent??``)){let i=e.getScreenCTM?.(),s=i&&Math.abs(i.b)<.001&&Math.abs(i.c)<.001&&i.a>0,l=r.fill;if(s&&up(l)&&!l.includes(`url(`)&&!up(r.stroke)&&r.display!==`none`&&r.visibility!==`hidden`){let s=e.getBoundingClientRect(),u=(Number.parseFloat(r.fontSize)||16)*i.d,d=`${r.fontStyle.startsWith(`oblique`)?`italic`:r.fontStyle} ${r.fontWeight} ${u}px ${r.fontFamily}`,p=(Number.parseFloat(r.fillOpacity)||1)*(Number.parseFloat(r.opacity)||1);f.push({kind:`text`,text:e.textContent.replace(/\s+/gu,` `).trim(),x:s.left-n.left,y:s.top-n.top+c(d).ascent,font:d,color:l,alpha:a*p,clip:o}),t.setAttribute(`style`,`${t.getAttribute(`style`)};visibility:hidden`)}}let l=[...e.children],u=[...t.children];l.forEach((e,t)=>{u[t]&&m(e,u[t])})};m(e,p),p.setAttribute(`x`,String(l.left-n.left-u.x)),p.setAttribute(`y`,String(l.top-n.top-u.y)),p.setAttribute(`width`,String(l.width)),p.setAttribute(`height`,String(l.height)),d&&p.setAttribute(`overflow`,`visible`);let h=new XMLSerializer().serializeToString(p),g=`<svg xmlns="${ip}" width="${Math.ceil(u.w*t)}" height="${Math.ceil(u.h*t)}" viewBox="0 0 ${u.w} ${u.h}" preserveAspectRatio="none">${h}</svg>`;r.push({kind:`image`,markup:g,box:u,alpha:a,clip:null}),r.push(...f)},m=(e,t)=>{if(ap.has(e.tagName)||e.classList.contains(`katex-mathml`))return;let n=getComputedStyle(e);if(n.display===`none`||n.visibility===`hidden`||n.visibility===`collapse`)return;let r=t.alpha*(Number.parseFloat(n.opacity)||0);if(r<=.01)return;if(e.namespaceURI===ip){e.tagName.toLowerCase()===`svg`&&p(e,n,r,t.clip);return}d(e,n,[...e.getClientRects()].filter(e=>e.width>0&&e.height>0),r,t.clip),e.tagName===`LI`&&f(e,n,r,t.clip);let i=n.overflowX!==`visible`||n.overflowY!==`visible`;h(e,{alpha:r,clip:i?hp(t.clip,s(e.getBoundingClientRect())):t.clip})},h=(e,t)=>{for(let n of e.childNodes)n.nodeType===Node.TEXT_NODE?u(n,t):n.nodeType===Node.ELEMENT_NODE&&m(n,t)};return h(e,{alpha:1,clip:null}),o.detach?.(),{width:Math.ceil(n.width),height:Math.ceil(n.height),ops:r}}async function xp(e){return await Promise.all(e.ops.map(async e=>{if(e.kind!==`image`)return;let t=new Image;t.src=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e.markup)}`;try{await t.decode(),e.image=t}catch{e.image=null}})),e}function Sp(e,t,n){e.beginPath(),n&&e.roundRect?e.roundRect(t.x,t.y,t.w,t.h,n):e.rect(t.x,t.y,t.w,t.h)}let Cp={paper(e,t){if(e.fillStyle=t.paper||`#fdfcf8`,e.fillRect(0,0,t.w,t.h),t.dot){e.fillStyle=t.dot,e.beginPath();for(let n=22/2;n<t.w;n+=22)for(let r=22/2;r<t.h;r+=22)e.moveTo(n+1.1,r),e.arc(n,r,1.1,0,Math.PI*2);e.fill()}},fill(e,t){e.fillStyle=t.color,Sp(e,t.box,t.radius),e.fill()},stroke(e,t){e.strokeStyle=t.color,e.lineWidth=t.width,t.dash&&(e.setLineDash(t.dash),e.lineCap=t.dash[0]<.1?`round`:`butt`),Sp(e,t.box,t.radius),e.stroke()},line(e,t){e.strokeStyle=t.color,e.lineWidth=t.width,t.dash&&(e.setLineDash(t.dash),e.lineCap=t.dash[0]<.1?`round`:`butt`),e.beginPath(),e.moveTo(t.points[0],t.points[1]),e.lineTo(t.points[2],t.points[3]),e.stroke()},text(e,t){e.font=t.font,e.fillStyle=t.color,e.textBaseline=`alphabetic`,e.textAlign=t.align??`left`,e.fillText(t.text,t.x,t.y)},image(e,t){t.image&&e.drawImage(t.image,t.box.x,t.box.y,t.box.w,t.box.h)}};function wp(e,t=2){let n=document.createElement(`canvas`);n.width=Math.max(1,Math.round(e.width*t)),n.height=Math.max(1,Math.round(e.height*t));let r=n.getContext(`2d`);r.scale(t,t);for(let t of e.ops)r.save(),r.globalAlpha=Math.min(1,t.alpha??1),t.clip&&(r.beginPath(),r.rect(t.clip.x,t.clip.y,t.clip.w,t.clip.h),r.clip()),Cp[t.kind]?.(r,t),r.restore();return n}function Tp(e){let t=`FEFF`;for(let n of String(e??``)){let e=n.codePointAt(0),r=e>65535?[55296+(e-65536>>10),56320+(e-65536&1023)]:[e];for(let e of r)t+=e.toString(16).toUpperCase().padStart(4,`0`)}return`<${t}>`}function Ep(e){let t=e=>String(e).padStart(2,`0`);return`(D:${e.getUTCFullYear()}${t(e.getUTCMonth()+1)}${t(e.getUTCDate())}${t(e.getUTCHours())}${t(e.getUTCMinutes())}${t(e.getUTCSeconds())}Z)`}let Dp=e=>String(Math.round(e*.75*100)/100);function Op(e,{title:t=``,creator:n=``,date:r=new Date}={}){let i=new TextEncoder,a=[],o=[],s=0,c=e=>{let t=typeof e==`string`?i.encode(e):e;a.push(t),s+=t.length},l=(e,...t)=>{o[e]=s,c(`${e} 0 obj\n`);for(let e of t)c(e);c(`
274
275
  endobj
275
276
  `)};c(`%PDF-1.4
276
- `),c(new Uint8Array([37,226,227,207,211,10]));let u=e=>4+e*3;l(1,`<< /Type /Catalog /Pages 2 0 R >>`),l(2,`<< /Type /Pages /Kids [${e.map((e,t)=>`${u(t)} 0 R`).join(` `)}] /Count ${e.length} >>`),l(3,`<< /Title ${bp(t)} /Creator ${bp(n)} /Producer ${bp(n)} /CreationDate ${xp(r)} >>`),e.forEach((e,t)=>{let n=u(t),r=Sp(e.width),i=Sp(e.height);l(n,`<< /Type /Page /Parent 2 0 R /MediaBox [0 0 ${r} ${i}] /Resources << /XObject << /P${t} ${n+2} 0 R >> >> /Contents ${n+1} 0 R >>`);let a=`q ${r} 0 0 ${i} 0 0 cm /P${t} Do Q`;l(n+1,`<< /Length ${a.length} >>\nstream\n`,a,`
277
+ `),c(new Uint8Array([37,226,227,207,211,10]));let u=e=>4+e*3;l(1,`<< /Type /Catalog /Pages 2 0 R >>`),l(2,`<< /Type /Pages /Kids [${e.map((e,t)=>`${u(t)} 0 R`).join(` `)}] /Count ${e.length} >>`),l(3,`<< /Title ${Tp(t)} /Creator ${Tp(n)} /Producer ${Tp(n)} /CreationDate ${Ep(r)} >>`),e.forEach((e,t)=>{let n=u(t),r=Dp(e.width),i=Dp(e.height);l(n,`<< /Type /Page /Parent 2 0 R /MediaBox [0 0 ${r} ${i}] /Resources << /XObject << /P${t} ${n+2} 0 R >> >> /Contents ${n+1} 0 R >>`);let a=`q ${r} 0 0 ${i} 0 0 cm /P${t} Do Q`;l(n+1,`<< /Length ${a.length} >>\nstream\n`,a,`
277
278
  endstream`);let{image:o}=e;l(n+2,`<< /Type /XObject /Subtype /Image /Width ${o.width} /Height ${o.height} /ColorSpace /DeviceRGB /BitsPerComponent 8 /Filter /${o.filter} /Length ${o.data.length} >>\nstream\n`,o.data,`
278
- endstream`)});let d=4+e.length*3,f=s;c(`xref\n0 ${d}\n0000000000 65535 f \n`);for(let e=1;e<d;e+=1)c(`${String(o[e]).padStart(10,`0`)} 00000 n \n`);c(`trailer\n<< /Size ${d} /Root 1 0 R /Info 3 0 R >>\nstartxref\n${f}\n%%EOF\n`);let p=new Uint8Array(s),m=0;for(let e of a)p.set(e,m),m+=e.length;return p}async function wp(e){let t=new Blob([e]).stream().pipeThrough(new CompressionStream(`deflate`));return new Uint8Array(await new Response(t).arrayBuffer())}async function Tp(e){let{width:t,height:n}=e;if(typeof CompressionStream==`function`){let{data:r}=e.getContext(`2d`).getImageData(0,0,t,n),i=new Uint8Array(t*n*3);for(let e=0,t=0;e<r.length;e+=4,t+=3)i[t]=r[e],i[t+1]=r[e+1],i[t+2]=r[e+2];return{width:t,height:n,filter:`FlateDecode`,data:await wp(i)}}let r=await new Promise(t=>{e.toBlob(t,`image/jpeg`,.92)});if(!r)throw Error(`image encoding failed`);return{width:t,height:n,filter:`DCTDecode`,data:new Uint8Array(await r.arrayBuffer())}}let Ep=null;function Dp(e){if(!Ep){Ep=new Uint32Array(256);for(let e=0;e<256;e+=1){let t=e;for(let e=0;e<8;e+=1)t=t&1?3988292384^t>>>1:t>>>1;Ep[e]=t>>>0}}let t=4294967295;for(let n of e)t=Ep[(t^n)&255]^t>>>8;return(t^4294967295)>>>0}function Op(e){return{time:e.getHours()<<11|e.getMinutes()<<5|Math.floor(e.getSeconds()/2),day:Math.max(0,e.getFullYear()-1980)<<9|e.getMonth()+1<<5|e.getDate()}}function kp(e,t=new Date){let n=new TextEncoder,{time:r,day:i}=Op(t),a=[],o=[],s=0;for(let t of e){let e=n.encode(t.name),c=Dp(t.data),l=t.data.length,u=new DataView(new ArrayBuffer(30));u.setUint32(0,67324752,!0),u.setUint16(4,20,!0),u.setUint16(6,2048,!0),u.setUint16(8,0,!0),u.setUint16(10,r,!0),u.setUint16(12,i,!0),u.setUint32(14,c,!0),u.setUint32(18,l,!0),u.setUint32(22,l,!0),u.setUint16(26,e.length,!0),u.setUint16(28,0,!0),a.push(new Uint8Array(u.buffer),e,t.data);let d=new DataView(new ArrayBuffer(46));d.setUint32(0,33639248,!0),d.setUint16(4,20,!0),d.setUint16(6,20,!0),d.setUint16(8,2048,!0),d.setUint16(10,0,!0),d.setUint16(12,r,!0),d.setUint16(14,i,!0),d.setUint32(16,c,!0),d.setUint32(20,l,!0),d.setUint32(24,l,!0),d.setUint16(28,e.length,!0),d.setUint32(42,s,!0),o.push(new Uint8Array(d.buffer),e),s+=30+e.length+l}let c=o.reduce((e,t)=>e+t.length,0),l=new DataView(new ArrayBuffer(22));l.setUint32(0,101010256,!0),l.setUint16(8,e.length,!0),l.setUint16(10,e.length,!0),l.setUint32(12,c,!0),l.setUint32(16,s,!0);let u=[...a,...o,new Uint8Array(l.buffer)],d=new Uint8Array(u.reduce((e,t)=>e+t.length,0)),f=0;for(let e of u)d.set(e,f),f+=e.length;return d}function Ap(e){return new Promise((t,n)=>{e.toBlob(e=>e?t(e):n(Error(`image encoding failed`)),`image/png`)})}function jp({steps:e,title:t,kind:n=`ghost`}){let{t:a,settings:s,toast:c}=v(),l=w(),[u,d]=(0,r.useState)(!1),[f,p]=(0,r.useState)(null),_=(0,r.useRef)(null),y=(0,r.useRef)(null),b=s.boardTheme===`dark`||s.boardTheme!==`light`&&l?`dark`:`light`,x=s.boardFont===`standard`?`standard`:`hand`,S=m(t);function C(n){if(d(!1),!(!e?.length||f)){if(n===`md`){h(`${S}.md`,yt({title:t,steps:e},{missing:a(`figureMissing`)}),`text/markdown`);return}p({id:Date.now(),format:n,done:0,total:0})}}function T(){y.current&&(y.current.cancelled=!0),y.current=null,p(null)}async function E(e,n){let r=_.current;if(!r)throw Error(`pages missing`);await pp(r),mp(r);let i=[...r.querySelectorAll(`[data-sheet]`)];p(e=>e&&{...e,total:i.length});let o=[];for(let[t,r]of i.entries()){if(n.cancelled)return;let i=await gp(hp(r,{scale:2})),a=yp(i,2);o.push(e===`pdf`?{width:i.width,height:i.height,image:await Tp(a)}:await Ap(a)),p(e=>e&&{...e,done:t+1})}if(!(n.cancelled||!o.length))if(e===`pdf`)g(`${S}.pdf`,new Blob([Cp(o,{title:t,creator:`${a(`appName`)} · ${a(`appTagline`)}`})],{type:`application/pdf`}));else if(o.length===1)g(`${S}.png`,o[0]);else{let e=await Promise.all(o.map(async(e,t)=>({name:`${S}-${String(t+1).padStart(2,`0`)}.png`,data:new Uint8Array(await e.arrayBuffer())})));g(`${S}.zip`,new Blob([kp(e)],{type:`application/zip`}))}}return(0,r.useEffect)(()=>{if(!f)return;let e={cancelled:!1};return y.current=e,E(f.format,e).catch(()=>{e.cancelled||c(a(`exportFailed`))}).finally(()=>{y.current===e&&(y.current=null,p(null))}),()=>{e.cancelled=!0}},[f?.id]),(0,i.jsxs)(`span`,{className:`aha-menuAnchor`,children:[f?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Hu,{label:a(`exportingBoard`,{done:f.done,total:f.total||`…`})}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":n??void 0,"data-size":`sm`,onClick:T,children:a(`cancel`)})]}):(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":n??void 0,"data-size":`sm`,disabled:!e?.length,"aria-haspopup":`menu`,"aria-expanded":u,onClick:()=>d(e=>!e),children:[a(`exportBoard`),` ▾`]}),u?(0,i.jsxs)(`div`,{className:`aha-card aha-menu`,role:`menu`,onMouseLeave:()=>d(!1),children:[(0,i.jsx)(`button`,{type:`button`,role:`menuitem`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>C(`pdf`),children:a(`exportPdf`)}),(0,i.jsx)(`button`,{type:`button`,role:`menuitem`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>C(`png`),children:a(`exportPng`)}),(0,i.jsx)(`button`,{type:`button`,role:`menuitem`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>C(`md`),children:a(`exportMarkdown`)})]}):null,f?(0,o.createPortal)((0,i.jsx)(`div`,{ref:_,className:`aha-exportPages`,"aria-hidden":`true`,children:(0,i.jsx)(Mu,{steps:e,title:t,theme:b,font:x,footer:{left:t,right:`${a(`appName`)} · ${a(`appTagline`)}`},animationLabel:a(`animationStill`),fixedLabel:a(`fixed`),figureLabels:{missing:a(`figureMissing`),redrawing:a(`figureRedrawing`),animation:a(`animationFailed`)}})}),document.body):null]})}let Mp=Object.freeze([Object.freeze({family:`Aha Hand Latin`,file:`caveat-latin-d0b7b931.woff2`,bytes:48836,unicodeRange:`U+0,U+D,U+20-7E,U+A0-FF,U+131,U+152-153,U+20AC,U+2122`}),Object.freeze({family:`Aha Hand`,file:`wenkai-gb-0-88f1a875.woff2`,bytes:93632,unicodeRange:`U+20-7E,U+A0-AC,U+AE-FF,U+101,U+113,U+11B,U+12B,U+14D,U+16B,U+1CE,U+1D0,U+1D2,U+1D4,U+1D6,U+1D8,U+1DA,U+1DC,U+2C7,U+2C9,U+391-3A1,U+3A3-3A9,U+3B1-3C1,U+3C3-3C9,U+401,U+410-44F,U+451,U+2010-2016,U+2018-2022,U+2025-2027,U+2030-2037,U+2039-203F,U+2042,U+2044,U+2047-2049,U+2051-2052,U+205A,U+205D,U+2100-2101,U+2103,U+2105-2106,U+2109-210A,U+210E-210F,U+2113,U+2116-2117,U+211E,U+2120-2122,U+2126-2127,U+2129-212B,U+212E,U+2132,U+2135,U+213B,U+2141-2144,U+214B,U+214D-214E,U+2150-218B,U+2190-2199,U+21B6-21B9,U+21C4-21C6,U+21CB-21D0,U+21D2,U+21D4,U+21E6-21EA,U+21F5,U+2200-220D,U+220F,U+2211-2213,U+2215-2216,U+2219-2220,U+2223-2230,U+2234-2237,U+223C-223E,U+2242-2243,U+2245,U+2248,U+224B-224C,U+2251-2253,U+225C,U+2260-2262,U+2264-226B,U+226E-226F,U+2272-2273,U+2276-2277,U+2282-228B,U+2295-2299,U+229C-229E,U+22A0,U+22A2-22A5,U+22BF-22C5,U+22DA-22DB,U+22EE-22F1,U+2312,U+2460-249F,U+2500-25AB,U+25B1-25B3,U+25B6-25B7,U+25BC-25BD,U+25C0-25C1,U+25C6-25C7,U+25C9-25CC,U+25CE-25D3,U+25E2-25E6,U+25EF,U+25FB-25FC,U+2605-2606,U+2640,U+2642,U+3000-302D,U+3030,U+3033-303F,U+3041-3093,U+30A1-30F6,U+30FB,U+3105-3129,U+3220-3229,U+FF01-FF5E,U+FFE0-FFE1,U+FFE3,U+FFE5`}),Object.freeze({family:`Aha Hand`,file:`wenkai-gb-1-78a38e72.woff2`,bytes:315108,unicodeRange:`U+4E01,U+4E0D,U+4E11,U+4E19,U+4E1B-4E1C,U+4E22,U+4E2A,U+4E30,U+4E32,U+4E39,U+4E4E-4E4F,U+4E56,U+4E58,U+4E8C,U+4E92,U+4EA4-4EA5,U+4EA7-4EA8,U+4EC7,U+4ECE,U+4ED3,U+4ED8,U+4EE3,U+4EF6-4EF7,U+4EFD,U+4EFF,U+4F0E-4F10,U+4F19-4F1A,U+4F20,U+4F2F-4F30,U+4F34,U+4F43,U+4F46,U+4F4E,U+4F55,U+4F5B,U+4F70,U+4F73,U+4F88,U+4F97,U+4F9B,U+4FA7,U+4FAF,U+4FBF,U+4FC3-4FC4,U+4FD8,U+4FDD,U+4FED,U+4FEF,U+4FFA,U+500D,U+5012,U+5019,U+5021,U+5047,U+5065,U+507F,U+5085,U+508D,U+50A3,U+50A8,U+50AC,U+50B2,U+50F5,U+513F,U+5145,U+5149,U+5151,U+515A,U+515C,U+516B-516C,U+5171,U+5173,U+5175,U+5178,U+517C,U+5180,U+5188,U+518C,U+51A0,U+51AC,U+51AF-51B0,U+51B2,U+51BB,U+51CB,U+51CF,U+51D1,U+51E0-51E1,U+51E4,U+51F0,U+51F3,U+51F9-51FB,U+51FD,U+5200-5201,U+5206,U+5212,U+521A-521B,U+521D,U+522B,U+522E,U+5230,U+523A,U+523D,U+5241-5242,U+5250-5251,U+5265,U+526A,U+526F,U+5272,U+529E-52A0,U+52A8,U+52C3,U+52FE,U+5305-5306,U+5316-5317,U+5319,U+5320,U+532A,U+5349-534A,U+534E,U+5351,U+5355,U+535A,U+535C,U+535E,U+5373,U+5382,U+5384,U+5395,U+539A,U+53A8,U+53C2,U+53C9-53CA,U+53CD,U+53D1,U+53D8,U+53E0,U+53E4,U+53ED-53EE,U+53F7,U+53FC,U+5403-5404,U+5408-540A,U+540E,U+5420,U+5426-5429,U+542B,U+5435,U+5439,U+543C,U+5446,U+5448,U+544A,U+5475,U+547C,U+548C,U+5490,U+5495,U+54C0,U+54C4,U+54C6,U+54C8,U+54CE,U+54D7,U+54E5,U+54FA,U+54FC,U+5507,U+5509,U+5524,U+552C,U+5531,U+554A,U+5561,U+5589-558A,U+5598,U+559D,U+5609,U+560E,U+5632,U+563F,U+5676,U+568E,U+56DE,U+56E4,U+56F1,U+56FA,U+56FD,U+572D,U+5730,U+573A,U+573E,U+574A,U+574F,U+575A,U+575D,U+575F,U+5782,U+579B,U+57A2,U+57AB,U+57C2-57C3,U+57CE,U+57E0,U+57FA,U+5806,U+5815,U+5821,U+5824,U+5835,U+58A9,U+58C1,U+58D5,U+58F6,U+5904,U+5907,U+590D,U+591A,U+591F,U+5927,U+592B,U+592F,U+5939-593A,U+5949,U+594B,U+5954,U+5956,U+5960,U+5965,U+5978,U+597D,U+5987,U+5992-5993,U+59A8,U+59D1,U+59DC,U+59EC,U+5A25,U+5A5A,U+5AC1,U+5AC9,U+5AE1,U+5B58,U+5B63-5B64,U+5B69,U+5B75,U+5B89,U+5B8F,U+5B98,U+5B9A,U+5B9D,U+5BA0,U+5BA6,U+5BAB,U+5BB3,U+5BB6,U+5BBE,U+5BC2,U+5BC4,U+5BCC,U+5BD2,U+5BDF,U+5BE1,U+5BF8-5BF9,U+5BFC,U+5C01,U+5C06,U+5C14,U+5C16,U+5C18,U+5C1D,U+5C3A,U+5C42,U+5C94,U+5C97,U+5C9B,U+5CB8,U+5CE8,U+5CF0,U+5D07,U+5D14,U+5D29,U+5DDD,U+5DE2,U+5DE5,U+5DE9,U+5DEE,U+5DF1,U+5DF4,U+5E01,U+5E03,U+5E06,U+5E1B,U+5E1D,U+5E26,U+5E2E,U+5E38,U+5E45,U+5E4C,U+5E62,U+5E72,U+5E76,U+5E7B,U+5E7F,U+5E87,U+5E8A,U+5E95,U+5E97,U+5E9A,U+5E9C,U+5E9F,U+5EA6,U+5EFA,U+5F0A,U+5F13,U+5F17-5F18,U+5F1B,U+5F1F,U+5F27,U+5F39,U+5F52-5F53,U+5F69-5F6A,U+5F6C,U+5F7B-5F7C,U+5F85,U+5F88,U+5F8A,U+5F97,U+5FB7,U+5FBD,U+5FC5,U+5FCC,U+5FF1,U+5FFD,U+5FFF-6000,U+6016,U+6020,U+6025,U+602A,U+604D,U+6052,U+6062,U+6068-6069,U+606B,U+606D,U+6076,U+608D,U+6094,U+60A3,U+60B2,U+60B8,U+60BC,U+60D1,U+60E0,U+60E6,U+60E8-60E9,U+60EB,U+60ED-60F0,U+60F6,U+6101,U+611F,U+6124,U+6148,U+614C,U+6167,U+618B,U+61A8,U+61BE,U+61C2,U+61CA,U+6208,U+6210,U+6216,U+6233-6234,U+6237,U+623F,U+6241,U+624D,U+6252-6253,U+626E-626F,U+6273,U+6276,U+627C,U+627F-6280,U+6284,U+628A,U+6296,U+629A,U+62A4-62A5,U+62B1,U+62B5,U+62BD,U+62C2,U+62C5-62C6,U+62CC,U+62D0,U+62D4,U+62DC,U+62E3,U+62E8,U+62F1,U+6301-6302,U+6309,U+6321,U+6324-6325,U+6328,U+632B,U+634C-634D,U+6355,U+6361-6363,U+6376,U+6382,U+6387,U+6389,U+63A3,U+63AA,U+63B8,U+63BA,U+63D2,U+63E3,U+6400-6401,U+640F-6410,U+6413,U+641E,U+642C-642D,U+643D,U+6446,U+6448,U+6467,U+6491,U+64A4,U+64AD-64AE,U+64BC,U+64CD,U+64E6,U+6539,U+653B,U+653E,U+6545,U+654C,U+6556,U+655D-655E,U+6562,U+6566,U+6577,U+658C,U+6591,U+6597,U+65A5,U+65A7,U+65AD,U+65B9,U+65E2,U+65E6,U+65F1,U+6602,U+660C,U+660F,U+6625,U+6643,U+6666,U+6668,U+6697,U+66B4,U+66F4,U+66F9,U+670D,U+671D,U+672C,U+6735,U+673A,U+6746,U+6750-6751,U+675C,U+6760,U+676D,U+676F,U+677F,U+6781,U+6784,U+679C,U+67AB,U+67B6-67B7,U+67C4,U+67CF,U+67D1,U+67DC,U+67E5,U+67EC,U+67F4,U+6807,U+680B,U+6838-6839,U+683C,U+6842,U+6848,U+6853,U+6863,U+6868,U+6886,U+6897,U+68C0,U+68CD,U+68D2,U+68D8,U+68FA,U+6912,U+693D,U+693F,U+695A,U+6982,U+699C,U+69D0,U+69DB,U+69FD,U+6A0A,U+6A2A,U+6A59,U+6A71,U+6B21-6B22,U+6B4C,U+6B64-6B65,U+6B79,U+6B7C,U+6B86,U+6B8B,U+6BB5,U+6BBF,U+6BC1,U+6BD2,U+6BD4-6BD6,U+6BD9,U+6BEB,U+6C1B,U+6C1F,U+6C26,U+6C28,U+6C2E,U+6C47,U+6C49,U+6C57,U+6C5E-6C60,U+6C72,U+6C7E,U+6C89,U+6C9F,U+6CA7,U+6CAA,U+6CB3,U+6CB8,U+6CBD,U+6CCA,U+6CD5,U+6CDB,U+6CE2,U+6CF5,U+6D1E,U+6D2A,U+6D31,U+6D3B,U+6D46-6D47,U+6D4B,U+6D4E,U+6D51,U+6D69,U+6D6E,U+6D77,U+6DA3-6DA4,U+6DA7,U+6DAA,U+6DB5,U+6DB8,U+6DC0,U+6DE1,U+6DEC,U+6DEE,U+6DF3,U+6DF7,U+6E10,U+6E21,U+6E24,U+6E2F,U+6E56,U+6E85,U+6E89,U+6EC1,U+6EC7,U+6ED1,U+6EDA,U+6EE8,U+6EF4,U+6F6E,U+6F84,U+6F88,U+6FB3,U+6FC0,U+6FD2,U+704C,U+706B,U+706F-7070,U+707F,U+708A,U+7092,U+70B3,U+70B9,U+70BD,U+70D8,U+70E6,U+70E9,U+70FD,U+710A,U+7115,U+7119-711A,U+7126,U+714C,U+714E,U+71AC,U+7206,U+7231,U+7236,U+7238-7239,U+7248,U+728A,U+72AF,U+72C4,U+72C8,U+72D0,U+72D7,U+72E0,U+72EC,U+7316,U+731C,U+7334,U+733E,U+73AF,U+73BB,U+73D0,U+73ED,U+745A,U+7470,U+74DC,U+74E3,U+74F7,U+7518,U+752B,U+752D,U+7532,U+7535,U+7538,U+753B,U+7545,U+756A,U+7574,U+7578,U+7586,U+7599,U+75A4,U+75AE-75AF,U+75B5,U+75BE,U+75C5,U+75D5,U+75D8,U+75EA,U+75F4,U+75F9,U+7601,U+7629-762A,U+764C,U+7678,U+767B,U+767D-767E,U+7684,U+7687,U+768B,U+7691,U+76CE,U+76D1-76D2,U+76D6-76D7,U+76EF,U+76FE,U+7763,U+776C,U+7779,U+7785,U+77AA,U+77D7,U+77ED-77EE,U+77FE,U+7840,U+7845,U+7877,U+7889,U+788D,U+7891,U+7898,U+789F,U+78A7,U+78B1,U+78B4,U+78C1,U+78C5,U+78CB,U+78FA,U+7901,U+796D,U+7977-7978,U+798F,U+79BE,U+79C6,U+79C9,U+79E4,U+79EF-79F0,U+79FD,U+7A0B,U+7A17,U+7A20,U+7A3B-7A3D,U+7A3F,U+7A7F,U+7A97,U+7A9C,U+7AEF,U+7AFF,U+7B06,U+7B14,U+7B1B,U+7B26,U+7B28,U+7B2C,U+7B3A,U+7B49,U+7B4F,U+7B54,U+7B56,U+7B79,U+7B80,U+7B8D,U+7B94-7B95,U+7BA1,U+7BAD,U+7BD9,U+7BE1,U+7C07,U+7C27,U+7C3F,U+7C4D,U+7C89,U+7C97,U+7CAA,U+7CB9,U+7CCA,U+7CD5,U+7CD9,U+7E41,U+7EA2,U+7EA7,U+7EAA,U+7EAF,U+7EB2,U+7EB7,U+7EBA,U+7ECA,U+7ED1,U+7ED8-7ED9,U+7EE7,U+7EE9,U+7EF0,U+7EF7-7EF8,U+7F04,U+7F09,U+7F0E,U+7F13-7F14,U+7F16,U+7F1A,U+7F1D,U+7F20,U+7F38,U+7F50,U+7F55,U+7F5A,U+7F62,U+7F94,U+7FB9,U+7FC5,U+7FDF-7FE0,U+7FF0-7FF1,U+7FFB,U+800C,U+8015,U+8017,U+8019,U+8033,U+803B,U+803D,U+803F,U+806A,U+808C,U+809A-809B,U+809D,U+80A0-80A1,U+80A4-80A5,U+80A9-80AA,U+80AE,U+80BA,U+80C6,U+80CC,U+80DE,U+80E1,U+80F3,U+80F6,U+80FA,U+8106,U+810A,U+8116,U+812F,U+8150-8151,U+8179,U+8180,U+818A,U+818F,U+8198,U+81C2,U+81E3,U+81ED,U+822A,U+822C,U+8230-8231,U+8235-8236,U+8239,U+8270,U+827E,U+82AC-82AD,U+82B1,U+82B3,U+82CD,U+82DE-82DF,U+82EF,U+8303,U+8327-8328,U+832C,U+8336,U+8349,U+8350,U+8352,U+835A,U+8361,U+8364,U+8377,U+83B7,U+83C7,U+83CF,U+83DC,U+83E0,U+83F2,U+845B,U+8463,U+846B,U+8471,U+8482,U+848B,U+84D6,U+84DF,U+8521,U+853C-853D,U+8549,U+8584,U+85CF,U+85E9,U+864E,U+866B,U+8679,U+868C,U+8695,U+86CA-86CB,U+86D4,U+86E4,U+86FE,U+8702,U+8749,U+8757,U+8774,U+8776,U+8822,U+8861,U+8865,U+8868,U+886C,U+8884,U+888B,U+88AB,U+88B1,U+88C1,U+88F9,U+8902,U+8910,U+8912,U+8986,U+89C1-89C2,U+89C4,U+89E6,U+8BA1-8BA3,U+8BA5,U+8BB0,U+8BB2-8BB3,U+8BB9,U+8BBD,U+8BBF,U+8BCD,U+8BDA,U+8BDD-8BDE,U+8BE1,U+8BE5,U+8BE7,U+8BF2,U+8BFB,U+8BFD,U+8C03,U+8C0D-8C0E,U+8C17,U+8C24,U+8C37,U+8C41,U+8C46,U+8C62,U+8C6A,U+8C79-8C7A,U+8C89,U+8D1D,U+8D1F,U+8D21-8D22,U+8D25,U+8D27,U+8D29,U+8D2C-8D2D,U+8D2F-8D31,U+8D35,U+8D37,U+8D39-8D3A,U+8D3E-8D3F,U+8D4B-8D4C,U+8D50,U+8D63-8D64,U+8D6B,U+8D74,U+8D76,U+8D81,U+8D85,U+8DCB-8DCC,U+8DDF,U+8DEA,U+8DF5,U+8DFA,U+8E0C,U+8E29,U+8E48,U+8E66,U+8E6C-8E6D,U+8E72,U+8E7F,U+8E87,U+8EAC,U+8EB2,U+8F66,U+8F68,U+8F70,U+8F85,U+8F88-8F8A,U+8F90-8F91,U+8F9C,U+8F9E-8F9F,U+8FA8-8FA9,U+8FAB,U+8FB0,U+8FB9,U+8FBE,U+8FC7,U+8FD4,U+8FD8,U+8FDF,U+8FEA,U+8FED,U+8FF8-8FF9,U+9012,U+9017,U+901B,U+901E,U+9022,U+902E,U+903C,U+9041,U+904D,U+904F,U+9053,U+907F,U+9093,U+90A6,U+90AF,U+90CA,U+90DD,U+90E8,U+90ED,U+90F4,U+90F8,U+90FD,U+9102,U+9119,U+915A,U+9163,U+916C,U+9171,U+9187,U+918B,U+91C7,U+91DC,U+9274,U+9489,U+9492-9493,U+9499,U+949D-949E,U+94A1-94A2,U+94A9,U+94B5,U+94BE,U+94C2,U+94EC,U+94F2,U+9504-9505,U+950B,U+9519,U+9524,U+952D-952E,U+953B,U+9540,U+9550-9551,U+957F,U+95ED,U+95EF,U+95F4,U+95FA,U+9600-9602,U+9610,U+961C,U+961F,U+9632,U+963F,U+9644-9645,U+9648,U+964D,U+965B,U+9661,U+9664,U+9694,U+9698,U+96C6-96C7,U+96CC,U+96CF,U+96D5,U+96F9,U+970D,U+9738,U+975B,U+975E,U+9769,U+9776,U+978D,U+97AD,U+97E9,U+9876,U+987E-987F,U+9881,U+988A,U+989D,U+98A0,U+98A4,U+98CE,U+98DE,U+9910,U+9965,U+996D,U+996F,U+9971,U+9975,U+997C,U+997F,U+9986,U+998B,U+9A70,U+9A73,U+9A7E,U+9A84,U+9A87,U+9A8B,U+9AA8,U+9AB8,U+9AD8,U+9B3C,U+9B42,U+9C8D,U+9CD6,U+9E21,U+9E3D,U+9E3F,U+9E45,U+9E64,U+9EC4,U+9ED1,U+9F0E,U+9F13,U+9F3B,U+9F7F,U+9F9A,U+9F9F`}),Object.freeze({family:`Aha Hand`,file:`wenkai-gb-2-2a649892.woff2`,bytes:317648,unicodeRange:`U+4E03,U+4E09-4E0A,U+4E14,U+4E16,U+4E18,U+4E24,U+4E27,U+4E34,U+4E3D-4E3E,U+4E43,U+4E45,U+4E48,U+4E50,U+4E52-4E54,U+4E5D-4E5E,U+4E70-4E71,U+4E73,U+4E7E,U+4E86,U+4E8B,U+4E8F,U+4E95,U+4EA2,U+4EA9,U+4EAC,U+4EAE,U+4EB2,U+4EBA,U+4EC0-4EC1,U+4EC5-4EC6,U+4ECA-4ECB,U+4ECD,U+4ED1,U+4ED5,U+4EDF,U+4EE4,U+4EEC,U+4EFB,U+4F01,U+4F1E,U+4F24,U+4F26,U+4F36,U+4F38,U+4F60,U+4F69,U+4F6C,U+4F7F,U+4F8B,U+4F8D,U+4FA3,U+4FA5,U+4FA8-4FA9,U+4FB5,U+4FCA,U+4FCF-4FD0,U+4FE9,U+4FF1,U+5014,U+501F,U+5026,U+502A,U+503E,U+504F,U+5076,U+5080,U+5088,U+50BB,U+50DA,U+50E7,U+50FB,U+5112,U+5121,U+514B,U+514D,U+5162,U+5165,U+5168,U+516D,U+5170,U+5176-5177,U+5185,U+5189,U+5192,U+5195,U+5197,U+519B-519C,U+51B3,U+51B5,U+51B7,U+51C0,U+51C4,U+51C9,U+51CC,U+51DB,U+51DD,U+51ED,U+51EF,U+5203,U+5207,U+520A,U+5217-5218,U+5220,U+5224,U+5228-5229,U+5238-5239,U+523B,U+524D,U+5256,U+5267,U+5269,U+527F,U+5288,U+529B,U+529D,U+52A3,U+52AA-52AB,U+52B1-52B3,U+52BF,U+52C9,U+52D2,U+52D8,U+52DF,U+52E4,U+52FA,U+5321,U+5339-533A,U+533F,U+5341,U+5343,U+5347,U+5356-5357,U+5361-5362,U+5364,U+536F,U+5374-5375,U+5377,U+537F,U+5386,U+5389,U+5398,U+53A9,U+53BB,U+53C1,U+53D6-53D7,U+53DB,U+53E3,U+53E5-53E6,U+53EB,U+53EF,U+53F2,U+540D,U+540F,U+5415,U+5417,U+541B,U+541D,U+542D,U+542F,U+5450,U+5455,U+545B,U+5462,U+5478,U+547B,U+547D,U+5480,U+5486,U+548E,U+5496,U+5499,U+54AF,U+54B3,U+54C1,U+54E6,U+54E8-54EA,U+54ED,U+552E,U+5543,U+5546,U+5564-5566,U+556A,U+556E,U+5580,U+5584,U+5587,U+55B7,U+55D3,U+55DC,U+561B,U+5668,U+566C,U+56B7,U+56BC,U+56CA,U+56DA,U+56F0,U+5703,U+5708,U+5723,U+5747,U+574E,U+5751,U+5757,U+5761,U+5764,U+576A,U+576F,U+5777,U+5783-5784,U+5792,U+57A6,U+57AE,U+57CB,U+57D4,U+57F9,U+5811,U+582A,U+585E,U+5883,U+5892-5893,U+5899,U+58A8,U+58E4,U+58EB-58EC,U+58F0,U+58F3,U+5931,U+5938,U+5947-5948,U+594E,U+5951,U+5962,U+5973-5974,U+5976,U+5982,U+5988,U+598A,U+5999,U+59AE,U+59B9,U+59BB,U+59C6,U+59CB,U+59D0,U+59E5,U+5A04,U+5A07,U+5A18,U+5A1C,U+5A1F-5A20,U+5A29,U+5A36,U+5A46,U+5A6A,U+5A76,U+5A92,U+5A9A,U+5AC2,U+5AE9,U+5B54,U+5B5F,U+5B6A,U+5B7A,U+5B7D,U+5B81,U+5B88,U+5B9E,U+5BA1-5BA2,U+5BA4,U+5BB9,U+5BBD,U+5BC6-5BC7,U+5BD0,U+5BDD-5BDE,U+5BE5,U+5BFF,U+5C04,U+5C11,U+5C1A,U+5C31,U+5C38,U+5C3C-5C3D,U+5C3F-5C41,U+5C45,U+5C48,U+5C4A,U+5C4E-5C4F,U+5C61,U+5C65,U+5C71,U+5C82,U+5CAD,U+5CBF,U+5CE6,U+5CED,U+5CFB,U+5D0E,U+5D4C,U+5DE7-5DE8,U+5DFE,U+5E02,U+5E08,U+5E15,U+5E18,U+5E3D,U+5E42,U+5E55,U+5E73-5E74,U+5E86,U+5E90,U+5E93,U+5E99,U+5E9E,U+5EB7,U+5EC9-5ECA,U+5ED3,U+5ED6,U+5F00,U+5F03-5F04,U+5F0F,U+5F25,U+5F31,U+5F3A,U+5F55,U+5F6D,U+5F84,U+5F8B,U+5F98,U+5FCD,U+5FD9,U+5FEB,U+5FF5,U+6012,U+6015,U+601C,U+602F,U+6043,U+604B,U+6050,U+6070,U+6073,U+607C,U+6084,U+60A8,U+60AF,U+60C5,U+60CA,U+60E7,U+60F9,U+6127,U+614E,U+6151,U+6155,U+6162,U+6168,U+6177,U+61D2,U+61E6,U+620E,U+6212,U+621A,U+622A,U+622E,U+6247,U+624B,U+6251,U+6254,U+625B,U+6263,U+6266,U+6269,U+626B,U+626D,U+6270,U+6279,U+6289,U+6297,U+629B,U+62A0-62A2,U+62A8,U+62AB,U+62B9,U+62BF,U+62C7-62C9,U+62CD-62CE,U+62D2,U+62D8,U+62DF,U+62E2,U+62E6-62E7,U+62EC-62ED,U+62F3,U+62F7,U+62FC,U+62FE-62FF,U+630E,U+631B,U+6320,U+632A,U+6346,U+634E-6350,U+635E,U+6367,U+636E,U+6377,U+637B,U+6388,U+6390,U+6392,U+6398,U+63A0,U+63A5,U+63A7,U+63B3,U+63C9,U+63CF,U+63E9-63EA,U+63ED,U+63FD,U+6402,U+6405,U+6414,U+6444,U+6469,U+6478-6479,U+6482,U+6485,U+6487,U+6492,U+64A9,U+64AC,U+64B5,U+64C2,U+64C5,U+64CE,U+64D2,U+6500,U+6518,U+652B,U+6536,U+654F,U+6551,U+6559,U+655B,U+6563,U+656C,U+6572,U+6599,U+65A4,U+65BD,U+65C1,U+65C5,U+65D7,U+65E5,U+65E7,U+65F6-65F7,U+6606,U+660E,U+6627,U+662F,U+664B-664C,U+6652,U+666E-666F,U+6674,U+6676,U+667E,U+6696,U+66AE,U+66DD,U+66F2,U+66FC,U+670B,U+6717,U+671F,U+6728,U+672B,U+6734,U+6740,U+6743,U+6749,U+674E,U+6765,U+6770,U+6797,U+679A,U+67AA,U+67AF,U+67D0,U+67D2-67D4,U+67E0,U+67EF,U+67F3,U+67FF,U+680F,U+6816-6817,U+6846,U+6851,U+6854,U+6865,U+6881,U+6885,U+68A2,U+68A6,U+68A8,U+68C9,U+68CB,U+68DA,U+68EE,U+68F1,U+68F5,U+695E,U+6977,U+697C,U+6994,U+69B4,U+69B7,U+6A21,U+6A47,U+6AAC,U+6B20,U+6B27,U+6B3A,U+6B3E,U+6B49,U+6B67,U+6BB4,U+6BCD,U+6BCF,U+6BD7,U+6BDB,U+6C0F,U+6C11,U+6C13-6C14,U+6C16,U+6C22,U+6C2F-6C30,U+6C42,U+6C55,U+6C5D,U+6C7D,U+6C81,U+6C88,U+6C8F,U+6C99,U+6C9B,U+6CA1,U+6CA4-6CA6,U+6CAB,U+6CAE,U+6CC5,U+6CC9,U+6CCC,U+6CDE,U+6CE1,U+6CE3,U+6CE5,U+6CEA,U+6CFC,U+6D01,U+6D12,U+6D1B,U+6D25,U+6D3D-6D3E,U+6D41,U+6D45,U+6D53,U+6D5A,U+6D66,U+6D6A,U+6D78,U+6D85,U+6D89,U+6D9D,U+6D9F,U+6DA6,U+6DA9,U+6DCB,U+6DD6,U+6DF1,U+6E05,U+6E17,U+6E20,U+6E34,U+6E3A,U+6E43,U+6E7F,U+6E83,U+6E9C,U+6EB6,U+6EBA,U+6EE1,U+6EE4-6EE6,U+6F02,U+6F06,U+6F0F,U+6F13,U+6F20,U+6F2B,U+6F58,U+6F5C,U+6F5E,U+6F66,U+6F8E,U+6F9C,U+7011,U+706D,U+7075,U+7078,U+7089,U+7094-7095,U+70AC,U+70AE-70AF,U+70BC,U+70C2,U+70C8,U+70D9,U+70E4,U+70E7,U+70EC-70ED,U+70F9,U+7136,U+715E,U+7164,U+717D,U+7194,U+71C3,U+71CE,U+722C,U+7235,U+7247,U+724C,U+725B,U+725F,U+7261-7262,U+7267,U+7272,U+7275,U+7281,U+72AC,U+72C2,U+72D9,U+72DE,U+72E1,U+72EE,U+72F8,U+72FC,U+730E,U+731B,U+732B,U+7387,U+7396,U+739B,U+73AB,U+73B2,U+73CA,U+7403,U+7405-7406,U+7409,U+7433-7436,U+743C,U+745E-745F,U+7483,U+74E2,U+74E4,U+74F6,U+751A,U+751F,U+7525,U+7533,U+7537,U+754C,U+7554,U+7559,U+7565-7566,U+7597,U+759A,U+759F,U+75A5,U+75B2,U+75BD,U+75C9-75CA,U+75DE,U+75E2,U+7624,U+7638,U+7686,U+76AE,U+76BF,U+76C6,U+76D4,U+76D8,U+76DB,U+76DF,U+76EE,U+76F2,U+76FC,U+7701,U+7709,U+770B,U+7720,U+772F,U+7736-7737,U+775B,U+7766,U+776B,U+7784,U+7792,U+77A5,U+77A7,U+77DB,U+77E2,U+77E9,U+77EB,U+77F3,U+77FF,U+7801-7802,U+780C-780D,U+7812,U+7830,U+7834,U+7837,U+783E,U+786B,U+786E,U+787C,U+788C,U+78B0,U+78BE,U+78CA,U+78D0,U+78D5,U+78E8,U+78F7,U+793A,U+793C,U+793E,U+7941,U+7948,U+795E,U+7968,U+7981,U+7984,U+79BB,U+79BD,U+79CB,U+79D1-79D2,U+79D8,U+79E6,U+79F8,U+7A0D,U+7A46,U+7A76-7A77,U+7A7A,U+7A83,U+7A8D,U+7A96,U+7A98,U+7A9F,U+7AA5,U+7ABF,U+7ACB,U+7ADE-7ADF,U+7AE3,U+7AED,U+7B3C,U+7B4B,U+7B50,U+7B5B,U+7B77,U+7B7E,U+7BA9,U+7BC7,U+7BD3,U+7BEE,U+7BF1,U+7BF7,U+7C73,U+7C7B,U+7C92,U+7C95,U+7CAE,U+7CB1,U+7CB3,U+7CBE,U+7CDC,U+7CE0,U+7CEF,U+7D27,U+7D2F,U+7EA0,U+7EAB,U+7EB1,U+7EB3,U+7EB6,U+7EBD,U+7EC3,U+7EC5,U+7ECD,U+7ECF,U+7ED2-7ED3,U+7ED5,U+7EDC-7EDE,U+7EE2,U+7EF3,U+7EF5,U+7EFF,U+7F05-7F06,U+7F15,U+7F2E,U+7F34,U+7F3A,U+7F57,U+7F8C,U+7F8E,U+7F9A,U+7FA4,U+7FD8,U+8001,U+8003,U+8010,U+802A,U+8042,U+804A-804B,U+8054,U+8058,U+805A,U+8089,U+808B,U+80AF,U+80BE,U+80D6,U+80DA,U+80DC,U+80EF,U+80FD,U+8109,U+8110-8111,U+8113,U+811A,U+8138,U+813E,U+814A,U+8154,U+816E,U+817B,U+819C,U+81A8,U+81B3,U+81FC,U+8205,U+820C-820D,U+826F,U+8272,U+8282,U+828D,U+8292,U+82A5-82A6,U+82B9,U+82D7,U+82DB,U+82E5-82E6,U+82EB,U+82F9,U+8302,U+8304-8305,U+830E,U+832B,U+8338-8339,U+8346,U+8354,U+8363,U+8386,U+8389,U+838E,U+83AB,U+83B1-83B2,U+83BD,U+83CA,U+83CC,U+83E9,U+83F1,U+840C-840D,U+841D,U+8428,U+843D,U+8461,U+8475,U+8499,U+84B2,U+84C9,U+84DD,U+84EC,U+8511,U+8513,U+852B,U+8537,U+854A,U+857E,U+85C9,U+85D0,U+85D5,U+8611,U+864F-8651,U+8671,U+8680,U+8682,U+86C6-86C7,U+86EE,U+871C,U+8721,U+878D,U+879F,U+87BA,U+8815,U+8857,U+886B,U+888D,U+88C2,U+88D9,U+88E4,U+88F3-88F4,U+88F8,U+8925,U+895F,U+89C5-89C6,U+89C8-89C9,U+89D2,U+89E3,U+8A93,U+8B66,U+8B6C,U+8BA4,U+8BA9,U+8BAB,U+8BBA,U+8BBE,U+8BC0,U+8BC4,U+8BC6,U+8BD5,U+8BD7,U+8BEB,U+8BF7,U+8BFA,U+8BFE,U+8C05,U+8C0B,U+8C1C,U+8C26,U+8C28-8C29,U+8C2C,U+8C30-8C31,U+8C34,U+8C8C,U+8D2B,U+8D38,U+8D41-8D42,U+8D4A,U+8D4F,U+8D54,U+8D56,U+8D5B,U+8D61,U+8D66,U+8D77,U+8D8B,U+8DA3,U+8DB4,U+8DD1,U+8DDD,U+8DE8,U+8DEF,U+8E1E,U+8EAB,U+8EAF,U+8F6E-8F6F,U+8F7B,U+8F7F,U+8F83,U+8F86,U+8FA3,U+8FB1,U+8FBD,U+8FC1,U+8FC4,U+8FC8,U+8FD1,U+8FDB,U+8FDE,U+8FEB,U+8FF7,U+9002,U+9006,U+901D,U+903B,U+9063,U+90A3,U+90B1,U+90B5,U+90BB,U+90CE,U+90E1,U+914B,U+914D,U+9152,U+916A,U+9175-9177,U+917F,U+919A-919B,U+91CA,U+91CC,U+91CF,U+91D1,U+948E,U+94A0,U+94A6-94A7,U+94AE,U+94B1,U+94B3,U+94C3,U+94C5-94C6,U+94DD,U+94ED,U+94F0,U+94FA,U+94FE,U+9510,U+951A,U+9523,U+9526,U+952F-9530,U+9539,U+9541,U+954A,U+954D,U+955C,U+9563,U+956D,U+9570,U+95E8,U+95EA,U+95F0,U+95F7,U+95F9,U+95FD,U+9611,U+9614,U+962E,U+9636,U+9646-9647,U+964B-964C,U+9655,U+966A,U+9675,U+9686,U+96B6,U+96BE,U+96C0,U+96F6-96F7,U+9709,U+9713,U+9716,U+9732,U+9739,U+9752,U+9756,U+9759,U+9760-9762,U+9773,U+9798,U+97A0,U+97E7,U+97ED,U+97F6,U+9877,U+9885-9888,U+9891,U+9897,U+98A7,U+98D8,U+98DF,U+9970,U+9976,U+997A,U+9981,U+9988,U+998F,U+9992,U+9996,U+9A6C,U+9A71,U+9A74,U+9A76,U+9A79,U+9A82,U+9A86,U+9A8F,U+9A91,U+9A97,U+9A9A,U+9AA1,U+9B41,U+9B44,U+9B54,U+9C81,U+9CA4,U+9CB8,U+9CC3,U+9CDE,U+9E1F,U+9E23,U+9E25,U+9E43,U+9E4A,U+9E4F,U+9E7F,U+9E93,U+9EA6,U+9EBB,U+9ECE,U+9ED4,U+9ED8,U+9F50,U+9F84,U+9F8B,U+9F99`}),Object.freeze({family:`Aha Hand`,file:`wenkai-gb-3-6949c050.woff2`,bytes:311704,unicodeRange:`U+4E00,U+4E07-4E08,U+4E0B,U+4E0E,U+4E13,U+4E1A,U+4E1D,U+4E25,U+4E2B,U+4E2D,U+4E38,U+4E3A-4E3B,U+4E49,U+4E4B-4E4D,U+4E59,U+4E5F-4E61,U+4E66,U+4E88-4E89,U+4E8E,U+4E91,U+4E94,U+4E9A-4E9B,U+4EA1,U+4EA6,U+4EAB,U+4EAD,U+4EBF,U+4ED4,U+4ED6-4ED7,U+4ED9,U+4EE5,U+4EEA,U+4EF0,U+4EF2,U+4F0A,U+4F0D,U+4F11,U+4F17-4F18,U+4F1F,U+4F2A,U+4F3A,U+4F3C,U+4F4D,U+4F4F-4F51,U+4F53,U+4F59,U+4F5C,U+4F63,U+4F6F,U+4F84,U+4F9D,U+4FA0,U+4FA6,U+4FAE,U+4FD7,U+4FDE,U+4FE1,U+4FEE,U+5018,U+501A,U+503A,U+503C,U+505A,U+505C,U+5077,U+50CF,U+50F3,U+5141,U+5143-5144,U+5146,U+5148,U+5154,U+5174,U+5179,U+517B,U+517D,U+518D,U+5199,U+51A4,U+51B6,U+51C6,U+51F6,U+51F8,U+51FF,U+5211,U+5219,U+5236-5237,U+5243,U+524A,U+5254,U+52A1,U+52A9,U+52C7,U+52CB,U+52FF-5300,U+5308,U+531D,U+5323,U+533B,U+5348,U+534F,U+5352-5353,U+5360,U+5367,U+536B,U+5370-5371,U+5378,U+5385,U+538B-538C,U+539F,U+53A2,U+53A6,U+53BF,U+53C8,U+53CB-53CC,U+53D4,U+53D9,U+53EA,U+53EC,U+53F0,U+53F3,U+53F6,U+53F8-53F9,U+5401,U+540C,U+5410-5411,U+5413,U+541E-541F,U+542C,U+542E,U+5431,U+5434,U+5438,U+543B,U+543E,U+5440,U+5458,U+545C,U+5468,U+5473,U+548B,U+548F,U+5492,U+54A8,U+54AC,U+54B1,U+54B8,U+54BD,U+54C7,U+54C9,U+54CD,U+54D1,U+54DF,U+54EE,U+54F2,U+5501,U+5506,U+5510,U+552F,U+553E,U+5544,U+5578,U+557C,U+5582,U+559C,U+55A7,U+55B3,U+55BB,U+55C5,U+55E1,U+55E3,U+55FD,U+5618,U+5631,U+5634,U+5636,U+563B,U+564E,U+566A,U+568F,U+56A3,U+56DB,U+56E0,U+56E2,U+56ED,U+56F4,U+56FE,U+5706,U+571F,U+5728,U+5740,U+574D,U+5750,U+575B,U+575E,U+5760,U+5766,U+578B,U+57A3,U+57DF,U+5802,U+5830,U+584C,U+5851,U+5854,U+5858,U+586B,U+5885,U+589E-589F,U+58EE,U+58F9,U+590F,U+5915-5916,U+591C,U+5929-592A,U+592E,U+5934,U+5937,U+5944,U+594F,U+5957,U+5979,U+5984,U+5986,U+5996,U+59A5,U+59D3-59D4,U+59DA,U+59E8,U+59FB,U+59FF,U+5A01,U+5A03,U+5A31,U+5A49,U+5A74,U+5A7F,U+5AB3,U+5ACC,U+5B50,U+5B55,U+5B57,U+5B59,U+5B5C-5B5D,U+5B66,U+5B70,U+5B83,U+5B85,U+5B87,U+5B8B-5B8C,U+5B97,U+5B99,U+5B9B-5B9C,U+5BA3,U+5BAA,U+5BB0,U+5BB4-5BB5,U+5BBF,U+5BC5,U+5BD3,U+5BE8,U+5BFA-5BFB,U+5C09-5C0A,U+5C0F,U+5C24,U+5C27,U+5C39,U+5C3E,U+5C49,U+5C4B,U+5C51,U+5C55,U+5C5E,U+5C60,U+5C6F,U+5C79,U+5C7F,U+5C81,U+5CA9,U+5CB3,U+5CD9,U+5CE1,U+5CEA,U+5D16,U+5D2D,U+5DCD,U+5DDE,U+5DE1,U+5DE6,U+5DEB,U+5DF2-5DF3,U+5DF7,U+5E05,U+5E0C,U+5E10,U+5E16,U+5E1A,U+5E1C,U+5E27,U+5E2D,U+5E78,U+5E7C-5E7D,U+5E84,U+5E8F,U+5E94,U+5EA7,U+5EAD,U+5EB6,U+5EB8,U+5EF6-5EF7,U+5F02,U+5F15,U+5F20,U+5F26,U+5F2F,U+5F5D,U+5F62,U+5F64,U+5F66,U+5F70-5F71,U+5F79,U+5F80-5F81,U+5F90,U+5F92,U+5FA1,U+5FAA,U+5FAE,U+5FC3,U+5FC6,U+5FD7-5FD8,U+5FE0,U+5FE7,U+5FFB,U+6001-6002,U+600E,U+6014,U+601D,U+6027-6028,U+603B,U+6055,U+6064,U+606C,U+606F,U+607F,U+6089,U+609F-60A0,U+60A6,U+60AC,U+60CB,U+60D5,U+60DC,U+60DF,U+60F3,U+60FA,U+6108-6109,U+610F,U+611A,U+613F,U+6170,U+618E,U+61C8,U+620A,U+620C-620D,U+620F,U+6211,U+6218,U+6240,U+624E,U+6258,U+6267,U+626C,U+627E,U+6291-6293,U+6295,U+6298,U+62AC,U+62BC,U+62C4,U+62D3,U+62D6,U+62D9,U+62DB,U+62E5,U+62E9,U+62EF,U+62F4,U+62FD,U+6307,U+6311,U+6316,U+631A,U+631D-631F,U+6323,U+632F,U+633A,U+633D,U+6342,U+6345,U+6349,U+635F,U+6380,U+638C,U+638F,U+6396,U+63A2,U+63A8-63A9,U+63B7,U+63CD,U+63D0,U+63D6,U+63E1,U+63F4,U+641C,U+642A,U+643A,U+6447,U+644A,U+6454,U+6458,U+6495,U+649E,U+64B0,U+64DE,U+6512,U+652F,U+653F,U+6548,U+6570,U+6574,U+6587,U+658B,U+659C,U+659F,U+65A1,U+65A9,U+65AF-65B0,U+65CB,U+65CF,U+65E0,U+65E8-65E9,U+65EC-65ED,U+65FA,U+6613-6614,U+661F-6620,U+6628,U+662D,U+663C,U+663E,U+6653,U+6655,U+665A,U+6664,U+6670,U+667A,U+6682,U+6687,U+6691,U+66D9,U+66F0,U+66F3,U+66FE-6700,U+6708-6709,U+6714,U+671B,U+672A,U+672D,U+672F,U+6731,U+673D,U+6742,U+674F,U+6756,U+675F,U+6761,U+6768,U+677E,U+6789,U+6790,U+6795,U+679D,U+67A2-67A3,U+67DE,U+67F1,U+6805,U+6808,U+6811,U+6813,U+6821,U+682A,U+6837,U+683D,U+6843,U+6845,U+684C,U+6850,U+6869,U+6876,U+68A7,U+68AD,U+68AF-68B0,U+68B3,U+68D5,U+68E0,U+6905,U+690D-690E,U+692D,U+6930,U+6954,U+6986,U+69A8,U+6A1F,U+6A31,U+6A61,U+6A80,U+6A84,U+6B23,U+6B32,U+6B47,U+6B62-6B63,U+6B66,U+6B6A,U+6B7B,U+6B83,U+6B89-6B8A,U+6B96,U+6BB7,U+6BC5,U+6BCB,U+6BE1,U+6BEF,U+6C27,U+6C34,U+6C38,U+6C40-6C41,U+6C50,U+6C5B,U+6C61,U+6C64,U+6C6A,U+6C70,U+6C79,U+6C82-6C83,U+6CB9,U+6CBB-6CBC,U+6CBE-6CBF,U+6CC4,U+6CE8,U+6CF0,U+6CF3,U+6CFB,U+6CFD,U+6D0B,U+6D17,U+6D32,U+6D3C,U+6D4A,U+6D59,U+6D74,U+6D82,U+6D88,U+6D8C,U+6D8E,U+6D95,U+6D9B,U+6DA1,U+6DA8,U+6DAF,U+6DB2,U+6DC4,U+6DC6,U+6DCC,U+6DD1,U+6DD8,U+6DE4,U+6DEB,U+6DF9,U+6DFB,U+6E0A,U+6E0D,U+6E14,U+6E1D,U+6E23,U+6E29,U+6E2D,U+6E38,U+6E4D,U+6E58,U+6E5B,U+6E7E,U+6E90,U+6EA2,U+6EAA,U+6EAF,U+6ECB,U+6ED3-6ED4,U+6EDE,U+6EE9,U+6F14,U+6F31,U+6F33,U+6F3E,U+6F4D,U+6F6D,U+6FA1,U+7076,U+707C,U+707E,U+708E,U+7099,U+70AD,U+70B8,U+70C1,U+70C3,U+70DB,U+70DF,U+70EB,U+70EF,U+70F7,U+7109,U+7130,U+7167,U+716E,U+7184,U+718A,U+718F,U+7199,U+719F,U+71D5,U+71E5,U+722A,U+7237,U+723D,U+7259,U+7269,U+7279-727A,U+7280,U+72B6,U+72B9,U+72ED,U+72F0-72F1,U+7329-732A,U+732E,U+733F,U+736D,U+7384,U+7389,U+738B,U+73A9,U+73B0,U+73CD,U+73E0,U+7410,U+7422,U+7476,U+74E6,U+74EE,U+7504,U+751C,U+7528-7529,U+7530-7531,U+754F,U+755C,U+758F,U+7591,U+75A1,U+75AB,U+75B9,U+75BC,U+75C7-75C8,U+75D2,U+75D4,U+75DB,U+75F0,U+761F,U+7626,U+762B,U+7634,U+7663,U+7682,U+7696,U+76B1,U+76C2,U+76C5,U+76C8,U+76CA,U+76CF-76D0,U+76F4,U+76F8,U+771F,U+7728-7729,U+773A,U+773C,U+7740-7741,U+7761,U+778E,U+77A9,U+77AC,U+77B3,U+77BB,U+77E3,U+77E5,U+77FD,U+7814,U+7816,U+781A,U+7827,U+7838,U+7852,U+7855,U+785D,U+786C,U+788E,U+7897,U+78B3,U+7956,U+795D,U+795F,U+7965,U+79B9,U+79C0-79C1,U+79C3,U+79CD,U+79DF,U+79E7,U+79E9,U+79FB,U+7A00,U+7A0E,U+7A1A,U+7A33,U+7A57,U+7A74,U+7A81,U+7A84,U+7A91-7A92,U+7A9D,U+7AD6,U+7AD9,U+7AE0,U+7AE5,U+7AF9,U+7B0B,U+7B11,U+7B51-7B52,U+7B97,U+7BB1,U+7BC6,U+7C7D,U+7C98,U+7C9F,U+7CA4-7CA5,U+7CD6,U+7CDF,U+7CFB,U+7D0A,U+7D20,U+7D22,U+7D2B,U+7D6E,U+7E82,U+7EA4,U+7EA6,U+7EAC,U+7EB5,U+7EB8-7EB9,U+7EBF,U+7EC4,U+7EC6-7EC8,U+7ECE,U+7EDA,U+7EDF,U+7EE3,U+7EE5-7EE6,U+7EEA,U+7EED,U+7EF4,U+7EFC-7EFD,U+7F00,U+7F18,U+7F28-7F29,U+7F51,U+7F69-7F6A,U+7F6E,U+7F72,U+7F8A,U+7F9E,U+7FA1,U+7FBD,U+7FC1,U+7FCC,U+7FD4,U+7FFC,U+8000,U+8005,U+800D,U+8018,U+8036,U+8038,U+804C,U+8083-8084,U+8086-8087,U+8096,U+8098,U+80A2,U+80B2,U+80BF-80C1,U+80C3,U+80CE,U+80F0,U+80F8,U+8102,U+810F,U+8131,U+8146,U+814B,U+8155,U+8165,U+8170,U+817A,U+817E-817F,U+819B,U+819D,U+81C0,U+81C3,U+81C6,U+81EA,U+81F3-81F4,U+81FB,U+8200,U+8206,U+8212,U+8214,U+821C,U+821E-821F,U+8237,U+8247,U+8258,U+8273,U+827A,U+828B,U+829C-829D,U+82AF,U+82BD,U+82C7,U+82CF,U+82D1,U+82D4,U+82F1,U+8301,U+8335,U+8367,U+836B,U+836F,U+83B9,U+8404,U+840E,U+8424-8425,U+8427,U+8457,U+846C,U+849C,U+84B8,U+84C4,U+84D1,U+8517,U+851A,U+852C,U+8574,U+859B,U+85AA,U+85AF,U+85E4,U+85FB,U+8638,U+865A,U+865E,U+867D-867E,U+8681,U+868A,U+869C,U+86A4,U+86C0,U+86D9,U+86DB,U+86F0,U+86F9,U+8700,U+8712,U+8715,U+8717-8718,U+8747,U+874E,U+87F9,U+8840,U+8845,U+884C-884D,U+8854,U+8859,U+8863,U+8870,U+8877,U+8881,U+8892,U+8896,U+889C,U+88AD,U+88C5,U+88D4-88D5,U+892A,U+8944,U+897F,U+8981,U+8A00,U+8A79,U+8A89-8A8A,U+8BA8,U+8BAD-8BAF,U+8BB6,U+8BB8,U+8BBC,U+8BC1,U+8BC5,U+8BC8-8BCA,U+8BCC,U+8BD1,U+8BDB,U+8BE2-8BE3,U+8BE6,U+8BEC-8BED,U+8BEF,U+8BF1,U+8BF4-8BF5,U+8BF8,U+8C01,U+8C06,U+8C08,U+8C0A,U+8C10,U+8C13,U+8C1A,U+8C22-8C23,U+8C2D,U+8C4C,U+8C61,U+8C6B,U+8D1E,U+8D23-8D24,U+8D26,U+8D28,U+8D2A,U+8D2E,U+8D34,U+8D3C,U+8D43-8D44,U+8D4E,U+8D58,U+8D5A,U+8D5E,U+8D60,U+8D62,U+8D70,U+8D75,U+8D8A,U+8D9F,U+8DB3,U+8DBE,U+8DC3,U+8DF3,U+8E0A,U+8E0F,U+8E22,U+8E2A,U+8E44,U+8E4B,U+8E81,U+8EBA,U+8F67,U+8F69,U+8F6C,U+8F74,U+8F7D,U+8F93,U+8F95-8F97,U+8F99,U+8F9B,U+8FC2,U+8FC5,U+8FCE,U+8FD0,U+8FD9,U+8FDC-8FDD,U+8FE2,U+8FF0,U+8FFD,U+9000-9001,U+9003,U+9009-900A,U+900F-9010,U+9014,U+901A,U+901F-9020,U+9038,U+903E,U+9042,U+9047,U+9057,U+9065,U+906D-906E,U+9075,U+9080,U+9091,U+90A2,U+90AA,U+90AE,U+90B9,U+90C1,U+90D1,U+90E7,U+9149,U+914C,U+9157,U+915D-915E,U+9165,U+916E,U+9178,U+9189,U+9192,U+91C9,U+91CD-91CE,U+9488,U+949F,U+94A5,U+94A8,U+94BB,U+94C0-94C1,U+94DC,U+94E1,U+94E3,U+94F1,U+94F6,U+94F8,U+9500-9501,U+9508,U+950C,U+9511,U+9517,U+9521,U+9525,U+9528,U+9547,U+9576,U+95EE,U+95F2,U+95F8,U+95FB,U+9605,U+9609,U+960E,U+9633-9635,U+963B,U+9640,U+9650,U+9662,U+9668-9669,U+9676-9677,U+9685,U+968B,U+968F-9690,U+9699,U+969C,U+96A7,U+96C1,U+96C4-96C5,U+96CD,U+96E8,U+96EA,U+96FE,U+9700,U+9704,U+9707,U+971C,U+971E,U+9774,U+978B,U+97E6,U+97F3,U+97F5,U+9875,U+9879-987B,U+987D,U+9882,U+9884,U+9890,U+9893,U+9896,U+9898,U+989C,U+996E,U+9972,U+9985,U+9999,U+9A6D-9A6F,U+9A7B-9A7C,U+9A8C,U+9AA4,U+9AD3,U+9B03,U+9B4F,U+9C7C,U+9C9C,U+9E26,U+9E2D,U+9E2F,U+9E33,U+9E35,U+9E70,U+9ECD,U+9F20`}),Object.freeze({family:`Aha Hand`,file:`wenkai-gb-4-375dc3b3.woff2`,bytes:257596,unicodeRange:`U+4E0C,U+4E10,U+4E15,U+4E1E,U+4E28,U+4E36,U+4E3F,U+4E47,U+4E5C,U+4E69,U+4E8D,U+4E93,U+4E98,U+4E9F-4EA0,U+4EB3,U+4EB5,U+4EBB,U+4EC2-4EC4,U+4EC9,U+4EDD-4EDE,U+4EE1,U+4EE8,U+4EEB,U+4EF3,U+4EF5,U+4F09,U+4F1B,U+4F22,U+4F25,U+4F27,U+4F2B,U+4F32,U+4F3D,U+4F57-4F58,U+4F5A,U+4F5D-4F5F,U+4F64-4F65,U+4F67,U+4F74,U+4F76,U+4F7B-4F7C,U+4F7E,U+4F83,U+4F89,U+4F8F,U+4F91,U+4F94,U+4FAA,U+4FAC,U+4FC5,U+4FCE,U+4FD1,U+4FDA,U+4FDC,U+4FDF,U+4FE3,U+4FE6,U+4FE8,U+4FEA,U+4FF3,U+4FF8,U+4FFE,U+500C,U+500F,U+501C,U+5025,U+5028-5029,U+502C-502E,U+5043,U+5048,U+504C,U+504E,U+5055,U+506C,U+507B,U+507E,U+50A5,U+50A7,U+50A9,U+50BA,U+50D6,U+50E6,U+50EC-50EE,U+5106-5107,U+510B,U+5140,U+5155-5156,U+516E,U+5181-5182,U+5196,U+51A2,U+51A5,U+51AB,U+51B1,U+51BC-51BD,U+51C7,U+51EB,U+51F5,U+51FC,U+5202,U+5208,U+520D-520E,U+522D,U+5233,U+523F-5240,U+524C,U+525C,U+525E,U+5261,U+527D,U+5281-5282,U+5290,U+5293,U+52A2,U+52AC-52AD,U+52BE,U+52D0,U+52D6,U+52F0,U+52F9,U+530D,U+530F-5310,U+5315,U+531A,U+5326,U+532E,U+533E,U+5345,U+535F,U+5363,U+5366,U+5369,U+536E,U+537A,U+538D,U+539D,U+53A3,U+53A5,U+53AE,U+53B6,U+53DF,U+53E8-53E9,U+53F1,U+53F5,U+53FB,U+53FD,U+5406,U+5412,U+5416,U+5421,U+5423,U+5432,U+5443,U+544B,U+5452-5454,U+5456-5457,U+5459,U+5464,U+5466,U+5471-5472,U+5476-5477,U+5482,U+5484,U+5494,U+549A-549B,U+549D,U+54A3-54A4,U+54A6-54A7,U+54A9-54AA,U+54AD,U+54B4,U+54BB,U+54BF,U+54C2,U+54CC,U+54CF-54D0,U+54D2-54D5,U+54D9-54DA,U+54DC-54DE,U+54E7,U+54F3,U+54FD,U+54FF,U+550F,U+5511,U+5514,U+551B,U+5520,U+5522-5523,U+5527,U+552A,U+5530,U+5533,U+5537,U+553C,U+553F,U+5541,U+5549,U+5550,U+5555-5556,U+555C,U+5567,U+556C-556D,U+5575-5577,U+557B,U+557E,U+5581,U+5583,U+5588,U+558B,U+558F,U+5591,U+5594,U+5599,U+559F,U+55B1,U+55B5,U+55B9,U+55BD-55BE,U+55C4,U+55C9,U+55CC-55CD,U+55D1-55D2,U+55D4,U+55D6,U+55DD,U+55DF,U+55E4-55E6,U+55E8,U+55EA-55EC,U+55EF,U+55F2-55F3,U+55F5,U+55F7,U+55FE,U+5600-5601,U+5608,U+560C,U+560F,U+561E-561F,U+5623-5624,U+5627,U+562C-562D,U+5639,U+564C-564D,U+5654,U+5657-5659,U+565C,U+5662,U+5664,U+5669,U+566B,U+5671,U+567B-567C,U+5685-5686,U+5693,U+56AF,U+56D4,U+56D7,U+56DD,U+56DF,U+56E1,U+56EB,U+56F5,U+56F9,U+56FF,U+5704,U+5709-570A,U+571C,U+5729-572A,U+572C,U+572E-572F,U+5733,U+5739,U+573B,U+5742,U+574C,U+575C,U+5768-5769,U+576B,U+576D,U+5773,U+5776,U+577B-577C,U+5785-5786,U+578C,U+5793,U+57A0-57A1,U+57A4,U+57A7,U+57A9,U+57AD,U+57B2,U+57B4,U+57B8,U+57CF,U+57D2,U+57D5,U+57D8-57DA,U+57DD,U+57E4,U+57ED,U+57EF,U+57F4,U+57F8,U+57FD,U+5800,U+5807,U+580B,U+580D,U+5819,U+581E,U+5820,U+5844,U+5865,U+586C,U+587E,U+5880-5881,U+5889,U+589A,U+58BC,U+58C5,U+58D1,U+5902,U+5914,U+5919,U+5924-5925,U+592D,U+593C,U+5941-5942,U+5955,U+5958,U+595A,U+5B34,U+5B5B,U+5B6C,U+5C22,U+5C25,U+5C2C,U+5C34,U+5C7A,U+5C88,U+5C8C-5C8D,U+5C90-5C91,U+5C96,U+5C98-5C9A,U+5C9C,U+5CA2-5CA3,U+5CAB-5CAC,U+5CB1,U+5CB5,U+5CB7,U+5CBD,U+5CC1,U+5CC4,U+5CCB,U+5CD2,U+5CE4-5CE5,U+5D02-5D03,U+5D06,U+5D1B,U+5D1E,U+5D24,U+5D26-5D27,U+5D2E,U+5D34,U+5D3D-5D3E,U+5D4A-5D4B,U+5D58,U+5D5B,U+5D5D,U+5D69,U+5D6B-5D6C,U+5D6F,U+5D74,U+5D82,U+5D99,U+5D9D,U+5DB7,U+5DC5,U+5DEF,U+5DFD,U+5E0F,U+5E11,U+5E14,U+5E19,U+5E31,U+5E37,U+5E3B-5E3C,U+5E44,U+5E54,U+5E5B,U+5E5E,U+5E61,U+5E80,U+5E8B,U+5E91,U+5E96,U+5EA0,U+5EA5,U+5EB3,U+5EB5,U+5EB9,U+5EBE,U+5ED1-5ED2,U+5EDB,U+5EE8,U+5EEA,U+5EF4,U+5EFE-5EFF,U+5F01,U+5F08,U+5F0B,U+5F11,U+5F61,U+5F73,U+5F77,U+5F82,U+5F87,U+5F89,U+5F8C,U+5F95,U+5F99,U+5F9C,U+5FA8,U+5FAD,U+5FB5,U+5FBC,U+5FD2,U+61FF,U+624C,U+626A,U+629F,U+62BB,U+62CA,U+62D7,U+62DA,U+62EE,U+62F6,U+6322,U+6339,U+6343,U+634B,U+6369,U+636D,U+6371,U+637A,U+638A,U+638E,U+63AC-63AE,U+63B4,U+63BC,U+63BE,U+63C4,U+63C6,U+63CE,U+63DE,U+63E0,U+63F2,U+63F6,U+63F8,U+63FF,U+640B-640C,U+641B,U+6420-6421,U+6426,U+6441,U+6445,U+6452,U+645E,U+646D,U+647A,U+6484,U+6496,U+6499,U+64B7-64B8,U+64BA,U+64C0,U+64D0,U+64D7,U+64E2,U+64E4,U+6509,U+6525,U+652E,U+6538,U+6BD3,U+6C10,U+6C3D,U+6C46,U+71EE,U+723B,U+72AD,U+72B0,U+72B4,U+72B7-72B8,U+72C1,U+72C3,U+72CD-72CE,U+72D2,U+72E8-72E9,U+72EF,U+72F2-72F4,U+72F7,U+72FA-72FB,U+7301,U+7303,U+730A,U+7313,U+7315,U+7317,U+731D-731E,U+7321-7322,U+7325,U+732C,U+7331,U+7338-7339,U+734D,U+7350,U+7357,U+7360,U+736C,U+736F,U+737E,U+750D,U+7519,U+755A,U+777E,U+77A2,U+77CD,U+7980,U+79BA,U+7C74,U+7F54,U+7FB8,U+8037,U+80E4,U+8114,U+81BA,U+821B,U+8279,U+827D,U+827F,U+8284,U+8288,U+828A,U+828E-828F,U+8291,U+8297-8299,U+829F,U+82A1,U+82A4,U+82A8-82AB,U+82AE,U+82B0,U+82B4,U+82B7-82B8,U+82BE,U+82C1,U+82C4,U+82C8,U+82CA-82CC,U+82CE,U+82D2-82D3,U+82D5,U+82D8,U+82DC,U+82E0-82E1,U+82E3-82E4,U+82F4,U+82F7,U+82FB,U+8306-8309,U+830C,U+830F,U+8311,U+8314-8315,U+8317,U+831A-831C,U+832D,U+832F,U+8331,U+8333-8334,U+833A,U+833C,U+8340,U+8343,U+8347,U+834F,U+8351,U+835B-835C,U+835E-8360,U+8365-8366,U+8368-836A,U+836C-836E,U+8378,U+837B-837D,U+8385,U+8392-8393,U+8398,U+839B-839C,U+839E,U+83A0,U+83A8-83AA,U+83B0,U+83B3-83B4,U+83B6,U+83B8,U+83BA,U+83BC,U+83C0-83C1,U+83C5,U+83D4,U+83D6,U+83D8,U+83DD,U+83DF,U+83E1,U+83E5,U+83EA,U+83F0,U+83F8-83F9,U+83FD,U+8401,U+8403,U+8406,U+840B,U+840F,U+8411,U+8418,U+841C,U+8426,U+8431,U+8438,U+843C,U+8446,U+8451,U+8459-845A,U+845C,U+8469,U+846D,U+8473,U+8476,U+8478,U+847A,U+8487-8489,U+848C,U+848E,U+8497,U+84A1,U+84AF,U+84B4,U+84B9-84BA,U+84BD,U+84BF,U+84C1,U+84CA,U+84CD,U+84D0,U+84D3,U+84E0,U+84E3,U+84E5-84E6,U+84F0,U+84FC,U+84FF,U+850C,U+851F,U+8538-853B,U+8543,U+8548,U+8556,U+8559,U+855E,U+8564,U+8568,U+8572,U+8579-857B,U+8585,U+8587,U+858F,U+859C,U+85A4,U+85A8,U+85AE,U+85B0,U+85B7,U+85B9,U+85C1,U+85D3,U+85DC,U+85FF,U+8605,U+8616,U+8627,U+8629,U+863C,U+8803,U+8862,U+886E,U+88A4,U+88D2,U+8A07,U+8BA0,U+8BA6-8BA7,U+8BAA,U+8BB4-8BB5,U+8BB7,U+8BC2-8BC3,U+8BCB,U+8BCE-8BCF,U+8BD2-8BD4,U+8BD6,U+8BD8-8BD9,U+8BDC,U+8BDF-8BE0,U+8BE4,U+8BE8-8BE9,U+8BEE,U+8BF0,U+8BF3,U+8BF6,U+8BF9,U+8BFC,U+8BFF-8C00,U+8C02,U+8C04,U+8C07,U+8C0C,U+8C0F,U+8C11-8C12,U+8C14-8C16,U+8C18-8C19,U+8C1B,U+8C1D,U+8C1F-8C21,U+8C25,U+8C27,U+8C2A-8C2B,U+8C2E-8C2F,U+8C32-8C33,U+8C35-8C36,U+8C73,U+8D53,U+8D5C-8D5D,U+8F94,U+9097,U+9099,U+909B,U+909D,U+90A1,U+90AC,U+90B0,U+90B3-90B4,U+90B6,U+90B8,U+90BA,U+90BE,U+90C4-90C5,U+90C7,U+90CF-90D0,U+90D3,U+90D7,U+90DB-90DC,U+90E2,U+90E6,U+90EB,U+90EF,U+90FE,U+9104,U+911E,U+9122-9123,U+912F,U+9131,U+9139,U+9143,U+9146,U+961D,U+9621-9622,U+962A,U+9631,U+963C-963D,U+9642,U+9649,U+9654,U+965F,U+9667,U+966C,U+9672,U+9674,U+9688,U+968D,U+9697,U+96B0,U+9765,U+98E7,U+9963,U+9967-996C,U+9974,U+9977,U+997D,U+9980,U+9984,U+9987,U+998A,U+998D,U+9990-9991,U+9993-9995,U+9997-9998,U+99A8,U+9B2F,U+9B32,U+9EC9,U+9F10,U+9F17,U+9F19,U+9FA0`}),Object.freeze({family:`Aha Hand`,file:`wenkai-gb-5-d0359bbc.woff2`,bytes:278908,unicodeRange:`U+4E2C,U+5216,U+54AB,U+584D,U+5981,U+5983,U+598D,U+5997,U+599E,U+59A3-59A4,U+59A9-59AB,U+59AF,U+59B2,U+59BE,U+59CA,U+59D2,U+59D7-59D8,U+59DD,U+59E3,U+59F9,U+5A05-5A06,U+5A08-5A09,U+5A0C,U+5A11,U+5A13,U+5A23,U+5A32,U+5A34,U+5A3C,U+5A40,U+5A4A,U+5A55,U+5A62,U+5A67,U+5A75,U+5A77,U+5A7A,U+5A9B,U+5AAA,U+5AB2,U+5AB5,U+5AB8,U+5ABE,U+5AD2,U+5AD4,U+5AD6,U+5AD8,U+5ADC,U+5AE0,U+5AE3,U+5AE6,U+5AEB,U+5AF1,U+5B09,U+5B16-5B17,U+5B32,U+5B37,U+5B40,U+5B51,U+5B53,U+5B5A,U+5B62,U+5B65,U+5B71,U+5B73,U+5B80,U+5B84,U+5B93,U+5B95,U+5BA5,U+5BB8,U+5BE4,U+5BEE,U+5BF0,U+5C15,U+5C1C,U+5C3B,U+5C50,U+5C59,U+5C63,U+5C66,U+5C6E,U+5DDB,U+5E7A,U+5F29-5F2A,U+5F2D,U+5F3C,U+5F40,U+5F50,U+5F56-5F58,U+5FC4,U+5FC9,U+5FCF-5FD1,U+5FD6,U+5FDD,U+5FE1,U+5FE4,U+5FEA,U+5FED-5FEE,U+5FF8,U+5FFE,U+6003-6006,U+600A,U+600D,U+600F,U+6019,U+601B,U+6021,U+6026,U+6029,U+602B,U+6035,U+603C,U+603F,U+6041-6042,U+6059-605A,U+605D,U+6063,U+6067,U+606A,U+6078-607B,U+607D,U+6083,U+608C,U+6092,U+6096,U+609A-609B,U+609D,U+60AB,U+60AD,U+60B1,U+60B4,U+60BB,U+60C6,U+60D8,U+60DA,U+60DD,U+60EC,U+60F4,U+6100,U+6106,U+610D-610E,U+6115,U+6120,U+6123,U+6126,U+612B,U+614A,U+615D,U+6175,U+6194,U+619D,U+61A7,U+61A9,U+61AC,U+61B7,U+61CB,U+61D1,U+61D4,U+61F5,U+6206,U+620B,U+6215,U+6217,U+621B,U+621F,U+6221-6222,U+6224-6225,U+622C,U+623D-623E,U+6243,U+6248-6249,U+6308,U+6332,U+63B0,U+6434,U+643F,U+64D8,U+6534-6535,U+6555,U+656B,U+6590,U+6593,U+65AB,U+65BC,U+65C3-65C4,U+65C6,U+65CC,U+65CE,U+65D2,U+65D6,U+65EE-65F0,U+6600,U+6603,U+660A,U+6615,U+6619,U+661D,U+6631,U+6634-6636,U+6641,U+664F,U+6654,U+6656-6657,U+665F,U+6661,U+6677,U+6684,U+668C,U+669D,U+66A7,U+66B9,U+66BE,U+66DB-66DC,U+66E6,U+66E9,U+66F7,U+670A,U+6710,U+6715,U+6726,U+6748,U+674C,U+6753,U+675E,U+6769-676A,U+6772-6773,U+6775,U+6777,U+677C,U+6787,U+678B,U+6798,U+679E,U+67A5,U+67A7-67A8,U+67AD,U+67B0,U+67B3,U+67B5,U+67B8,U+67C1,U+67C3,U+67D8-67DA,U+67DD,U+67E2,U+67E9,U+67F0,U+67FD,U+6800,U+6809-680A,U+680C,U+680E,U+681D,U+6829,U+6832-6833,U+683E,U+6840-6841,U+6844,U+6849-684A,U+684E,U+6855,U+6860-6862,U+6864,U+6866-6867,U+686B,U+6874,U+6877,U+6883,U+688F,U+6893,U+68B5,U+68C2,U+68E3,U+68F0,U+68F9,U+68FC,U+6901,U+690B,U+6910,U+691F-6920,U+6924,U+6934,U+6939,U+6942,U+6957,U+695D,U+6960,U+6963,U+6966,U+696B,U+696E,U+6971,U+6978-6979,U+6980,U+6984,U+6987-6989,U+698D,U+6995,U+6998,U+699B,U+69A7,U+69AB,U+69AD,U+69B1,U+69BB,U+69C1,U+69CA,U+69CC,U+69CE,U+69D4,U+69DF-69E0,U+69ED,U+69F2,U+69FF,U+6A17-6A18,U+6A28,U+6A2F,U+6A35,U+6A3D-6A3E,U+6A44,U+6A50,U+6A58,U+6A5B,U+6A65,U+6A79,U+6A7C,U+6A8E,U+6A90-6A91,U+6A97,U+6AA0,U+6AA9,U+6AAB,U+6B24,U+6B37,U+6B39,U+6B43,U+6B46,U+6B59,U+6B81-6B82,U+6B84,U+6B87,U+6B8D,U+6B92-6B93,U+6B9A-6B9B,U+6BA1,U+6BAA,U+6BB3,U+6BC2,U+6BEA,U+6BF3,U+6BF5,U+6BF9,U+6BFD,U+6C05-6C07,U+6C0D,U+6C15,U+6C18-6C1A,U+6C21,U+6C24,U+6C29-6C2A,U+6C32,U+6C35,U+6C4A,U+6C54,U+6C5C,U+6C68-6C69,U+6C74,U+6C76,U+6C85-6C86,U+6C8C,U+6C90,U+6C93-6C94,U+6CA3,U+6CA9,U+6CAD,U+6CB1-6CB2,U+6CD0,U+6CD3-6CD4,U+6CD6-6CD7,U+6CE0,U+6CEB,U+6CEE-6CEF,U+6CF1,U+6CF6-6CF8,U+6CFA,U+6CFE,U+6D04,U+6D07,U+6D0C,U+6D0E,U+6D19-6D1A,U+6D27,U+6D2B,U+6D2E,U+6D33,U+6D35,U+6D39,U+6D43,U+6D48,U+6D4D,U+6D4F,U+6D52,U+6D54,U+6D5C,U+6D5E,U+6D60,U+6D63,U+6D6F,U+6D7C,U+6D91,U+6D93-6D94,U+6D9E,U+6DA0,U+6DAB,U+6DAE,U+6DBF,U+6DC5,U+6DC7,U+6DD9,U+6DDD-6DDE,U+6DE0,U+6DE6,U+6DFC,U+6E0C,U+6E0E,U+6E11,U+6E16,U+6E1A,U+6E25,U+6E2B,U+6E32,U+6E44,U+6E4E,U+6E53-6E54,U+6E5F,U+6E6B,U+6E6E,U+6E86,U+6E8F,U+6E98,U+6E9F,U+6EA5,U+6EA7,U+6EB1-6EB2,U+6EB4,U+6EB7,U+6EBB,U+6EBD,U+6EC2,U+6ECF,U+6ED5,U+6ED7,U+6EDF-6EE0,U+6EE2,U+6EF9,U+6F09,U+6F15,U+6F24,U+6F29-6F2A,U+6F2D,U+6F2F,U+6F36,U+6F46-6F47,U+6F4B,U+6F62,U+6F72,U+6F74,U+6F78,U+6F7A,U+6F7C,U+6F89,U+6F8C-6F8D,U+6FA7,U+6FB6,U+6FB9,U+6FC2,U+6FC9,U+6FD1,U+6FDE,U+6FE0-6FE1,U+6FEE-6FEF,U+701A-701B,U+7023,U+7035,U+7039,U+704F,U+705E,U+706C,U+7080,U+7085,U+7096,U+709C-709D,U+70AB,U+70B1,U+70B7,U+70BB,U+70C0,U+70CA,U+70E8,U+7110,U+7113,U+7116,U+7118,U+712F,U+7131,U+7145,U+714A,U+715C,U+7166,U+7168,U+7172-7173,U+7178,U+717A,U+7198,U+71A0,U+71A8,U+71B3,U+71B5,U+71B9,U+71D4,U+71E0,U+71E7,U+71F9,U+721D,U+7228,U+7230,U+723F,U+724D,U+7252,U+7256,U+725D,U+7266,U+726E-726F,U+727E-727F,U+7284,U+728B,U+728D,U+728F,U+7292,U+729F,U+7337,U+7352,U+738E,U+7391,U+739F,U+73A2,U+73AE,U+73B3,U+73B7,U+73BA,U+73C0,U+73C2,U+73C8-73C9,U+73CF,U+73D1,U+73D9,U+73DE,U+73E5,U+73E7,U+73E9,U+73F2,U+740A,U+740F,U+741A-741B,U+7425-7426,U+7428,U+742A,U+742C,U+742E,U+7430,U+7441,U+7455,U+7457,U+7459,U+745B-745C,U+746D,U+7477,U+747E,U+7480-7481,U+7487,U+748B,U+748E,U+7490,U+749C,U+749E,U+74A7-74A9,U+74BA,U+74D2,U+74EF,U+74F4,U+74FF,U+750F,U+7511,U+7513,U+752F,U+753E,U+757F,U+77F6,U+77F8,U+7800,U+7809,U+7811,U+7817-7818,U+781C-781D,U+782D,U+793B,U+7940,U+7946,U+7949,U+7953,U+7957,U+795A-795C,U+7960,U+7962,U+7967,U+796F,U+797A,U+7985,U+798A,U+799A,U+79A7,U+79B3,U+7E9F,U+7EA1,U+7EA3,U+7EA5,U+7EA8-7EA9,U+7EAD,U+7EB0,U+7EBE,U+7EC0-7EC2,U+7EC9,U+7ECB-7ECC,U+7ED0,U+7ED4,U+7ED7,U+7EDB,U+7EE0-7EE1,U+7EE8,U+7EEB,U+7EEE-7EEF,U+7EF1-7EF2,U+7EF6,U+7EFA-7EFB,U+7EFE,U+7F01-7F03,U+7F07-7F08,U+7F0B-7F0D,U+7F0F,U+7F11-7F12,U+7F17,U+7F19,U+7F1B-7F1C,U+7F1F,U+7F21-7F27,U+7F2A-7F2D,U+7F2F-7F33,U+7F35,U+7FBC,U+8004,U+8006,U+807F-8080,U+8093,U+809C,U+809F,U+80AB,U+80AD,U+80B1,U+80B4,U+80B7,U+80BC-80BD,U+80C2,U+80C4,U+80CD,U+80D7,U+80D9,U+80DB,U+80DD,U+80E7-80ED,U+80F1-80F2,U+80F4,U+80FC,U+810D-810E,U+8112,U+8118,U+811E,U+812C,U+8132,U+8136,U+8148,U+814C,U+8153,U+8159-815A,U+8160,U+8167,U+8169,U+816D,U+8171,U+8174,U+817C-817D,U+8182,U+8188,U+8191,U+81A3,U+81A6,U+81AA,U+81BB,U+81C1,U+81CA,U+81CC,U+81E7,U+8274,U+8662,U+8930,U+89C7,U+89CA-89CC,U+89CE-89D1,U+89F3,U+8B07,U+8C5A,U+8D32-8D33,U+8D36,U+8D3B,U+8D3D,U+8D40,U+8D45-8D49,U+8D4D,U+8D55,U+8D59,U+8E47,U+8ECE,U+8F6B,U+8F6D,U+8F71-8F73,U+8F75-8F7A,U+8F7C,U+8F7E,U+8F81-8F82,U+8F84,U+8F87,U+8F8B,U+8F8D-8F8F,U+8F98,U+8F9A,U+8FB6,U+8FD3,U+8FD5,U+8FE4-8FE6,U+8FE8-8FE9,U+8FEE,U+8FF3,U+9004-9005,U+900B,U+900D,U+9011,U+9016,U+9021,U+9026,U+902D,U+902F,U+9035-9036,U+9044,U+9050-9052,U+9058,U+905B,U+9062,U+9068,U+9074,U+907D,U+9082-9083,U+9088,U+908B,U+9095,U+95E9,U+95EB,U+95F1,U+95F3,U+95F5-95F6,U+95FC,U+95FE,U+9603-9604,U+9606,U+9608,U+960A-960D,U+960F,U+9612,U+9615-9617,U+9619-961A,U+96B3,U+97EA-97EC,U+987C,U+98D1-98D3,U+98D5,U+98D9-98DA,U+9A75,U+9A77-9A78,U+9A7A,U+9A7D,U+9A7F-9A81,U+9A85,U+9A88,U+9A8A,U+9A90,U+9A92-9A93,U+9A96,U+9A98,U+9A9B-9AA0,U+9AA2-9AA3,U+9AA5,U+9AA7,U+9B3B,U+9F51`}),Object.freeze({family:`Aha Hand`,file:`wenkai-gb-6-a238b41c.woff2`,bytes:307604,unicodeRange:`U+5D47,U+6549,U+659B,U+66A8,U+74DE,U+74E0,U+752C,U+753A,U+7540,U+7548,U+754B,U+754E,U+755B,U+7572,U+7579,U+7583,U+758B,U+7592,U+7594,U+7596,U+759D,U+75A0,U+75A3,U+75AC,U+75B0-75B1,U+75B3-75B4,U+75B8,U+75C2-75C4,U+75CD,U+75D6,U+75E3-75E4,U+75E6-75E8,U+75EB,U+75F1,U+75FC,U+75FF-7600,U+7603,U+7605,U+760A,U+760C,U+7610,U+7615,U+7617-7619,U+761B,U+7620,U+7622,U+7625,U+762D,U+7630,U+7633,U+7635,U+763C,U+763E-7640,U+7643,U+764D,U+7654,U+7656,U+765C,U+765E,U+766B,U+766F,U+7688,U+768E,U+7693,U+7699,U+76A4,U+76B2,U+76B4,U+76CD,U+76E5,U+76F1,U+76F9,U+7704,U+7707-7708,U+770D,U+7719-771A,U+7722,U+7726,U+772D,U+7735,U+7738,U+7743,U+7747,U+7750-7751,U+775A,U+7762,U+7765,U+7768,U+777D,U+777F-7780,U+778C-778D,U+7791,U+779F-77A0,U+77B0,U+77B5,U+77BD,U+77BF,U+77DC,U+77E7,U+77EC,U+781F,U+7823,U+7825-7826,U+7829,U+782C,U+7839-783C,U+7847,U+784C,U+784E,U+7850,U+7856-7857,U+786A,U+786D,U+7887,U+7893,U+789A-789C,U+78A1,U+78A3,U+78A5,U+78B2,U+78B9,U+78C9,U+78D4,U+78D9,U+78EC,U+78F2,U+78F4,U+7905,U+7913,U+791E,U+7924,U+7934,U+79D5,U+79E3,U+79EB,U+79ED,U+7A02-7A03,U+7A06,U+7A14,U+7A1E,U+7A23,U+7A37,U+7A39,U+7A51,U+7A70,U+7A78-7A79,U+7A80,U+7A86,U+7A88,U+7A95,U+7AA0,U+7AA6,U+7AA8,U+7AAC-7AAD,U+7AB3,U+7AE6,U+7AFA,U+7AFD,U+7B03-7B04,U+7B08,U+7B0A,U+7B0F,U+7B15,U+7B19,U+7B1E,U+7B20,U+7B24-7B25,U+7B2A-7B2B,U+7B2E,U+7B31,U+7B33,U+7B38,U+7B3E,U+7B45,U+7B47,U+7B4C,U+7B58,U+7B5A,U+7B5D,U+7B60,U+7B62,U+7B6E,U+7B71-7B72,U+7B75,U+7B7B,U+7B85,U+7B90,U+7B9C-7B9D,U+7BA2,U+7BA6-7BA8,U+7BAA-7BAC,U+7BB4,U+7BB8,U+7BC1,U+7BCC,U+7BD1,U+7BDA,U+7BDD,U+7BE5-7BE6,U+7BEA,U+7BFC,U+7BFE,U+7C0B-7C0C,U+7C0F,U+7C16,U+7C1F,U+7C26,U+7C2A,U+7C38,U+7C40-7C41,U+7C7C,U+7C91,U+7C9C-7C9E,U+7CA2,U+7CB2,U+7CBC-7CBD,U+7CC1,U+7CC5,U+7CC7-7CC8,U+7CCC-7CCD,U+7CD7,U+7CE8,U+7CF8,U+7D77,U+7DA6,U+7DAE,U+7E3B,U+7E47,U+7E9B,U+7F36,U+7F42,U+7F44-7F45,U+7F58,U+7F5F,U+7F61,U+7F68,U+7F71,U+7F74,U+7F79,U+7F7E,U+7F81,U+7F9D,U+7F9F,U+7FA7,U+7FAF-7FB0,U+7FB2,U+7FBF,U+7FCA,U+7FCE,U+7FD5,U+7FE1,U+7FE5-7FE6,U+7FE9,U+7FEE,U+7FF3,U+800B,U+8012,U+8014,U+8016,U+801C,U+8020,U+8022,U+8025-8029,U+8031,U+8035,U+8043,U+8046,U+804D,U+8052,U+8069,U+8071,U+80E5,U+81EC,U+81FE,U+8201-8202,U+8204,U+8210,U+8221-8223,U+8228,U+822B,U+822D,U+822F,U+8233-8234,U+8238,U+823B,U+823E,U+8244,U+8249,U+824B,U+824F,U+825A,U+825F,U+8268,U+826E,U+864D,U+8654,U+866C,U+866E,U+867A-867C,U+867F,U+868B,U+868D,U+8693,U+869D,U+86A3,U+86A7-86AA,U+86AC,U+86AF-86B1,U+86B4-86B6,U+86BA,U+86C4,U+86C9,U+86CE-86D1,U+86D8,U+86DE-86DF,U+86E9,U+86ED,U+86F1-86F4,U+86F8,U+8703,U+8707-870A,U+870D,U+8713,U+871A,U+871E,U+8722-8723,U+8725,U+8729,U+872E,U+8731,U+8734,U+8737,U+873B,U+873E-873F,U+8748,U+874C,U+8753,U+8759,U+8760,U+8763-8765,U+876E,U+8770,U+877B-877E,U+8782-8783,U+8785,U+8788,U+878B,U+8793,U+8797,U+87A8,U+87AB-87AD,U+87AF,U+87B3,U+87B5,U+87BD,U+87C0,U+87C6,U+87CA-87CB,U+87D1-87D3,U+87DB,U+87E0,U+87E5,U+87EA,U+87EE,U+87FE,U+880A,U+8813,U+8816,U+881B,U+8821,U+8832,U+8839,U+883C,U+8844,U+8864,U+8869,U+8872,U+887D-887F,U+8882,U+8885,U+8888,U+88A2,U+88B7,U+88BC,U+88C6,U+88C9,U+88CE,U+88D8,U+88DF,U+88E2-88E3,U+88E5,U+88E8,U+88F0-88F1,U+88FC,U+88FE,U+890A,U+8913,U+8919-891B,U+8921,U+892B,U+8934,U+8936,U+8941,U+895E,U+8966,U+897B,U+8983,U+89D6,U+89DA,U+89DC,U+89DE,U+89E5,U+89EB,U+89EF,U+8A3E,U+8A48,U+8B26,U+8C47,U+8C49,U+8C55,U+8C78,U+8C82,U+8C85,U+8C8A,U+8C94,U+8C98,U+8D67,U+8D6D,U+8D73,U+8D84,U+8D91,U+8D94,U+8DB1,U+8DB5,U+8DB8,U+8DBA,U+8DBC,U+8DBF,U+8DC4,U+8DC6,U+8DCE-8DCF,U+8DD6-8DD7,U+8DDA-8DDB,U+8DDE,U+8DE3-8DE4,U+8DEB-8DEC,U+8DF7-8DF9,U+8DFB,U+8DFD,U+8E05,U+8E09,U+8E14,U+8E1D,U+8E1F,U+8E23,U+8E2C,U+8E2E-8E2F,U+8E31,U+8E35,U+8E39-8E3A,U+8E3D,U+8E40-8E42,U+8E49-8E4A,U+8E51-8E52,U+8E59,U+8E69,U+8E6F-8E70,U+8E74,U+8E76,U+8E7C,U+8E85,U+8E8F-8E90,U+8E94,U+8E9C,U+8E9E,U+914A,U+914E-9150,U+9161-9162,U+9164,U+9169,U+916F-9170,U+9172,U+9174,U+9179,U+917D-917E,U+9185,U+918C-918D,U+9190-9191,U+91A2-91A3,U+91AA,U+91AD-91AF,U+91B4-91B5,U+91BA,U+928E,U+92AE,U+92C8,U+933E,U+936A,U+938F,U+93CA,U+93D6,U+943E,U+946B,U+9485-9487,U+948A-948D,U+948F-9490,U+9494-9495,U+9497,U+949A-949C,U+94A3-94A4,U+94AA-94AD,U+94AF-94B0,U+94B2,U+94B4,U+94B6-94BA,U+94BC-94BD,U+94BF,U+94C4,U+94C8-94CE,U+94D0-94D2,U+94D5-94D9,U+94DB,U+94DE-94E0,U+94E2,U+94E4-94E5,U+94E7-94EB,U+94EE-94EF,U+94F3-94F5,U+94F7,U+94F9,U+94FC-94FD,U+94FF,U+9502-9503,U+9506-9507,U+9509-950A,U+950D-950F,U+9512-9516,U+9518,U+951B,U+951D-951F,U+9522,U+9529-952C,U+9531-9532,U+9534-9538,U+953A,U+953C,U+953E-953F,U+9542,U+9544-9546,U+9549,U+954C,U+954E-954F,U+9552-9554,U+9556-9559,U+955B,U+955D-955F,U+9561-9562,U+9564-956C,U+956F,U+9571-9573,U+96B9,U+96BC-96BD,U+96C9,U+96CE,U+96D2,U+96E0,U+96E9,U+96EF,U+96F3,U+9701,U+9706,U+9708,U+970E-970F,U+972A,U+972D,U+9730,U+973E,U+9753,U+977C,U+9785,U+9791-9792,U+9794,U+97A3,U+97AB,U+97AF,U+97B2,U+97B4,U+9878,U+9880,U+9883,U+9889,U+988C-988D,U+988F,U+9894,U+989A-989B,U+989E-989F,U+98A1-98A2,U+98A5-98A6,U+98E8,U+990D,U+992E,U+9954-9955,U+99A5,U+9AB0-9AB1,U+9AB6-9AB7,U+9ABA,U+9ABC,U+9AC0-9AC2,U+9AC5,U+9ACB-9ACC,U+9AD1,U+9ADF,U+9AE1,U+9AE6,U+9AEB,U+9AED,U+9AEF,U+9AF9,U+9AFB,U+9B08,U+9B0F,U+9B13,U+9B1F,U+9B23,U+9B43,U+9B45,U+9B47-9B49,U+9B4D,U+9B51,U+9C7F,U+9C82,U+9C85-9C88,U+9C8B,U+9C8E,U+9C90-9C92,U+9C94-9C95,U+9C9A-9C9B,U+9C9E-9CA3,U+9CA5-9CA9,U+9CAB,U+9CAD-9CAE,U+9CB0-9CB7,U+9CBA-9CBD,U+9CC4-9CC7,U+9CCA-9CD0,U+9CD3-9CD5,U+9CD7-9CD9,U+9CDC-9CDD,U+9CDF,U+9CE2,U+9E20,U+9E22,U+9E28-9E2C,U+9E31-9E32,U+9E36-9E3A,U+9E3E,U+9E41-9E42,U+9E44,U+9E46-9E49,U+9E4B-9E4C,U+9E4E,U+9E51,U+9E55,U+9E57-9E58,U+9E5A-9E5C,U+9E5E,U+9E63,U+9E66-9E6D,U+9E71,U+9E73,U+9E7E,U+9E82,U+9E87-9E88,U+9E8B,U+9E92,U+9E9D,U+9E9F,U+9EB4,U+9EB8,U+9EBD-9EBE,U+9ECF,U+9EDB-9EDD,U+9EDF-9EE0,U+9EE2,U+9EE5,U+9EE7,U+9EE9-9EEA,U+9EEF,U+9EF9,U+9EFB-9EFC,U+9EFE,U+9F0B,U+9F0D,U+9F22,U+9F2C,U+9F2F,U+9F37,U+9F39,U+9F3D-9F3E,U+9F44,U+9F80,U+9F83,U+9F85-9F8A,U+9F8C,U+9F9B`})]),Np=`'Aha Hand Latin','Aha Hand','Segoe Print','Ink Free','Bradley Hand','Chalkboard SE','Noteworthy','Comic Sans MS','LXGW WenKai','Kaiti SC','STKaiti','KaiTi','楷体',cursive`,Pp=Mp.map(e=>`@font-face{font-family:'${e.family}';font-style:normal;font-weight:400;font-display:swap;src:url('api/aha-tutor/font?f=${e.file}') format('woff2');unicode-range:${e.unicodeRange}}`).join(`
279
- `),$=e=>`calc(${e}*var(--aha-px))`,Fp=`${Pp}
279
+ endstream`)});let d=4+e.length*3,f=s;c(`xref\n0 ${d}\n0000000000 65535 f \n`);for(let e=1;e<d;e+=1)c(`${String(o[e]).padStart(10,`0`)} 00000 n \n`);c(`trailer\n<< /Size ${d} /Root 1 0 R /Info 3 0 R >>\nstartxref\n${f}\n%%EOF\n`);let p=new Uint8Array(s),m=0;for(let e of a)p.set(e,m),m+=e.length;return p}async function kp(e){let t=new Blob([e]).stream().pipeThrough(new CompressionStream(`deflate`));return new Uint8Array(await new Response(t).arrayBuffer())}async function Ap(e){let{width:t,height:n}=e;if(typeof CompressionStream==`function`){let{data:r}=e.getContext(`2d`).getImageData(0,0,t,n),i=new Uint8Array(t*n*3);for(let e=0,t=0;e<r.length;e+=4,t+=3)i[t]=r[e],i[t+1]=r[e+1],i[t+2]=r[e+2];return{width:t,height:n,filter:`FlateDecode`,data:await kp(i)}}let r=await new Promise(t=>{e.toBlob(t,`image/jpeg`,.92)});if(!r)throw Error(`image encoding failed`);return{width:t,height:n,filter:`DCTDecode`,data:new Uint8Array(await r.arrayBuffer())}}let jp=null;function Mp(e){if(!jp){jp=new Uint32Array(256);for(let e=0;e<256;e+=1){let t=e;for(let e=0;e<8;e+=1)t=t&1?3988292384^t>>>1:t>>>1;jp[e]=t>>>0}}let t=4294967295;for(let n of e)t=jp[(t^n)&255]^t>>>8;return(t^4294967295)>>>0}function Np(e){return{time:e.getHours()<<11|e.getMinutes()<<5|Math.floor(e.getSeconds()/2),day:Math.max(0,e.getFullYear()-1980)<<9|e.getMonth()+1<<5|e.getDate()}}function Pp(e,t=new Date){let n=new TextEncoder,{time:r,day:i}=Np(t),a=[],o=[],s=0;for(let t of e){let e=n.encode(t.name),c=Mp(t.data),l=t.data.length,u=new DataView(new ArrayBuffer(30));u.setUint32(0,67324752,!0),u.setUint16(4,20,!0),u.setUint16(6,2048,!0),u.setUint16(8,0,!0),u.setUint16(10,r,!0),u.setUint16(12,i,!0),u.setUint32(14,c,!0),u.setUint32(18,l,!0),u.setUint32(22,l,!0),u.setUint16(26,e.length,!0),u.setUint16(28,0,!0),a.push(new Uint8Array(u.buffer),e,t.data);let d=new DataView(new ArrayBuffer(46));d.setUint32(0,33639248,!0),d.setUint16(4,20,!0),d.setUint16(6,20,!0),d.setUint16(8,2048,!0),d.setUint16(10,0,!0),d.setUint16(12,r,!0),d.setUint16(14,i,!0),d.setUint32(16,c,!0),d.setUint32(20,l,!0),d.setUint32(24,l,!0),d.setUint16(28,e.length,!0),d.setUint32(42,s,!0),o.push(new Uint8Array(d.buffer),e),s+=30+e.length+l}let c=o.reduce((e,t)=>e+t.length,0),l=new DataView(new ArrayBuffer(22));l.setUint32(0,101010256,!0),l.setUint16(8,e.length,!0),l.setUint16(10,e.length,!0),l.setUint32(12,c,!0),l.setUint32(16,s,!0);let u=[...a,...o,new Uint8Array(l.buffer)],d=new Uint8Array(u.reduce((e,t)=>e+t.length,0)),f=0;for(let e of u)d.set(e,f),f+=e.length;return d}function Fp(e){return new Promise((t,n)=>{e.toBlob(e=>e?t(e):n(Error(`image encoding failed`)),`image/png`)})}function Ip({steps:e,title:t,kind:n=`ghost`}){let{t:a,settings:s,toast:c}=v(),l=w(),[u,d]=(0,r.useState)(!1),[f,p]=(0,r.useState)(null),_=(0,r.useRef)(null),y=(0,r.useRef)(null),b=s.boardTheme===`dark`||s.boardTheme!==`light`&&l?`dark`:`light`,x=s.boardFont===`standard`?`standard`:`hand`,S=m(t);function C(n){if(d(!1),!(!e?.length||f)){if(n===`md`){h(`${S}.md`,yt({title:t,steps:e},{missing:a(`figureMissing`)}),`text/markdown`);return}p({id:Date.now(),format:n,done:0,total:0})}}function T(){y.current&&(y.current.cancelled=!0),y.current=null,p(null)}async function E(e,n){let r=_.current;if(!r)throw Error(`pages missing`);await vp(r),yp(r);let i=[...r.querySelectorAll(`[data-sheet]`)];p(e=>e&&{...e,total:i.length});let o=[];for(let[t,r]of i.entries()){if(n.cancelled)return;let i=await xp(bp(r,{scale:2})),a=wp(i,2);o.push(e===`pdf`?{width:i.width,height:i.height,image:await Ap(a)}:await Fp(a)),p(e=>e&&{...e,done:t+1})}if(!(n.cancelled||!o.length))if(e===`pdf`)g(`${S}.pdf`,new Blob([Op(o,{title:t,creator:`${a(`appName`)} · ${a(`appTagline`)}`})],{type:`application/pdf`}));else if(o.length===1)g(`${S}.png`,o[0]);else{let e=await Promise.all(o.map(async(e,t)=>({name:`${S}-${String(t+1).padStart(2,`0`)}.png`,data:new Uint8Array(await e.arrayBuffer())})));g(`${S}.zip`,new Blob([Pp(e)],{type:`application/zip`}))}}return(0,r.useEffect)(()=>{if(!f)return;let e={cancelled:!1};return y.current=e,E(f.format,e).catch(()=>{e.cancelled||c(a(`exportFailed`))}).finally(()=>{y.current===e&&(y.current=null,p(null))}),()=>{e.cancelled=!0}},[f?.id]),(0,i.jsxs)(`span`,{className:`aha-menuAnchor`,children:[f?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Hu,{label:a(`exportingBoard`,{done:f.done,total:f.total||`…`})}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":n??void 0,"data-size":`sm`,onClick:T,children:a(`cancel`)})]}):(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":n??void 0,"data-size":`sm`,disabled:!e?.length,"aria-haspopup":`menu`,"aria-expanded":u,onClick:()=>d(e=>!e),children:[a(`exportBoard`),` ▾`]}),u?(0,i.jsxs)(`div`,{className:`aha-card aha-menu`,role:`menu`,onMouseLeave:()=>d(!1),children:[(0,i.jsx)(`button`,{type:`button`,role:`menuitem`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>C(`pdf`),children:a(`exportPdf`)}),(0,i.jsx)(`button`,{type:`button`,role:`menuitem`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>C(`png`),children:a(`exportPng`)}),(0,i.jsx)(`button`,{type:`button`,role:`menuitem`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>C(`md`),children:a(`exportMarkdown`)})]}):null,f?(0,o.createPortal)((0,i.jsx)(`div`,{ref:_,className:`aha-exportPages`,"aria-hidden":`true`,children:(0,i.jsx)(Mu,{steps:e,title:t,theme:b,font:x,footer:{left:t,right:`${a(`appName`)} · ${a(`appTagline`)}`},animationLabel:a(`animationStill`),fixedLabel:a(`fixed`),figureLabels:{missing:a(`figureMissing`),redrawing:a(`figureRedrawing`),animation:a(`animationFailed`)}})}),document.body):null]})}let Lp=Object.freeze([Object.freeze({family:`Aha Hand Latin`,file:`caveat-latin-d0b7b931.woff2`,bytes:48836,unicodeRange:`U+0,U+D,U+20-7E,U+A0-FF,U+131,U+152-153,U+20AC,U+2122`}),Object.freeze({family:`Aha Hand`,file:`wenkai-gb-0-88f1a875.woff2`,bytes:93632,unicodeRange:`U+20-7E,U+A0-AC,U+AE-FF,U+101,U+113,U+11B,U+12B,U+14D,U+16B,U+1CE,U+1D0,U+1D2,U+1D4,U+1D6,U+1D8,U+1DA,U+1DC,U+2C7,U+2C9,U+391-3A1,U+3A3-3A9,U+3B1-3C1,U+3C3-3C9,U+401,U+410-44F,U+451,U+2010-2016,U+2018-2022,U+2025-2027,U+2030-2037,U+2039-203F,U+2042,U+2044,U+2047-2049,U+2051-2052,U+205A,U+205D,U+2100-2101,U+2103,U+2105-2106,U+2109-210A,U+210E-210F,U+2113,U+2116-2117,U+211E,U+2120-2122,U+2126-2127,U+2129-212B,U+212E,U+2132,U+2135,U+213B,U+2141-2144,U+214B,U+214D-214E,U+2150-218B,U+2190-2199,U+21B6-21B9,U+21C4-21C6,U+21CB-21D0,U+21D2,U+21D4,U+21E6-21EA,U+21F5,U+2200-220D,U+220F,U+2211-2213,U+2215-2216,U+2219-2220,U+2223-2230,U+2234-2237,U+223C-223E,U+2242-2243,U+2245,U+2248,U+224B-224C,U+2251-2253,U+225C,U+2260-2262,U+2264-226B,U+226E-226F,U+2272-2273,U+2276-2277,U+2282-228B,U+2295-2299,U+229C-229E,U+22A0,U+22A2-22A5,U+22BF-22C5,U+22DA-22DB,U+22EE-22F1,U+2312,U+2460-249F,U+2500-25AB,U+25B1-25B3,U+25B6-25B7,U+25BC-25BD,U+25C0-25C1,U+25C6-25C7,U+25C9-25CC,U+25CE-25D3,U+25E2-25E6,U+25EF,U+25FB-25FC,U+2605-2606,U+2640,U+2642,U+3000-302D,U+3030,U+3033-303F,U+3041-3093,U+30A1-30F6,U+30FB,U+3105-3129,U+3220-3229,U+FF01-FF5E,U+FFE0-FFE1,U+FFE3,U+FFE5`}),Object.freeze({family:`Aha Hand`,file:`wenkai-gb-1-78a38e72.woff2`,bytes:315108,unicodeRange:`U+4E01,U+4E0D,U+4E11,U+4E19,U+4E1B-4E1C,U+4E22,U+4E2A,U+4E30,U+4E32,U+4E39,U+4E4E-4E4F,U+4E56,U+4E58,U+4E8C,U+4E92,U+4EA4-4EA5,U+4EA7-4EA8,U+4EC7,U+4ECE,U+4ED3,U+4ED8,U+4EE3,U+4EF6-4EF7,U+4EFD,U+4EFF,U+4F0E-4F10,U+4F19-4F1A,U+4F20,U+4F2F-4F30,U+4F34,U+4F43,U+4F46,U+4F4E,U+4F55,U+4F5B,U+4F70,U+4F73,U+4F88,U+4F97,U+4F9B,U+4FA7,U+4FAF,U+4FBF,U+4FC3-4FC4,U+4FD8,U+4FDD,U+4FED,U+4FEF,U+4FFA,U+500D,U+5012,U+5019,U+5021,U+5047,U+5065,U+507F,U+5085,U+508D,U+50A3,U+50A8,U+50AC,U+50B2,U+50F5,U+513F,U+5145,U+5149,U+5151,U+515A,U+515C,U+516B-516C,U+5171,U+5173,U+5175,U+5178,U+517C,U+5180,U+5188,U+518C,U+51A0,U+51AC,U+51AF-51B0,U+51B2,U+51BB,U+51CB,U+51CF,U+51D1,U+51E0-51E1,U+51E4,U+51F0,U+51F3,U+51F9-51FB,U+51FD,U+5200-5201,U+5206,U+5212,U+521A-521B,U+521D,U+522B,U+522E,U+5230,U+523A,U+523D,U+5241-5242,U+5250-5251,U+5265,U+526A,U+526F,U+5272,U+529E-52A0,U+52A8,U+52C3,U+52FE,U+5305-5306,U+5316-5317,U+5319,U+5320,U+532A,U+5349-534A,U+534E,U+5351,U+5355,U+535A,U+535C,U+535E,U+5373,U+5382,U+5384,U+5395,U+539A,U+53A8,U+53C2,U+53C9-53CA,U+53CD,U+53D1,U+53D8,U+53E0,U+53E4,U+53ED-53EE,U+53F7,U+53FC,U+5403-5404,U+5408-540A,U+540E,U+5420,U+5426-5429,U+542B,U+5435,U+5439,U+543C,U+5446,U+5448,U+544A,U+5475,U+547C,U+548C,U+5490,U+5495,U+54C0,U+54C4,U+54C6,U+54C8,U+54CE,U+54D7,U+54E5,U+54FA,U+54FC,U+5507,U+5509,U+5524,U+552C,U+5531,U+554A,U+5561,U+5589-558A,U+5598,U+559D,U+5609,U+560E,U+5632,U+563F,U+5676,U+568E,U+56DE,U+56E4,U+56F1,U+56FA,U+56FD,U+572D,U+5730,U+573A,U+573E,U+574A,U+574F,U+575A,U+575D,U+575F,U+5782,U+579B,U+57A2,U+57AB,U+57C2-57C3,U+57CE,U+57E0,U+57FA,U+5806,U+5815,U+5821,U+5824,U+5835,U+58A9,U+58C1,U+58D5,U+58F6,U+5904,U+5907,U+590D,U+591A,U+591F,U+5927,U+592B,U+592F,U+5939-593A,U+5949,U+594B,U+5954,U+5956,U+5960,U+5965,U+5978,U+597D,U+5987,U+5992-5993,U+59A8,U+59D1,U+59DC,U+59EC,U+5A25,U+5A5A,U+5AC1,U+5AC9,U+5AE1,U+5B58,U+5B63-5B64,U+5B69,U+5B75,U+5B89,U+5B8F,U+5B98,U+5B9A,U+5B9D,U+5BA0,U+5BA6,U+5BAB,U+5BB3,U+5BB6,U+5BBE,U+5BC2,U+5BC4,U+5BCC,U+5BD2,U+5BDF,U+5BE1,U+5BF8-5BF9,U+5BFC,U+5C01,U+5C06,U+5C14,U+5C16,U+5C18,U+5C1D,U+5C3A,U+5C42,U+5C94,U+5C97,U+5C9B,U+5CB8,U+5CE8,U+5CF0,U+5D07,U+5D14,U+5D29,U+5DDD,U+5DE2,U+5DE5,U+5DE9,U+5DEE,U+5DF1,U+5DF4,U+5E01,U+5E03,U+5E06,U+5E1B,U+5E1D,U+5E26,U+5E2E,U+5E38,U+5E45,U+5E4C,U+5E62,U+5E72,U+5E76,U+5E7B,U+5E7F,U+5E87,U+5E8A,U+5E95,U+5E97,U+5E9A,U+5E9C,U+5E9F,U+5EA6,U+5EFA,U+5F0A,U+5F13,U+5F17-5F18,U+5F1B,U+5F1F,U+5F27,U+5F39,U+5F52-5F53,U+5F69-5F6A,U+5F6C,U+5F7B-5F7C,U+5F85,U+5F88,U+5F8A,U+5F97,U+5FB7,U+5FBD,U+5FC5,U+5FCC,U+5FF1,U+5FFD,U+5FFF-6000,U+6016,U+6020,U+6025,U+602A,U+604D,U+6052,U+6062,U+6068-6069,U+606B,U+606D,U+6076,U+608D,U+6094,U+60A3,U+60B2,U+60B8,U+60BC,U+60D1,U+60E0,U+60E6,U+60E8-60E9,U+60EB,U+60ED-60F0,U+60F6,U+6101,U+611F,U+6124,U+6148,U+614C,U+6167,U+618B,U+61A8,U+61BE,U+61C2,U+61CA,U+6208,U+6210,U+6216,U+6233-6234,U+6237,U+623F,U+6241,U+624D,U+6252-6253,U+626E-626F,U+6273,U+6276,U+627C,U+627F-6280,U+6284,U+628A,U+6296,U+629A,U+62A4-62A5,U+62B1,U+62B5,U+62BD,U+62C2,U+62C5-62C6,U+62CC,U+62D0,U+62D4,U+62DC,U+62E3,U+62E8,U+62F1,U+6301-6302,U+6309,U+6321,U+6324-6325,U+6328,U+632B,U+634C-634D,U+6355,U+6361-6363,U+6376,U+6382,U+6387,U+6389,U+63A3,U+63AA,U+63B8,U+63BA,U+63D2,U+63E3,U+6400-6401,U+640F-6410,U+6413,U+641E,U+642C-642D,U+643D,U+6446,U+6448,U+6467,U+6491,U+64A4,U+64AD-64AE,U+64BC,U+64CD,U+64E6,U+6539,U+653B,U+653E,U+6545,U+654C,U+6556,U+655D-655E,U+6562,U+6566,U+6577,U+658C,U+6591,U+6597,U+65A5,U+65A7,U+65AD,U+65B9,U+65E2,U+65E6,U+65F1,U+6602,U+660C,U+660F,U+6625,U+6643,U+6666,U+6668,U+6697,U+66B4,U+66F4,U+66F9,U+670D,U+671D,U+672C,U+6735,U+673A,U+6746,U+6750-6751,U+675C,U+6760,U+676D,U+676F,U+677F,U+6781,U+6784,U+679C,U+67AB,U+67B6-67B7,U+67C4,U+67CF,U+67D1,U+67DC,U+67E5,U+67EC,U+67F4,U+6807,U+680B,U+6838-6839,U+683C,U+6842,U+6848,U+6853,U+6863,U+6868,U+6886,U+6897,U+68C0,U+68CD,U+68D2,U+68D8,U+68FA,U+6912,U+693D,U+693F,U+695A,U+6982,U+699C,U+69D0,U+69DB,U+69FD,U+6A0A,U+6A2A,U+6A59,U+6A71,U+6B21-6B22,U+6B4C,U+6B64-6B65,U+6B79,U+6B7C,U+6B86,U+6B8B,U+6BB5,U+6BBF,U+6BC1,U+6BD2,U+6BD4-6BD6,U+6BD9,U+6BEB,U+6C1B,U+6C1F,U+6C26,U+6C28,U+6C2E,U+6C47,U+6C49,U+6C57,U+6C5E-6C60,U+6C72,U+6C7E,U+6C89,U+6C9F,U+6CA7,U+6CAA,U+6CB3,U+6CB8,U+6CBD,U+6CCA,U+6CD5,U+6CDB,U+6CE2,U+6CF5,U+6D1E,U+6D2A,U+6D31,U+6D3B,U+6D46-6D47,U+6D4B,U+6D4E,U+6D51,U+6D69,U+6D6E,U+6D77,U+6DA3-6DA4,U+6DA7,U+6DAA,U+6DB5,U+6DB8,U+6DC0,U+6DE1,U+6DEC,U+6DEE,U+6DF3,U+6DF7,U+6E10,U+6E21,U+6E24,U+6E2F,U+6E56,U+6E85,U+6E89,U+6EC1,U+6EC7,U+6ED1,U+6EDA,U+6EE8,U+6EF4,U+6F6E,U+6F84,U+6F88,U+6FB3,U+6FC0,U+6FD2,U+704C,U+706B,U+706F-7070,U+707F,U+708A,U+7092,U+70B3,U+70B9,U+70BD,U+70D8,U+70E6,U+70E9,U+70FD,U+710A,U+7115,U+7119-711A,U+7126,U+714C,U+714E,U+71AC,U+7206,U+7231,U+7236,U+7238-7239,U+7248,U+728A,U+72AF,U+72C4,U+72C8,U+72D0,U+72D7,U+72E0,U+72EC,U+7316,U+731C,U+7334,U+733E,U+73AF,U+73BB,U+73D0,U+73ED,U+745A,U+7470,U+74DC,U+74E3,U+74F7,U+7518,U+752B,U+752D,U+7532,U+7535,U+7538,U+753B,U+7545,U+756A,U+7574,U+7578,U+7586,U+7599,U+75A4,U+75AE-75AF,U+75B5,U+75BE,U+75C5,U+75D5,U+75D8,U+75EA,U+75F4,U+75F9,U+7601,U+7629-762A,U+764C,U+7678,U+767B,U+767D-767E,U+7684,U+7687,U+768B,U+7691,U+76CE,U+76D1-76D2,U+76D6-76D7,U+76EF,U+76FE,U+7763,U+776C,U+7779,U+7785,U+77AA,U+77D7,U+77ED-77EE,U+77FE,U+7840,U+7845,U+7877,U+7889,U+788D,U+7891,U+7898,U+789F,U+78A7,U+78B1,U+78B4,U+78C1,U+78C5,U+78CB,U+78FA,U+7901,U+796D,U+7977-7978,U+798F,U+79BE,U+79C6,U+79C9,U+79E4,U+79EF-79F0,U+79FD,U+7A0B,U+7A17,U+7A20,U+7A3B-7A3D,U+7A3F,U+7A7F,U+7A97,U+7A9C,U+7AEF,U+7AFF,U+7B06,U+7B14,U+7B1B,U+7B26,U+7B28,U+7B2C,U+7B3A,U+7B49,U+7B4F,U+7B54,U+7B56,U+7B79,U+7B80,U+7B8D,U+7B94-7B95,U+7BA1,U+7BAD,U+7BD9,U+7BE1,U+7C07,U+7C27,U+7C3F,U+7C4D,U+7C89,U+7C97,U+7CAA,U+7CB9,U+7CCA,U+7CD5,U+7CD9,U+7E41,U+7EA2,U+7EA7,U+7EAA,U+7EAF,U+7EB2,U+7EB7,U+7EBA,U+7ECA,U+7ED1,U+7ED8-7ED9,U+7EE7,U+7EE9,U+7EF0,U+7EF7-7EF8,U+7F04,U+7F09,U+7F0E,U+7F13-7F14,U+7F16,U+7F1A,U+7F1D,U+7F20,U+7F38,U+7F50,U+7F55,U+7F5A,U+7F62,U+7F94,U+7FB9,U+7FC5,U+7FDF-7FE0,U+7FF0-7FF1,U+7FFB,U+800C,U+8015,U+8017,U+8019,U+8033,U+803B,U+803D,U+803F,U+806A,U+808C,U+809A-809B,U+809D,U+80A0-80A1,U+80A4-80A5,U+80A9-80AA,U+80AE,U+80BA,U+80C6,U+80CC,U+80DE,U+80E1,U+80F3,U+80F6,U+80FA,U+8106,U+810A,U+8116,U+812F,U+8150-8151,U+8179,U+8180,U+818A,U+818F,U+8198,U+81C2,U+81E3,U+81ED,U+822A,U+822C,U+8230-8231,U+8235-8236,U+8239,U+8270,U+827E,U+82AC-82AD,U+82B1,U+82B3,U+82CD,U+82DE-82DF,U+82EF,U+8303,U+8327-8328,U+832C,U+8336,U+8349,U+8350,U+8352,U+835A,U+8361,U+8364,U+8377,U+83B7,U+83C7,U+83CF,U+83DC,U+83E0,U+83F2,U+845B,U+8463,U+846B,U+8471,U+8482,U+848B,U+84D6,U+84DF,U+8521,U+853C-853D,U+8549,U+8584,U+85CF,U+85E9,U+864E,U+866B,U+8679,U+868C,U+8695,U+86CA-86CB,U+86D4,U+86E4,U+86FE,U+8702,U+8749,U+8757,U+8774,U+8776,U+8822,U+8861,U+8865,U+8868,U+886C,U+8884,U+888B,U+88AB,U+88B1,U+88C1,U+88F9,U+8902,U+8910,U+8912,U+8986,U+89C1-89C2,U+89C4,U+89E6,U+8BA1-8BA3,U+8BA5,U+8BB0,U+8BB2-8BB3,U+8BB9,U+8BBD,U+8BBF,U+8BCD,U+8BDA,U+8BDD-8BDE,U+8BE1,U+8BE5,U+8BE7,U+8BF2,U+8BFB,U+8BFD,U+8C03,U+8C0D-8C0E,U+8C17,U+8C24,U+8C37,U+8C41,U+8C46,U+8C62,U+8C6A,U+8C79-8C7A,U+8C89,U+8D1D,U+8D1F,U+8D21-8D22,U+8D25,U+8D27,U+8D29,U+8D2C-8D2D,U+8D2F-8D31,U+8D35,U+8D37,U+8D39-8D3A,U+8D3E-8D3F,U+8D4B-8D4C,U+8D50,U+8D63-8D64,U+8D6B,U+8D74,U+8D76,U+8D81,U+8D85,U+8DCB-8DCC,U+8DDF,U+8DEA,U+8DF5,U+8DFA,U+8E0C,U+8E29,U+8E48,U+8E66,U+8E6C-8E6D,U+8E72,U+8E7F,U+8E87,U+8EAC,U+8EB2,U+8F66,U+8F68,U+8F70,U+8F85,U+8F88-8F8A,U+8F90-8F91,U+8F9C,U+8F9E-8F9F,U+8FA8-8FA9,U+8FAB,U+8FB0,U+8FB9,U+8FBE,U+8FC7,U+8FD4,U+8FD8,U+8FDF,U+8FEA,U+8FED,U+8FF8-8FF9,U+9012,U+9017,U+901B,U+901E,U+9022,U+902E,U+903C,U+9041,U+904D,U+904F,U+9053,U+907F,U+9093,U+90A6,U+90AF,U+90CA,U+90DD,U+90E8,U+90ED,U+90F4,U+90F8,U+90FD,U+9102,U+9119,U+915A,U+9163,U+916C,U+9171,U+9187,U+918B,U+91C7,U+91DC,U+9274,U+9489,U+9492-9493,U+9499,U+949D-949E,U+94A1-94A2,U+94A9,U+94B5,U+94BE,U+94C2,U+94EC,U+94F2,U+9504-9505,U+950B,U+9519,U+9524,U+952D-952E,U+953B,U+9540,U+9550-9551,U+957F,U+95ED,U+95EF,U+95F4,U+95FA,U+9600-9602,U+9610,U+961C,U+961F,U+9632,U+963F,U+9644-9645,U+9648,U+964D,U+965B,U+9661,U+9664,U+9694,U+9698,U+96C6-96C7,U+96CC,U+96CF,U+96D5,U+96F9,U+970D,U+9738,U+975B,U+975E,U+9769,U+9776,U+978D,U+97AD,U+97E9,U+9876,U+987E-987F,U+9881,U+988A,U+989D,U+98A0,U+98A4,U+98CE,U+98DE,U+9910,U+9965,U+996D,U+996F,U+9971,U+9975,U+997C,U+997F,U+9986,U+998B,U+9A70,U+9A73,U+9A7E,U+9A84,U+9A87,U+9A8B,U+9AA8,U+9AB8,U+9AD8,U+9B3C,U+9B42,U+9C8D,U+9CD6,U+9E21,U+9E3D,U+9E3F,U+9E45,U+9E64,U+9EC4,U+9ED1,U+9F0E,U+9F13,U+9F3B,U+9F7F,U+9F9A,U+9F9F`}),Object.freeze({family:`Aha Hand`,file:`wenkai-gb-2-2a649892.woff2`,bytes:317648,unicodeRange:`U+4E03,U+4E09-4E0A,U+4E14,U+4E16,U+4E18,U+4E24,U+4E27,U+4E34,U+4E3D-4E3E,U+4E43,U+4E45,U+4E48,U+4E50,U+4E52-4E54,U+4E5D-4E5E,U+4E70-4E71,U+4E73,U+4E7E,U+4E86,U+4E8B,U+4E8F,U+4E95,U+4EA2,U+4EA9,U+4EAC,U+4EAE,U+4EB2,U+4EBA,U+4EC0-4EC1,U+4EC5-4EC6,U+4ECA-4ECB,U+4ECD,U+4ED1,U+4ED5,U+4EDF,U+4EE4,U+4EEC,U+4EFB,U+4F01,U+4F1E,U+4F24,U+4F26,U+4F36,U+4F38,U+4F60,U+4F69,U+4F6C,U+4F7F,U+4F8B,U+4F8D,U+4FA3,U+4FA5,U+4FA8-4FA9,U+4FB5,U+4FCA,U+4FCF-4FD0,U+4FE9,U+4FF1,U+5014,U+501F,U+5026,U+502A,U+503E,U+504F,U+5076,U+5080,U+5088,U+50BB,U+50DA,U+50E7,U+50FB,U+5112,U+5121,U+514B,U+514D,U+5162,U+5165,U+5168,U+516D,U+5170,U+5176-5177,U+5185,U+5189,U+5192,U+5195,U+5197,U+519B-519C,U+51B3,U+51B5,U+51B7,U+51C0,U+51C4,U+51C9,U+51CC,U+51DB,U+51DD,U+51ED,U+51EF,U+5203,U+5207,U+520A,U+5217-5218,U+5220,U+5224,U+5228-5229,U+5238-5239,U+523B,U+524D,U+5256,U+5267,U+5269,U+527F,U+5288,U+529B,U+529D,U+52A3,U+52AA-52AB,U+52B1-52B3,U+52BF,U+52C9,U+52D2,U+52D8,U+52DF,U+52E4,U+52FA,U+5321,U+5339-533A,U+533F,U+5341,U+5343,U+5347,U+5356-5357,U+5361-5362,U+5364,U+536F,U+5374-5375,U+5377,U+537F,U+5386,U+5389,U+5398,U+53A9,U+53BB,U+53C1,U+53D6-53D7,U+53DB,U+53E3,U+53E5-53E6,U+53EB,U+53EF,U+53F2,U+540D,U+540F,U+5415,U+5417,U+541B,U+541D,U+542D,U+542F,U+5450,U+5455,U+545B,U+5462,U+5478,U+547B,U+547D,U+5480,U+5486,U+548E,U+5496,U+5499,U+54AF,U+54B3,U+54C1,U+54E6,U+54E8-54EA,U+54ED,U+552E,U+5543,U+5546,U+5564-5566,U+556A,U+556E,U+5580,U+5584,U+5587,U+55B7,U+55D3,U+55DC,U+561B,U+5668,U+566C,U+56B7,U+56BC,U+56CA,U+56DA,U+56F0,U+5703,U+5708,U+5723,U+5747,U+574E,U+5751,U+5757,U+5761,U+5764,U+576A,U+576F,U+5777,U+5783-5784,U+5792,U+57A6,U+57AE,U+57CB,U+57D4,U+57F9,U+5811,U+582A,U+585E,U+5883,U+5892-5893,U+5899,U+58A8,U+58E4,U+58EB-58EC,U+58F0,U+58F3,U+5931,U+5938,U+5947-5948,U+594E,U+5951,U+5962,U+5973-5974,U+5976,U+5982,U+5988,U+598A,U+5999,U+59AE,U+59B9,U+59BB,U+59C6,U+59CB,U+59D0,U+59E5,U+5A04,U+5A07,U+5A18,U+5A1C,U+5A1F-5A20,U+5A29,U+5A36,U+5A46,U+5A6A,U+5A76,U+5A92,U+5A9A,U+5AC2,U+5AE9,U+5B54,U+5B5F,U+5B6A,U+5B7A,U+5B7D,U+5B81,U+5B88,U+5B9E,U+5BA1-5BA2,U+5BA4,U+5BB9,U+5BBD,U+5BC6-5BC7,U+5BD0,U+5BDD-5BDE,U+5BE5,U+5BFF,U+5C04,U+5C11,U+5C1A,U+5C31,U+5C38,U+5C3C-5C3D,U+5C3F-5C41,U+5C45,U+5C48,U+5C4A,U+5C4E-5C4F,U+5C61,U+5C65,U+5C71,U+5C82,U+5CAD,U+5CBF,U+5CE6,U+5CED,U+5CFB,U+5D0E,U+5D4C,U+5DE7-5DE8,U+5DFE,U+5E02,U+5E08,U+5E15,U+5E18,U+5E3D,U+5E42,U+5E55,U+5E73-5E74,U+5E86,U+5E90,U+5E93,U+5E99,U+5E9E,U+5EB7,U+5EC9-5ECA,U+5ED3,U+5ED6,U+5F00,U+5F03-5F04,U+5F0F,U+5F25,U+5F31,U+5F3A,U+5F55,U+5F6D,U+5F84,U+5F8B,U+5F98,U+5FCD,U+5FD9,U+5FEB,U+5FF5,U+6012,U+6015,U+601C,U+602F,U+6043,U+604B,U+6050,U+6070,U+6073,U+607C,U+6084,U+60A8,U+60AF,U+60C5,U+60CA,U+60E7,U+60F9,U+6127,U+614E,U+6151,U+6155,U+6162,U+6168,U+6177,U+61D2,U+61E6,U+620E,U+6212,U+621A,U+622A,U+622E,U+6247,U+624B,U+6251,U+6254,U+625B,U+6263,U+6266,U+6269,U+626B,U+626D,U+6270,U+6279,U+6289,U+6297,U+629B,U+62A0-62A2,U+62A8,U+62AB,U+62B9,U+62BF,U+62C7-62C9,U+62CD-62CE,U+62D2,U+62D8,U+62DF,U+62E2,U+62E6-62E7,U+62EC-62ED,U+62F3,U+62F7,U+62FC,U+62FE-62FF,U+630E,U+631B,U+6320,U+632A,U+6346,U+634E-6350,U+635E,U+6367,U+636E,U+6377,U+637B,U+6388,U+6390,U+6392,U+6398,U+63A0,U+63A5,U+63A7,U+63B3,U+63C9,U+63CF,U+63E9-63EA,U+63ED,U+63FD,U+6402,U+6405,U+6414,U+6444,U+6469,U+6478-6479,U+6482,U+6485,U+6487,U+6492,U+64A9,U+64AC,U+64B5,U+64C2,U+64C5,U+64CE,U+64D2,U+6500,U+6518,U+652B,U+6536,U+654F,U+6551,U+6559,U+655B,U+6563,U+656C,U+6572,U+6599,U+65A4,U+65BD,U+65C1,U+65C5,U+65D7,U+65E5,U+65E7,U+65F6-65F7,U+6606,U+660E,U+6627,U+662F,U+664B-664C,U+6652,U+666E-666F,U+6674,U+6676,U+667E,U+6696,U+66AE,U+66DD,U+66F2,U+66FC,U+670B,U+6717,U+671F,U+6728,U+672B,U+6734,U+6740,U+6743,U+6749,U+674E,U+6765,U+6770,U+6797,U+679A,U+67AA,U+67AF,U+67D0,U+67D2-67D4,U+67E0,U+67EF,U+67F3,U+67FF,U+680F,U+6816-6817,U+6846,U+6851,U+6854,U+6865,U+6881,U+6885,U+68A2,U+68A6,U+68A8,U+68C9,U+68CB,U+68DA,U+68EE,U+68F1,U+68F5,U+695E,U+6977,U+697C,U+6994,U+69B4,U+69B7,U+6A21,U+6A47,U+6AAC,U+6B20,U+6B27,U+6B3A,U+6B3E,U+6B49,U+6B67,U+6BB4,U+6BCD,U+6BCF,U+6BD7,U+6BDB,U+6C0F,U+6C11,U+6C13-6C14,U+6C16,U+6C22,U+6C2F-6C30,U+6C42,U+6C55,U+6C5D,U+6C7D,U+6C81,U+6C88,U+6C8F,U+6C99,U+6C9B,U+6CA1,U+6CA4-6CA6,U+6CAB,U+6CAE,U+6CC5,U+6CC9,U+6CCC,U+6CDE,U+6CE1,U+6CE3,U+6CE5,U+6CEA,U+6CFC,U+6D01,U+6D12,U+6D1B,U+6D25,U+6D3D-6D3E,U+6D41,U+6D45,U+6D53,U+6D5A,U+6D66,U+6D6A,U+6D78,U+6D85,U+6D89,U+6D9D,U+6D9F,U+6DA6,U+6DA9,U+6DCB,U+6DD6,U+6DF1,U+6E05,U+6E17,U+6E20,U+6E34,U+6E3A,U+6E43,U+6E7F,U+6E83,U+6E9C,U+6EB6,U+6EBA,U+6EE1,U+6EE4-6EE6,U+6F02,U+6F06,U+6F0F,U+6F13,U+6F20,U+6F2B,U+6F58,U+6F5C,U+6F5E,U+6F66,U+6F8E,U+6F9C,U+7011,U+706D,U+7075,U+7078,U+7089,U+7094-7095,U+70AC,U+70AE-70AF,U+70BC,U+70C2,U+70C8,U+70D9,U+70E4,U+70E7,U+70EC-70ED,U+70F9,U+7136,U+715E,U+7164,U+717D,U+7194,U+71C3,U+71CE,U+722C,U+7235,U+7247,U+724C,U+725B,U+725F,U+7261-7262,U+7267,U+7272,U+7275,U+7281,U+72AC,U+72C2,U+72D9,U+72DE,U+72E1,U+72EE,U+72F8,U+72FC,U+730E,U+731B,U+732B,U+7387,U+7396,U+739B,U+73AB,U+73B2,U+73CA,U+7403,U+7405-7406,U+7409,U+7433-7436,U+743C,U+745E-745F,U+7483,U+74E2,U+74E4,U+74F6,U+751A,U+751F,U+7525,U+7533,U+7537,U+754C,U+7554,U+7559,U+7565-7566,U+7597,U+759A,U+759F,U+75A5,U+75B2,U+75BD,U+75C9-75CA,U+75DE,U+75E2,U+7624,U+7638,U+7686,U+76AE,U+76BF,U+76C6,U+76D4,U+76D8,U+76DB,U+76DF,U+76EE,U+76F2,U+76FC,U+7701,U+7709,U+770B,U+7720,U+772F,U+7736-7737,U+775B,U+7766,U+776B,U+7784,U+7792,U+77A5,U+77A7,U+77DB,U+77E2,U+77E9,U+77EB,U+77F3,U+77FF,U+7801-7802,U+780C-780D,U+7812,U+7830,U+7834,U+7837,U+783E,U+786B,U+786E,U+787C,U+788C,U+78B0,U+78BE,U+78CA,U+78D0,U+78D5,U+78E8,U+78F7,U+793A,U+793C,U+793E,U+7941,U+7948,U+795E,U+7968,U+7981,U+7984,U+79BB,U+79BD,U+79CB,U+79D1-79D2,U+79D8,U+79E6,U+79F8,U+7A0D,U+7A46,U+7A76-7A77,U+7A7A,U+7A83,U+7A8D,U+7A96,U+7A98,U+7A9F,U+7AA5,U+7ABF,U+7ACB,U+7ADE-7ADF,U+7AE3,U+7AED,U+7B3C,U+7B4B,U+7B50,U+7B5B,U+7B77,U+7B7E,U+7BA9,U+7BC7,U+7BD3,U+7BEE,U+7BF1,U+7BF7,U+7C73,U+7C7B,U+7C92,U+7C95,U+7CAE,U+7CB1,U+7CB3,U+7CBE,U+7CDC,U+7CE0,U+7CEF,U+7D27,U+7D2F,U+7EA0,U+7EAB,U+7EB1,U+7EB3,U+7EB6,U+7EBD,U+7EC3,U+7EC5,U+7ECD,U+7ECF,U+7ED2-7ED3,U+7ED5,U+7EDC-7EDE,U+7EE2,U+7EF3,U+7EF5,U+7EFF,U+7F05-7F06,U+7F15,U+7F2E,U+7F34,U+7F3A,U+7F57,U+7F8C,U+7F8E,U+7F9A,U+7FA4,U+7FD8,U+8001,U+8003,U+8010,U+802A,U+8042,U+804A-804B,U+8054,U+8058,U+805A,U+8089,U+808B,U+80AF,U+80BE,U+80D6,U+80DA,U+80DC,U+80EF,U+80FD,U+8109,U+8110-8111,U+8113,U+811A,U+8138,U+813E,U+814A,U+8154,U+816E,U+817B,U+819C,U+81A8,U+81B3,U+81FC,U+8205,U+820C-820D,U+826F,U+8272,U+8282,U+828D,U+8292,U+82A5-82A6,U+82B9,U+82D7,U+82DB,U+82E5-82E6,U+82EB,U+82F9,U+8302,U+8304-8305,U+830E,U+832B,U+8338-8339,U+8346,U+8354,U+8363,U+8386,U+8389,U+838E,U+83AB,U+83B1-83B2,U+83BD,U+83CA,U+83CC,U+83E9,U+83F1,U+840C-840D,U+841D,U+8428,U+843D,U+8461,U+8475,U+8499,U+84B2,U+84C9,U+84DD,U+84EC,U+8511,U+8513,U+852B,U+8537,U+854A,U+857E,U+85C9,U+85D0,U+85D5,U+8611,U+864F-8651,U+8671,U+8680,U+8682,U+86C6-86C7,U+86EE,U+871C,U+8721,U+878D,U+879F,U+87BA,U+8815,U+8857,U+886B,U+888D,U+88C2,U+88D9,U+88E4,U+88F3-88F4,U+88F8,U+8925,U+895F,U+89C5-89C6,U+89C8-89C9,U+89D2,U+89E3,U+8A93,U+8B66,U+8B6C,U+8BA4,U+8BA9,U+8BAB,U+8BBA,U+8BBE,U+8BC0,U+8BC4,U+8BC6,U+8BD5,U+8BD7,U+8BEB,U+8BF7,U+8BFA,U+8BFE,U+8C05,U+8C0B,U+8C1C,U+8C26,U+8C28-8C29,U+8C2C,U+8C30-8C31,U+8C34,U+8C8C,U+8D2B,U+8D38,U+8D41-8D42,U+8D4A,U+8D4F,U+8D54,U+8D56,U+8D5B,U+8D61,U+8D66,U+8D77,U+8D8B,U+8DA3,U+8DB4,U+8DD1,U+8DDD,U+8DE8,U+8DEF,U+8E1E,U+8EAB,U+8EAF,U+8F6E-8F6F,U+8F7B,U+8F7F,U+8F83,U+8F86,U+8FA3,U+8FB1,U+8FBD,U+8FC1,U+8FC4,U+8FC8,U+8FD1,U+8FDB,U+8FDE,U+8FEB,U+8FF7,U+9002,U+9006,U+901D,U+903B,U+9063,U+90A3,U+90B1,U+90B5,U+90BB,U+90CE,U+90E1,U+914B,U+914D,U+9152,U+916A,U+9175-9177,U+917F,U+919A-919B,U+91CA,U+91CC,U+91CF,U+91D1,U+948E,U+94A0,U+94A6-94A7,U+94AE,U+94B1,U+94B3,U+94C3,U+94C5-94C6,U+94DD,U+94ED,U+94F0,U+94FA,U+94FE,U+9510,U+951A,U+9523,U+9526,U+952F-9530,U+9539,U+9541,U+954A,U+954D,U+955C,U+9563,U+956D,U+9570,U+95E8,U+95EA,U+95F0,U+95F7,U+95F9,U+95FD,U+9611,U+9614,U+962E,U+9636,U+9646-9647,U+964B-964C,U+9655,U+966A,U+9675,U+9686,U+96B6,U+96BE,U+96C0,U+96F6-96F7,U+9709,U+9713,U+9716,U+9732,U+9739,U+9752,U+9756,U+9759,U+9760-9762,U+9773,U+9798,U+97A0,U+97E7,U+97ED,U+97F6,U+9877,U+9885-9888,U+9891,U+9897,U+98A7,U+98D8,U+98DF,U+9970,U+9976,U+997A,U+9981,U+9988,U+998F,U+9992,U+9996,U+9A6C,U+9A71,U+9A74,U+9A76,U+9A79,U+9A82,U+9A86,U+9A8F,U+9A91,U+9A97,U+9A9A,U+9AA1,U+9B41,U+9B44,U+9B54,U+9C81,U+9CA4,U+9CB8,U+9CC3,U+9CDE,U+9E1F,U+9E23,U+9E25,U+9E43,U+9E4A,U+9E4F,U+9E7F,U+9E93,U+9EA6,U+9EBB,U+9ECE,U+9ED4,U+9ED8,U+9F50,U+9F84,U+9F8B,U+9F99`}),Object.freeze({family:`Aha Hand`,file:`wenkai-gb-3-6949c050.woff2`,bytes:311704,unicodeRange:`U+4E00,U+4E07-4E08,U+4E0B,U+4E0E,U+4E13,U+4E1A,U+4E1D,U+4E25,U+4E2B,U+4E2D,U+4E38,U+4E3A-4E3B,U+4E49,U+4E4B-4E4D,U+4E59,U+4E5F-4E61,U+4E66,U+4E88-4E89,U+4E8E,U+4E91,U+4E94,U+4E9A-4E9B,U+4EA1,U+4EA6,U+4EAB,U+4EAD,U+4EBF,U+4ED4,U+4ED6-4ED7,U+4ED9,U+4EE5,U+4EEA,U+4EF0,U+4EF2,U+4F0A,U+4F0D,U+4F11,U+4F17-4F18,U+4F1F,U+4F2A,U+4F3A,U+4F3C,U+4F4D,U+4F4F-4F51,U+4F53,U+4F59,U+4F5C,U+4F63,U+4F6F,U+4F84,U+4F9D,U+4FA0,U+4FA6,U+4FAE,U+4FD7,U+4FDE,U+4FE1,U+4FEE,U+5018,U+501A,U+503A,U+503C,U+505A,U+505C,U+5077,U+50CF,U+50F3,U+5141,U+5143-5144,U+5146,U+5148,U+5154,U+5174,U+5179,U+517B,U+517D,U+518D,U+5199,U+51A4,U+51B6,U+51C6,U+51F6,U+51F8,U+51FF,U+5211,U+5219,U+5236-5237,U+5243,U+524A,U+5254,U+52A1,U+52A9,U+52C7,U+52CB,U+52FF-5300,U+5308,U+531D,U+5323,U+533B,U+5348,U+534F,U+5352-5353,U+5360,U+5367,U+536B,U+5370-5371,U+5378,U+5385,U+538B-538C,U+539F,U+53A2,U+53A6,U+53BF,U+53C8,U+53CB-53CC,U+53D4,U+53D9,U+53EA,U+53EC,U+53F0,U+53F3,U+53F6,U+53F8-53F9,U+5401,U+540C,U+5410-5411,U+5413,U+541E-541F,U+542C,U+542E,U+5431,U+5434,U+5438,U+543B,U+543E,U+5440,U+5458,U+545C,U+5468,U+5473,U+548B,U+548F,U+5492,U+54A8,U+54AC,U+54B1,U+54B8,U+54BD,U+54C7,U+54C9,U+54CD,U+54D1,U+54DF,U+54EE,U+54F2,U+5501,U+5506,U+5510,U+552F,U+553E,U+5544,U+5578,U+557C,U+5582,U+559C,U+55A7,U+55B3,U+55BB,U+55C5,U+55E1,U+55E3,U+55FD,U+5618,U+5631,U+5634,U+5636,U+563B,U+564E,U+566A,U+568F,U+56A3,U+56DB,U+56E0,U+56E2,U+56ED,U+56F4,U+56FE,U+5706,U+571F,U+5728,U+5740,U+574D,U+5750,U+575B,U+575E,U+5760,U+5766,U+578B,U+57A3,U+57DF,U+5802,U+5830,U+584C,U+5851,U+5854,U+5858,U+586B,U+5885,U+589E-589F,U+58EE,U+58F9,U+590F,U+5915-5916,U+591C,U+5929-592A,U+592E,U+5934,U+5937,U+5944,U+594F,U+5957,U+5979,U+5984,U+5986,U+5996,U+59A5,U+59D3-59D4,U+59DA,U+59E8,U+59FB,U+59FF,U+5A01,U+5A03,U+5A31,U+5A49,U+5A74,U+5A7F,U+5AB3,U+5ACC,U+5B50,U+5B55,U+5B57,U+5B59,U+5B5C-5B5D,U+5B66,U+5B70,U+5B83,U+5B85,U+5B87,U+5B8B-5B8C,U+5B97,U+5B99,U+5B9B-5B9C,U+5BA3,U+5BAA,U+5BB0,U+5BB4-5BB5,U+5BBF,U+5BC5,U+5BD3,U+5BE8,U+5BFA-5BFB,U+5C09-5C0A,U+5C0F,U+5C24,U+5C27,U+5C39,U+5C3E,U+5C49,U+5C4B,U+5C51,U+5C55,U+5C5E,U+5C60,U+5C6F,U+5C79,U+5C7F,U+5C81,U+5CA9,U+5CB3,U+5CD9,U+5CE1,U+5CEA,U+5D16,U+5D2D,U+5DCD,U+5DDE,U+5DE1,U+5DE6,U+5DEB,U+5DF2-5DF3,U+5DF7,U+5E05,U+5E0C,U+5E10,U+5E16,U+5E1A,U+5E1C,U+5E27,U+5E2D,U+5E78,U+5E7C-5E7D,U+5E84,U+5E8F,U+5E94,U+5EA7,U+5EAD,U+5EB6,U+5EB8,U+5EF6-5EF7,U+5F02,U+5F15,U+5F20,U+5F26,U+5F2F,U+5F5D,U+5F62,U+5F64,U+5F66,U+5F70-5F71,U+5F79,U+5F80-5F81,U+5F90,U+5F92,U+5FA1,U+5FAA,U+5FAE,U+5FC3,U+5FC6,U+5FD7-5FD8,U+5FE0,U+5FE7,U+5FFB,U+6001-6002,U+600E,U+6014,U+601D,U+6027-6028,U+603B,U+6055,U+6064,U+606C,U+606F,U+607F,U+6089,U+609F-60A0,U+60A6,U+60AC,U+60CB,U+60D5,U+60DC,U+60DF,U+60F3,U+60FA,U+6108-6109,U+610F,U+611A,U+613F,U+6170,U+618E,U+61C8,U+620A,U+620C-620D,U+620F,U+6211,U+6218,U+6240,U+624E,U+6258,U+6267,U+626C,U+627E,U+6291-6293,U+6295,U+6298,U+62AC,U+62BC,U+62C4,U+62D3,U+62D6,U+62D9,U+62DB,U+62E5,U+62E9,U+62EF,U+62F4,U+62FD,U+6307,U+6311,U+6316,U+631A,U+631D-631F,U+6323,U+632F,U+633A,U+633D,U+6342,U+6345,U+6349,U+635F,U+6380,U+638C,U+638F,U+6396,U+63A2,U+63A8-63A9,U+63B7,U+63CD,U+63D0,U+63D6,U+63E1,U+63F4,U+641C,U+642A,U+643A,U+6447,U+644A,U+6454,U+6458,U+6495,U+649E,U+64B0,U+64DE,U+6512,U+652F,U+653F,U+6548,U+6570,U+6574,U+6587,U+658B,U+659C,U+659F,U+65A1,U+65A9,U+65AF-65B0,U+65CB,U+65CF,U+65E0,U+65E8-65E9,U+65EC-65ED,U+65FA,U+6613-6614,U+661F-6620,U+6628,U+662D,U+663C,U+663E,U+6653,U+6655,U+665A,U+6664,U+6670,U+667A,U+6682,U+6687,U+6691,U+66D9,U+66F0,U+66F3,U+66FE-6700,U+6708-6709,U+6714,U+671B,U+672A,U+672D,U+672F,U+6731,U+673D,U+6742,U+674F,U+6756,U+675F,U+6761,U+6768,U+677E,U+6789,U+6790,U+6795,U+679D,U+67A2-67A3,U+67DE,U+67F1,U+6805,U+6808,U+6811,U+6813,U+6821,U+682A,U+6837,U+683D,U+6843,U+6845,U+684C,U+6850,U+6869,U+6876,U+68A7,U+68AD,U+68AF-68B0,U+68B3,U+68D5,U+68E0,U+6905,U+690D-690E,U+692D,U+6930,U+6954,U+6986,U+69A8,U+6A1F,U+6A31,U+6A61,U+6A80,U+6A84,U+6B23,U+6B32,U+6B47,U+6B62-6B63,U+6B66,U+6B6A,U+6B7B,U+6B83,U+6B89-6B8A,U+6B96,U+6BB7,U+6BC5,U+6BCB,U+6BE1,U+6BEF,U+6C27,U+6C34,U+6C38,U+6C40-6C41,U+6C50,U+6C5B,U+6C61,U+6C64,U+6C6A,U+6C70,U+6C79,U+6C82-6C83,U+6CB9,U+6CBB-6CBC,U+6CBE-6CBF,U+6CC4,U+6CE8,U+6CF0,U+6CF3,U+6CFB,U+6CFD,U+6D0B,U+6D17,U+6D32,U+6D3C,U+6D4A,U+6D59,U+6D74,U+6D82,U+6D88,U+6D8C,U+6D8E,U+6D95,U+6D9B,U+6DA1,U+6DA8,U+6DAF,U+6DB2,U+6DC4,U+6DC6,U+6DCC,U+6DD1,U+6DD8,U+6DE4,U+6DEB,U+6DF9,U+6DFB,U+6E0A,U+6E0D,U+6E14,U+6E1D,U+6E23,U+6E29,U+6E2D,U+6E38,U+6E4D,U+6E58,U+6E5B,U+6E7E,U+6E90,U+6EA2,U+6EAA,U+6EAF,U+6ECB,U+6ED3-6ED4,U+6EDE,U+6EE9,U+6F14,U+6F31,U+6F33,U+6F3E,U+6F4D,U+6F6D,U+6FA1,U+7076,U+707C,U+707E,U+708E,U+7099,U+70AD,U+70B8,U+70C1,U+70C3,U+70DB,U+70DF,U+70EB,U+70EF,U+70F7,U+7109,U+7130,U+7167,U+716E,U+7184,U+718A,U+718F,U+7199,U+719F,U+71D5,U+71E5,U+722A,U+7237,U+723D,U+7259,U+7269,U+7279-727A,U+7280,U+72B6,U+72B9,U+72ED,U+72F0-72F1,U+7329-732A,U+732E,U+733F,U+736D,U+7384,U+7389,U+738B,U+73A9,U+73B0,U+73CD,U+73E0,U+7410,U+7422,U+7476,U+74E6,U+74EE,U+7504,U+751C,U+7528-7529,U+7530-7531,U+754F,U+755C,U+758F,U+7591,U+75A1,U+75AB,U+75B9,U+75BC,U+75C7-75C8,U+75D2,U+75D4,U+75DB,U+75F0,U+761F,U+7626,U+762B,U+7634,U+7663,U+7682,U+7696,U+76B1,U+76C2,U+76C5,U+76C8,U+76CA,U+76CF-76D0,U+76F4,U+76F8,U+771F,U+7728-7729,U+773A,U+773C,U+7740-7741,U+7761,U+778E,U+77A9,U+77AC,U+77B3,U+77BB,U+77E3,U+77E5,U+77FD,U+7814,U+7816,U+781A,U+7827,U+7838,U+7852,U+7855,U+785D,U+786C,U+788E,U+7897,U+78B3,U+7956,U+795D,U+795F,U+7965,U+79B9,U+79C0-79C1,U+79C3,U+79CD,U+79DF,U+79E7,U+79E9,U+79FB,U+7A00,U+7A0E,U+7A1A,U+7A33,U+7A57,U+7A74,U+7A81,U+7A84,U+7A91-7A92,U+7A9D,U+7AD6,U+7AD9,U+7AE0,U+7AE5,U+7AF9,U+7B0B,U+7B11,U+7B51-7B52,U+7B97,U+7BB1,U+7BC6,U+7C7D,U+7C98,U+7C9F,U+7CA4-7CA5,U+7CD6,U+7CDF,U+7CFB,U+7D0A,U+7D20,U+7D22,U+7D2B,U+7D6E,U+7E82,U+7EA4,U+7EA6,U+7EAC,U+7EB5,U+7EB8-7EB9,U+7EBF,U+7EC4,U+7EC6-7EC8,U+7ECE,U+7EDA,U+7EDF,U+7EE3,U+7EE5-7EE6,U+7EEA,U+7EED,U+7EF4,U+7EFC-7EFD,U+7F00,U+7F18,U+7F28-7F29,U+7F51,U+7F69-7F6A,U+7F6E,U+7F72,U+7F8A,U+7F9E,U+7FA1,U+7FBD,U+7FC1,U+7FCC,U+7FD4,U+7FFC,U+8000,U+8005,U+800D,U+8018,U+8036,U+8038,U+804C,U+8083-8084,U+8086-8087,U+8096,U+8098,U+80A2,U+80B2,U+80BF-80C1,U+80C3,U+80CE,U+80F0,U+80F8,U+8102,U+810F,U+8131,U+8146,U+814B,U+8155,U+8165,U+8170,U+817A,U+817E-817F,U+819B,U+819D,U+81C0,U+81C3,U+81C6,U+81EA,U+81F3-81F4,U+81FB,U+8200,U+8206,U+8212,U+8214,U+821C,U+821E-821F,U+8237,U+8247,U+8258,U+8273,U+827A,U+828B,U+829C-829D,U+82AF,U+82BD,U+82C7,U+82CF,U+82D1,U+82D4,U+82F1,U+8301,U+8335,U+8367,U+836B,U+836F,U+83B9,U+8404,U+840E,U+8424-8425,U+8427,U+8457,U+846C,U+849C,U+84B8,U+84C4,U+84D1,U+8517,U+851A,U+852C,U+8574,U+859B,U+85AA,U+85AF,U+85E4,U+85FB,U+8638,U+865A,U+865E,U+867D-867E,U+8681,U+868A,U+869C,U+86A4,U+86C0,U+86D9,U+86DB,U+86F0,U+86F9,U+8700,U+8712,U+8715,U+8717-8718,U+8747,U+874E,U+87F9,U+8840,U+8845,U+884C-884D,U+8854,U+8859,U+8863,U+8870,U+8877,U+8881,U+8892,U+8896,U+889C,U+88AD,U+88C5,U+88D4-88D5,U+892A,U+8944,U+897F,U+8981,U+8A00,U+8A79,U+8A89-8A8A,U+8BA8,U+8BAD-8BAF,U+8BB6,U+8BB8,U+8BBC,U+8BC1,U+8BC5,U+8BC8-8BCA,U+8BCC,U+8BD1,U+8BDB,U+8BE2-8BE3,U+8BE6,U+8BEC-8BED,U+8BEF,U+8BF1,U+8BF4-8BF5,U+8BF8,U+8C01,U+8C06,U+8C08,U+8C0A,U+8C10,U+8C13,U+8C1A,U+8C22-8C23,U+8C2D,U+8C4C,U+8C61,U+8C6B,U+8D1E,U+8D23-8D24,U+8D26,U+8D28,U+8D2A,U+8D2E,U+8D34,U+8D3C,U+8D43-8D44,U+8D4E,U+8D58,U+8D5A,U+8D5E,U+8D60,U+8D62,U+8D70,U+8D75,U+8D8A,U+8D9F,U+8DB3,U+8DBE,U+8DC3,U+8DF3,U+8E0A,U+8E0F,U+8E22,U+8E2A,U+8E44,U+8E4B,U+8E81,U+8EBA,U+8F67,U+8F69,U+8F6C,U+8F74,U+8F7D,U+8F93,U+8F95-8F97,U+8F99,U+8F9B,U+8FC2,U+8FC5,U+8FCE,U+8FD0,U+8FD9,U+8FDC-8FDD,U+8FE2,U+8FF0,U+8FFD,U+9000-9001,U+9003,U+9009-900A,U+900F-9010,U+9014,U+901A,U+901F-9020,U+9038,U+903E,U+9042,U+9047,U+9057,U+9065,U+906D-906E,U+9075,U+9080,U+9091,U+90A2,U+90AA,U+90AE,U+90B9,U+90C1,U+90D1,U+90E7,U+9149,U+914C,U+9157,U+915D-915E,U+9165,U+916E,U+9178,U+9189,U+9192,U+91C9,U+91CD-91CE,U+9488,U+949F,U+94A5,U+94A8,U+94BB,U+94C0-94C1,U+94DC,U+94E1,U+94E3,U+94F1,U+94F6,U+94F8,U+9500-9501,U+9508,U+950C,U+9511,U+9517,U+9521,U+9525,U+9528,U+9547,U+9576,U+95EE,U+95F2,U+95F8,U+95FB,U+9605,U+9609,U+960E,U+9633-9635,U+963B,U+9640,U+9650,U+9662,U+9668-9669,U+9676-9677,U+9685,U+968B,U+968F-9690,U+9699,U+969C,U+96A7,U+96C1,U+96C4-96C5,U+96CD,U+96E8,U+96EA,U+96FE,U+9700,U+9704,U+9707,U+971C,U+971E,U+9774,U+978B,U+97E6,U+97F3,U+97F5,U+9875,U+9879-987B,U+987D,U+9882,U+9884,U+9890,U+9893,U+9896,U+9898,U+989C,U+996E,U+9972,U+9985,U+9999,U+9A6D-9A6F,U+9A7B-9A7C,U+9A8C,U+9AA4,U+9AD3,U+9B03,U+9B4F,U+9C7C,U+9C9C,U+9E26,U+9E2D,U+9E2F,U+9E33,U+9E35,U+9E70,U+9ECD,U+9F20`}),Object.freeze({family:`Aha Hand`,file:`wenkai-gb-4-375dc3b3.woff2`,bytes:257596,unicodeRange:`U+4E0C,U+4E10,U+4E15,U+4E1E,U+4E28,U+4E36,U+4E3F,U+4E47,U+4E5C,U+4E69,U+4E8D,U+4E93,U+4E98,U+4E9F-4EA0,U+4EB3,U+4EB5,U+4EBB,U+4EC2-4EC4,U+4EC9,U+4EDD-4EDE,U+4EE1,U+4EE8,U+4EEB,U+4EF3,U+4EF5,U+4F09,U+4F1B,U+4F22,U+4F25,U+4F27,U+4F2B,U+4F32,U+4F3D,U+4F57-4F58,U+4F5A,U+4F5D-4F5F,U+4F64-4F65,U+4F67,U+4F74,U+4F76,U+4F7B-4F7C,U+4F7E,U+4F83,U+4F89,U+4F8F,U+4F91,U+4F94,U+4FAA,U+4FAC,U+4FC5,U+4FCE,U+4FD1,U+4FDA,U+4FDC,U+4FDF,U+4FE3,U+4FE6,U+4FE8,U+4FEA,U+4FF3,U+4FF8,U+4FFE,U+500C,U+500F,U+501C,U+5025,U+5028-5029,U+502C-502E,U+5043,U+5048,U+504C,U+504E,U+5055,U+506C,U+507B,U+507E,U+50A5,U+50A7,U+50A9,U+50BA,U+50D6,U+50E6,U+50EC-50EE,U+5106-5107,U+510B,U+5140,U+5155-5156,U+516E,U+5181-5182,U+5196,U+51A2,U+51A5,U+51AB,U+51B1,U+51BC-51BD,U+51C7,U+51EB,U+51F5,U+51FC,U+5202,U+5208,U+520D-520E,U+522D,U+5233,U+523F-5240,U+524C,U+525C,U+525E,U+5261,U+527D,U+5281-5282,U+5290,U+5293,U+52A2,U+52AC-52AD,U+52BE,U+52D0,U+52D6,U+52F0,U+52F9,U+530D,U+530F-5310,U+5315,U+531A,U+5326,U+532E,U+533E,U+5345,U+535F,U+5363,U+5366,U+5369,U+536E,U+537A,U+538D,U+539D,U+53A3,U+53A5,U+53AE,U+53B6,U+53DF,U+53E8-53E9,U+53F1,U+53F5,U+53FB,U+53FD,U+5406,U+5412,U+5416,U+5421,U+5423,U+5432,U+5443,U+544B,U+5452-5454,U+5456-5457,U+5459,U+5464,U+5466,U+5471-5472,U+5476-5477,U+5482,U+5484,U+5494,U+549A-549B,U+549D,U+54A3-54A4,U+54A6-54A7,U+54A9-54AA,U+54AD,U+54B4,U+54BB,U+54BF,U+54C2,U+54CC,U+54CF-54D0,U+54D2-54D5,U+54D9-54DA,U+54DC-54DE,U+54E7,U+54F3,U+54FD,U+54FF,U+550F,U+5511,U+5514,U+551B,U+5520,U+5522-5523,U+5527,U+552A,U+5530,U+5533,U+5537,U+553C,U+553F,U+5541,U+5549,U+5550,U+5555-5556,U+555C,U+5567,U+556C-556D,U+5575-5577,U+557B,U+557E,U+5581,U+5583,U+5588,U+558B,U+558F,U+5591,U+5594,U+5599,U+559F,U+55B1,U+55B5,U+55B9,U+55BD-55BE,U+55C4,U+55C9,U+55CC-55CD,U+55D1-55D2,U+55D4,U+55D6,U+55DD,U+55DF,U+55E4-55E6,U+55E8,U+55EA-55EC,U+55EF,U+55F2-55F3,U+55F5,U+55F7,U+55FE,U+5600-5601,U+5608,U+560C,U+560F,U+561E-561F,U+5623-5624,U+5627,U+562C-562D,U+5639,U+564C-564D,U+5654,U+5657-5659,U+565C,U+5662,U+5664,U+5669,U+566B,U+5671,U+567B-567C,U+5685-5686,U+5693,U+56AF,U+56D4,U+56D7,U+56DD,U+56DF,U+56E1,U+56EB,U+56F5,U+56F9,U+56FF,U+5704,U+5709-570A,U+571C,U+5729-572A,U+572C,U+572E-572F,U+5733,U+5739,U+573B,U+5742,U+574C,U+575C,U+5768-5769,U+576B,U+576D,U+5773,U+5776,U+577B-577C,U+5785-5786,U+578C,U+5793,U+57A0-57A1,U+57A4,U+57A7,U+57A9,U+57AD,U+57B2,U+57B4,U+57B8,U+57CF,U+57D2,U+57D5,U+57D8-57DA,U+57DD,U+57E4,U+57ED,U+57EF,U+57F4,U+57F8,U+57FD,U+5800,U+5807,U+580B,U+580D,U+5819,U+581E,U+5820,U+5844,U+5865,U+586C,U+587E,U+5880-5881,U+5889,U+589A,U+58BC,U+58C5,U+58D1,U+5902,U+5914,U+5919,U+5924-5925,U+592D,U+593C,U+5941-5942,U+5955,U+5958,U+595A,U+5B34,U+5B5B,U+5B6C,U+5C22,U+5C25,U+5C2C,U+5C34,U+5C7A,U+5C88,U+5C8C-5C8D,U+5C90-5C91,U+5C96,U+5C98-5C9A,U+5C9C,U+5CA2-5CA3,U+5CAB-5CAC,U+5CB1,U+5CB5,U+5CB7,U+5CBD,U+5CC1,U+5CC4,U+5CCB,U+5CD2,U+5CE4-5CE5,U+5D02-5D03,U+5D06,U+5D1B,U+5D1E,U+5D24,U+5D26-5D27,U+5D2E,U+5D34,U+5D3D-5D3E,U+5D4A-5D4B,U+5D58,U+5D5B,U+5D5D,U+5D69,U+5D6B-5D6C,U+5D6F,U+5D74,U+5D82,U+5D99,U+5D9D,U+5DB7,U+5DC5,U+5DEF,U+5DFD,U+5E0F,U+5E11,U+5E14,U+5E19,U+5E31,U+5E37,U+5E3B-5E3C,U+5E44,U+5E54,U+5E5B,U+5E5E,U+5E61,U+5E80,U+5E8B,U+5E91,U+5E96,U+5EA0,U+5EA5,U+5EB3,U+5EB5,U+5EB9,U+5EBE,U+5ED1-5ED2,U+5EDB,U+5EE8,U+5EEA,U+5EF4,U+5EFE-5EFF,U+5F01,U+5F08,U+5F0B,U+5F11,U+5F61,U+5F73,U+5F77,U+5F82,U+5F87,U+5F89,U+5F8C,U+5F95,U+5F99,U+5F9C,U+5FA8,U+5FAD,U+5FB5,U+5FBC,U+5FD2,U+61FF,U+624C,U+626A,U+629F,U+62BB,U+62CA,U+62D7,U+62DA,U+62EE,U+62F6,U+6322,U+6339,U+6343,U+634B,U+6369,U+636D,U+6371,U+637A,U+638A,U+638E,U+63AC-63AE,U+63B4,U+63BC,U+63BE,U+63C4,U+63C6,U+63CE,U+63DE,U+63E0,U+63F2,U+63F6,U+63F8,U+63FF,U+640B-640C,U+641B,U+6420-6421,U+6426,U+6441,U+6445,U+6452,U+645E,U+646D,U+647A,U+6484,U+6496,U+6499,U+64B7-64B8,U+64BA,U+64C0,U+64D0,U+64D7,U+64E2,U+64E4,U+6509,U+6525,U+652E,U+6538,U+6BD3,U+6C10,U+6C3D,U+6C46,U+71EE,U+723B,U+72AD,U+72B0,U+72B4,U+72B7-72B8,U+72C1,U+72C3,U+72CD-72CE,U+72D2,U+72E8-72E9,U+72EF,U+72F2-72F4,U+72F7,U+72FA-72FB,U+7301,U+7303,U+730A,U+7313,U+7315,U+7317,U+731D-731E,U+7321-7322,U+7325,U+732C,U+7331,U+7338-7339,U+734D,U+7350,U+7357,U+7360,U+736C,U+736F,U+737E,U+750D,U+7519,U+755A,U+777E,U+77A2,U+77CD,U+7980,U+79BA,U+7C74,U+7F54,U+7FB8,U+8037,U+80E4,U+8114,U+81BA,U+821B,U+8279,U+827D,U+827F,U+8284,U+8288,U+828A,U+828E-828F,U+8291,U+8297-8299,U+829F,U+82A1,U+82A4,U+82A8-82AB,U+82AE,U+82B0,U+82B4,U+82B7-82B8,U+82BE,U+82C1,U+82C4,U+82C8,U+82CA-82CC,U+82CE,U+82D2-82D3,U+82D5,U+82D8,U+82DC,U+82E0-82E1,U+82E3-82E4,U+82F4,U+82F7,U+82FB,U+8306-8309,U+830C,U+830F,U+8311,U+8314-8315,U+8317,U+831A-831C,U+832D,U+832F,U+8331,U+8333-8334,U+833A,U+833C,U+8340,U+8343,U+8347,U+834F,U+8351,U+835B-835C,U+835E-8360,U+8365-8366,U+8368-836A,U+836C-836E,U+8378,U+837B-837D,U+8385,U+8392-8393,U+8398,U+839B-839C,U+839E,U+83A0,U+83A8-83AA,U+83B0,U+83B3-83B4,U+83B6,U+83B8,U+83BA,U+83BC,U+83C0-83C1,U+83C5,U+83D4,U+83D6,U+83D8,U+83DD,U+83DF,U+83E1,U+83E5,U+83EA,U+83F0,U+83F8-83F9,U+83FD,U+8401,U+8403,U+8406,U+840B,U+840F,U+8411,U+8418,U+841C,U+8426,U+8431,U+8438,U+843C,U+8446,U+8451,U+8459-845A,U+845C,U+8469,U+846D,U+8473,U+8476,U+8478,U+847A,U+8487-8489,U+848C,U+848E,U+8497,U+84A1,U+84AF,U+84B4,U+84B9-84BA,U+84BD,U+84BF,U+84C1,U+84CA,U+84CD,U+84D0,U+84D3,U+84E0,U+84E3,U+84E5-84E6,U+84F0,U+84FC,U+84FF,U+850C,U+851F,U+8538-853B,U+8543,U+8548,U+8556,U+8559,U+855E,U+8564,U+8568,U+8572,U+8579-857B,U+8585,U+8587,U+858F,U+859C,U+85A4,U+85A8,U+85AE,U+85B0,U+85B7,U+85B9,U+85C1,U+85D3,U+85DC,U+85FF,U+8605,U+8616,U+8627,U+8629,U+863C,U+8803,U+8862,U+886E,U+88A4,U+88D2,U+8A07,U+8BA0,U+8BA6-8BA7,U+8BAA,U+8BB4-8BB5,U+8BB7,U+8BC2-8BC3,U+8BCB,U+8BCE-8BCF,U+8BD2-8BD4,U+8BD6,U+8BD8-8BD9,U+8BDC,U+8BDF-8BE0,U+8BE4,U+8BE8-8BE9,U+8BEE,U+8BF0,U+8BF3,U+8BF6,U+8BF9,U+8BFC,U+8BFF-8C00,U+8C02,U+8C04,U+8C07,U+8C0C,U+8C0F,U+8C11-8C12,U+8C14-8C16,U+8C18-8C19,U+8C1B,U+8C1D,U+8C1F-8C21,U+8C25,U+8C27,U+8C2A-8C2B,U+8C2E-8C2F,U+8C32-8C33,U+8C35-8C36,U+8C73,U+8D53,U+8D5C-8D5D,U+8F94,U+9097,U+9099,U+909B,U+909D,U+90A1,U+90AC,U+90B0,U+90B3-90B4,U+90B6,U+90B8,U+90BA,U+90BE,U+90C4-90C5,U+90C7,U+90CF-90D0,U+90D3,U+90D7,U+90DB-90DC,U+90E2,U+90E6,U+90EB,U+90EF,U+90FE,U+9104,U+911E,U+9122-9123,U+912F,U+9131,U+9139,U+9143,U+9146,U+961D,U+9621-9622,U+962A,U+9631,U+963C-963D,U+9642,U+9649,U+9654,U+965F,U+9667,U+966C,U+9672,U+9674,U+9688,U+968D,U+9697,U+96B0,U+9765,U+98E7,U+9963,U+9967-996C,U+9974,U+9977,U+997D,U+9980,U+9984,U+9987,U+998A,U+998D,U+9990-9991,U+9993-9995,U+9997-9998,U+99A8,U+9B2F,U+9B32,U+9EC9,U+9F10,U+9F17,U+9F19,U+9FA0`}),Object.freeze({family:`Aha Hand`,file:`wenkai-gb-5-d0359bbc.woff2`,bytes:278908,unicodeRange:`U+4E2C,U+5216,U+54AB,U+584D,U+5981,U+5983,U+598D,U+5997,U+599E,U+59A3-59A4,U+59A9-59AB,U+59AF,U+59B2,U+59BE,U+59CA,U+59D2,U+59D7-59D8,U+59DD,U+59E3,U+59F9,U+5A05-5A06,U+5A08-5A09,U+5A0C,U+5A11,U+5A13,U+5A23,U+5A32,U+5A34,U+5A3C,U+5A40,U+5A4A,U+5A55,U+5A62,U+5A67,U+5A75,U+5A77,U+5A7A,U+5A9B,U+5AAA,U+5AB2,U+5AB5,U+5AB8,U+5ABE,U+5AD2,U+5AD4,U+5AD6,U+5AD8,U+5ADC,U+5AE0,U+5AE3,U+5AE6,U+5AEB,U+5AF1,U+5B09,U+5B16-5B17,U+5B32,U+5B37,U+5B40,U+5B51,U+5B53,U+5B5A,U+5B62,U+5B65,U+5B71,U+5B73,U+5B80,U+5B84,U+5B93,U+5B95,U+5BA5,U+5BB8,U+5BE4,U+5BEE,U+5BF0,U+5C15,U+5C1C,U+5C3B,U+5C50,U+5C59,U+5C63,U+5C66,U+5C6E,U+5DDB,U+5E7A,U+5F29-5F2A,U+5F2D,U+5F3C,U+5F40,U+5F50,U+5F56-5F58,U+5FC4,U+5FC9,U+5FCF-5FD1,U+5FD6,U+5FDD,U+5FE1,U+5FE4,U+5FEA,U+5FED-5FEE,U+5FF8,U+5FFE,U+6003-6006,U+600A,U+600D,U+600F,U+6019,U+601B,U+6021,U+6026,U+6029,U+602B,U+6035,U+603C,U+603F,U+6041-6042,U+6059-605A,U+605D,U+6063,U+6067,U+606A,U+6078-607B,U+607D,U+6083,U+608C,U+6092,U+6096,U+609A-609B,U+609D,U+60AB,U+60AD,U+60B1,U+60B4,U+60BB,U+60C6,U+60D8,U+60DA,U+60DD,U+60EC,U+60F4,U+6100,U+6106,U+610D-610E,U+6115,U+6120,U+6123,U+6126,U+612B,U+614A,U+615D,U+6175,U+6194,U+619D,U+61A7,U+61A9,U+61AC,U+61B7,U+61CB,U+61D1,U+61D4,U+61F5,U+6206,U+620B,U+6215,U+6217,U+621B,U+621F,U+6221-6222,U+6224-6225,U+622C,U+623D-623E,U+6243,U+6248-6249,U+6308,U+6332,U+63B0,U+6434,U+643F,U+64D8,U+6534-6535,U+6555,U+656B,U+6590,U+6593,U+65AB,U+65BC,U+65C3-65C4,U+65C6,U+65CC,U+65CE,U+65D2,U+65D6,U+65EE-65F0,U+6600,U+6603,U+660A,U+6615,U+6619,U+661D,U+6631,U+6634-6636,U+6641,U+664F,U+6654,U+6656-6657,U+665F,U+6661,U+6677,U+6684,U+668C,U+669D,U+66A7,U+66B9,U+66BE,U+66DB-66DC,U+66E6,U+66E9,U+66F7,U+670A,U+6710,U+6715,U+6726,U+6748,U+674C,U+6753,U+675E,U+6769-676A,U+6772-6773,U+6775,U+6777,U+677C,U+6787,U+678B,U+6798,U+679E,U+67A5,U+67A7-67A8,U+67AD,U+67B0,U+67B3,U+67B5,U+67B8,U+67C1,U+67C3,U+67D8-67DA,U+67DD,U+67E2,U+67E9,U+67F0,U+67FD,U+6800,U+6809-680A,U+680C,U+680E,U+681D,U+6829,U+6832-6833,U+683E,U+6840-6841,U+6844,U+6849-684A,U+684E,U+6855,U+6860-6862,U+6864,U+6866-6867,U+686B,U+6874,U+6877,U+6883,U+688F,U+6893,U+68B5,U+68C2,U+68E3,U+68F0,U+68F9,U+68FC,U+6901,U+690B,U+6910,U+691F-6920,U+6924,U+6934,U+6939,U+6942,U+6957,U+695D,U+6960,U+6963,U+6966,U+696B,U+696E,U+6971,U+6978-6979,U+6980,U+6984,U+6987-6989,U+698D,U+6995,U+6998,U+699B,U+69A7,U+69AB,U+69AD,U+69B1,U+69BB,U+69C1,U+69CA,U+69CC,U+69CE,U+69D4,U+69DF-69E0,U+69ED,U+69F2,U+69FF,U+6A17-6A18,U+6A28,U+6A2F,U+6A35,U+6A3D-6A3E,U+6A44,U+6A50,U+6A58,U+6A5B,U+6A65,U+6A79,U+6A7C,U+6A8E,U+6A90-6A91,U+6A97,U+6AA0,U+6AA9,U+6AAB,U+6B24,U+6B37,U+6B39,U+6B43,U+6B46,U+6B59,U+6B81-6B82,U+6B84,U+6B87,U+6B8D,U+6B92-6B93,U+6B9A-6B9B,U+6BA1,U+6BAA,U+6BB3,U+6BC2,U+6BEA,U+6BF3,U+6BF5,U+6BF9,U+6BFD,U+6C05-6C07,U+6C0D,U+6C15,U+6C18-6C1A,U+6C21,U+6C24,U+6C29-6C2A,U+6C32,U+6C35,U+6C4A,U+6C54,U+6C5C,U+6C68-6C69,U+6C74,U+6C76,U+6C85-6C86,U+6C8C,U+6C90,U+6C93-6C94,U+6CA3,U+6CA9,U+6CAD,U+6CB1-6CB2,U+6CD0,U+6CD3-6CD4,U+6CD6-6CD7,U+6CE0,U+6CEB,U+6CEE-6CEF,U+6CF1,U+6CF6-6CF8,U+6CFA,U+6CFE,U+6D04,U+6D07,U+6D0C,U+6D0E,U+6D19-6D1A,U+6D27,U+6D2B,U+6D2E,U+6D33,U+6D35,U+6D39,U+6D43,U+6D48,U+6D4D,U+6D4F,U+6D52,U+6D54,U+6D5C,U+6D5E,U+6D60,U+6D63,U+6D6F,U+6D7C,U+6D91,U+6D93-6D94,U+6D9E,U+6DA0,U+6DAB,U+6DAE,U+6DBF,U+6DC5,U+6DC7,U+6DD9,U+6DDD-6DDE,U+6DE0,U+6DE6,U+6DFC,U+6E0C,U+6E0E,U+6E11,U+6E16,U+6E1A,U+6E25,U+6E2B,U+6E32,U+6E44,U+6E4E,U+6E53-6E54,U+6E5F,U+6E6B,U+6E6E,U+6E86,U+6E8F,U+6E98,U+6E9F,U+6EA5,U+6EA7,U+6EB1-6EB2,U+6EB4,U+6EB7,U+6EBB,U+6EBD,U+6EC2,U+6ECF,U+6ED5,U+6ED7,U+6EDF-6EE0,U+6EE2,U+6EF9,U+6F09,U+6F15,U+6F24,U+6F29-6F2A,U+6F2D,U+6F2F,U+6F36,U+6F46-6F47,U+6F4B,U+6F62,U+6F72,U+6F74,U+6F78,U+6F7A,U+6F7C,U+6F89,U+6F8C-6F8D,U+6FA7,U+6FB6,U+6FB9,U+6FC2,U+6FC9,U+6FD1,U+6FDE,U+6FE0-6FE1,U+6FEE-6FEF,U+701A-701B,U+7023,U+7035,U+7039,U+704F,U+705E,U+706C,U+7080,U+7085,U+7096,U+709C-709D,U+70AB,U+70B1,U+70B7,U+70BB,U+70C0,U+70CA,U+70E8,U+7110,U+7113,U+7116,U+7118,U+712F,U+7131,U+7145,U+714A,U+715C,U+7166,U+7168,U+7172-7173,U+7178,U+717A,U+7198,U+71A0,U+71A8,U+71B3,U+71B5,U+71B9,U+71D4,U+71E0,U+71E7,U+71F9,U+721D,U+7228,U+7230,U+723F,U+724D,U+7252,U+7256,U+725D,U+7266,U+726E-726F,U+727E-727F,U+7284,U+728B,U+728D,U+728F,U+7292,U+729F,U+7337,U+7352,U+738E,U+7391,U+739F,U+73A2,U+73AE,U+73B3,U+73B7,U+73BA,U+73C0,U+73C2,U+73C8-73C9,U+73CF,U+73D1,U+73D9,U+73DE,U+73E5,U+73E7,U+73E9,U+73F2,U+740A,U+740F,U+741A-741B,U+7425-7426,U+7428,U+742A,U+742C,U+742E,U+7430,U+7441,U+7455,U+7457,U+7459,U+745B-745C,U+746D,U+7477,U+747E,U+7480-7481,U+7487,U+748B,U+748E,U+7490,U+749C,U+749E,U+74A7-74A9,U+74BA,U+74D2,U+74EF,U+74F4,U+74FF,U+750F,U+7511,U+7513,U+752F,U+753E,U+757F,U+77F6,U+77F8,U+7800,U+7809,U+7811,U+7817-7818,U+781C-781D,U+782D,U+793B,U+7940,U+7946,U+7949,U+7953,U+7957,U+795A-795C,U+7960,U+7962,U+7967,U+796F,U+797A,U+7985,U+798A,U+799A,U+79A7,U+79B3,U+7E9F,U+7EA1,U+7EA3,U+7EA5,U+7EA8-7EA9,U+7EAD,U+7EB0,U+7EBE,U+7EC0-7EC2,U+7EC9,U+7ECB-7ECC,U+7ED0,U+7ED4,U+7ED7,U+7EDB,U+7EE0-7EE1,U+7EE8,U+7EEB,U+7EEE-7EEF,U+7EF1-7EF2,U+7EF6,U+7EFA-7EFB,U+7EFE,U+7F01-7F03,U+7F07-7F08,U+7F0B-7F0D,U+7F0F,U+7F11-7F12,U+7F17,U+7F19,U+7F1B-7F1C,U+7F1F,U+7F21-7F27,U+7F2A-7F2D,U+7F2F-7F33,U+7F35,U+7FBC,U+8004,U+8006,U+807F-8080,U+8093,U+809C,U+809F,U+80AB,U+80AD,U+80B1,U+80B4,U+80B7,U+80BC-80BD,U+80C2,U+80C4,U+80CD,U+80D7,U+80D9,U+80DB,U+80DD,U+80E7-80ED,U+80F1-80F2,U+80F4,U+80FC,U+810D-810E,U+8112,U+8118,U+811E,U+812C,U+8132,U+8136,U+8148,U+814C,U+8153,U+8159-815A,U+8160,U+8167,U+8169,U+816D,U+8171,U+8174,U+817C-817D,U+8182,U+8188,U+8191,U+81A3,U+81A6,U+81AA,U+81BB,U+81C1,U+81CA,U+81CC,U+81E7,U+8274,U+8662,U+8930,U+89C7,U+89CA-89CC,U+89CE-89D1,U+89F3,U+8B07,U+8C5A,U+8D32-8D33,U+8D36,U+8D3B,U+8D3D,U+8D40,U+8D45-8D49,U+8D4D,U+8D55,U+8D59,U+8E47,U+8ECE,U+8F6B,U+8F6D,U+8F71-8F73,U+8F75-8F7A,U+8F7C,U+8F7E,U+8F81-8F82,U+8F84,U+8F87,U+8F8B,U+8F8D-8F8F,U+8F98,U+8F9A,U+8FB6,U+8FD3,U+8FD5,U+8FE4-8FE6,U+8FE8-8FE9,U+8FEE,U+8FF3,U+9004-9005,U+900B,U+900D,U+9011,U+9016,U+9021,U+9026,U+902D,U+902F,U+9035-9036,U+9044,U+9050-9052,U+9058,U+905B,U+9062,U+9068,U+9074,U+907D,U+9082-9083,U+9088,U+908B,U+9095,U+95E9,U+95EB,U+95F1,U+95F3,U+95F5-95F6,U+95FC,U+95FE,U+9603-9604,U+9606,U+9608,U+960A-960D,U+960F,U+9612,U+9615-9617,U+9619-961A,U+96B3,U+97EA-97EC,U+987C,U+98D1-98D3,U+98D5,U+98D9-98DA,U+9A75,U+9A77-9A78,U+9A7A,U+9A7D,U+9A7F-9A81,U+9A85,U+9A88,U+9A8A,U+9A90,U+9A92-9A93,U+9A96,U+9A98,U+9A9B-9AA0,U+9AA2-9AA3,U+9AA5,U+9AA7,U+9B3B,U+9F51`}),Object.freeze({family:`Aha Hand`,file:`wenkai-gb-6-a238b41c.woff2`,bytes:307604,unicodeRange:`U+5D47,U+6549,U+659B,U+66A8,U+74DE,U+74E0,U+752C,U+753A,U+7540,U+7548,U+754B,U+754E,U+755B,U+7572,U+7579,U+7583,U+758B,U+7592,U+7594,U+7596,U+759D,U+75A0,U+75A3,U+75AC,U+75B0-75B1,U+75B3-75B4,U+75B8,U+75C2-75C4,U+75CD,U+75D6,U+75E3-75E4,U+75E6-75E8,U+75EB,U+75F1,U+75FC,U+75FF-7600,U+7603,U+7605,U+760A,U+760C,U+7610,U+7615,U+7617-7619,U+761B,U+7620,U+7622,U+7625,U+762D,U+7630,U+7633,U+7635,U+763C,U+763E-7640,U+7643,U+764D,U+7654,U+7656,U+765C,U+765E,U+766B,U+766F,U+7688,U+768E,U+7693,U+7699,U+76A4,U+76B2,U+76B4,U+76CD,U+76E5,U+76F1,U+76F9,U+7704,U+7707-7708,U+770D,U+7719-771A,U+7722,U+7726,U+772D,U+7735,U+7738,U+7743,U+7747,U+7750-7751,U+775A,U+7762,U+7765,U+7768,U+777D,U+777F-7780,U+778C-778D,U+7791,U+779F-77A0,U+77B0,U+77B5,U+77BD,U+77BF,U+77DC,U+77E7,U+77EC,U+781F,U+7823,U+7825-7826,U+7829,U+782C,U+7839-783C,U+7847,U+784C,U+784E,U+7850,U+7856-7857,U+786A,U+786D,U+7887,U+7893,U+789A-789C,U+78A1,U+78A3,U+78A5,U+78B2,U+78B9,U+78C9,U+78D4,U+78D9,U+78EC,U+78F2,U+78F4,U+7905,U+7913,U+791E,U+7924,U+7934,U+79D5,U+79E3,U+79EB,U+79ED,U+7A02-7A03,U+7A06,U+7A14,U+7A1E,U+7A23,U+7A37,U+7A39,U+7A51,U+7A70,U+7A78-7A79,U+7A80,U+7A86,U+7A88,U+7A95,U+7AA0,U+7AA6,U+7AA8,U+7AAC-7AAD,U+7AB3,U+7AE6,U+7AFA,U+7AFD,U+7B03-7B04,U+7B08,U+7B0A,U+7B0F,U+7B15,U+7B19,U+7B1E,U+7B20,U+7B24-7B25,U+7B2A-7B2B,U+7B2E,U+7B31,U+7B33,U+7B38,U+7B3E,U+7B45,U+7B47,U+7B4C,U+7B58,U+7B5A,U+7B5D,U+7B60,U+7B62,U+7B6E,U+7B71-7B72,U+7B75,U+7B7B,U+7B85,U+7B90,U+7B9C-7B9D,U+7BA2,U+7BA6-7BA8,U+7BAA-7BAC,U+7BB4,U+7BB8,U+7BC1,U+7BCC,U+7BD1,U+7BDA,U+7BDD,U+7BE5-7BE6,U+7BEA,U+7BFC,U+7BFE,U+7C0B-7C0C,U+7C0F,U+7C16,U+7C1F,U+7C26,U+7C2A,U+7C38,U+7C40-7C41,U+7C7C,U+7C91,U+7C9C-7C9E,U+7CA2,U+7CB2,U+7CBC-7CBD,U+7CC1,U+7CC5,U+7CC7-7CC8,U+7CCC-7CCD,U+7CD7,U+7CE8,U+7CF8,U+7D77,U+7DA6,U+7DAE,U+7E3B,U+7E47,U+7E9B,U+7F36,U+7F42,U+7F44-7F45,U+7F58,U+7F5F,U+7F61,U+7F68,U+7F71,U+7F74,U+7F79,U+7F7E,U+7F81,U+7F9D,U+7F9F,U+7FA7,U+7FAF-7FB0,U+7FB2,U+7FBF,U+7FCA,U+7FCE,U+7FD5,U+7FE1,U+7FE5-7FE6,U+7FE9,U+7FEE,U+7FF3,U+800B,U+8012,U+8014,U+8016,U+801C,U+8020,U+8022,U+8025-8029,U+8031,U+8035,U+8043,U+8046,U+804D,U+8052,U+8069,U+8071,U+80E5,U+81EC,U+81FE,U+8201-8202,U+8204,U+8210,U+8221-8223,U+8228,U+822B,U+822D,U+822F,U+8233-8234,U+8238,U+823B,U+823E,U+8244,U+8249,U+824B,U+824F,U+825A,U+825F,U+8268,U+826E,U+864D,U+8654,U+866C,U+866E,U+867A-867C,U+867F,U+868B,U+868D,U+8693,U+869D,U+86A3,U+86A7-86AA,U+86AC,U+86AF-86B1,U+86B4-86B6,U+86BA,U+86C4,U+86C9,U+86CE-86D1,U+86D8,U+86DE-86DF,U+86E9,U+86ED,U+86F1-86F4,U+86F8,U+8703,U+8707-870A,U+870D,U+8713,U+871A,U+871E,U+8722-8723,U+8725,U+8729,U+872E,U+8731,U+8734,U+8737,U+873B,U+873E-873F,U+8748,U+874C,U+8753,U+8759,U+8760,U+8763-8765,U+876E,U+8770,U+877B-877E,U+8782-8783,U+8785,U+8788,U+878B,U+8793,U+8797,U+87A8,U+87AB-87AD,U+87AF,U+87B3,U+87B5,U+87BD,U+87C0,U+87C6,U+87CA-87CB,U+87D1-87D3,U+87DB,U+87E0,U+87E5,U+87EA,U+87EE,U+87FE,U+880A,U+8813,U+8816,U+881B,U+8821,U+8832,U+8839,U+883C,U+8844,U+8864,U+8869,U+8872,U+887D-887F,U+8882,U+8885,U+8888,U+88A2,U+88B7,U+88BC,U+88C6,U+88C9,U+88CE,U+88D8,U+88DF,U+88E2-88E3,U+88E5,U+88E8,U+88F0-88F1,U+88FC,U+88FE,U+890A,U+8913,U+8919-891B,U+8921,U+892B,U+8934,U+8936,U+8941,U+895E,U+8966,U+897B,U+8983,U+89D6,U+89DA,U+89DC,U+89DE,U+89E5,U+89EB,U+89EF,U+8A3E,U+8A48,U+8B26,U+8C47,U+8C49,U+8C55,U+8C78,U+8C82,U+8C85,U+8C8A,U+8C94,U+8C98,U+8D67,U+8D6D,U+8D73,U+8D84,U+8D91,U+8D94,U+8DB1,U+8DB5,U+8DB8,U+8DBA,U+8DBC,U+8DBF,U+8DC4,U+8DC6,U+8DCE-8DCF,U+8DD6-8DD7,U+8DDA-8DDB,U+8DDE,U+8DE3-8DE4,U+8DEB-8DEC,U+8DF7-8DF9,U+8DFB,U+8DFD,U+8E05,U+8E09,U+8E14,U+8E1D,U+8E1F,U+8E23,U+8E2C,U+8E2E-8E2F,U+8E31,U+8E35,U+8E39-8E3A,U+8E3D,U+8E40-8E42,U+8E49-8E4A,U+8E51-8E52,U+8E59,U+8E69,U+8E6F-8E70,U+8E74,U+8E76,U+8E7C,U+8E85,U+8E8F-8E90,U+8E94,U+8E9C,U+8E9E,U+914A,U+914E-9150,U+9161-9162,U+9164,U+9169,U+916F-9170,U+9172,U+9174,U+9179,U+917D-917E,U+9185,U+918C-918D,U+9190-9191,U+91A2-91A3,U+91AA,U+91AD-91AF,U+91B4-91B5,U+91BA,U+928E,U+92AE,U+92C8,U+933E,U+936A,U+938F,U+93CA,U+93D6,U+943E,U+946B,U+9485-9487,U+948A-948D,U+948F-9490,U+9494-9495,U+9497,U+949A-949C,U+94A3-94A4,U+94AA-94AD,U+94AF-94B0,U+94B2,U+94B4,U+94B6-94BA,U+94BC-94BD,U+94BF,U+94C4,U+94C8-94CE,U+94D0-94D2,U+94D5-94D9,U+94DB,U+94DE-94E0,U+94E2,U+94E4-94E5,U+94E7-94EB,U+94EE-94EF,U+94F3-94F5,U+94F7,U+94F9,U+94FC-94FD,U+94FF,U+9502-9503,U+9506-9507,U+9509-950A,U+950D-950F,U+9512-9516,U+9518,U+951B,U+951D-951F,U+9522,U+9529-952C,U+9531-9532,U+9534-9538,U+953A,U+953C,U+953E-953F,U+9542,U+9544-9546,U+9549,U+954C,U+954E-954F,U+9552-9554,U+9556-9559,U+955B,U+955D-955F,U+9561-9562,U+9564-956C,U+956F,U+9571-9573,U+96B9,U+96BC-96BD,U+96C9,U+96CE,U+96D2,U+96E0,U+96E9,U+96EF,U+96F3,U+9701,U+9706,U+9708,U+970E-970F,U+972A,U+972D,U+9730,U+973E,U+9753,U+977C,U+9785,U+9791-9792,U+9794,U+97A3,U+97AB,U+97AF,U+97B2,U+97B4,U+9878,U+9880,U+9883,U+9889,U+988C-988D,U+988F,U+9894,U+989A-989B,U+989E-989F,U+98A1-98A2,U+98A5-98A6,U+98E8,U+990D,U+992E,U+9954-9955,U+99A5,U+9AB0-9AB1,U+9AB6-9AB7,U+9ABA,U+9ABC,U+9AC0-9AC2,U+9AC5,U+9ACB-9ACC,U+9AD1,U+9ADF,U+9AE1,U+9AE6,U+9AEB,U+9AED,U+9AEF,U+9AF9,U+9AFB,U+9B08,U+9B0F,U+9B13,U+9B1F,U+9B23,U+9B43,U+9B45,U+9B47-9B49,U+9B4D,U+9B51,U+9C7F,U+9C82,U+9C85-9C88,U+9C8B,U+9C8E,U+9C90-9C92,U+9C94-9C95,U+9C9A-9C9B,U+9C9E-9CA3,U+9CA5-9CA9,U+9CAB,U+9CAD-9CAE,U+9CB0-9CB7,U+9CBA-9CBD,U+9CC4-9CC7,U+9CCA-9CD0,U+9CD3-9CD5,U+9CD7-9CD9,U+9CDC-9CDD,U+9CDF,U+9CE2,U+9E20,U+9E22,U+9E28-9E2C,U+9E31-9E32,U+9E36-9E3A,U+9E3E,U+9E41-9E42,U+9E44,U+9E46-9E49,U+9E4B-9E4C,U+9E4E,U+9E51,U+9E55,U+9E57-9E58,U+9E5A-9E5C,U+9E5E,U+9E63,U+9E66-9E6D,U+9E71,U+9E73,U+9E7E,U+9E82,U+9E87-9E88,U+9E8B,U+9E92,U+9E9D,U+9E9F,U+9EB4,U+9EB8,U+9EBD-9EBE,U+9ECF,U+9EDB-9EDD,U+9EDF-9EE0,U+9EE2,U+9EE5,U+9EE7,U+9EE9-9EEA,U+9EEF,U+9EF9,U+9EFB-9EFC,U+9EFE,U+9F0B,U+9F0D,U+9F22,U+9F2C,U+9F2F,U+9F37,U+9F39,U+9F3D-9F3E,U+9F44,U+9F80,U+9F83,U+9F85-9F8A,U+9F8C,U+9F9B`})]),Rp=`'Aha Hand Latin','Aha Hand','Segoe Print','Ink Free','Bradley Hand','Chalkboard SE','Noteworthy','Comic Sans MS','LXGW WenKai','Kaiti SC','STKaiti','KaiTi','楷体',cursive`,zp=Lp.map(e=>`@font-face{font-family:'${e.family}';font-style:normal;font-weight:400;font-display:swap;src:url('api/aha-tutor/font?f=${e.file}') format('woff2');unicode-range:${e.unicodeRange}}`).join(`
280
+ `),$=e=>`calc(${e}*var(--aha-px))`,Bp=`${zp}
280
281
  .aha{container-type:inline-size;container-name:aha;--aha-text-scale:1;--aha-px:calc(var(--dsh-content-font-size,14px)/14*var(--aha-text-scale));--aha-gap:12px;--aha-radius:var(--dsw-radius-md,12px);--aha-text:var(--dsw-alias-label-primary,#1f2328);--aha-muted:var(--dsw-alias-label-tertiary,#6b7280);--aha-dim:var(--dsw-alias-label-caption,#9ca3af);--aha-border:var(--dsw-alias-border-l2,#e5e7eb);--aha-bg:var(--dsw-alias-bg-base,#fafafa);--aha-surface:var(--dsw-alias-bg-layer-1,#fff);--aha-soft:var(--dsw-alias-bg-module-platform,#f4f5f7);--aha-hover:var(--dsw-alias-interactive-bg-hover,rgba(0,0,0,.05));--aha-brand:var(--dsw-alias-state-business-primary,#3b6cf6);--aha-primary-bg:var(--dsw-alias-brand-primary,#111);--aha-primary-fg:var(--dsw-alias-label-primary-inverted,#fff);--aha-ok:var(--dsw-alias-state-success-primary,#1f9d55);--aha-bad:var(--dsw-alias-state-error-primary,#d64545);
281
282
  position:relative;display:flex;flex:1 1 auto;height:100%;min-height:0;overflow:hidden;background:var(--aha-bg);color:var(--aha-text);font-size:${$(15)};line-height:1.6;box-sizing:border-box}
282
283
  .aha[data-text=large]{--aha-text-scale:1.15}
@@ -619,6 +620,21 @@ a.aha-btn{text-decoration:none}
619
620
  /* "Something wrong with this question?", the teacher's check of it, and a question it fixed. */
620
621
  .aha-itemFlag{display:block;margin:6px 0 0 auto;padding:0 10px;border:1px solid var(--aha-border);border-radius:999px;background:var(--aha-surface);color:var(--aha-muted);font:inherit;font-size:${$(13.5)};line-height:${$(25.5)};white-space:nowrap;cursor:pointer}
621
622
  .aha-itemFlag:hover{color:var(--aha-text);border-color:var(--aha-muted)}
623
+ /* 「讲这题」 beside it: stronger when the answer was not right. */
624
+ .aha-feedbackActions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px;margin-top:6px}
625
+ .aha-feedbackActions .aha-itemFlag{margin:0}
626
+ .aha-explainFlag[data-strong=true]{border-color:var(--aha-primary-bg);background:var(--aha-primary-bg);color:var(--aha-primary-fg)}
627
+ .aha-explainFlag[data-strong=true]:hover{color:var(--aha-primary-fg);border-color:var(--aha-primary-bg);opacity:.88}
628
+ .aha-mistakeMeta .aha-mistakeExplain{margin:0 0 0 auto;line-height:${$(22)}}
629
+ /* The board of 「讲这题」, over the page it was opened from. */
630
+ .aha-explainBack{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(0,0,0,.35)}
631
+ .aha-explain{display:flex;flex-direction:column;gap:10px;width:min(1240px,100%);height:min(900px,100%);padding:12px 14px 14px;border-radius:16px;border:1px solid var(--aha-border);background:var(--aha-bg);box-shadow:0 18px 50px rgba(0,0,0,.25);outline:none}
632
+ .aha-explainBar{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px}
633
+ .aha-explainName{font-size:${$(15)}}
634
+ .aha-explainSaved{flex:1 1 200px;min-width:0}
635
+ .aha-explainBar .aha-btn{margin-left:auto}
636
+ .aha-explainBody{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
637
+ @container aha (max-width:640px){.aha-explainBack{padding:0}.aha-explain{height:100%;border-radius:0;border:0;padding:10px 12px}}
622
638
  .aha-challengeBox.aha-itemChallenge{align-self:stretch;width:auto}
623
639
  .aha-itemCheck{display:flex;flex-direction:column;gap:4px;padding:8px 12px;border:1px solid var(--aha-border);border-left:3px solid var(--aha-brand);border-radius:0 10px 10px 0;background:var(--aha-surface);font-size:${$(14.5)}}
624
640
  .aha-itemCheck[data-verdict=wrong],.aha-itemCheck[data-verdict=unclear],.aha-itemCheck[data-verdict=misgraded]{border-left-color:var(--aha-ok)}
@@ -628,7 +644,7 @@ a.aha-btn{text-decoration:none}
628
644
 
629
645
  /* ── the board ─────────────────────────────────────────────────────────── */
630
646
  .aha-board{--desk:#ecebe4;--ink:#23262f;--ink-soft:#4a4f5c;--head:#1f4fb8;--marker:rgba(255,214,79,.62);--accent:#d64545;--accent2:#2f9e6e;--paper:#fdfcf8;--grid:rgba(40,50,80,.05);--note:#fff7da;--note-line:#e9c45a;--pencil:#c98a2c;
631
- position:relative;flex:1 1 auto;min-height:0;container-type:inline-size;container-name:board;background:var(--paper);background-image:radial-gradient(var(--grid) 1px,transparent 1.2px);background-size:22px 22px;color:var(--ink);font-family:${Np};overflow:hidden}
647
+ position:relative;flex:1 1 auto;min-height:0;container-type:inline-size;container-name:board;background:var(--paper);background-image:radial-gradient(var(--grid) 1px,transparent 1.2px);background-size:22px 22px;color:var(--ink);font-family:${Rp};overflow:hidden}
632
648
  .aha-board[data-font=standard]{font-family:inherit}
633
649
  .aha-board[data-theme=dark]{--desk:#141a17;--ink:#ecebe4;--ink-soft:#c9c8bf;--head:#9cc2ff;--marker:rgba(214,178,58,.45);--accent:#ff8a80;--accent2:#7fd6a8;--paper:#1d2622;--grid:rgba(255,255,255,.05);--note:#2a3530;--note-line:#8f7a2f;--pencil:#e7c27a}
634
650
  .aha-boardScroll{position:absolute;inset:0;overflow:auto;padding:22px 30px 40px}
@@ -701,7 +717,7 @@ a.aha-btn{text-decoration:none}
701
717
  .aha-prepStages li[data-state=done]::before{content:'✓';background:var(--aha-ok)}
702
718
  .aha-prepNow{font-size:${$(15)};line-height:${$(23.5)}}
703
719
  .aha-prepHint{font-size:${$(16)}}
704
- .aha-prepHint[data-hand=true]{font-family:${Np};font-size:${$(17)}}
720
+ .aha-prepHint[data-hand=true]{font-family:${Rp};font-size:${$(17)}}
705
721
  .aha-buffering{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content;max-width:calc(100% - 28px);display:flex;align-items:center;gap:10px;padding:10px 16px;border-radius:12px;background:var(--aha-surface);border:1px solid var(--aha-border);color:var(--aha-text);font-family:inherit;z-index:4}
706
722
  @container board (max-width:640px){.aha-cols{grid-template-columns:1fr}.aha-boardScroll{padding:16px}.aha-frame{padding:16px}}
707
723
  /* The canvas view: every page as a frame on a desk that pans and zooms. */
@@ -746,14 +762,13 @@ a.aha-btn{text-decoration:none}
746
762
  .aha-flash[data-flipped=true] .aha-flashInner{transform:rotateY(180deg)}
747
763
  .aha-flashFace{grid-area:1/1;min-width:0;backface-visibility:hidden;display:flex;align-items:center;justify-content:center;text-align:center;padding:26px;border:1px solid var(--aha-border);border-radius:16px;background:var(--aha-surface);font-size:${$(22)};line-height:1.5}
748
764
  .aha-flashBack{transform:rotateY(180deg)}
749
- `,Ip=Object.freeze({missing:`Figure not drawn`,animation:`Animation could not play`}),Lp=1280,Rp={light:{paper:`#fdfcf8`,dot:`rgba(40,50,80,0.07)`,ink:`#23262f`,soft:`#4a4f5c`,head:`#1f4fb8`,marker:`rgba(255,214,79,0.62)`,accent:`#d64545`,note:`#fff7da`,noteLine:`#e9c45a`,pencil:`#c98a2c`},dark:{paper:`#1d2622`,dot:`rgba(255,255,255,0.06)`,ink:`#ecebe4`,soft:`#c9c8bf`,head:`#9cc2ff`,marker:`rgba(214,178,58,0.45)`,accent:`#ff8a80`,note:`#2a3530`,noteLine:`#8f7a2f`,pencil:`#e7c27a`}};function zp(){return typeof MediaRecorder==`function`&&typeof document.createElement(`canvas`).captureStream==`function`}function Bp(){for(let e of[`video/webm;codecs=vp9,opus`,`video/webm;codecs=vp8,opus`,`video/webm`])if(MediaRecorder.isTypeSupported?.(e))return e;return``}let Vp=Np;function Hp(e,t=400){return`${t} ${e}px ${Vp}`}let Up=/^[,。、;:!?)」』”’》〉】〕…‥·,.;:!?)\]}%]/u,Wp=/[(「『“‘《〈【〔(\[{]$/u;function Gp(e,t,n){let r=[];for(let i of String(t).split(`
750
- `)){let t=``,a=i.match(/[ -鿿가-힯＀-￯]|[^\s -鿿가-힯＀-￯]+|\s+/gu)??[];for(let i of a){let a=t+i;if(e.measureText(a).width>n&&t.trim()&&!Up.test(i)){let e=``;Wp.test(t)&&t.length>1&&(e=t.slice(-1),t=t.slice(0,-1)),r.push(t.trimEnd()),t=(e+i).trimStart()}else t=a}r.push(t.trimEnd())}return r}function Kp(e,t,n){if(!e)return e;let r=n===`dark`?`[stroke="#2b2b2b"],[stroke="#23262f"]{stroke:${t.ink}}[fill="#2b2b2b"],[fill="#23262f"]{fill:${t.ink}}`:``,i=`<style>svg{color:${t.ink}}text:not([fill]){fill:${t.ink}}${r}</style>`;return e.replace(/<svg\b[^>]*>/iu,e=>e.endsWith(`/>`)?e:`${e}${i}`)}function qp(e){return new Promise(t=>{if(!e){t(null);return}let n=new Image;n.onload=()=>t(n),n.onerror=()=>t(null),n.src=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`})}async function Jp(e,t,n,r,i=Ip){let a=[],o=[{title:``}],s=0,c=132,l=()=>64+s*600,u=()=>{if(s===0)s=1;else{let e=o[o.length-1];o.push({title:e.title,inherits:e.inherits??o.length===1}),s=0}c=132},d=(e,t)=>{c>132&&c+e>602&&u(),a.push({...t,page:o.length-1,x:l(),y:c,h:e}),c+=e+14};for(let[l,f]of t.entries())for(let[t,p]of f.ops.entries()){let f={op:p,stepIndex:l,opIndex:t};if(p.t===`page`){a.some(e=>e.page===o.length-1)?(o.push({title:p.title??``}),s=0,c=132):o[o.length-1].title=p.title??``;continue}if(p.t===`col`){u();continue}if(p.t===`mark`)continue;if(p.t===`title`){a.some(e=>e.page===o.length-1)?(o.push({title:p.text}),s=0,c=132):o[o.length-1].title=p.text,a.push({...f,page:o.length-1,kind:`title`,text:au(p.text)});continue}if(p.t===`h`||p.t===`p`||p.t===`note`||p.t===`math`||p.t===`list`){let t=p.t===`h`?31:p.t===`math`?28:25;e.font=Hp(t,p.t===`h`?700:400);let r=Gp(e,p.t===`math`?p.text||iu(p.tex):p.t===`list`?p.items.map((e,t)=>`${p.ordered?`${t+1}.`:`•`} ${au(e)}`).join(`
751
- `):au(p.text),552-(p.t===`note`?28:0)),i=Math.round(t*1.42);d(r.length*i+(p.t===`note`?22:0),{...f,kind:`text`,size:t,weight:p.t===`h`?700:400,lines:r,lineHeight:i,color:p.t===`h`?n.head:n.ink,center:p.t===`math`,note:p.t===`note`,marker:p.t===`h`});continue}let m=p.t===`svg`?$c(p.svg):p.t===`anim`&&p.poster?$c(p.poster):``,h=p.t===`chart`?Tn(p):p.t===`plot`?Kc(p):m?fl(m,{font:Vp}):``,g=h?await qp(Kp(h,n,r)):null;if(g){let e=g.naturalHeight/Math.max(1,g.naturalWidth)||.62,t=Math.min(552,g.naturalWidth||552),n=Math.min(300,t*e);d(n+(p.caption?30:0),{...f,kind:`image`,image:g,w:n/e,imageH:n,caption:p.caption??``});continue}if(p.t===`missing`||p.t===`svg`||p.t===`chart`||p.t===`plot`){e.font=Hp(22);let t=Gp(e,`⚠ ${p.t===`missing`&&p.of===`anim`?i.animation:i.missing}${p.caption?` · ${p.caption}`:``}`,524);d(t.length*32+22,{...f,kind:`text`,size:22,weight:400,lines:t,lineHeight:32,color:n.soft,note:!0});continue}if(p.t===`table`){let e=[p.head,...p.rows].filter(e=>e.length).slice(0,10);d(e.length*34+6,{...f,kind:`table`,rows:e});continue}if(p.t===`code`){let e=p.code.split(`
752
- `).slice(0,14);d(e.length*24+20,{...f,kind:`code`,lines:e});continue}p.t===`anim`&&d(90,{...f,kind:`text`,size:22,weight:400,lines:[`▶ ${p.caption||`animation`}`],lineHeight:32,color:n.soft,note:!0})}return{items:a,pages:o}}function Yp(e,t){e.fillStyle=t.paper,e.fillRect(0,0,Lp,720),e.fillStyle=t.dot;for(let t=12;t<Lp;t+=24)for(let n=12;n<720;n+=24)e.fillRect(t,n,1.6,1.6)}function Xp(e,t,n,r){e.save(),e.translate(t,n),e.rotate(-.6),e.fillStyle=r.pencil,e.fillRect(0,-5,34,10),e.fillStyle=r.accent,e.fillRect(34,-5,7,10),e.beginPath(),e.moveTo(0,-5),e.lineTo(-10,0),e.lineTo(0,5),e.closePath(),e.fillStyle=r.ink,e.fill(),e.restore()}function Zp(e,t,n,r){if(t.kind!==`title`){if(t.kind===`text`){e.font=Hp(t.size,t.weight),e.textBaseline=`top`,t.note&&(e.fillStyle=r.note,e.strokeStyle=r.noteLine,e.lineWidth=2,e.beginPath(),e.roundRect?.(t.x,t.y,552,t.h,12),e.fill(),e.stroke());let i=t.lines.reduce((e,t)=>e+[...t].length,0),a=Math.floor(i*n),o=null;t.lines.forEach((n,i)=>{if(a<=0)return;let s=[...n],c=s.slice(0,a).join(``);a-=s.length;let l=e.measureText(c).width,u=t.center?t.x+(552-e.measureText(n).width)/2:t.x+(t.note?14:0),d=t.y+(t.note?11:0)+i*t.lineHeight;t.marker&&(e.fillStyle=r.marker,e.fillRect(u-2,d+t.size*.62,l+4,t.size*.38)),e.fillStyle=t.color,e.fillText(c,u,d),o={x:u+l,y:d+t.size}}),o&&n<1&&Xp(e,o.x,o.y,r);return}if(t.kind===`image`){e.save(),e.beginPath(),e.rect(t.x,t.y,t.w*n,t.imageH),e.clip(),e.drawImage(t.image,t.x,t.y,t.w,t.imageH),e.restore(),t.caption&&n>=1&&(e.font=Hp(18),e.fillStyle=r.soft,e.textBaseline=`top`,e.fillText(t.caption,t.x,t.y+t.imageH+6)),n<1&&Xp(e,t.x+t.w*n,t.y+t.imageH/2,r);return}if(t.kind===`table`){let i=t.rows.slice(0,Math.max(1,Math.ceil(t.rows.length*n))),a=Math.max(...t.rows.map(e=>e.length)),o=552/Math.max(1,a);e.font=Hp(19),e.textBaseline=`middle`,e.strokeStyle=r.soft,e.lineWidth=1.4,i.forEach((n,i)=>{n.forEach((n,a)=>{let s=t.x+a*o,c=t.y+i*34;e.strokeRect(s,c,o,34),e.fillStyle=i===0?r.head:r.ink;let l=au(n);for(;l.length>1&&e.measureText(l).width>o-12;)l=`${l.slice(0,-2)}…`;e.fillText(l,s+6,c+17)})});return}t.kind===`code`&&(e.fillStyle=`rgba(0,0,0,0.06)`,e.fillRect(t.x,t.y,552,t.h),e.font=`17px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace`,e.fillStyle=r.ink,e.textBaseline=`top`,t.lines.slice(0,Math.ceil(t.lines.length*n)).forEach((n,r)=>e.fillText(n.slice(0,60),t.x+10,t.y+10+r*24)))}}let Qp=()=>`500 25px ${Vp}`;function $p(e,t,n){let r=[];for(let t of e){let e=n(t);for(let t=0;t<e.length;t+=2){let n=e.slice(t,t+2),i=[...n.join(``)].length;i&&r.push({lines:n,length:i})}}let i=r.reduce((e,t)=>e+t.length,0)||1,a=0;return r.map(e=>{let n=a/i*t;return a+=e.length,{start:n,lines:e.lines}})}function em(e,t){if(!(t>=0))return null;let n=null;for(let r of e){if(r.start>t)break;n=r}return n}function tm(e,t){if(!t?.length)return;e.font=Qp();let n=t.length*34+24;e.fillStyle=`rgba(15,18,24,0.72)`,e.beginPath(),e.roundRect?.(80,720-n-18,Lp-160,n,14),e.fill(),e.fillStyle=`#ffffff`,e.textBaseline=`top`,t.forEach((t,r)=>e.fillText(t,(Lp-e.measureText(t).width)/2,720-n-6+r*34))}function nm(e,t,n){e.font=`600 17px ${Vp}`,e.fillStyle=n.soft,e.globalAlpha=.65,e.textBaseline=`top`,e.fillText(t,Lp-e.measureText(t).width-26,22),e.globalAlpha=1}function rm(e,t,n){if(!e.say||!e.ops.length||!e.ops.some(e=>Number.isInteger(e.at)))return null;let r=cu(e.say).map(e=>[...au(e)].length),i=r.reduce((e,t)=>e+t,0)||1,a=0,o=r.map(e=>{let t=a/i*n;return a+=e,t}),s=Math.max(0,r.length-1),c=0;return e.ops.map((e,n)=>{let r=Math.max(c,o[Math.min(e.at??0,s)]??0);return c=r+t[n],r})}async function im({steps:e,title:t,fetchAudio:n,watermark:r,theme:i=`light`,font:a=`hand`,labels:o=Ip,onProgress:s,signal:c}){if(!zp())throw Error(`unsupported`);if(Vp=a===`standard`?getComputedStyle(document.body).fontFamily||`system-ui,sans-serif`:Np,a!==`standard`&&document.fonts?.load){let t=`${pu(e)}${e.map(e=>au(e.say)).join(``)}`,n=Promise.all([`Aha Hand Latin`,`Aha Hand`].map(e=>document.fonts.load(`25px '${e}'`,t))).catch(()=>void 0);await Promise.race([n,new Promise(e=>{setTimeout(e,8e3)})])}let l=Rp[i]??Rp.light,u=document.createElement(`canvas`);u.width=Lp,u.height=720;let d=u.getContext(`2d`),{items:f,pages:p}=await Jp(d,e,l,i,{...Ip,...o}),m=null,h=[];if(n){m=new AudioContext;for(let[t,r]of e.entries()){if(c?.throwIfAborted(),s?.({phase:`audio`,done:t,total:e.length}),!r.say){h.push(null);continue}try{let e=await n(au(r.say)),t=e.blob?await e.blob.arrayBuffer():Uint8Array.from(atob(e.base64),e=>e.charCodeAt(0)).buffer;h.push(await m.decodeAudioData(t))}catch{h.push(null)}}}let g=[],_=700;d.font=Qp();for(let[t,n]of e.entries()){let e=h[t]?h[t].duration*1e3:ht(n.say),r=vt(n,{speechMs:e}),i=rm(n,r.writeMs,e),a=i?Math.max(r.durationMs,i.at(-1)+r.writeMs.at(-1)+350):r.durationMs,o=$p(cu(n.say).map(au),e,e=>Gp(d,e,1080));g.push({start:_,end:_+a,writes:r.writeMs,starts:i,captions:o}),_+=a}let v=_+1500,y=t=>{let n=g.findIndex(e=>t<e.end);if(n<0)return{index:e.length,op:0,progress:1};let r=g[n],i=Math.max(0,t-r.start);if(r.starts){for(let e=0;e<r.writes.length;e+=1){let t=r.starts[e];if(i<t)return{index:n,op:e,progress:0};if(i<t+r.writes[e])return{index:n,op:e,progress:(i-t)/Math.max(1,r.writes[e])}}return{index:n,op:r.writes.length,progress:1}}let a=0;for(let e=0;e<r.writes.length;e+=1){if(i<a+r.writes[e])return{index:n,op:e,progress:(i-a)/Math.max(1,r.writes[e])};a+=r.writes[e]}return{index:n,op:r.writes.length,progress:1}},b=n=>{let i=y(n),a=e=>e.stepIndex<i.index?1:e.stepIndex>i.index?0:e.opIndex<i.op?1:e.opIndex>i.op?0:i.progress,o=f.filter(e=>a(e)>0),s=o.length?Math.max(...o.map(e=>e.page)):0;Yp(d,l);let c=p[s]?.title||(s===0||p[s]?.inherits?t:``);if(c){d.font=Hp(40,700),d.textBaseline=`top`;let e=d.measureText(c).width;d.fillStyle=l.marker,d.fillRect(60,74,e+8,18),d.fillStyle=l.head,d.fillText(c,64,52)}for(let e of o)e.page===s&&Zp(d,e,a(e),l);tm(d,i.index<e.length?em(g[i.index].captions,n-g[i.index].start)?.lines:null),r&&nm(d,r,l)};b(0);let x=u.captureStream(30),S=0;if(m){await m.resume();let e=m.createMediaStreamDestination();S=m.currentTime+.4,h.forEach((t,n)=>{if(!t)return;let r=m.createBufferSource();r.buffer=t,r.connect(e),r.start(S+g[n].start/1e3)});for(let t of e.stream.getAudioTracks())x.addTrack(t)}let C=Bp(),w=new MediaRecorder(x,{...C?{mimeType:C}:{},videoBitsPerSecond:4e6}),T=[];w.ondataavailable=e=>{e.data?.size&&T.push(e.data)};let E=new Promise(e=>{w.onstop=e});w.start(1e3);let D=performance.now(),O=()=>m?(m.currentTime-S)*1e3:performance.now()-D;await new Promise((e,t)=>{let n=()=>{if(c?.aborted){t(c.reason??Error(`cancelled`));return}let r=O();b(Math.max(0,r)),s?.({phase:`record`,done:Math.min(v,Math.max(0,r)),total:v}),r>=v?e():requestAnimationFrame(n)};requestAnimationFrame(n)}).finally(()=>{w.state!==`inactive`&&w.stop()}),await E;for(let e of x.getTracks())e.stop();return await m?.close().catch(()=>void 0),new Blob(T,{type:C||`video/webm`})}function am(){let{api:e,t,settings:n,toast:i}=v(),a=w(),[o,s]=(0,r.useState)(null),c=(0,r.useRef)(null);(0,r.useEffect)(()=>()=>c.current?.abort(),[]);async function l({steps:r,title:l}){if(!r?.length||o)return;if(!zp()){i(t(`exportUnsupported`));return}let u=new AbortController;c.current=u,s({percent:0});try{let i=await im({steps:r,title:l,theme:n.boardTheme===`dark`||n.boardTheme!==`light`&&a?`dark`:`light`,font:n.boardFont===`standard`?`standard`:`hand`,labels:{missing:t(`figureMissing`),animation:t(`animationFailed`)},watermark:`${t(`appName`)} · ${t(`appTagline`)}`,fetchAudio:n.voiceEngine===`cloud`?t=>Lt(e,t):null,signal:u.signal,onProgress:e=>s({percent:Math.round(e.done/Math.max(1,e.total)*100),phase:e.phase})});g(`${m(l)}.webm`,i)}catch(e){u.signal.aborted||i(e.message===`unsupported`?t(`exportUnsupported`):e?.code?Ju(t,e):t(`exportFailed`))}finally{s(null)}}return{exporting:o,start:l,cancel:()=>c.current?.abort(),cloud:n.voiceEngine===`cloud`}}function om({courseId:e,lessonId:t}){let{api:n,t:a,navigate:o}=v(),s=y(()=>n.call(`lesson/get`,{courseId:e,lessonId:t}),[e,t]),[c,l]=(0,r.useState)(null),[u,d]=(0,r.useState)(null),[f,p]=(0,r.useState)(!1),[m,h]=(0,r.useState)(0),g=(0,r.useRef)(null),_=am();if((0,r.useEffect)(()=>{if(!s.value)return;if(s.value.board&&m===0){l({steps:s.value.board.steps,stream:null});return}let r=!0;return n.call(`lesson/prepare`,{courseId:e,lessonId:t,force:m>0}).then(e=>{r&&l(e.board?{steps:e.board.steps,stream:null}:{steps:[],stream:e.job})}).catch(e=>{r&&d(e)}),()=>{r=!1}},[s.value,m]),(0,r.useEffect)(()=>()=>clearTimeout(g.current),[]),s.loading&&!s.value)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Hu,{label:a(`loading`)})});if(!s.value)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Yu,{error:s.error})});let{lesson:b,unit:x,lecture:S,language:C,state:w}=s.value,T=w?.status===`learning`?Math.max(0,w.stepIndex??0):0;return(0,i.jsxs)(`div`,{className:`aha-page`,"data-wide":`true`,children:[u?(0,i.jsx)(Yu,{error:u}):null,c?(0,i.jsx)(ef,{scope:{kind:`lesson`,courseId:e,lessonId:t},title:b.title,crumb:(0,i.jsxs)(i.Fragment,{children:[x.title,` · `,S.title,s.value.sources?.length?(0,i.jsxs)(i.Fragment,{children:[` `,(0,i.jsx)(ad,{sources:s.value.sources})]}):null]}),steps:c.steps,stream:c.stream,asides:m===0?s.value.asides??[]:[],objectives:b.objectives??[],language:C,startIndex:c.stream?0:T,onPosition:r=>{clearTimeout(g.current),g.current=setTimeout(()=>{n.call(`lesson/position`,{courseId:e,lessonId:t,stepIndex:r}).catch(()=>void 0)},800)},onEnded:()=>p(!0),onStreamDone:e=>{e?.board?.steps?.length&&l(t=>({...t,steps:e.board.steps}))},header:({steps:n})=>(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>o(`course`,{courseId:e}),children:[`← `,a(`backToCourse`)]}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>o(`practice`,{courseId:e,lessonId:t}),children:a(`practice`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,disabled:!n.length,title:a(`handoutHint`),onClick:()=>o(`handout`,{courseId:e,lessonId:t}),children:a(`handout`)}),(0,i.jsx)(jp,{steps:n,title:b.title}),_.exporting?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Hu,{label:a(`exporting`,{percent:_.exporting.percent})}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:_.cancel,children:a(`cancel`)})]}):(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,disabled:!c.steps.length,title:_.cloud?``:a(`exportNeedsCloud`),onClick:()=>_.start({steps:c.steps,title:b.title}),children:a(`exportVideo`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>{l(null),p(!1),h(e=>e+1)},children:a(`regenerateLesson`)})]})},`${m}`):(0,i.jsx)(Hu,{label:a(`preparingLesson`)}),f?(0,i.jsx)(sm,{courseId:e,lessonId:t,onClose:()=>p(!1)}):null]})}function sm({courseId:e,lessonId:t,onClose:n}){let{api:a,t:o,navigate:s}=v(),[c,l]=(0,r.useState)(null),[u,d]=(0,r.useState)(null),[f,p]=(0,r.useState)(!1),[m,h]=(0,r.useState)(null);async function g(n){l(n),p(!0);try{d(await a.call(`lesson/complete`,{courseId:e,lessonId:t,selfRating:n}))}catch(e){h(e)}finally{p(!1)}}return(0,i.jsxs)(Ku,{title:o(`lessonDone`),onClose:n,children:[u?(0,i.jsxs)(`div`,{className:`aha-col`,children:[u.inserted?(0,i.jsx)(`div`,{className:`aha-feedback`,children:o(`remedialAdded`,{title:u.inserted.title})}):null,u.recommendation?.action===`challenge`?(0,i.jsx)(`div`,{className:`aha-feedback`,"data-ok":`true`,children:o(`challengeNote`)}):null,(0,i.jsxs)(`div`,{className:`aha-row`,children:[u.next?(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:()=>s(`lesson`,{courseId:e,lessonId:u.next.id},{replace:!0}),children:[o(`nextLesson`),`: `,u.next.title]}):null,(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>s(`practice`,{courseId:e,lessonId:t}),children:o(`doPractice`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>s(`handout`,{courseId:e,lessonId:t}),children:o(`handoutOfLesson`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>s(`course`,{courseId:e},{replace:!0}),children:o(`backToCourse`)})]})]}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`p`,{children:o(`selfRate`)}),(0,i.jsx)(`div`,{className:`aha-row`,children:[[1,`rate1`],[2,``],[3,`rate3`],[4,``],[5,`rate5`]].map(([e,t])=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"data-active":c===e,disabled:f,onClick:()=>g(e),children:[e,t?` · ${o(t)}`:``]},e))}),f?(0,i.jsx)(Hu,{}):null]}),(0,i.jsx)(Yu,{error:m})]})}let cm=e=>e.replace(/[.*+?^${}()|[\]\\]/gu,`\\$&`);function lm({text:e,query:t}){let n=[...new Set(t.split(/\s+/u).filter(Boolean))].sort((e,t)=>t.length-e.length);if(!n.length)return e;let a=RegExp(`(${n.map(cm).join(`|`)})`,`giu`);return e.split(a).map((e,t)=>t%2?(0,i.jsx)(`mark`,{children:e},t):(0,i.jsx)(r.Fragment,{children:e},t))}function um(){let{api:e,t,navigate:n,toast:a}=v(),o=y(()=>e.call(`material/list`),[]),[s,c]=(0,r.useState)(null),[l,u]=(0,r.useState)(null),d=b(),[f,p]=(0,r.useState)(null),[m,h]=(0,r.useState)(``),[g,_]=(0,r.useState)(null),[x,S]=(0,r.useState)(!1),[C,w]=(0,r.useState)(null);async function T(t){t?.preventDefault();let n=m.trim();if(n){S(!0),u(null);try{let{results:t}=await e.call(`material/search`,{query:n});_({query:n,results:t})}catch(e){u(e)}finally{S(!1)}}}(0,r.useEffect)(()=>{if(!C)return;document.querySelector(`[data-material="${C}"]`)?.scrollIntoView({block:`center`,behavior:`smooth`});let e=setTimeout(()=>w(null),1700);return()=>clearTimeout(e)},[C]);let E=m.trim().toLowerCase(),D=(o.value??[]).filter(e=>g||!E||e.title.toLowerCase().includes(E)||(e.brief?.topics??[]).some(e=>e.toLowerCase().includes(E))||(e.brief?.summary??``).toLowerCase().includes(E));async function O(r,i){c(`${r}:${i.id}`),u(null);try{if(r===`course`){let{job:t}=await e.call(`course/start`,{goal:i.brief?.suggestedGoal??``,materialIds:[i.id]});n(`craft`,{jobId:t.id});return}let o={sheet:`studio/sheet`,cards:`studio/cards`,notes:`studio/notes`,quiz:`studio/quiz`}[r],s=await d.run(o,{materialIds:[i.id]});a(t(`saved`)),r===`sheet`?n(`sheet`,{sheetId:s.item.id}):r===`cards`?n(`cards`,{deckId:s.item.id}):r===`notes`?n(`item`,{kind:`notes`,id:s.item.id}):n(`item`,{kind:`quiz`,id:s.item.id})}catch(e){e?.code!==`cancelled`&&u(e)}finally{c(null)}}return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:t(`materialsTitle`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`materialsHint`)})]}),(0,i.jsx)($u,{onAdded:()=>o.reload()}),(o.value??[]).length?(0,i.jsxs)(`form`,{className:`aha-row aha-librarySearch`,onSubmit:T,role:`search`,children:[(0,i.jsx)(`input`,{className:`aha-input`,type:`search`,value:m,placeholder:t(`librarySearch`),"aria-label":t(`librarySearch`),onChange:e=>{h(e.currentTarget.value),_(null)}}),(0,i.jsxs)(`button`,{type:`submit`,className:`aha-btn`,disabled:!m.trim()||x,children:[x?(0,i.jsx)(`span`,{className:`aha-spinner`}):null,t(`librarySearchText`)]})]}):null,g?(0,i.jsxs)(`section`,{className:`aha-card aha-libraryHits`,"aria-live":`polite`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`b`,{children:g.results.length?t(`libraryFound`,{count:g.results.length}):t(`libraryNotFound`,{query:g.query})}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>{_(null),h(``)},children:t(`close`)})]}),g.results.map((e,n)=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-libraryHit`,onClick:()=>w(e.materialId),children:[(0,i.jsxs)(`span`,{className:`aha-libraryHitWhere`,children:[(0,i.jsx)(`b`,{children:e.title}),e.page?(0,i.jsxs)(i.Fragment,{children:[` · `,(0,i.jsx)(id,{page:e.page,label:e.label??void 0})]}):e.slide?` · ${t(`slideN`,{slide:e.slide})}`:``]}),(0,i.jsx)(`span`,{className:`aha-libraryHitText`,children:(0,i.jsx)(lm,{text:e.snippet,query:g.query})})]},n))]}):null,(0,i.jsx)(Yu,{error:l??o.error}),o.loading&&!o.value?(0,i.jsx)(Hu,{label:t(`loading`)}):D.length?(0,i.jsx)(`div`,{className:`aha-col`,children:D.map(e=>(0,i.jsxs)(`div`,{className:`aha-card`,"data-material":e.id,"data-flash":C===e.id?`true`:void 0,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:2},children:[(0,i.jsx)(`b`,{children:e.title}),(0,i.jsx)(`span`,{className:`aha-hint`,children:td(e,t)})]}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>p(e),children:t(`delete`)})]}),nd(e,t).map(e=>(0,i.jsx)(`p`,{className:`aha-hint aha-readingNote`,children:e},e)),e.brief?.summary?(0,i.jsx)(`p`,{className:`aha-hint`,children:e.brief.summary}):null,e.brief?.topics?.length?(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:4},children:e.brief.topics.slice(0,10).map(e=>(0,i.jsx)(`span`,{className:`aha-tag`,"data-clip":!0,title:e,children:e},e))}):null,(0,i.jsx)(od,{material:e}),e.kind!==`image`||e.chars>0?(0,i.jsxs)(`div`,{className:`aha-row`,style:{gap:6},children:[[[`course`,`makeCourse`],[`sheet`,`makeSheet`],[`cards`,`makeCards`],[`notes`,`makeNotes`],[`quiz`,`makeQuiz`]].map(([n,r])=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":n===`course`?`primary`:void 0,disabled:!!s,onClick:()=>O(n,e),children:[s===`${n}:${e.id}`?(0,i.jsx)(`span`,{className:`aha-spinner`}):null,t(r)]},n)),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>n(`item`,{kind:`digest`,materialId:e.id}),children:t(`digest`)})]}):(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`imageNeedsVision`)}),s?.endsWith(`:${e.id}`)&&!s.startsWith(`course:`)?(0,i.jsx)(Gu,{kind:s.split(`:`)[0],job:d}):null]},e.id))}):(0,i.jsx)(Xu,{children:(o.value??[]).length?t(`libraryNoTitleMatch`):t(`noMaterials`)}),f?(0,i.jsx)(qu,{danger:!0,text:`${t(`delete`)}「${f.title}」?`,onCancel:()=>p(null),onConfirm:async()=>{await e.call(`material/remove`,{id:f.id}),p(null),o.reload()}}):null]})}let dm=[60,120,180,240,300,420,600,900];function fm(){let{api:e,t,navigate:n}=v(),a=y(()=>e.call(`plan/get`,{today:ln(new Date)}),[]),o=y(()=>e.call(`review/session`),[]),s=y(()=>e.call(`course/list`),[]),[c,l]=(0,r.useState)(300),[u,d]=(0,r.useState)([1,2,3,4,5,6,0]),[f,p]=(0,r.useState)({title:``,day:``,courseId:``}),[m,h]=(0,r.useState)(null),g=t(`weekdays`).split(`,`),_=ln(new Date),[b,x]=(0,r.useState)(_);(0,r.useEffect)(()=>{a.value&&(l(a.value.settings.weeklyMinutes),d(a.value.settings.studyDays))},[a.value?.settings]);async function S(){h(null);try{a.setValue(await e.call(`plan/settings`,{weeklyMinutes:c,studyDays:u}))}catch(e){h(e)}}async function C(t){if(t.preventDefault(),!(!f.title.trim()||!f.day))try{a.setValue(await e.call(`plan/add-exam`,{...f,courseId:f.courseId||void 0})),p({title:``,day:``,courseId:``})}catch(e){h(e)}}async function w(t,n){h(null);try{a.setValue(await Xf(e,t,n,_))}catch(e){h(e)}}let T=e=>s.value?.find(t=>t.id===e)?.title??``,E=a.value?.calendar??[],D=E.find(e=>e.day===b)?.items??[];return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:t(`planTitle`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`planHint`)})]}),(0,i.jsx)(`section`,{className:`aha-card`,children:(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`b`,{children:o.value?.items?.length?t(`reviewDue`,{count:o.value.items.length}):t(`nothingToReview`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:!o.value?.items?.length,onClick:()=>n(`practice`,{review:!0}),children:t(`startReview`)})]})}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsxs)(`label`,{className:`aha-label`,style:{minWidth:200},children:[t(`weeklyMinutes`),(0,i.jsx)(`select`,{className:`aha-select`,value:c,onChange:e=>l(Number(e.currentTarget.value)),children:dm.map(e=>(0,i.jsx)(`option`,{value:e,children:t(`minutesUnit`,{minutes:e})},e))})]}),(0,i.jsxs)(`div`,{className:`aha-label`,children:[t(`studyDays`),(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:4},children:[1,2,3,4,5,6,0].map(e=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":u.includes(e),onClick:()=>d(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]),children:g[e]},e))})]}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:S,children:t(`savePlan`)})]}),(a.value?.plan.warnings??[]).filter(e=>e.kind===`deadline-at-risk`).map(e=>(0,i.jsx)(`div`,{className:`aha-feedback`,"data-ok":`false`,children:t(`deadlineRisk`,{course:T(e.courseId),finish:e.finishDay,deadline:e.deadline,minutes:e.neededWeeklyMinutes})},e.courseId))]}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:t(`exams`)}),(a.value?.exams??[]).map(n=>(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`span`,{children:[n.title,` · `,n.day,n.courseId?` · ${T(n.courseId)}`:``]}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:async()=>a.setValue(await e.call(`plan/remove-exam`,{id:n.id})),children:t(`delete`)})]},n.id)),(0,i.jsxs)(`form`,{className:`aha-row`,onSubmit:C,children:[(0,i.jsx)(`input`,{className:`aha-input`,style:{flex:2,minWidth:160},placeholder:t(`examTitle`),value:f.title,onChange:e=>p({...f,title:e.currentTarget.value})}),(0,i.jsx)(`input`,{className:`aha-input`,style:{flex:1,minWidth:140},type:`date`,value:f.day,onChange:e=>p({...f,day:e.currentTarget.value})}),(0,i.jsxs)(`select`,{className:`aha-select`,style:{flex:1,minWidth:140},value:f.courseId,onChange:e=>p({...f,courseId:e.currentTarget.value}),children:[(0,i.jsx)(`option`,{value:``,children:`—`}),(s.value??[]).filter(e=>e.status===`ready`).map(e=>(0,i.jsx)(`option`,{value:e.id,children:e.title},e.id))]}),(0,i.jsx)(`button`,{type:`submit`,className:`aha-btn`,children:t(`addExam`)})]})]}),(0,i.jsx)(Yu,{error:m??a.error}),a.loading&&!a.value?(0,i.jsx)(Hu,{label:t(`loading`)}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(hm,{days:E,today:_,selected:b,onSelect:x,weekdayNames:g}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsxs)(`b`,{children:[b===_?`${t(`today`)} · `:``,t(`dayLabel`,{month:un(b).getMonth()+1,day:un(b).getDate(),weekday:g[un(b).getDay()]})]}),D.length?D.map(e=>(0,i.jsx)(Yf,{item:e,day:b,today:_,onToggle:w},`${e.kind}:${e.refId}`)):(0,i.jsx)(`p`,{className:`aha-hint`,children:t(b===_?`noPlanToday`:`dayEmpty`)})]})]})]})}let pm=e=>String(e).padStart(2,`0`),mm=(e,t)=>{let n=un(`${e}-01`);return n.setMonth(n.getMonth()+t),`${n.getFullYear()}-${pm(n.getMonth()+1)}`};function hm({days:e,today:t,selected:n,onSelect:a,weekdayNames:o}){let{t:s}=v(),[c,l]=(0,r.useState)(t.slice(0,7)),u=(0,r.useMemo)(()=>new Map(e.map(e=>[e.day,e.items])),[e]),d=un(`${c}-01`),f=new Date(d.getFullYear(),d.getMonth()+1,0).getDate(),p=[...Array((d.getDay()+6)%7).fill(null),...Array.from({length:f},(e,t)=>`${c}-${pm(t+1)}`)];return(0,i.jsxs)(`section`,{className:`aha-card aha-calendar`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>l(e=>mm(e,-1)),"aria-label":s(`prevMonth`),children:`‹`}),(0,i.jsx)(`b`,{children:s(`monthLabel`,{year:d.getFullYear(),month:d.getMonth()+1})}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>l(e=>mm(e,1)),"aria-label":s(`nextMonth`),children:`›`})]}),(0,i.jsxs)(`div`,{className:`aha-calGrid`,children:[[1,2,3,4,5,6,0].map(e=>(0,i.jsx)(`span`,{className:`aha-calHead`,children:o[e]},e)),p.map((e,r)=>{if(!e)return(0,i.jsx)(`span`,{},`gap${r}`);let o=u.get(e)??[],s=o.length>0&&o.every(e=>e.kind===`exam`||e.checked);return(0,i.jsxs)(`button`,{type:`button`,className:`aha-calDay`,"data-today":e===t?`true`:void 0,"data-selected":e===n?`true`:void 0,"data-past":e<t?`true`:void 0,onClick:()=>a(e),children:[(0,i.jsxs)(`span`,{className:`aha-calNum`,children:[Number(e.slice(8)),s?` ✓`:``]}),o.slice(0,3).map(e=>(0,i.jsx)(`span`,{className:`aha-calItem`,"data-kind":e.kind,"data-checked":e.checked?`true`:void 0,children:e.title},`${e.kind}:${e.refId}`)),o.length>3?(0,i.jsxs)(`span`,{className:`aha-calMore`,children:[`+`,o.length-3]}):null]},e)})]})]})}let gm=[[`goals`,`goals`],[`strengths`,`strengthsLabel`],[`weaknesses`,`weaknesses`]];function _m(){let{api:e,t,toast:n}=v(),a=y(()=>e.call(`profile/get`),[]),[o,s]=(0,r.useState)(null),[c,l]=(0,r.useState)(!1),[u,d]=(0,r.useState)(null);(0,r.useEffect)(()=>{a.value&&s({name:a.value.name??``,background:a.value.background,goals:a.value.goals.join(`
765
+ `,Vp=Object.freeze({missing:`Figure not drawn`,animation:`Animation could not play`}),Hp=1280,Up={light:{paper:`#fdfcf8`,dot:`rgba(40,50,80,0.07)`,ink:`#23262f`,soft:`#4a4f5c`,head:`#1f4fb8`,marker:`rgba(255,214,79,0.62)`,accent:`#d64545`,note:`#fff7da`,noteLine:`#e9c45a`,pencil:`#c98a2c`},dark:{paper:`#1d2622`,dot:`rgba(255,255,255,0.06)`,ink:`#ecebe4`,soft:`#c9c8bf`,head:`#9cc2ff`,marker:`rgba(214,178,58,0.45)`,accent:`#ff8a80`,note:`#2a3530`,noteLine:`#8f7a2f`,pencil:`#e7c27a`}};function Wp(){return typeof MediaRecorder==`function`&&typeof document.createElement(`canvas`).captureStream==`function`}function Gp(){for(let e of[`video/webm;codecs=vp9,opus`,`video/webm;codecs=vp8,opus`,`video/webm`])if(MediaRecorder.isTypeSupported?.(e))return e;return``}let Kp=Rp;function qp(e,t=400){return`${t} ${e}px ${Kp}`}let Jp=/^[,。、;:!?)」』”’》〉】〕…‥·,.;:!?)\]}%]/u,Yp=/[(「『“‘《〈【〔(\[{]$/u;function Xp(e,t,n){let r=[];for(let i of String(t).split(`
766
+ `)){let t=``,a=i.match(/[ -鿿가-힯＀-￯]|[^\s -鿿가-힯＀-￯]+|\s+/gu)??[];for(let i of a){let a=t+i;if(e.measureText(a).width>n&&t.trim()&&!Jp.test(i)){let e=``;Yp.test(t)&&t.length>1&&(e=t.slice(-1),t=t.slice(0,-1)),r.push(t.trimEnd()),t=(e+i).trimStart()}else t=a}r.push(t.trimEnd())}return r}function Zp(e,t,n){if(!e)return e;let r=n===`dark`?`[stroke="#2b2b2b"],[stroke="#23262f"]{stroke:${t.ink}}[fill="#2b2b2b"],[fill="#23262f"]{fill:${t.ink}}`:``,i=`<style>svg{color:${t.ink}}text:not([fill]){fill:${t.ink}}${r}</style>`;return e.replace(/<svg\b[^>]*>/iu,e=>e.endsWith(`/>`)?e:`${e}${i}`)}function Qp(e){return new Promise(t=>{if(!e){t(null);return}let n=new Image;n.onload=()=>t(n),n.onerror=()=>t(null),n.src=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`})}async function $p(e,t,n,r,i=Vp){let a=[],o=[{title:``}],s=0,c=132,l=()=>64+s*600,u=()=>{if(s===0)s=1;else{let e=o[o.length-1];o.push({title:e.title,inherits:e.inherits??o.length===1}),s=0}c=132},d=(e,t)=>{c>132&&c+e>602&&u(),a.push({...t,page:o.length-1,x:l(),y:c,h:e}),c+=e+14};for(let[l,f]of t.entries())for(let[t,p]of f.ops.entries()){let f={op:p,stepIndex:l,opIndex:t};if(p.t===`page`){a.some(e=>e.page===o.length-1)?(o.push({title:p.title??``}),s=0,c=132):o[o.length-1].title=p.title??``;continue}if(p.t===`col`){u();continue}if(p.t===`mark`)continue;if(p.t===`title`){a.some(e=>e.page===o.length-1)?(o.push({title:p.text}),s=0,c=132):o[o.length-1].title=p.text,a.push({...f,page:o.length-1,kind:`title`,text:au(p.text)});continue}if(p.t===`h`||p.t===`p`||p.t===`note`||p.t===`math`||p.t===`list`){let t=p.t===`h`?31:p.t===`math`?28:25;e.font=qp(t,p.t===`h`?700:400);let r=Xp(e,p.t===`math`?p.text||iu(p.tex):p.t===`list`?p.items.map((e,t)=>`${p.ordered?`${t+1}.`:`•`} ${au(e)}`).join(`
767
+ `):au(p.text),552-(p.t===`note`?28:0)),i=Math.round(t*1.42);d(r.length*i+(p.t===`note`?22:0),{...f,kind:`text`,size:t,weight:p.t===`h`?700:400,lines:r,lineHeight:i,color:p.t===`h`?n.head:n.ink,center:p.t===`math`,note:p.t===`note`,marker:p.t===`h`});continue}let m=p.t===`svg`?$c(p.svg):p.t===`anim`&&p.poster?$c(p.poster):``,h=p.t===`chart`?Tn(p):p.t===`plot`?Kc(p):m?fl(m,{font:Kp}):``,g=h?await Qp(Zp(h,n,r)):null;if(g){let e=g.naturalHeight/Math.max(1,g.naturalWidth)||.62,t=Math.min(552,g.naturalWidth||552),n=Math.min(300,t*e);d(n+(p.caption?30:0),{...f,kind:`image`,image:g,w:n/e,imageH:n,caption:p.caption??``});continue}if(p.t===`missing`||p.t===`svg`||p.t===`chart`||p.t===`plot`){e.font=qp(22);let t=Xp(e,`⚠ ${p.t===`missing`&&p.of===`anim`?i.animation:i.missing}${p.caption?` · ${p.caption}`:``}`,524);d(t.length*32+22,{...f,kind:`text`,size:22,weight:400,lines:t,lineHeight:32,color:n.soft,note:!0});continue}if(p.t===`table`){let e=[p.head,...p.rows].filter(e=>e.length).slice(0,10);d(e.length*34+6,{...f,kind:`table`,rows:e});continue}if(p.t===`code`){let e=p.code.split(`
768
+ `).slice(0,14);d(e.length*24+20,{...f,kind:`code`,lines:e});continue}p.t===`anim`&&d(90,{...f,kind:`text`,size:22,weight:400,lines:[`▶ ${p.caption||`animation`}`],lineHeight:32,color:n.soft,note:!0})}return{items:a,pages:o}}function em(e,t){e.fillStyle=t.paper,e.fillRect(0,0,Hp,720),e.fillStyle=t.dot;for(let t=12;t<Hp;t+=24)for(let n=12;n<720;n+=24)e.fillRect(t,n,1.6,1.6)}function tm(e,t,n,r){e.save(),e.translate(t,n),e.rotate(-.6),e.fillStyle=r.pencil,e.fillRect(0,-5,34,10),e.fillStyle=r.accent,e.fillRect(34,-5,7,10),e.beginPath(),e.moveTo(0,-5),e.lineTo(-10,0),e.lineTo(0,5),e.closePath(),e.fillStyle=r.ink,e.fill(),e.restore()}function nm(e,t,n,r){if(t.kind!==`title`){if(t.kind===`text`){e.font=qp(t.size,t.weight),e.textBaseline=`top`,t.note&&(e.fillStyle=r.note,e.strokeStyle=r.noteLine,e.lineWidth=2,e.beginPath(),e.roundRect?.(t.x,t.y,552,t.h,12),e.fill(),e.stroke());let i=t.lines.reduce((e,t)=>e+[...t].length,0),a=Math.floor(i*n),o=null;t.lines.forEach((n,i)=>{if(a<=0)return;let s=[...n],c=s.slice(0,a).join(``);a-=s.length;let l=e.measureText(c).width,u=t.center?t.x+(552-e.measureText(n).width)/2:t.x+(t.note?14:0),d=t.y+(t.note?11:0)+i*t.lineHeight;t.marker&&(e.fillStyle=r.marker,e.fillRect(u-2,d+t.size*.62,l+4,t.size*.38)),e.fillStyle=t.color,e.fillText(c,u,d),o={x:u+l,y:d+t.size}}),o&&n<1&&tm(e,o.x,o.y,r);return}if(t.kind===`image`){e.save(),e.beginPath(),e.rect(t.x,t.y,t.w*n,t.imageH),e.clip(),e.drawImage(t.image,t.x,t.y,t.w,t.imageH),e.restore(),t.caption&&n>=1&&(e.font=qp(18),e.fillStyle=r.soft,e.textBaseline=`top`,e.fillText(t.caption,t.x,t.y+t.imageH+6)),n<1&&tm(e,t.x+t.w*n,t.y+t.imageH/2,r);return}if(t.kind===`table`){let i=t.rows.slice(0,Math.max(1,Math.ceil(t.rows.length*n))),a=Math.max(...t.rows.map(e=>e.length)),o=552/Math.max(1,a);e.font=qp(19),e.textBaseline=`middle`,e.strokeStyle=r.soft,e.lineWidth=1.4,i.forEach((n,i)=>{n.forEach((n,a)=>{let s=t.x+a*o,c=t.y+i*34;e.strokeRect(s,c,o,34),e.fillStyle=i===0?r.head:r.ink;let l=au(n);for(;l.length>1&&e.measureText(l).width>o-12;)l=`${l.slice(0,-2)}…`;e.fillText(l,s+6,c+17)})});return}t.kind===`code`&&(e.fillStyle=`rgba(0,0,0,0.06)`,e.fillRect(t.x,t.y,552,t.h),e.font=`17px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace`,e.fillStyle=r.ink,e.textBaseline=`top`,t.lines.slice(0,Math.ceil(t.lines.length*n)).forEach((n,r)=>e.fillText(n.slice(0,60),t.x+10,t.y+10+r*24)))}}let rm=()=>`500 25px ${Kp}`;function im(e,t,n){let r=[];for(let t of e){let e=n(t);for(let t=0;t<e.length;t+=2){let n=e.slice(t,t+2),i=[...n.join(``)].length;i&&r.push({lines:n,length:i})}}let i=r.reduce((e,t)=>e+t.length,0)||1,a=0;return r.map(e=>{let n=a/i*t;return a+=e.length,{start:n,lines:e.lines}})}function am(e,t){if(!(t>=0))return null;let n=null;for(let r of e){if(r.start>t)break;n=r}return n}function om(e,t){if(!t?.length)return;e.font=rm();let n=t.length*34+24;e.fillStyle=`rgba(15,18,24,0.72)`,e.beginPath(),e.roundRect?.(80,720-n-18,Hp-160,n,14),e.fill(),e.fillStyle=`#ffffff`,e.textBaseline=`top`,t.forEach((t,r)=>e.fillText(t,(Hp-e.measureText(t).width)/2,720-n-6+r*34))}function sm(e,t,n){e.font=`600 17px ${Kp}`,e.fillStyle=n.soft,e.globalAlpha=.65,e.textBaseline=`top`,e.fillText(t,Hp-e.measureText(t).width-26,22),e.globalAlpha=1}function cm(e,t,n){if(!e.say||!e.ops.length||!e.ops.some(e=>Number.isInteger(e.at)))return null;let r=cu(e.say).map(e=>[...au(e)].length),i=r.reduce((e,t)=>e+t,0)||1,a=0,o=r.map(e=>{let t=a/i*n;return a+=e,t}),s=Math.max(0,r.length-1),c=0;return e.ops.map((e,n)=>{let r=Math.max(c,o[Math.min(e.at??0,s)]??0);return c=r+t[n],r})}async function lm({steps:e,title:t,fetchAudio:n,watermark:r,theme:i=`light`,font:a=`hand`,labels:o=Vp,onProgress:s,signal:c}){if(!Wp())throw Error(`unsupported`);if(Kp=a===`standard`?getComputedStyle(document.body).fontFamily||`system-ui,sans-serif`:Rp,a!==`standard`&&document.fonts?.load){let t=`${pu(e)}${e.map(e=>au(e.say)).join(``)}`,n=Promise.all([`Aha Hand Latin`,`Aha Hand`].map(e=>document.fonts.load(`25px '${e}'`,t))).catch(()=>void 0);await Promise.race([n,new Promise(e=>{setTimeout(e,8e3)})])}let l=Up[i]??Up.light,u=document.createElement(`canvas`);u.width=Hp,u.height=720;let d=u.getContext(`2d`),{items:f,pages:p}=await $p(d,e,l,i,{...Vp,...o}),m=null,h=[];if(n){m=new AudioContext;for(let[t,r]of e.entries()){if(c?.throwIfAborted(),s?.({phase:`audio`,done:t,total:e.length}),!r.say){h.push(null);continue}try{let e=await n(au(r.say)),t=e.blob?await e.blob.arrayBuffer():Uint8Array.from(atob(e.base64),e=>e.charCodeAt(0)).buffer;h.push(await m.decodeAudioData(t))}catch{h.push(null)}}}let g=[],_=700;d.font=rm();for(let[t,n]of e.entries()){let e=h[t]?h[t].duration*1e3:ht(n.say),r=vt(n,{speechMs:e}),i=cm(n,r.writeMs,e),a=i?Math.max(r.durationMs,i.at(-1)+r.writeMs.at(-1)+350):r.durationMs,o=im(cu(n.say).map(au),e,e=>Xp(d,e,1080));g.push({start:_,end:_+a,writes:r.writeMs,starts:i,captions:o}),_+=a}let v=_+1500,y=t=>{let n=g.findIndex(e=>t<e.end);if(n<0)return{index:e.length,op:0,progress:1};let r=g[n],i=Math.max(0,t-r.start);if(r.starts){for(let e=0;e<r.writes.length;e+=1){let t=r.starts[e];if(i<t)return{index:n,op:e,progress:0};if(i<t+r.writes[e])return{index:n,op:e,progress:(i-t)/Math.max(1,r.writes[e])}}return{index:n,op:r.writes.length,progress:1}}let a=0;for(let e=0;e<r.writes.length;e+=1){if(i<a+r.writes[e])return{index:n,op:e,progress:(i-a)/Math.max(1,r.writes[e])};a+=r.writes[e]}return{index:n,op:r.writes.length,progress:1}},b=n=>{let i=y(n),a=e=>e.stepIndex<i.index?1:e.stepIndex>i.index?0:e.opIndex<i.op?1:e.opIndex>i.op?0:i.progress,o=f.filter(e=>a(e)>0),s=o.length?Math.max(...o.map(e=>e.page)):0;em(d,l);let c=p[s]?.title||(s===0||p[s]?.inherits?t:``);if(c){d.font=qp(40,700),d.textBaseline=`top`;let e=d.measureText(c).width;d.fillStyle=l.marker,d.fillRect(60,74,e+8,18),d.fillStyle=l.head,d.fillText(c,64,52)}for(let e of o)e.page===s&&nm(d,e,a(e),l);om(d,i.index<e.length?am(g[i.index].captions,n-g[i.index].start)?.lines:null),r&&sm(d,r,l)};b(0);let x=u.captureStream(30),S=0;if(m){await m.resume();let e=m.createMediaStreamDestination();S=m.currentTime+.4,h.forEach((t,n)=>{if(!t)return;let r=m.createBufferSource();r.buffer=t,r.connect(e),r.start(S+g[n].start/1e3)});for(let t of e.stream.getAudioTracks())x.addTrack(t)}let C=Gp(),w=new MediaRecorder(x,{...C?{mimeType:C}:{},videoBitsPerSecond:4e6}),T=[];w.ondataavailable=e=>{e.data?.size&&T.push(e.data)};let E=new Promise(e=>{w.onstop=e});w.start(1e3);let D=performance.now(),O=()=>m?(m.currentTime-S)*1e3:performance.now()-D;await new Promise((e,t)=>{let n=()=>{if(c?.aborted){t(c.reason??Error(`cancelled`));return}let r=O();b(Math.max(0,r)),s?.({phase:`record`,done:Math.min(v,Math.max(0,r)),total:v}),r>=v?e():requestAnimationFrame(n)};requestAnimationFrame(n)}).finally(()=>{w.state!==`inactive`&&w.stop()}),await E;for(let e of x.getTracks())e.stop();return await m?.close().catch(()=>void 0),new Blob(T,{type:C||`video/webm`})}function um(){let{api:e,t,settings:n,toast:i}=v(),a=w(),[o,s]=(0,r.useState)(null),c=(0,r.useRef)(null);(0,r.useEffect)(()=>()=>c.current?.abort(),[]);async function l({steps:r,title:l}){if(!r?.length||o)return;if(!Wp()){i(t(`exportUnsupported`));return}let u=new AbortController;c.current=u,s({percent:0});try{let i=await lm({steps:r,title:l,theme:n.boardTheme===`dark`||n.boardTheme!==`light`&&a?`dark`:`light`,font:n.boardFont===`standard`?`standard`:`hand`,labels:{missing:t(`figureMissing`),animation:t(`animationFailed`)},watermark:`${t(`appName`)} · ${t(`appTagline`)}`,fetchAudio:n.voiceEngine===`cloud`?t=>Lt(e,t):null,signal:u.signal,onProgress:e=>s({percent:Math.round(e.done/Math.max(1,e.total)*100),phase:e.phase})});g(`${m(l)}.webm`,i)}catch(e){u.signal.aborted||i(e.message===`unsupported`?t(`exportUnsupported`):e?.code?Ju(t,e):t(`exportFailed`))}finally{s(null)}}return{exporting:o,start:l,cancel:()=>c.current?.abort(),cloud:n.voiceEngine===`cloud`}}function dm({courseId:e,lessonId:t}){let{api:n,t:a,navigate:o}=v(),s=y(()=>n.call(`lesson/get`,{courseId:e,lessonId:t}),[e,t]),[c,l]=(0,r.useState)(null),[u,d]=(0,r.useState)(null),[f,p]=(0,r.useState)(!1),[m,h]=(0,r.useState)(0),g=(0,r.useRef)(null),_=um();if((0,r.useEffect)(()=>{if(!s.value)return;if(s.value.board&&m===0){l({steps:s.value.board.steps,stream:null});return}let r=!0;return n.call(`lesson/prepare`,{courseId:e,lessonId:t,force:m>0}).then(e=>{r&&l(e.board?{steps:e.board.steps,stream:null}:{steps:[],stream:e.job})}).catch(e=>{r&&d(e)}),()=>{r=!1}},[s.value,m]),(0,r.useEffect)(()=>()=>clearTimeout(g.current),[]),s.loading&&!s.value)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Hu,{label:a(`loading`)})});if(!s.value)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Yu,{error:s.error})});let{lesson:b,unit:x,lecture:S,language:C,state:w}=s.value,T=w?.status===`learning`?Math.max(0,w.stepIndex??0):0;return(0,i.jsxs)(`div`,{className:`aha-page`,"data-wide":`true`,children:[u?(0,i.jsx)(Yu,{error:u}):null,c?(0,i.jsx)(af,{scope:{kind:`lesson`,courseId:e,lessonId:t},title:b.title,crumb:(0,i.jsxs)(i.Fragment,{children:[x.title,` · `,S.title,s.value.sources?.length?(0,i.jsxs)(i.Fragment,{children:[` `,(0,i.jsx)(ad,{sources:s.value.sources})]}):null]}),steps:c.steps,stream:c.stream,asides:m===0?s.value.asides??[]:[],objectives:b.objectives??[],language:C,startIndex:c.stream?0:T,onPosition:r=>{clearTimeout(g.current),g.current=setTimeout(()=>{n.call(`lesson/position`,{courseId:e,lessonId:t,stepIndex:r}).catch(()=>void 0)},800)},onEnded:()=>p(!0),onStreamDone:e=>{e?.board?.steps?.length&&l(t=>({...t,steps:e.board.steps}))},header:({steps:n})=>(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>o(`course`,{courseId:e}),children:[`← `,a(`backToCourse`)]}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>o(`practice`,{courseId:e,lessonId:t}),children:a(`practice`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,disabled:!n.length,title:a(`handoutHint`),onClick:()=>o(`handout`,{courseId:e,lessonId:t}),children:a(`handout`)}),(0,i.jsx)(Ip,{steps:n,title:b.title}),_.exporting?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Hu,{label:a(`exporting`,{percent:_.exporting.percent})}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:_.cancel,children:a(`cancel`)})]}):(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,disabled:!c.steps.length,title:_.cloud?``:a(`exportNeedsCloud`),onClick:()=>_.start({steps:c.steps,title:b.title}),children:a(`exportVideo`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>{l(null),p(!1),h(e=>e+1)},children:a(`regenerateLesson`)})]})},`${m}`):(0,i.jsx)(Hu,{label:a(`preparingLesson`)}),f?(0,i.jsx)(fm,{courseId:e,lessonId:t,onClose:()=>p(!1)}):null]})}function fm({courseId:e,lessonId:t,onClose:n}){let{api:a,t:o,navigate:s}=v(),[c,l]=(0,r.useState)(null),[u,d]=(0,r.useState)(null),[f,p]=(0,r.useState)(!1),[m,h]=(0,r.useState)(null);async function g(n){l(n),p(!0);try{d(await a.call(`lesson/complete`,{courseId:e,lessonId:t,selfRating:n}))}catch(e){h(e)}finally{p(!1)}}return(0,i.jsxs)(Ku,{title:o(`lessonDone`),onClose:n,children:[u?(0,i.jsxs)(`div`,{className:`aha-col`,children:[u.inserted?(0,i.jsx)(`div`,{className:`aha-feedback`,children:o(`remedialAdded`,{title:u.inserted.title})}):null,u.recommendation?.action===`challenge`?(0,i.jsx)(`div`,{className:`aha-feedback`,"data-ok":`true`,children:o(`challengeNote`)}):null,(0,i.jsxs)(`div`,{className:`aha-row`,children:[u.next?(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:()=>s(`lesson`,{courseId:e,lessonId:u.next.id},{replace:!0}),children:[o(`nextLesson`),`: `,u.next.title]}):null,(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>s(`practice`,{courseId:e,lessonId:t}),children:o(`doPractice`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>s(`handout`,{courseId:e,lessonId:t}),children:o(`handoutOfLesson`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>s(`course`,{courseId:e},{replace:!0}),children:o(`backToCourse`)})]})]}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`p`,{children:o(`selfRate`)}),(0,i.jsx)(`div`,{className:`aha-row`,children:[[1,`rate1`],[2,``],[3,`rate3`],[4,``],[5,`rate5`]].map(([e,t])=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-chip`,"data-active":c===e,disabled:f,onClick:()=>g(e),children:[e,t?` · ${o(t)}`:``]},e))}),f?(0,i.jsx)(Hu,{}):null]}),(0,i.jsx)(Yu,{error:m})]})}let pm=e=>e.replace(/[.*+?^${}()|[\]\\]/gu,`\\$&`);function mm({text:e,query:t}){let n=[...new Set(t.split(/\s+/u).filter(Boolean))].sort((e,t)=>t.length-e.length);if(!n.length)return e;let a=RegExp(`(${n.map(pm).join(`|`)})`,`giu`);return e.split(a).map((e,t)=>t%2?(0,i.jsx)(`mark`,{children:e},t):(0,i.jsx)(r.Fragment,{children:e},t))}function hm(){let{api:e,t,navigate:n,toast:a}=v(),o=y(()=>e.call(`material/list`),[]),[s,c]=(0,r.useState)(null),[l,u]=(0,r.useState)(null),d=b(),[f,p]=(0,r.useState)(null),[m,h]=(0,r.useState)(``),[g,_]=(0,r.useState)(null),[x,S]=(0,r.useState)(!1),[C,w]=(0,r.useState)(null);async function T(t){t?.preventDefault();let n=m.trim();if(n){S(!0),u(null);try{let{results:t}=await e.call(`material/search`,{query:n});_({query:n,results:t})}catch(e){u(e)}finally{S(!1)}}}(0,r.useEffect)(()=>{if(!C)return;document.querySelector(`[data-material="${C}"]`)?.scrollIntoView({block:`center`,behavior:`smooth`});let e=setTimeout(()=>w(null),1700);return()=>clearTimeout(e)},[C]);let E=m.trim().toLowerCase(),D=(o.value??[]).filter(e=>g||!E||e.title.toLowerCase().includes(E)||(e.brief?.topics??[]).some(e=>e.toLowerCase().includes(E))||(e.brief?.summary??``).toLowerCase().includes(E));async function O(r,i){c(`${r}:${i.id}`),u(null);try{if(r===`course`){let{job:t}=await e.call(`course/start`,{goal:i.brief?.suggestedGoal??``,materialIds:[i.id]});n(`craft`,{jobId:t.id});return}let o={sheet:`studio/sheet`,cards:`studio/cards`,notes:`studio/notes`,quiz:`studio/quiz`}[r],s=await d.run(o,{materialIds:[i.id]});a(t(`saved`)),r===`sheet`?n(`sheet`,{sheetId:s.item.id}):r===`cards`?n(`cards`,{deckId:s.item.id}):r===`notes`?n(`item`,{kind:`notes`,id:s.item.id}):n(`item`,{kind:`quiz`,id:s.item.id})}catch(e){e?.code!==`cancelled`&&u(e)}finally{c(null)}}return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:t(`materialsTitle`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`materialsHint`)})]}),(0,i.jsx)($u,{onAdded:()=>o.reload()}),(o.value??[]).length?(0,i.jsxs)(`form`,{className:`aha-row aha-librarySearch`,onSubmit:T,role:`search`,children:[(0,i.jsx)(`input`,{className:`aha-input`,type:`search`,value:m,placeholder:t(`librarySearch`),"aria-label":t(`librarySearch`),onChange:e=>{h(e.currentTarget.value),_(null)}}),(0,i.jsxs)(`button`,{type:`submit`,className:`aha-btn`,disabled:!m.trim()||x,children:[x?(0,i.jsx)(`span`,{className:`aha-spinner`}):null,t(`librarySearchText`)]})]}):null,g?(0,i.jsxs)(`section`,{className:`aha-card aha-libraryHits`,"aria-live":`polite`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`b`,{children:g.results.length?t(`libraryFound`,{count:g.results.length}):t(`libraryNotFound`,{query:g.query})}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>{_(null),h(``)},children:t(`close`)})]}),g.results.map((e,n)=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-libraryHit`,onClick:()=>w(e.materialId),children:[(0,i.jsxs)(`span`,{className:`aha-libraryHitWhere`,children:[(0,i.jsx)(`b`,{children:e.title}),e.page?(0,i.jsxs)(i.Fragment,{children:[` · `,(0,i.jsx)(id,{page:e.page,label:e.label??void 0})]}):e.slide?` · ${t(`slideN`,{slide:e.slide})}`:``]}),(0,i.jsx)(`span`,{className:`aha-libraryHitText`,children:(0,i.jsx)(mm,{text:e.snippet,query:g.query})})]},n))]}):null,(0,i.jsx)(Yu,{error:l??o.error}),o.loading&&!o.value?(0,i.jsx)(Hu,{label:t(`loading`)}):D.length?(0,i.jsx)(`div`,{className:`aha-col`,children:D.map(e=>(0,i.jsxs)(`div`,{className:`aha-card`,"data-material":e.id,"data-flash":C===e.id?`true`:void 0,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:2},children:[(0,i.jsx)(`b`,{children:e.title}),(0,i.jsx)(`span`,{className:`aha-hint`,children:td(e,t)})]}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>p(e),children:t(`delete`)})]}),nd(e,t).map(e=>(0,i.jsx)(`p`,{className:`aha-hint aha-readingNote`,children:e},e)),e.brief?.summary?(0,i.jsx)(`p`,{className:`aha-hint`,children:e.brief.summary}):null,e.brief?.topics?.length?(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:4},children:e.brief.topics.slice(0,10).map(e=>(0,i.jsx)(`span`,{className:`aha-tag`,"data-clip":!0,title:e,children:e},e))}):null,(0,i.jsx)(od,{material:e}),e.kind!==`image`||e.chars>0?(0,i.jsxs)(`div`,{className:`aha-row`,style:{gap:6},children:[[[`course`,`makeCourse`],[`sheet`,`makeSheet`],[`cards`,`makeCards`],[`notes`,`makeNotes`],[`quiz`,`makeQuiz`]].map(([n,r])=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":n===`course`?`primary`:void 0,disabled:!!s,onClick:()=>O(n,e),children:[s===`${n}:${e.id}`?(0,i.jsx)(`span`,{className:`aha-spinner`}):null,t(r)]},n)),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>n(`item`,{kind:`digest`,materialId:e.id}),children:t(`digest`)})]}):(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`imageNeedsVision`)}),s?.endsWith(`:${e.id}`)&&!s.startsWith(`course:`)?(0,i.jsx)(Gu,{kind:s.split(`:`)[0],job:d}):null]},e.id))}):(0,i.jsx)(Xu,{children:(o.value??[]).length?t(`libraryNoTitleMatch`):t(`noMaterials`)}),f?(0,i.jsx)(qu,{danger:!0,text:`${t(`delete`)}「${f.title}」?`,onCancel:()=>p(null),onConfirm:async()=>{await e.call(`material/remove`,{id:f.id}),p(null),o.reload()}}):null]})}let gm=[60,120,180,240,300,420,600,900];function _m(){let{api:e,t,navigate:n}=v(),a=y(()=>e.call(`plan/get`,{today:ln(new Date)}),[]),o=y(()=>e.call(`review/session`),[]),s=y(()=>e.call(`course/list`),[]),[c,l]=(0,r.useState)(300),[u,d]=(0,r.useState)([1,2,3,4,5,6,0]),[f,p]=(0,r.useState)({title:``,day:``,courseId:``}),[m,h]=(0,r.useState)(null),g=t(`weekdays`).split(`,`),_=ln(new Date),[b,x]=(0,r.useState)(_);(0,r.useEffect)(()=>{a.value&&(l(a.value.settings.weeklyMinutes),d(a.value.settings.studyDays))},[a.value?.settings]);async function S(){h(null);try{a.setValue(await e.call(`plan/settings`,{weeklyMinutes:c,studyDays:u}))}catch(e){h(e)}}async function C(t){if(t.preventDefault(),!(!f.title.trim()||!f.day))try{a.setValue(await e.call(`plan/add-exam`,{...f,courseId:f.courseId||void 0})),p({title:``,day:``,courseId:``})}catch(e){h(e)}}async function w(t,n){h(null);try{a.setValue(await tp(e,t,n,_))}catch(e){h(e)}}let T=e=>s.value?.find(t=>t.id===e)?.title??``,E=a.value?.calendar??[],D=E.find(e=>e.day===b)?.items??[];return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:t(`planTitle`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`planHint`)})]}),(0,i.jsx)(`section`,{className:`aha-card`,children:(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`b`,{children:o.value?.items?.length?t(`reviewDue`,{count:o.value.items.length}):t(`nothingToReview`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:!o.value?.items?.length,onClick:()=>n(`practice`,{review:!0}),children:t(`startReview`)})]})}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsxs)(`label`,{className:`aha-label`,style:{minWidth:200},children:[t(`weeklyMinutes`),(0,i.jsx)(`select`,{className:`aha-select`,value:c,onChange:e=>l(Number(e.currentTarget.value)),children:gm.map(e=>(0,i.jsx)(`option`,{value:e,children:t(`minutesUnit`,{minutes:e})},e))})]}),(0,i.jsxs)(`div`,{className:`aha-label`,children:[t(`studyDays`),(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:4},children:[1,2,3,4,5,6,0].map(e=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":u.includes(e),onClick:()=>d(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]),children:g[e]},e))})]}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:S,children:t(`savePlan`)})]}),(a.value?.plan.warnings??[]).filter(e=>e.kind===`deadline-at-risk`).map(e=>(0,i.jsx)(`div`,{className:`aha-feedback`,"data-ok":`false`,children:t(`deadlineRisk`,{course:T(e.courseId),finish:e.finishDay,deadline:e.deadline,minutes:e.neededWeeklyMinutes})},e.courseId))]}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:t(`exams`)}),(a.value?.exams??[]).map(n=>(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`span`,{children:[n.title,` · `,n.day,n.courseId?` · ${T(n.courseId)}`:``]}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:async()=>a.setValue(await e.call(`plan/remove-exam`,{id:n.id})),children:t(`delete`)})]},n.id)),(0,i.jsxs)(`form`,{className:`aha-row`,onSubmit:C,children:[(0,i.jsx)(`input`,{className:`aha-input`,style:{flex:2,minWidth:160},placeholder:t(`examTitle`),value:f.title,onChange:e=>p({...f,title:e.currentTarget.value})}),(0,i.jsx)(`input`,{className:`aha-input`,style:{flex:1,minWidth:140},type:`date`,value:f.day,onChange:e=>p({...f,day:e.currentTarget.value})}),(0,i.jsxs)(`select`,{className:`aha-select`,style:{flex:1,minWidth:140},value:f.courseId,onChange:e=>p({...f,courseId:e.currentTarget.value}),children:[(0,i.jsx)(`option`,{value:``,children:`—`}),(s.value??[]).filter(e=>e.status===`ready`).map(e=>(0,i.jsx)(`option`,{value:e.id,children:e.title},e.id))]}),(0,i.jsx)(`button`,{type:`submit`,className:`aha-btn`,children:t(`addExam`)})]})]}),(0,i.jsx)(Yu,{error:m??a.error}),a.loading&&!a.value?(0,i.jsx)(Hu,{label:t(`loading`)}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(bm,{days:E,today:_,selected:b,onSelect:x,weekdayNames:g}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsxs)(`b`,{children:[b===_?`${t(`today`)} · `:``,t(`dayLabel`,{month:un(b).getMonth()+1,day:un(b).getDate(),weekday:g[un(b).getDay()]})]}),D.length?D.map(e=>(0,i.jsx)(ep,{item:e,day:b,today:_,onToggle:w},`${e.kind}:${e.refId}`)):(0,i.jsx)(`p`,{className:`aha-hint`,children:t(b===_?`noPlanToday`:`dayEmpty`)})]})]})]})}let vm=e=>String(e).padStart(2,`0`),ym=(e,t)=>{let n=un(`${e}-01`);return n.setMonth(n.getMonth()+t),`${n.getFullYear()}-${vm(n.getMonth()+1)}`};function bm({days:e,today:t,selected:n,onSelect:a,weekdayNames:o}){let{t:s}=v(),[c,l]=(0,r.useState)(t.slice(0,7)),u=(0,r.useMemo)(()=>new Map(e.map(e=>[e.day,e.items])),[e]),d=un(`${c}-01`),f=new Date(d.getFullYear(),d.getMonth()+1,0).getDate(),p=[...Array((d.getDay()+6)%7).fill(null),...Array.from({length:f},(e,t)=>`${c}-${vm(t+1)}`)];return(0,i.jsxs)(`section`,{className:`aha-card aha-calendar`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>l(e=>ym(e,-1)),"aria-label":s(`prevMonth`),children:`‹`}),(0,i.jsx)(`b`,{children:s(`monthLabel`,{year:d.getFullYear(),month:d.getMonth()+1})}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>l(e=>ym(e,1)),"aria-label":s(`nextMonth`),children:`›`})]}),(0,i.jsxs)(`div`,{className:`aha-calGrid`,children:[[1,2,3,4,5,6,0].map(e=>(0,i.jsx)(`span`,{className:`aha-calHead`,children:o[e]},e)),p.map((e,r)=>{if(!e)return(0,i.jsx)(`span`,{},`gap${r}`);let o=u.get(e)??[],s=o.length>0&&o.every(e=>e.kind===`exam`||e.checked);return(0,i.jsxs)(`button`,{type:`button`,className:`aha-calDay`,"data-today":e===t?`true`:void 0,"data-selected":e===n?`true`:void 0,"data-past":e<t?`true`:void 0,onClick:()=>a(e),children:[(0,i.jsxs)(`span`,{className:`aha-calNum`,children:[Number(e.slice(8)),s?` ✓`:``]}),o.slice(0,3).map(e=>(0,i.jsx)(`span`,{className:`aha-calItem`,"data-kind":e.kind,"data-checked":e.checked?`true`:void 0,children:e.title},`${e.kind}:${e.refId}`)),o.length>3?(0,i.jsxs)(`span`,{className:`aha-calMore`,children:[`+`,o.length-3]}):null]},e)})]})]})}let xm=[[`goals`,`goals`],[`strengths`,`strengthsLabel`],[`weaknesses`,`weaknesses`]];function Sm(){let{api:e,t,toast:n}=v(),a=y(()=>e.call(`profile/get`),[]),[o,s]=(0,r.useState)(null),[c,l]=(0,r.useState)(!1),[u,d]=(0,r.useState)(null);(0,r.useEffect)(()=>{a.value&&s({name:a.value.name??``,background:a.value.background,goals:a.value.goals.join(`
753
769
  `),strengths:a.value.strengths.join(`
754
770
  `),weaknesses:a.value.weaknesses.join(`
755
771
  `),style:a.value.preferences?.style??``})},[a.value]);async function f(){d(null);try{let r=e=>e.split(`
756
- `).map(e=>e.trim()).filter(Boolean);a.setValue(await e.call(`profile/save`,{name:o.name.trim(),background:o.background,goals:r(o.goals),strengths:r(o.strengths),weaknesses:r(o.weaknesses),preferences:{...a.value.preferences,style:o.style}})),n(t(`saved`))}catch(e){d(e)}}return o?(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:820},children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:t(`profileTitle`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`profileHint`)})]}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(`profileName`),` `,(0,i.jsxs)(`span`,{className:`aha-hint`,children:[`(`,t(`profileNameHint`),`)`]}),(0,i.jsx)(`input`,{className:`aha-input`,maxLength:20,value:o.name,placeholder:t(`profileNamePlaceholder`),onChange:e=>s({...o,name:e.currentTarget.value})})]}),(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(`background`),(0,i.jsx)(`textarea`,{className:`aha-textarea`,value:o.background,onChange:e=>s({...o,background:e.currentTarget.value})})]}),gm.map(([e,n])=>(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(n),` `,(0,i.jsxs)(`span`,{className:`aha-hint`,children:[`(`,t(`onePerLine`),`)`]}),(0,i.jsx)(`textarea`,{className:`aha-textarea`,value:o[e],onChange:t=>s({...o,[e]:t.currentTarget.value})})]},e)),(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(`learningStyle`),(0,i.jsx)(`input`,{className:`aha-input`,value:o.style,onChange:e=>s({...o,style:e.currentTarget.value})})]}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:f,children:t(`save`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`danger`,onClick:()=>l(!0),children:t(`clearProfile`)})]}),(0,i.jsx)(Yu,{error:u})]}),a.value.notes?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:t(`memoryNotes`)}),a.value.notes.map(n=>(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`span`,{children:n.text}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:async()=>a.setValue(await e.call(`profile/remove-note`,{id:n.id})),children:t(`delete`)})]},n.id))]}):null,(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`privacyNote`)}),c?(0,i.jsx)(qu,{danger:!0,text:t(`clearProfileConfirm`),onCancel:()=>l(!1),onConfirm:async()=>{a.setValue(await e.call(`profile/clear`)),l(!1)}}):null]}):(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Hu,{label:t(`loading`)})})}function vm({courseId:e,projectId:t}){let{api:n,t:a,dsh:o,toast:s}=v(),c=y(()=>n.call(`project/get`,{courseId:e,projectId:t}),[e,t]),l=b(),[u,d]=(0,r.useState)(``),[f,p]=(0,r.useState)(!0),[m,h]=(0,r.useState)(null),[g,_]=(0,r.useState)(!1),[x,S]=(0,r.useState)(null);if(c.loading&&!c.value)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Hu,{label:a(`loading`)})});if(!c.value)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Yu,{error:c.error})});let{project:C,submissions:w}=c.value,T=m?.path??c.value.workspace;async function E(){_(!0),S(null);try{let r=await n.call(`project/open`,{courseId:e,projectId:t});h(r);let i=await o.openWorkspace(r.path,r.prompt).catch(()=>!1);s(i?a(`workspaceSession`):a(`workspaceReady`,{path:r.path}))}catch(e){S(e)}finally{_(!1)}}async function D(){try{await l.run(`project/submit`,{courseId:e,projectId:t,notes:u,includeWorkspace:f}),d(``),c.reload()}catch{}}return(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:900},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:C.title}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:a(`projectBrief`)}),(0,i.jsx)(bd,{text:C.brief})]}),C.milestones?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:a(`milestones`)}),(0,i.jsx)(`ol`,{style:{margin:0,paddingLeft:20},children:C.milestones.map(e=>(0,i.jsxs)(`li`,{children:[(0,i.jsx)(`b`,{children:e.title}),e.detail?(0,i.jsx)(`div`,{className:`aha-hint`,children:e.detail}):null]},e.id))})]}):null,C.rubric?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:a(`rubric`)}),C.rubric.map(e=>(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`span`,{children:[e.criterion,e.detail?(0,i.jsxs)(`span`,{className:`aha-hint`,children:[` · `,e.detail]}):null]}),(0,i.jsx)(`span`,{className:`aha-tag`,children:e.points})]},e.id))]}):null,(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:g,onClick:E,children:[(0,i.jsx)(Ht,{name:`folder`,size:15}),a(g?`openingWorkspace`:`openWorkspace`)]}),T?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`code`,{className:`aha-hint`,style:{overflowWrap:`anywhere`},children:T}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>{ud(T),s(a(`copied`))},children:a(`copyPath`)})]}):null]}),(0,i.jsx)(`p`,{className:`aha-hint`,children:a(`workspaceManual`)}),(0,i.jsx)(Yu,{error:x})]}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:a(`submitProject`)}),(0,i.jsx)(`textarea`,{className:`aha-textarea`,value:u,placeholder:a(`submitNotes`),onChange:e=>d(e.currentTarget.value)}),(0,i.jsxs)(`label`,{className:`aha-row`,style:{gap:6},children:[(0,i.jsx)(`input`,{type:`checkbox`,checked:f,onChange:e=>p(e.currentTarget.checked)}),a(`includeFiles`)]}),l.running?(0,i.jsx)(Wu,{progress:l.progress,label:a(`reviewing`),onCancel:l.cancel}):(0,i.jsx)(`div`,{children:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:!u.trim()&&!f,onClick:D,children:a(`submitProject`)})}),(0,i.jsx)(Yu,{error:l.error})]}),w.length?(0,i.jsxs)(`section`,{className:`aha-col`,children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:a(`submissions`)}),[...w].reverse().map((e,t)=>(0,i.jsxs)(`div`,{className:`aha-card`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`b`,{children:a(`reviewTotal`,{total:e.review.total,max:e.review.max})}),(0,i.jsx)(`span`,{className:`aha-hint`,children:new Date(e.at).toLocaleString()})]}),e.review.summary?(0,i.jsx)(bd,{text:e.review.summary,compact:!0}):null,e.review.scores.map(e=>(0,i.jsxs)(`div`,{className:`aha-spread`,style:{alignItems:`flex-start`},children:[(0,i.jsxs)(`span`,{children:[(0,i.jsx)(`b`,{children:e.criterion}),(0,i.jsx)(`div`,{className:`aha-hint`,children:e.comment})]}),(0,i.jsxs)(`span`,{className:`aha-tag`,children:[e.points,`/`,e.max]})]},e.criterionId)),e.review.strengths?.length?(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`b`,{children:a(`strengths`)}),(0,i.jsx)(`ul`,{style:{margin:0},children:e.review.strengths.map((e,t)=>(0,i.jsx)(`li`,{children:e},t))})]}):null,e.review.nextSteps?.length?(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`b`,{children:a(`nextSteps`)}),(0,i.jsx)(`ul`,{style:{margin:0},children:e.review.nextSteps.map((e,t)=>(0,i.jsx)(`li`,{children:e},t))})]}):null]},t))]}):null]})}let ym=[[`openai`,`providerOpenai`],[`volcengine`,`providerVolcengine`],[`minimax`,`providerMinimax`],[`azure`,`providerAzure`]],bm=[[`standard`,`textStandard`],[`large`,`textLarge`],[`larger`,`textLarger`]];function xm(){let{api:e,t,settings:n,settingsSaved:a,setVoiceId:o,speech:s,language:c}=v(),l=y(()=>e.call(`models/list`),[]),[d,f]=(0,r.useState)(null),p=e=>d?.area===e?d.failure:null,[m,h]=(0,r.useState)(()=>Tt()),[g,_]=(0,r.useState)(``),[b,x]=(0,r.useState)(!1);(0,r.useEffect)(()=>Et(h),[]);async function S(e,t){f(null);try{await t()}catch(t){f({area:e,failure:t})}}let C=(0,r.useRef)(Promise.resolve()),w=(t,n)=>{let r=S(t,async()=>{await e.call(`settings/save`,{settings:n}),await a()});return C.current=C.current.then(()=>r),r},T=(e,t)=>e&&t?`${e}::${t}`:``,E=(e,t)=>{let[n=``,r=``]=t?t.split(`::`):[];w(`models`,{[`${e}Provider`]:n,[`${e}Model`]:r})},D=(0,r.useMemo)(()=>(l.value??[]).map(e=>({value:`${e.provider}::${e.model}`,label:`${e.providerName} · ${e.name}${e.images?` 🖼`:``}`})),[l.value]),O=c===`zh`?`zh-CN`:`en`,k=m.filter(e=>e.lang.toLowerCase().startsWith(O.split(`-`)[0])),A=n.ttsProvider??`openai`,ee=(n.fields?.[A]??[]).filter(e=>!e.secret),te=n.tts?.[A]??{};async function j(){f(null),x(!0);try{await C.current,s.configure({engine:n.voiceEngine??`browser`,voiceId:n.voiceId||void 0,language:O,rate:n.voiceRate??1});let e=await s.speak(t(`testSentence`),{rate:n.voiceRate??1}).done;e?.error&&f({area:`test`,failure:new u(e.code??`speech`,e.error)})}finally{x(!1)}}return n.voiceEngine?(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:820},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:t(`settingsTitle`)}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:t(`textSize`)}),(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:6},children:bm.map(([e,r])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":(n.textSize??`standard`)===e,onClick:()=>w(`text`,{textSize:e}),children:t(r)},e))}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`textSizeHint`)}),(0,i.jsx)(Yu,{error:p(`text`),reveal:!0})]}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:t(`modelsTitle`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`modelsHint`)}),[[`teach`,`teachModel`],[`quick`,`quickModel`]].map(([e,r])=>(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(r),(0,i.jsxs)(`select`,{className:`aha-select`,value:T(n[`${e}Provider`],n[`${e}Model`]),onChange:t=>E(e,t.currentTarget.value),children:[(0,i.jsx)(`option`,{value:``,children:t(e===`quick`?`followTeach`:`followDefault`)}),D.map(e=>(0,i.jsx)(`option`,{value:e.value,children:e.label},e.value))]})]},e)),l.loading?(0,i.jsx)(Hu,{}):null,(0,i.jsx)(Yu,{error:p(`models`),reveal:!0})]}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:t(`voiceTitle`)}),(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:6},children:[[`browser`,`engineBrowser`],[`cloud`,`engineCloud`],[`off`,`engineOff`]].map(([e,r])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":n.voiceEngine===e,onClick:()=>w(`engine`,{voiceEngine:e}),children:t(r)},e))}),(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(`voiceRate`),` · `,n.voiceRate??1,`×`,(0,i.jsx)(`input`,{type:`range`,min:`0.5`,max:`2`,step:`0.05`,value:n.voiceRate??1,onChange:e=>w(`engine`,{voiceRate:Number(e.currentTarget.value)})})]}),(0,i.jsx)(Yu,{error:p(`engine`),reveal:!0}),n.voiceEngine===`browser`?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(`browserVoice`),(0,i.jsxs)(`select`,{className:`aha-select`,value:n.voiceId??``,onChange:e=>o(e.currentTarget.value),children:[(0,i.jsxs)(`option`,{value:``,children:[t(`autoVoice`),Dt(O)?` (${Dt(O).name})`:``]}),(k.length?k:m).map(e=>(0,i.jsxs)(`option`,{value:e.id,children:[e.name,` · `,e.lang,e.local?``:` ☁`]},e.id))]})]}),wt()&&!k.length?(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`noVoiceForLanguage`)}):null]}):null,n.voiceEngine===`cloud`?(0,i.jsxs)(`div`,{className:`aha-col`,children:[(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(`cloudProvider`),(0,i.jsx)(`select`,{className:`aha-select`,value:A,onChange:e=>w(`cloud`,{ttsProvider:e.currentTarget.value}),children:ym.map(([e,n])=>(0,i.jsx)(`option`,{value:e,children:t(n)},e))})]}),ee.map(e=>(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(`field_${e.key}`),(0,i.jsx)(`input`,{className:`aha-input`,defaultValue:te[e.key]??``,onBlur:t=>{let n=t.currentTarget.value.trim();n!==(te[e.key]??``)&&w(`cloud`,{tts:{[A]:{[e.key]:n}}})}},`${A}:${e.key}:${te[e.key]??``}`)]},e.key)),(0,i.jsx)(Yu,{error:p(`cloud`),reveal:!0}),(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(`field_apiKey`),` · `,(0,i.jsx)(`span`,{className:n.keys?.[A]?`aha-ok`:`aha-hint`,children:n.keys?.[A]?t(`keySaved`):t(`keyMissing`)}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`input`,{className:`aha-input`,style:{flex:1},type:`password`,autoComplete:`off`,spellCheck:!1,value:g,onChange:e=>_(e.currentTarget.value)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,disabled:!g.trim(),onClick:()=>S(`key`,async()=>{await e.call(`settings/set-key`,{provider:A,key:g.trim()}),_(``),await a()}),children:t(`saveKey`)}),n.keys?.[A]?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>S(`key`,async()=>{await e.call(`settings/clear-key`,{provider:A}),await a()}),children:t(`clearKey`)}):null]})]}),(0,i.jsx)(Yu,{error:p(`key`),reveal:!0})]}):null,(0,i.jsx)(`div`,{children:(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,disabled:b||n.voiceEngine===`off`,onClick:j,children:[b?(0,i.jsx)(`span`,{className:`aha-spinner`}):`🔊`,` `,t(`testVoice`)]})}),(0,i.jsx)(Yu,{error:p(`test`),reveal:!0})]}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:t(`boardTheme`)}),(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:6},children:[[`auto`,`themeAuto`],[`light`,`themeLight`],[`dark`,`themeDark`]].map(([e,r])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":(n.boardTheme??`auto`)===e,onClick:()=>w(`board`,{boardTheme:e}),children:t(r)},e))}),(0,i.jsx)(`b`,{children:t(`boardFont`)}),(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:6},children:[[`hand`,`fontHand`],[`standard`,`fontStandard`]].map(([e,r])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":(n.boardFont??`hand`)===e,onClick:()=>w(`board`,{boardFont:e}),style:e===`hand`?{fontFamily:Np}:void 0,children:t(r)},e))}),(0,i.jsx)(`b`,{children:t(`boardView`)}),(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:6},children:[[`canvas`,`viewCanvas`],[`pages`,`viewPages`]].map(([e,r])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":(n.boardView??`canvas`)===e,onClick:()=>w(`board`,{boardView:e}),children:t(r)},e))}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`boardViewHint`)}),(0,i.jsx)(Yu,{error:p(`board`),reveal:!0})]}),(0,i.jsx)(Sm,{}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`privacyNote`)})]}):(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Hu,{label:t(`loading`)})})}function Sm(){let{api:e,t}=v(),[n,a]=(0,r.useState)(null),[o,s]=(0,r.useState)(!0),[c,l]=(0,r.useState)(!1),[u,d]=(0,r.useState)(!1),[f,p]=(0,r.useState)(null),[m,h]=(0,r.useState)(!1),g=t=>{s(!0),l(!1),e.call(`plugin/version`,{force:t}).then(a).catch(()=>l(!0)).finally(()=>s(!1))};(0,r.useEffect)(()=>{g(!1)},[]);async function _(){d(!0),h(!1);try{p(await e.call(`plugin/update`))}catch{h(!0)}finally{d(!1)}}let y=n?.install?.kind;return(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`b`,{children:t(`versionTitle`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,disabled:o||u,onClick:()=>g(!0),children:t(o?`versionChecking`:`versionCheck`)})]}),c?(0,i.jsx)(`p`,{className:`aha-error`,children:t(`versionFailed`)}):null,n?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`span`,{children:t(`versionCurrent`)}),(0,i.jsxs)(`span`,{className:`aha-hint`,children:[`v`,n.current]})]}),(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`span`,{children:t(`versionLatest`)}),(0,i.jsx)(`span`,{className:`aha-hint`,children:n.latest?`v${n.latest}`:`—`})]}),f?null:(0,i.jsx)(`p`,{className:n.latestUnknown?`aha-error`:`aha-hint`,children:n.latestUnknown?t(`versionFailed`):n.updateAvailable?t(`versionAvailable`,{version:n.latest}):t(`versionUpToDate`)}),!f&&n.updateAvailable&&y===`npm`?(0,i.jsx)(`div`,{children:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:u,onClick:_,children:t(u?`versionUpdating`:`versionUpdate`)})}):null,y===`link`?(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`versionLinked`)}):null,n.updateAvailable&&y===`unknown`?(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`versionManual`,{version:n.latest})}):null]}):null,m?(0,i.jsx)(`p`,{className:`aha-error`,children:t(`versionUpdateFailed`)}):null,f?.pending?(0,i.jsx)(`p`,{className:`aha-hint`,children:typeof f.availableAt==`number`?t(`versionPendingUntil`,{version:f.version,time:new Date(f.availableAt).toLocaleString()}):t(`versionPending`,{version:f.version})}):null,f&&!f.pending?(0,i.jsx)(`div`,{className:`aha-feedback`,"data-ok":`true`,children:t(`versionUpdated`,{version:f.version})}):null]})}function Cm({draftTopic:e,draftUrl:t,token:n}){let{api:a,t:o}=v(),s=y(()=>a.call(`items/list`,{kind:`shorts`}),[]),[c,l]=(0,r.useState)(e??``),[u,d]=(0,r.useState)(t??``),[f,p]=(0,r.useState)(null),[m,h]=(0,r.useState)(null),g=am(),_=x(n);async function b(){if(!c.trim()&&!u.trim())return;h(null);let e=E(`sht`);try{let{job:t}=await a.call(`short/make`,{topic:c,url:u,newId:e});p({id:e,title:c||u,steps:[],stream:t,key:`${e}:new`})}catch(e){h(e)}}(0,r.useEffect)(()=>{_&&(e||t)&&b()},[]);async function S(e){try{let{item:t}=await a.call(`items/get`,{kind:`shorts`,id:e});p({id:t.id,title:t.title,steps:t.board.steps,stream:null,language:t.language,key:`${t.id}:open`,opened:Date.now()})}catch(e){h(e)}}return(0,i.jsx)(`div`,{className:`aha-page`,"data-wide":`true`,children:(0,i.jsxs)(`div`,{className:`aha-split`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{minHeight:0},children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:o(`shortsTitle`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:o(`shortsHint`)})]}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`input`,{className:`aha-input`,style:{flex:2,minWidth:220},value:c,placeholder:o(`topicPlaceholder`),onChange:e=>l(e.currentTarget.value)}),(0,i.jsx)(`input`,{className:`aha-input`,style:{flex:1,minWidth:180},value:u,placeholder:o(`urlPlaceholder`),onChange:e=>d(e.currentTarget.value)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:!c.trim()&&!u.trim(),onClick:b,children:o(`makeShort`)})]}),(0,i.jsx)(Yu,{error:m}),f?(0,i.jsx)(ef,{scope:{kind:`short`,id:f.id},title:f.title,steps:f.steps,stream:f.stream,language:f.language,recordChecks:!1,reveal:f.opened,onStreamDone:e=>{p(t=>({...t,steps:e?.item?.board?.steps??t.steps,title:e?.item?.title??t.title,stream:null})),s.reload()},header:({steps:e})=>(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(jp,{steps:e,title:f.title,kind:null}),g.exporting?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Hu,{label:o(`exporting`,{percent:g.exporting.percent})}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:g.cancel,children:o(`cancel`)})]}):(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,disabled:!f.steps.length,onClick:()=>g.start({steps:f.steps,title:f.title}),children:o(`exportVideo`)})]})},f.key):null,f&&!g.cloud?(0,i.jsx)(`p`,{className:`aha-hint`,children:o(`exportNeedsCloud`)}):null]}),(0,i.jsxs)(`aside`,{className:`aha-col`,style:{minHeight:0,overflow:`auto`},children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:o(`history`)}),s.loading&&!s.value?(0,i.jsx)(Hu,{}):(s.value??[]).length?s.value.map(e=>(0,i.jsxs)(`div`,{className:`aha-option`,style:{cursor:`pointer`},onClick:()=>S(e.id),children:[(0,i.jsx)(`b`,{children:e.title}),(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`small`,{children:new Date(e.createdAt).toLocaleString()}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:async t=>{t.stopPropagation(),await a.call(`items/remove`,{kind:`shorts`,id:e.id}),s.reload()},children:o(`delete`)})]})]},e.id)):(0,i.jsx)(Xu,{children:o(`empty`)})]})]})})}let wm=[[`sheet`,`makeSheet`,`studio/sheet`],[`cards`,`makeCards`,`studio/cards`],[`notes`,`makeNotes`,`studio/notes`],[`quiz`,`makeQuiz`,`studio/quiz`]];function Tm(){let{api:e,t,navigate:n}=v(),a=y(()=>e.call(`items/list`,{kind:`sheets`}),[]),o=y(()=>e.call(`items/list`,{kind:`decks`}),[]),[s,c]=(0,r.useState)([]),[l,u]=(0,r.useState)(!1),[d,f]=(0,r.useState)(``),[p,m]=(0,r.useState)(null),[h,g]=(0,r.useState)(null),_=b();async function x(e,t){if(!s.length){u(!0);return}m(e),g(null);try{S((await _.run(t,{materialIds:s,focus:d})).item)}catch(e){e?.code!==`cancelled`&&g(e)}finally{m(null)}}function S(e){e.kind===`cheatsheet`?n(`sheet`,{sheetId:e.id}):e.kind===`notes`?n(`item`,{kind:`notes`,id:e.id}):e.kind===`cards`?n(`cards`,{deckId:e.id}):n(`item`,{kind:`quiz`,id:e.id})}async function C(t,n){await e.call(`items/remove`,{kind:t,id:n}),t===`sheets`?a.reload():o.reload()}let w=(e,n,r)=>(0,i.jsxs)(`section`,{className:`aha-col`,children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:e}),n.loading&&!n.value?(0,i.jsx)(Hu,{}):(n.value??[]).length?(0,i.jsx)(`div`,{className:`aha-grid`,children:n.value.map(e=>(0,i.jsxs)(`div`,{className:`aha-card`,"data-click":`true`,onClick:()=>S(e),children:[(0,i.jsx)(`span`,{className:`aha-tag`,children:e.kind===`cheatsheet`?t(`sheets`):e.kind===`notes`?t(`notes`):e.kind===`cards`?t(`decks`):t(`quizzes`)}),(0,i.jsx)(`b`,{children:e.title}),(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:new Date(e.updatedAt).toLocaleDateString()}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:t=>{t.stopPropagation(),C(r,e.id)},children:t(`delete`)})]})]},e.id))}):(0,i.jsx)(Xu,{children:t(`empty`)})]});return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:t(`studioTitle`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`studioHint`)})]}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>u(!0),children:s.length?t(`attached`,{count:s.length}):t(`pickMaterials`)}),(0,i.jsx)(`input`,{className:`aha-input`,style:{flex:1,minWidth:220},value:d,placeholder:t(`focusPlaceholder`),onChange:e=>f(e.currentTarget.value)})]}),(0,i.jsx)(`div`,{className:`aha-row`,children:wm.map(([e,n,r])=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:!!p,onClick:()=>x(e,r),children:[p===e?(0,i.jsx)(`span`,{className:`aha-spinner`}):null,t(n)]},e))}),p?(0,i.jsx)(Gu,{kind:p,job:_}):null,(0,i.jsx)(Yu,{error:h})]}),w(`${t(`sheets`)} · ${t(`notes`)}`,a,`sheets`),w(`${t(`decks`)} · ${t(`quizzes`)}`,o,`decks`),l?(0,i.jsx)(ed,{selected:s,onChange:c,onClose:()=>u(!1)}):null]})}Object.freeze([`again`,`hard`,`good`,`easy`]),Object.freeze({again:1,hard:3,good:4,easy:5});function Em(e,t=Date.now()){return Date.parse(e?.dueAt??0)<=t}function Dm(e,t=Date.now()){return(e||[]).filter(e=>Em(e,t)).sort((e,t)=>Date.parse(e.dueAt)-Date.parse(t.dueAt))}function Om({courseId:e,lessonId:t,unitId:n,review:a,mistakes:o,deckId:s}){let{api:c,t:l,navigate:d}=v(),f=b(),[p,m]=(0,r.useState)(null),[h,g]=(0,r.useState)(null),[_,y]=(0,r.useState)(0),[x,S]=(0,r.useState)([]),[C,w]=(0,r.useState)(0),[T,E]=(0,r.useState)(null),[D,O]=(0,r.useState)({}),[k,A]=(0,r.useState)(null),[ee,te]=(0,r.useState)({}),[j,ne]=(0,r.useState)([]),re=(0,r.useRef)(new Map),ie=(0,r.useRef)(0),ae=(0,r.useRef)(!1),oe=(0,r.useRef)(0),se=(0,r.useRef)({index:0,results:[]});se.current={index:_,results:x},(0,r.useEffect)(()=>{let r=!0;return(async()=>{let i=!!n&&ae.current;ae.current=!1;try{if(e&&!s&&c.call(`course/get`,{courseId:e}).then(e=>{r&&E(e)}).catch(()=>void 0),a||o){let t=await c.call(`review/session`,{...e?{courseId:e}:{},...o?{mistakes:!0}:{}});r&&m({title:l(o?`mistakeRound`:`review`),items:t.items.map(e=>({...e.item,context:e})),language:void 0,more:t.more??0});return}if(s){let{item:e}=await c.call(`items/get`,{kind:`decks`,id:s});r&&m({title:e.title,items:e.items??[],language:e.language,missing:e.missing});return}let d=n?`unit/quiz`:`lesson/practice`,p=n?{courseId:e,unitId:n,...i?{force:!0}:{}}:{courseId:e,lessonId:t},h=await c.call(d,p),g=h.job?await f.run(null,null,{existing:h.job}):h,_=(g.quiz??g.sets?.[t]??g.practice)?.items??[];if(!_.length&&!n)throw new u(`bad-output`,`No practice items came back`);let v=t?await c.call(`lesson/get`,{courseId:e,lessonId:t}):null;r&&m({title:v?.lesson.title??l(`unitQuiz`),items:_,language:v?.language})}catch(e){i&&(ae.current=!0),r&&g(e)}})(),()=>{r=!1}},[e,t,n,a,o,s,C]);let ce=p?.items[_],le=r=>{let i=_;S(e=>[...e,{...r,index:i}]);let a=ce?.context?.courseId??e;!a||s||re.current.set(i,c.call(`lesson/record`,{courseId:a,lessonId:ce?.context?.lessonId??t,conceptIds:ce?.conceptIds??[],evidence:{kind:n?`quiz`:`practice`,score:r.score,correct:r.correct===!0,confidence:r.confidence,hintsUsed:r.hintsUsed,timeMs:r.timeMs,expectedMs:6e4,errorTag:r.errorTag},source:fd({courseId:e,lessonId:t,unitId:n},ce),response:r.given??r.response??``,sig:fn(ce)}).then(e=>(e?.mastery&&O(t=>({...t,...e.mastery})),e?.recommendation&&A(e.recommendation),e?.evidenceId??null)).catch(()=>null))},M=(0,r.useMemo)(()=>lf(x),[x]);function ue(e,t){oe.current+=1;let n=oe.current;ne(r=>[...r.slice(-2),{key:n,text:e,retry:t}])}let de=e=>ne(t=>t.filter(t=>t.key!==e));async function fe(r,i){let a=p?.items[r],o=se.current.results.find(e=>e.index===r),u=fd({courseId:e,lessonId:t,unitId:n,deckId:s},a);if(!o||!u)return;let d=ie.current;te(e=>({...e,[r]:{...e[r],status:`checking`,note:i,error:null}}));try{let e=await(re.current.get(r)??null),t=await c.run(`item/challenge`,{source:u,response:o.given??o.response??``,shown:gd(o),...e?{evidenceId:e}:{},note:i,sig:fn(ee[r]?.item??a)});if(ie.current!==d){t?.item&&m(e=>e&&{...e,items:e.items.map((e,n)=>n===r&&fn(e)===fn(a)?km(t.item,e):e)});return}te(e=>({...e,[r]:_d(e[r],t,se.current.results.find(e=>e.index===r))})),t?.result&&S(e=>vd(e,r,t.result)),t?.mastery&&O(e=>({...e,...t.mastery})),t?.recommendation&&A(t.recommendation),se.current.index!==r&&ue(yd(l,{index:r,verdict:t?.verdict,regraded:!!t?.result,earlier:t?.earlier??0}))}catch(e){if(ie.current!==d)return;te(t=>({...t,[r]:{...t[r],status:`failed`,note:i,error:e}})),se.current.index!==r&&ue(yd(l,{index:r,message:Ju(l,e)}),()=>fe(r,i))}}function pe(){ie.current+=1,m(e=>({...e,items:e.items.map((e,t)=>ee[t]?.item?km(ee[t].item,e):e)})),te({}),ne([]),re.current=new Map,y(0),S([]),A(null)}function me(){pe(),m(null),O({}),w(e=>e+1)}function he(){pe(),m(null),O({}),ae.current=!0,w(e=>e+1)}if(h)return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsx)(Yu,{error:h}),(0,i.jsx)(`div`,{children:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>{g(null),w(e=>e+1)},children:l(`retry`)})})]});if(!p){let e=n&&f.progress?.label===`writing`?l(`quizWriting`,{count:f.progress.done}):null;return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Wu,{progress:f.progress,label:l(n?`makingQuiz`:`makingPractice`),detail:e,onCancel:f.running?f.cancel:void 0})})}if(!p.items.length)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Xu,{children:l(a?`nothingToReview`:o?`noMistakesDue`:`empty`)})});let ge=_>=p.items.length;return(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:760},children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:p.title}),(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:6},children:[!ge&&M.streak>=2?(0,i.jsx)(`span`,{className:`aha-tag aha-streak`,children:l(`streakCount`,{count:M.streak})}):null,(0,i.jsxs)(`span`,{className:`aha-tag`,children:[Math.min(_+1,p.items.length),`/`,p.items.length]})]})]}),_===0?(0,i.jsx)(Nm,{parts:p.missing}):null,j.map(e=>(0,i.jsxs)(`div`,{className:`aha-itemNotice`,role:`status`,children:[(0,i.jsxs)(`span`,{className:`aha-itemNoticeText`,children:[`🧐 `,e.text]}),e.retry?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>{de(e.key),e.retry()},children:l(`retry`)}):null,(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,"aria-label":l(`close`),onClick:()=>de(e.key),children:`×`})]},e.key)),ce?.context?(0,i.jsx)(`p`,{className:`aha-hint`,children:[ce.context.courseTitle,ce.context.conceptName,ce.context.mistake?l(`mistakeContext`,{count:ce.context.mistake.wrong}):``].filter(Boolean).join(` · `)}):null,ge?(0,i.jsx)(Am,{set:p,stats:M,context:T,after:D,recommendation:k,courseId:e,lessonId:t,unitId:n,onRetry:o?void 0:pe,onNewSet:n&&!a&&!s?he:void 0,onNextRound:o&&p.more?me:void 0,backTab:o?`practice`:void 0}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`div`,{className:`aha-card`,children:(0,i.jsx)(Wd,{item:ce,language:p.language,onResult:le,onContinue:()=>y(e=>e+1),continueLabel:_+1<p.items.length?l(`continue`):l(`confirm`),keyboard:!0,onChallenge:fd({courseId:e,lessonId:t,unitId:n,deckId:s},ce)?e=>fe(_,e):void 0,check:ee[_]??null},`${_}`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:l(`keysHint`)})]})]})}function km(e,t){return t.context?{...e,context:t.context}:e}function Am({set:e,stats:t,context:n,after:a,recommendation:o,courseId:s,lessonId:c,unitId:l,onRetry:u,onNewSet:d,onNextRound:f,backTab:p}){let{t:m,navigate:h}=v(),g=n?.course,_=n?.progress,y=(0,r.useMemo)(()=>{let t=g?Ye(g):new Map;return[...new Set(e.items.flatMap(e=>e.conceptIds??[]))].filter(e=>a[e]!==void 0).map(n=>({id:n,name:t.get(n)?.name??e.items.find(e=>e.context?.conceptId===n)?.context?.conceptName??n,before:_?of(_.concepts?.[n]):null,after:sf(a[n]),percent:a[n]}))},[e,g,_,a]),b=(0,r.useMemo)(()=>{if(!g)return null;let e=Ge(g),t=c?e.find(e=>e.lesson.id===c):null,n=t?Qe(g,c)?.lesson.id:l?e.find((t,n)=>n>e.findLastIndex(e=>e.unit.id===l))?.lesson.id:null;return uf(o,{lessonId:c,unitId:t?.unit.id??null,nextLessonId:n??Ze(g,_)?.lesson.id})},[g,_,o,c,l]),x={relearn:()=>h(`lesson`,{courseId:s,lessonId:b.lessonId}),review:()=>h(`practice`,{courseId:s,review:!0}),quiz:()=>h(`practice`,{courseId:s,unitId:b.unitId}),next:()=>h(`lesson`,{courseId:s,lessonId:b.lessonId}),course:()=>h(`course`,{courseId:s,...p?{tab:p}:{}})},S=b?m({relearn:`nextRelearn`,review:`nextReview`,quiz:`nextQuiz`,next:`nextLessonStep`,course:`nextCourse`}[b.kind]):``,C=b?m({relearn:`relearnLesson`,review:`reviewCourse`,quiz:`unitQuiz`,next:`nextLesson`,course:`backToCourse`}[b.kind]):``;return(0,i.jsxs)(`div`,{className:`aha-card aha-summary`,children:[(0,i.jsxs)(`div`,{className:`aha-stars`,role:`img`,"aria-label":m(`starsLabel`,{count:t.stars}),children:[`★`.repeat(t.stars),(0,i.jsx)(`span`,{children:`★`.repeat(3-t.stars)})]}),(0,i.jsx)(`b`,{children:m(`practiceDone`,{correct:t.correct,total:e.items.length})}),(0,i.jsxs)(`div`,{className:`aha-row aha-summaryStats`,children:[(0,i.jsxs)(`span`,{children:[(0,i.jsxs)(`b`,{children:[Math.round(t.accuracy*100),`%`]}),m(`accuracy`)]}),(0,i.jsxs)(`span`,{children:[(0,i.jsx)(`b`,{children:t.bestStreak}),m(`bestStreak`)]})]}),y.length?(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:m(`masteryChange`)}),y.map(e=>(0,i.jsxs)(`div`,{className:`aha-row aha-conceptMove`,children:[(0,i.jsx)(`span`,{style:{flex:1,minWidth:120},children:e.name}),e.before?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`span`,{className:`aha-level`,"data-level":e.before,children:m(cf[e.before])}),(0,i.jsx)(`span`,{"aria-hidden":`true`,children:`→`})]}):null,(0,i.jsx)(`span`,{className:`aha-level`,"data-level":e.after,children:m(cf[e.after])}),(0,i.jsxs)(`span`,{className:`aha-hint`,children:[e.percent,`%`]})]},e.id))]}):null,b&&s?(0,i.jsx)(`p`,{children:S}):null,(0,i.jsxs)(`div`,{className:`aha-row`,children:[b&&s?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:x[b.kind],children:C}):null,f?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:f,children:m(`mistakeRoundMore`,{count:e.more})}):null,u?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:u,children:m(`retry`)}):null,d?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:d,children:m(`newQuizSet`)}):null,s&&b?.kind!==`course`?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:x.course,children:m(`backToCourse`)}):null]})]})}function jm({courseId:e,unitId:t,deckId:n}){let{api:a,t:o}=v(),s=b(),[c,l]=(0,r.useState)(null),[u,d]=(0,r.useState)(null),[f,p]=(0,r.useState)(!1),[m,h]=(0,r.useState)(null);(0,r.useEffect)(()=>{let r=!0;return(async()=>{try{let i;if(n){let{item:e}=await a.call(`items/get`,{kind:`decks`,id:n});i={title:o(`cardsTitle`),cards:e.cards,order:Pm(e).slice(0,40),total:e.cards.length,missing:e.missing}}else if(t){let n=await a.call(`unit/cards`,{courseId:e,unitId:t}),{deck:r,unit:c}=n.job?await s.run(null,null,{existing:n.job}):n;i={title:`${o(`unitN`,{n:c.n})} · ${c.title}`,kicker:o(`unitCards`),cards:r.cards.map(e=>({...e,unitId:t})),order:Pm({...r,unitId:t}),total:r.cards.length}}else{let{cards:t}=await a.call(`course/card-session`,{courseId:e});i={title:o(`cardReview`),cards:t,order:t.map(Mm)}}if(!r)return;l({...i,cards:i.cards.map(e=>({...e,key:Mm(e)}))}),h(i.order)}catch(e){r&&d(e)}})(),()=>{r=!1}},[e,t,n]);let g=(0,r.useMemo)(()=>c?.cards.find(e=>e.key===m?.[0]),[c,m]);async function _(t){if(g){p(!1),h(e=>{let n=e.slice(1);return t===`again`?[...n,g.key]:n});try{n?await a.call(`items/card-review`,{id:n,cardId:g.id,grade:t}):await a.call(`course/card-review`,{courseId:e,...g.unitId?{unitId:g.unitId}:{},cardId:g.id,grade:t})}catch{}}}if(u)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Yu,{error:u})});if(!c||!m){let e=s.progress?.label===`writing`?o(`cardsWriting`,{count:s.progress.done}):null;return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Wu,{progress:s.progress,label:o(t?`makingUnitCards`:`makingCards`),detail:e,onCancel:s.running?s.cancel:void 0})})}let y=g?.unit?`${o(`unitN`,{n:g.unit.n})} · ${g.unit.title}`:``;return(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:720},children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:2,minWidth:0},children:[c.kicker?(0,i.jsx)(`span`,{className:`aha-hint`,children:c.kicker}):null,(0,i.jsx)(`h2`,{className:`aha-title`,children:c.title})]}),(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:6},children:[(0,i.jsx)(`span`,{className:`aha-tag`,children:o(`cardsDue`,{count:m.length})}),c.total?(0,i.jsx)(`span`,{className:`aha-tag`,children:o(`cardsTotal`,{count:c.total})}):null]})]}),(0,i.jsx)(Nm,{parts:c.missing}),g?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`div`,{className:`aha-flash`,"data-flipped":f,onClick:()=>p(e=>!e),role:`button`,tabIndex:0,onKeyDown:e=>{(e.key===` `||e.key===`Enter`)&&p(e=>!e)},children:(0,i.jsxs)(`div`,{className:`aha-flashInner`,children:[(0,i.jsx)(`div`,{className:`aha-flashFace`,children:(0,i.jsx)(bd,{text:g.front})}),(0,i.jsx)(`div`,{className:`aha-flashFace aha-flashBack`,children:(0,i.jsx)(bd,{text:g.back})})]})}),(0,i.jsx)(`p`,{className:`aha-hint`,style:{textAlign:`center`},children:[y,g.tag,o(`flip`)].filter(Boolean).join(` · `)}),f?(0,i.jsx)(`div`,{className:`aha-row`,style:{justifyContent:`center`},children:[[`again`,`again`],[`hard`,`hard`],[`good`,`good`],[`easy`,`easy`]].map(([e,t])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":e===`good`?`primary`:void 0,onClick:()=>_(e),children:o(t)},e))}):null]}):(0,i.jsx)(Xu,{children:c.cards.length?o(`cardsDone`):o(`cardReviewEmpty`)})]})}let Mm=e=>`${e.unitId??``}:${e.id}`;function Nm({parts:e}){let{t}=v();return e?.length?(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`partsMissing`,{count:e.length,parts:e.join(`、`)})}):null}function Pm(e){let t=e.unitId??null,n=e=>Mm({unitId:t,id:e}),r=Dm(Object.values(e.srs??{}),Date.now()).map(e=>e.id).filter(t=>e.cards.some(e=>e.id===t)),i=e.cards.filter(t=>!e.srs?.[t.id]).map(e=>e.id);return[...r,...i].map(n)}function Fm({courseId:e,unitId:t,sheetId:n}){let{api:a,t:o,toast:s}=v(),c=b(),[l,u]=(0,r.useState)(null),[d,f]=(0,r.useState)(null),[p,m]=(0,r.useState)(null),h=async r=>{f(null);try{let i;if(n)i=(await a.call(`items/get`,{kind:`sheets`,id:n})).item.sheet;else{let n=await a.call(`unit/sheet`,{courseId:e,unitId:t,force:r});i=n.job?(await c.run(null,null,{existing:n.job})).sheet:n.sheet}u(i),m(i.layout)}catch(e){f(e)}};(0,r.useEffect)(()=>{h(!1)},[e,t,n]);let g=r=>{let i={...p,...r};m(i),(n?a.call(`items/sheet-layout`,{id:n,layout:i}):a.call(`unit/sheet-layout`,{courseId:e,unitId:t,layout:i})).catch(e=>s(Ju(o,e)))};if(d)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Yu,{error:d})});if(!l||!p)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Wu,{progress:c.progress,label:o(`makingSheet`),onCancel:c.running?c.cancel:void 0})});let _=p.order.map(e=>l.sections.find(t=>t.id===e)).filter(Boolean),y=new Set(p.hidden??[]);return(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:1200},children:[(0,i.jsxs)(`div`,{className:`aha-spread aha-noprint`,children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:l.title||o(`sheetTitle`)}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsxs)(`label`,{className:`aha-row`,style:{gap:6},children:[o(`columns`),(0,i.jsx)(`select`,{className:`aha-select`,style:{width:`auto`},value:p.columns,onChange:e=>g({columns:Number(e.currentTarget.value)}),children:[1,2,3,4].map(e=>(0,i.jsx)(`option`,{value:e,children:e},e))})]}),(0,i.jsxs)(`label`,{className:`aha-row`,style:{gap:6},children:[o(`fontSize`),(0,i.jsx)(`select`,{className:`aha-select`,style:{width:`auto`},value:p.fontSize,onChange:e=>g({fontSize:Number(e.currentTarget.value)}),children:[9,10,11,12,13,14,16].map(e=>(0,i.jsx)(`option`,{value:e,children:e},e))})]}),(0,i.jsxs)(`label`,{className:`aha-row`,style:{gap:6},children:[(0,i.jsx)(`input`,{type:`checkbox`,checked:p.highlight,onChange:e=>g({highlight:e.currentTarget.checked})}),o(`highlight`)]}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>window.print(),children:o(`print`)}),n?null:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>{u(null),h(!0)},children:o(`regenerate`)})]})]}),(0,i.jsx)(`div`,{className:`aha-row aha-noprint`,style:{gap:6},children:_.map((e,t)=>(0,i.jsxs)(`span`,{className:`aha-chip`,"data-active":!y.has(e.id),children:[(0,i.jsx)(`span`,{onClick:()=>g({hidden:y.has(e.id)?[...y].filter(t=>t!==e.id):[...y,e.id]}),children:e.title}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>{let t=[...p.order],n=t.indexOf(e.id);n>0&&([t[n-1],t[n]]=[t[n],t[n-1]]),g({order:t})},disabled:t===0,children:`↑`})]},e.id))}),(0,i.jsx)(`div`,{className:`aha-printable`,children:(0,i.jsx)(`div`,{className:`aha-sheet`,"data-highlight":p.highlight,style:{columnCount:p.columns,"--sheet-size":`${p.fontSize}px`},children:_.filter(e=>!y.has(e.id)).map(e=>(0,i.jsxs)(`div`,{className:`aha-sheetSection`,children:[(0,i.jsx)(`h4`,{children:e.title}),e.items.map((e,t)=>(0,i.jsxs)(`div`,{className:`aha-sheetItem`,"data-kind":e.kind,children:[e.title?(0,i.jsxs)(`b`,{children:[e.title,`:`]}):null,e.text?(0,i.jsx)(bd,{text:e.text,compact:!0}):null,e.tex?(0,i.jsx)(Ic,{tex:e.tex}):null,(0,i.jsx)(Im,{cite:e.cite})]},t)),e.related?.length?(0,i.jsxs)(`div`,{className:`aha-cite`,children:[`↔ `,e.related.join(` · `)]}):null]},e.id))})})]})}function Im({cite:e}){let{t}=v();if(e?.verified!==!0)return null;let n=e.page?rd(t,{page:e.pdf,label:e.page}):null;return(0,i.jsxs)(`span`,{className:`aha-cite`,title:[e.quote?t(`citeQuote`,{quote:e.quote}):``,n?.pdf??``].filter(Boolean).join(`
757
- `)||void 0,"data-quote":e.quote?`true`:void 0,children:[`(`,n?.text??`§ ${e.section}`,e.source?` · ${e.source}`:``,`)`]})}function Lm({pages:e,pdf:t}){let{t:n}=v(),[r,a]=String(e??``).split(`–`);if(!/\d/u.test(r??``))return null;let o=rd(n,{page:t?.[0]??r,end:a?t?.[1]??a:void 0,label:r,endLabel:a});return(0,i.jsxs)(`span`,{className:`aha-cite`,title:o.pdf,children:[`(`,o.text,`)`]})}function Rm({kind:e,id:t,materialId:n}){let{api:a,t:o}=v(),s=b(),[c,l]=(0,r.useState)(null),[u,d]=(0,r.useState)(null),[f,p]=(0,r.useState)(0);if((0,r.useEffect)(()=>{let r=!0;return(async()=>{try{if(e===`digest`){let{material:e}=await a.call(`material/get`,{id:n}),t=f===0?e.digest:null;if(!t){let e=await a.call(`material/digest`,{id:n});t=(await s.run(null,null,{existing:e.job})).material.digest}r&&l({title:e.title,digest:t});return}let{item:i}=await a.call(`items/get`,{kind:`sheets`,id:t});r&&l({title:i.title,markdown:i.markdown})}catch(e){r&&d(e)}})(),()=>{r=!1}},[e,t,n,f]),e===`quiz`)return(0,i.jsx)(Om,{deckId:t});if(u)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Yu,{error:u})});if(!c){let e=s.progress;return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Wu,{progress:e,label:e?.label===`reading`?o(`digestReading`,{done:e.done,total:Math.max(1,e.total-1)}):e?.label===`writing`?o(`digestWriting`):o(`generating`),onCancel:s.running?s.cancel:void 0})})}if(c.markdown!==void 0)return(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:860},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:c.title}),(0,i.jsx)(`div`,{className:`aha-card`,children:(0,i.jsx)(bd,{text:c.markdown})})]});let m=c.digest;return(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:900},children:[(0,i.jsxs)(`h2`,{className:`aha-title`,children:[o(`digestTitle`),` · `,c.title]}),m.missing?.length?(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`span`,{className:`aha-error`,children:o(`digestMissing`,{count:m.missing.length,parts:m.missing.join(`, `)})}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>{l(null),p(e=>e+1)},children:o(`redigest`)})]}):null,(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:o(`overview`)}),(0,i.jsx)(bd,{text:m.overview})]}),m.structure?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:o(`structure`)}),m.structure.map((e,t)=>(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:2},children:[(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`b`,{children:e.heading}),(0,i.jsx)(Lm,{pages:e.pages,pdf:e.pdf})]}),(0,i.jsx)(`ul`,{style:{margin:0},children:e.points.map((e,t)=>(0,i.jsx)(`li`,{children:(0,i.jsx)(bd,{text:e,compact:!0})},t))})]},t))]}):null,m.keyIdeas?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:o(`keyIdeas`)}),(0,i.jsx)(`ul`,{style:{margin:0},children:m.keyIdeas.map((e,t)=>(0,i.jsx)(`li`,{children:(0,i.jsx)(bd,{text:e,compact:!0})},t))})]}):null,m.arguments?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:o(`arguments`)}),m.arguments.map((e,t)=>(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`b`,{children:e.claim}),(0,i.jsx)(Lm,{pages:e.page,pdf:e.pdf}),(0,i.jsx)(`p`,{className:`aha-hint`,children:e.support})]},t))]}):null,m.glossary?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:o(`glossary`)}),m.glossary.map((e,t)=>(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`b`,{children:e.term}),`:`,e.meaning]},t))]}):null,m.questions?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:o(`discussion`)}),(0,i.jsx)(`ol`,{style:{margin:0},children:m.questions.map((e,t)=>(0,i.jsx)(`li`,{children:e},t))})]}):null]})}let zm=[[`home`,`navHome`,`home`],[`courses`,`navCourses`,`courses`],[`assist`,`navAssist`,`assist`],[`materials`,`navMaterials`,`library`],[`studio`,`navStudio`,`studio`],[`shorts`,`navShorts`,`shorts`],[`plan`,`navPlan`,`plan`],[`profile`,`navProfile`,`profile`],[`settings`,`navSettings`,`settings`],[`about`,`navAbout`,`heart`]],Bm={home:Qf,courses:wf,craft:Rf,handout:Jf,course:_f,lesson:om,practice:Om,cards:jm,sheet:Fm,item:Rm,project:vm,materials:um,studio:Tm,assist:nf,shorts:Cm,plan:fm,profile:_m,settings:xm,about:Xt},Vm={craft:`courses`,course:`courses`,lesson:`courses`,handout:`courses`,practice:`courses`,project:`courses`,cards:`studio`,sheet:`studio`,item:`studio`},Hm=e=>e.params?.courseId&&[`cards`,`sheet`].includes(e.screen)?`courses`:Vm[e.screen]??e.screen;function Um(e){let[t,n]=(0,r.useState)(0);return(0,i.jsx)(s,{onError:zt,fallback:({error:t})=>(0,i.jsx)(`div`,{className:`aha`,children:(0,i.jsx)(`main`,{className:`aha-main`,children:(0,i.jsx)(l,{t:e.t,error:t,onHome:()=>n(e=>e+1)})})}),children:(0,i.jsx)(Wm,{...e})},t)}function Wm({rpc:e,t,language:n,dsh:a}){let{route:o,setRoute:c,crashed:u}=Rt(),d=(0,r.useRef)([]),f=(0,r.useCallback)((e,t={},{replace:n=!1}={})=>{c(r=>(n||(d.current.push(r),d.current.length>40&&d.current.shift()),{screen:e,params:t}))},[c]),p=(0,r.useCallback)(()=>{let e=d.current.pop();c(e??{screen:`home`,params:{}})},[c]);(0,r.useEffect)(()=>{let e=e=>{let t=e.detail;t?.screen&&Bm[t.screen]&&f(t.screen,t.params??{})};return window.addEventListener(Pt,e),()=>window.removeEventListener(Pt,e)},[f]);let{value:m,toastText:h,textSize:g}=It({rpc:e,t,language:n,dsh:a,navigate:f,back:p}),v=Gm(Ut.includes(o.screen)),y=Bm[o.screen]??Qf,b=Hm(o),x=e=>{d.current=[],c({screen:e,params:{}})};return(0,i.jsx)(_.Provider,{value:m,children:(0,i.jsxs)(`div`,{className:`aha`,ref:v.root,"data-nav":v.state,"data-text":g,children:[(0,i.jsxs)(`nav`,{className:`aha-nav`,"aria-label":t(`appName`),onScroll:v.hideTip,children:[(0,i.jsxs)(`div`,{className:`aha-brand`,children:[(0,i.jsx)(Ht,{name:`logo`,size:24}),(0,i.jsxs)(`span`,{children:[t(`appName`),(0,i.jsx)(`small`,{children:t(`appTagline`)})]})]}),zm.map(([e,n,r])=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-navItem`,"data-active":b===e,onClick:()=>{v.close(),x(e)},"aria-label":t(n),...v.tipFor(t(n)),children:[(0,i.jsx)(Ht,{name:r,size:17}),(0,i.jsx)(`span`,{children:t(n)})]},e)),(0,i.jsxs)(`button`,{type:`button`,className:`aha-navItem aha-navFold`,"aria-expanded":v.state!==`folded`,"aria-label":v.state===`folded`?t(`navUnfold`):t(`navFold`),onClick:v.fold,...v.tipFor(t(`navUnfold`)),children:[(0,i.jsx)(Ht,{name:v.state===`folded`?`unfold`:`fold`,size:17}),(0,i.jsx)(`span`,{children:t(`navFold`)})]})]}),v.state===`peek`?(0,i.jsx)(`div`,{className:`aha-navShade`,onClick:v.close}):null,v.tip?(0,i.jsx)(`div`,{className:`aha-navTip`,role:`tooltip`,style:{top:v.tip.top,left:v.tip.left},children:v.tip.label}):null,(0,i.jsx)(`main`,{className:`aha-main`,children:(0,i.jsx)(s,{resetKey:o,onError:u,fallback:({error:e})=>(0,i.jsx)(l,{t,error:e,onRetry:()=>c(e=>({...e})),onHome:()=>x(`home`)}),children:(0,i.jsx)(y,{...o.params},`${o.screen}:${JSON.stringify(o.params)}`)})}),h?(0,i.jsx)(`div`,{className:`aha-toast`,role:`status`,children:h}):null]})})}function Gm(e){let[t,n]=C(`nav`,`open`),[i,a]=(0,r.useState)(!1),[o,s]=(0,r.useState)(!1),[c,l]=(0,r.useState)(null),u=(0,r.useRef)(null);(0,r.useLayoutEffect)(()=>{let e=u.current;if(!e)return;let t=()=>a(e.getBoundingClientRect().width<640);if(t(),typeof ResizeObserver!=`function`)return;let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]),(0,r.useEffect)(()=>s(!1),[i,e]);let d=Wt({choice:t,narrow:i,inClass:e,peek:o});(0,r.useEffect)(()=>{if(l(null),d!==`peek`)return;let e=e=>{e.key===`Escape`&&s(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[d]);let f=(e,t)=>{d===`folded`&&u.current&&l({label:t,...Kt(e.getBoundingClientRect(),u.current.getBoundingClientRect())})},p=()=>l(null);return{root:u,state:d,tip:c,hideTip:p,fold(){let r=Gt({choice:t,narrow:i,inClass:e,peek:o});n(r.choice),s(r.peek)},close:()=>s(!1),tipFor:e=>({onMouseEnter:t=>f(t.currentTarget,e),onMouseLeave:p,onFocus:t=>{t.currentTarget.matches(`:focus-visible`)&&f(t.currentTarget,e)},onBlur:p})}}function Km({useTabInfo:e,rpc:t,t:n,language:r,dsh:a}){let{tab:o}=e(),c=o?.navigation?.params??null,{value:u,textSize:d}=It({rpc:t,t:n,language:r,dsh:a});return(0,i.jsx)(_.Provider,{value:u,children:(0,i.jsx)(`div`,{className:`aha aha-boardTab`,"data-text":d,style:{height:`100%`,overflow:`auto`,padding:`10px 12px`},children:c?.threadId?(0,i.jsx)(s,{fallback:({error:e,retry:t})=>(0,i.jsx)(l,{t:n,error:e,place:`tab`,onRetry:t}),children:(0,i.jsx)(qm,{threadId:c.threadId,jobId:c.jobId})},`${c.threadId}:${o.navigation.revision??0}`):(0,i.jsx)(`p`,{className:`aha-hint`,children:n(`openBoard`)})})})}function qm({threadId:e,jobId:t}){let{api:n,t:a}=v(),[o,s]=(0,r.useState)(null);return(0,r.useEffect)(()=>{let r=!0;return(async()=>{let i=t?await n.call(`job/get`,{id:t}).catch(()=>null):null;if(i&&i.status===`running`){r&&s({stream:i,steps:[],title:``});return}try{let{item:t}=await n.call(`items/get`,{kind:`assist`,id:e}),i=t.turns.at(-1);r&&s({stream:null,steps:i?.board?.steps??[],title:t.title,language:t.language,turn:t.turns.length-1})}catch(e){r&&s({error:e})}})(),()=>{r=!1}},[e,t]),o?o.error?(0,i.jsx)(`p`,{className:`aha-error`,children:Ju(a,o.error)}):(0,i.jsx)(ef,{scope:{kind:`thread`,id:e,turn:o.turn??0},title:o.title||a(`boardSession`),steps:o.steps,stream:o.stream,language:o.language,recordChecks:!1,tour:!1,talkKey:!1}):(0,i.jsx)(Hu,{label:a(`loading`)})}function Jm({rpc:e,t,language:n,dsh:r}){return It({rpc:e,t,language:n,dsh:r}).value}function Ym(e){return e?.meta&&typeof e.meta==`object`?e.meta:null}function Xm(e){let t=Jm(e);return(0,i.jsx)(_.Provider,{value:t,children:(0,i.jsx)(`div`,{className:`aha aha-card`,"data-text":`dsh`,style:{height:`auto`,display:`flex`,flexDirection:`column`,gap:8,margin:`6px 0`,padding:`10px 12px`},children:(0,i.jsx)(s,{fallback:({error:t,retry:n})=>(0,i.jsx)(l,{t:e.t,error:t,place:`card`,onRetry:n}),children:(0,i.jsx)(Zm,{...e})})})})}function Zm({toolName:e,phase:t,block:n,dsh:a,inputActions:o,t:s,callId:c}){let l=Ym(n),u=n?.args?.text?.(`topic`)??n?.args?.text?.(`goal`)??``,d=t!==`result`,f=t===`result`&&n?.isError;return(0,r.useEffect)(()=>{if(e!==`aha_whiteboard`||t!==`result`||!l?.threadId)return;let r=typeof n?.time!=`number`||Date.now()-n.time<12e4,i=`aha-tutor:opened:${c}`;try{if(!r||window.sessionStorage.getItem(i))return;window.sessionStorage.setItem(i,`1`)}catch{if(!r)return}a.openBoardTab({threadId:l.threadId,jobId:l.jobId})},[e,t,l?.threadId]),f?(0,i.jsx)(`span`,{className:`aha-error`,children:s(`errorGeneric`,{message:(n.content??[]).map(e=>e.text??``).join(` `).slice(0,200)})}):e===`aha_whiteboard`?(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:8},children:[d?(0,i.jsx)(`span`,{className:`aha-spinner`}):`🧑‍🏫`,(0,i.jsx)(`b`,{children:s(`toolBoardTitle`)}),(0,i.jsx)(`span`,{className:`aha-hint`,children:l?.title??u})]}),l?.threadId?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>a.openBoardTab({threadId:l.threadId,jobId:l.jobId}),children:s(`openBoard`)}):null]}):e===`aha_quiz`?d||!l?.items?(0,i.jsxs)(`span`,{className:`aha-row`,children:[(0,i.jsx)(`span`,{className:`aha-spinner`}),s(`makingPractice`)]}):(0,i.jsx)(Qm,{items:l.items,topic:l.topic,inputActions:o}):e===`aha_course`?(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:8},children:[d?(0,i.jsx)(`span`,{className:`aha-spinner`}):`🎓`,(0,i.jsx)(`b`,{children:s(`modeCourse`)}),(0,i.jsx)(`span`,{className:`aha-hint`,children:l?.goal??u})]}),l?.courseId?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>Bt(a,`craft`,{courseId:l.courseId}),children:s(`open`)}):null]}):e===`aha_cheatsheet`?(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:8},children:[d?(0,i.jsx)(`span`,{className:`aha-spinner`}):`📄`,(0,i.jsx)(`b`,{children:s(`sheetTitle`)}),(0,i.jsx)(`span`,{className:`aha-hint`,children:l?.title??u})]}),l?.sheetId?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>Bt(a,`sheet`,{sheetId:l.sheetId}),children:s(`open`)}):null]}):(0,i.jsxs)(`span`,{className:`aha-hint`,children:[d?(0,i.jsx)(`span`,{className:`aha-spinner`}):`🧠`,` `,s(`navProfile`)]})}function Qm({items:e,topic:t,inputActions:n}){let{t:a,language:o}=v(),[s,c]=(0,r.useState)(0),[l,u]=(0,r.useState)([]),d=e[s],f=(0,r.useMemo)(()=>l.map((e,t)=>`${t+1}. ${e.correct?`✔`:e.partial?`◐`:`✘`} ${e.answer}`).join(`
758
- `),[l]);if(!d){let r=l.filter(e=>e.correct).length;return(0,i.jsxs)(`div`,{className:`aha-col`,children:[(0,i.jsx)(`b`,{children:a(`practiceDone`,{correct:r,total:e.length})}),n?.setDraft?(0,i.jsx)(`div`,{children:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,"data-size":`sm`,onClick:()=>n.setDraft(`${t??``} ${a(`practiceDone`,{correct:r,total:e.length})}\n${f}`),children:a(`submit`)})}):null]})}return(0,i.jsxs)(`div`,{className:`aha-col`,children:[(0,i.jsxs)(`span`,{className:`aha-hint`,children:[a(`checkTitle`),` · `,s+1,`/`,e.length]}),(0,i.jsx)(Wd,{item:d,language:o===`zh`?`zh-CN`:`en`,compact:!0,onResult:e=>u(t=>[...t,{...e,answer:d.prompt.slice(0,60)}]),onContinue:()=>c(e=>e+1)},s)]})}let $m=`ahaTutor`,eh={appName:`开窍`,appTagline:`AI 私人老师`,navHome:`首页`,navCourses:`我的课程`,navMaterials:`资料库`,navStudio:`学习工具`,navAssist:`即时答疑`,navShorts:`讲解短片`,navPlan:`学习计划`,navProfile:`我的画像`,navSettings:`设置`,navAbout:`关于作者`,navFold:`收起`,navUnfold:`展开`,heroTitle:`今天想把什么弄懂?`,heroHint:`说出你想学的东西,或者丢一本教材进来。我会先了解你,再为你量身做一门课,在白板上一步步讲给你听。`,heroPlaceholder:`比如:三周内搞懂线性代数里的特征值|把这份讲义变成一门课|量子隧穿到底是怎么回事`,modeCourse:`定制一门课`,modeExplain:`讲个概念`,modeSolve:`陪我解题`,modeVisualize:`画出来看看`,modeDigest:`消化长文档`,modeShort:`两分钟短片`,attach:`添加资料`,attached:`已附 {count} 份资料`,start:`开始`,quickStart:`跳过提问,直接出课`,continueLearning:`继续学习`,todayPlan:`今天的安排`,noPlanToday:`今天没有安排,去建一门课或者休息一下吧。`,recentWork:`最近做的`,sampleCourses:`示例课程`,sampleHint:`不花 token 也能先体验白板课堂。`,importSample:`加入我的课程`,coursesTitle:`我的课程`,filterAll:`全部`,filterActive:`学习中`,filterDone:`已学完`,filterArchived:`已归档`,searchCourses:`搜索课程`,noCourses:`还没有课程。回到首页,告诉我你想学什么。`,importPack:`导入课程包`,lessonsCount:`{done}/{total} 讲`,minutesLeft:`还剩约 {minutes} 分钟`,statusIntake:`待回答问题`,statusBlueprint:`待确认蓝图`,statusReady:`可以学习`,nextUp:`下一讲:{title}`,craftQuestionsTitle:`先认识一下你`,craftQuestionsHint:`回答几个问题,课程会按你的情况来设计。拿不准的可以跳过。`,craftOther:`其他(自己写)`,craftPace:`学习节奏`,paceIntensive:`冲刺`,paceIntensiveHint:`约 6 周,抓重点`,paceBalanced:`稳步`,paceBalancedHint:`约 3 个月,基础 + 练习 + 项目`,paceRelaxed:`不设期限`,paceRelaxedHint:`慢慢来,挖得更深`,weeklyMinutes:`每周大约能学多久`,minutesUnit:`{minutes} 分钟`,deadline:`截止日期(可选)`,makeBlueprint:`生成课程蓝图`,thinkingQuestions:`正在想该问你什么…`,designingBlueprint:`正在设计课程蓝图…`,blueprintTitle:`课程蓝图`,blueprintHint:`这是为你设计的课程结构。可以直接改标题、删减或调整顺序,也可以用一句话让我改。`,reviseLabel:`用一句话修改`,revisePlaceholder:`比如:多加一些编程实战;第二单元讲浅一点;去掉第 3 讲`,revise:`修改`,revising:`正在修改…`,addLesson:`加一讲`,addLecture:`加一章`,addUnit:`加一个单元`,moveUp:`上移`,moveDown:`下移`,remove:`删除`,projects:`实战项目`,confirmCourse:`确认,生成整门课`,confirming:`正在准备练习和项目… {done}/{total}`,courseReady:`课程已就绪`,unitN:`第 {n} 单元`,lectureN:`第 {n} 章`,estMinutes:`{minutes} 分钟`,saveEdits:`保存修改`,saved:`已保存`,tabOutline:`大纲`,tabPractice:`练习、测验与闪卡`,tabSheets:`速查表`,tabProjects:`项目`,tabProgress:`进度`,learn:`学习`,practice:`练习`,review:`复习`,remedial:`巩固`,exportPack:`导出课程包`,exportWithProgress:`连同我的学习进度`,rename:`重命名`,archive:`归档`,unarchive:`取消归档`,deleteCourse:`删除课程`,deleteConfirm:`删除后无法恢复。确定删除「{title}」吗?`,cancel:`取消`,confirm:`确定`,close:`关闭`,back:`返回`,retry:`重试`,generate:`生成`,regenerate:`重新生成`,generating:`正在生成…`,open:`打开`,unitQuiz:`单元测验`,unitSheet:`单元速查表`,unitCards:`单元闪卡`,unitCardsDue:`单元闪卡 · {count}`,unitCardsDueTitle:`{count} 张到期`,mastery:`掌握度`,conceptMastery:`知识点掌握情况`,preparingLesson:`老师正在备课…`,bufferingLesson:`下一部分马上写好…`,play:`播放`,pause:`暂停`,prevStep:`上一步`,nextStep:`下一步`,speed:`语速`,voiceOn:`声音开`,voiceOff:`静音`,voiceDownCloud:`云端语音用不了:{reason}这节课先静音往下讲。`,voiceDownSystem:`朗读用不了:{reason}这节课先静音往下讲。`,openSettings:`去设置`,captions:`字幕`,raiseHand:`举手提问`,askPlaceholder:`哪里没听懂?直接问`,ask:`提问`,answering:`老师在想怎么回答…`,reexplain:`换个讲法`,styleAnalogy:`打个比方`,styleVisual:`画图讲`,styleExample:`举个例子`,styleSimpler:`讲简单点`,styleDeeper:`讲深一点`,stepOf:`第 {current}/{total} 步`,checkTitle:`小测一下`,confidence:`你有多确定?`,pickSeveral:`多选题:选出所有正确的选项。`,confSure:`很确定`,confUnsure:`有点犹豫`,confGuess:`猜的`,submit:`提交`,correct:`答对了`,incorrect:`不太对`,partial:`部分正确`,continue:`继续`,skip:`跳过`,hint:`提示`,yourAnswer:`你的答案`,grading:`老师在批改…`,lessonDone:`这一讲讲完了`,selfRate:`你觉得自己掌握得怎么样?`,rate1:`没懂`,rate3:`一般`,rate5:`很清楚`,nextLesson:`下一讲`,doPractice:`去做练习`,backToCourse:`回到课程`,remedialAdded:`我给你加了一节巩固课:{title}`,challengeNote:`这部分你掌握得很好,接下来会讲得更深一些。`,replay:`重新讲一遍`,regenerateLesson:`重新备课`,exportBoard:`导出板书`,practiceTitle:`练习`,check:`检查答案`,checked:`已检查`,score:`得分 {score}`,practiceDone:`本组练习完成:答对 {correct}/{total}`,showExplanation:`看解析`,makingPractice:`正在出题…`,makingQuiz:`正在出单元测验,题量按这个单元的知识点来定,可能要一两分钟…`,quizWriting:`已出 {count} 题`,newQuizSet:`换一套新题`,cardsTitle:`闪卡`,cardsDue:`待复习 {count} 张`,cardsTotal:`共 {count} 张`,flip:`点击翻面`,again:`忘了`,hard:`困难`,good:`记得`,easy:`简单`,cardsDone:`这一轮复习完成了!`,makingCards:`正在制作闪卡…`,makingUnitCards:`正在制作这个单元的闪卡,张数按知识点来定…`,cardsWriting:`已写好 {count} 张`,cardReview:`闪卡复习`,cardReviewDue:`闪卡复习 · {count} 张到期`,cardReviewNone:`闪卡复习 · 暂无到期`,cardReviewEmpty:`现在没有到期的闪卡。打开各单元的「单元闪卡」学新卡片。`,studyPartsCards:`已读完 {done}/{total} 段 · 已写好 {count} 张`,studyPartsQuiz:`已读完 {done}/{total} 段 · 已出 {count} 题`,partsMissing:`有 {count} 段没读成({parts}),这几段没有出到。`,sheetTitle:`速查表`,columns:`列数`,fontSize:`字号`,highlight:`高亮重点`,print:`打印`,hideSection:`隐藏`,showSection:`显示`,makingSheet:`正在整理速查表…`,projectBrief:`项目说明`,milestones:`里程碑`,rubric:`评分标准`,openWorkspace:`打开项目工作区`,openingWorkspace:`正在准备项目文件夹…`,workspaceReady:`项目文件夹在:{path}`,workspaceSession:`已在 DSH 中打开项目会话`,workspaceManual:`在 DSH 里把这个文件夹添加为工作区,就能让编程 Agent 陪你完成项目。`,copyPath:`复制路径`,submitProject:`提交作品`,submitNotes:`写点说明(做了什么、遇到的问题)`,includeFiles:`同时提交项目文件夹里的文件`,reviewing:`老师在看你的作品…`,reviewTotal:`总分 {total}/{max}`,strengths:`做得好的地方`,nextSteps:`可以改进的地方`,submissions:`历次提交`,materialsTitle:`资料库`,materialsHint:`上传教材、讲义、论文或网页,用来建课、做速查表和闪卡,讲课时也会引用原文页码。`,uploadFiles:`上传文件`,dropHere:`把文件拖到这里(PDF、Word、PPT、Markdown、文本、图片)`,addUrl:`添加网页`,urlPlaceholder:`https://…`,reading:`正在读取…`,pages:`{count} 页`,slides:`{count} 张幻灯片`,makeCourse:`用它建课`,makeSheet:`速查表`,makeCards:`闪卡`,makeNotes:`笔记`,makeQuiz:`测验`,digest:`消化`,digestTitle:`文档消化`,overview:`概要`,structure:`结构`,keyIdeas:`核心观点`,arguments:`论点与论据`,glossary:`术语表`,discussion:`值得思考的问题`,imageNeedsVision:`图片需要支持识图的模型才能读取。`,readingPictures:`正在识别图片里的文字 {done}/{total}:{name}`,summarizingMaterial:`正在整理要点:{name}`,readScanPages:`已识别 {count} 页扫描页`,readPictures:`已识别 {count} 张图片里的字`,readPhoto:`已识别图中文字`,photoNoText:`图里没有读到文字`,readPartly:`有些内容没读到`,listJoin:`、`,unreadPages:`有 {count} 页没有文字层(扫描页或整页图片):当前模型看不了图,这些页没有读到。在开窍设置里换一个带 🖼 的模型,再重新上传。`,unreadPictures:`有 {count} 张图片里的字没有读到:当前模型看不了图。在开窍设置里换一个带 🖼 的模型,再重新上传。`,failedPages:`第 {list} 页没有识别出来`,failedSlides:`第 {list} 张幻灯片没有识别出来`,failedPictures:`第 {list} 张图片没有识别出来`,failedPhoto:`图里的字没有识别出来`,failedWhy:`{what}:{reason}`,failedRetry:`{what},重新上传可以再试。`,leftPages:`后面还有 {count} 页没有识别:一个文件最多识别 200 页,可以把文件拆开再上传。`,leftPictures:`后面还有 {count} 张图片没有识别:一个文件最多识别 200 张。`,noMaterials:`资料库是空的。`,studioTitle:`学习工具`,studioHint:`用资料库里的资料一键生成学习材料。`,pickMaterials:`选择资料`,sheets:`速查表`,notes:`笔记`,decks:`闪卡组`,quizzes:`测验`,focusPlaceholder:`重点(可选),比如:期中考试范围第 3–6 章`,assistTitle:`即时答疑`,assistHint:`不用建课,有问题直接问。老师会在白板上讲给你听。`,assistPlaceholder:`想问什么?可以贴题目、概念或附上资料`,followUp:`继续追问`,history:`历史记录`,newThread:`新的问题`,shortsTitle:`讲解短片`,shortsHint:`输入一个主题或贴一个网址,生成一段约两分钟、能分享的白板讲解。`,topicPlaceholder:`比如:为什么天空是蓝色的`,makeShort:`生成短片`,exportVideo:`导出视频`,exporting:`正在录制视频…{percent}%`,exportNeedsCloud:`浏览器语音无法录进视频,导出的视频会带字幕但没有声音。在设置里配置云端语音即可导出有声版。`,exportUnsupported:`当前环境不支持导出视频。`,planTitle:`学习计划`,planHint:`根据你所有在学的课程、每周时间和截止日期自动排课,并留出复习时间。`,studyDays:`学习日`,weekdays:`日,一,二,三,四,五,六`,exams:`考试与截止日期`,addExam:`添加`,examTitle:`名称`,examDay:`日期`,deadlineRisk:`「{course}」按现在的节奏会在 {finish} 学完,晚于截止日期 {deadline}。建议每周提高到约 {minutes} 分钟。`,startReview:`开始复习`,reviewDue:`有 {count} 个知识点该复习了`,nothingToReview:`暂时没有要复习的内容。`,savePlan:`保存`,lessonItem:`学习`,reviewItem:`复习`,examItem:`考试`,today:`今天`,profileTitle:`我的画像`,profileHint:`老师会记住这些信息,让每门课都更贴合你。你亲手写下或改过的内容,课后自动更新时不会被改动;你也可以随时清空。`,background:`背景`,goals:`目标`,strengthsLabel:`擅长`,weaknesses:`薄弱点`,learningStyle:`喜欢的讲解方式`,memoryNotes:`老师的备忘`,clearProfile:`清空画像`,clearProfileConfirm:`清空后老师会忘记你的背景和偏好。确定吗?`,onePerLine:`每行一条`,settingsTitle:`设置`,modelsTitle:`模型`,teachModel:`出课与讲课`,quickModel:`批改与问答`,followDefault:`跟随 DSH 默认模型`,followTeach:`跟随「出课与讲课」`,modelsHint:`讲课质量主要取决于「出课与讲课」模型;批改和课堂提问可以用更快的模型。带 🖼 的模型能看图,扫描件、照片和图片里的字靠它识别。`,voiceTitle:`语音讲解`,engine:`语音来源`,engineBrowser:`系统语音(免费)`,engineCloud:`云端语音`,engineOff:`不朗读`,browserVoice:`系统音色`,autoVoice:`自动选择`,noVoiceForLanguage:`没有找到适合当前语言的系统音色。可以在系统设置里安装中文语音,或改用云端语音。`,cloudProvider:`云端服务`,providerOpenai:`OpenAI 兼容接口`,providerVolcengine:`火山引擎(豆包语音)`,providerMinimax:`MiniMax`,providerAzure:`Azure 语音`,field_baseUrl:`接口地址`,field_model:`模型`,field_voice:`音色`,field_appId:`App ID`,field_cluster:`Cluster`,field_groupId:`Group ID`,field_region:`区域`,field_apiKey:`密钥`,keySaved:`已保存密钥`,keyMissing:`未保存密钥`,saveKey:`保存密钥`,clearKey:`清除密钥`,testVoice:`试听`,testSentence:`你好,我是你的私人老师。我们一起把难的东西弄懂。`,voiceRate:`默认语速`,boardTheme:`白板外观`,themeAuto:`跟随系统`,themeLight:`白板`,themeDark:`黑板`,versionTitle:`插件版本`,versionCurrent:`当前版本`,versionLatest:`最新版本`,versionCheck:`检查更新`,versionChecking:`正在检查…`,versionFailed:`无法检查最新版本。`,versionUpToDate:`已是最新版本。`,versionAvailable:`发现新版本 v{version}。`,versionLinked:`当前是本地开发安装,请在插件仓库拉取最新代码并重新构建。`,versionManual:`没找到这个插件所在的 profile,请到 DSH 插件页按精确版本安装:dsh-aha-tutor@{version}。`,versionUpdate:`更新插件`,versionUpdating:`正在更新…`,versionUpdateFailed:`更新失败,请稍后重试,或到 DSH 插件页按精确版本手动安装。`,versionPending:`v{version} 刚发布不久,DSH 的 pnpm 要等过了发布冷却期才会安装,请稍后再试。`,versionPendingUntil:`v{version} 刚发布不久,DSH 的 pnpm 要等过了发布冷却期才会安装,{time} 之后可以更新。`,versionUpdated:`已更新到 v{version}。请完全退出并重新打开 DSH 桌面版,新版本才会生效(只刷新页面不够)。`,privacyNote:`课程、进度和资料都只保存在这台电脑的 DSH 数据目录里。`,aboutTitle:`关于作者`,aboutRole:`「开窍 · AI 私人老师」的作者`,aboutIntro:`开窍免费开源,赞赏全凭心意。如果它帮你弄懂了某个卡了很久的知识点,欢迎扫码支持,让小窍继续长大。`,aboutRepo:`GitHub 仓库`,aboutIssues:`问题反馈`,aboutSupport:`支持作者`,aboutWechat:`微信赞赏`,aboutAlipay:`支付宝`,aboutScan:`用手机扫一扫上面的码`,errorGeneric:`出了点问题:{message}`,crashPage:`这一页出了点问题,没能显示出来。`,crashPageHint:`可以重试一次,或者先回到首页。`,crashPart:`这部分内容出了点问题,没能显示出来。`,backHome:`回到首页`,loading:`加载中…`,empty:`这里还什么都没有。`,copied:`已复制`,minutes:`分钟`,untitled:`未命名`,delete:`删除`,edit:`编辑`,save:`保存`,all:`全部`,mode:`模式`,boardSession:`白板讲解`,toolBoardTitle:`老师在白板上讲解`,openBoard:`打开白板`,panelLabel:`开窍 · AI 私人老师`,copyCode:`复制`,footnotes:`脚注`,"err_llm-auth":`模型未登录或密钥无效,请在 DSH 设置里检查模型服务。`,"err_llm-quota":`模型额度不足或请求太频繁,稍后再试。`,"err_llm-context":`资料太长,超出了模型的上下文。少选一些资料,或换一个上下文更大的模型。`,"err_llm-unavailable":`所选模型不可用,请在开窍设置里换一个模型。`,"err_llm-timeout":`模型响应超时,请重试。`,"err_bad-output":`模型这次没给出可用的结果,请重试,或在设置里换一个更强的模型。`,boardView:`板书视图`,viewCanvas:`画布`,viewPages:`分页`,boardViewHint:`画布:整讲的板书从上到下排在一张画布上,可以拖动、缩放,讲课时自动跟着老师写的地方。分页:一次看一页,用右上角的页码翻页。`,canvasTools:`画布缩放`,canvasHelp:`拖动或滚动来移动,按住 Ctrl/⌘ 滚动或双指捏合来缩放,双击某一页放大到这一页`,canvasZoomIn:`放大`,canvasZoomOut:`缩小`,canvasZoomReset:`回到 100%(铺满宽度)`,canvasFit:`看全貌:缩小到能看到所有页`,canvasFitShort:`全貌`,canvasFollow:`回到老师这里`,canvasPage:`第 {n} 页`,voiceAsk:`说出问题`,voiceAskWith:`说出问题(麦克风:{name})`,voiceStop:`停止录音`,talkKeyHint:`快捷键:按住 V 说话,松开结束;也可以按一下 V 开始,说完再按一下。`,raiseHandKey:`暂停讲课,在提问框里提问。也可以直接按住 V 说出问题。`,voiceSetup:`语音提问需要先在 DSH 里启用「语音输入」`,voiceWorking:`识别中…`,voice_off:`语音提问用的是 DSH 的实验功能「语音输入」:在 DSH 的插件管理里启用「语音输入」,在它的详情里点「下载并准备」,准备好后再点这里。`,voice_unprepared:`语音识别模型还没准备好:在 DSH 插件管理的「语音输入」详情里点「下载并准备」(约 240 MB),准备好后再点这里。`,voice_preparing:`语音识别模型正在准备,好了以后再点这里。进度在 DSH 插件管理的「语音输入」详情里。`,voice_failed:`语音识别模型没有准备成功:到 DSH 插件管理的「语音输入」详情里重试。`,"err_speech-off":`DSH 的「语音输入」没有启用:在 DSH 的插件管理里启用它并下载准备模型。`,"err_speech-unprepared":`语音识别模型还没准备好:在 DSH 插件管理的「语音输入」详情里点「下载并准备」。`,"err_speech-audio":`这段录音没法读取,请再录一次。`,"err_speech-too-long":`录音太长了,一次最多 2 分钟。`,"err_speech-failed":`语音识别出错了,请再试一次。`,"err_speech-empty":`没听到说话,请离麦克风近一点再说一次。`,"err_mic-denied":`没有麦克风权限:请在浏览器或系统设置里允许 DSH 使用麦克风。`,"err_mic-missing":`没有找到麦克风。`,"err_mic-chosen-missing":`DSH「语音输入」里选的麦克风现在用不了:插上它,或到 DSH 插件管理的「语音输入」详情里换一个。`,micChosenMissing:`DSH「语音输入」里选的麦克风「{name}」现在用不了:插上它,或到 DSH 插件管理的「语音输入」详情里换一个。`,"err_mic-busy":`麦克风正被别的程序占用。`,"err_mic-unsupported":`这里没法录音。`,prepThinking:`构思`,prepWriting:`写板书`,prepStarting:`正在联系模型…`,prepThinkingDetail:`老师在想这一讲怎么讲,已构思 {chars} 字`,prepStep:`正在写第 {n} 步`,prepCounts:`已写好 {steps} 步 · 共 {chars} 字`,prepSeconds:`已用 {seconds} 秒`,dayLabel:`{month} 月 {day} 日 · 周{weekday}`,exportPdf:`PDF 文档(一页一张板书)`,exportPng:`PNG 图片(每页一张)`,exportMarkdown:`Markdown 文本`,exportingBoard:`正在导出板书…{done}/{total}`,animationStill:`动画(在课堂里播放)`,figureMissing:`这张图没画出来`,figureRedrawing:`正在重画这张图…`,animationFailed:`动画没能播放`,monthLabel:`{year} 年 {month} 月`,prevMonth:`上个月`,nextMonth:`下个月`,markDone:`标记为已完成`,unmarkDone:`取消完成`,checkedAuto:`已在课程里完成`,dayEmpty:`这天没有安排。`,webResearch:`联网查资料`,webResearchHint:`建课前先用 DSH 的网页搜索查一查这个主题,出题和设计课程时参考`,researching:`正在联网查资料…`,researchFound:`参考了 {count} 个网上来源`,researchSkipped:`未联网检索:{reason}`,"researchSkipped_no-credential":`DSH 还没有配置 DeepSeek 密钥,网页搜索要用它`,researchSkipped_unavailable:`这个 DSH 没有可用的网页搜索`,researchSkipped_failed:`搜索出错了`,researchSkipped_empty:`没有搜到合适的资料`,courseSources:`参考来源`,buildResearch:`参考 {count} 个网上来源`,"err_llm-empty":`模型这次没有返回内容,请重试。如果一直这样,可以在开窍设置里换一个模型。`,"err_llm-failed":`调用模型出错了,请稍后重试。`,nextStepTitle:`下一步`,nextStepReview:`有 {count} 个知识点到了复习的时候`,nextStepWeak:`「{concept}」还比较薄弱,先练一练`,nextStepLesson:`接着学「{title}」`,nextStepDone:`这门课都学完了,做一次单元测验检验一下吧`,practiceThis:`练习这一讲`,streakCount:`连对 {count}`,keysHint:`键盘:1–4 选择 · Enter 提交或继续 · H 看提示`,starsLabel:`{count} 颗星`,accuracy:`正确率`,bestStreak:`最长连对`,masteryChange:`这一轮之后的掌握程度`,stageNone:`未开始`,stageWeak:`薄弱`,stageLearning:`学习中`,stageProficient:`熟练`,stageMastered:`掌握`,nextRelearn:`有几个点还没吃透,回到这一讲再听一遍会更稳。`,nextReview:`基本会了,但还不够牢,复习一轮会记得更久。`,nextQuiz:`掌握得很扎实,可以挑战单元测验了。`,nextLessonStep:`可以继续往下学了。`,nextCourse:`这一部分练完了。`,relearnLesson:`回到这一讲`,reviewCourse:`复习这门课`,mistakeBook:`错题本`,mistakeEmpty:`还没有错题。课堂小测、课后练习、单元测验和复习里没答对的题会自动收进来,从第二天起安排再练。`,mistakeCountDue:`{count} 道可以再练`,mistakeCountOpen:`{count} 道待解决`,mistakeCountResolved:`{count} 道已解决`,practiceMistakesDue:`练错题({count})`,mistakeShowAll:`显示全部 {count} 道`,mistakeShowFewer:`收起`,mistakeResolvedList:`已解决({count})`,mistakeFrom_check:`课堂小测`,mistakeFrom_practice:`课后练习`,mistakeFrom_quiz:`单元测验`,mistakeFigure:`有图`,mistakeLastAnswer:`上次答:{answer}`,mistakeWrongTimes:`错 {count} 次`,mistakeDueNow:`可以再练了`,mistakeDueOn:`{day}再练`,mistakeResolvedOn:`{day}解决`,dayToday:`今天`,dayTomorrow:`明天`,monthDay:`{month} 月 {day} 日`,mistakeRound:`练错题`,mistakeRoundMore:`再来一轮(还有 {count} 道)`,mistakeContext:`错过 {count} 次`,noMistakesDue:`现在没有可以再练的错题。答错的题从第二天起才安排再练。`,nextStepMistakes:`有 {count} 道错题可以再练了`,nextStepReviewMistakes:`有 {mistakes} 道错题可以再练,{count} 个知识点到了复习的时候`,editOutline:`编辑课程大纲`,saveAndBack:`保存并返回`,extendCourse:`让老师续写一个单元`,extendInstruction:`在课程最后再加一个单元:承接已有内容,往前推进一步,保持同样的难度梯度;已有的单元保持不变。`,proposalTitle:`老师的修改建议`,proposalNoChange:`这次修改没有改动任何一讲。`,applyProposal:`应用修改`,discardProposal:`放弃`,proposalApplied:`已应用修改`,diffAdded:`新增`,diffRemoved:`删除`,diffRenamed:`改名`,diffChanged:`调整`,diffUnit:`单元「{title}」`,reworkLesson:`让老师改这一讲`,splitLesson:`拆成两讲`,deepenLesson:`讲深一些`,splitDone:`已拆成两讲,记得保存`,deepenDone:`已改得更深,记得保存`,confirmRemoveUnit:`删除单元「{title}」和其中所有的课?`,confirmRemoveLecture:`删除「{title}」和其中所有的课?`,confirmRemoveStarted:`「{title}」已经开始学了,删除后这一讲的板书和进度都不再显示。确定删除?`,craftSize:`课程规模`,sizeAuto:`让老师决定`,sizeAutoHint:`按你的目标定,一个小问题可能只要一两讲`,sizeShort:`精简`,sizeShortHint:`3–8 讲,抓住最关键的部分`,sizeStandard:`标准`,sizeStandardHint:`10–20 讲,基础、练习加一个应用项目`,sizeFull:`完整`,sizeFullHint:`25–45 讲,系统深入,留出拓展的空间`,buildAnswers:`整理你的回答`,buildMaterials:`阅读你的资料`,buildUnits:`规划单元`,buildLessons:`写每一讲`,buildLessonsSoFar:`写每一讲:已写好 {count} 讲`,workPlaceholder:`一步一行写出你的过程,公式写在 $…$ 里,例如 $x^2+6x+9=(x+3)^2$`,workPreview:`公式预览`,wrongStep:`出错的一步`,fixedStep:`应该写成`,correction:`订正`,correctionOf:`订正:{tag}`,correcting:`老师在板上订正…`,seeCorrection:`看老师订正`,handout:`讲义`,handoutHint:`把这一讲整理成一页可打印的讲义`,handoutOfLesson:`本讲讲义`,handoutMaking:`老师在把这一讲整理成讲义…`,handoutPoints:`要点`,handoutExample:`例题`,handoutMistakes:`常见错误`,handoutGlossary:`术语表`,handoutQuestions:`自测`,handoutAnswer:`答案`,backToLesson:`回到这一讲`,addMaterials:`补充资料`,addMaterialsTitle:`给这门课补充资料`,addMaterialsHint:`选几份资料(也可以现在上传),老师会看看它们讲了什么,给出怎么改大纲的建议;你应用之后才生效,学过的讲保留进度,以后讲课也会引用这些资料。`,addMaterialsPlaceholder:`想让老师怎么用这些资料(可以不填),比如:重点补上第 5 章的例题`,addMaterialsSend:`请老师看看怎么加`,changeMaterials:`改选资料`,proposalMaterials:`补充资料:{titles}`,librarySearch:`找资料:输入标题或主题即时筛选,回车在正文里搜`,librarySearchText:`搜正文`,libraryFound:`正文里找到 {count} 处`,libraryNotFound:`正文里没找到「{query}」`,libraryNoTitleMatch:`没有标题或主题对得上的资料,按回车可以在正文里搜。`,pageN:`第 {page} 页`,pagesN:`第 {from}–{to} 页`,pdfPageN:`PDF 第 {page} 页`,pdfPagesN:`PDF 第 {from}–{to} 页`,slideN:`第 {slide} 张`,outlineTitle:`目录({count} 条)`,outlineBookmarks:`来自 PDF 书签`,outlineHeadings:`按章节标题识别`,outlinePrinted:`页码按书上印的`,lessonSourcesTitle:`这一讲对应的资料页:`,citeQuote:`原文:「{quote}」`,tourLabel:`课堂导览`,tourReplay:`课堂导览`,tourSkip:`跳过`,tourBack:`上一步`,tourNext:`下一步`,tourStart:`开始上课`,tourBoardTitle:`老师在这块黑板上讲`,tourBoard:`老师边讲边写。拖动或滚动可以移动板书,按住 Ctrl(Mac 上是 ⌘)滚动可以缩放,右上角的「全貌」能看到整讲。`,tourControlsTitle:`播放和节奏`,tourControls:`播放、暂停、上一步、下一步和语速都在这里,按空格也能暂停;字幕和声音可以随时开关。`,tourRaiseTitle:`有问题就举手`,tourRaise:`点「举手提问」,或者直接在提问框里写。也可以说出来:点麦克风,或者按住 V 键说话,松开后问题就进了提问框。老师答完会接着讲。`,tourReexplainTitle:`这一步没听懂`,tourReexplain:`点「换个讲法」,让老师打个比方、画图、举个例子,或者讲简单点、讲深一点。`,tourChallengeTitle:`觉得讲错了`,tourChallenge:`点「这一步不对?」,老师会先仔细核对;真错了会当场改正,并把这一讲一起改好。`,tourPanelTitle:`课堂要点和讲解记录`,tourPanel:`这里能看到这一讲的要点讲到了哪儿;老师说过的话都在讲解记录里,点一条就回到那里。`,outlineView:`大纲的显示方式`,viewList:`列表`,viewMap:`导图`,mapTools:`导图工具`,mapFollow:`回到最新`,mapPick:`到列表里编辑这一讲`,depthTitle:`这一讲的讲法`,depthNone:`不限`,depth_intuition:`直观理解`,depth_definition:`定义概念`,depth_derivation:`推导证明`,depth_application:`动手应用`,depth_extension:`深入拓展`,profileName:`怎么称呼你`,profileNameHint:`老师开课时会这样叫你一次,可以不填`,profileNamePlaceholder:`比如:小明`,challenge:`这一步不对?`,challengeLabel:`这一步不对?`,challengeTitle:`这一步哪里不对?(可以不填)`,challengeTitleStep:`第 {n} 步哪里不对?(可以不填)「{text}」`,challengePlaceholder:`比如:5 cm 是不是应该换成 0.05 m?`,challengeHint:`老师会先仔细算一遍,要等十几秒到半分钟。`,challengeSend:`请老师核对`,challengeLine:`不对?`,challengeStep:`第 {n} 步不对?`,checkingStep:`老师在仔细核对这一步…`,challenge_wrong:`确实有错,已更正`,challenge_right:`核对过,没有错`,challenge_unclear:`要看约定`,fixed:`已更正`,fixedWas:`原来写的是:{was}`,itemChallenge:`这题有问题?`,itemChallengeTitle:`这题哪里不对?(可以不填)`,itemChallengePlaceholder:`比如:我觉得 B 也对;或者:答案的单位是不是错了?`,itemChallengeHint:`老师会先仔细算一遍,要等几秒到半分钟,你可以先做下一题。`,itemChecking:`老师在仔细核对这道题…`,itemCheckTitle:`老师核对`,itemCheck_wrong:`确实有错,已更正`,itemCheck_unclear:`题目没说清楚,已补充`,itemCheck_misgraded:`判分有误,已重新判`,itemCheck_right:`核对过,没有错`,regraded:`(重新判过)`,itemCheckDone:`第 {n} 题核对完了:{verdict}。`,itemCheckRegraded:`已按核对结果重新判分。`,itemCheckEarlier:`这道题你之前还答过 {count} 次,也按改好的题重新判了。`,itemCheckFailedNotice:`第 {n} 题没核对成功:{message}`,fixedWasItem:`原来写的:`,fixedPart_prompt:`题目:{text}`,fixedPart_option:`选项 {id}:{text}`,fixedPart_answer:`答案:{text}`,fixedPart_unit:`单位:{text}`,fixedPart_tolerance:`允许误差:{text}`,fixedPart_explanation:`解析:{text}`,fixedPart_hints:`提示:{text}`,fixedPart_rubric:`评分要点:{text}`,fixedPart_figure:`图也重画了`,lessonGoals:`课堂要点`,transcript:`讲解记录`,showPanel:`讲解记录`,hidePanel:`收起侧栏`,panelTitle:`课堂侧栏`,boardFont:`板书字体`,fontHand:`手写体`,fontStandard:`标准体`,textSize:`文字大小`,textStandard:`标准`,textLarge:`大`,textLarger:`特大`,textSizeHint:`开窍里的文字一起变大,马上生效。板书和思维导图用它们自己的缩放按钮;DSH「设置 → 通用设置 → 字号大小」也会让这里的文字跟着变。`,digestMissing:`有 {count} 部分没读成功({parts}),下面的结果不含这些内容。`,redigest:`重新消化`,revisingSoFar:`正在修改…已写好 {count} 节课`,"err_bad-url":`这个网址不能导入:只支持公开网站的 http 或 https 地址,不支持本机、局域网和带账号密码的地址。`,err_network:`网页打不开或加载超时,请检查网址后重试。`,err_http:`网页返回了错误,没能导入。`,blueprintSoFar:`正在设计课程蓝图…已写好 {count} 节课`,reexplainedAs:`换个讲法:{style}`,digestReading:`正在通读全文:已读 {done}/{total} 部分`,digestWriting:`正在汇总全文要点`,keepsRunning:`可以先离开这一页,生成会在后台继续。`,err_cancelled:`已取消。`,courseCreatedInChat:`课程「{title}」已创建,可以在「开窍」里继续。`,err_failed:`出了点问题,请稍后再试。`,err_invalid:`这个请求没法处理。请刷新页面后再试;如果还是这样,请退出并重新打开 DSH。`,"err_not-found":`找不到这项内容,它可能已经被删除了。`,err_forbidden:`没有权限做这件事。`,"err_unknown-endpoint":`插件刚更新过,请退出并重新打开 DSH 后再试。`,err_aborted:`上传中断了,请重试。`,err_connection:`连不上 DSH,请确认它还开着,然后重试。`,err_missing:`这项任务找不到了,可能是 DSH 重启过,请重试。`,"err_llm-missing":`还没有可用的模型,请先在 DSH 设置里配置一个模型服务。`,"err_no-board":`板书还没写好,等第一步出来再试。`,"err_empty-question":`先写下你的问题。`,"err_empty-goal":`先说说你想学什么,或者添加一份资料。`,"err_empty-change":`先写下你想怎么改。`,"err_no-blueprint":`还没有课程蓝图,请先生成蓝图。`,"err_no-proposal":`没有待确认的修改,它可能已经应用或放弃了。`,"err_bad-pack":`这个文件不是能导入的课程包。`,"err_pack-too-large":`这个课程包太大了,导入不了。`,"err_pack-too-new":`这个课程包是新版开窍导出的,请先更新插件再导入。`,"err_nothing-to-review":`还没有可以评阅的内容:先写几句说明,或在项目文件夹里做些修改。`,"err_cannot-tick":`只能勾选今天或之前的学习项。`,"err_exam-incomplete":`考试需要填写名称和日期。`,"err_no-material":`先选至少一份资料。`,"err_material-no-text":`所选资料里没有可读的文字,图片和扫描版 PDF 读不出文字。`,"err_empty-topic":`先写下一个主题,或者填一个网址。`,"err_no-credentials":`这个 DSH 配置里用不了凭据存储,没法保存密钥。`,"err_bad-key":`密钥格式不对:应为 8–1024 个英文字母、数字或符号,不能有空格。`,err_unsupported:`不支持这种文件。可以上传 PDF、Word、PowerPoint、图片,或 .md、.txt、.csv 这类文本文件。`,"err_old-office":`不支持旧版 .doc/.ppt 文件,请另存为 .docx/.pptx 后再上传。`,err_encrypted:`这个 PDF 有密码保护,请先去掉密码再上传。`,err_unreadable:`这个文件读不出来,可能已经损坏,可以重新导出一份再试。`,"err_no-text":`这个文件里没有读到文字。`,"err_scan-needs-vision":`这是扫描版,没有能直接读取的文字。要识别里面的字,请在开窍设置里选一个带 🖼(能看图)的模型,比如 DeepSeek-V4.1-Flash,再重新上传。`,"err_pictures-need-vision":`这个文件里的内容都是图片。要识别图里的字,请在开窍设置里选一个带 🖼(能看图)的模型,比如 DeepSeek-V4.1-Flash,再重新上传。`,"err_llm-no-vision":`当前模型看不了图片。请在开窍设置里换一个带 🖼 的模型。`,"err_image-unusable":`这张图片没能交给模型。`,err_empty:`这个文件是空的。`,"err_too-large":`文件超过 200 MB,太大了,可以拆成几份再上传。`,"err_focus-empty":`资料里没找到和「重点」相关的内容,换个写法或清空重点再试。`,"err_image-too-large":`图片要小于 10 MB。`,"err_page-too-large":`这个网页太大了,导入不了。`,"err_page-no-text":`这个网页上没有读到正文。`,"err_tts-address":`语音服务地址不对:要填完整的 https 网址(只有本机地址可以用 http),不能带账号密码。`,"err_tts-app-id":`火山引擎语音需要填写 App ID。`,"err_tts-azure":`Azure 的区域或音色名称不对,请照 Azure 门户里的写法填写。`,"err_tts-config":`语音服务的设置不完整,请在设置里检查。`,"err_tts-network":`连不上语音服务,请检查网络和服务地址。`,"err_tts-stalled":`语音服务一直没有回应,请检查服务是否在运行、地址是否正确。`,"err_tts-timeout":`语音服务响应超时,请稍后再试。`,"err_tts-too-large":`语音服务返回的音频太大了。`,"err_tts-auth":`语音服务拒绝了密钥,请检查密钥是否正确。`,"err_tts-no-key":`还没有保存这个语音服务的密钥,请先在设置里填写。`,"err_tts-rate-limit":`语音服务请求太频繁,请稍后再试。`,"err_tts-server":`语音服务出错了,请稍后再试。`,"err_tts-request":`语音服务拒绝了这次请求,请检查音色等设置。`,"err_tts-empty":`没有要朗读的文字。`,"err_tts-response":`语音服务没有返回可用的音频,请稍后再试,或换一个音色。`,"err_tts-failed":`语音合成失败了,请稍后再试。`,"err_no-materials":`先选至少一份资料。`,"err_materials-known":`这些资料已经是这门课的了。`,"err_materials-full":`一门课最多关联 12 份资料,这门课已经满了。`,err_speech:`朗读没有成功,可以换一个系统音色,或者改用云端语音。`,"err_speech-stalled":`系统语音卡住了,没有出声。`,err_playback:`音频没能播放,请再试一次。`,exportFailed:`导出没有成功,请再试一次。`},th={appName:`Aha`,appTagline:`your AI tutor`,navHome:`Home`,navCourses:`My courses`,navMaterials:`Library`,navStudio:`Study tools`,navAssist:`Ask anything`,navShorts:`Explainer shorts`,navPlan:`Study plan`,navProfile:`My profile`,navSettings:`Settings`,navAbout:`About the author`,navFold:`Collapse`,navUnfold:`Expand`,heroTitle:`What do you want to finally understand today?`,heroHint:`Tell me what you want to learn, or drop in a textbook. I will get to know you, build a course around you, and teach it step by step on the whiteboard.`,heroPlaceholder:`e.g. Get eigenvalues in three weeks | Turn these lecture notes into a course | How does quantum tunneling actually work?`,modeCourse:`Build a course`,modeExplain:`Explain a concept`,modeSolve:`Solve with me`,modeVisualize:`Show me visually`,modeDigest:`Digest a long read`,modeShort:`Two-minute short`,attach:`Add material`,attached:`{count} material(s) attached`,start:`Start`,quickStart:`Skip questions, build now`,continueLearning:`Continue learning`,todayPlan:`Today`,noPlanToday:`Nothing planned today. Start a course or take a break.`,recentWork:`Recent`,sampleCourses:`Sample courses`,sampleHint:`Try the whiteboard classroom without spending tokens.`,importSample:`Add to my courses`,coursesTitle:`My courses`,filterAll:`All`,filterActive:`In progress`,filterDone:`Completed`,filterArchived:`Archived`,searchCourses:`Search courses`,noCourses:`No courses yet. Go to Home and tell me what you want to learn.`,importPack:`Import course pack`,lessonsCount:`{done}/{total} lessons`,minutesLeft:`about {minutes} min left`,statusIntake:`Questions pending`,statusBlueprint:`Blueprint to confirm`,statusReady:`Ready`,nextUp:`Next: {title}`,craftQuestionsTitle:`Let me get to know you`,craftQuestionsHint:`A few answers let me shape the course around you. Skip anything you are unsure about.`,craftOther:`Other (write your own)`,craftPace:`Pace`,paceIntensive:`Sprint`,paceIntensiveHint:`~6 weeks, essentials first`,paceBalanced:`Steady`,paceBalancedHint:`~3 months, foundations + practice + project`,paceRelaxed:`No deadline`,paceRelaxedHint:`Take your time, go deeper`,weeklyMinutes:`Time per week`,minutesUnit:`{minutes} min`,deadline:`Deadline (optional)`,makeBlueprint:`Design my course`,thinkingQuestions:`Thinking about what to ask you…`,designingBlueprint:`Designing your course blueprint…`,blueprintTitle:`Course blueprint`,blueprintHint:`Here is the course I designed for you. Edit titles, remove or reorder anything, or tell me what to change.`,reviseLabel:`Change it in one sentence`,revisePlaceholder:`e.g. More hands-on coding; make unit 2 lighter; drop lesson 3`,revise:`Revise`,revising:`Revising…`,addLesson:`Add lesson`,addLecture:`Add chapter`,addUnit:`Add unit`,moveUp:`Move up`,moveDown:`Move down`,remove:`Remove`,projects:`Projects`,confirmCourse:`Confirm and build the course`,confirming:`Preparing practice and projects… {done}/{total}`,courseReady:`Your course is ready`,unitN:`Unit {n}`,lectureN:`Chapter {n}`,estMinutes:`{minutes} min`,saveEdits:`Save changes`,saved:`Saved`,tabOutline:`Outline`,tabPractice:`Practice, quizzes & flashcards`,tabSheets:`Cheat sheets`,tabProjects:`Projects`,tabProgress:`Progress`,learn:`Learn`,practice:`Practice`,review:`Review`,remedial:`Revisit`,exportPack:`Export course pack`,exportWithProgress:`Include my progress`,rename:`Rename`,archive:`Archive`,unarchive:`Unarchive`,deleteCourse:`Delete course`,deleteConfirm:`This cannot be undone. Delete "{title}"?`,cancel:`Cancel`,confirm:`Confirm`,close:`Close`,back:`Back`,retry:`Retry`,generate:`Generate`,regenerate:`Regenerate`,generating:`Generating…`,open:`Open`,unitQuiz:`Unit quiz`,unitSheet:`Unit cheat sheet`,unitCards:`Unit flashcards`,unitCardsDue:`Unit flashcards · {count}`,unitCardsDueTitle:`{count} due`,mastery:`Mastery`,conceptMastery:`Concept mastery`,preparingLesson:`Your tutor is preparing the lesson…`,bufferingLesson:`Writing the next part…`,play:`Play`,pause:`Pause`,prevStep:`Previous step`,nextStep:`Next step`,speed:`Speed`,voiceOn:`Sound on`,voiceOff:`Muted`,voiceDownCloud:`The cloud voice is not working: {reason} This lesson goes on without sound.`,voiceDownSystem:`The system voice is not working: {reason} This lesson goes on without sound.`,openSettings:`Settings`,captions:`Captions`,raiseHand:`Raise hand`,askPlaceholder:`What was unclear? Just ask`,ask:`Ask`,answering:`Thinking about your question…`,reexplain:`Explain differently`,styleAnalogy:`With an analogy`,styleVisual:`With a drawing`,styleExample:`With an example`,styleSimpler:`More simply`,styleDeeper:`In more depth`,stepOf:`Step {current}/{total}`,checkTitle:`Quick check`,confidence:`How sure are you?`,pickSeveral:`Select all that apply.`,confSure:`Sure`,confUnsure:`Not quite`,confGuess:`Guessing`,submit:`Submit`,correct:`Correct`,incorrect:`Not quite`,partial:`Partly right`,continue:`Continue`,skip:`Skip`,hint:`Hint`,yourAnswer:`Your answer`,grading:`Grading…`,lessonDone:`Lesson complete`,selfRate:`How well do you feel you got it?`,rate1:`Lost`,rate3:`Okay`,rate5:`Crystal clear`,nextLesson:`Next lesson`,doPractice:`Practice`,backToCourse:`Back to course`,remedialAdded:`I added a revisit lesson for you: {title}`,challengeNote:`You have this down; the next lessons will go deeper.`,replay:`Replay lesson`,regenerateLesson:`Re-prepare lesson`,exportBoard:`Export board`,practiceTitle:`Practice`,check:`Check`,checked:`Checked`,score:`Score {score}`,practiceDone:`Set complete: {correct}/{total} correct`,showExplanation:`Explanation`,makingPractice:`Writing practice…`,makingQuiz:`Writing the unit quiz. Its length follows the unit's concepts, so this can take a minute or two…`,quizWriting:`{count} questions written`,newQuizSet:`New set of questions`,cardsTitle:`Flashcards`,cardsDue:`{count} due`,cardsTotal:`{count} in all`,flip:`Click to flip`,again:`Again`,hard:`Hard`,good:`Good`,easy:`Easy`,cardsDone:`Review round complete!`,makingCards:`Making flashcards…`,makingUnitCards:`Making this unit's flashcards; their number follows its concepts…`,cardsWriting:`{count} cards written`,cardReview:`Flashcard review`,cardReviewDue:`Flashcard review · {count} due`,cardReviewNone:`Flashcard review · none due`,cardReviewEmpty:`No flashcards are due. Open a unit's flashcards to learn new ones.`,studyPartsCards:`Read {done}/{total} parts · {count} cards written`,studyPartsQuiz:`Read {done}/{total} parts · {count} questions written`,partsMissing:`{count} parts could not be read ({parts}) and have nothing here.`,sheetTitle:`Cheat sheet`,columns:`Columns`,fontSize:`Font size`,highlight:`Highlight key items`,print:`Print`,hideSection:`Hide`,showSection:`Show`,makingSheet:`Compiling the cheat sheet…`,projectBrief:`Brief`,milestones:`Milestones`,rubric:`Rubric`,openWorkspace:`Open project workspace`,openingWorkspace:`Preparing the project folder…`,workspaceReady:`Project folder: {path}`,workspaceSession:`Opened a project session in DSH`,workspaceManual:`Add this folder as a workspace in DSH and a coding agent can help you build it.`,copyPath:`Copy path`,submitProject:`Submit work`,submitNotes:`Notes (what you built, what was hard)`,includeFiles:`Include the files in the project folder`,reviewing:`Reviewing your work…`,reviewTotal:`Total {total}/{max}`,strengths:`What went well`,nextSteps:`What to improve`,submissions:`Submissions`,materialsTitle:`Library`,materialsHint:`Upload textbooks, notes, papers or web pages to build courses, cheat sheets and flashcards. Lessons cite their pages.`,uploadFiles:`Upload files`,dropHere:`Drop files here (PDF, Word, PowerPoint, Markdown, text, images)`,addUrl:`Add web page`,urlPlaceholder:`https://…`,reading:`Reading…`,pages:`{count} pages`,slides:`{count} slides`,makeCourse:`Build a course`,makeSheet:`Cheat sheet`,makeCards:`Flashcards`,makeNotes:`Notes`,makeQuiz:`Quiz`,digest:`Digest`,digestTitle:`Digest`,overview:`Overview`,structure:`Structure`,keyIdeas:`Key ideas`,arguments:`Claims and evidence`,glossary:`Glossary`,discussion:`Questions worth asking`,imageNeedsVision:`Images need a vision-capable model.`,readingPictures:`Reading the text in pictures {done}/{total}: {name}`,summarizingMaterial:`Summing up {name}`,readScanPages:`{count} scanned pages read`,readPictures:`Text read from {count} pictures`,readPhoto:`Text in the picture read`,photoNoText:`No text found in the picture`,readPartly:`Some parts were not read`,listJoin:`, `,unreadPages:`{count} pages have no text layer (scans or full-page pictures), and the current model cannot see images, so they were not read. Pick a model marked 🖼 in Aha settings and upload the file again.`,unreadPictures:`The text in {count} pictures was not read: the current model cannot see images. Pick a model marked 🖼 in Aha settings and upload the file again.`,failedPages:`Page {list} could not be read`,failedSlides:`Slide {list} could not be read`,failedPictures:`Picture {list} could not be read`,failedPhoto:`The text in this picture could not be read`,failedWhy:`{what}: {reason}`,failedRetry:`{what}. Uploading it again may help.`,leftPages:`{count} more pages were not read: at most 200 pages of a file are read. Split the file and upload the parts.`,leftPictures:`{count} more pictures were not read: at most 200 pictures of a file are read.`,noMaterials:`Your library is empty.`,studioTitle:`Study tools`,studioHint:`Turn library materials into study aids in one click.`,pickMaterials:`Pick materials`,sheets:`Cheat sheets`,notes:`Notes`,decks:`Flashcard decks`,quizzes:`Quizzes`,focusPlaceholder:`Focus (optional), e.g. midterm scope chapters 3–6`,assistTitle:`Ask anything`,assistHint:`No course needed. Ask, and your tutor explains it on the whiteboard.`,assistPlaceholder:`What do you want to know? Paste a problem, a concept, or attach material`,followUp:`Follow up`,history:`History`,newThread:`New question`,shortsTitle:`Explainer shorts`,shortsHint:`Give a topic or a link and get a shareable two-minute whiteboard explainer.`,topicPlaceholder:`e.g. Why is the sky blue?`,makeShort:`Make short`,exportVideo:`Export video`,exporting:`Recording video… {percent}%`,exportNeedsCloud:`System voices cannot be recorded, so the video will have captions but no sound. Set up a cloud voice in Settings to export with narration.`,exportUnsupported:`Video export is not supported here.`,planTitle:`Study plan`,planHint:`Built from all your active courses, your weekly time and deadlines, with room for reviews.`,studyDays:`Study days`,weekdays:`Sun,Mon,Tue,Wed,Thu,Fri,Sat`,exams:`Exams and deadlines`,addExam:`Add`,examTitle:`Title`,examDay:`Date`,deadlineRisk:`At this pace "{course}" ends on {finish}, after its deadline {deadline}. Try about {minutes} minutes a week.`,startReview:`Start review`,reviewDue:`{count} concept(s) due for review`,nothingToReview:`Nothing to review right now.`,savePlan:`Save`,lessonItem:`Lesson`,reviewItem:`Review`,examItem:`Exam`,today:`Today`,profileTitle:`My profile`,profileHint:`Your tutor remembers this to fit every course to you. What you write or change here stays as you wrote it when the tutor updates the profile after a lesson. Clear it anytime.`,background:`Background`,goals:`Goals`,strengthsLabel:`Strengths`,weaknesses:`Weak spots`,learningStyle:`How I like things explained`,memoryNotes:`Tutor notes`,clearProfile:`Clear profile`,clearProfileConfirm:`Your tutor will forget your background and preferences. Continue?`,onePerLine:`One per line`,settingsTitle:`Settings`,modelsTitle:`Models`,teachModel:`Course design & teaching`,quickModel:`Grading & questions`,followDefault:`Follow the DSH default model`,followTeach:`Same as Course design & teaching`,modelsHint:`Lesson quality depends mostly on the teaching model; grading and in-class questions can use a faster one. Models marked 🖼 can see images: they read the text in scans, photos and pictures.`,voiceTitle:`Narration`,engine:`Voice source`,engineBrowser:`System voice (free)`,engineCloud:`Cloud voice`,engineOff:`Silent`,browserVoice:`System voice`,autoVoice:`Automatic`,noVoiceForLanguage:`No system voice found for this language. Install one in your OS settings or use a cloud voice.`,cloudProvider:`Cloud service`,providerOpenai:`OpenAI-compatible API`,providerVolcengine:`Volcengine (Doubao)`,providerMinimax:`MiniMax`,providerAzure:`Azure Speech`,field_baseUrl:`API address`,field_model:`Model`,field_voice:`Voice`,field_appId:`App ID`,field_cluster:`Cluster`,field_groupId:`Group ID`,field_region:`Region`,field_apiKey:`Key`,keySaved:`Key saved`,keyMissing:`No key saved`,saveKey:`Save key`,clearKey:`Remove key`,testVoice:`Test`,testSentence:`Hi, I am your tutor. Let us make the hard things make sense.`,voiceRate:`Default speed`,boardTheme:`Board look`,themeAuto:`Follow system`,themeLight:`Whiteboard`,themeDark:`Chalkboard`,versionTitle:`Plugin version`,versionCurrent:`Current`,versionLatest:`Latest`,versionCheck:`Check for updates`,versionChecking:`Checking…`,versionFailed:`Could not check the latest version.`,versionUpToDate:`You are on the latest version.`,versionAvailable:`Version v{version} is available.`,versionLinked:`Installed from a local checkout; pull and rebuild the plugin repository to update.`,versionManual:`Could not find the profile that owns this plugin. Install the exact version from the DSH Plugins page: dsh-aha-tutor@{version}.`,versionUpdate:`Update plugin`,versionUpdating:`Updating…`,versionUpdateFailed:`The update failed. Try again later, or install the exact version from the DSH Plugins page.`,versionPending:`v{version} was published recently; DSH’s pnpm installs it once its release cooldown passes. Try again later.`,versionPendingUntil:`v{version} was published recently; DSH’s pnpm installs it once its release cooldown passes, after {time}.`,versionUpdated:`Updated to v{version}. Quit and reopen the DSH desktop app for it to take effect (refreshing the page is not enough).`,privacyNote:`Courses, progress and materials are stored only in DSH’s data folder on this computer.`,aboutTitle:`About the author`,aboutRole:`Author of Aha Tutor (开窍)`,aboutIntro:`Aha Tutor is free and open source, and tips are entirely optional. If it helped something finally click for you, a tip keeps Qiao growing.`,aboutRepo:`GitHub repository`,aboutIssues:`Report a problem`,aboutSupport:`Support the author`,aboutWechat:`WeChat`,aboutAlipay:`Alipay`,aboutScan:`Scan a code with your phone`,errorGeneric:`Something went wrong: {message}`,crashPage:`This page ran into a problem and could not be shown.`,crashPageHint:`Try again, or go back to the home page.`,crashPart:`This part ran into a problem and could not be shown.`,backHome:`Back to home`,loading:`Loading…`,empty:`Nothing here yet.`,copied:`Copied`,minutes:`min`,untitled:`Untitled`,delete:`Delete`,edit:`Edit`,save:`Save`,all:`All`,mode:`Mode`,boardSession:`Whiteboard`,toolBoardTitle:`Explaining on the whiteboard`,openBoard:`Open whiteboard`,panelLabel:`Aha · AI tutor`,copyCode:`Copy`,footnotes:`Footnotes`,"err_llm-auth":`The model is not signed in or its key is invalid. Check the model provider in DSH settings.`,"err_llm-quota":`The model quota is used up or requests are too frequent. Try again later.`,"err_llm-context":`The material is too long for this model. Pick fewer materials or a model with a larger context.`,"err_llm-unavailable":`The selected model is not available. Pick another one in Aha settings.`,"err_llm-timeout":`The model took too long. Try again.`,"err_bad-output":`The model did not return a usable result this time. Try again or pick a stronger model in settings.`,boardView:`Board view`,viewCanvas:`Canvas`,viewPages:`Pages`,boardViewHint:`Canvas: the whole lesson’s pages, top to bottom on one canvas you can drag and zoom, following the teacher’s writing during the lesson. Pages: one page at a time, turned with the page numbers at the top right.`,canvasTools:`Canvas zoom`,canvasHelp:`Drag or scroll to move, hold Ctrl/⌘ and scroll or pinch to zoom, double-click a page to fit it`,canvasZoomIn:`Zoom in`,canvasZoomOut:`Zoom out`,canvasZoomReset:`Back to 100% (full width)`,canvasFit:`Show everything: zoom out to see every page`,canvasFitShort:`All`,canvasFollow:`Back to the teacher`,canvasPage:`Page {n}`,voiceAsk:`Ask by voice`,voiceAskWith:`Ask by voice (microphone: {name})`,voiceStop:`Stop recording`,talkKeyHint:`Shortcut: hold V while you speak and let go to finish, or tap V, speak, and tap it again.`,raiseHandKey:`Pause the lesson and ask in the question box. You can also hold V and say it.`,voiceSetup:`Voice questions need Voice input enabled in DSH`,voiceWorking:`Recognizing…`,voice_off:`Voice questions use DSH’s experimental Voice input: enable Voice input in DSH’s Plugins page, choose Download and prepare in its details, then click here again.`,voice_unprepared:`The speech recognizer is not set up yet: choose Download and prepare in Voice input’s details on DSH’s Plugins page (about 240 MB), then click here again.`,voice_preparing:`The speech recognizer is being set up; click here again when it is ready. Voice input’s details on DSH’s Plugins page show the progress.`,voice_failed:`Setting up the speech recognizer failed: retry it in Voice input’s details on DSH’s Plugins page.`,"err_speech-off":`Voice input is not enabled in DSH: enable it in DSH’s Plugins page and set up its model.`,"err_speech-unprepared":`The speech recognizer is not ready: choose Download and prepare in Voice input’s details on DSH’s Plugins page.`,"err_speech-audio":`The recording could not be read. Record it again.`,"err_speech-too-long":`The recording is too long; it can be at most 2 minutes.`,"err_speech-failed":`Speech recognition failed. Try again.`,"err_speech-empty":`No speech was heard. Move closer to the microphone and try again.`,"err_mic-denied":`Microphone access was refused: allow DSH to use the microphone in your browser or system settings.`,"err_mic-missing":`No microphone was found.`,"err_mic-chosen-missing":`The microphone chosen in DSH’s Voice input is not available: plug it in, or choose another in Voice input’s details on DSH’s Plugins page.`,micChosenMissing:`The microphone chosen in DSH’s Voice input, “{name}”, is not available: plug it in, or choose another in Voice input’s details on DSH’s Plugins page.`,"err_mic-busy":`The microphone is in use by another program.`,"err_mic-unsupported":`Recording is not possible here.`,prepThinking:`Planning`,prepWriting:`Writing the board`,prepStarting:`Reaching the model…`,prepThinkingDetail:`Thinking the lesson through ({chars} characters so far)`,prepStep:`Writing step {n}`,prepCounts:`{steps} steps ready · {chars} characters`,prepSeconds:`{seconds}s so far`,dayLabel:`{weekday}, {month}/{day}`,exportPdf:`PDF (one board page per page)`,exportPng:`PNG images (one per page)`,exportMarkdown:`Markdown text`,exportingBoard:`Exporting the board… {done}/{total}`,animationStill:`Animation (plays in the lesson)`,figureMissing:`This figure could not be drawn`,figureRedrawing:`Redrawing this figure…`,animationFailed:`This animation could not play`,monthLabel:`{month}/{year}`,prevMonth:`Previous month`,nextMonth:`Next month`,markDone:`Mark as done`,unmarkDone:`Mark as not done`,checkedAuto:`Done in the course`,dayEmpty:`Nothing planned for this day.`,webResearch:`Search the web first`,webResearchHint:`Before designing the course, look the subject up with DSH web search and use what it finds`,researching:`Searching the web…`,researchFound:`Drew on {count} web sources`,researchSkipped:`No web search: {reason}`,"researchSkipped_no-credential":`DSH has no DeepSeek key, which its web search needs`,researchSkipped_unavailable:`web search is not available in this DSH`,researchSkipped_failed:`the search failed`,researchSkipped_empty:`nothing useful came up`,courseSources:`Sources`,buildResearch:`Using {count} web sources`,"err_llm-empty":`The model returned nothing this time. Try again, or pick another model in Aha settings if it keeps happening.`,"err_llm-failed":`The model call failed. Try again in a moment.`,nextStepTitle:`Next step`,nextStepReview:`{count} concepts are due for review`,nextStepWeak:`“{concept}” is still weak; practise it first`,nextStepLesson:`Continue with “{title}”`,nextStepDone:`You have finished the course; check yourself with a unit quiz`,practiceThis:`Practise this lesson`,streakCount:`{count} in a row`,keysHint:`Keyboard: 1–4 to choose · Enter to submit or continue · H for a hint`,starsLabel:`{count} stars`,accuracy:`accuracy`,bestStreak:`best streak`,masteryChange:`Mastery after this round`,stageNone:`Not started`,stageWeak:`Weak`,stageLearning:`Learning`,stageProficient:`Proficient`,stageMastered:`Mastered`,nextRelearn:`A few points have not landed yet; going through the lesson again will help.`,nextReview:`You mostly have it, but it is not solid yet; a review round will make it stick.`,nextQuiz:`This is solid; you are ready for the unit quiz.`,nextLessonStep:`You are ready to move on.`,nextCourse:`This part is done.`,relearnLesson:`Back to the lesson`,reviewCourse:`Review this course`,mistakeBook:`Mistake notebook`,mistakeEmpty:`No mistakes yet. Questions you miss in class checks, practice, unit quizzes and reviews land here and come back from the next day on.`,mistakeCountDue:`{count} ready to redo`,mistakeCountOpen:`{count} open`,mistakeCountResolved:`{count} resolved`,practiceMistakesDue:`Redo mistakes ({count})`,mistakeShowAll:`Show all {count}`,mistakeShowFewer:`Show fewer`,mistakeResolvedList:`Resolved ({count})`,mistakeFrom_check:`Class check`,mistakeFrom_practice:`Practice`,mistakeFrom_quiz:`Unit quiz`,mistakeFigure:`Has a figure`,mistakeLastAnswer:`Last answer: {answer}`,mistakeWrongTimes:`Missed {count}×`,mistakeDueNow:`Ready to redo`,mistakeDueOn:`Back {day}`,mistakeResolvedOn:`Resolved {day}`,dayToday:`today`,dayTomorrow:`tomorrow`,monthDay:`{month}/{day}`,mistakeRound:`Redo mistakes`,mistakeRoundMore:`Another round ({count} left)`,mistakeContext:`missed {count}×`,noMistakesDue:`No mistakes to redo right now. A missed question comes back from the next day on.`,nextStepMistakes:`{count} mistakes are ready to redo`,nextStepReviewMistakes:`{mistakes} mistakes to redo and {count} concepts due for review`,editOutline:`Edit outline`,saveAndBack:`Save and go back`,extendCourse:`Ask for one more unit`,extendInstruction:`Add one more unit at the end that builds on what the course covers and takes the next step at the same gradient; leave the existing units unchanged.`,proposalTitle:`Proposed changes`,proposalNoChange:`This revision changes no lessons.`,applyProposal:`Apply changes`,discardProposal:`Discard`,proposalApplied:`Changes applied`,diffAdded:`Added`,diffRemoved:`Removed`,diffRenamed:`Renamed`,diffChanged:`Changed`,diffUnit:`Unit “{title}”`,reworkLesson:`Rework this lesson`,splitLesson:`Split in two`,deepenLesson:`Go deeper`,splitDone:`Split in two; remember to save`,deepenDone:`Made deeper; remember to save`,confirmRemoveUnit:`Remove the unit “{title}” and all its lessons?`,confirmRemoveLecture:`Remove “{title}” and all its lessons?`,confirmRemoveStarted:`“{title}” has been started; its board and progress will no longer show. Remove it?`,craftSize:`Course size`,sizeAuto:`Let the teacher decide`,sizeAutoHint:`Sized to your goal; a small question may need only a lesson or two`,sizeShort:`Short`,sizeShortHint:`3–8 lessons on what matters most`,sizeStandard:`Standard`,sizeStandardHint:`10–20 lessons: foundations, practice and an applied project`,sizeFull:`Full`,sizeFullHint:`25–45 lessons, thorough, with room to go deeper`,buildAnswers:`Going through your answers`,buildMaterials:`Reading your materials`,buildUnits:`Planning the units`,buildLessons:`Writing the lessons`,buildLessonsSoFar:`Writing the lessons: {count} so far`,workPlaceholder:`Write one step per line and put math inside $…$, e.g. $x^2+6x+9=(x+3)^2$`,workPreview:`Preview`,wrongStep:`Where it went wrong`,fixedStep:`It should read`,correction:`Correction`,correctionOf:`Correction: {tag}`,correcting:`Correcting it on the board…`,seeCorrection:`See the correction`,handout:`Handout`,handoutHint:`A one-page printable handout of this lesson`,handoutOfLesson:`Handout of this lesson`,handoutMaking:`Writing the handout…`,handoutPoints:`Key points`,handoutExample:`Worked example`,handoutMistakes:`Common mistakes`,handoutGlossary:`Glossary`,handoutQuestions:`Check yourself`,handoutAnswer:`Answer`,backToLesson:`Back to the lesson`,addMaterials:`Add materials`,addMaterialsTitle:`Add materials to this course`,addMaterialsHint:`Choose some materials (or upload them now). The teacher reads what they cover and proposes changes to the outline; nothing changes until you apply them, lessons you have started keep their progress, and later lessons cite the materials.`,addMaterialsPlaceholder:`How should the teacher use them? (optional) For example: add the worked examples from chapter 5`,addMaterialsSend:`Ask the teacher how to add them`,changeMaterials:`Change materials`,proposalMaterials:`From the added materials: {titles}`,librarySearch:`Find: type to filter by title or topic, press Enter to search the text`,librarySearchText:`Search text`,libraryFound:`{count} passages in the text`,libraryNotFound:`Nothing in the text matches “{query}”`,libraryNoTitleMatch:`No title or topic matches. Press Enter to search the text.`,pageN:`p. {page}`,pagesN:`pp. {from}–{to}`,pdfPageN:`PDF page {page}`,pdfPagesN:`PDF pages {from}–{to}`,slideN:`slide {slide}`,outlineTitle:`Contents ({count})`,outlineBookmarks:`from the PDF bookmarks`,outlineHeadings:`found from the headings`,outlinePrinted:`page numbers as printed`,lessonSourcesTitle:`This lesson teaches from:`,citeQuote:`Quoted: “{quote}”`,tourLabel:`Classroom tour`,tourReplay:`Classroom tour`,tourSkip:`Skip`,tourBack:`Back`,tourNext:`Next`,tourStart:`Start the lesson`,tourBoardTitle:`The teacher writes here`,tourBoard:`The board fills up as the teacher talks. Drag or scroll to move around it, hold Ctrl (⌘ on a Mac) and scroll to zoom, and use All in the top right to see the whole lesson.`,tourControlsTitle:`Play and pace`,tourControls:`Play, pause, the previous and next step and the speed are here; Space pauses too. Captions and sound can be switched at any time.`,tourRaiseTitle:`Raise your hand`,tourRaise:`Choose Raise hand, or type in the question box. You can also say it: click the microphone, or hold V while you speak and let go to put the question in the box. The teacher answers, then carries on.`,tourReexplainTitle:`Lost at this step?`,tourReexplain:`Choose Explain differently for an analogy, a drawing, an example, a simpler or a deeper take.`,tourChallengeTitle:`Spotted a mistake?`,tourChallenge:`Choose Is this step wrong? The teacher checks it carefully first; a real mistake is corrected there and fixed in the lesson.`,tourPanelTitle:`Goals and transcript`,tourPanel:`See how far the lesson's goals have come; everything said is in the transcript, and choosing a line goes back to it.`,outlineView:`How the outline is shown`,viewList:`List`,viewMap:`Map`,mapTools:`Map tools`,mapFollow:`Back to the newest`,mapPick:`Edit this lesson in the list`,depthTitle:`How this lesson treats its idea`,depthNone:`Any`,depth_intuition:`Intuition`,depth_definition:`Definition`,depth_derivation:`Derivation`,depth_application:`Application`,depth_extension:`Extension`,profileName:`What should the tutor call you?`,profileNameHint:`said once when a lesson opens; optional`,profileNamePlaceholder:`For example: Sam`,challenge:`Is this step wrong?`,challengeLabel:`Is this step wrong?`,challengeTitle:`What looks wrong in this step? (optional)`,challengeTitleStep:`What looks wrong in step {n}? (optional) “{text}”`,challengePlaceholder:`For example: shouldn’t 5 cm be 0.05 m?`,challengeHint:`The teacher works it through again first, which takes a few seconds to half a minute.`,challengeSend:`Ask the teacher to check`,challengeLine:`Wrong?`,challengeStep:`Is step {n} wrong?`,checkingStep:`Checking this step carefully…`,challenge_wrong:`It was wrong, now corrected`,challenge_right:`Checked: it is right`,challenge_unclear:`Depends on the convention`,fixed:`Corrected`,fixedWas:`It said: {was}`,itemChallenge:`Something wrong with this question?`,itemChallengeTitle:`What looks wrong? (optional)`,itemChallengePlaceholder:`For example: I think B is right too, or: is the unit in the answer wrong?`,itemChallengeHint:`The teacher works it through first, which takes a few seconds to half a minute. You can go on meanwhile.`,itemChecking:`Checking this question carefully…`,itemCheckTitle:`Teacher’s check`,itemCheck_wrong:`It was wrong, now corrected`,itemCheck_unclear:`It was unclear, now spelled out`,itemCheck_misgraded:`It was graded wrongly, now regraded`,itemCheck_right:`Checked: it is right`,regraded:` (regraded)`,itemCheckDone:`Question {n} checked: {verdict}.`,itemCheckRegraded:` Your answer was graded again.`,itemCheckEarlier:` Earlier answers to this question graded again too: {count}.`,itemCheckFailedNotice:`Question {n} could not be checked: {message}`,fixedWasItem:`Before the fix:`,fixedPart_prompt:`Question: {text}`,fixedPart_option:`Option {id}: {text}`,fixedPart_answer:`Answer: {text}`,fixedPart_unit:`Unit: {text}`,fixedPart_tolerance:`Tolerance: {text}`,fixedPart_explanation:`Explanation: {text}`,fixedPart_hints:`Hints: {text}`,fixedPart_rubric:`Rubric: {text}`,fixedPart_figure:`The figure was redrawn`,lessonGoals:`Lesson goals`,transcript:`Transcript`,showPanel:`Transcript`,hidePanel:`Hide the side panel`,panelTitle:`Lesson side panel`,boardFont:`Board font`,fontHand:`Handwriting`,fontStandard:`Standard`,textSize:`Text size`,textStandard:`Standard`,textLarge:`Large`,textLarger:`Extra large`,textSizeHint:`Enlarges all of Aha Tutor’s text, right away. The board and the mind map have their own zoom buttons; DSH’s Settings → General → Font size changes the text here too.`,digestMissing:`{count} part(s) could not be read ({parts}); the digest below leaves them out.`,redigest:`Digest again`,revisingSoFar:`Revising… {count} lessons so far`,"err_bad-url":`This address cannot be imported: only public http or https sites are supported, not this computer, the local network or addresses with credentials.`,err_network:`The page could not be loaded or took too long. Check the address and try again.`,err_http:`The page returned an error and could not be imported.`,blueprintSoFar:`Designing your course blueprint… {count} lessons so far`,reexplainedAs:`Re-explained: {style}`,digestReading:`Reading the whole document: {done} of {total} parts read`,digestWriting:`Combining the notes into one digest`,keepsRunning:`You can leave this page; it keeps going in the background.`,err_cancelled:`Cancelled.`,courseCreatedInChat:`Created the course "{title}". Continue it in Aha.`,err_failed:`Something went wrong. Try again in a moment.`,err_invalid:`This request could not be handled. Reload the page and try again; if it keeps happening, quit and reopen DSH.`,"err_not-found":`This item could not be found. It may have been deleted.`,err_forbidden:`You are not allowed to do this.`,"err_unknown-endpoint":`The plugin was just updated. Quit and reopen DSH, then try again.`,err_aborted:`The upload was interrupted. Try again.`,err_connection:`Could not reach DSH. Make sure it is still open, then try again.`,err_missing:`The task was lost, perhaps because DSH restarted. Try again.`,"err_llm-missing":`No model is available yet. Set up a model provider in DSH settings first.`,"err_no-board":`The board is not written yet. Try again once its first step is up.`,"err_empty-question":`Type your question first.`,"err_empty-goal":`Tell me what you want to learn, or add some material.`,"err_empty-change":`Describe the change you want first.`,"err_no-blueprint":`There is no course blueprint yet. Generate one first.`,"err_no-proposal":`There is no proposed change. It may have been applied or discarded already.`,"err_bad-pack":`This file is not a course pack that can be imported.`,"err_pack-too-large":`This course pack is too large to import.`,"err_pack-too-new":`This course pack comes from a newer version of Aha. Update the plugin, then import it.`,"err_nothing-to-review":`Nothing to review yet: write a note or work in the project folder first.`,"err_cannot-tick":`Only study items on today or an earlier day can be ticked.`,"err_exam-incomplete":`An exam needs a title and a date.`,"err_no-material":`Pick at least one material first.`,"err_material-no-text":`The selected material has no readable text. Images and scanned PDFs cannot be read as text.`,"err_empty-topic":`Give a topic or a web address first.`,"err_no-credentials":`DSH credentials are not available in this profile, so the key cannot be saved.`,"err_bad-key":`The key looks wrong: use 8–1024 letters, digits or symbols with no spaces.`,err_unsupported:`This file type is not supported. Upload a PDF, Word or PowerPoint file, an image, or a text file such as .md, .txt or .csv.`,"err_old-office":`Old .doc/.ppt files are not supported. Save them as .docx/.pptx and upload again.`,err_encrypted:`This PDF is password protected. Remove the password and upload it again.`,err_unreadable:`This file could not be read. It may be damaged; export it again and retry.`,"err_no-text":`No text was found in this file.`,"err_scan-needs-vision":`This is a scan, with no text to read directly. To read the text in it, pick a model marked 🖼 (it can see images) in Aha settings, such as DeepSeek-V4.1-Flash, and upload it again.`,"err_pictures-need-vision":`Everything in this file is pictures. To read the text in them, pick a model marked 🖼 (it can see images) in Aha settings, such as DeepSeek-V4.1-Flash, and upload it again.`,"err_llm-no-vision":`The current model cannot see images. Pick a model marked 🖼 in Aha settings.`,"err_image-unusable":`This picture could not be given to the model.`,err_empty:`This file is empty.`,"err_too-large":`The file is larger than 200 MB. Split it into smaller parts and upload them.`,"err_focus-empty":`Nothing in these materials matches the focus. Reword it or clear it and try again.`,"err_image-too-large":`Images must be smaller than 10 MB.`,"err_page-too-large":`This page is too large to import.`,"err_page-no-text":`No readable text was found on this page.`,"err_tts-address":`The speech service address is wrong: use a full https address (http only for this computer) without a user name or password.`,"err_tts-app-id":`Volcengine speech needs an App ID.`,"err_tts-azure":`The Azure region or voice name is not valid. Enter it as the Azure portal shows it.`,"err_tts-config":`The speech service settings are incomplete. Check them in settings.`,"err_tts-network":`Could not reach the speech service. Check the network and the service address.`,"err_tts-stalled":`The speech service is not responding. Check that it is running and that its address is right.`,"err_tts-timeout":`The speech service took too long. Try again later.`,"err_tts-too-large":`The speech service returned too much audio.`,"err_tts-auth":`The speech service rejected the key. Check that it is correct.`,"err_tts-no-key":`No key is saved for this speech service. Add it in settings first.`,"err_tts-rate-limit":`The speech service is limiting requests. Try again later.`,"err_tts-server":`The speech service had an error. Try again later.`,"err_tts-request":`The speech service refused the request. Check the voice and other settings.`,"err_tts-empty":`There is nothing to read aloud.`,"err_tts-response":`The speech service returned no usable audio. Try again later or pick another voice.`,"err_tts-failed":`Speech synthesis failed. Try again later.`,"err_no-materials":`Choose at least one material first.`,"err_materials-known":`These materials are already part of this course.`,"err_materials-full":`A course can use at most 12 materials, and this one has them all.`,err_speech:`Reading aloud did not work. Try another system voice, or switch to a cloud voice.`,"err_speech-stalled":`The system voice got stuck and made no sound.`,err_playback:`The audio could not be played. Try again.`,exportFailed:`The export did not finish. Try again.`},nh=[`slots`,`locale`,`connection`],rh=`aha-tutor`,ih=`dsh-aha-tutor/board`,ah=`ahaTutorBoard`,oh=[`aha_whiteboard`,`aha_quiz`,`aha_course`,`aha_cheatsheet`,`aha_learner`];function sh({size:e}){return(0,i.jsx)(Ht,{name:`logo`,size:e})}function ch({rpc:e,t,language:n,dsh:r}){return(0,i.jsx)(Um,{rpc:e,t,language:n(),dsh:r})}function lh(e){e.effect(()=>e.locale.register($m,{zh:eh,en:th}),`aha-tutor: copy`),e.effect(()=>{let e=document.createElement(`style`);return e.dataset.plugin=`dsh-aha-tutor`,e.textContent=Fp,document.head.append(e),()=>e.remove()},`aha-tutor: style`);let t=e.locale.bind($m),n=e.get(`connection`).rpc,r=()=>String(e.locale.getLocale?.()?.active??`zh`).startsWith(`zh`)?`zh`:`en`,i=Object.freeze({selectPanel:()=>e.get(`layout`)?.selectPanel?.(rh),async openWorkspace(t,n){let r=e.get(`workspaces`),i=e.get(`uiWorkspace`);if(typeof r?.create!=`function`||typeof i?.startSession!=`function`)return!1;let a=await r.create({path:t});return i.startSession(a.workspaceId,{prompt:n,clearPreviousDraft:!0}),!0},openBoardTab(t){let n=e.get(`sidebarRight`);if(typeof n?.openTab!=`function`)return!1;try{return n.openTab(ah,{params:t}),!0}catch{return!1}}});e.slots.inject(`main`,()=>e.slots.register({name:`main`,key:rh,locale:$m,inject:()=>({rpc:n,language:r,dsh:i})},ch)),e.slots.inject(`sidebar.panellist`,()=>e.slots.register({name:`sidebar.panellist`,id:rh,order:20,locale:$m,label:()=>t(`panelLabel`)},sh)),e.inject([`sidebarRightTabs`],e=>{e.effect(()=>e.sidebarRightTabs.register({id:ih,kind:ah,title:()=>t(`boardSession`),keepMounted:!0}),`aha-tutor: board tab`)}),e.slots.inject(`sidebar.right.pane.tab`,()=>e.slots.register({name:`sidebar.right.pane.tab`,key:ih,locale:$m,inject:()=>({rpc:n,language:r(),dsh:i})},Km));for(let t of oh)e.slots.inject(`tool.call.toolview`,()=>e.slots.register({name:`tool.call.toolview`,key:t,locale:$m,inject:()=>({rpc:n,language:r(),dsh:i})},Xm))}return n.apply=lh,n.inject=nh,t.exports}});
772
+ `).map(e=>e.trim()).filter(Boolean);a.setValue(await e.call(`profile/save`,{name:o.name.trim(),background:o.background,goals:r(o.goals),strengths:r(o.strengths),weaknesses:r(o.weaknesses),preferences:{...a.value.preferences,style:o.style}})),n(t(`saved`))}catch(e){d(e)}}return o?(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:820},children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:t(`profileTitle`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`profileHint`)})]}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(`profileName`),` `,(0,i.jsxs)(`span`,{className:`aha-hint`,children:[`(`,t(`profileNameHint`),`)`]}),(0,i.jsx)(`input`,{className:`aha-input`,maxLength:20,value:o.name,placeholder:t(`profileNamePlaceholder`),onChange:e=>s({...o,name:e.currentTarget.value})})]}),(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(`background`),(0,i.jsx)(`textarea`,{className:`aha-textarea`,value:o.background,onChange:e=>s({...o,background:e.currentTarget.value})})]}),xm.map(([e,n])=>(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(n),` `,(0,i.jsxs)(`span`,{className:`aha-hint`,children:[`(`,t(`onePerLine`),`)`]}),(0,i.jsx)(`textarea`,{className:`aha-textarea`,value:o[e],onChange:t=>s({...o,[e]:t.currentTarget.value})})]},e)),(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(`learningStyle`),(0,i.jsx)(`input`,{className:`aha-input`,value:o.style,onChange:e=>s({...o,style:e.currentTarget.value})})]}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:f,children:t(`save`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`danger`,onClick:()=>l(!0),children:t(`clearProfile`)})]}),(0,i.jsx)(Yu,{error:u})]}),a.value.notes?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:t(`memoryNotes`)}),a.value.notes.map(n=>(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`span`,{children:n.text}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:async()=>a.setValue(await e.call(`profile/remove-note`,{id:n.id})),children:t(`delete`)})]},n.id))]}):null,(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`privacyNote`)}),c?(0,i.jsx)(qu,{danger:!0,text:t(`clearProfileConfirm`),onCancel:()=>l(!1),onConfirm:async()=>{a.setValue(await e.call(`profile/clear`)),l(!1)}}):null]}):(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Hu,{label:t(`loading`)})})}function Cm({courseId:e,projectId:t}){let{api:n,t:a,dsh:o,toast:s}=v(),c=y(()=>n.call(`project/get`,{courseId:e,projectId:t}),[e,t]),l=b(),[u,d]=(0,r.useState)(``),[f,p]=(0,r.useState)(!0),[m,h]=(0,r.useState)(null),[g,_]=(0,r.useState)(!1),[x,S]=(0,r.useState)(null);if(c.loading&&!c.value)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Hu,{label:a(`loading`)})});if(!c.value)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Yu,{error:c.error})});let{project:C,submissions:w}=c.value,T=m?.path??c.value.workspace;async function E(){_(!0),S(null);try{let r=await n.call(`project/open`,{courseId:e,projectId:t});h(r);let i=await o.openWorkspace(r.path,r.prompt).catch(()=>!1);s(i?a(`workspaceSession`):a(`workspaceReady`,{path:r.path}))}catch(e){S(e)}finally{_(!1)}}async function D(){try{await l.run(`project/submit`,{courseId:e,projectId:t,notes:u,includeWorkspace:f}),d(``),c.reload()}catch{}}return(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:900},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:C.title}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:a(`projectBrief`)}),(0,i.jsx)(wd,{text:C.brief})]}),C.milestones?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:a(`milestones`)}),(0,i.jsx)(`ol`,{style:{margin:0,paddingLeft:20},children:C.milestones.map(e=>(0,i.jsxs)(`li`,{children:[(0,i.jsx)(`b`,{children:e.title}),e.detail?(0,i.jsx)(`div`,{className:`aha-hint`,children:e.detail}):null]},e.id))})]}):null,C.rubric?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:a(`rubric`)}),C.rubric.map(e=>(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`span`,{children:[e.criterion,e.detail?(0,i.jsxs)(`span`,{className:`aha-hint`,children:[` · `,e.detail]}):null]}),(0,i.jsx)(`span`,{className:`aha-tag`,children:e.points})]},e.id))]}):null,(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:g,onClick:E,children:[(0,i.jsx)(Ht,{name:`folder`,size:15}),a(g?`openingWorkspace`:`openWorkspace`)]}),T?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`code`,{className:`aha-hint`,style:{overflowWrap:`anywhere`},children:T}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>{ud(T),s(a(`copied`))},children:a(`copyPath`)})]}):null]}),(0,i.jsx)(`p`,{className:`aha-hint`,children:a(`workspaceManual`)}),(0,i.jsx)(Yu,{error:x})]}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:a(`submitProject`)}),(0,i.jsx)(`textarea`,{className:`aha-textarea`,value:u,placeholder:a(`submitNotes`),onChange:e=>d(e.currentTarget.value)}),(0,i.jsxs)(`label`,{className:`aha-row`,style:{gap:6},children:[(0,i.jsx)(`input`,{type:`checkbox`,checked:f,onChange:e=>p(e.currentTarget.checked)}),a(`includeFiles`)]}),l.running?(0,i.jsx)(Wu,{progress:l.progress,label:a(`reviewing`),onCancel:l.cancel}):(0,i.jsx)(`div`,{children:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:!u.trim()&&!f,onClick:D,children:a(`submitProject`)})}),(0,i.jsx)(Yu,{error:l.error})]}),w.length?(0,i.jsxs)(`section`,{className:`aha-col`,children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:a(`submissions`)}),[...w].reverse().map((e,t)=>(0,i.jsxs)(`div`,{className:`aha-card`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`b`,{children:a(`reviewTotal`,{total:e.review.total,max:e.review.max})}),(0,i.jsx)(`span`,{className:`aha-hint`,children:new Date(e.at).toLocaleString()})]}),e.review.summary?(0,i.jsx)(wd,{text:e.review.summary,compact:!0}):null,e.review.scores.map(e=>(0,i.jsxs)(`div`,{className:`aha-spread`,style:{alignItems:`flex-start`},children:[(0,i.jsxs)(`span`,{children:[(0,i.jsx)(`b`,{children:e.criterion}),(0,i.jsx)(`div`,{className:`aha-hint`,children:e.comment})]}),(0,i.jsxs)(`span`,{className:`aha-tag`,children:[e.points,`/`,e.max]})]},e.criterionId)),e.review.strengths?.length?(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`b`,{children:a(`strengths`)}),(0,i.jsx)(`ul`,{style:{margin:0},children:e.review.strengths.map((e,t)=>(0,i.jsx)(`li`,{children:e},t))})]}):null,e.review.nextSteps?.length?(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`b`,{children:a(`nextSteps`)}),(0,i.jsx)(`ul`,{style:{margin:0},children:e.review.nextSteps.map((e,t)=>(0,i.jsx)(`li`,{children:e},t))})]}):null]},t))]}):null]})}let wm=[[`openai`,`providerOpenai`],[`volcengine`,`providerVolcengine`],[`minimax`,`providerMinimax`],[`azure`,`providerAzure`]],Tm=[[`standard`,`textStandard`],[`large`,`textLarge`],[`larger`,`textLarger`]];function Em(){let{api:e,t,settings:n,settingsSaved:a,setVoiceId:o,speech:s,language:c}=v(),l=y(()=>e.call(`models/list`),[]),[d,f]=(0,r.useState)(null),p=e=>d?.area===e?d.failure:null,[m,h]=(0,r.useState)(()=>Tt()),[g,_]=(0,r.useState)(``),[b,x]=(0,r.useState)(!1);(0,r.useEffect)(()=>Et(h),[]);async function S(e,t){f(null);try{await t()}catch(t){f({area:e,failure:t})}}let C=(0,r.useRef)(Promise.resolve()),w=(t,n)=>{let r=S(t,async()=>{await e.call(`settings/save`,{settings:n}),await a()});return C.current=C.current.then(()=>r),r},T=(e,t)=>e&&t?`${e}::${t}`:``,E=(e,t)=>{let[n=``,r=``]=t?t.split(`::`):[];w(`models`,{[`${e}Provider`]:n,[`${e}Model`]:r})},D=(0,r.useMemo)(()=>(l.value??[]).map(e=>({value:`${e.provider}::${e.model}`,label:`${e.providerName} · ${e.name}${e.images?` 🖼`:``}`})),[l.value]),O=c===`zh`?`zh-CN`:`en`,k=m.filter(e=>e.lang.toLowerCase().startsWith(O.split(`-`)[0])),A=n.ttsProvider??`openai`,ee=(n.fields?.[A]??[]).filter(e=>!e.secret),te=n.tts?.[A]??{};async function ne(){f(null),x(!0);try{await C.current,s.configure({engine:n.voiceEngine??`browser`,voiceId:n.voiceId||void 0,language:O,rate:n.voiceRate??1});let e=await s.speak(t(`testSentence`),{rate:n.voiceRate??1}).done;e?.error&&f({area:`test`,failure:new u(e.code??`speech`,e.error)})}finally{x(!1)}}return n.voiceEngine?(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:820},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:t(`settingsTitle`)}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:t(`textSize`)}),(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:6},children:Tm.map(([e,r])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":(n.textSize??`standard`)===e,onClick:()=>w(`text`,{textSize:e}),children:t(r)},e))}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`textSizeHint`)}),(0,i.jsx)(Yu,{error:p(`text`),reveal:!0})]}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:t(`modelsTitle`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`modelsHint`)}),[[`teach`,`teachModel`],[`quick`,`quickModel`]].map(([e,r])=>(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(r),(0,i.jsxs)(`select`,{className:`aha-select`,value:T(n[`${e}Provider`],n[`${e}Model`]),onChange:t=>E(e,t.currentTarget.value),children:[(0,i.jsx)(`option`,{value:``,children:t(e===`quick`?`followTeach`:`followDefault`)}),D.map(e=>(0,i.jsx)(`option`,{value:e.value,children:e.label},e.value))]})]},e)),l.loading?(0,i.jsx)(Hu,{}):null,(0,i.jsx)(Yu,{error:p(`models`),reveal:!0})]}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:t(`voiceTitle`)}),(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:6},children:[[`browser`,`engineBrowser`],[`cloud`,`engineCloud`],[`off`,`engineOff`]].map(([e,r])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":n.voiceEngine===e,onClick:()=>w(`engine`,{voiceEngine:e}),children:t(r)},e))}),(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(`voiceRate`),` · `,n.voiceRate??1,`×`,(0,i.jsx)(`input`,{type:`range`,min:`0.5`,max:`2`,step:`0.05`,value:n.voiceRate??1,onChange:e=>w(`engine`,{voiceRate:Number(e.currentTarget.value)})})]}),(0,i.jsx)(Yu,{error:p(`engine`),reveal:!0}),n.voiceEngine===`browser`?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(`browserVoice`),(0,i.jsxs)(`select`,{className:`aha-select`,value:n.voiceId??``,onChange:e=>o(e.currentTarget.value),children:[(0,i.jsxs)(`option`,{value:``,children:[t(`autoVoice`),Dt(O)?` (${Dt(O).name})`:``]}),(k.length?k:m).map(e=>(0,i.jsxs)(`option`,{value:e.id,children:[e.name,` · `,e.lang,e.local?``:` ☁`]},e.id))]})]}),wt()&&!k.length?(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`noVoiceForLanguage`)}):null]}):null,n.voiceEngine===`cloud`?(0,i.jsxs)(`div`,{className:`aha-col`,children:[(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(`cloudProvider`),(0,i.jsx)(`select`,{className:`aha-select`,value:A,onChange:e=>w(`cloud`,{ttsProvider:e.currentTarget.value}),children:wm.map(([e,n])=>(0,i.jsx)(`option`,{value:e,children:t(n)},e))})]}),ee.map(e=>(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(`field_${e.key}`),(0,i.jsx)(`input`,{className:`aha-input`,defaultValue:te[e.key]??``,onBlur:t=>{let n=t.currentTarget.value.trim();n!==(te[e.key]??``)&&w(`cloud`,{tts:{[A]:{[e.key]:n}}})}},`${A}:${e.key}:${te[e.key]??``}`)]},e.key)),(0,i.jsx)(Yu,{error:p(`cloud`),reveal:!0}),(0,i.jsxs)(`label`,{className:`aha-label`,children:[t(`field_apiKey`),` · `,(0,i.jsx)(`span`,{className:n.keys?.[A]?`aha-ok`:`aha-hint`,children:n.keys?.[A]?t(`keySaved`):t(`keyMissing`)}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`input`,{className:`aha-input`,style:{flex:1},type:`password`,autoComplete:`off`,spellCheck:!1,value:g,onChange:e=>_(e.currentTarget.value)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,disabled:!g.trim(),onClick:()=>S(`key`,async()=>{await e.call(`settings/set-key`,{provider:A,key:g.trim()}),_(``),await a()}),children:t(`saveKey`)}),n.keys?.[A]?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>S(`key`,async()=>{await e.call(`settings/clear-key`,{provider:A}),await a()}),children:t(`clearKey`)}):null]})]}),(0,i.jsx)(Yu,{error:p(`key`),reveal:!0})]}):null,(0,i.jsx)(`div`,{children:(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,disabled:b||n.voiceEngine===`off`,onClick:ne,children:[b?(0,i.jsx)(`span`,{className:`aha-spinner`}):`🔊`,` `,t(`testVoice`)]})}),(0,i.jsx)(Yu,{error:p(`test`),reveal:!0})]}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:t(`boardTheme`)}),(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:6},children:[[`auto`,`themeAuto`],[`light`,`themeLight`],[`dark`,`themeDark`]].map(([e,r])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":(n.boardTheme??`auto`)===e,onClick:()=>w(`board`,{boardTheme:e}),children:t(r)},e))}),(0,i.jsx)(`b`,{children:t(`boardFont`)}),(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:6},children:[[`hand`,`fontHand`],[`standard`,`fontStandard`]].map(([e,r])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":(n.boardFont??`hand`)===e,onClick:()=>w(`board`,{boardFont:e}),style:e===`hand`?{fontFamily:Rp}:void 0,children:t(r)},e))}),(0,i.jsx)(`b`,{children:t(`boardView`)}),(0,i.jsx)(`div`,{className:`aha-row`,style:{gap:6},children:[[`canvas`,`viewCanvas`],[`pages`,`viewPages`]].map(([e,r])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-chip`,"data-active":(n.boardView??`canvas`)===e,onClick:()=>w(`board`,{boardView:e}),children:t(r)},e))}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`boardViewHint`)}),(0,i.jsx)(Yu,{error:p(`board`),reveal:!0})]}),(0,i.jsx)(Dm,{}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`privacyNote`)})]}):(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Hu,{label:t(`loading`)})})}function Dm(){let{api:e,t}=v(),[n,a]=(0,r.useState)(null),[o,s]=(0,r.useState)(!0),[c,l]=(0,r.useState)(!1),[u,d]=(0,r.useState)(!1),[f,p]=(0,r.useState)(null),[m,h]=(0,r.useState)(!1),g=t=>{s(!0),l(!1),e.call(`plugin/version`,{force:t}).then(a).catch(()=>l(!0)).finally(()=>s(!1))};(0,r.useEffect)(()=>{g(!1)},[]);async function _(){d(!0),h(!1);try{p(await e.call(`plugin/update`))}catch{h(!0)}finally{d(!1)}}let y=n?.install?.kind;return(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`b`,{children:t(`versionTitle`)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,disabled:o||u,onClick:()=>g(!0),children:t(o?`versionChecking`:`versionCheck`)})]}),c?(0,i.jsx)(`p`,{className:`aha-error`,children:t(`versionFailed`)}):null,n?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`span`,{children:t(`versionCurrent`)}),(0,i.jsxs)(`span`,{className:`aha-hint`,children:[`v`,n.current]})]}),(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`span`,{children:t(`versionLatest`)}),(0,i.jsx)(`span`,{className:`aha-hint`,children:n.latest?`v${n.latest}`:`—`})]}),f?null:(0,i.jsx)(`p`,{className:n.latestUnknown?`aha-error`:`aha-hint`,children:n.latestUnknown?t(`versionFailed`):n.updateAvailable?t(`versionAvailable`,{version:n.latest}):t(`versionUpToDate`)}),!f&&n.updateAvailable&&y===`npm`?(0,i.jsx)(`div`,{children:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:u,onClick:_,children:t(u?`versionUpdating`:`versionUpdate`)})}):null,y===`link`?(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`versionLinked`)}):null,n.updateAvailable&&y===`unknown`?(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`versionManual`,{version:n.latest})}):null]}):null,m?(0,i.jsx)(`p`,{className:`aha-error`,children:t(`versionUpdateFailed`)}):null,f?.pending?(0,i.jsx)(`p`,{className:`aha-hint`,children:typeof f.availableAt==`number`?t(`versionPendingUntil`,{version:f.version,time:new Date(f.availableAt).toLocaleString()}):t(`versionPending`,{version:f.version})}):null,f&&!f.pending?(0,i.jsx)(`div`,{className:`aha-feedback`,"data-ok":`true`,children:t(`versionUpdated`,{version:f.version})}):null]})}function Om({draftTopic:e,draftUrl:t,token:n}){let{api:a,t:o}=v(),s=y(()=>a.call(`items/list`,{kind:`shorts`}),[]),[c,l]=(0,r.useState)(e??``),[u,d]=(0,r.useState)(t??``),[f,p]=(0,r.useState)(null),[m,h]=(0,r.useState)(null),g=um(),_=x(n);async function b(){if(!c.trim()&&!u.trim())return;h(null);let e=E(`sht`);try{let{job:t}=await a.call(`short/make`,{topic:c,url:u,newId:e});p({id:e,title:c||u,steps:[],stream:t,key:`${e}:new`})}catch(e){h(e)}}(0,r.useEffect)(()=>{_&&(e||t)&&b()},[]);async function S(e){try{let{item:t}=await a.call(`items/get`,{kind:`shorts`,id:e});p({id:t.id,title:t.title,steps:t.board.steps,stream:null,language:t.language,key:`${t.id}:open`,opened:Date.now()})}catch(e){h(e)}}return(0,i.jsx)(`div`,{className:`aha-page`,"data-wide":`true`,children:(0,i.jsxs)(`div`,{className:`aha-split`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{minHeight:0},children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:o(`shortsTitle`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:o(`shortsHint`)})]}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`input`,{className:`aha-input`,style:{flex:2,minWidth:220},value:c,placeholder:o(`topicPlaceholder`),onChange:e=>l(e.currentTarget.value)}),(0,i.jsx)(`input`,{className:`aha-input`,style:{flex:1,minWidth:180},value:u,placeholder:o(`urlPlaceholder`),onChange:e=>d(e.currentTarget.value)}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:!c.trim()&&!u.trim(),onClick:b,children:o(`makeShort`)})]}),(0,i.jsx)(Yu,{error:m}),f?(0,i.jsx)(af,{scope:{kind:`short`,id:f.id},title:f.title,steps:f.steps,stream:f.stream,language:f.language,recordChecks:!1,reveal:f.opened,onStreamDone:e=>{p(t=>({...t,steps:e?.item?.board?.steps??t.steps,title:e?.item?.title??t.title,stream:null})),s.reload()},header:({steps:e})=>(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Ip,{steps:e,title:f.title,kind:null}),g.exporting?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Hu,{label:o(`exporting`,{percent:g.exporting.percent})}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:g.cancel,children:o(`cancel`)})]}):(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,disabled:!f.steps.length,onClick:()=>g.start({steps:f.steps,title:f.title}),children:o(`exportVideo`)})]})},f.key):null,f&&!g.cloud?(0,i.jsx)(`p`,{className:`aha-hint`,children:o(`exportNeedsCloud`)}):null]}),(0,i.jsxs)(`aside`,{className:`aha-col`,style:{minHeight:0,overflow:`auto`},children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:o(`history`)}),s.loading&&!s.value?(0,i.jsx)(Hu,{}):(s.value??[]).length?s.value.map(e=>(0,i.jsxs)(`div`,{className:`aha-option`,style:{cursor:`pointer`},onClick:()=>S(e.id),children:[(0,i.jsx)(`b`,{children:e.title}),(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`small`,{children:new Date(e.createdAt).toLocaleString()}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:async t=>{t.stopPropagation(),await a.call(`items/remove`,{kind:`shorts`,id:e.id}),s.reload()},children:o(`delete`)})]})]},e.id)):(0,i.jsx)(Xu,{children:o(`empty`)})]})]})})}let km=[[`sheet`,`makeSheet`,`studio/sheet`],[`cards`,`makeCards`,`studio/cards`],[`notes`,`makeNotes`,`studio/notes`],[`quiz`,`makeQuiz`,`studio/quiz`]];function Am(){let{api:e,t,navigate:n}=v(),a=y(()=>e.call(`items/list`,{kind:`sheets`}),[]),o=y(()=>e.call(`items/list`,{kind:`decks`}),[]),[s,c]=(0,r.useState)([]),[l,u]=(0,r.useState)(!1),[d,f]=(0,r.useState)(``),[p,m]=(0,r.useState)(null),[h,g]=(0,r.useState)(null),_=b();async function x(e,t){if(!s.length){u(!0);return}m(e),g(null);try{S((await _.run(t,{materialIds:s,focus:d})).item)}catch(e){e?.code!==`cancelled`&&g(e)}finally{m(null)}}function S(e){e.kind===`cheatsheet`?n(`sheet`,{sheetId:e.id}):e.kind===`notes`?n(`item`,{kind:`notes`,id:e.id}):e.kind===`cards`?n(`cards`,{deckId:e.id}):n(`item`,{kind:`quiz`,id:e.id})}async function C(t,n){await e.call(`items/remove`,{kind:t,id:n}),t===`sheets`?a.reload():o.reload()}let w=(e,n,r)=>(0,i.jsxs)(`section`,{className:`aha-col`,children:[(0,i.jsx)(`h3`,{className:`aha-cardTitle`,children:e}),n.loading&&!n.value?(0,i.jsx)(Hu,{}):(n.value??[]).length?(0,i.jsx)(`div`,{className:`aha-grid`,children:n.value.map(e=>(0,i.jsxs)(`div`,{className:`aha-card`,"data-click":`true`,onClick:()=>S(e),children:[(0,i.jsx)(`span`,{className:`aha-tag`,children:e.kind===`cheatsheet`?t(`sheets`):e.kind===`notes`?t(`notes`):e.kind===`cards`?t(`decks`):t(`quizzes`)}),(0,i.jsx)(`b`,{children:e.title}),(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:new Date(e.updatedAt).toLocaleDateString()}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:t=>{t.stopPropagation(),C(r,e.id)},children:t(`delete`)})]})]},e.id))}):(0,i.jsx)(Xu,{children:t(`empty`)})]});return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:t(`studioTitle`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`studioHint`)})]}),(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>u(!0),children:s.length?t(`attached`,{count:s.length}):t(`pickMaterials`)}),(0,i.jsx)(`input`,{className:`aha-input`,style:{flex:1,minWidth:220},value:d,placeholder:t(`focusPlaceholder`),onChange:e=>f(e.currentTarget.value)})]}),(0,i.jsx)(`div`,{className:`aha-row`,children:km.map(([e,n,r])=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,disabled:!!p,onClick:()=>x(e,r),children:[p===e?(0,i.jsx)(`span`,{className:`aha-spinner`}):null,t(n)]},e))}),p?(0,i.jsx)(Gu,{kind:p,job:_}):null,(0,i.jsx)(Yu,{error:h})]}),w(`${t(`sheets`)} · ${t(`notes`)}`,a,`sheets`),w(`${t(`decks`)} · ${t(`quizzes`)}`,o,`decks`),l?(0,i.jsx)(ed,{selected:s,onChange:c,onClose:()=>u(!1)}):null]})}Object.freeze([`again`,`hard`,`good`,`easy`]),Object.freeze({again:1,hard:3,good:4,easy:5});function jm(e,t=Date.now()){return Date.parse(e?.dueAt??0)<=t}function Mm(e,t=Date.now()){return(e||[]).filter(e=>jm(e,t)).sort((e,t)=>Date.parse(e.dueAt)-Date.parse(t.dueAt))}function Nm({courseId:e,lessonId:t,unitId:n,review:a,mistakes:o,deckId:s,conceptId:c}){let{api:l,t:d,navigate:f}=v(),p=b(),[m,h]=(0,r.useState)(null),[g,_]=(0,r.useState)(null),[y,x]=(0,r.useState)(0),[S,C]=(0,r.useState)([]),[w,T]=(0,r.useState)(0),[E,D]=(0,r.useState)(null),[O,k]=(0,r.useState)({}),[A,ee]=(0,r.useState)(null),[te,ne]=(0,r.useState)({}),[j,re]=(0,r.useState)([]),ie=(0,r.useRef)(new Map),[ae,oe]=(0,r.useState)(null),se=(0,r.useRef)(new Map),ce=(0,r.useRef)(0),le=(0,r.useRef)(!1),M=(0,r.useRef)(0),ue=(0,r.useRef)({index:0,results:[]});ue.current={index:y,results:S},(0,r.useEffect)(()=>{let r=!0;return(async()=>{let i=!!(n||c)&&le.current;le.current=!1;try{if(e&&!s&&l.call(`course/get`,{courseId:e}).then(e=>{r&&D(e)}).catch(()=>void 0),a||o){let t=await l.call(`review/session`,{...e?{courseId:e}:{},...o?{mistakes:!0}:{}});r&&h({title:d(o?`mistakeRound`:`review`),items:t.items.map(e=>({...e.item,context:e})),language:void 0,more:t.more??0});return}if(s){let{item:e}=await l.call(`items/get`,{kind:`decks`,id:s});r&&h({title:e.title,items:e.items??[],language:e.language,missing:e.missing});return}if(c){let t=await l.call(`concept/drill`,{courseId:e,conceptId:c,...i?{fresh:!0}:{}}),n=(t.job?await p.run(null,null,{existing:t.job}):t)?.drill;if(!n?.items?.length)throw new u(`bad-output`,`No practice items came back`);r&&h({title:d(`drillTitle`,{concept:n.conceptName??``}),items:n.items,language:n.language,lessonId:n.lessonId});return}let f=n?`unit/quiz`:`lesson/practice`,m=n?{courseId:e,unitId:n,...i?{force:!0}:{}}:{courseId:e,lessonId:t},g=await l.call(f,m),_=g.job?await p.run(null,null,{existing:g.job}):g,v=(_.quiz??_.sets?.[t]??_.practice)?.items??[];if(!v.length&&!n)throw new u(`bad-output`,`No practice items came back`);let y=t?await l.call(`lesson/get`,{courseId:e,lessonId:t}):null;r&&h({title:y?.lesson.title??d(`unitQuiz`),items:v,language:y?.language})}catch(e){i&&(le.current=!0),r&&_(e)}})(),()=>{r=!1}},[e,t,n,a,o,s,c,w]);let de=m?.items[y],fe=r=>{let i=y;C(e=>[...e,{...r,index:i}]);let a=de?.context?.courseId??e;!a||s||ie.current.set(i,l.call(`lesson/record`,{courseId:a,lessonId:de?.context?.lessonId??t??m?.lessonId,conceptIds:de?.conceptIds??[],evidence:{kind:n?`quiz`:`practice`,score:r.score,correct:r.correct===!0,confidence:r.confidence,hintsUsed:r.hintsUsed,timeMs:r.timeMs,expectedMs:6e4,errorTag:r.errorTag},source:fd({courseId:e,lessonId:t,unitId:n,conceptId:c},de),response:r.given??r.response??``,sig:fn(de)}).then(e=>(e?.mastery&&k(t=>({...t,...e.mastery})),e?.recommendation&&ee(e.recommendation),e?.evidenceId??null)).catch(()=>null))},pe=(0,r.useMemo)(()=>mf(S),[S]);function me(e,t){M.current+=1;let n=M.current;re(r=>[...r.slice(-2),{key:n,text:e,retry:t}])}let he=e=>re(t=>t.filter(t=>t.key!==e));async function ge(r,i){let a=m?.items[r],o=ue.current.results.find(e=>e.index===r),u=fd({courseId:e,lessonId:t,unitId:n,deckId:s,conceptId:c},a);if(!o||!u)return;let f=ce.current;ne(e=>({...e,[r]:{...e[r],status:`checking`,note:i,error:null}}));try{let e=await(ie.current.get(r)??null),t=await l.run(`item/challenge`,{source:u,response:o.given??o.response??``,shown:bd(o),...e?{evidenceId:e}:{},note:i,sig:fn(te[r]?.item??a)});if(ce.current!==f){t?.item&&h(e=>e&&{...e,items:e.items.map((e,n)=>n===r&&fn(e)===fn(a)?Pm(t.item,e):e)});return}ne(e=>({...e,[r]:xd(e[r],t,ue.current.results.find(e=>e.index===r))})),t?.result&&C(e=>Sd(e,r,t.result)),t?.mastery&&k(e=>({...e,...t.mastery})),t?.recommendation&&ee(t.recommendation),ue.current.index!==r&&me(Cd(d,{index:r,verdict:t?.verdict,regraded:!!t?.result,earlier:t?.earlier??0}))}catch(e){if(ce.current!==f)return;ne(t=>({...t,[r]:{...t[r],status:`failed`,note:i,error:e}})),ue.current.index!==r&&me(Cd(d,{index:r,message:Ju(d,e)}),()=>ge(r,i))}}function _e(){ce.current+=1,h(e=>({...e,items:e.items.map((e,t)=>te[t]?.item?Pm(te[t].item,e):e)})),ne({}),re([]),oe(null),se.current=new Map,ie.current=new Map,x(0),C([]),ee(null)}function ve(){_e(),h(null),k({}),T(e=>e+1)}function ye(){_e(),h(null),k({}),le.current=!0,T(e=>e+1)}if(g)return(0,i.jsxs)(`div`,{className:`aha-page`,children:[(0,i.jsx)(Yu,{error:g}),(0,i.jsx)(`div`,{children:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>{_(null),T(e=>e+1)},children:d(`retry`)})})]});if(!m){let e=(n||c)&&p.progress?.label===`writing`?d(`quizWriting`,{count:p.progress.done}):null;return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Wu,{progress:p.progress,label:d(c?`makingDrill`:n?`makingQuiz`:`makingPractice`),detail:e,onCancel:p.running?p.cancel:void 0})})}if(!m.items.length)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Xu,{children:d(a?`nothingToReview`:o?`noMistakesDue`:`empty`)})});let be=y>=m.items.length,xe={courseId:e,lessonId:t,unitId:n,deckId:s,conceptId:c},Se=e=>te[e]?.item?Pm(te[e].item,m.items[e]):m.items[e],Ce=ae===null?null:yd(xe,Se(ae),S.find(e=>e.index===ae),{lessonId:m.lessonId});return(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:760},children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:m.title}),(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:6},children:[!be&&pe.streak>=2?(0,i.jsx)(`span`,{className:`aha-tag aha-streak`,children:d(`streakCount`,{count:pe.streak})}):null,(0,i.jsxs)(`span`,{className:`aha-tag`,children:[Math.min(y+1,m.items.length),`/`,m.items.length]})]})]}),y===0?(0,i.jsx)(Rm,{parts:m.missing}):null,j.map(e=>(0,i.jsxs)(`div`,{className:`aha-itemNotice`,role:`status`,children:[(0,i.jsxs)(`span`,{className:`aha-itemNoticeText`,children:[`🧐 `,e.text]}),e.retry?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>{he(e.key),e.retry()},children:d(`retry`)}):null,(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,"aria-label":d(`close`),onClick:()=>he(e.key),children:`×`})]},e.key)),de?.context?(0,i.jsx)(`p`,{className:`aha-hint`,children:[de.context.courseTitle,de.context.conceptName,de.context.mistake?d(`mistakeContext`,{count:de.context.mistake.wrong}):``].filter(Boolean).join(` · `)}):null,be?(0,i.jsx)(Fm,{set:m,stats:pe,context:E,after:O,recommendation:A,courseId:e,lessonId:t,unitId:n,conceptId:c,onRetry:o?void 0:_e,onNewSet:(n||c)&&!a&&!s?ye:void 0,onNextRound:o&&m.more?ve:void 0,backTab:o?`practice`:void 0}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`div`,{className:`aha-card`,children:(0,i.jsx)(Jd,{item:de,language:m.language,onResult:fe,onContinue:()=>x(e=>e+1),continueLabel:y+1<m.items.length?d(`continue`):d(`confirm`),keyboard:ae===null,onExplain:fd(xe,de)?()=>oe(y):void 0,onChallenge:fd(xe,de)?e=>ge(y,e):void 0,check:te[y]??null},`${y}`)}),(0,i.jsx)(`p`,{className:`aha-hint`,children:d(`keysHint`)})]}),Ce?(0,i.jsx)(cf,{request:Ce.request,record:Ce.record,title:Se(ae).prompt.slice(0,80),language:m.language,explained:se.current.get(ae)??null,onStarted:e=>se.current.set(ae,e),onClose:()=>oe(null)},`${ce.current}:${ae}`):null]})}function Pm(e,t){return t.context?{...e,context:t.context}:e}function Fm({set:e,stats:t,context:n,after:a,recommendation:o,courseId:s,lessonId:c,unitId:l,conceptId:u,onRetry:d,onNewSet:f,onNextRound:p,backTab:m}){let{t:h,navigate:g}=v(),_=n?.course,y=n?.progress,b=(0,r.useMemo)(()=>{let t=_?Ye(_):new Map;return[...new Set(e.items.flatMap(e=>e.conceptIds??[]))].filter(e=>a[e]!==void 0).map(n=>({id:n,inCourse:t.has(n),name:t.get(n)?.name??e.items.find(e=>e.context?.conceptId===n)?.context?.conceptName??n,before:y?df(y.concepts?.[n]):null,after:ff(a[n]),percent:a[n]}))},[e,_,y,a]),x=(0,r.useMemo)(()=>{if(!_)return null;let t=Ge(_),n=c??(u?e.lessonId:null),r=n?t.find(e=>e.lesson.id===n):null,i=u?null:r?Qe(_,n)?.lesson.id:l?t.find((e,n)=>n>t.findLastIndex(e=>e.unit.id===l))?.lesson.id:null;return hf(o,{lessonId:n,unitId:r?.unit.id??null,nextLessonId:i??N(_,y)?.lesson.id})},[_,y,o,c,l,u,e]),S={relearn:()=>g(`lesson`,{courseId:s,lessonId:x.lessonId}),review:()=>g(`practice`,{courseId:s,review:!0}),quiz:()=>g(`practice`,{courseId:s,unitId:x.unitId}),next:()=>g(`lesson`,{courseId:s,lessonId:x.lessonId}),course:()=>g(`course`,{courseId:s,...m?{tab:m}:{}})},C=x?h({relearn:`nextRelearn`,review:`nextReview`,quiz:`nextQuiz`,next:`nextLessonStep`,course:`nextCourse`}[x.kind]):``,w=x?h({relearn:`relearnLesson`,review:`reviewCourse`,quiz:`unitQuiz`,next:`nextLesson`,course:`backToCourse`}[x.kind]):``;return(0,i.jsxs)(`div`,{className:`aha-card aha-summary`,children:[(0,i.jsxs)(`div`,{className:`aha-stars`,role:`img`,"aria-label":h(`starsLabel`,{count:t.stars}),children:[`★`.repeat(t.stars),(0,i.jsx)(`span`,{children:`★`.repeat(3-t.stars)})]}),(0,i.jsx)(`b`,{children:h(`practiceDone`,{correct:t.correct,total:e.items.length})}),(0,i.jsxs)(`div`,{className:`aha-row aha-summaryStats`,children:[(0,i.jsxs)(`span`,{children:[(0,i.jsxs)(`b`,{children:[Math.round(t.accuracy*100),`%`]}),h(`accuracy`)]}),(0,i.jsxs)(`span`,{children:[(0,i.jsx)(`b`,{children:t.bestStreak}),h(`bestStreak`)]})]}),b.length?(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:4},children:[(0,i.jsx)(`span`,{className:`aha-hint`,children:h(`masteryChange`)}),b.map(e=>(0,i.jsxs)(`div`,{className:`aha-row aha-conceptMove`,children:[(0,i.jsx)(`span`,{style:{flex:1,minWidth:120},children:e.name}),e.before?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`span`,{className:`aha-level`,"data-level":e.before,children:h(pf[e.before])}),(0,i.jsx)(`span`,{"aria-hidden":`true`,children:`→`})]}):null,(0,i.jsx)(`span`,{className:`aha-level`,"data-level":e.after,children:h(pf[e.after])}),(0,i.jsxs)(`span`,{className:`aha-hint`,children:[e.percent,`%`]}),s&&e.inCourse&&e.id!==u?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,"data-kind":`ghost`,onClick:()=>g(`practice`,{courseId:s,conceptId:e.id}),children:h(`drillThis`)}):null]},e.id))]}):null,x&&s?(0,i.jsx)(`p`,{children:C}):null,(0,i.jsxs)(`div`,{className:`aha-row`,children:[x&&s?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,onClick:S[x.kind],children:w}):null,p?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:p,children:h(`mistakeRoundMore`,{count:e.more})}):null,d?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:d,children:h(`retry`)}):null,f?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:f,children:h(u?`drillAgain`:`newQuizSet`)}):null,s&&x?.kind!==`course`?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:S.course,children:h(`backToCourse`)}):null]})]})}function Im({courseId:e,unitId:t,deckId:n}){let{api:a,t:o}=v(),s=b(),[c,l]=(0,r.useState)(null),[u,d]=(0,r.useState)(null),[f,p]=(0,r.useState)(!1),[m,h]=(0,r.useState)(null);(0,r.useEffect)(()=>{let r=!0;return(async()=>{try{let i;if(n){let{item:e}=await a.call(`items/get`,{kind:`decks`,id:n});i={title:o(`cardsTitle`),cards:e.cards,order:zm(e).slice(0,40),total:e.cards.length,missing:e.missing}}else if(t){let n=await a.call(`unit/cards`,{courseId:e,unitId:t}),{deck:r,unit:c}=n.job?await s.run(null,null,{existing:n.job}):n;i={title:`${o(`unitN`,{n:c.n})} · ${c.title}`,kicker:o(`unitCards`),cards:r.cards.map(e=>({...e,unitId:t})),order:zm({...r,unitId:t}),total:r.cards.length}}else{let{cards:t}=await a.call(`course/card-session`,{courseId:e});i={title:o(`cardReview`),cards:t,order:t.map(Lm)}}if(!r)return;l({...i,cards:i.cards.map(e=>({...e,key:Lm(e)}))}),h(i.order)}catch(e){r&&d(e)}})(),()=>{r=!1}},[e,t,n]);let g=(0,r.useMemo)(()=>c?.cards.find(e=>e.key===m?.[0]),[c,m]);async function _(t){if(g){p(!1),h(e=>{let n=e.slice(1);return t===`again`?[...n,g.key]:n});try{n?await a.call(`items/card-review`,{id:n,cardId:g.id,grade:t}):await a.call(`course/card-review`,{courseId:e,...g.unitId?{unitId:g.unitId}:{},cardId:g.id,grade:t})}catch{}}}if(u)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Yu,{error:u})});if(!c||!m){let e=s.progress?.label===`writing`?o(`cardsWriting`,{count:s.progress.done}):null;return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Wu,{progress:s.progress,label:o(t?`makingUnitCards`:`makingCards`),detail:e,onCancel:s.running?s.cancel:void 0})})}let y=g?.unit?`${o(`unitN`,{n:g.unit.n})} · ${g.unit.title}`:``;return(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:720},children:[(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:2,minWidth:0},children:[c.kicker?(0,i.jsx)(`span`,{className:`aha-hint`,children:c.kicker}):null,(0,i.jsx)(`h2`,{className:`aha-title`,children:c.title})]}),(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:6},children:[(0,i.jsx)(`span`,{className:`aha-tag`,children:o(`cardsDue`,{count:m.length})}),c.total?(0,i.jsx)(`span`,{className:`aha-tag`,children:o(`cardsTotal`,{count:c.total})}):null]})]}),(0,i.jsx)(Rm,{parts:c.missing}),g?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`div`,{className:`aha-flash`,"data-flipped":f,onClick:()=>p(e=>!e),role:`button`,tabIndex:0,onKeyDown:e=>{(e.key===` `||e.key===`Enter`)&&p(e=>!e)},children:(0,i.jsxs)(`div`,{className:`aha-flashInner`,children:[(0,i.jsx)(`div`,{className:`aha-flashFace`,children:(0,i.jsx)(wd,{text:g.front})}),(0,i.jsx)(`div`,{className:`aha-flashFace aha-flashBack`,children:(0,i.jsx)(wd,{text:g.back})})]})}),(0,i.jsx)(`p`,{className:`aha-hint`,style:{textAlign:`center`},children:[y,g.tag,o(`flip`)].filter(Boolean).join(` · `)}),f?(0,i.jsx)(`div`,{className:`aha-row`,style:{justifyContent:`center`},children:[[`again`,`again`],[`hard`,`hard`],[`good`,`good`],[`easy`,`easy`]].map(([e,t])=>(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":e===`good`?`primary`:void 0,onClick:()=>_(e),children:o(t)},e))}):null]}):(0,i.jsx)(Xu,{children:c.cards.length?o(`cardsDone`):o(`cardReviewEmpty`)})]})}let Lm=e=>`${e.unitId??``}:${e.id}`;function Rm({parts:e}){let{t}=v();return e?.length?(0,i.jsx)(`p`,{className:`aha-hint`,children:t(`partsMissing`,{count:e.length,parts:e.join(`、`)})}):null}function zm(e){let t=e.unitId??null,n=e=>Lm({unitId:t,id:e}),r=Mm(Object.values(e.srs??{}),Date.now()).map(e=>e.id).filter(t=>e.cards.some(e=>e.id===t)),i=e.cards.filter(t=>!e.srs?.[t.id]).map(e=>e.id);return[...r,...i].map(n)}function Bm({courseId:e,unitId:t,sheetId:n}){let{api:a,t:o,toast:s}=v(),c=b(),[l,u]=(0,r.useState)(null),[d,f]=(0,r.useState)(null),[p,m]=(0,r.useState)(null),h=async r=>{f(null);try{let i;if(n)i=(await a.call(`items/get`,{kind:`sheets`,id:n})).item.sheet;else{let n=await a.call(`unit/sheet`,{courseId:e,unitId:t,force:r});i=n.job?(await c.run(null,null,{existing:n.job})).sheet:n.sheet}u(i),m(i.layout)}catch(e){f(e)}};(0,r.useEffect)(()=>{h(!1)},[e,t,n]);let g=r=>{let i={...p,...r};m(i),(n?a.call(`items/sheet-layout`,{id:n,layout:i}):a.call(`unit/sheet-layout`,{courseId:e,unitId:t,layout:i})).catch(e=>s(Ju(o,e)))};if(d)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Yu,{error:d})});if(!l||!p)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Wu,{progress:c.progress,label:o(`makingSheet`),onCancel:c.running?c.cancel:void 0})});let _=p.order.map(e=>l.sections.find(t=>t.id===e)).filter(Boolean),y=new Set(p.hidden??[]);return(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:1200},children:[(0,i.jsxs)(`div`,{className:`aha-spread aha-noprint`,children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:l.title||o(`sheetTitle`)}),(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsxs)(`label`,{className:`aha-row`,style:{gap:6},children:[o(`columns`),(0,i.jsx)(`select`,{className:`aha-select`,style:{width:`auto`},value:p.columns,onChange:e=>g({columns:Number(e.currentTarget.value)}),children:[1,2,3,4].map(e=>(0,i.jsx)(`option`,{value:e,children:e},e))})]}),(0,i.jsxs)(`label`,{className:`aha-row`,style:{gap:6},children:[o(`fontSize`),(0,i.jsx)(`select`,{className:`aha-select`,style:{width:`auto`},value:p.fontSize,onChange:e=>g({fontSize:Number(e.currentTarget.value)}),children:[9,10,11,12,13,14,16].map(e=>(0,i.jsx)(`option`,{value:e,children:e},e))})]}),(0,i.jsxs)(`label`,{className:`aha-row`,style:{gap:6},children:[(0,i.jsx)(`input`,{type:`checkbox`,checked:p.highlight,onChange:e=>g({highlight:e.currentTarget.checked})}),o(`highlight`)]}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,onClick:()=>window.print(),children:o(`print`)}),n?null:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,onClick:()=>{u(null),h(!0)},children:o(`regenerate`)})]})]}),(0,i.jsx)(`div`,{className:`aha-row aha-noprint`,style:{gap:6},children:_.map((e,t)=>(0,i.jsxs)(`span`,{className:`aha-chip`,"data-active":!y.has(e.id),children:[(0,i.jsx)(`span`,{onClick:()=>g({hidden:y.has(e.id)?[...y].filter(t=>t!==e.id):[...y,e.id]}),children:e.title}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`ghost`,"data-size":`sm`,onClick:()=>{let t=[...p.order],n=t.indexOf(e.id);n>0&&([t[n-1],t[n]]=[t[n],t[n-1]]),g({order:t})},disabled:t===0,children:`↑`})]},e.id))}),(0,i.jsx)(`div`,{className:`aha-printable`,children:(0,i.jsx)(`div`,{className:`aha-sheet`,"data-highlight":p.highlight,style:{columnCount:p.columns,"--sheet-size":`${p.fontSize}px`},children:_.filter(e=>!y.has(e.id)).map(e=>(0,i.jsxs)(`div`,{className:`aha-sheetSection`,children:[(0,i.jsx)(`h4`,{children:e.title}),e.items.map((e,t)=>(0,i.jsxs)(`div`,{className:`aha-sheetItem`,"data-kind":e.kind,children:[e.title?(0,i.jsxs)(`b`,{children:[e.title,`:`]}):null,e.text?(0,i.jsx)(wd,{text:e.text,compact:!0}):null,e.tex?(0,i.jsx)(Ic,{tex:e.tex}):null,(0,i.jsx)(Vm,{cite:e.cite})]},t)),e.related?.length?(0,i.jsxs)(`div`,{className:`aha-cite`,children:[`↔ `,e.related.join(` · `)]}):null]},e.id))})})]})}function Vm({cite:e}){let{t}=v();if(e?.verified!==!0)return null;let n=e.page?rd(t,{page:e.pdf,label:e.page}):null;return(0,i.jsxs)(`span`,{className:`aha-cite`,title:[e.quote?t(`citeQuote`,{quote:e.quote}):``,n?.pdf??``].filter(Boolean).join(`
773
+ `)||void 0,"data-quote":e.quote?`true`:void 0,children:[`(`,n?.text??`§ ${e.section}`,e.source?` · ${e.source}`:``,`)`]})}function Hm({pages:e,pdf:t}){let{t:n}=v(),[r,a]=String(e??``).split(`–`);if(!/\d/u.test(r??``))return null;let o=rd(n,{page:t?.[0]??r,end:a?t?.[1]??a:void 0,label:r,endLabel:a});return(0,i.jsxs)(`span`,{className:`aha-cite`,title:o.pdf,children:[`(`,o.text,`)`]})}function Um({kind:e,id:t,materialId:n}){let{api:a,t:o}=v(),s=b(),[c,l]=(0,r.useState)(null),[u,d]=(0,r.useState)(null),[f,p]=(0,r.useState)(0);if((0,r.useEffect)(()=>{let r=!0;return(async()=>{try{if(e===`digest`){let{material:e}=await a.call(`material/get`,{id:n}),t=f===0?e.digest:null;if(!t){let e=await a.call(`material/digest`,{id:n});t=(await s.run(null,null,{existing:e.job})).material.digest}r&&l({title:e.title,digest:t});return}let{item:i}=await a.call(`items/get`,{kind:`sheets`,id:t});r&&l({title:i.title,markdown:i.markdown})}catch(e){r&&d(e)}})(),()=>{r=!1}},[e,t,n,f]),e===`quiz`)return(0,i.jsx)(Nm,{deckId:t});if(u)return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Yu,{error:u})});if(!c){let e=s.progress;return(0,i.jsx)(`div`,{className:`aha-page`,children:(0,i.jsx)(Wu,{progress:e,label:e?.label===`reading`?o(`digestReading`,{done:e.done,total:Math.max(1,e.total-1)}):e?.label===`writing`?o(`digestWriting`):o(`generating`),onCancel:s.running?s.cancel:void 0})})}if(c.markdown!==void 0)return(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:860},children:[(0,i.jsx)(`h2`,{className:`aha-title`,children:c.title}),(0,i.jsx)(`div`,{className:`aha-card`,children:(0,i.jsx)(wd,{text:c.markdown})})]});let m=c.digest;return(0,i.jsxs)(`div`,{className:`aha-page`,style:{maxWidth:900},children:[(0,i.jsxs)(`h2`,{className:`aha-title`,children:[o(`digestTitle`),` · `,c.title]}),m.missing?.length?(0,i.jsxs)(`div`,{className:`aha-row`,children:[(0,i.jsx)(`span`,{className:`aha-error`,children:o(`digestMissing`,{count:m.missing.length,parts:m.missing.join(`, `)})}),(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>{l(null),p(e=>e+1)},children:o(`redigest`)})]}):null,(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:o(`overview`)}),(0,i.jsx)(wd,{text:m.overview})]}),m.structure?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:o(`structure`)}),m.structure.map((e,t)=>(0,i.jsxs)(`div`,{className:`aha-col`,style:{gap:2},children:[(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`b`,{children:e.heading}),(0,i.jsx)(Hm,{pages:e.pages,pdf:e.pdf})]}),(0,i.jsx)(`ul`,{style:{margin:0},children:e.points.map((e,t)=>(0,i.jsx)(`li`,{children:(0,i.jsx)(wd,{text:e,compact:!0})},t))})]},t))]}):null,m.keyIdeas?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:o(`keyIdeas`)}),(0,i.jsx)(`ul`,{style:{margin:0},children:m.keyIdeas.map((e,t)=>(0,i.jsx)(`li`,{children:(0,i.jsx)(wd,{text:e,compact:!0})},t))})]}):null,m.arguments?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:o(`arguments`)}),m.arguments.map((e,t)=>(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`b`,{children:e.claim}),(0,i.jsx)(Hm,{pages:e.page,pdf:e.pdf}),(0,i.jsx)(`p`,{className:`aha-hint`,children:e.support})]},t))]}):null,m.glossary?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:o(`glossary`)}),m.glossary.map((e,t)=>(0,i.jsxs)(`div`,{children:[(0,i.jsx)(`b`,{children:e.term}),`:`,e.meaning]},t))]}):null,m.questions?.length?(0,i.jsxs)(`section`,{className:`aha-card`,children:[(0,i.jsx)(`b`,{children:o(`discussion`)}),(0,i.jsx)(`ol`,{style:{margin:0},children:m.questions.map((e,t)=>(0,i.jsx)(`li`,{children:e},t))})]}):null]})}let Wm=[[`home`,`navHome`,`home`],[`courses`,`navCourses`,`courses`],[`assist`,`navAssist`,`assist`],[`materials`,`navMaterials`,`library`],[`studio`,`navStudio`,`studio`],[`shorts`,`navShorts`,`shorts`],[`plan`,`navPlan`,`plan`],[`profile`,`navProfile`,`profile`],[`settings`,`navSettings`,`settings`],[`about`,`navAbout`,`heart`]],Gm={home:rp,courses:kf,craft:Uf,handout:$f,course:Sf,lesson:dm,practice:Nm,cards:Im,sheet:Bm,item:Um,project:Cm,materials:hm,studio:Am,assist:sf,shorts:Om,plan:_m,profile:Sm,settings:Em,about:Xt},Km={craft:`courses`,course:`courses`,lesson:`courses`,handout:`courses`,practice:`courses`,project:`courses`,cards:`studio`,sheet:`studio`,item:`studio`},qm=e=>e.params?.courseId&&[`cards`,`sheet`].includes(e.screen)?`courses`:Km[e.screen]??e.screen;function Jm(e){let[t,n]=(0,r.useState)(0);return(0,i.jsx)(s,{onError:zt,fallback:({error:t})=>(0,i.jsx)(`div`,{className:`aha`,children:(0,i.jsx)(`main`,{className:`aha-main`,children:(0,i.jsx)(l,{t:e.t,error:t,onHome:()=>n(e=>e+1)})})}),children:(0,i.jsx)(Ym,{...e})},t)}function Ym({rpc:e,t,language:n,dsh:a}){let{route:o,setRoute:c,crashed:u}=Rt(),d=(0,r.useRef)([]),f=(0,r.useCallback)((e,t={},{replace:n=!1}={})=>{c(r=>(n||(d.current.push(r),d.current.length>40&&d.current.shift()),{screen:e,params:t}))},[c]),p=(0,r.useCallback)(()=>{let e=d.current.pop();c(e??{screen:`home`,params:{}})},[c]);(0,r.useEffect)(()=>{let e=e=>{let t=e.detail;t?.screen&&Gm[t.screen]&&f(t.screen,t.params??{})};return window.addEventListener(Pt,e),()=>window.removeEventListener(Pt,e)},[f]);let{value:m,toastText:h,textSize:g}=It({rpc:e,t,language:n,dsh:a,navigate:f,back:p}),v=Xm(Ut.includes(o.screen)),y=Gm[o.screen]??rp,b=qm(o),x=e=>{d.current=[],c({screen:e,params:{}})};return(0,i.jsx)(_.Provider,{value:m,children:(0,i.jsxs)(`div`,{className:`aha`,ref:v.root,"data-nav":v.state,"data-text":g,children:[(0,i.jsxs)(`nav`,{className:`aha-nav`,"aria-label":t(`appName`),onScroll:v.hideTip,children:[(0,i.jsxs)(`div`,{className:`aha-brand`,children:[(0,i.jsx)(Ht,{name:`logo`,size:24}),(0,i.jsxs)(`span`,{children:[t(`appName`),(0,i.jsx)(`small`,{children:t(`appTagline`)})]})]}),Wm.map(([e,n,r])=>(0,i.jsxs)(`button`,{type:`button`,className:`aha-navItem`,"data-active":b===e,onClick:()=>{v.close(),x(e)},"aria-label":t(n),...v.tipFor(t(n)),children:[(0,i.jsx)(Ht,{name:r,size:17}),(0,i.jsx)(`span`,{children:t(n)})]},e)),(0,i.jsxs)(`button`,{type:`button`,className:`aha-navItem aha-navFold`,"aria-expanded":v.state!==`folded`,"aria-label":v.state===`folded`?t(`navUnfold`):t(`navFold`),onClick:v.fold,...v.tipFor(t(`navUnfold`)),children:[(0,i.jsx)(Ht,{name:v.state===`folded`?`unfold`:`fold`,size:17}),(0,i.jsx)(`span`,{children:t(`navFold`)})]})]}),v.state===`peek`?(0,i.jsx)(`div`,{className:`aha-navShade`,onClick:v.close}):null,v.tip?(0,i.jsx)(`div`,{className:`aha-navTip`,role:`tooltip`,style:{top:v.tip.top,left:v.tip.left},children:v.tip.label}):null,(0,i.jsx)(`main`,{className:`aha-main`,children:(0,i.jsx)(s,{resetKey:o,onError:u,fallback:({error:e})=>(0,i.jsx)(l,{t,error:e,onRetry:()=>c(e=>({...e})),onHome:()=>x(`home`)}),children:(0,i.jsx)(y,{...o.params},`${o.screen}:${JSON.stringify(o.params)}`)})}),h?(0,i.jsx)(`div`,{className:`aha-toast`,role:`status`,children:h}):null]})})}function Xm(e){let[t,n]=C(`nav`,`open`),[i,a]=(0,r.useState)(!1),[o,s]=(0,r.useState)(!1),[c,l]=(0,r.useState)(null),u=(0,r.useRef)(null);(0,r.useLayoutEffect)(()=>{let e=u.current;if(!e)return;let t=()=>a(e.getBoundingClientRect().width<640);if(t(),typeof ResizeObserver!=`function`)return;let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]),(0,r.useEffect)(()=>s(!1),[i,e]);let d=Wt({choice:t,narrow:i,inClass:e,peek:o});(0,r.useEffect)(()=>{if(l(null),d!==`peek`)return;let e=e=>{e.key===`Escape`&&s(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[d]);let f=(e,t)=>{d===`folded`&&u.current&&l({label:t,...Kt(e.getBoundingClientRect(),u.current.getBoundingClientRect())})},p=()=>l(null);return{root:u,state:d,tip:c,hideTip:p,fold(){let r=Gt({choice:t,narrow:i,inClass:e,peek:o});n(r.choice),s(r.peek)},close:()=>s(!1),tipFor:e=>({onMouseEnter:t=>f(t.currentTarget,e),onMouseLeave:p,onFocus:t=>{t.currentTarget.matches(`:focus-visible`)&&f(t.currentTarget,e)},onBlur:p})}}function Zm({useTabInfo:e,rpc:t,t:n,language:r,dsh:a}){let{tab:o}=e(),c=o?.navigation?.params??null,{value:u,textSize:d}=It({rpc:t,t:n,language:r,dsh:a});return(0,i.jsx)(_.Provider,{value:u,children:(0,i.jsx)(`div`,{className:`aha aha-boardTab`,"data-text":d,style:{height:`100%`,overflow:`auto`,padding:`10px 12px`},children:c?.threadId?(0,i.jsx)(s,{fallback:({error:e,retry:t})=>(0,i.jsx)(l,{t:n,error:e,place:`tab`,onRetry:t}),children:(0,i.jsx)(Qm,{threadId:c.threadId,jobId:c.jobId})},`${c.threadId}:${o.navigation.revision??0}`):(0,i.jsx)(`p`,{className:`aha-hint`,children:n(`openBoard`)})})})}function Qm({threadId:e,jobId:t}){let{api:n,t:a}=v(),[o,s]=(0,r.useState)(null);return(0,r.useEffect)(()=>{let r=!0;return(async()=>{let i=t?await n.call(`job/get`,{id:t}).catch(()=>null):null;if(i&&i.status===`running`){r&&s({stream:i,steps:[],title:``});return}try{let{item:t}=await n.call(`items/get`,{kind:`assist`,id:e}),i=t.turns.at(-1);r&&s({stream:null,steps:i?.board?.steps??[],title:t.title,language:t.language,turn:t.turns.length-1})}catch(e){r&&s({error:e})}})(),()=>{r=!1}},[e,t]),o?o.error?(0,i.jsx)(`p`,{className:`aha-error`,children:Ju(a,o.error)}):(0,i.jsx)(af,{scope:{kind:`thread`,id:e,turn:o.turn??0},title:o.title||a(`boardSession`),steps:o.steps,stream:o.stream,language:o.language,recordChecks:!1,tour:!1,talkKey:!1}):(0,i.jsx)(Hu,{label:a(`loading`)})}function $m({rpc:e,t,language:n,dsh:r}){return It({rpc:e,t,language:n,dsh:r}).value}function eh(e){return e?.meta&&typeof e.meta==`object`?e.meta:null}function th(e){let t=$m(e);return(0,i.jsx)(_.Provider,{value:t,children:(0,i.jsx)(`div`,{className:`aha aha-card`,"data-text":`dsh`,style:{height:`auto`,display:`flex`,flexDirection:`column`,gap:8,margin:`6px 0`,padding:`10px 12px`},children:(0,i.jsx)(s,{fallback:({error:t,retry:n})=>(0,i.jsx)(l,{t:e.t,error:t,place:`card`,onRetry:n}),children:(0,i.jsx)(nh,{...e})})})})}function nh({toolName:e,phase:t,block:n,dsh:a,inputActions:o,t:s,callId:c}){let l=eh(n),u=n?.args?.text?.(`topic`)??n?.args?.text?.(`goal`)??``,d=t!==`result`,f=t===`result`&&n?.isError;return(0,r.useEffect)(()=>{if(e!==`aha_whiteboard`||t!==`result`||!l?.threadId)return;let r=typeof n?.time!=`number`||Date.now()-n.time<12e4,i=`aha-tutor:opened:${c}`;try{if(!r||window.sessionStorage.getItem(i))return;window.sessionStorage.setItem(i,`1`)}catch{if(!r)return}a.openBoardTab({threadId:l.threadId,jobId:l.jobId})},[e,t,l?.threadId]),f?(0,i.jsx)(`span`,{className:`aha-error`,children:s(`errorGeneric`,{message:(n.content??[]).map(e=>e.text??``).join(` `).slice(0,200)})}):e===`aha_whiteboard`?(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:8},children:[d?(0,i.jsx)(`span`,{className:`aha-spinner`}):`🧑‍🏫`,(0,i.jsx)(`b`,{children:s(`toolBoardTitle`)}),(0,i.jsx)(`span`,{className:`aha-hint`,children:l?.title??u})]}),l?.threadId?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>a.openBoardTab({threadId:l.threadId,jobId:l.jobId}),children:s(`openBoard`)}):null]}):e===`aha_quiz`?d||!l?.items?(0,i.jsxs)(`span`,{className:`aha-row`,children:[(0,i.jsx)(`span`,{className:`aha-spinner`}),s(`makingPractice`)]}):(0,i.jsx)(rh,{items:l.items,topic:l.topic,inputActions:o}):e===`aha_course`?(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:8},children:[d?(0,i.jsx)(`span`,{className:`aha-spinner`}):`🎓`,(0,i.jsx)(`b`,{children:s(`modeCourse`)}),(0,i.jsx)(`span`,{className:`aha-hint`,children:l?.goal??u})]}),l?.courseId?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>Bt(a,`craft`,{courseId:l.courseId}),children:s(`open`)}):null]}):e===`aha_cheatsheet`?(0,i.jsxs)(`div`,{className:`aha-spread`,children:[(0,i.jsxs)(`span`,{className:`aha-row`,style:{gap:8},children:[d?(0,i.jsx)(`span`,{className:`aha-spinner`}):`📄`,(0,i.jsx)(`b`,{children:s(`sheetTitle`)}),(0,i.jsx)(`span`,{className:`aha-hint`,children:l?.title??u})]}),l?.sheetId?(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-size":`sm`,onClick:()=>Bt(a,`sheet`,{sheetId:l.sheetId}),children:s(`open`)}):null]}):(0,i.jsxs)(`span`,{className:`aha-hint`,children:[d?(0,i.jsx)(`span`,{className:`aha-spinner`}):`🧠`,` `,s(`navProfile`)]})}function rh({items:e,topic:t,inputActions:n}){let{t:a,language:o}=v(),[s,c]=(0,r.useState)(0),[l,u]=(0,r.useState)([]),d=e[s],f=(0,r.useMemo)(()=>_d(a,{topic:t,items:e,results:l}),[a,t,e,l]);if(!d){let t=l.filter(e=>e.correct).length;return(0,i.jsxs)(`div`,{className:`aha-col`,children:[(0,i.jsx)(`b`,{children:a(`practiceDone`,{correct:t,total:e.length})}),n?.setDraft?(0,i.jsx)(`div`,{children:(0,i.jsx)(`button`,{type:`button`,className:`aha-btn`,"data-kind":`primary`,"data-size":`sm`,onClick:()=>n.setDraft(f),children:a(`submit`)})}):null]})}return(0,i.jsxs)(`div`,{className:`aha-col`,children:[(0,i.jsxs)(`span`,{className:`aha-hint`,children:[a(`checkTitle`),` · `,s+1,`/`,e.length]}),(0,i.jsx)(Jd,{item:d,language:o===`zh`?`zh-CN`:`en`,compact:!0,onResult:e=>u(t=>[...t,{...e,index:s}]),onContinue:()=>c(e=>e+1)},s)]})}let ih=`ahaTutor`,ah={appName:`开窍`,appTagline:`AI 私人老师`,navHome:`首页`,navCourses:`我的课程`,navMaterials:`资料库`,navStudio:`学习工具`,navAssist:`即时答疑`,navShorts:`讲解短片`,navPlan:`学习计划`,navProfile:`我的画像`,navSettings:`设置`,navAbout:`关于作者`,navFold:`收起`,navUnfold:`展开`,heroTitle:`今天想把什么弄懂?`,heroHint:`说出你想学的东西,或者丢一本教材进来。我会先了解你,再为你量身做一门课,在白板上一步步讲给你听。`,heroPlaceholder:`比如:三周内搞懂线性代数里的特征值|把这份讲义变成一门课|量子隧穿到底是怎么回事`,modeCourse:`定制一门课`,modeExplain:`讲个概念`,modeSolve:`陪我解题`,modeVisualize:`画出来看看`,modeDigest:`消化长文档`,modeShort:`两分钟短片`,attach:`添加资料`,attached:`已附 {count} 份资料`,start:`开始`,quickStart:`跳过提问,直接出课`,continueLearning:`继续学习`,todayPlan:`今天的安排`,noPlanToday:`今天没有安排,去建一门课或者休息一下吧。`,recentWork:`最近做的`,sampleCourses:`示例课程`,sampleHint:`不花 token 也能先体验白板课堂。`,importSample:`加入我的课程`,coursesTitle:`我的课程`,filterAll:`全部`,filterActive:`学习中`,filterDone:`已学完`,filterArchived:`已归档`,searchCourses:`搜索课程`,noCourses:`还没有课程。回到首页,告诉我你想学什么。`,importPack:`导入课程包`,lessonsCount:`{done}/{total} 讲`,minutesLeft:`还剩约 {minutes} 分钟`,statusIntake:`待回答问题`,statusBlueprint:`待确认蓝图`,statusReady:`可以学习`,nextUp:`下一讲:{title}`,craftQuestionsTitle:`先认识一下你`,craftQuestionsHint:`回答几个问题,课程会按你的情况来设计。拿不准的可以跳过。`,craftOther:`其他(自己写)`,craftPace:`学习节奏`,paceIntensive:`冲刺`,paceIntensiveHint:`约 6 周,抓重点`,paceBalanced:`稳步`,paceBalancedHint:`约 3 个月,基础 + 练习 + 项目`,paceRelaxed:`不设期限`,paceRelaxedHint:`慢慢来,挖得更深`,weeklyMinutes:`每周大约能学多久`,minutesUnit:`{minutes} 分钟`,deadline:`截止日期(可选)`,makeBlueprint:`生成课程蓝图`,thinkingQuestions:`正在想该问你什么…`,designingBlueprint:`正在设计课程蓝图…`,blueprintTitle:`课程蓝图`,blueprintHint:`这是为你设计的课程结构。可以直接改标题、删减或调整顺序,也可以用一句话让我改。`,reviseLabel:`用一句话修改`,revisePlaceholder:`比如:多加一些编程实战;第二单元讲浅一点;去掉第 3 讲`,revise:`修改`,revising:`正在修改…`,addLesson:`加一讲`,addLecture:`加一章`,addUnit:`加一个单元`,moveUp:`上移`,moveDown:`下移`,remove:`删除`,projects:`实战项目`,confirmCourse:`确认,生成整门课`,confirming:`正在准备练习和项目… {done}/{total}`,courseReady:`课程已就绪`,unitN:`第 {n} 单元`,lectureN:`第 {n} 章`,estMinutes:`{minutes} 分钟`,saveEdits:`保存修改`,saved:`已保存`,tabOutline:`大纲`,tabPractice:`练习、测验与闪卡`,tabSheets:`速查表`,tabProjects:`项目`,tabProgress:`进度`,learn:`学习`,practice:`练习`,review:`复习`,remedial:`巩固`,exportPack:`导出课程包`,exportWithProgress:`连同我的学习进度`,rename:`重命名`,archive:`归档`,unarchive:`取消归档`,deleteCourse:`删除课程`,deleteConfirm:`删除后无法恢复。确定删除「{title}」吗?`,cancel:`取消`,confirm:`确定`,close:`关闭`,back:`返回`,retry:`重试`,generate:`生成`,regenerate:`重新生成`,generating:`正在生成…`,open:`打开`,unitQuiz:`单元测验`,unitSheet:`单元速查表`,unitCards:`单元闪卡`,unitCardsDue:`单元闪卡 · {count}`,unitCardsDueTitle:`{count} 张到期`,mastery:`掌握度`,conceptMastery:`知识点掌握情况`,preparingLesson:`老师正在备课…`,bufferingLesson:`下一部分马上写好…`,play:`播放`,pause:`暂停`,prevStep:`上一步`,nextStep:`下一步`,speed:`语速`,voiceOn:`声音开`,voiceOff:`静音`,voiceDownCloud:`云端语音用不了:{reason}这节课先静音往下讲。`,voiceDownSystem:`朗读用不了:{reason}这节课先静音往下讲。`,openSettings:`去设置`,captions:`字幕`,raiseHand:`举手提问`,askPlaceholder:`哪里没听懂?直接问`,ask:`提问`,answering:`老师在想怎么回答…`,reexplain:`换个讲法`,styleAnalogy:`打个比方`,styleVisual:`画图讲`,styleExample:`举个例子`,styleSimpler:`讲简单点`,styleDeeper:`讲深一点`,stepOf:`第 {current}/{total} 步`,checkTitle:`小测一下`,confidence:`你有多确定?`,pickSeveral:`多选题:选出所有正确的选项。`,confSure:`很确定`,confUnsure:`有点犹豫`,confGuess:`猜的`,submit:`提交`,correct:`答对了`,incorrect:`不太对`,partial:`部分正确`,continue:`继续`,skip:`跳过`,hint:`提示`,yourAnswer:`你的答案`,grading:`老师在批改…`,lessonDone:`这一讲讲完了`,selfRate:`你觉得自己掌握得怎么样?`,rate1:`没懂`,rate3:`一般`,rate5:`很清楚`,nextLesson:`下一讲`,doPractice:`去做练习`,backToCourse:`回到课程`,remedialAdded:`我给你加了一节巩固课:{title}`,challengeNote:`这部分你掌握得很好,接下来会讲得更深一些。`,replay:`重新讲一遍`,regenerateLesson:`重新备课`,exportBoard:`导出板书`,practiceTitle:`练习`,check:`检查答案`,checked:`已检查`,score:`得分 {score}`,practiceDone:`本组练习完成:答对 {correct}/{total}`,showExplanation:`看解析`,makingPractice:`正在出题…`,makingQuiz:`正在出单元测验,题量按这个单元的知识点来定,可能要一两分钟…`,quizWriting:`已出 {count} 题`,newQuizSet:`换一套新题`,quizReportGiven:`我的答案:{answer}`,quizReportKey:`正确答案:{answer}`,quizReportModel:`参考答案:{answer}`,quizReportFeedback:`批改:{text}`,quizReportSkipped:`(跳过了)`,cardsTitle:`闪卡`,cardsDue:`待复习 {count} 张`,cardsTotal:`共 {count} 张`,flip:`点击翻面`,again:`忘了`,hard:`困难`,good:`记得`,easy:`简单`,cardsDone:`这一轮复习完成了!`,makingCards:`正在制作闪卡…`,makingUnitCards:`正在制作这个单元的闪卡,张数按知识点来定…`,cardsWriting:`已写好 {count} 张`,cardReview:`闪卡复习`,cardReviewDue:`闪卡复习 · {count} 张到期`,cardReviewNone:`闪卡复习 · 暂无到期`,cardReviewEmpty:`现在没有到期的闪卡。打开各单元的「单元闪卡」学新卡片。`,studyPartsCards:`已读完 {done}/{total} 段 · 已写好 {count} 张`,studyPartsQuiz:`已读完 {done}/{total} 段 · 已出 {count} 题`,partsMissing:`有 {count} 段没读成({parts}),这几段没有出到。`,sheetTitle:`速查表`,columns:`列数`,fontSize:`字号`,highlight:`高亮重点`,print:`打印`,hideSection:`隐藏`,showSection:`显示`,makingSheet:`正在整理速查表…`,projectBrief:`项目说明`,milestones:`里程碑`,rubric:`评分标准`,openWorkspace:`打开项目工作区`,openingWorkspace:`正在准备项目文件夹…`,workspaceReady:`项目文件夹在:{path}`,workspaceSession:`已在 DSH 中打开项目会话`,workspaceManual:`在 DSH 里把这个文件夹添加为工作区,就能让编程 Agent 陪你完成项目。`,copyPath:`复制路径`,submitProject:`提交作品`,submitNotes:`写点说明(做了什么、遇到的问题)`,includeFiles:`同时提交项目文件夹里的文件`,reviewing:`老师在看你的作品…`,reviewTotal:`总分 {total}/{max}`,strengths:`做得好的地方`,nextSteps:`可以改进的地方`,submissions:`历次提交`,materialsTitle:`资料库`,materialsHint:`上传教材、讲义、论文或网页,用来建课、做速查表和闪卡,讲课时也会引用原文页码。`,uploadFiles:`上传文件`,dropHere:`把文件拖到这里(PDF、Word、PPT、Markdown、文本、图片)`,addUrl:`添加网页`,urlPlaceholder:`https://…`,reading:`正在读取…`,pages:`{count} 页`,slides:`{count} 张幻灯片`,makeCourse:`用它建课`,makeSheet:`速查表`,makeCards:`闪卡`,makeNotes:`笔记`,makeQuiz:`测验`,digest:`消化`,digestTitle:`文档消化`,overview:`概要`,structure:`结构`,keyIdeas:`核心观点`,arguments:`论点与论据`,glossary:`术语表`,discussion:`值得思考的问题`,imageNeedsVision:`图片需要支持识图的模型才能读取。`,readingPictures:`正在识别图片里的文字 {done}/{total}:{name}`,summarizingMaterial:`正在整理要点:{name}`,readScanPages:`已识别 {count} 页扫描页`,readPictures:`已识别 {count} 张图片里的字`,readPhoto:`已识别图中文字`,photoNoText:`图里没有读到文字`,readPartly:`有些内容没读到`,listJoin:`、`,unreadPages:`有 {count} 页没有文字层(扫描页或整页图片):当前模型看不了图,这些页没有读到。在开窍设置里换一个带 🖼 的模型,再重新上传。`,unreadPictures:`有 {count} 张图片里的字没有读到:当前模型看不了图。在开窍设置里换一个带 🖼 的模型,再重新上传。`,failedPages:`第 {list} 页没有识别出来`,failedSlides:`第 {list} 张幻灯片没有识别出来`,failedPictures:`第 {list} 张图片没有识别出来`,failedPhoto:`图里的字没有识别出来`,failedWhy:`{what}:{reason}`,failedRetry:`{what},重新上传可以再试。`,leftPages:`后面还有 {count} 页没有识别:一个文件最多识别 200 页,可以把文件拆开再上传。`,leftPictures:`后面还有 {count} 张图片没有识别:一个文件最多识别 200 张。`,noMaterials:`资料库是空的。`,studioTitle:`学习工具`,studioHint:`用资料库里的资料一键生成学习材料。`,pickMaterials:`选择资料`,sheets:`速查表`,notes:`笔记`,decks:`闪卡组`,quizzes:`测验`,focusPlaceholder:`重点(可选),比如:期中考试范围第 3–6 章`,assistTitle:`即时答疑`,assistHint:`不用建课,有问题直接问。老师会在白板上讲给你听。`,assistPlaceholder:`想问什么?可以贴题目、概念或附上资料`,followUp:`继续追问`,history:`历史记录`,newThread:`新的问题`,shortsTitle:`讲解短片`,shortsHint:`输入一个主题或贴一个网址,生成一段约两分钟、能分享的白板讲解。`,topicPlaceholder:`比如:为什么天空是蓝色的`,makeShort:`生成短片`,exportVideo:`导出视频`,exporting:`正在录制视频…{percent}%`,exportNeedsCloud:`浏览器语音无法录进视频,导出的视频会带字幕但没有声音。在设置里配置云端语音即可导出有声版。`,exportUnsupported:`当前环境不支持导出视频。`,planTitle:`学习计划`,planHint:`根据你所有在学的课程、每周时间和截止日期自动排课,并留出复习时间。`,studyDays:`学习日`,weekdays:`日,一,二,三,四,五,六`,exams:`考试与截止日期`,addExam:`添加`,examTitle:`名称`,examDay:`日期`,deadlineRisk:`「{course}」按现在的节奏会在 {finish} 学完,晚于截止日期 {deadline}。建议每周提高到约 {minutes} 分钟。`,startReview:`开始复习`,reviewDue:`有 {count} 个知识点该复习了`,nothingToReview:`暂时没有要复习的内容。`,savePlan:`保存`,lessonItem:`学习`,reviewItem:`复习`,examItem:`考试`,today:`今天`,profileTitle:`我的画像`,profileHint:`老师会记住这些信息,让每门课都更贴合你。你亲手写下或改过的内容,课后自动更新时不会被改动;你也可以随时清空。`,background:`背景`,goals:`目标`,strengthsLabel:`擅长`,weaknesses:`薄弱点`,learningStyle:`喜欢的讲解方式`,memoryNotes:`老师的备忘`,clearProfile:`清空画像`,clearProfileConfirm:`清空后老师会忘记你的背景和偏好。确定吗?`,onePerLine:`每行一条`,settingsTitle:`设置`,modelsTitle:`模型`,teachModel:`出课与讲课`,quickModel:`批改与问答`,followDefault:`跟随 DSH 默认模型`,followTeach:`跟随「出课与讲课」`,modelsHint:`讲课质量主要取决于「出课与讲课」模型;批改和课堂提问可以用更快的模型。带 🖼 的模型能看图,扫描件、照片和图片里的字靠它识别。`,voiceTitle:`语音讲解`,engine:`语音来源`,engineBrowser:`系统语音(免费)`,engineCloud:`云端语音`,engineOff:`不朗读`,browserVoice:`系统音色`,autoVoice:`自动选择`,noVoiceForLanguage:`没有找到适合当前语言的系统音色。可以在系统设置里安装中文语音,或改用云端语音。`,cloudProvider:`云端服务`,providerOpenai:`OpenAI 兼容接口`,providerVolcengine:`火山引擎(豆包语音)`,providerMinimax:`MiniMax`,providerAzure:`Azure 语音`,field_baseUrl:`接口地址`,field_model:`模型`,field_voice:`音色`,field_appId:`App ID`,field_cluster:`Cluster`,field_groupId:`Group ID`,field_region:`区域`,field_apiKey:`密钥`,keySaved:`已保存密钥`,keyMissing:`未保存密钥`,saveKey:`保存密钥`,clearKey:`清除密钥`,testVoice:`试听`,testSentence:`你好,我是你的私人老师。我们一起把难的东西弄懂。`,voiceRate:`默认语速`,boardTheme:`白板外观`,themeAuto:`跟随系统`,themeLight:`白板`,themeDark:`黑板`,versionTitle:`插件版本`,versionCurrent:`当前版本`,versionLatest:`最新版本`,versionCheck:`检查更新`,versionChecking:`正在检查…`,versionFailed:`无法检查最新版本。`,versionUpToDate:`已是最新版本。`,versionAvailable:`发现新版本 v{version}。`,versionLinked:`当前是本地开发安装,请在插件仓库拉取最新代码并重新构建。`,versionManual:`没找到这个插件所在的 profile,请到 DSH 插件页按精确版本安装:dsh-aha-tutor@{version}。`,versionUpdate:`更新插件`,versionUpdating:`正在更新…`,versionUpdateFailed:`更新失败,请稍后重试,或到 DSH 插件页按精确版本手动安装。`,versionPending:`v{version} 刚发布不久,DSH 的 pnpm 要等过了发布冷却期才会安装,请稍后再试。`,versionPendingUntil:`v{version} 刚发布不久,DSH 的 pnpm 要等过了发布冷却期才会安装,{time} 之后可以更新。`,versionUpdated:`已更新到 v{version}。请完全退出并重新打开 DSH 桌面版,新版本才会生效(只刷新页面不够)。`,privacyNote:`课程、进度和资料都只保存在这台电脑的 DSH 数据目录里。`,aboutTitle:`关于作者`,aboutRole:`「开窍 · AI 私人老师」的作者`,aboutIntro:`开窍免费开源,赞赏全凭心意。如果它帮你弄懂了某个卡了很久的知识点,欢迎扫码支持,让小窍继续长大。`,aboutRepo:`GitHub 仓库`,aboutIssues:`问题反馈`,aboutSupport:`支持作者`,aboutWechat:`微信赞赏`,aboutAlipay:`支付宝`,aboutScan:`用手机扫一扫上面的码`,errorGeneric:`出了点问题:{message}`,crashPage:`这一页出了点问题,没能显示出来。`,crashPageHint:`可以重试一次,或者先回到首页。`,crashPart:`这部分内容出了点问题,没能显示出来。`,backHome:`回到首页`,loading:`加载中…`,empty:`这里还什么都没有。`,copied:`已复制`,minutes:`分钟`,untitled:`未命名`,delete:`删除`,edit:`编辑`,save:`保存`,all:`全部`,mode:`模式`,boardSession:`白板讲解`,toolBoardTitle:`老师在白板上讲解`,openBoard:`打开白板`,panelLabel:`开窍 · AI 私人老师`,copyCode:`复制`,footnotes:`脚注`,"err_llm-auth":`模型未登录或密钥无效,请在 DSH 设置里检查模型服务。`,"err_llm-quota":`模型额度不足或请求太频繁,稍后再试。`,"err_llm-context":`资料太长,超出了模型的上下文。少选一些资料,或换一个上下文更大的模型。`,"err_llm-unavailable":`所选模型不可用,请在开窍设置里换一个模型。`,"err_llm-timeout":`模型响应超时,请重试。`,"err_bad-output":`模型这次没给出可用的结果,请重试,或在设置里换一个更强的模型。`,boardView:`板书视图`,viewCanvas:`画布`,viewPages:`分页`,boardViewHint:`画布:整讲的板书从上到下排在一张画布上,可以拖动、缩放,讲课时自动跟着老师写的地方。分页:一次看一页,用右上角的页码翻页。`,canvasTools:`画布缩放`,canvasHelp:`拖动或滚动来移动,按住 Ctrl/⌘ 滚动或双指捏合来缩放,双击某一页放大到这一页`,canvasZoomIn:`放大`,canvasZoomOut:`缩小`,canvasZoomReset:`回到 100%(铺满宽度)`,canvasFit:`看全貌:缩小到能看到所有页`,canvasFitShort:`全貌`,canvasFollow:`回到老师这里`,canvasPage:`第 {n} 页`,voiceAsk:`说出问题`,voiceAskWith:`说出问题(麦克风:{name})`,voiceStop:`停止录音`,talkKeyHint:`快捷键:按住 V 说话,松开结束;也可以按一下 V 开始,说完再按一下。`,raiseHandKey:`暂停讲课,在提问框里提问。也可以直接按住 V 说出问题。`,voiceSetup:`语音提问需要先在 DSH 里启用「语音输入」`,voiceWorking:`识别中…`,voice_off:`语音提问用的是 DSH 的实验功能「语音输入」:在 DSH 的插件管理里启用「语音输入」,在它的详情里点「下载并准备」,准备好后再点这里。`,voice_unprepared:`语音识别模型还没准备好:在 DSH 插件管理的「语音输入」详情里点「下载并准备」(约 240 MB),准备好后再点这里。`,voice_preparing:`语音识别模型正在准备,好了以后再点这里。进度在 DSH 插件管理的「语音输入」详情里。`,voice_failed:`语音识别模型没有准备成功:到 DSH 插件管理的「语音输入」详情里重试。`,"err_speech-off":`DSH 的「语音输入」没有启用:在 DSH 的插件管理里启用它并下载准备模型。`,"err_speech-unprepared":`语音识别模型还没准备好:在 DSH 插件管理的「语音输入」详情里点「下载并准备」。`,"err_speech-audio":`这段录音没法读取,请再录一次。`,"err_speech-too-long":`录音太长了,一次最多 2 分钟。`,"err_speech-failed":`语音识别出错了,请再试一次。`,"err_speech-empty":`没听到说话,请离麦克风近一点再说一次。`,"err_mic-denied":`没有麦克风权限:请在浏览器或系统设置里允许 DSH 使用麦克风。`,"err_mic-missing":`没有找到麦克风。`,"err_mic-chosen-missing":`DSH「语音输入」里选的麦克风现在用不了:插上它,或到 DSH 插件管理的「语音输入」详情里换一个。`,micChosenMissing:`DSH「语音输入」里选的麦克风「{name}」现在用不了:插上它,或到 DSH 插件管理的「语音输入」详情里换一个。`,"err_mic-busy":`麦克风正被别的程序占用。`,"err_mic-unsupported":`这里没法录音。`,prepThinking:`构思`,prepWriting:`写板书`,prepStarting:`正在联系模型…`,prepThinkingDetail:`老师在想这一讲怎么讲,已构思 {chars} 字`,prepStep:`正在写第 {n} 步`,prepCounts:`已写好 {steps} 步 · 共 {chars} 字`,prepSeconds:`已用 {seconds} 秒`,dayLabel:`{month} 月 {day} 日 · 周{weekday}`,exportPdf:`PDF 文档(一页一张板书)`,exportPng:`PNG 图片(每页一张)`,exportMarkdown:`Markdown 文本`,exportingBoard:`正在导出板书…{done}/{total}`,animationStill:`动画(在课堂里播放)`,figureMissing:`这张图没画出来`,figureRedrawing:`正在重画这张图…`,animationFailed:`动画没能播放`,monthLabel:`{year} 年 {month} 月`,prevMonth:`上个月`,nextMonth:`下个月`,markDone:`标记为已完成`,unmarkDone:`取消完成`,checkedAuto:`已在课程里完成`,dayEmpty:`这天没有安排。`,webResearch:`联网查资料`,webResearchHint:`建课前先用 DSH 的网页搜索查一查这个主题,出题和设计课程时参考`,researching:`正在联网查资料…`,researchFound:`参考了 {count} 个网上来源`,researchSkipped:`未联网检索:{reason}`,"researchSkipped_no-credential":`DSH 还没有配置 DeepSeek 密钥,网页搜索要用它`,researchSkipped_unavailable:`这个 DSH 没有可用的网页搜索`,researchSkipped_failed:`搜索出错了`,researchSkipped_empty:`没有搜到合适的资料`,courseSources:`参考来源`,buildResearch:`参考 {count} 个网上来源`,"err_llm-empty":`模型这次没有返回内容,请重试。如果一直这样,可以在开窍设置里换一个模型。`,"err_llm-failed":`调用模型出错了,请稍后重试。`,nextStepTitle:`下一步`,nextStepReview:`有 {count} 个知识点到了复习的时候`,nextStepWeak:`「{concept}」还比较薄弱,先练一练`,nextStepLesson:`接着学「{title}」`,nextStepDone:`这门课都学完了,做一次单元测验检验一下吧`,practiceThis:`练习这一讲`,drillThis:`练这个知识点`,drillTitle:`知识点练习 · {concept}`,makingDrill:`正在按你现在的掌握情况,出这个知识点的题…`,drillAgain:`再来一组`,streakCount:`连对 {count}`,keysHint:`键盘:1–4 选择 · Enter 提交或继续 · H 看提示`,starsLabel:`{count} 颗星`,accuracy:`正确率`,bestStreak:`最长连对`,masteryChange:`这一轮之后的掌握程度`,stageNone:`未开始`,stageWeak:`薄弱`,stageLearning:`学习中`,stageProficient:`熟练`,stageMastered:`掌握`,nextRelearn:`有几个点还没吃透,回到这一讲再听一遍会更稳。`,nextReview:`基本会了,但还不够牢,复习一轮会记得更久。`,nextQuiz:`掌握得很扎实,可以挑战单元测验了。`,nextLessonStep:`可以继续往下学了。`,nextCourse:`这一部分练完了。`,relearnLesson:`回到这一讲`,reviewCourse:`复习这门课`,mistakeBook:`错题本`,mistakeEmpty:`还没有错题。课堂小测、课后练习、单元测验和复习里没答对的题会自动收进来,从第二天起安排再练。`,mistakeCountDue:`{count} 道可以再练`,mistakeCountOpen:`{count} 道待解决`,mistakeCountResolved:`{count} 道已解决`,practiceMistakesDue:`练错题({count})`,mistakeShowAll:`显示全部 {count} 道`,mistakeShowFewer:`收起`,mistakeResolvedList:`已解决({count})`,mistakeFrom_check:`课堂小测`,mistakeFrom_practice:`课后练习`,mistakeFrom_quiz:`单元测验`,mistakeFrom_drill:`知识点练习`,mistakeFigure:`有图`,mistakeLastAnswer:`上次答:{answer}`,mistakeWrongTimes:`错 {count} 次`,mistakeDueNow:`可以再练了`,mistakeDueOn:`{day}再练`,mistakeResolvedOn:`{day}解决`,dayToday:`今天`,dayTomorrow:`明天`,monthDay:`{month} 月 {day} 日`,mistakeRound:`练错题`,mistakeRoundMore:`再来一轮(还有 {count} 道)`,mistakeContext:`错过 {count} 次`,noMistakesDue:`现在没有可以再练的错题。答错的题从第二天起才安排再练。`,nextStepMistakes:`有 {count} 道错题可以再练了`,nextStepReviewMistakes:`有 {mistakes} 道错题可以再练,{count} 个知识点到了复习的时候`,editOutline:`编辑课程大纲`,saveAndBack:`保存并返回`,extendCourse:`让老师续写一个单元`,extendInstruction:`在课程最后再加一个单元:承接已有内容,往前推进一步,保持同样的难度梯度;已有的单元保持不变。`,proposalTitle:`老师的修改建议`,proposalNoChange:`这次修改没有改动任何一讲。`,applyProposal:`应用修改`,discardProposal:`放弃`,proposalApplied:`已应用修改`,diffAdded:`新增`,diffRemoved:`删除`,diffRenamed:`改名`,diffChanged:`调整`,diffUnit:`单元「{title}」`,reworkLesson:`让老师改这一讲`,splitLesson:`拆成两讲`,deepenLesson:`讲深一些`,splitDone:`已拆成两讲,记得保存`,deepenDone:`已改得更深,记得保存`,confirmRemoveUnit:`删除单元「{title}」和其中所有的课?`,confirmRemoveLecture:`删除「{title}」和其中所有的课?`,confirmRemoveStarted:`「{title}」已经开始学了,删除后这一讲的板书和进度都不再显示。确定删除?`,craftSize:`课程规模`,sizeAuto:`让老师决定`,sizeAutoHint:`按你的目标定,一个小问题可能只要一两讲`,sizeShort:`精简`,sizeShortHint:`3–8 讲,抓住最关键的部分`,sizeStandard:`标准`,sizeStandardHint:`10–20 讲,基础、练习加一个应用项目`,sizeFull:`完整`,sizeFullHint:`25–45 讲,系统深入,留出拓展的空间`,buildAnswers:`整理你的回答`,buildMaterials:`阅读你的资料`,buildUnits:`规划单元`,buildLessons:`写每一讲`,buildLessonsSoFar:`写每一讲:已写好 {count} 讲`,workPlaceholder:`一步一行写出你的过程,公式写在 $…$ 里,例如 $x^2+6x+9=(x+3)^2$`,workPreview:`公式预览`,wrongStep:`出错的一步`,fixedStep:`应该写成`,correction:`订正`,correctionOf:`订正:{tag}`,correcting:`老师在板上订正…`,seeCorrection:`看老师订正`,handout:`讲义`,handoutHint:`把这一讲整理成一页可打印的讲义`,handoutOfLesson:`本讲讲义`,handoutMaking:`老师在把这一讲整理成讲义…`,handoutPoints:`要点`,handoutExample:`例题`,handoutMistakes:`常见错误`,handoutGlossary:`术语表`,handoutQuestions:`自测`,handoutAnswer:`答案`,backToLesson:`回到这一讲`,addMaterials:`补充资料`,addMaterialsTitle:`给这门课补充资料`,addMaterialsHint:`选几份资料(也可以现在上传),老师会看看它们讲了什么,给出怎么改大纲的建议;你应用之后才生效,学过的讲保留进度,以后讲课也会引用这些资料。`,addMaterialsPlaceholder:`想让老师怎么用这些资料(可以不填),比如:重点补上第 5 章的例题`,addMaterialsSend:`请老师看看怎么加`,changeMaterials:`改选资料`,proposalMaterials:`补充资料:{titles}`,librarySearch:`找资料:输入标题或主题即时筛选,回车在正文里搜`,librarySearchText:`搜正文`,libraryFound:`正文里找到 {count} 处`,libraryNotFound:`正文里没找到「{query}」`,libraryNoTitleMatch:`没有标题或主题对得上的资料,按回车可以在正文里搜。`,pageN:`第 {page} 页`,pagesN:`第 {from}–{to} 页`,pdfPageN:`PDF 第 {page} 页`,pdfPagesN:`PDF 第 {from}–{to} 页`,slideN:`第 {slide} 张`,outlineTitle:`目录({count} 条)`,outlineBookmarks:`来自 PDF 书签`,outlineHeadings:`按章节标题识别`,outlinePrinted:`页码按书上印的`,lessonSourcesTitle:`这一讲对应的资料页:`,citeQuote:`原文:「{quote}」`,tourLabel:`课堂导览`,tourReplay:`课堂导览`,tourSkip:`跳过`,tourBack:`上一步`,tourNext:`下一步`,tourStart:`开始上课`,tourBoardTitle:`老师在这块黑板上讲`,tourBoard:`老师边讲边写。拖动或滚动可以移动板书,按住 Ctrl(Mac 上是 ⌘)滚动可以缩放,右上角的「全貌」能看到整讲。`,tourControlsTitle:`播放和节奏`,tourControls:`播放、暂停、上一步、下一步和语速都在这里,按空格也能暂停;字幕和声音可以随时开关。`,tourRaiseTitle:`有问题就举手`,tourRaise:`点「举手提问」,或者直接在提问框里写。也可以说出来:点麦克风,或者按住 V 键说话,松开后问题就进了提问框。老师答完会接着讲。`,tourReexplainTitle:`这一步没听懂`,tourReexplain:`点「换个讲法」,让老师打个比方、画图、举个例子,或者讲简单点、讲深一点。`,tourChallengeTitle:`觉得讲错了`,tourChallenge:`点「这一步不对?」,老师会先仔细核对;真错了会当场改正,并把这一讲一起改好。`,tourPanelTitle:`课堂要点和讲解记录`,tourPanel:`这里能看到这一讲的要点讲到了哪儿;老师说过的话都在讲解记录里,点一条就回到那里。`,outlineView:`大纲的显示方式`,viewList:`列表`,viewMap:`导图`,mapTools:`导图工具`,mapFollow:`回到最新`,mapPick:`到列表里编辑这一讲`,depthTitle:`这一讲的讲法`,depthNone:`不限`,depth_intuition:`直观理解`,depth_definition:`定义概念`,depth_derivation:`推导证明`,depth_application:`动手应用`,depth_extension:`深入拓展`,profileName:`怎么称呼你`,profileNameHint:`老师开课时会这样叫你一次,可以不填`,profileNamePlaceholder:`比如:小明`,challenge:`这一步不对?`,challengeLabel:`这一步不对?`,challengeTitle:`这一步哪里不对?(可以不填)`,challengeTitleStep:`第 {n} 步哪里不对?(可以不填)「{text}」`,challengePlaceholder:`比如:5 cm 是不是应该换成 0.05 m?`,challengeHint:`老师会先仔细算一遍,要等十几秒到半分钟。`,challengeSend:`请老师核对`,challengeLine:`不对?`,challengeStep:`第 {n} 步不对?`,checkingStep:`老师在仔细核对这一步…`,challenge_wrong:`确实有错,已更正`,challenge_right:`核对过,没有错`,challenge_unclear:`要看约定`,fixed:`已更正`,fixedWas:`原来写的是:{was}`,itemChallenge:`这题有问题?`,explainThis:`讲这题`,explainTitle:`老师讲这题`,explainSaved:`这段讲解也存在「即时答疑」里,之后还能打开。`,explainClose:`关闭讲解`,itemChallengeTitle:`这题哪里不对?(可以不填)`,itemChallengePlaceholder:`比如:我觉得 B 也对;或者:答案的单位是不是错了?`,itemChallengeHint:`老师会先仔细算一遍,要等几秒到半分钟,你可以先做下一题。`,itemChecking:`老师在仔细核对这道题…`,itemCheckTitle:`老师核对`,itemCheck_wrong:`确实有错,已更正`,itemCheck_unclear:`题目没说清楚,已补充`,itemCheck_misgraded:`判分有误,已重新判`,itemCheck_right:`核对过,没有错`,regraded:`(重新判过)`,itemCheckDone:`第 {n} 题核对完了:{verdict}。`,itemCheckRegraded:`已按核对结果重新判分。`,itemCheckEarlier:`这道题你之前还答过 {count} 次,也按改好的题重新判了。`,itemCheckFailedNotice:`第 {n} 题没核对成功:{message}`,fixedWasItem:`原来写的:`,fixedPart_prompt:`题目:{text}`,fixedPart_option:`选项 {id}:{text}`,fixedPart_answer:`答案:{text}`,fixedPart_unit:`单位:{text}`,fixedPart_tolerance:`允许误差:{text}`,fixedPart_explanation:`解析:{text}`,fixedPart_hints:`提示:{text}`,fixedPart_rubric:`评分要点:{text}`,fixedPart_figure:`图也重画了`,lessonGoals:`课堂要点`,transcript:`讲解记录`,showPanel:`讲解记录`,hidePanel:`收起侧栏`,panelTitle:`课堂侧栏`,boardFont:`板书字体`,fontHand:`手写体`,fontStandard:`标准体`,textSize:`文字大小`,textStandard:`标准`,textLarge:`大`,textLarger:`特大`,textSizeHint:`开窍里的文字一起变大,马上生效。板书和思维导图用它们自己的缩放按钮;DSH「设置 → 通用设置 → 字号大小」也会让这里的文字跟着变。`,digestMissing:`有 {count} 部分没读成功({parts}),下面的结果不含这些内容。`,redigest:`重新消化`,revisingSoFar:`正在修改…已写好 {count} 节课`,"err_bad-url":`这个网址不能导入:只支持公开网站的 http 或 https 地址,不支持本机、局域网和带账号密码的地址。`,err_network:`网页打不开或加载超时,请检查网址后重试。`,err_http:`网页返回了错误,没能导入。`,blueprintSoFar:`正在设计课程蓝图…已写好 {count} 节课`,reexplainedAs:`换个讲法:{style}`,digestReading:`正在通读全文:已读 {done}/{total} 部分`,digestWriting:`正在汇总全文要点`,keepsRunning:`可以先离开这一页,生成会在后台继续。`,err_cancelled:`已取消。`,courseCreatedInChat:`课程「{title}」已创建,可以在「开窍」里继续。`,err_failed:`出了点问题,请稍后再试。`,err_invalid:`这个请求没法处理。请刷新页面后再试;如果还是这样,请退出并重新打开 DSH。`,"err_not-found":`找不到这项内容,它可能已经被删除了。`,err_forbidden:`没有权限做这件事。`,"err_unknown-endpoint":`插件刚更新过,请退出并重新打开 DSH 后再试。`,err_aborted:`上传中断了,请重试。`,err_connection:`连不上 DSH,请确认它还开着,然后重试。`,err_missing:`这项任务找不到了,可能是 DSH 重启过,请重试。`,"err_llm-missing":`还没有可用的模型,请先在 DSH 设置里配置一个模型服务。`,"err_no-board":`板书还没写好,等第一步出来再试。`,"err_empty-question":`先写下你的问题。`,"err_empty-goal":`先说说你想学什么,或者添加一份资料。`,"err_empty-change":`先写下你想怎么改。`,"err_no-blueprint":`还没有课程蓝图,请先生成蓝图。`,"err_no-proposal":`没有待确认的修改,它可能已经应用或放弃了。`,"err_bad-pack":`这个文件不是能导入的课程包。`,"err_pack-too-large":`这个课程包太大了,导入不了。`,"err_pack-too-new":`这个课程包是新版开窍导出的,请先更新插件再导入。`,"err_nothing-to-review":`还没有可以评阅的内容:先写几句说明,或在项目文件夹里做些修改。`,"err_cannot-tick":`只能勾选今天或之前的学习项。`,"err_exam-incomplete":`考试需要填写名称和日期。`,"err_no-material":`先选至少一份资料。`,"err_material-no-text":`所选资料里没有可读的文字,图片和扫描版 PDF 读不出文字。`,"err_empty-topic":`先写下一个主题,或者填一个网址。`,"err_no-credentials":`这个 DSH 配置里用不了凭据存储,没法保存密钥。`,"err_bad-key":`密钥格式不对:应为 8–1024 个英文字母、数字或符号,不能有空格。`,err_unsupported:`不支持这种文件。可以上传 PDF、Word、PowerPoint、图片,或 .md、.txt、.csv 这类文本文件。`,"err_old-office":`不支持旧版 .doc/.ppt 文件,请另存为 .docx/.pptx 后再上传。`,err_encrypted:`这个 PDF 有密码保护,请先去掉密码再上传。`,err_unreadable:`这个文件读不出来,可能已经损坏,可以重新导出一份再试。`,"err_no-text":`这个文件里没有读到文字。`,"err_scan-needs-vision":`这是扫描版,没有能直接读取的文字。要识别里面的字,请在开窍设置里选一个带 🖼(能看图)的模型,比如 DeepSeek-V4.1-Flash,再重新上传。`,"err_pictures-need-vision":`这个文件里的内容都是图片。要识别图里的字,请在开窍设置里选一个带 🖼(能看图)的模型,比如 DeepSeek-V4.1-Flash,再重新上传。`,"err_llm-no-vision":`当前模型看不了图片。请在开窍设置里换一个带 🖼 的模型。`,"err_image-unusable":`这张图片没能交给模型。`,err_empty:`这个文件是空的。`,"err_too-large":`文件超过 200 MB,太大了,可以拆成几份再上传。`,"err_focus-empty":`资料里没找到和「重点」相关的内容,换个写法或清空重点再试。`,"err_image-too-large":`图片要小于 10 MB。`,"err_page-too-large":`这个网页太大了,导入不了。`,"err_page-no-text":`这个网页上没有读到正文。`,"err_tts-address":`语音服务地址不对:要填完整的 https 网址(只有本机地址可以用 http),不能带账号密码。`,"err_tts-app-id":`火山引擎语音需要填写 App ID。`,"err_tts-azure":`Azure 的区域或音色名称不对,请照 Azure 门户里的写法填写。`,"err_tts-config":`语音服务的设置不完整,请在设置里检查。`,"err_tts-network":`连不上语音服务,请检查网络和服务地址。`,"err_tts-stalled":`语音服务一直没有回应,请检查服务是否在运行、地址是否正确。`,"err_tts-timeout":`语音服务响应超时,请稍后再试。`,"err_tts-too-large":`语音服务返回的音频太大了。`,"err_tts-auth":`语音服务拒绝了密钥,请检查密钥是否正确。`,"err_tts-no-key":`还没有保存这个语音服务的密钥,请先在设置里填写。`,"err_tts-rate-limit":`语音服务请求太频繁,请稍后再试。`,"err_tts-server":`语音服务出错了,请稍后再试。`,"err_tts-request":`语音服务拒绝了这次请求,请检查音色等设置。`,"err_tts-empty":`没有要朗读的文字。`,"err_tts-response":`语音服务没有返回可用的音频,请稍后再试,或换一个音色。`,"err_tts-failed":`语音合成失败了,请稍后再试。`,"err_no-materials":`先选至少一份资料。`,"err_materials-known":`这些资料已经是这门课的了。`,"err_materials-full":`一门课最多关联 12 份资料,这门课已经满了。`,err_speech:`朗读没有成功,可以换一个系统音色,或者改用云端语音。`,"err_speech-stalled":`系统语音卡住了,没有出声。`,err_playback:`音频没能播放,请再试一次。`,exportFailed:`导出没有成功,请再试一次。`},oh={appName:`Aha`,appTagline:`your AI tutor`,navHome:`Home`,navCourses:`My courses`,navMaterials:`Library`,navStudio:`Study tools`,navAssist:`Ask anything`,navShorts:`Explainer shorts`,navPlan:`Study plan`,navProfile:`My profile`,navSettings:`Settings`,navAbout:`About the author`,navFold:`Collapse`,navUnfold:`Expand`,heroTitle:`What do you want to finally understand today?`,heroHint:`Tell me what you want to learn, or drop in a textbook. I will get to know you, build a course around you, and teach it step by step on the whiteboard.`,heroPlaceholder:`e.g. Get eigenvalues in three weeks | Turn these lecture notes into a course | How does quantum tunneling actually work?`,modeCourse:`Build a course`,modeExplain:`Explain a concept`,modeSolve:`Solve with me`,modeVisualize:`Show me visually`,modeDigest:`Digest a long read`,modeShort:`Two-minute short`,attach:`Add material`,attached:`{count} material(s) attached`,start:`Start`,quickStart:`Skip questions, build now`,continueLearning:`Continue learning`,todayPlan:`Today`,noPlanToday:`Nothing planned today. Start a course or take a break.`,recentWork:`Recent`,sampleCourses:`Sample courses`,sampleHint:`Try the whiteboard classroom without spending tokens.`,importSample:`Add to my courses`,coursesTitle:`My courses`,filterAll:`All`,filterActive:`In progress`,filterDone:`Completed`,filterArchived:`Archived`,searchCourses:`Search courses`,noCourses:`No courses yet. Go to Home and tell me what you want to learn.`,importPack:`Import course pack`,lessonsCount:`{done}/{total} lessons`,minutesLeft:`about {minutes} min left`,statusIntake:`Questions pending`,statusBlueprint:`Blueprint to confirm`,statusReady:`Ready`,nextUp:`Next: {title}`,craftQuestionsTitle:`Let me get to know you`,craftQuestionsHint:`A few answers let me shape the course around you. Skip anything you are unsure about.`,craftOther:`Other (write your own)`,craftPace:`Pace`,paceIntensive:`Sprint`,paceIntensiveHint:`~6 weeks, essentials first`,paceBalanced:`Steady`,paceBalancedHint:`~3 months, foundations + practice + project`,paceRelaxed:`No deadline`,paceRelaxedHint:`Take your time, go deeper`,weeklyMinutes:`Time per week`,minutesUnit:`{minutes} min`,deadline:`Deadline (optional)`,makeBlueprint:`Design my course`,thinkingQuestions:`Thinking about what to ask you…`,designingBlueprint:`Designing your course blueprint…`,blueprintTitle:`Course blueprint`,blueprintHint:`Here is the course I designed for you. Edit titles, remove or reorder anything, or tell me what to change.`,reviseLabel:`Change it in one sentence`,revisePlaceholder:`e.g. More hands-on coding; make unit 2 lighter; drop lesson 3`,revise:`Revise`,revising:`Revising…`,addLesson:`Add lesson`,addLecture:`Add chapter`,addUnit:`Add unit`,moveUp:`Move up`,moveDown:`Move down`,remove:`Remove`,projects:`Projects`,confirmCourse:`Confirm and build the course`,confirming:`Preparing practice and projects… {done}/{total}`,courseReady:`Your course is ready`,unitN:`Unit {n}`,lectureN:`Chapter {n}`,estMinutes:`{minutes} min`,saveEdits:`Save changes`,saved:`Saved`,tabOutline:`Outline`,tabPractice:`Practice, quizzes & flashcards`,tabSheets:`Cheat sheets`,tabProjects:`Projects`,tabProgress:`Progress`,learn:`Learn`,practice:`Practice`,review:`Review`,remedial:`Revisit`,exportPack:`Export course pack`,exportWithProgress:`Include my progress`,rename:`Rename`,archive:`Archive`,unarchive:`Unarchive`,deleteCourse:`Delete course`,deleteConfirm:`This cannot be undone. Delete "{title}"?`,cancel:`Cancel`,confirm:`Confirm`,close:`Close`,back:`Back`,retry:`Retry`,generate:`Generate`,regenerate:`Regenerate`,generating:`Generating…`,open:`Open`,unitQuiz:`Unit quiz`,unitSheet:`Unit cheat sheet`,unitCards:`Unit flashcards`,unitCardsDue:`Unit flashcards · {count}`,unitCardsDueTitle:`{count} due`,mastery:`Mastery`,conceptMastery:`Concept mastery`,preparingLesson:`Your tutor is preparing the lesson…`,bufferingLesson:`Writing the next part…`,play:`Play`,pause:`Pause`,prevStep:`Previous step`,nextStep:`Next step`,speed:`Speed`,voiceOn:`Sound on`,voiceOff:`Muted`,voiceDownCloud:`The cloud voice is not working: {reason} This lesson goes on without sound.`,voiceDownSystem:`The system voice is not working: {reason} This lesson goes on without sound.`,openSettings:`Settings`,captions:`Captions`,raiseHand:`Raise hand`,askPlaceholder:`What was unclear? Just ask`,ask:`Ask`,answering:`Thinking about your question…`,reexplain:`Explain differently`,styleAnalogy:`With an analogy`,styleVisual:`With a drawing`,styleExample:`With an example`,styleSimpler:`More simply`,styleDeeper:`In more depth`,stepOf:`Step {current}/{total}`,checkTitle:`Quick check`,confidence:`How sure are you?`,pickSeveral:`Select all that apply.`,confSure:`Sure`,confUnsure:`Not quite`,confGuess:`Guessing`,submit:`Submit`,correct:`Correct`,incorrect:`Not quite`,partial:`Partly right`,continue:`Continue`,skip:`Skip`,hint:`Hint`,yourAnswer:`Your answer`,grading:`Grading…`,lessonDone:`Lesson complete`,selfRate:`How well do you feel you got it?`,rate1:`Lost`,rate3:`Okay`,rate5:`Crystal clear`,nextLesson:`Next lesson`,doPractice:`Practice`,backToCourse:`Back to course`,remedialAdded:`I added a revisit lesson for you: {title}`,challengeNote:`You have this down; the next lessons will go deeper.`,replay:`Replay lesson`,regenerateLesson:`Re-prepare lesson`,exportBoard:`Export board`,practiceTitle:`Practice`,check:`Check`,checked:`Checked`,score:`Score {score}`,practiceDone:`Set complete: {correct}/{total} correct`,showExplanation:`Explanation`,makingPractice:`Writing practice…`,makingQuiz:`Writing the unit quiz. Its length follows the unit's concepts, so this can take a minute or two…`,quizWriting:`{count} questions written`,newQuizSet:`New set of questions`,quizReportGiven:`My answer: {answer}`,quizReportKey:`Correct answer: {answer}`,quizReportModel:`Model answer: {answer}`,quizReportFeedback:`Feedback: {text}`,quizReportSkipped:`(skipped)`,cardsTitle:`Flashcards`,cardsDue:`{count} due`,cardsTotal:`{count} in all`,flip:`Click to flip`,again:`Again`,hard:`Hard`,good:`Good`,easy:`Easy`,cardsDone:`Review round complete!`,makingCards:`Making flashcards…`,makingUnitCards:`Making this unit's flashcards; their number follows its concepts…`,cardsWriting:`{count} cards written`,cardReview:`Flashcard review`,cardReviewDue:`Flashcard review · {count} due`,cardReviewNone:`Flashcard review · none due`,cardReviewEmpty:`No flashcards are due. Open a unit's flashcards to learn new ones.`,studyPartsCards:`Read {done}/{total} parts · {count} cards written`,studyPartsQuiz:`Read {done}/{total} parts · {count} questions written`,partsMissing:`{count} parts could not be read ({parts}) and have nothing here.`,sheetTitle:`Cheat sheet`,columns:`Columns`,fontSize:`Font size`,highlight:`Highlight key items`,print:`Print`,hideSection:`Hide`,showSection:`Show`,makingSheet:`Compiling the cheat sheet…`,projectBrief:`Brief`,milestones:`Milestones`,rubric:`Rubric`,openWorkspace:`Open project workspace`,openingWorkspace:`Preparing the project folder…`,workspaceReady:`Project folder: {path}`,workspaceSession:`Opened a project session in DSH`,workspaceManual:`Add this folder as a workspace in DSH and a coding agent can help you build it.`,copyPath:`Copy path`,submitProject:`Submit work`,submitNotes:`Notes (what you built, what was hard)`,includeFiles:`Include the files in the project folder`,reviewing:`Reviewing your work…`,reviewTotal:`Total {total}/{max}`,strengths:`What went well`,nextSteps:`What to improve`,submissions:`Submissions`,materialsTitle:`Library`,materialsHint:`Upload textbooks, notes, papers or web pages to build courses, cheat sheets and flashcards. Lessons cite their pages.`,uploadFiles:`Upload files`,dropHere:`Drop files here (PDF, Word, PowerPoint, Markdown, text, images)`,addUrl:`Add web page`,urlPlaceholder:`https://…`,reading:`Reading…`,pages:`{count} pages`,slides:`{count} slides`,makeCourse:`Build a course`,makeSheet:`Cheat sheet`,makeCards:`Flashcards`,makeNotes:`Notes`,makeQuiz:`Quiz`,digest:`Digest`,digestTitle:`Digest`,overview:`Overview`,structure:`Structure`,keyIdeas:`Key ideas`,arguments:`Claims and evidence`,glossary:`Glossary`,discussion:`Questions worth asking`,imageNeedsVision:`Images need a vision-capable model.`,readingPictures:`Reading the text in pictures {done}/{total}: {name}`,summarizingMaterial:`Summing up {name}`,readScanPages:`{count} scanned pages read`,readPictures:`Text read from {count} pictures`,readPhoto:`Text in the picture read`,photoNoText:`No text found in the picture`,readPartly:`Some parts were not read`,listJoin:`, `,unreadPages:`{count} pages have no text layer (scans or full-page pictures), and the current model cannot see images, so they were not read. Pick a model marked 🖼 in Aha settings and upload the file again.`,unreadPictures:`The text in {count} pictures was not read: the current model cannot see images. Pick a model marked 🖼 in Aha settings and upload the file again.`,failedPages:`Page {list} could not be read`,failedSlides:`Slide {list} could not be read`,failedPictures:`Picture {list} could not be read`,failedPhoto:`The text in this picture could not be read`,failedWhy:`{what}: {reason}`,failedRetry:`{what}. Uploading it again may help.`,leftPages:`{count} more pages were not read: at most 200 pages of a file are read. Split the file and upload the parts.`,leftPictures:`{count} more pictures were not read: at most 200 pictures of a file are read.`,noMaterials:`Your library is empty.`,studioTitle:`Study tools`,studioHint:`Turn library materials into study aids in one click.`,pickMaterials:`Pick materials`,sheets:`Cheat sheets`,notes:`Notes`,decks:`Flashcard decks`,quizzes:`Quizzes`,focusPlaceholder:`Focus (optional), e.g. midterm scope chapters 3–6`,assistTitle:`Ask anything`,assistHint:`No course needed. Ask, and your tutor explains it on the whiteboard.`,assistPlaceholder:`What do you want to know? Paste a problem, a concept, or attach material`,followUp:`Follow up`,history:`History`,newThread:`New question`,shortsTitle:`Explainer shorts`,shortsHint:`Give a topic or a link and get a shareable two-minute whiteboard explainer.`,topicPlaceholder:`e.g. Why is the sky blue?`,makeShort:`Make short`,exportVideo:`Export video`,exporting:`Recording video… {percent}%`,exportNeedsCloud:`System voices cannot be recorded, so the video will have captions but no sound. Set up a cloud voice in Settings to export with narration.`,exportUnsupported:`Video export is not supported here.`,planTitle:`Study plan`,planHint:`Built from all your active courses, your weekly time and deadlines, with room for reviews.`,studyDays:`Study days`,weekdays:`Sun,Mon,Tue,Wed,Thu,Fri,Sat`,exams:`Exams and deadlines`,addExam:`Add`,examTitle:`Title`,examDay:`Date`,deadlineRisk:`At this pace "{course}" ends on {finish}, after its deadline {deadline}. Try about {minutes} minutes a week.`,startReview:`Start review`,reviewDue:`{count} concept(s) due for review`,nothingToReview:`Nothing to review right now.`,savePlan:`Save`,lessonItem:`Lesson`,reviewItem:`Review`,examItem:`Exam`,today:`Today`,profileTitle:`My profile`,profileHint:`Your tutor remembers this to fit every course to you. What you write or change here stays as you wrote it when the tutor updates the profile after a lesson. Clear it anytime.`,background:`Background`,goals:`Goals`,strengthsLabel:`Strengths`,weaknesses:`Weak spots`,learningStyle:`How I like things explained`,memoryNotes:`Tutor notes`,clearProfile:`Clear profile`,clearProfileConfirm:`Your tutor will forget your background and preferences. Continue?`,onePerLine:`One per line`,settingsTitle:`Settings`,modelsTitle:`Models`,teachModel:`Course design & teaching`,quickModel:`Grading & questions`,followDefault:`Follow the DSH default model`,followTeach:`Same as Course design & teaching`,modelsHint:`Lesson quality depends mostly on the teaching model; grading and in-class questions can use a faster one. Models marked 🖼 can see images: they read the text in scans, photos and pictures.`,voiceTitle:`Narration`,engine:`Voice source`,engineBrowser:`System voice (free)`,engineCloud:`Cloud voice`,engineOff:`Silent`,browserVoice:`System voice`,autoVoice:`Automatic`,noVoiceForLanguage:`No system voice found for this language. Install one in your OS settings or use a cloud voice.`,cloudProvider:`Cloud service`,providerOpenai:`OpenAI-compatible API`,providerVolcengine:`Volcengine (Doubao)`,providerMinimax:`MiniMax`,providerAzure:`Azure Speech`,field_baseUrl:`API address`,field_model:`Model`,field_voice:`Voice`,field_appId:`App ID`,field_cluster:`Cluster`,field_groupId:`Group ID`,field_region:`Region`,field_apiKey:`Key`,keySaved:`Key saved`,keyMissing:`No key saved`,saveKey:`Save key`,clearKey:`Remove key`,testVoice:`Test`,testSentence:`Hi, I am your tutor. Let us make the hard things make sense.`,voiceRate:`Default speed`,boardTheme:`Board look`,themeAuto:`Follow system`,themeLight:`Whiteboard`,themeDark:`Chalkboard`,versionTitle:`Plugin version`,versionCurrent:`Current`,versionLatest:`Latest`,versionCheck:`Check for updates`,versionChecking:`Checking…`,versionFailed:`Could not check the latest version.`,versionUpToDate:`You are on the latest version.`,versionAvailable:`Version v{version} is available.`,versionLinked:`Installed from a local checkout; pull and rebuild the plugin repository to update.`,versionManual:`Could not find the profile that owns this plugin. Install the exact version from the DSH Plugins page: dsh-aha-tutor@{version}.`,versionUpdate:`Update plugin`,versionUpdating:`Updating…`,versionUpdateFailed:`The update failed. Try again later, or install the exact version from the DSH Plugins page.`,versionPending:`v{version} was published recently; DSH’s pnpm installs it once its release cooldown passes. Try again later.`,versionPendingUntil:`v{version} was published recently; DSH’s pnpm installs it once its release cooldown passes, after {time}.`,versionUpdated:`Updated to v{version}. Quit and reopen the DSH desktop app for it to take effect (refreshing the page is not enough).`,privacyNote:`Courses, progress and materials are stored only in DSH’s data folder on this computer.`,aboutTitle:`About the author`,aboutRole:`Author of Aha Tutor (开窍)`,aboutIntro:`Aha Tutor is free and open source, and tips are entirely optional. If it helped something finally click for you, a tip keeps Qiao growing.`,aboutRepo:`GitHub repository`,aboutIssues:`Report a problem`,aboutSupport:`Support the author`,aboutWechat:`WeChat`,aboutAlipay:`Alipay`,aboutScan:`Scan a code with your phone`,errorGeneric:`Something went wrong: {message}`,crashPage:`This page ran into a problem and could not be shown.`,crashPageHint:`Try again, or go back to the home page.`,crashPart:`This part ran into a problem and could not be shown.`,backHome:`Back to home`,loading:`Loading…`,empty:`Nothing here yet.`,copied:`Copied`,minutes:`min`,untitled:`Untitled`,delete:`Delete`,edit:`Edit`,save:`Save`,all:`All`,mode:`Mode`,boardSession:`Whiteboard`,toolBoardTitle:`Explaining on the whiteboard`,openBoard:`Open whiteboard`,panelLabel:`Aha · AI tutor`,copyCode:`Copy`,footnotes:`Footnotes`,"err_llm-auth":`The model is not signed in or its key is invalid. Check the model provider in DSH settings.`,"err_llm-quota":`The model quota is used up or requests are too frequent. Try again later.`,"err_llm-context":`The material is too long for this model. Pick fewer materials or a model with a larger context.`,"err_llm-unavailable":`The selected model is not available. Pick another one in Aha settings.`,"err_llm-timeout":`The model took too long. Try again.`,"err_bad-output":`The model did not return a usable result this time. Try again or pick a stronger model in settings.`,boardView:`Board view`,viewCanvas:`Canvas`,viewPages:`Pages`,boardViewHint:`Canvas: the whole lesson’s pages, top to bottom on one canvas you can drag and zoom, following the teacher’s writing during the lesson. Pages: one page at a time, turned with the page numbers at the top right.`,canvasTools:`Canvas zoom`,canvasHelp:`Drag or scroll to move, hold Ctrl/⌘ and scroll or pinch to zoom, double-click a page to fit it`,canvasZoomIn:`Zoom in`,canvasZoomOut:`Zoom out`,canvasZoomReset:`Back to 100% (full width)`,canvasFit:`Show everything: zoom out to see every page`,canvasFitShort:`All`,canvasFollow:`Back to the teacher`,canvasPage:`Page {n}`,voiceAsk:`Ask by voice`,voiceAskWith:`Ask by voice (microphone: {name})`,voiceStop:`Stop recording`,talkKeyHint:`Shortcut: hold V while you speak and let go to finish, or tap V, speak, and tap it again.`,raiseHandKey:`Pause the lesson and ask in the question box. You can also hold V and say it.`,voiceSetup:`Voice questions need Voice input enabled in DSH`,voiceWorking:`Recognizing…`,voice_off:`Voice questions use DSH’s experimental Voice input: enable Voice input in DSH’s Plugins page, choose Download and prepare in its details, then click here again.`,voice_unprepared:`The speech recognizer is not set up yet: choose Download and prepare in Voice input’s details on DSH’s Plugins page (about 240 MB), then click here again.`,voice_preparing:`The speech recognizer is being set up; click here again when it is ready. Voice input’s details on DSH’s Plugins page show the progress.`,voice_failed:`Setting up the speech recognizer failed: retry it in Voice input’s details on DSH’s Plugins page.`,"err_speech-off":`Voice input is not enabled in DSH: enable it in DSH’s Plugins page and set up its model.`,"err_speech-unprepared":`The speech recognizer is not ready: choose Download and prepare in Voice input’s details on DSH’s Plugins page.`,"err_speech-audio":`The recording could not be read. Record it again.`,"err_speech-too-long":`The recording is too long; it can be at most 2 minutes.`,"err_speech-failed":`Speech recognition failed. Try again.`,"err_speech-empty":`No speech was heard. Move closer to the microphone and try again.`,"err_mic-denied":`Microphone access was refused: allow DSH to use the microphone in your browser or system settings.`,"err_mic-missing":`No microphone was found.`,"err_mic-chosen-missing":`The microphone chosen in DSH’s Voice input is not available: plug it in, or choose another in Voice input’s details on DSH’s Plugins page.`,micChosenMissing:`The microphone chosen in DSH’s Voice input, “{name}”, is not available: plug it in, or choose another in Voice input’s details on DSH’s Plugins page.`,"err_mic-busy":`The microphone is in use by another program.`,"err_mic-unsupported":`Recording is not possible here.`,prepThinking:`Planning`,prepWriting:`Writing the board`,prepStarting:`Reaching the model…`,prepThinkingDetail:`Thinking the lesson through ({chars} characters so far)`,prepStep:`Writing step {n}`,prepCounts:`{steps} steps ready · {chars} characters`,prepSeconds:`{seconds}s so far`,dayLabel:`{weekday}, {month}/{day}`,exportPdf:`PDF (one board page per page)`,exportPng:`PNG images (one per page)`,exportMarkdown:`Markdown text`,exportingBoard:`Exporting the board… {done}/{total}`,animationStill:`Animation (plays in the lesson)`,figureMissing:`This figure could not be drawn`,figureRedrawing:`Redrawing this figure…`,animationFailed:`This animation could not play`,monthLabel:`{month}/{year}`,prevMonth:`Previous month`,nextMonth:`Next month`,markDone:`Mark as done`,unmarkDone:`Mark as not done`,checkedAuto:`Done in the course`,dayEmpty:`Nothing planned for this day.`,webResearch:`Search the web first`,webResearchHint:`Before designing the course, look the subject up with DSH web search and use what it finds`,researching:`Searching the web…`,researchFound:`Drew on {count} web sources`,researchSkipped:`No web search: {reason}`,"researchSkipped_no-credential":`DSH has no DeepSeek key, which its web search needs`,researchSkipped_unavailable:`web search is not available in this DSH`,researchSkipped_failed:`the search failed`,researchSkipped_empty:`nothing useful came up`,courseSources:`Sources`,buildResearch:`Using {count} web sources`,"err_llm-empty":`The model returned nothing this time. Try again, or pick another model in Aha settings if it keeps happening.`,"err_llm-failed":`The model call failed. Try again in a moment.`,nextStepTitle:`Next step`,nextStepReview:`{count} concepts are due for review`,nextStepWeak:`“{concept}” is still weak; practise it first`,nextStepLesson:`Continue with “{title}”`,nextStepDone:`You have finished the course; check yourself with a unit quiz`,practiceThis:`Practise this lesson`,drillThis:`Practise this concept`,drillTitle:`Concept practice · {concept}`,makingDrill:`Writing questions on this concept, pitched at where you are now…`,drillAgain:`Another set`,streakCount:`{count} in a row`,keysHint:`Keyboard: 1–4 to choose · Enter to submit or continue · H for a hint`,starsLabel:`{count} stars`,accuracy:`accuracy`,bestStreak:`best streak`,masteryChange:`Mastery after this round`,stageNone:`Not started`,stageWeak:`Weak`,stageLearning:`Learning`,stageProficient:`Proficient`,stageMastered:`Mastered`,nextRelearn:`A few points have not landed yet; going through the lesson again will help.`,nextReview:`You mostly have it, but it is not solid yet; a review round will make it stick.`,nextQuiz:`This is solid; you are ready for the unit quiz.`,nextLessonStep:`You are ready to move on.`,nextCourse:`This part is done.`,relearnLesson:`Back to the lesson`,reviewCourse:`Review this course`,mistakeBook:`Mistake notebook`,mistakeEmpty:`No mistakes yet. Questions you miss in class checks, practice, unit quizzes and reviews land here and come back from the next day on.`,mistakeCountDue:`{count} ready to redo`,mistakeCountOpen:`{count} open`,mistakeCountResolved:`{count} resolved`,practiceMistakesDue:`Redo mistakes ({count})`,mistakeShowAll:`Show all {count}`,mistakeShowFewer:`Show fewer`,mistakeResolvedList:`Resolved ({count})`,mistakeFrom_check:`Class check`,mistakeFrom_practice:`Practice`,mistakeFrom_quiz:`Unit quiz`,mistakeFrom_drill:`Concept practice`,mistakeFigure:`Has a figure`,mistakeLastAnswer:`Last answer: {answer}`,mistakeWrongTimes:`Missed {count}×`,mistakeDueNow:`Ready to redo`,mistakeDueOn:`Back {day}`,mistakeResolvedOn:`Resolved {day}`,dayToday:`today`,dayTomorrow:`tomorrow`,monthDay:`{month}/{day}`,mistakeRound:`Redo mistakes`,mistakeRoundMore:`Another round ({count} left)`,mistakeContext:`missed {count}×`,noMistakesDue:`No mistakes to redo right now. A missed question comes back from the next day on.`,nextStepMistakes:`{count} mistakes are ready to redo`,nextStepReviewMistakes:`{mistakes} mistakes to redo and {count} concepts due for review`,editOutline:`Edit outline`,saveAndBack:`Save and go back`,extendCourse:`Ask for one more unit`,extendInstruction:`Add one more unit at the end that builds on what the course covers and takes the next step at the same gradient; leave the existing units unchanged.`,proposalTitle:`Proposed changes`,proposalNoChange:`This revision changes no lessons.`,applyProposal:`Apply changes`,discardProposal:`Discard`,proposalApplied:`Changes applied`,diffAdded:`Added`,diffRemoved:`Removed`,diffRenamed:`Renamed`,diffChanged:`Changed`,diffUnit:`Unit “{title}”`,reworkLesson:`Rework this lesson`,splitLesson:`Split in two`,deepenLesson:`Go deeper`,splitDone:`Split in two; remember to save`,deepenDone:`Made deeper; remember to save`,confirmRemoveUnit:`Remove the unit “{title}” and all its lessons?`,confirmRemoveLecture:`Remove “{title}” and all its lessons?`,confirmRemoveStarted:`“{title}” has been started; its board and progress will no longer show. Remove it?`,craftSize:`Course size`,sizeAuto:`Let the teacher decide`,sizeAutoHint:`Sized to your goal; a small question may need only a lesson or two`,sizeShort:`Short`,sizeShortHint:`3–8 lessons on what matters most`,sizeStandard:`Standard`,sizeStandardHint:`10–20 lessons: foundations, practice and an applied project`,sizeFull:`Full`,sizeFullHint:`25–45 lessons, thorough, with room to go deeper`,buildAnswers:`Going through your answers`,buildMaterials:`Reading your materials`,buildUnits:`Planning the units`,buildLessons:`Writing the lessons`,buildLessonsSoFar:`Writing the lessons: {count} so far`,workPlaceholder:`Write one step per line and put math inside $…$, e.g. $x^2+6x+9=(x+3)^2$`,workPreview:`Preview`,wrongStep:`Where it went wrong`,fixedStep:`It should read`,correction:`Correction`,correctionOf:`Correction: {tag}`,correcting:`Correcting it on the board…`,seeCorrection:`See the correction`,handout:`Handout`,handoutHint:`A one-page printable handout of this lesson`,handoutOfLesson:`Handout of this lesson`,handoutMaking:`Writing the handout…`,handoutPoints:`Key points`,handoutExample:`Worked example`,handoutMistakes:`Common mistakes`,handoutGlossary:`Glossary`,handoutQuestions:`Check yourself`,handoutAnswer:`Answer`,backToLesson:`Back to the lesson`,addMaterials:`Add materials`,addMaterialsTitle:`Add materials to this course`,addMaterialsHint:`Choose some materials (or upload them now). The teacher reads what they cover and proposes changes to the outline; nothing changes until you apply them, lessons you have started keep their progress, and later lessons cite the materials.`,addMaterialsPlaceholder:`How should the teacher use them? (optional) For example: add the worked examples from chapter 5`,addMaterialsSend:`Ask the teacher how to add them`,changeMaterials:`Change materials`,proposalMaterials:`From the added materials: {titles}`,librarySearch:`Find: type to filter by title or topic, press Enter to search the text`,librarySearchText:`Search text`,libraryFound:`{count} passages in the text`,libraryNotFound:`Nothing in the text matches “{query}”`,libraryNoTitleMatch:`No title or topic matches. Press Enter to search the text.`,pageN:`p. {page}`,pagesN:`pp. {from}–{to}`,pdfPageN:`PDF page {page}`,pdfPagesN:`PDF pages {from}–{to}`,slideN:`slide {slide}`,outlineTitle:`Contents ({count})`,outlineBookmarks:`from the PDF bookmarks`,outlineHeadings:`found from the headings`,outlinePrinted:`page numbers as printed`,lessonSourcesTitle:`This lesson teaches from:`,citeQuote:`Quoted: “{quote}”`,tourLabel:`Classroom tour`,tourReplay:`Classroom tour`,tourSkip:`Skip`,tourBack:`Back`,tourNext:`Next`,tourStart:`Start the lesson`,tourBoardTitle:`The teacher writes here`,tourBoard:`The board fills up as the teacher talks. Drag or scroll to move around it, hold Ctrl (⌘ on a Mac) and scroll to zoom, and use All in the top right to see the whole lesson.`,tourControlsTitle:`Play and pace`,tourControls:`Play, pause, the previous and next step and the speed are here; Space pauses too. Captions and sound can be switched at any time.`,tourRaiseTitle:`Raise your hand`,tourRaise:`Choose Raise hand, or type in the question box. You can also say it: click the microphone, or hold V while you speak and let go to put the question in the box. The teacher answers, then carries on.`,tourReexplainTitle:`Lost at this step?`,tourReexplain:`Choose Explain differently for an analogy, a drawing, an example, a simpler or a deeper take.`,tourChallengeTitle:`Spotted a mistake?`,tourChallenge:`Choose Is this step wrong? The teacher checks it carefully first; a real mistake is corrected there and fixed in the lesson.`,tourPanelTitle:`Goals and transcript`,tourPanel:`See how far the lesson's goals have come; everything said is in the transcript, and choosing a line goes back to it.`,outlineView:`How the outline is shown`,viewList:`List`,viewMap:`Map`,mapTools:`Map tools`,mapFollow:`Back to the newest`,mapPick:`Edit this lesson in the list`,depthTitle:`How this lesson treats its idea`,depthNone:`Any`,depth_intuition:`Intuition`,depth_definition:`Definition`,depth_derivation:`Derivation`,depth_application:`Application`,depth_extension:`Extension`,profileName:`What should the tutor call you?`,profileNameHint:`said once when a lesson opens; optional`,profileNamePlaceholder:`For example: Sam`,challenge:`Is this step wrong?`,challengeLabel:`Is this step wrong?`,challengeTitle:`What looks wrong in this step? (optional)`,challengeTitleStep:`What looks wrong in step {n}? (optional) “{text}”`,challengePlaceholder:`For example: shouldn’t 5 cm be 0.05 m?`,challengeHint:`The teacher works it through again first, which takes a few seconds to half a minute.`,challengeSend:`Ask the teacher to check`,challengeLine:`Wrong?`,challengeStep:`Is step {n} wrong?`,checkingStep:`Checking this step carefully…`,challenge_wrong:`It was wrong, now corrected`,challenge_right:`Checked: it is right`,challenge_unclear:`Depends on the convention`,fixed:`Corrected`,fixedWas:`It said: {was}`,itemChallenge:`Something wrong with this question?`,explainThis:`Explain this`,explainTitle:`Your tutor explains this question`,explainSaved:`Also kept under Ask anything, so you can open it again.`,explainClose:`Close`,itemChallengeTitle:`What looks wrong? (optional)`,itemChallengePlaceholder:`For example: I think B is right too, or: is the unit in the answer wrong?`,itemChallengeHint:`The teacher works it through first, which takes a few seconds to half a minute. You can go on meanwhile.`,itemChecking:`Checking this question carefully…`,itemCheckTitle:`Teacher’s check`,itemCheck_wrong:`It was wrong, now corrected`,itemCheck_unclear:`It was unclear, now spelled out`,itemCheck_misgraded:`It was graded wrongly, now regraded`,itemCheck_right:`Checked: it is right`,regraded:` (regraded)`,itemCheckDone:`Question {n} checked: {verdict}.`,itemCheckRegraded:` Your answer was graded again.`,itemCheckEarlier:` Earlier answers to this question graded again too: {count}.`,itemCheckFailedNotice:`Question {n} could not be checked: {message}`,fixedWasItem:`Before the fix:`,fixedPart_prompt:`Question: {text}`,fixedPart_option:`Option {id}: {text}`,fixedPart_answer:`Answer: {text}`,fixedPart_unit:`Unit: {text}`,fixedPart_tolerance:`Tolerance: {text}`,fixedPart_explanation:`Explanation: {text}`,fixedPart_hints:`Hints: {text}`,fixedPart_rubric:`Rubric: {text}`,fixedPart_figure:`The figure was redrawn`,lessonGoals:`Lesson goals`,transcript:`Transcript`,showPanel:`Transcript`,hidePanel:`Hide the side panel`,panelTitle:`Lesson side panel`,boardFont:`Board font`,fontHand:`Handwriting`,fontStandard:`Standard`,textSize:`Text size`,textStandard:`Standard`,textLarge:`Large`,textLarger:`Extra large`,textSizeHint:`Enlarges all of Aha Tutor’s text, right away. The board and the mind map have their own zoom buttons; DSH’s Settings → General → Font size changes the text here too.`,digestMissing:`{count} part(s) could not be read ({parts}); the digest below leaves them out.`,redigest:`Digest again`,revisingSoFar:`Revising… {count} lessons so far`,"err_bad-url":`This address cannot be imported: only public http or https sites are supported, not this computer, the local network or addresses with credentials.`,err_network:`The page could not be loaded or took too long. Check the address and try again.`,err_http:`The page returned an error and could not be imported.`,blueprintSoFar:`Designing your course blueprint… {count} lessons so far`,reexplainedAs:`Re-explained: {style}`,digestReading:`Reading the whole document: {done} of {total} parts read`,digestWriting:`Combining the notes into one digest`,keepsRunning:`You can leave this page; it keeps going in the background.`,err_cancelled:`Cancelled.`,courseCreatedInChat:`Created the course "{title}". Continue it in Aha.`,err_failed:`Something went wrong. Try again in a moment.`,err_invalid:`This request could not be handled. Reload the page and try again; if it keeps happening, quit and reopen DSH.`,"err_not-found":`This item could not be found. It may have been deleted.`,err_forbidden:`You are not allowed to do this.`,"err_unknown-endpoint":`The plugin was just updated. Quit and reopen DSH, then try again.`,err_aborted:`The upload was interrupted. Try again.`,err_connection:`Could not reach DSH. Make sure it is still open, then try again.`,err_missing:`The task was lost, perhaps because DSH restarted. Try again.`,"err_llm-missing":`No model is available yet. Set up a model provider in DSH settings first.`,"err_no-board":`The board is not written yet. Try again once its first step is up.`,"err_empty-question":`Type your question first.`,"err_empty-goal":`Tell me what you want to learn, or add some material.`,"err_empty-change":`Describe the change you want first.`,"err_no-blueprint":`There is no course blueprint yet. Generate one first.`,"err_no-proposal":`There is no proposed change. It may have been applied or discarded already.`,"err_bad-pack":`This file is not a course pack that can be imported.`,"err_pack-too-large":`This course pack is too large to import.`,"err_pack-too-new":`This course pack comes from a newer version of Aha. Update the plugin, then import it.`,"err_nothing-to-review":`Nothing to review yet: write a note or work in the project folder first.`,"err_cannot-tick":`Only study items on today or an earlier day can be ticked.`,"err_exam-incomplete":`An exam needs a title and a date.`,"err_no-material":`Pick at least one material first.`,"err_material-no-text":`The selected material has no readable text. Images and scanned PDFs cannot be read as text.`,"err_empty-topic":`Give a topic or a web address first.`,"err_no-credentials":`DSH credentials are not available in this profile, so the key cannot be saved.`,"err_bad-key":`The key looks wrong: use 8–1024 letters, digits or symbols with no spaces.`,err_unsupported:`This file type is not supported. Upload a PDF, Word or PowerPoint file, an image, or a text file such as .md, .txt or .csv.`,"err_old-office":`Old .doc/.ppt files are not supported. Save them as .docx/.pptx and upload again.`,err_encrypted:`This PDF is password protected. Remove the password and upload it again.`,err_unreadable:`This file could not be read. It may be damaged; export it again and retry.`,"err_no-text":`No text was found in this file.`,"err_scan-needs-vision":`This is a scan, with no text to read directly. To read the text in it, pick a model marked 🖼 (it can see images) in Aha settings, such as DeepSeek-V4.1-Flash, and upload it again.`,"err_pictures-need-vision":`Everything in this file is pictures. To read the text in them, pick a model marked 🖼 (it can see images) in Aha settings, such as DeepSeek-V4.1-Flash, and upload it again.`,"err_llm-no-vision":`The current model cannot see images. Pick a model marked 🖼 in Aha settings.`,"err_image-unusable":`This picture could not be given to the model.`,err_empty:`This file is empty.`,"err_too-large":`The file is larger than 200 MB. Split it into smaller parts and upload them.`,"err_focus-empty":`Nothing in these materials matches the focus. Reword it or clear it and try again.`,"err_image-too-large":`Images must be smaller than 10 MB.`,"err_page-too-large":`This page is too large to import.`,"err_page-no-text":`No readable text was found on this page.`,"err_tts-address":`The speech service address is wrong: use a full https address (http only for this computer) without a user name or password.`,"err_tts-app-id":`Volcengine speech needs an App ID.`,"err_tts-azure":`The Azure region or voice name is not valid. Enter it as the Azure portal shows it.`,"err_tts-config":`The speech service settings are incomplete. Check them in settings.`,"err_tts-network":`Could not reach the speech service. Check the network and the service address.`,"err_tts-stalled":`The speech service is not responding. Check that it is running and that its address is right.`,"err_tts-timeout":`The speech service took too long. Try again later.`,"err_tts-too-large":`The speech service returned too much audio.`,"err_tts-auth":`The speech service rejected the key. Check that it is correct.`,"err_tts-no-key":`No key is saved for this speech service. Add it in settings first.`,"err_tts-rate-limit":`The speech service is limiting requests. Try again later.`,"err_tts-server":`The speech service had an error. Try again later.`,"err_tts-request":`The speech service refused the request. Check the voice and other settings.`,"err_tts-empty":`There is nothing to read aloud.`,"err_tts-response":`The speech service returned no usable audio. Try again later or pick another voice.`,"err_tts-failed":`Speech synthesis failed. Try again later.`,"err_no-materials":`Choose at least one material first.`,"err_materials-known":`These materials are already part of this course.`,"err_materials-full":`A course can use at most 12 materials, and this one has them all.`,err_speech:`Reading aloud did not work. Try another system voice, or switch to a cloud voice.`,"err_speech-stalled":`The system voice got stuck and made no sound.`,err_playback:`The audio could not be played. Try again.`,exportFailed:`The export did not finish. Try again.`},sh=[`slots`,`locale`,`connection`],ch=`aha-tutor`,lh=`dsh-aha-tutor/board`,uh=`ahaTutorBoard`,dh=[`aha_whiteboard`,`aha_quiz`,`aha_course`,`aha_cheatsheet`,`aha_learner`];function fh({size:e}){return(0,i.jsx)(Ht,{name:`logo`,size:e})}function ph({rpc:e,t,language:n,dsh:r}){return(0,i.jsx)(Jm,{rpc:e,t,language:n(),dsh:r})}function mh(e){e.effect(()=>e.locale.register(ih,{zh:ah,en:oh}),`aha-tutor: copy`),e.effect(()=>{let e=document.createElement(`style`);return e.dataset.plugin=`dsh-aha-tutor`,e.textContent=Bp,document.head.append(e),()=>e.remove()},`aha-tutor: style`);let t=e.locale.bind(ih),n=e.get(`connection`).rpc,r=()=>String(e.locale.getLocale?.()?.active??`zh`).startsWith(`zh`)?`zh`:`en`,i=Object.freeze({selectPanel:()=>e.get(`layout`)?.selectPanel?.(ch),async openWorkspace(t,n){let r=e.get(`workspaces`),i=e.get(`uiWorkspace`);if(typeof r?.create!=`function`||typeof i?.startSession!=`function`)return!1;let a=await r.create({path:t});return i.startSession(a.workspaceId,{prompt:n,clearPreviousDraft:!0}),!0},openBoardTab(t){let n=e.get(`sidebarRight`);if(typeof n?.openTab!=`function`)return!1;try{return n.openTab(uh,{params:t}),!0}catch{return!1}}});e.slots.inject(`main`,()=>e.slots.register({name:`main`,key:ch,locale:ih,inject:()=>({rpc:n,language:r,dsh:i})},ph)),e.slots.inject(`sidebar.panellist`,()=>e.slots.register({name:`sidebar.panellist`,id:ch,order:20,locale:ih,label:()=>t(`panelLabel`)},fh)),e.inject([`sidebarRightTabs`],e=>{e.effect(()=>e.sidebarRightTabs.register({id:lh,kind:uh,title:()=>t(`boardSession`),keepMounted:!0}),`aha-tutor: board tab`)}),e.slots.inject(`sidebar.right.pane.tab`,()=>e.slots.register({name:`sidebar.right.pane.tab`,key:lh,locale:ih,inject:()=>({rpc:n,language:r(),dsh:i})},Zm));for(let t of dh)e.slots.inject(`tool.call.toolview`,()=>e.slots.register({name:`tool.call.toolview`,key:t,locale:ih,inject:()=>({rpc:n,language:r(),dsh:i})},th))}return n.apply=mh,n.inject=sh,t.exports}});
759
774
  //# sourceMappingURL=client.js.map