0&&(p+=y,le)))for(n=0;n=a)continue;(o>0||e.hskipBeforeAndAfter)&&(i=l.deflt(h.pregap,u),0!==i&&(M=$e.makeSpan(["arraycolsep"],[]),M.style.width=E(i),S.push(M)));let d=[];for(n=0;n0){const e=$e.makeLineSpan("hline",r,m),t=$e.makeLineSpan("hdashline",r,m),n=[{type:"elem",elem:c,shift:0}];for(;h.length>0;){const r=h.pop(),o=r.pos-k;r.isDashed?n.push({type:"elem",elem:t,shift:o}):n.push({type:"elem",elem:e,shift:o})}c=$e.makeVList({positionType:"individualShift",children:n},r)}if(0===A.length)return $e.makeSpan(["mord"],[c],r);{let e=$e.makeVList({positionType:"individualShift",children:A},r);return e=$e.makeSpan(["tag"],[e],r),$e.makeFragment([c,e])}},Br={c:"center ",l:"left ",r:"right "},Cr=function(e,t){const r=[],n=new Oe.MathNode("mtd",[],["mtr-glue"]),o=new Oe.MathNode("mtd",[],["mml-eqn-num"]);for(let s=0;s0){const t=e.cols;let r="",n=!1,o=0,i=t.length;"separator"===t[0].type&&(a+="top ",o=1),"separator"===t[t.length-1].type&&(a+="bottom ",i-=1);for(let e=o;e0?"left ":"",a+=h[h.length-1].length>0?"right ":"";for(let e=1;e-1?"alignat":"align",s="split"===e.envName,i=zr(e.parser,{cols:n,addJot:!0,autoTag:s?void 0:Mr(e.envName),emptySingleRow:!0,colSeparationType:o,maxNumCols:s?2:void 0,leqno:e.parser.settings.leqno},"display");let a,l=0;const c={type:"ordgroup",mode:e.mode,body:[]};if(r[0]&&"ordgroup"===r[0].type){let e="";for(let t=0;t0&&h&&(r=1),n[e]={type:"align",align:t,pregap:r,postgap:0}}return i.colSeparationType=h?"align":"alignat",i};br({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,r){const n=(Fe(r[0])?[r[0]]:Ve(r[0],"ordgroup").body).map((function(e){const r=_e(e).text;if(-1!=="lcr".indexOf(r))return{type:"align",align:r};if("|"===r)return{type:"separator",separator:"|"};if(":"===r)return{type:"separator",separator:":"};throw new t("Unknown column alignment: "+r,e)})),o={cols:n,hskipBeforeAndAfter:!0,maxNumCols:n.length};return zr(e.parser,o,Ar(e.envName))},htmlBuilder:Tr,mathmlBuilder:Cr}),br({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){const r={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")];let n="c";const o={hskipBeforeAndAfter:!1,cols:[{type:"align",align:n}]};if("*"===e.envName.charAt(e.envName.length-1)){const r=e.parser;if(r.consumeSpaces(),"["===r.fetch().text){if(r.consume(),r.consumeSpaces(),n=r.fetch().text,-1==="lcr".indexOf(n))throw new t("Expected l or c or r",r.nextToken);r.consume(),r.consumeSpaces(),r.expect("]"),r.consume(),o.cols=[{type:"align",align:n}]}}const s=zr(e.parser,o,Ar(e.envName)),i=Math.max(0,...s.body.map((e=>e.length)));return s.cols=new Array(i).fill({type:"align",align:n}),r?{type:"leftright",mode:e.mode,body:[s],left:r[0],right:r[1],rightColor:void 0}:s},htmlBuilder:Tr,mathmlBuilder:Cr}),br({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){const t=zr(e.parser,{arraystretch:.5},"script");return t.colSeparationType="small",t},htmlBuilder:Tr,mathmlBuilder:Cr}),br({type:"array",names:["subarray"],props:{numArgs:1},handler(e,r){const n=(Fe(r[0])?[r[0]]:Ve(r[0],"ordgroup").body).map((function(e){const r=_e(e).text;if(-1!=="lc".indexOf(r))return{type:"align",align:r};throw new t("Unknown column alignment: "+r,e)}));if(n.length>1)throw new t("{subarray} can contain only one column");let o={cols:n,hskipBeforeAndAfter:!1,arraystretch:.5};if(o=zr(e.parser,o,"script"),o.body.length>0&&o.body[0].length>1)throw new t("{subarray} can contain only one column");return o},htmlBuilder:Tr,mathmlBuilder:Cr}),br({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){const t=zr(e.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},Ar(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:e.envName.indexOf("r")>-1?".":"\\{",right:e.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:Tr,mathmlBuilder:Cr}),br({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:Nr,htmlBuilder:Tr,mathmlBuilder:Cr}),br({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){l.contains(["gather","gather*"],e.envName)&&Sr(e);const t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Mr(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return zr(e.parser,t,"display")},htmlBuilder:Tr,mathmlBuilder:Cr}),br({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:Nr,htmlBuilder:Tr,mathmlBuilder:Cr}),br({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){Sr(e);const t={autoTag:Mr(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return zr(e.parser,t,"display")},htmlBuilder:Tr,mathmlBuilder:Cr}),br({type:"array",names:["CD"],props:{numArgs:0},handler:e=>(Sr(e),function(e){const r=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){r.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();const n=e.fetch().text;if("&"!==n&&"\\\\"!==n){if("\\end"===n){0===r[r.length-1].length&&r.pop();break}throw new t("Expected \\\\ or \\cr or \\end",e.nextToken)}e.consume()}let n=[];const o=[n];for(let a=0;a-1);else{if(!("<>AV".indexOf(o)>-1))throw new t('Expected one of "<>AV=|." after @',l[r]);for(let e=0;e<2;e++){let n=!0;for(let c=r+1;c{const r=e.font,n=t.withFont(r);return gt(e.body,n)},Rr=(e,t)=>{const r=e.font,n=t.withFont(r);return St(e.body,n)},Ir={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};d({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:({parser:e,funcName:t},r)=>{const n=f(r[0]);let o=t;return o in Ir&&(o=Ir[o]),{type:"font",mode:e.mode,font:o.slice(1),body:n}},htmlBuilder:$r,mathmlBuilder:Rr}),d({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:({parser:e},t)=>{const r=t[0],n=l.isCharacterBox(r);return{type:"mclass",mode:e.mode,mclass:$t(r),body:[{type:"font",mode:e.mode,font:"boldsymbol",body:r}],isCharacterBox:n}}}),d({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:({parser:e,funcName:t,breakOnTokenText:r},n)=>{const{mode:o}=e,s=e.parseExpression(!0,r);return{type:"font",mode:o,font:`math${t.slice(1)}`,body:{type:"ordgroup",mode:e.mode,body:s}}},htmlBuilder:$r,mathmlBuilder:Rr});const Hr=(e,t)=>{let r=t;return"display"===e?r=r.id>=Je.SCRIPT.id?r.text():Je.DISPLAY:"text"===e&&r.size===Je.DISPLAY.size?r=Je.TEXT:"script"===e?r=Je.SCRIPT:"scriptscript"===e&&(r=Je.SCRIPTSCRIPT),r},Or=(e,t)=>{const r=Hr(e.size,t.style),n=r.fracNum(),o=r.fracDen();let s;s=t.havingStyle(n);const i=gt(e.numer,s,t);if(e.continued){const e=8.5/t.fontMetrics().ptPerEm,r=3.5/t.fontMetrics().ptPerEm;i.height=i.height0?3*h:7*h,u=t.fontMetrics().denom1):(c>0?(m=t.fontMetrics().num2,p=h):(m=t.fontMetrics().num3,p=3*h),u=t.fontMetrics().denom2),l){const e=t.fontMetrics().axisHeight;m-i.depth-(e+.5*c){let r=new Oe.MathNode("mfrac",[St(e.numer,t),St(e.denom,t)]);if(e.hasBarLine){if(e.barSize){const n=O(e.barSize,t);r.setAttribute("linethickness",E(n))}}else r.setAttribute("linethickness","0px");const n=Hr(e.size,t.style);if(n.size!==t.style.size){r=new Oe.MathNode("mstyle",[r]);const e=n.size===Je.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",e),r.setAttribute("scriptlevel","0")}if(null!=e.leftDelim||null!=e.rightDelim){const t=[];if(null!=e.leftDelim){const r=new Oe.MathNode("mo",[new Oe.TextNode(e.leftDelim.replace("\\",""))]);r.setAttribute("fence","true"),t.push(r)}if(t.push(r),null!=e.rightDelim){const r=new Oe.MathNode("mo",[new Oe.TextNode(e.rightDelim.replace("\\",""))]);r.setAttribute("fence","true"),t.push(r)}return xt(t)}return r};d({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:({parser:e,funcName:t},r)=>{const n=r[0],o=r[1];let s,i=null,a=null,l="auto";switch(t){case"\\dfrac":case"\\frac":case"\\tfrac":s=!0;break;case"\\\\atopfrac":s=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":s=!1,i="(",a=")";break;case"\\\\bracefrac":s=!1,i="\\{",a="\\}";break;case"\\\\brackfrac":s=!1,i="[",a="]";break;default:throw new Error("Unrecognized genfrac command")}switch(t){case"\\dfrac":case"\\dbinom":l="display";break;case"\\tfrac":case"\\tbinom":l="text"}return{type:"genfrac",mode:e.mode,continued:!1,numer:n,denom:o,hasBarLine:s,leftDelim:i,rightDelim:a,size:l,barSize:null}},htmlBuilder:Or,mathmlBuilder:Er}),d({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:({parser:e,funcName:t},r)=>{const n=r[0],o=r[1];return{type:"genfrac",mode:e.mode,continued:!0,numer:n,denom:o,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}}),d({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler({parser:e,funcName:t,token:r}){let n;switch(t){case"\\over":n="\\frac";break;case"\\choose":n="\\binom";break;case"\\atop":n="\\\\atopfrac";break;case"\\brace":n="\\\\bracefrac";break;case"\\brack":n="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:n,token:r}}});const Lr=["display","text","script","scriptscript"],Dr=function(e){let t=null;return e.length>0&&(t=e,t="."===t?null:t),t};d({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler({parser:e},t){const r=t[4],n=t[5],o=f(t[0]),s="atom"===o.type&&"open"===o.family?Dr(o.text):null,i=f(t[1]),a="atom"===i.type&&"close"===i.family?Dr(i.text):null,l=Ve(t[2],"size");let c,h=null;l.isBlank?c=!0:(h=l.value,c=h.number>0);let m="auto",p=t[3];if("ordgroup"===p.type){if(p.body.length>0){const e=Ve(p.body[0],"textord");m=Lr[Number(e.text)]}}else p=Ve(p,"textord"),m=Lr[Number(p.text)];return{type:"genfrac",mode:e.mode,numer:r,denom:n,continued:!1,hasBarLine:c,barSize:h,leftDelim:s,rightDelim:a,size:m}},htmlBuilder:Or,mathmlBuilder:Er}),d({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:({parser:e,funcName:t,token:r},n)=>({type:"infix",mode:e.mode,replaceWith:"\\\\abovefrac",size:Ve(n[0],"size").value,token:r})}),d({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:({parser:e,funcName:t},r)=>{const n=r[0],o=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Ve(r[1],"infix").size),s=r[2],i=o.number>0;return{type:"genfrac",mode:e.mode,numer:n,denom:s,continued:!1,hasBarLine:i,barSize:o,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:Or,mathmlBuilder:Er});const Pr=(e,t)=>{const r=t.style;let n,o;"supsub"===e.type?(n=e.sup?gt(e.sup,t.havingStyle(r.sup()),t):gt(e.sub,t.havingStyle(r.sub()),t),o=Ve(e.base,"horizBrace")):o=Ve(e,"horizBrace");const s=gt(o.base,t.havingBaseStyle(Je.DISPLAY)),i=Pe(o,t);let a;if(o.isOver?(a=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:i}]},t),a.children[0].children[0].children[1].classes.push("svg-align")):(a=$e.makeVList({positionType:"bottom",positionData:s.depth+.1+i.height,children:[{type:"elem",elem:i},{type:"kern",size:.1},{type:"elem",elem:s}]},t),a.children[0].children[0].children[0].classes.push("svg-align")),n){const e=$e.makeSpan(["mord",o.isOver?"mover":"munder"],[a],t);a=o.isOver?$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:e},{type:"kern",size:.2},{type:"elem",elem:n}]},t):$e.makeVList({positionType:"bottom",positionData:e.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:e}]},t)}return $e.makeSpan(["mord",o.isOver?"mover":"munder"],[a],t)};d({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>({type:"horizBrace",mode:e.mode,label:t,isOver:/^\\over/.test(t),base:r[0]}),htmlBuilder:Pr,mathmlBuilder:(e,t)=>{const r=De(e.label);return new Oe.MathNode(e.isOver?"mover":"munder",[St(e.base,t),r])}}),d({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:({parser:e},t)=>{const r=t[1],n=Ve(t[0],"url").url;return e.settings.isTrusted({command:"\\href",url:n})?{type:"href",mode:e.mode,href:n,body:b(r)}:e.formatUnsupportedCmd("\\href")},htmlBuilder:(e,t)=>{const r=ct(e.body,t,!1);return $e.makeAnchor(e.href,[],r,t)},mathmlBuilder:(e,t)=>{let r=vt(e.body,t);return r instanceof Ie||(r=new Ie("mrow",[r])),r.setAttribute("href",e.href),r}}),d({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:({parser:e},t)=>{const r=Ve(t[0],"url").url;if(!e.settings.isTrusted({command:"\\url",url:r}))return e.formatUnsupportedCmd("\\url");const n=[];for(let e=0;e({type:"hbox",mode:e.mode,body:b(t[0])}),htmlBuilder(e,t){const r=ct(e.body,t,!1);return $e.makeFragment(r)},mathmlBuilder:(e,t)=>new Oe.MathNode("mrow",kt(e.body,t))}),d({type:"html",names:["\\htmlClass","\\htmlId","\\htmlStyle","\\htmlData"],props:{numArgs:2,argTypes:["raw","original"],allowedInText:!0},handler:({parser:e,funcName:r,token:n},o)=>{const s=Ve(o[0],"raw").string,i=o[1];let a;e.settings.strict&&e.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");const l={};switch(r){case"\\htmlClass":l.class=s,a={command:"\\htmlClass",class:s};break;case"\\htmlId":l.id=s,a={command:"\\htmlId",id:s};break;case"\\htmlStyle":l.style=s,a={command:"\\htmlStyle",style:s};break;case"\\htmlData":{const e=s.split(",");for(let r=0;r{const r=ct(e.body,t,!1),n=["enclosing"];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\s+/));const o=$e.makeSpan(n,r,t);for(const t in e.attributes)"class"!==t&&e.attributes.hasOwnProperty(t)&&o.setAttribute(t,e.attributes[t]);return o},mathmlBuilder:(e,t)=>vt(e.body,t)}),d({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:({parser:e},t)=>({type:"htmlmathml",mode:e.mode,html:b(t[0]),mathml:b(t[1])}),htmlBuilder:(e,t)=>{const r=ct(e.html,t,!1);return $e.makeFragment(r)},mathmlBuilder:(e,t)=>vt(e.mathml,t)});const Vr=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};{const r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!r)throw new t("Invalid size: '"+e+"' in \\includegraphics");const n={number:+(r[1]+r[2]),unit:r[3]};if(!H(n))throw new t("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n}};d({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:({parser:e},r,n)=>{let o={number:0,unit:"em"},s={number:.9,unit:"em"},i={number:0,unit:"em"},a="";if(n[0]){const e=Ve(n[0],"raw").string.split(",");for(let r=0;r{const r=O(e.height,t);let n=0;e.totalheight.number>0&&(n=O(e.totalheight,t)-r);let o=0;e.width.number>0&&(o=O(e.width,t));const s={height:E(r+n)};o>0&&(s.width=E(o)),n>0&&(s.verticalAlign=E(-n));const i=new G(e.src,e.alt,s);return i.height=r,i.depth=n,i},mathmlBuilder:(e,t)=>{const r=new Oe.MathNode("mglyph",[]);r.setAttribute("alt",e.alt);const n=O(e.height,t);let o=0;if(e.totalheight.number>0&&(o=O(e.totalheight,t)-n,r.setAttribute("valign",E(-o))),r.setAttribute("height",E(n+o)),e.width.number>0){const n=O(e.width,t);r.setAttribute("width",E(n))}return r.setAttribute("src",e.src),r}}),d({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler({parser:e,funcName:t},r){const n=Ve(r[0],"size");if(e.settings.strict){const r="m"===t[1],o="mu"===n.value.unit;r?(o||e.settings.reportNonstrict("mathVsTextUnits",`LaTeX's ${t} supports only mu units, not ${n.value.unit} units`),"math"!==e.mode&&e.settings.reportNonstrict("mathVsTextUnits",`LaTeX's ${t} works only in math mode`)):o&&e.settings.reportNonstrict("mathVsTextUnits",`LaTeX's ${t} doesn't support mu units`)}return{type:"kern",mode:e.mode,dimension:n.value}},htmlBuilder:(e,t)=>$e.makeGlue(e.dimension,t),mathmlBuilder(e,t){const r=O(e.dimension,t);return new Oe.SpaceNode(r)}}),d({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:({parser:e,funcName:t},r)=>{const n=r[0];return{type:"lap",mode:e.mode,alignment:t.slice(5),body:n}},htmlBuilder:(e,t)=>{let r;"clap"===e.alignment?(r=$e.makeSpan([],[gt(e.body,t)]),r=$e.makeSpan(["inner"],[r],t)):r=$e.makeSpan(["inner"],[gt(e.body,t)]);const n=$e.makeSpan(["fix"],[]);let o=$e.makeSpan([e.alignment],[r,n],t);const s=$e.makeSpan(["strut"]);return s.style.height=E(o.height+o.depth),o.depth&&(s.style.verticalAlign=E(-o.depth)),o.children.unshift(s),o=$e.makeSpan(["thinbox"],[o],t),$e.makeSpan(["mord","vbox"],[o],t)},mathmlBuilder:(e,t)=>{const r=new Oe.MathNode("mpadded",[St(e.body,t)]);if("rlap"!==e.alignment){const t="llap"===e.alignment?"-1":"-0.5";r.setAttribute("lspace",t+"width")}return r.setAttribute("width","0px"),r}}),d({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler({funcName:e,parser:t},r){const n=t.mode;t.switchMode("math");const o="\\("===e?"\\)":"$",s=t.parseExpression(!1,o);return t.expect(o),t.switchMode(n),{type:"styling",mode:t.mode,style:"text",body:s}}}),d({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,r){throw new t(`Mismatched ${e.funcName}`)}});const _r=(e,t)=>{switch(t.style.size){case Je.DISPLAY.size:return e.display;case Je.TEXT.size:return e.text;case Je.SCRIPT.size:return e.script;case Je.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};d({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:({parser:e},t)=>({type:"mathchoice",mode:e.mode,display:b(t[0]),text:b(t[1]),script:b(t[2]),scriptscript:b(t[3])}),htmlBuilder:(e,t)=>{const r=_r(e,t),n=ct(r,t,!1);return $e.makeFragment(n)},mathmlBuilder:(e,t)=>{const r=_r(e,t);return vt(r,t)}});const Fr=(e,t,r,n,o,s,i)=>{e=$e.makeSpan([],[e]);const a=r&&l.isCharacterBox(r);let c,h,m;if(t){const e=gt(t,n.havingStyle(o.sup()),n);h={elem:e,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-e.depth)}}if(r){const e=gt(r,n.havingStyle(o.sub()),n);c={elem:e,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-e.height)}}if(h&&c){const t=n.fontMetrics().bigOpSpacing5+c.elem.height+c.elem.depth+c.kern+e.depth+i;m=$e.makeVList({positionType:"bottom",positionData:t,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:E(-s)},{type:"kern",size:c.kern},{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:E(s)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(c){const t=e.height-i;m=$e.makeVList({positionType:"top",positionData:t,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:E(-s)},{type:"kern",size:c.kern},{type:"elem",elem:e}]},n)}else{if(!h)return e;{const t=e.depth+i;m=$e.makeVList({positionType:"bottom",positionData:t,children:[{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:E(s)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}}const p=[m];if(c&&0!==s&&!a){const e=$e.makeSpan(["mspace"],[],n);e.style.marginRight=E(s),p.unshift(e)}return $e.makeSpan(["mop","op-limits"],p,n)},Gr=["\\smallint"],Ur=(e,t)=>{let r,n,o,s=!1;"supsub"===e.type?(r=e.sup,n=e.sub,o=Ve(e.base,"op"),s=!0):o=Ve(e,"op");const i=t.style;let a,c=!1;if(i.size===Je.DISPLAY.size&&o.symbol&&!l.contains(Gr,o.name)&&(c=!0),o.symbol){const e=c?"Size2-Regular":"Size1-Regular";let r="";if("\\oiint"!==o.name&&"\\oiiint"!==o.name||(r=o.name.slice(1),o.name="oiint"===r?"\\iint":"\\iiint"),a=$e.makeSymbol(o.name,e,"math",t,["mop","op-symbol",c?"large-op":"small-op"]),r.length>0){const e=a.italic,n=$e.staticSvg(r+"Size"+(c?"2":"1"),t);a=$e.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:0},{type:"elem",elem:n,shift:c?.08:0}]},t),o.name="\\"+r,a.classes.unshift("mop"),a.italic=e}}else if(o.body){const e=ct(o.body,t,!0);1===e.length&&e[0]instanceof W?(a=e[0],a.classes[0]="mop"):a=$e.makeSpan(["mop"],e,t)}else{const e=[];for(let r=1;r{let r;if(e.symbol)r=new Ie("mo",[yt(e.name,e.mode)]),l.contains(Gr,e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new Ie("mo",kt(e.body,t));else{r=new Ie("mi",[new He(e.name.slice(1))]);const t=new Ie("mo",[yt("","text")]);r=e.parentIsSupSub?new Ie("mrow",[r,t]):Re([r,t])}return r},Xr={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};d({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:({parser:e,funcName:t},r)=>{let n=t;return 1===n.length&&(n=Xr[n]),{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:Ur,mathmlBuilder:Wr}),d({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:b(r)}},htmlBuilder:Ur,mathmlBuilder:Wr});const Yr={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};d({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"],props:{numArgs:0},handler:({parser:e,funcName:t})=>({type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:t}),htmlBuilder:Ur,mathmlBuilder:Wr}),d({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler:({parser:e,funcName:t})=>({type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:t}),htmlBuilder:Ur,mathmlBuilder:Wr}),d({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler({parser:e,funcName:t}){let r=t;return 1===r.length&&(r=Yr[r]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:Ur,mathmlBuilder:Wr});const jr=(e,t)=>{let r,n,o,s,i=!1;if("supsub"===e.type?(r=e.sup,n=e.sub,o=Ve(e.base,"operatorname"),i=!0):o=Ve(e,"operatorname"),o.body.length>0){const e=o.body.map((e=>{const t=e.text;return"string"==typeof t?{type:"textord",mode:e.mode,text:t}:e})),r=ct(e,t.withFont("mathrm"),!0);for(let e=0;e{const n=r[0];return{type:"operatorname",mode:e.mode,body:b(n),alwaysHandleSupSub:"\\operatornamewithlimits"===t,limits:!1,parentIsSupSub:!1}},htmlBuilder:jr,mathmlBuilder:(e,t)=>{let r=kt(e.body,t.withFont("mathrm")),n=!0;for(let e=0;ee.toText())).join("");r=[new Oe.TextNode(e)]}const o=new Oe.MathNode("mi",r);o.setAttribute("mathvariant","normal");const s=new Oe.MathNode("mo",[yt("","text")]);return e.parentIsSupSub?new Oe.MathNode("mrow",[o,s]):Oe.newDocumentFragment([o,s])}}),xr("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@"),g({type:"ordgroup",htmlBuilder:(e,t)=>e.semisimple?$e.makeFragment(ct(e.body,t,!1)):$e.makeSpan(["mord"],ct(e.body,t,!0),t),mathmlBuilder:(e,t)=>vt(e.body,t,!0)}),d({type:"overline",names:["\\overline"],props:{numArgs:1},handler({parser:e},t){const r=t[0];return{type:"overline",mode:e.mode,body:r}},htmlBuilder(e,t){const r=gt(e.body,t.havingCrampedStyle()),n=$e.makeLineSpan("overline-line",t),o=t.fontMetrics().defaultRuleThickness,s=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*o},{type:"elem",elem:n},{type:"kern",size:o}]},t);return $e.makeSpan(["mord","overline"],[s],t)},mathmlBuilder(e,t){const r=new Oe.MathNode("mo",[new Oe.TextNode("‾")]);r.setAttribute("stretchy","true");const n=new Oe.MathNode("mover",[St(e.body,t),r]);return n.setAttribute("accent","true"),n}}),d({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"phantom",mode:e.mode,body:b(r)}},htmlBuilder:(e,t)=>{const r=ct(e.body,t.withPhantom(),!1);return $e.makeFragment(r)},mathmlBuilder:(e,t)=>{const r=kt(e.body,t);return new Oe.MathNode("mphantom",r)}}),d({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"hphantom",mode:e.mode,body:r}},htmlBuilder:(e,t)=>{let r=$e.makeSpan([],[gt(e.body,t.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(let e=0;e{const r=kt(b(e.body),t),n=new Oe.MathNode("mphantom",r),o=new Oe.MathNode("mpadded",[n]);return o.setAttribute("height","0px"),o.setAttribute("depth","0px"),o}}),d({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"vphantom",mode:e.mode,body:r}},htmlBuilder:(e,t)=>{const r=$e.makeSpan(["inner"],[gt(e.body,t.withPhantom())]),n=$e.makeSpan(["fix"],[]);return $e.makeSpan(["mord","rlap"],[r,n],t)},mathmlBuilder:(e,t)=>{const r=kt(b(e.body),t),n=new Oe.MathNode("mphantom",r),o=new Oe.MathNode("mpadded",[n]);return o.setAttribute("width","0px"),o}}),d({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler({parser:e},t){const r=Ve(t[0],"size").value,n=t[1];return{type:"raisebox",mode:e.mode,dy:r,body:n}},htmlBuilder(e,t){const r=gt(e.body,t),n=O(e.dy,t);return $e.makeVList({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]},t)},mathmlBuilder(e,t){const r=new Oe.MathNode("mpadded",[St(e.body,t)]),n=e.dy.number+e.dy.unit;return r.setAttribute("voffset",n),r}}),d({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0},handler:({parser:e})=>({type:"internal",mode:e.mode})}),d({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler({parser:e},t,r){const n=r[0],o=Ve(t[0],"size"),s=Ve(t[1],"size");return{type:"rule",mode:e.mode,shift:n&&Ve(n,"size").value,width:o.value,height:s.value}},htmlBuilder(e,t){const r=$e.makeSpan(["mord","rule"],[],t),n=O(e.width,t),o=O(e.height,t),s=e.shift?O(e.shift,t):0;return r.style.borderRightWidth=E(n),r.style.borderTopWidth=E(o),r.style.bottom=E(s),r.width=n,r.height=o+s,r.depth=-s,r.maxFontSize=1.125*o*t.sizeMultiplier,r},mathmlBuilder(e,t){const r=O(e.width,t),n=O(e.height,t),o=e.shift?O(e.shift,t):0,s=t.color&&t.getColor()||"black",i=new Oe.MathNode("mspace");i.setAttribute("mathbackground",s),i.setAttribute("width",E(r)),i.setAttribute("height",E(n));const a=new Oe.MathNode("mpadded",[i]);return o>=0?a.setAttribute("height",E(o)):(a.setAttribute("height",E(o)),a.setAttribute("depth",E(-o))),a.setAttribute("voffset",E(o)),a}});const Kr=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];d({type:"sizing",names:Kr,props:{numArgs:0,allowedInText:!0},handler:({breakOnTokenText:e,funcName:t,parser:r},n)=>{const o=r.parseExpression(!1,e);return{type:"sizing",mode:r.mode,size:Kr.indexOf(t)+1,body:o}},htmlBuilder:(e,t)=>{const r=t.havingSize(e.size);return Zr(e.body,r,t)},mathmlBuilder:(e,t)=>{const r=t.havingSize(e.size),n=kt(e.body,r),o=new Oe.MathNode("mstyle",n);return o.setAttribute("mathsize",E(r.sizeMultiplier)),o}}),d({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:({parser:e},t,r)=>{let n=!1,o=!1;const s=r[0]&&Ve(r[0],"ordgroup");if(s){let e="";for(let t=0;t{const r=$e.makeSpan([],[gt(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0,r.children))for(let e=0;e{const r=new Oe.MathNode("mpadded",[St(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}}),d({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler({parser:e},t,r){const n=r[0],o=t[0];return{type:"sqrt",mode:e.mode,body:o,index:n}},htmlBuilder(e,t){let r=gt(e.body,t.havingCrampedStyle());0===r.height&&(r.height=t.fontMetrics().xHeight),r=$e.wrapFragment(r,t);const n=t.fontMetrics().defaultRuleThickness;let o=n;t.style.idr.height+r.depth+s&&(s=(s+h-r.height-r.depth)/2);const m=a.height-r.height-s-l;r.style.paddingLeft=E(c);const p=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+m)},{type:"elem",elem:a},{type:"kern",size:l}]},t);if(e.index){const r=t.havingStyle(Je.SCRIPTSCRIPT),n=gt(e.index,r,t),o=.6*(p.height-p.depth),s=$e.makeVList({positionType:"shift",positionData:-o,children:[{type:"elem",elem:n}]},t),i=$e.makeSpan(["root"],[s]);return $e.makeSpan(["mord","sqrt"],[i,p],t)}return $e.makeSpan(["mord","sqrt"],[p],t)},mathmlBuilder(e,t){const{body:r,index:n}=e;return n?new Oe.MathNode("mroot",[St(r,t),St(n,t)]):new Oe.MathNode("msqrt",[St(r,t)])}});const Jr={display:Je.DISPLAY,text:Je.TEXT,script:Je.SCRIPT,scriptscript:Je.SCRIPTSCRIPT};d({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({breakOnTokenText:e,funcName:t,parser:r},n){const o=r.parseExpression(!0,e),s=t.slice(1,t.length-5);return{type:"styling",mode:r.mode,style:s,body:o}},htmlBuilder(e,t){const r=Jr[e.style],n=t.havingStyle(r).withFont("");return Zr(e.body,n,t)},mathmlBuilder(e,t){const r=Jr[e.style],n=t.havingStyle(r),o=kt(e.body,n),s=new Oe.MathNode("mstyle",o),i={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return s.setAttribute("scriptlevel",i[0]),s.setAttribute("displaystyle",i[1]),s}}),g({type:"supsub",htmlBuilder(e,t){const r=function(e,t){const r=e.base;return r?"op"===r.type?r.limits&&(t.style.size===Je.DISPLAY.size||r.alwaysHandleSupSub)?Ur:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(t.style.size===Je.DISPLAY.size||r.limits)?jr:null:"accent"===r.type?l.isCharacterBox(r.base)?zt:null:"horizBrace"===r.type&&!e.sub===r.isOver?Pr:null:null}(e,t);if(r)return r(e,t);const{base:n,sup:o,sub:s}=e,i=gt(n,t);let a,c;const h=t.fontMetrics();let m=0,p=0;const u=n&&l.isCharacterBox(n);if(o){const e=t.havingStyle(t.style.sup());a=gt(o,e,t),u||(m=i.height-e.fontMetrics().supDrop*e.sizeMultiplier/t.sizeMultiplier)}if(s){const e=t.havingStyle(t.style.sub());c=gt(s,e,t),u||(p=i.depth+e.fontMetrics().subDrop*e.sizeMultiplier/t.sizeMultiplier)}let d;d=t.style===Je.DISPLAY?h.sup1:t.style.cramped?h.sup3:h.sup2;const g=t.sizeMultiplier,f=E(.5/h.ptPerEm/g);let b,y=null;if(c){const t=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(i instanceof W||t)&&(y=E(-i.italic))}if(a&&c){m=Math.max(m,d,a.depth+.25*h.xHeight),p=Math.max(p,h.sub2);const e=4*h.defaultRuleThickness;if(m-a.depth-(c.height-p)0&&(m+=t,p-=t)}b=$e.makeVList({positionType:"individualShift",children:[{type:"elem",elem:c,shift:p,marginRight:f,marginLeft:y},{type:"elem",elem:a,shift:-m,marginRight:f}]},t)}else if(c)p=Math.max(p,h.sub1,c.height-.8*h.xHeight),b=$e.makeVList({positionType:"shift",positionData:p,children:[{type:"elem",elem:c,marginLeft:y,marginRight:f}]},t);else{if(!a)throw new Error("supsub must have either sup or sub.");m=Math.max(m,d,a.depth+.25*h.xHeight),b=$e.makeVList({positionType:"shift",positionData:-m,children:[{type:"elem",elem:a,marginRight:f}]},t)}const x=ut(i,"right")||"mord";return $e.makeSpan([x],[i,$e.makeSpan(["msupsub"],[b])],t)},mathmlBuilder(e,t){let r,n,o=!1;e.base&&"horizBrace"===e.base.type&&(n=!!e.sup,n===e.base.isOver&&(o=!0,r=e.base.isOver)),!e.base||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0);const s=[St(e.base,t)];let i;if(e.sub&&s.push(St(e.sub,t)),e.sup&&s.push(St(e.sup,t)),o)i=r?"mover":"munder";else if(e.sub)if(e.sup){const r=e.base;i=r&&"op"===r.type&&r.limits&&t.style===Je.DISPLAY||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(t.style===Je.DISPLAY||r.limits)?"munderover":"msubsup"}else{const r=e.base;i=r&&"op"===r.type&&r.limits&&(t.style===Je.DISPLAY||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(r.limits||t.style===Je.DISPLAY)?"munder":"msub"}else{const r=e.base;i=r&&"op"===r.type&&r.limits&&(t.style===Je.DISPLAY||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(r.limits||t.style===Je.DISPLAY)?"mover":"msup"}return new Oe.MathNode(i,s)}}),g({type:"atom",htmlBuilder:(e,t)=>$e.mathsym(e.text,e.mode,t,["m"+e.family]),mathmlBuilder(e,t){const r=new Oe.MathNode("mo",[yt(e.text,e.mode)]);if("bin"===e.family){const n=wt(e,t);"bold-italic"===n&&r.setAttribute("mathvariant",n)}else"punct"===e.family?r.setAttribute("separator","true"):"open"!==e.family&&"close"!==e.family||r.setAttribute("stretchy","false");return r}});const Qr={mi:"italic",mn:"normal",mtext:"normal"};g({type:"mathord",htmlBuilder:(e,t)=>$e.makeOrd(e,t,"mathord"),mathmlBuilder(e,t){const r=new Oe.MathNode("mi",[yt(e.text,e.mode,t)]),n=wt(e,t)||"italic";return n!==Qr[r.type]&&r.setAttribute("mathvariant",n),r}}),g({type:"textord",htmlBuilder:(e,t)=>$e.makeOrd(e,t,"textord"),mathmlBuilder(e,t){const r=yt(e.text,e.mode,t),n=wt(e,t)||"normal";let o;return o="text"===e.mode?new Oe.MathNode("mtext",[r]):/[0-9]/.test(e.text)?new Oe.MathNode("mn",[r]):"\\prime"===e.text?new Oe.MathNode("mo",[r]):new Oe.MathNode("mi",[r]),n!==Qr[o.type]&&o.setAttribute("mathvariant",n),o}});const en={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},tn={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};g({type:"spacing",htmlBuilder(e,r){if(tn.hasOwnProperty(e.text)){const t=tn[e.text].className||"";if("text"===e.mode){const n=$e.makeOrd(e,r,"textord");return n.classes.push(t),n}return $e.makeSpan(["mspace",t],[$e.mathsym(e.text,e.mode,r)],r)}if(en.hasOwnProperty(e.text))return $e.makeSpan(["mspace",en[e.text]],[],r);throw new t(`Unknown type of space "${e.text}"`)},mathmlBuilder(e,r){let n;if(!tn.hasOwnProperty(e.text)){if(en.hasOwnProperty(e.text))return new Oe.MathNode("mspace");throw new t(`Unknown type of space "${e.text}"`)}return n=new Oe.MathNode("mtext",[new Oe.TextNode(" ")]),n}});const rn=()=>{const e=new Oe.MathNode("mtd",[]);return e.setAttribute("width","50%"),e};g({type:"tag",mathmlBuilder(e,t){const r=new Oe.MathNode("mtable",[new Oe.MathNode("mtr",[rn(),new Oe.MathNode("mtd",[vt(e.body,t)]),rn(),new Oe.MathNode("mtd",[vt(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});const nn={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},on={"\\textbf":"textbf","\\textmd":"textmd"},sn={"\\textit":"textit","\\textup":"textup"},an=(e,t)=>{const r=e.font;return r?nn[r]?t.withTextFontFamily(nn[r]):on[r]?t.withTextFontWeight(on[r]):t.withTextFontShape(sn[r]):t};d({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler({parser:e,funcName:t},r){const n=r[0];return{type:"text",mode:e.mode,body:b(n),font:t}},htmlBuilder(e,t){const r=an(e,t),n=ct(e.body,r,!0);return $e.makeSpan(["mord","text"],n,r)},mathmlBuilder(e,t){const r=an(e,t);return vt(e.body,r)}}),d({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>({type:"underline",mode:e.mode,body:t[0]}),htmlBuilder(e,t){const r=gt(e.body,t),n=$e.makeLineSpan("underline-line",t),o=t.fontMetrics().defaultRuleThickness,s=$e.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:o},{type:"elem",elem:n},{type:"kern",size:3*o},{type:"elem",elem:r}]},t);return $e.makeSpan(["mord","underline"],[s],t)},mathmlBuilder(e,t){const r=new Oe.MathNode("mo",[new Oe.TextNode("‾")]);r.setAttribute("stretchy","true");const n=new Oe.MathNode("munder",[St(e.body,t),r]);return n.setAttribute("accentunder","true"),n}}),d({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler:({parser:e},t)=>({type:"vcenter",mode:e.mode,body:t[0]}),htmlBuilder(e,t){const r=gt(e.body,t),n=t.fontMetrics().axisHeight,o=.5*(r.height-n-(r.depth+n));return $e.makeVList({positionType:"shift",positionData:o,children:[{type:"elem",elem:r}]},t)},mathmlBuilder:(e,t)=>new Oe.MathNode("mpadded",[St(e.body,t)],["vcenter"])}),d({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,r,n){throw new t("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){const r=ln(e),n=[],o=t.havingStyle(t.style.text());for(let t=0;te.body.replace(/ /g,e.star?"␣":" "),cn=m,hn="[ \r\n\t]",mn=`(\\\\[a-zA-Z@]+)${hn}*`,pn="[̀-ͯ]",un=new RegExp(`${pn}+$`),dn=`(${hn}+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-‧-豈-]${pn}*|[\ud800-\udbff][\udc00-\udfff]${pn}*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|${mn}|\\\\[^\ud800-\udfff])`;class gn{constructor(e,t){this.input=e,this.settings=t,this.tokenRegex=new RegExp(dn,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){const e=this.input,r=this.tokenRegex.lastIndex;if(r===e.length)return new kr("EOF",new wr(this,r,r));const n=this.tokenRegex.exec(e);if(null===n||n.index!==r)throw new t(`Unexpected character: '${e[r]}'`,new kr(e[r],new wr(this,r,r+1)));const o=n[6]||n[3]||(n[2]?"\\ ":" ");if(14===this.catcodes[o]){const t=e.indexOf("\n",this.tokenRegex.lastIndex);return-1===t?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=t+1,this.lex()}return new kr(o,new wr(this,r,this.tokenRegex.lastIndex))}}class fn{constructor(e={},t={}){this.current=t,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(0===this.undefStack.length)throw new t("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");const e=this.undefStack.pop();for(const t in e)e.hasOwnProperty(t)&&(null==e[t]?delete this.current[t]:this.current[t]=e[t])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,t,r=!1){if(r){for(let t=0;t0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{const t=this.undefStack[this.undefStack.length-1];t&&!t.hasOwnProperty(e)&&(t[e]=this.current[e])}null==t?delete this.current[e]:this.current[e]=t}}const bn=yr;xr("\\noexpand",(function(e){const t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}})),xr("\\expandafter",(function(e){const t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}})),xr("\\@firstoftwo",(function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}})),xr("\\@secondoftwo",(function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}})),xr("\\@ifnextchar",(function(e){const t=e.consumeArgs(3);e.consumeSpaces();const r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}})),xr("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),xr("\\TextOrMath",(function(e){const t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}}));const yn={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};xr("\\char",(function(e){let r,n=e.popToken(),o="";if("'"===n.text)r=8,n=e.popToken();else if('"'===n.text)r=16,n=e.popToken();else if("`"===n.text)if(n=e.popToken(),"\\"===n.text[0])o=n.text.charCodeAt(1);else{if("EOF"===n.text)throw new t("\\char` missing argument");o=n.text.charCodeAt(0)}else r=10;if(r){if(o=yn[n.text],null==o||o>=r)throw new t(`Invalid base-${r} digit ${n.text}`);let s;for(;null!=(s=yn[e.future().text])&&s{let o=e.consumeArg().tokens;if(1!==o.length)throw new t("\\newcommand's first argument must be a macro name");const s=o[0].text,i=e.isDefined(s);if(i&&!r)throw new t(`\\newcommand{${s}} attempting to redefine ${s}; use \\renewcommand`);if(!i&&!n)throw new t(`\\renewcommand{${s}} when command ${s} does not yet exist; use \\newcommand`);let a=0;if(o=e.consumeArg().tokens,1===o.length&&"["===o[0].text){let r="",n=e.expandNextToken();for(;"]"!==n.text&&"EOF"!==n.text;)r+=n.text,n=e.expandNextToken();if(!r.match(/^\s*[0-9]+\s*$/))throw new t(`Invalid number of arguments: ${r}`);a=parseInt(r),o=e.consumeArg().tokens}return e.macros.set(s,{tokens:o,numArgs:a}),""};xr("\\newcommand",(e=>xn(e,!1,!0))),xr("\\renewcommand",(e=>xn(e,!0,!1))),xr("\\providecommand",(e=>xn(e,!0,!0))),xr("\\message",(e=>{const t=e.consumeArgs(1)[0];return console.log(t.reverse().map((e=>e.text)).join("")),""})),xr("\\errmessage",(e=>{const t=e.consumeArgs(1)[0];return console.error(t.reverse().map((e=>e.text)).join("")),""})),xr("\\show",(e=>{const t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),cn[r],ee.math[r],ee.text[r]),""})),xr("\\bgroup","{"),xr("\\egroup","}"),xr("~","\\nobreakspace"),xr("\\lq","`"),xr("\\rq","'"),xr("\\aa","\\r a"),xr("\\AA","\\r A"),xr("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}"),xr("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),xr("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"),xr("ℬ","\\mathscr{B}"),xr("ℰ","\\mathscr{E}"),xr("ℱ","\\mathscr{F}"),xr("ℋ","\\mathscr{H}"),xr("ℐ","\\mathscr{I}"),xr("ℒ","\\mathscr{L}"),xr("ℳ","\\mathscr{M}"),xr("ℛ","\\mathscr{R}"),xr("ℭ","\\mathfrak{C}"),xr("ℌ","\\mathfrak{H}"),xr("ℨ","\\mathfrak{Z}"),xr("\\Bbbk","\\Bbb{k}"),xr("·","\\cdotp"),xr("\\llap","\\mathllap{\\textrm{#1}}"),xr("\\rlap","\\mathrlap{\\textrm{#1}}"),xr("\\clap","\\mathclap{\\textrm{#1}}"),xr("\\mathstrut","\\vphantom{(}"),xr("\\underbar","\\underline{\\text{#1}}"),xr("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),xr("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}"),xr("\\ne","\\neq"),xr("≠","\\neq"),xr("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}"),xr("∉","\\notin"),xr("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}"),xr("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}"),xr("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}"),xr("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}"),xr("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}"),xr("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}"),xr("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}"),xr("⟂","\\perp"),xr("‼","\\mathclose{!\\mkern-0.8mu!}"),xr("∌","\\notni"),xr("⌜","\\ulcorner"),xr("⌝","\\urcorner"),xr("⌞","\\llcorner"),xr("⌟","\\lrcorner"),xr("©","\\copyright"),xr("®","\\textregistered"),xr("️","\\textregistered"),xr("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}'),xr("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}'),xr("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}'),xr("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}'),xr("\\vdots","\\mathord{\\varvdots\\rule{0pt}{15pt}}"),xr("⋮","\\vdots"),xr("\\varGamma","\\mathit{\\Gamma}"),xr("\\varDelta","\\mathit{\\Delta}"),xr("\\varTheta","\\mathit{\\Theta}"),xr("\\varLambda","\\mathit{\\Lambda}"),xr("\\varXi","\\mathit{\\Xi}"),xr("\\varPi","\\mathit{\\Pi}"),xr("\\varSigma","\\mathit{\\Sigma}"),xr("\\varUpsilon","\\mathit{\\Upsilon}"),xr("\\varPhi","\\mathit{\\Phi}"),xr("\\varPsi","\\mathit{\\Psi}"),xr("\\varOmega","\\mathit{\\Omega}"),xr("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),xr("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax"),xr("\\boxed","\\fbox{$\\displaystyle{#1}$}"),xr("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),xr("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),xr("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");const wn={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};xr("\\dots",(function(e){let t="\\dotso";const r=e.expandAfterFuture().text;return r in wn?t=wn[r]:("\\not"===r.slice(0,4)||r in ee.math&&l.contains(["bin","rel"],ee.math[r].group))&&(t="\\dotsb"),t}));const kn={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};xr("\\dotso",(function(e){return e.future().text in kn?"\\ldots\\,":"\\ldots"})),xr("\\dotsc",(function(e){const t=e.future().text;return t in kn&&","!==t?"\\ldots\\,":"\\ldots"})),xr("\\cdots",(function(e){return e.future().text in kn?"\\@cdots\\,":"\\@cdots"})),xr("\\dotsb","\\cdots"),xr("\\dotsm","\\cdots"),xr("\\dotsi","\\!\\cdots"),xr("\\dotsx","\\ldots\\,"),xr("\\DOTSI","\\relax"),xr("\\DOTSB","\\relax"),xr("\\DOTSX","\\relax"),xr("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),xr("\\,","\\tmspace+{3mu}{.1667em}"),xr("\\thinspace","\\,"),xr("\\>","\\mskip{4mu}"),xr("\\:","\\tmspace+{4mu}{.2222em}"),xr("\\medspace","\\:"),xr("\\;","\\tmspace+{5mu}{.2777em}"),xr("\\thickspace","\\;"),xr("\\!","\\tmspace-{3mu}{.1667em}"),xr("\\negthinspace","\\!"),xr("\\negmedspace","\\tmspace-{4mu}{.2222em}"),xr("\\negthickspace","\\tmspace-{5mu}{.277em}"),xr("\\enspace","\\kern.5em "),xr("\\enskip","\\hskip.5em\\relax"),xr("\\quad","\\hskip1em\\relax"),xr("\\qquad","\\hskip2em\\relax"),xr("\\tag","\\@ifstar\\tag@literal\\tag@paren"),xr("\\tag@paren","\\tag@literal{({#1})}"),xr("\\tag@literal",(e=>{if(e.macros.get("\\df@tag"))throw new t("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"})),xr("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),xr("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),xr("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),xr("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),xr("\\newline","\\\\\\relax"),xr("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");const vn=E(S["Main-Regular"]["T".charCodeAt(0)][1]-.7*S["Main-Regular"]["A".charCodeAt(0)][1]);xr("\\LaTeX",`\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{${vn}}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}`),xr("\\KaTeX",`\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{${vn}}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}`),xr("\\hspace","\\@ifstar\\@hspacer\\@hspace"),xr("\\@hspace","\\hskip #1\\relax"),xr("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),xr("\\ordinarycolon",":"),xr("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),xr("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),xr("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),xr("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),xr("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),xr("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),xr("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),xr("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),xr("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),xr("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),xr("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),xr("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),xr("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),xr("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),xr("∷","\\dblcolon"),xr("∹","\\eqcolon"),xr("≔","\\coloneqq"),xr("≕","\\eqqcolon"),xr("⩴","\\Coloneqq"),xr("\\ratio","\\vcentcolon"),xr("\\coloncolon","\\dblcolon"),xr("\\colonequals","\\coloneqq"),xr("\\coloncolonequals","\\Coloneqq"),xr("\\equalscolon","\\eqqcolon"),xr("\\equalscoloncolon","\\Eqqcolon"),xr("\\colonminus","\\coloneq"),xr("\\coloncolonminus","\\Coloneq"),xr("\\minuscolon","\\eqcolon"),xr("\\minuscoloncolon","\\Eqcolon"),xr("\\coloncolonapprox","\\Colonapprox"),xr("\\coloncolonsim","\\Colonsim"),xr("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),xr("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),xr("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),xr("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),xr("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}"),xr("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),xr("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),xr("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),xr("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),xr("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}"),xr("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}"),xr("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}"),xr("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}"),xr("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}"),xr("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}"),xr("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}"),xr("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}"),xr("\\nleqq","\\html@mathml{\\@nleqq}{≰}"),xr("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}"),xr("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}"),xr("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}"),xr("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}"),xr("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}"),xr("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}"),xr("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}"),xr("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}"),xr("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}"),xr("\\imath","\\html@mathml{\\@imath}{ı}"),xr("\\jmath","\\html@mathml{\\@jmath}{ȷ}"),xr("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}"),xr("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}"),xr("⟦","\\llbracket"),xr("⟧","\\rrbracket"),xr("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}"),xr("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}"),xr("⦃","\\lBrace"),xr("⦄","\\rBrace"),xr("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}"),xr("⦵","\\minuso"),xr("\\darr","\\downarrow"),xr("\\dArr","\\Downarrow"),xr("\\Darr","\\Downarrow"),xr("\\lang","\\langle"),xr("\\rang","\\rangle"),xr("\\uarr","\\uparrow"),xr("\\uArr","\\Uparrow"),xr("\\Uarr","\\Uparrow"),xr("\\N","\\mathbb{N}"),xr("\\R","\\mathbb{R}"),xr("\\Z","\\mathbb{Z}"),xr("\\alef","\\aleph"),xr("\\alefsym","\\aleph"),xr("\\Alpha","\\mathrm{A}"),xr("\\Beta","\\mathrm{B}"),xr("\\bull","\\bullet"),xr("\\Chi","\\mathrm{X}"),xr("\\clubs","\\clubsuit"),xr("\\cnums","\\mathbb{C}"),xr("\\Complex","\\mathbb{C}"),xr("\\Dagger","\\ddagger"),xr("\\diamonds","\\diamondsuit"),xr("\\empty","\\emptyset"),xr("\\Epsilon","\\mathrm{E}"),xr("\\Eta","\\mathrm{H}"),xr("\\exist","\\exists"),xr("\\harr","\\leftrightarrow"),xr("\\hArr","\\Leftrightarrow"),xr("\\Harr","\\Leftrightarrow"),xr("\\hearts","\\heartsuit"),xr("\\image","\\Im"),xr("\\infin","\\infty"),xr("\\Iota","\\mathrm{I}"),xr("\\isin","\\in"),xr("\\Kappa","\\mathrm{K}"),xr("\\larr","\\leftarrow"),xr("\\lArr","\\Leftarrow"),xr("\\Larr","\\Leftarrow"),xr("\\lrarr","\\leftrightarrow"),xr("\\lrArr","\\Leftrightarrow"),xr("\\Lrarr","\\Leftrightarrow"),xr("\\Mu","\\mathrm{M}"),xr("\\natnums","\\mathbb{N}"),xr("\\Nu","\\mathrm{N}"),xr("\\Omicron","\\mathrm{O}"),xr("\\plusmn","\\pm"),xr("\\rarr","\\rightarrow"),xr("\\rArr","\\Rightarrow"),xr("\\Rarr","\\Rightarrow"),xr("\\real","\\Re"),xr("\\reals","\\mathbb{R}"),xr("\\Reals","\\mathbb{R}"),xr("\\Rho","\\mathrm{P}"),xr("\\sdot","\\cdot"),xr("\\sect","\\S"),xr("\\spades","\\spadesuit"),xr("\\sub","\\subset"),xr("\\sube","\\subseteq"),xr("\\supe","\\supseteq"),xr("\\Tau","\\mathrm{T}"),xr("\\thetasym","\\vartheta"),xr("\\weierp","\\wp"),xr("\\Zeta","\\mathrm{Z}"),xr("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),xr("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),xr("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),xr("\\bra","\\mathinner{\\langle{#1}|}"),xr("\\ket","\\mathinner{|{#1}\\rangle}"),xr("\\braket","\\mathinner{\\langle{#1}\\rangle}"),xr("\\Bra","\\left\\langle#1\\right|"),xr("\\Ket","\\left|#1\\right\\rangle");const Sn=e=>t=>{const r=t.consumeArg().tokens,n=t.consumeArg().tokens,o=t.consumeArg().tokens,s=t.consumeArg().tokens,i=t.macros.get("|"),a=t.macros.get("\\|");t.macros.beginGroup();const l=t=>r=>{e&&(r.macros.set("|",i),o.length&&r.macros.set("\\|",a));let s=t;return!t&&o.length&&"|"===r.future().text&&(r.popToken(),s=!0),{tokens:s?o:n,numArgs:0}};t.macros.set("|",l(!1)),o.length&&t.macros.set("\\|",l(!0));const c=t.consumeArg().tokens,h=t.expandTokens([...s,...c,...r]);return t.macros.endGroup(),{tokens:h.reverse(),numArgs:0}};xr("\\bra@ket",Sn(!1)),xr("\\bra@set",Sn(!0)),xr("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"),xr("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"),xr("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"),xr("\\angln","{\\angl n}"),xr("\\blue","\\textcolor{##6495ed}{#1}"),xr("\\orange","\\textcolor{##ffa500}{#1}"),xr("\\pink","\\textcolor{##ff00af}{#1}"),xr("\\red","\\textcolor{##df0030}{#1}"),xr("\\green","\\textcolor{##28ae7b}{#1}"),xr("\\gray","\\textcolor{gray}{#1}"),xr("\\purple","\\textcolor{##9d38bd}{#1}"),xr("\\blueA","\\textcolor{##ccfaff}{#1}"),xr("\\blueB","\\textcolor{##80f6ff}{#1}"),xr("\\blueC","\\textcolor{##63d9ea}{#1}"),xr("\\blueD","\\textcolor{##11accd}{#1}"),xr("\\blueE","\\textcolor{##0c7f99}{#1}"),xr("\\tealA","\\textcolor{##94fff5}{#1}"),xr("\\tealB","\\textcolor{##26edd5}{#1}"),xr("\\tealC","\\textcolor{##01d1c1}{#1}"),xr("\\tealD","\\textcolor{##01a995}{#1}"),xr("\\tealE","\\textcolor{##208170}{#1}"),xr("\\greenA","\\textcolor{##b6ffb0}{#1}"),xr("\\greenB","\\textcolor{##8af281}{#1}"),xr("\\greenC","\\textcolor{##74cf70}{#1}"),xr("\\greenD","\\textcolor{##1fab54}{#1}"),xr("\\greenE","\\textcolor{##0d923f}{#1}"),xr("\\goldA","\\textcolor{##ffd0a9}{#1}"),xr("\\goldB","\\textcolor{##ffbb71}{#1}"),xr("\\goldC","\\textcolor{##ff9c39}{#1}"),xr("\\goldD","\\textcolor{##e07d10}{#1}"),xr("\\goldE","\\textcolor{##a75a05}{#1}"),xr("\\redA","\\textcolor{##fca9a9}{#1}"),xr("\\redB","\\textcolor{##ff8482}{#1}"),xr("\\redC","\\textcolor{##f9685d}{#1}"),xr("\\redD","\\textcolor{##e84d39}{#1}"),xr("\\redE","\\textcolor{##bc2612}{#1}"),xr("\\maroonA","\\textcolor{##ffbde0}{#1}"),xr("\\maroonB","\\textcolor{##ff92c6}{#1}"),xr("\\maroonC","\\textcolor{##ed5fa6}{#1}"),xr("\\maroonD","\\textcolor{##ca337c}{#1}"),xr("\\maroonE","\\textcolor{##9e034e}{#1}"),xr("\\purpleA","\\textcolor{##ddd7ff}{#1}"),xr("\\purpleB","\\textcolor{##c6b9fc}{#1}"),xr("\\purpleC","\\textcolor{##aa87ff}{#1}"),xr("\\purpleD","\\textcolor{##7854ab}{#1}"),xr("\\purpleE","\\textcolor{##543b78}{#1}"),xr("\\mintA","\\textcolor{##f5f9e8}{#1}"),xr("\\mintB","\\textcolor{##edf2df}{#1}"),xr("\\mintC","\\textcolor{##e0e5cc}{#1}"),xr("\\grayA","\\textcolor{##f6f7f7}{#1}"),xr("\\grayB","\\textcolor{##f0f1f2}{#1}"),xr("\\grayC","\\textcolor{##e3e5e6}{#1}"),xr("\\grayD","\\textcolor{##d6d8da}{#1}"),xr("\\grayE","\\textcolor{##babec2}{#1}"),xr("\\grayF","\\textcolor{##888d93}{#1}"),xr("\\grayG","\\textcolor{##626569}{#1}"),xr("\\grayH","\\textcolor{##3b3e40}{#1}"),xr("\\grayI","\\textcolor{##21242c}{#1}"),xr("\\kaBlue","\\textcolor{##314453}{#1}"),xr("\\kaGreen","\\textcolor{##71B307}{#1}");const Mn={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class zn{constructor(e,t,r){this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new fn(bn,t.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new gn(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){let t,r,n;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken(),({tokens:n,end:r}=this.consumeArg(["]"]))}else({tokens:n,start:t,end:r}=this.consumeArg());return this.pushToken(new kr("EOF",r.loc)),this.pushTokens(n),t.range(r,"")}consumeSpaces(){for(;" "===this.future().text;)this.stack.pop()}consumeArg(e){const r=[],n=e&&e.length>0;n||this.consumeSpaces();const o=this.future();let s,i=0,a=0;do{if(s=this.popToken(),r.push(s),"{"===s.text)++i;else if("}"===s.text){if(--i,-1===i)throw new t("Extra }",s)}else if("EOF"===s.text)throw new t("Unexpected end of input in a macro argument, expected '"+(e&&n?e[a]:"}")+"'",s);if(e&&n)if((0===i||1===i&&"{"===e[a])&&s.text===e[a]){if(++a,a===e.length){r.splice(-a,a);break}}else a=0}while(0!==i||n);return"{"===o.text&&"}"===r[r.length-1].text&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:o,end:s}}consumeArgs(e,r){if(r){if(r.length!==e+1)throw new t("The length of delimiters doesn't match the number of args!");const n=r[0];for(let e=0;ethis.settings.maxExpand)throw new t("Too many expansions: infinite loop or need to increase maxExpand setting");let s=o.tokens;const i=this.consumeArgs(o.numArgs,o.delimiters);if(o.numArgs){s=s.slice();for(let e=s.length-1;e>=0;--e){let r=s[e];if("#"===r.text){if(0===e)throw new t("Incomplete placeholder at end of macro body",r);if(r=s[--e],"#"===r.text)s.splice(e+1,1);else{if(!/^[1-9]$/.test(r.text))throw new t("Not a valid argument number",r);s.splice(e,2,...i[+r.text-1])}}}}return this.pushTokens(s),s.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(!1===this.expandOnce()){const e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new kr(e)]):void 0}expandTokens(e){const t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(!1===this.expandOnce(!0)){const e=this.stack.pop();e.treatAsRelax&&(e.noexpand=!1,e.treatAsRelax=!1),t.push(e)}return t}expandMacroAsText(e){const t=this.expandMacro(e);return t?t.map((e=>e.text)).join(""):t}_getExpansion(e){const t=this.macros.get(e);if(null==t)return t;if(1===e.length){const t=this.lexer.catcodes[e];if(null!=t&&13!==t)return}const r="function"==typeof t?t(this):t;if("string"==typeof r){let e=0;if(-1!==r.indexOf("#")){const t=r.replace(/##/g,"");for(;-1!==t.indexOf("#"+(e+1));)++e}const t=new gn(r,this.settings),n=[];let o=t.lex();for(;"EOF"!==o.text;)n.push(o),o=t.lex();return n.reverse(),{tokens:n,numArgs:e}}return r}isDefined(e){return this.macros.has(e)||cn.hasOwnProperty(e)||ee.math.hasOwnProperty(e)||ee.text.hasOwnProperty(e)||Mn.hasOwnProperty(e)}isExpandable(e){const t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:cn.hasOwnProperty(e)&&!cn[e].primitive}}const An=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Tn=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9",ₐ:"a",ₑ:"e",ₕ:"h",ᵢ:"i",ⱼ:"j",ₖ:"k",ₗ:"l",ₘ:"m",ₙ:"n",ₒ:"o",ₚ:"p",ᵣ:"r",ₛ:"s",ₜ:"t",ᵤ:"u",ᵥ:"v",ₓ:"x",ᵦ:"β",ᵧ:"γ",ᵨ:"ρ",ᵩ:"ϕ",ᵪ:"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9",ᴬ:"A",ᴮ:"B",ᴰ:"D",ᴱ:"E",ᴳ:"G",ᴴ:"H",ᴵ:"I",ᴶ:"J",ᴷ:"K",ᴸ:"L",ᴹ:"M",ᴺ:"N",ᴼ:"O",ᴾ:"P",ᴿ:"R",ᵀ:"T",ᵁ:"U",ⱽ:"V",ᵂ:"W",ᵃ:"a",ᵇ:"b",ᶜ:"c",ᵈ:"d",ᵉ:"e",ᶠ:"f",ᵍ:"g",ʰ:"h",ⁱ:"i",ʲ:"j",ᵏ:"k",ˡ:"l",ᵐ:"m",ⁿ:"n",ᵒ:"o",ᵖ:"p",ʳ:"r",ˢ:"s",ᵗ:"t",ᵘ:"u",ᵛ:"v",ʷ:"w",ˣ:"x",ʸ:"y",ᶻ:"z",ᵝ:"β",ᵞ:"γ",ᵟ:"δ",ᵠ:"ϕ",ᵡ:"χ",ᶿ:"θ"});var Bn=r(584),Cn=r.n(Bn),Nn=r(494),qn=r.n(Nn);class $n{constructor(e,t){this.mode="math",this.gullet=new zn(e,t,this.mode),this.settings=t,this.leftrightDepth=0}expect(e,r=!0){if(this.fetch().text!==e)throw new t(`Expected '${e}', got '${this.fetch().text}'`,this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{const e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){const t=this.nextToken;this.consume(),this.gullet.pushToken(new kr("}")),this.gullet.pushTokens(e);const r=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,r}static endOfExpression=["}","\\endgroup","\\end","\\right","&"];parseExpression(e,t){const r=[];for(;;){"math"===this.mode&&this.consumeSpaces();const n=this.fetch();if(-1!==$n.endOfExpression.indexOf(n.text))break;if(t&&n.text===t)break;if(e&&cn[n.text]&&cn[n.text].infix)break;const o=this.parseAtom(t);if(!o)break;"internal"!==o.type&&r.push(o)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(e){let r,n=-1;for(let o=0;o=0&&this.settings.reportNonstrict("unicodeTextInMathMode",`Latin-1/Unicode text character "${r[0]}" used in math mode`,e);const t=ee[this.mode][r].group,n=wr.range(e);let s;if(K.hasOwnProperty(t)){const e=t;s={type:"atom",mode:this.mode,family:e,loc:n,text:r}}else s={type:t,mode:this.mode,loc:n,text:r};o=s}else{if(!(r.charCodeAt(0)>=128))return null;this.settings.strict&&(w(r.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",`Unicode text character "${r[0]}" used in math mode`,e):this.settings.reportNonstrict("unknownSymbol",`Unrecognized Unicode character "${r[0]}" (${r.charCodeAt(0)})`,e)),o={type:"textord",mode:"text",loc:wr.range(e),text:r}}if(this.consume(),n)for(let r=0;r{"use strict";e.exports=r.p+"c2bda2230c7262de9e2a.wasm"}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.m=e,r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e;r.g.importScripts&&(e=r.g.location+"");var t=r.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var o=n.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=n[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=e})(),r.b=document.baseURI||self.location.href,(()=>{"use strict";let e;const t=new Array(128).fill(void 0);function n(e){return t[e]}t.push(void 0,null,!0,!1);let o=t.length;function s(e){const r=n(e);return function(e){e<132||(t[e]=o,o=e)}(e),r}const i="undefined"!=typeof TextDecoder?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};"undefined"!=typeof TextDecoder&&i.decode();let a=null;function l(){return null!==a&&0!==a.byteLength||(a=new Uint8Array(e.memory.buffer)),a}function c(e,t){return e>>>=0,i.decode(l().subarray(e,e+t))}function h(e){o===t.length&&t.push(t.length+1);const r=o;return o=t[r],t[r]=e,r}function m(e){const t=typeof e;if("number"==t||"boolean"==t||null==e)return`${e}`;if("string"==t)return`"${e}"`;if("symbol"==t){const t=e.description;return null==t?"Symbol":`Symbol(${t})`}if("function"==t){const t=e.name;return"string"==typeof t&&t.length>0?`Function(${t})`:"Function"}if(Array.isArray(e)){const t=e.length;let r="[";t>0&&(r+=m(e[0]));for(let n=1;n1))return toString.call(e);if(n=r[1],"Object"==n)try{return"Object("+JSON.stringify(e)+")"}catch(e){return"Object"}return e instanceof Error?`${e.name}: ${e.message}\n${e.stack}`:n}let p=0;const u="undefined"!=typeof TextEncoder?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},d="function"==typeof u.encodeInto?function(e,t){return u.encodeInto(e,t)}:function(e,t){const r=u.encode(e);return t.set(r),{read:e.length,written:r.length}};function g(e,t,r){if(void 0===r){const r=u.encode(e),n=t(r.length,1)>>>0;return l().subarray(n,n+r.length).set(r),p=r.length,n}let n=e.length,o=t(n,1)>>>0;const s=l();let i=0;for(;i127)break;s[o+i]=t}if(i!==n){0!==i&&(e=e.slice(i)),o=r(o,n,n=i+3*e.length,1)>>>0;const t=l().subarray(o+i,o+n);i+=d(e,t).written}return p=i,o}let f=null;function b(){return null!==f&&0!==f.byteLength||(f=new Int32Array(e.memory.buffer)),f}function y(){const t={wbg:{}};return t.wbg.__wbindgen_object_drop_ref=function(e){s(e)},t.wbg.__wbindgen_error_new=function(e,t){return h(new Error(c(e,t)))},t.wbg.__wbindgen_string_new=function(e,t){return h(c(e,t))},t.wbg.__wbindgen_object_clone_ref=function(e){return h(n(e))},t.wbg.__wbindgen_number_new=function(e){return h(e)},t.wbg.__wbg_set_20cbc34131e76824=function(e,t,r){n(e)[s(t)]=s(r)},t.wbg.__wbg_new_ffc6d4d085022169=function(){return h(new Array)},t.wbg.__wbg_new_bfd4534b584a9593=function(){return h(new Map)},t.wbg.__wbg_new_9fb8d994e1c0aaac=function(){return h(new Object)},t.wbg.__wbindgen_is_string=function(e){return"string"==typeof n(e)},t.wbg.__wbg_set_f2740edb12e318cd=function(e,t,r){n(e)[t>>>0]=s(r)},t.wbg.__wbg_set_d257c6f2da008627=function(e,t,r){return h(n(e).set(n(t),n(r)))},t.wbg.__wbindgen_debug_string=function(t,r){const o=g(m(n(r)),e.__wbindgen_malloc,e.__wbindgen_realloc),s=p;b()[t/4+1]=s,b()[t/4+0]=o},t.wbg.__wbindgen_throw=function(e,t){throw new Error(c(e,t))},t}async function x(t){if(void 0!==e)return e;void 0===t&&(t=new URL(r(391),r.b));const n=y();("string"==typeof t||"function"==typeof Request&&t instanceof Request||"function"==typeof URL&&t instanceof URL)&&(t=fetch(t));const{instance:o,module:s}=await async function(e,t){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if("application/wasm"==e.headers.get("Content-Type"))throw t;console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",t)}const r=await e.arrayBuffer();return await WebAssembly.instantiate(r,t)}{const r=await WebAssembly.instantiate(e,t);return r instanceof WebAssembly.Instance?{instance:r,module:e}:r}}(await t,n);return function(t,r){return e=t.exports,x.__wbindgen_wasm_module=r,f=null,a=null,e}(o,s)}const w=x;var k=r(517),v=r.n(k);function S(t,r){return function(t){try{const o=e.__wbindgen_add_to_stack_pointer(-16),i=g(t,e.__wbindgen_malloc,e.__wbindgen_realloc),a=p;e.parseTree(o,i,a);var r=b()[o/4+0],n=b()[o/4+1];if(b()[o/4+2])throw s(n);return s(r)}finally{e.__wbindgen_add_to_stack_pointer(16)}}(t=t.trim().replace(/\n/g," "))}function M(e,t){let r=new(v().Settings)(t);try{const t=S(e);return v().buildTree(t,e,r)}catch(e){return v().renderError(e,e,r)}}const z={render:function(e,t,r){t.textContent="";const n=M(e,r).toNode();t.appendChild(n)},renderToString:function(e,t){return M(e,t).toMarkup()},parseTree:S,init:w,__typstContentTree:function(t){let r,n;try{const u=e.__wbindgen_add_to_stack_pointer(-16),d=g(t,e.__wbindgen_malloc,e.__wbindgen_realloc),f=p;e.typstContentTree(u,d,f);var o=b()[u/4+0],i=b()[u/4+1],a=b()[u/4+2],l=b()[u/4+3],h=o,m=i;if(l)throw h=0,m=0,s(a);return r=h,n=m,c(h,m)}finally{e.__wbindgen_add_to_stack_pointer(16),e.__wbindgen_free(r,n,1)}}},A=function(e){let t=0,r=[];for(;t0&&"\\"===e[n-1])t=n+1;else{if(r.push(n),2===r.length)return r[1]+=1,r;t=n+1}}return[-1,0]},T=function(e,t){const r=function(e){let t=[];for(;e.length>0;){let[r,n]=A(e);if(-1===r||n-r<1){t.push({type:"text",data:e});break}{r>0&&t.push({type:"text",data:e.slice(0,r)});let o=e.slice(r,n),s=" "===o.slice(1,2)&&" "===o.slice(-2,-1);t.push({type:"math",data:o.slice(1,-1).trim(),rawData:o,display:s})}e=e.slice(n)}return t}(e);if(1===r.length&&"text"===r[0].type)return null;const n=document.createDocumentFragment();for(let e=0;e-1===e.indexOf(" "+t+" ")))&&B(n,t)}}};window.renderMathInElement=function(e,t){z.init().then((()=>{!function(e,t){if(!e)throw new Error("No element provided to render");const r={};for(const e in t)t.hasOwnProperty(e)&&(r[e]=t[e]);r.ignoredTags=r.ignoredTags||["script","noscript","style","textarea","pre","code","option"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,B(e,r)}(e,t)}))}})()})();
\ No newline at end of file
diff --git a/public/main.css b/public/main.css
deleted file mode 100644
index 0fdd951..0000000
--- a/public/main.css
+++ /dev/null
@@ -1 +0,0 @@
-*,*::before,*::after{box-sizing:border-box}body{min-height:100%;font-family:var(--main-font);background-color:var(--bg-color);color:var(--text-color)}html{scroll-behavior:smooth}button:focus-visible,a:focus-visible{outline:var(--primary-color) solid 3px}::selection{background-color:var(--primary-color);color:var(--bg-color)}::-webkit-scrollbar{width:8px;height:8px;background-color:rgba(0,0,0,0)}::-webkit-scrollbar-track{background:rgba(0,0,0,0)}::-webkit-scrollbar-thumb{background:var(--text-pale-color);background-clip:padding-box;border-radius:4px;border:2px solid rgba(0,0,0,0)}::-webkit-scrollbar-thumb:hover{background:var(--text-color);background-clip:padding-box}@supports not selector(::-webkit-scrollbar){*{scrollbar-width:thin;scrollbar-color:var(--text-pale-color) rgba(0,0,0,0)}}.prose h1{font-size:1.35em;font-weight:bolder;margin:1em 0 .5em 0}.prose h2{font-size:1.25em;padding-top:60px;margin-top:-45px}.prose h3{font-size:1.1em;padding-top:50px;margin-top:-45px}.prose h4{font-size:1.05em;margin:30px 0 15px 0}.prose .zola-anchor{visibility:hidden;margin-left:.75em;border:none}.prose .zola-anchor::after{content:"#"}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{width:fit-content}.prose h1:hover a.zola-anchor,.prose h2:hover a.zola-anchor,.prose h3:hover a.zola-anchor,.prose h4:hover a.zola-anchor,.prose h5:hover a.zola-anchor,.prose h6:hover a.zola-anchor{visibility:visible !important}.prose p{font-size:1em;line-height:inherit;word-wrap:break-word}.prose a{border-bottom:1.5px solid var(--primary-color);color:var(--primary-color);text-decoration:none;overflow-wrap:anywhere}.prose a:hover{opacity:.8}.prose img{max-width:100%;display:block;margin:0 auto;border-radius:var(--img-border-radius)}.prose figure{margin:0 auto}.prose figcaption{width:100%;text-align:center;margin:5px auto}.prose blockquote{border-left:2px var(--text-pale-color) solid;padding-left:16px;margin:1em 0;color:var(--blockquote-color)}.prose ol,.prose ul{padding-left:1.5em}.prose li{margin:1em 0}.prose li::marker{color:var(--primary-color)}.prose hr{border:none;background-color:var(--text-pale-color);opacity:.3;height:3px;margin:2.5em 0}.prose table{width:100%;border-spacing:0;border:1px solid var(--primary-color)}.prose thead{background-color:var(--primary-pale-color)}.prose th,.prose td{line-height:2;text-align:center;border:.5px solid var(--primary-color);padding:1px 10px}.prose p>code,.prose li>code,.prose td>code,.prose th>code{font-family:var(--code-font);font-size:.85em;padding:1px 6px;margin:0 2px;color:var(--primary-color);background-color:var(--inline-code-bg-color);border-radius:var(--inline-code-border-radius);word-wrap:break-word}.prose pre{font-size:.8em;margin:1.25em 0;padding:12px 48px 12px 16px;line-height:1.5;border:1.5px solid var(--primary-color);border-color:var(--block-code-border-color);border-radius:var(--block-code-border-radius);overflow:auto}.prose pre code{font-family:var(--code-font)}.prose pre[data-linenos]{padding:12px 48px 12px 8px}.prose pre table{width:100%;border-collapse:collapse;border:none}.prose pre table th,.prose pre table td{line-height:1.5}.prose pre table tr td:first-of-type{color:var(--text-pale-color)}.prose pre table td{padding:0;padding-right:48px;text-align:initial;border:initial}.prose pre table td:nth-of-type(1){text-align:right;user-select:none;padding-right:1em}.prose pre table td:nth-of-type(1) mark::before{left:-8px;width:calc(100% + 1em + 8px)}.prose pre mark{display:block;color:inherit;background-color:rgba(0,0,0,0);position:relative;overflow:visible}.prose pre mark::before{pointer-events:none;content:"";position:absolute;top:0;bottom:0;width:calc(100% + 48px + 48px);background-color:var(--highlight-mark-color)}.prose pre.mermaid{border:none}.prose pre>code>mark::before{width:calc(100% + 48px + 16px);left:-16px}.prose .codeblock{margin:1em 0;position:relative;overflow:auto}.prose .codeblock pre{margin:0}.prose .codeblock .copy{display:none;z-index:9;position:absolute;right:.6em;top:.6em;width:24px;height:24px;padding:2px;cursor:pointer;background:rgba(0,0,0,0);border:none;color:var(--text-pale-color)}.prose .codeblock .copy.copied,.prose .codeblock .copy:hover{display:block;color:var(--primary-color)}.prose .codeblock:hover .copy{display:block}.prose .codeblock-with-filename{margin-top:calc(0px - 1.2em - 24px - 1em - 1.5px)}.prose .codeblock-with-filename .filename{z-index:1;position:relative;top:calc(1.2em + 24px + 1em + 1.5px);padding:12px 16px;line-height:1.2;color:var(--blockquote-color);border-bottom:1.5px solid var(--primary-pale-color);pointer-events:none}.prose .codeblock-with-filename pre>code{display:inline-block;min-width:100%;margin-top:3.2em}.prose .footnote-definition{display:flex}.prose .footnote-definition .footnote-definition-label{position:static;font-size:1em;line-height:inherit;vertical-align:auto;margin-right:.5em}.prose .footnote-definition .footnote-definition-label::after{content:"."}.prose .footnote-definition p{margin:0}.prose .footnote-definition button.backlink{border:none;background:none;display:flex;align-items:center;margin-left:.5em;color:var(--primary-color);cursor:pointer}.prose .callout{line-height:inherit;margin:1.25em 0;padding:0px 12px;display:flex;gap:8px}.prose .callout .title{display:flex;align-items:center;gap:12px}.prose .callout .icon{height:1.75em;display:flex;align-items:center}.prose .callout .content{max-width:calc(100% - 32px)}.prose .callout .content p{margin:0}.prose .callout .content p+p{margin:.2em 0 .5em}.prose .callout.note{color:var(--callout-note-color);border-color:var(--callout-note-color)}.prose .callout.important{color:var(--callout-important-color);border-color:var(--callout-important-color)}.prose .callout.warning{color:var(--callout-warning-color);border-color:var(--callout-warning-color)}.prose .callout.alert{color:var(--callout-alert-color);border-color:var(--callout-alert-color)}.prose .callout.question{color:var(--callout-question-color);border-color:var(--callout-question-color)}.prose .callout.tip{color:var(--callout-tip-color);border-color:var(--callout-tip-color)}.prose .quote{border:none;position:relative;margin:2em 0;padding:1.5em 0 0 1.25em;color:var(--blockquote-color)}.prose .quote .icon{display:block !important;position:absolute;left:0;top:0}.prose .quote .content>p:first-of-type{margin-top:0}.prose .quote .content>p:last-of-type{margin-bottom:0}.prose .quote .from{display:flex;justify-content:end;align-items:center;gap:.5em}.prose .quote .from p{margin:0}.prose details{border:1.5px solid var(--detail-border-color);border-radius:var(--detail-border-radius);margin:1em 0;padding:.5em 1em}.prose details summary span{margin-left:.25em}.prose .mermaid{background:#fff}body.dark .prose img{filter:brightness(var(--dark-mode-img-brightness))}body.dark .prose .mermaid{filter:brightness(var(--dark-mode-chart-brightness))}body.prose-page main{font-size:var(--paragraph-font-size);min-height:100vh;padding-top:30px;margin:0 auto;max-width:var(--main-max-width);display:flex;flex-direction:column;justify-content:space-between}body.prose-page article{padding:30px 15px;font-size:var(--paragraph-font-size);line-height:var(--paragraph-line-height)}body.prose-page .giscus{padding:0 15px}.layout-list .category{font-size:1.1em;margin:2em 15px 1em}.layout-list .post-list{padding:0 15px;margin-top:2em}.layout-list .post-list.categorized{margin-top:1em}.layout-list .post{display:flex;justify-content:space-between;align-items:flex-end;gap:.5em;padding:4px 0px;margin:8px 0;font-size:1em;text-decoration:none;color:var(--primary-color);-webkit-tap-highlight-color:rgba(0,0,0,0);border-bottom:1.5px solid rgba(0,0,0,0);position:relative}.layout-list .post:hover{border-bottom-color:var(--primary-color)}.layout-list .post .date{white-space:nowrap}.layout-list .post.featured::before{content:"*";position:absolute;top:0;bottom:0;left:0;transform:translateX(-200%);line-height:30px;height:100%}@media (max-width: 768px){.layout-list .post.featured::before{transform:translateX(-150%)}}.layout-list .read-more{display:flex;justify-content:end;margin:1.5em 15px 0px}.layout-list .read-more a{color:var(--primary-color);text-decoration:none;border-bottom:1.5px solid var(--primary-color)}#theme-toggle .sun-icon{display:none}body.dark #theme-toggle .sun-icon{display:initial}body.dark #theme-toggle .moon-icon{display:none}body.homepage #wrapper{width:100%;min-height:100vh;min-height:100dvh;display:flex;justify-content:center;align-items:center;font-size:var(--homepage-font-size)}body.homepage main{width:100%;max-width:var(--homepage-max-width);min-height:75vh;min-height:75dvh;padding:4em 0}@media screen and (max-width: 425px){body.homepage main{padding:2em 0}}body.homepage #info{padding:0 15px;display:flex;gap:1em}body.homepage #info img{height:var(--avatar-size);width:var(--avatar-size);border-radius:50%}body.homepage #info #text{display:flex;flex-direction:column;justify-content:space-around;line-height:1.5;gap:.5em}body.homepage #info #name,body.homepage #info #id{font-size:1.1em}body.homepage #info #id{margin-left:.5em;color:var(--primary-color)}body.homepage #info #bio{color:var(--text-pale-color);font-weight:300}body.homepage #links{padding:0 15px;margin:1.75em 0 1.75em;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1em;font-size:1.1em}body.homepage #links a,body.homepage #links button{text-decoration:none;color:var(--text-color)}@media (hover: hover){body.homepage #links a:hover,body.homepage #links button:hover{color:var(--primary-color)}}body.homepage #links #left{display:flex;flex-wrap:wrap;gap:1em}body.homepage #links #left a{border-bottom:1.5px solid var(--primary-color);line-height:1.5}body.homepage #links #right{display:flex;gap:.5em}body.homepage #links #right button{padding:0;border:none;background-color:rgba(0,0,0,0);cursor:pointer}@media (max-width: 425px){body.homepage #links #left{gap:.75em}}body.homepage #brief{padding:0 15px;font-size:1em;line-height:var(--homepage-line-height)}header{z-index:99;position:fixed;top:0;width:100%;height:45px;background-color:var(--bg-color);border-bottom:1.5px solid var(--primary-color)}@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none){header.blur{background-color:initial;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}header #rss-mask{-webkit-backdrop-filter:blur(32px);backdrop-filter:blur(32px)}}header #header-wrapper{height:100%;max-width:var(--main-max-width);margin:0 auto;padding:0 15px;display:flex;justify-content:space-between;align-items:center;position:relative}header nav{font-size:1.35em;display:flex;align-items:center}header nav a{color:var(--text-color);text-decoration:none}header nav a:hover{color:var(--primary-color)}header nav .separator{font-size:.9em;font-weight:600;width:24px;text-align:center;line-height:1;cursor:pointer;border:none;padding:0;background:rgba(0,0,0,0);margin:0 .3em;color:var(--text-color);-webkit-tap-highlight-color:rgba(0,0,0,0)}header nav .wrap.left{margin:0 .4em 0 -.1em}header nav .wrap.right{margin:0 0 0 .4em}header nav .wrap-separator{margin:0 .5em 0 .1em}header nav .fold{display:none}header nav .fold.shown{display:initial}header #btns{display:flex;gap:1em;align-items:center;padding-top:3px}header #btns a,header #btns button{border:none;background-color:rgba(0,0,0,0);padding:0;text-decoration:none;color:var(--text-color);cursor:pointer}@media (hover: hover){header #btns a:hover,header #btns button:hover{color:var(--primary-color)}}header #toc-toggle{display:none}@media (max-width: 1024px){header #toc-toggle{display:inline-block}header #toc-toggle.active{color:var(--primary-color)}}dialog#rss-mask{margin:12.5px auto;padding:0px;border:none;overflow:visible;background:rgba(0,0,0,0)}dialog#rss-mask::backdrop{background-color:initial;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}dialog#rss-mask div{width:fit-content;display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:1em}dialog#rss-mask a{border-bottom:1.5px solid var(--primary-color);color:var(--primary-color);text-decoration:none;line-height:1.5;line-break:anywhere}dialog#rss-mask button{background:rgba(0,0,0,0);border:none;color:var(--text-pale-color);padding:0;cursor:pointer}dialog#rss-mask button.copied,dialog#rss-mask button:hover{color:var(--primary-color)}footer{font-size:.9em;padding:15px;display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:15px;color:var(--text-pale-color)}footer .copyright{margin-right:auto}footer .credits{margin-left:auto;font-style:italic}footer a{color:var(--text-pale-color);text-decoration:none}footer a:hover{text-decoration:underline;text-underline-offset:4px}@media (max-width: 374px){footer{flex-direction:column;gap:0}footer .copyright,footer .credits{margin:0}}body.blog #wrapper{margin:0 auto;max-width:var(--main-max-width);min-height:100vh;display:flex;flex-direction:column;justify-content:space-between}body.blog main{margin:45px 0}body.post #wrapper{display:flex;justify-content:space-between;font-size:var(--paragraph-font-size)}body.post #blank{order:1;position:sticky;width:calc((100% - var(--main-max-width))/2)}body.post main{order:2;width:100%;margin:0 auto;padding-top:45px;max-width:var(--main-max-width);min-height:100vh;display:flex;flex-direction:column;justify-content:space-between}body.post article{padding:0 15px 30px;font-size:var(--paragraph-font-size);line-height:var(--paragraph-line-height)}body.post article #post-info{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;margin-bottom:1em;font-size:.9em}body.post article #date{color:var(--text-pale-color);font-style:italic;margin-bottom:1em}body.post article #date #publish,body.post article #date #updated{margin-right:20px}body.post article #tags{margin-bottom:1em;display:flex;gap:1em;flex-wrap:wrap}body.post article #tags a{color:var(--primary-color);text-decoration:none;line-height:1.25;border-bottom:1.5px solid rgba(0,0,0,0)}body.post article #tags a span{font-size:.95em;margin-right:2px}body.post article #tags a:hover{opacity:1;border-bottom-color:var(--primary-color)}body.post article #outdate_alert{font-style:italic}body.post article #outdate_alert.hidden{display:none}body.post .mermaid{background:#fff}body.post .giscus{padding:0 15px}body.post aside{order:3;width:calc((100% - var(--main-max-width))/2);position:sticky;margin-top:175px;top:60px;height:min-content;font-size:var(--aside-font-size)}body.post aside nav{padding:5px 15px 5px 2em;min-width:60%;overflow-y:auto;max-height:calc(100vh - 45px - 6em);scrollbar-width:none}body.post aside nav::-webkit-scrollbar{width:0}body.post aside nav:hover::-webkit-scrollbar{width:4px}body.post aside ul{list-style-type:none;padding:0;line-height:2;margin:0}body.post aside a{text-decoration:none;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-pale-color);position:relative;padding:0 1em}body.post aside a.h3{padding-left:2.5em;font-size:.95em}body.post aside a::before{display:block;content:"";width:2px;position:absolute;top:.6em;bottom:.7em;left:0em;background:rgba(0,0,0,0)}body.post aside a:hover,body.post aside a.active{color:var(--primary-color)}body.post aside a:hover::before{background-color:var(--primary-color)}body.post aside #back-to-top{z-index:99;height:28px;padding:0;position:fixed;bottom:1.5em;margin-left:3em;color:var(--text-pale-color);background:rgba(0,0,0,0);border:none;cursor:pointer;transform:translateY(-5px) scale(0);transition:transform .2s}body.post aside #back-to-top svg{width:28px;height:28px}body.post aside #back-to-top.shown{transform:translateY(0px) scale(1)}body.post aside #back-to-top:hover{color:var(--primary-color)}@media screen and (max-width: 1024px){body.post aside{position:fixed;z-index:99;right:-100%;top:45px;margin-top:0;min-width:275px;height:100%;background-color:var(--bg-color);box-shadow:rgba(0,0,0,.08) -2px 8px 8px 0px}body.post aside.shown{right:0}body.post aside nav{padding:1em .75em;max-height:calc(100vh - 45px)}body.post aside #back-to-top{display:none}body.post #blank{display:none}body.post main{margin:0 auto}}body.tag-list #wrapper{margin:0 auto;max-width:var(--main-max-width);min-height:100vh;display:flex;flex-direction:column;justify-content:space-between}body.tag-list main{margin:85px auto 60px}body.tag-list .title{width:min-content;font-size:1.3em;margin:0 auto}body.tag-list .tags{margin-top:2em;display:flex;justify-content:center;align-items:center;flex-wrap:wrap;font-size:1.1em}body.tag-list .tags a{color:var(--primary-color);text-decoration:none;margin:1em;line-height:1.25;border-bottom:1.5px solid rgba(0,0,0,0)}body.tag-list .tags a:hover{border-bottom-color:var(--primary-color)}body.tag-single #wrapper{margin:0 auto;max-width:var(--main-max-width);min-height:100vh;display:flex;flex-direction:column;justify-content:space-between}body.tag-single main{width:100%;margin:85px auto 60px}body.tag-single .title{width:min-content;white-space:nowrap;color:var(--text-color);font-size:1.3em;margin:0 auto;margin-bottom:40px;padding:0 0 0 60px}body.tag-single .title a{margin-left:2em;font-size:.75em;color:var(--primary-color)}body.projects #wrapper{margin:0 auto;max-width:var(--main-max-width);min-height:100vh;display:flex;flex-direction:column;justify-content:space-between}body.projects main{width:100%;margin:85px auto 0px}body.projects .proj{margin:0px 15px 2em}body.projects .proj .meta{display:flex;align-items:center;flex-wrap:wrap;gap:1.5em;margin-bottom:.5em}body.projects .proj .name{white-space:nowrap;color:var(--primary-color);font-size:1.1em}body.projects .proj .links{flex-grow:1;display:flex;font-weight:300;align-items:center;flex-wrap:nowrap;justify-content:end;gap:.5em 1em;color:var(--text-pale-color)}body.projects .proj .links a{text-decoration:none;color:inherit}body.projects .proj .links a:visited{color:inherit}body.projects .proj .links a span,body.projects .proj .links a:hover{color:var(--primary-color)}body.projects .proj .tags,body.projects .proj .tags-narrow{font-size:.9em;font-weight:300;display:flex;align-items:center;flex-wrap:wrap;gap:.5em .75em;color:var(--text-pale-color)}body.projects .proj .tags div span,body.projects .proj .tags-narrow div span{font-size:.9em;margin-right:2px}body.projects .proj .tags-narrow{display:none}@media screen and (max-width: 425px){body.projects .proj .tags{display:none}body.projects .proj .tags-narrow{display:flex}}body.projects .proj .content{display:flex;justify-content:space-between;gap:1em;margin-top:.5em}body.projects .proj .desc{line-height:1.5;margin:0 0 10px 0}body.projects .proj .desc p{margin:.25em 0}body.projects .proj .desc a{border-bottom:1.5px solid var(--primary-color);color:var(--primary-color);text-decoration:none}body.projects .proj .desc p>code{font-family:var(--code-font);font-size:.8em;padding:1px 6px;color:var(--primary-color);background-color:var(--primary-pale-color);border-radius:4px}body.projects .proj img{max-height:125px;margin-top:.5em}@media screen and (max-width: 425px){body.projects .proj img{max-height:100px}}body.not-found{height:100vh;height:100dvh;display:flex;justify-content:center;align-items:center}body.not-found .wrapper{display:flex;flex-direction:column;align-items:center;gap:2em;margin-bottom:5em}body.not-found .error{margin:0;display:flex;align-items:center;gap:1em;font-size:1.1em;color:var(--text-pale-color)}body.not-found a{color:var(--primary-color);text-decoration-color:var(--primary-pale-color)}body.not-found a:hover,body.not-found a:active{text-decoration-color:var(--primary-color)}.reaction{font-size:.7em;padding:15px 15px 30px;min-height:75px;display:flex;align-items:center;flex-wrap:wrap;gap:8px}.reaction.left{justify-content:start}.reaction.right{justify-content:end}.reaction.center{justify-content:center}.reaction.error button{border-color:var(--callout-alert-color) !important}.reaction button{line-height:1;padding:.5em 1em;color:var(--text-pale-color);display:flex;justify-content:center;align-items:center;border:1px solid var(--primary-pale-color);border-radius:999px;gap:.5em;background:rgba(0,0,0,0);user-select:none;cursor:pointer}.reaction button span{min-width:16px;text-align:end}.reaction button:hover{background:var(--primary-pale-color)}.reaction button.reacted{border-color:var(--primary-color);color:var(--primary-color);background:var(--primary-pale-color)}html{line-height:1.15;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:rgba(0,0,0,0)}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}
\ No newline at end of file
diff --git a/public/projects/data.toml b/public/projects/data.toml
deleted file mode 100644
index d2832e9..0000000
--- a/public/projects/data.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[[project]]
- name = "My Homelab"
- desc = "Homelab Status page"
- tags = [ "nixos", "homelab" ]
- links = [
- { name = "Status", url = "https://status.ahoneybun.net" }
- ]