mathjax
Version:
Beautiful and accessible math in all browsers. MathJax is an open-source JavaScript display engine for LaTeX, MathML, and AsciiMath notation that works in all browsers. This package includes the packaged components (install mathjax-full to get the source
1 lines • 173 kB
JavaScript
(()=>{"use strict";var t={d:(e,s)=>{for(var i in s)t.o(s,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:s[i]})}};t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),t.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),t.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var e={};t.r(e),t.d(e,{DIRECTION:()=>Et,H:()=>It,V:()=>Ft});var s={};t.r(s),t.d(s,{DIRECTION:()=>Et,FontData:()=>Ut,NOSTRETCH:()=>zt,mergeOptions:()=>Vt});var i={};t.r(i),t.d(i,{LineBBox:()=>Kt});var n={};t.r(n),t.d(n,{LinebreakVisitor:()=>Yt,Linebreaks:()=>Gt,NOBREAK:()=>Qt});var o={};t.r(o),t.d(o,{CommonOutputJax:()=>de,FONTPATH:()=>le});var r={};t.r(r),t.d(r,{CommonWrapperFactory:()=>me});var a={};t.r(a),t.d(a,{CommonWrapper:()=>we,SPACE:()=>ke});var h={};t.r(h),t.d(h,{ChtmlWrapper:()=>Me,FONTSIZE:()=>Ce});var l={};t.r(l),t.d(l,{CommonMathMixin:()=>je});var d={};t.r(d),t.d(d,{ChtmlMath:()=>Se});var c={};t.r(c),t.d(c,{CommonMiMixin:()=>Le});var m={};t.r(m),t.d(m,{ChtmlMi:()=>Te});var p={};t.r(p),t.d(p,{CommonMoMixin:()=>Ae});var u={};t.r(u),t.d(u,{Usage:()=>Oe});var g={};t.r(g),t.d(g,{AddCSS:()=>Pe,ChtmlFontData:()=>We,DIRECTION:()=>Et,FontData:()=>Ut,NOSTRETCH:()=>zt,mergeOptions:()=>Vt});var x={};t.r(x),t.d(x,{ChtmlMo:()=>He});var f={};t.r(f),t.d(f,{CommonMnMixin:()=>Re});var b={};t.r(b),t.d(b,{ChtmlMn:()=>Fe});var y={};t.r(y),t.d(y,{CommonMsMixin:()=>Ie});var B={};t.r(B),t.d(B,{ChtmlMs:()=>ze});var k={};t.r(k),t.d(k,{CommonMtextMixin:()=>Ve});var w={};t.r(w),t.d(w,{ChtmlMtext:()=>$e});var C={};t.r(C),t.d(C,{CommonMspaceMixin:()=>Je});var M={};t.r(M),t.d(M,{ChtmlMspace:()=>qe});var j={};t.r(j),t.d(j,{CommonMpaddedMixin:()=>Xe});var v={};t.r(v),t.d(v,{ChtmlMpadded:()=>Ge});var S={};t.r(S),t.d(S,{ARROWDX:()=>Ze,ARROWX:()=>Ye,ARROWY:()=>ts,CommonArrow:()=>ys,CommonBorder:()=>gs,CommonBorder2:()=>xs,CommonDiagonalArrow:()=>bs,CommonDiagonalStrike:()=>fs,PADDING:()=>ss,SOLID:()=>is,THICKNESS:()=>es,arrowBBox:()=>us,arrowBBoxHD:()=>ds,arrowBBoxW:()=>cs,arrowDef:()=>ms,arrowHead:()=>ls,diagonalArrowDef:()=>ps,fullBBox:()=>rs,fullBorder:()=>hs,fullPadding:()=>as,sideIndex:()=>ns,sideNames:()=>os});var L={};t.r(L),t.d(L,{CommonMencloseMixin:()=>Bs});var N={};t.r(N),t.d(N,{ARROWDX:()=>Ze,ARROWX:()=>Ye,ARROWY:()=>ts,Arrow:()=>Ss,Border:()=>Cs,Border2:()=>Ms,CommonArrow:()=>ys,CommonBorder:()=>gs,CommonBorder2:()=>xs,CommonDiagonalArrow:()=>bs,CommonDiagonalStrike:()=>fs,DiagonalArrow:()=>vs,DiagonalStrike:()=>js,PADDING:()=>ss,RenderElement:()=>ws,SOLID:()=>is,THICKNESS:()=>es,arrowBBox:()=>us,arrowBBoxHD:()=>ds,arrowBBoxW:()=>cs,arrowDef:()=>ms,arrowHead:()=>ls,diagonalArrowDef:()=>ps,fullBBox:()=>rs,fullBorder:()=>hs,fullPadding:()=>as,sideIndex:()=>ns,sideNames:()=>os});var T={};t.r(T),t.d(T,{ChtmlMenclose:()=>Ts});var A={};t.r(A),t.d(A,{CommonInferredMrowMixin:()=>Ds,CommonMrowMixin:()=>As});var D={};t.r(D),t.d(D,{ChtmlInferredMrow:()=>Rs,ChtmlMrow:()=>Hs});var O={};t.r(O),t.d(O,{CommonMfencedMixin:()=>Es});var W={};t.r(W),t.d(W,{ChtmlMfenced:()=>Is});var P={};t.r(P),t.d(P,{CommonMfracMixin:()=>_s});var H={};t.r(H),t.d(H,{ChtmlMfrac:()=>Vs});var R={};t.r(R),t.d(R,{CommonMsqrtMixin:()=>Us});var E={};t.r(E),t.d(E,{ChtmlMsqrt:()=>Js});var F={};t.r(F),t.d(F,{CommonMrootMixin:()=>Ks});var I={};t.r(I),t.d(I,{ChtmlMroot:()=>Xs});var _={};t.r(_),t.d(_,{CommonMsubMixin:()=>Qs,CommonMsubsupMixin:()=>Ys,CommonMsupMixin:()=>Gs});var z={};t.r(z),t.d(z,{CommonScriptbaseMixin:()=>Zs});var V={};t.r(V),t.d(V,{ChtmlScriptbase:()=>ti});var U={};t.r(U),t.d(U,{ChtmlMsub:()=>oi,ChtmlMsubsup:()=>ai,ChtmlMsup:()=>ri});var $={};t.r($),t.d($,{CommonMoverMixin:()=>li,CommonMunderMixin:()=>hi,CommonMunderoverMixin:()=>di});var J={};t.r(J),t.d(J,{ChtmlMover:()=>xi,ChtmlMunder:()=>gi,ChtmlMunderover:()=>fi});var K={};t.r(K),t.d(K,{CommonMmultiscriptsMixin:()=>Bi,NextScript:()=>bi,ScriptNames:()=>yi});var q={};t.r(q),t.d(q,{ChtmlMmultiscripts:()=>Ci});var X={};t.r(X),t.d(X,{BREAK_BELOW:()=>Si,CommonMtableMixin:()=>Li});var Q={};t.r(Q),t.d(Q,{ChtmlMtable:()=>Ti});var G={};t.r(G),t.d(G,{CommonMlabeledtrMixin:()=>Di,CommonMtrMixin:()=>Ai});var Y={};t.r(Y),t.d(Y,{ChtmlMlabeledtr:()=>Ri,ChtmlMtr:()=>Hi});var Z={};t.r(Z),t.d(Z,{CommonMtdMixin:()=>Ei});var tt={};t.r(tt),t.d(tt,{ChtmlMtd:()=>Ii});var et={};t.r(et),t.d(et,{CommonMactionMixin:()=>zi,TooltipData:()=>_i});var st={};t.r(st),t.d(st,{ChtmlMaction:()=>Ui});var it={};t.r(it),t.d(it,{CommonMglyphMixin:()=>$i});var nt={};t.r(nt),t.d(nt,{ChtmlMglyph:()=>Ki});var ot={};t.r(ot),t.d(ot,{CommonSemanticsMixin:()=>qi});var rt={};t.r(rt),t.d(rt,{CommonXmlNodeMixin:()=>Xi});var at={};t.r(at),t.d(at,{ChtmlAnnotation:()=>en,ChtmlAnnotationXML:()=>nn,ChtmlSemantics:()=>tn,ChtmlXmlNode:()=>on});var ht={};t.r(ht),t.d(ht,{CommonTeXAtomMixin:()=>rn});var lt={};t.r(lt),t.d(lt,{ChtmlTeXAtom:()=>hn});var dt={};t.r(dt),t.d(dt,{CommonTextNodeMixin:()=>ln});var ct={};t.r(ct),t.d(ct,{ChtmlTextNode:()=>dn});var mt={};t.r(mt),t.d(mt,{ChtmlHtmlNode:()=>mn});var pt={};t.r(pt),t.d(pt,{ChtmlWrappers:()=>pn});var ut={};t.r(ut),t.d(ut,{ChtmlWrapperFactory:()=>un});var gt={};t.r(gt),t.d(gt,{DefaultFont:()=>xn,fontName:()=>gn});var xt={};t.r(xt),t.d(xt,{CHTML:()=>fn});var ft={};t.r(ft),t.d(ft,{AddFontIds:()=>bn});const bt=("undefined"!=typeof window?window:t.g).MathJax._.components.global,yt=(bt.GLOBAL,bt.isObject,bt.combineConfig,bt.combineDefaults),Bt=bt.combineWithMathJax,kt=(bt.MathJax,MathJax._.core.OutputJax.AbstractOutputJax),wt=MathJax._.core.MathItem,Ct=(wt.protoItem,wt.AbstractMathItem,wt.STATE),Mt=(wt.newState,MathJax._.core.MmlTree.MmlNode),jt=Mt.TEXCLASS,vt=Mt.TEXCLASSNAMES,St=(Mt.MATHVARIANTS,Mt.indentAttributes,Mt.AbstractMmlNode,Mt.AbstractMmlTokenNode,Mt.AbstractMmlLayoutNode,Mt.AbstractMmlBaseNode,Mt.AbstractMmlEmptyNode,Mt.TextNode),Lt=Mt.XMLNode,Nt=MathJax._.mathjax.mathjax,Tt=MathJax._.util.Options,At=(Tt.isObject,Tt.APPEND,Tt.REMOVE,Tt.OPTIONS,Tt.Expandable,Tt.expandable,Tt.makeArray,Tt.keys,Tt.copy,Tt.insert,Tt.defaultOptions),Dt=Tt.userOptions,Ot=(Tt.selectOptions,Tt.selectOptionsFromKeys,Tt.separateOptions),Wt=Tt.lookup,Pt=MathJax._.util.AsyncLoad.asyncLoad,Ht=MathJax._.util.Retries,Rt=(Ht.handleRetriesFor,Ht.retryAfter),Et={None:"",Vertical:"v",Horizontal:"h"},Ft=Et.Vertical,It=Et.Horizontal;var _t=function(t,e,s,i){return new(s||(s=Promise))((function(n,o){function r(t){try{h(i.next(t))}catch(t){o(t)}}function a(t){try{h(i.throw(t))}catch(t){o(t)}}function h(t){var e;t.done?n(t.value):(e=t.value,e instanceof s?e:new s((function(t){t(e)}))).then(r,a)}h((i=i.apply(t,e||[])).next())}))};const zt={dir:Et.None};function Vt(t,e,s){return s?At(t,{[e]:s})[e]:t[e]}class Ut{get CLASS(){return this.constructor}static charOptions(t,e){const s=t[e];if(!Array.isArray(s))throw Error(`Character data hasn't been loaded for 0x${e.toString(16).toUpperCase()}`);return 3===s.length&&(s[3]={}),s[3]}static defineDynamicFiles(t,e=""){const s={};return(t||[]).forEach((([t,i,n])=>{s[t]={extension:e,file:t,variants:i,delimiters:n||[],promise:null,failed:!1,setup:e=>{s[t].failed=!0}}})),s}static dynamicSetup(t,e,s,i={},n=null){const o=t?this.dynamicExtensions.get(t):null;(t?o.files:this.dynamicFiles)[e].setup=e=>{Object.keys(s).forEach((t=>e.defineChars(t,s[t]))),e.defineDelimiters(i),t&&this.adjustDelimiters(e.delimiters,Object.keys(i),o.sizeN,o.stretchN),n&&e.addDynamicFontCss(n)}}static adjustDelimiters(t,e,s,i){e.forEach((e=>{const n=t[parseInt(e)];"dir"in n&&(n.variants&&(n.variants=this.adjustArrayIndices(n.variants,s)),n.stretchv&&(n.stretchv=this.adjustArrayIndices(n.stretchv,i)))}))}static adjustArrayIndices(t,e){return t.map((t=>t<0?e-1-t:t))}static addExtension(t,e=""){const s={name:t.name,prefix:e||`[${t.name}-extension]/${this.JAX.toLowerCase()}/dynamic`,files:this.defineDynamicFiles(t.ranges,t.name),sizeN:this.defaultSizeVariants.length,stretchN:this.defaultStretchVariants.length};this.dynamicExtensions.set(t.name,s);for(const[e,s]of[["options","OPTIONS"],["variants","defaultVariants"],["variantSmp","VariantSmp"],["cssFonts","defaultCssFonts"],["accentMap","defaultAccentMap"],["moMap","defaultMoMap"],["mnMap","defaultMnMap"],["parameters","defaultParams"],["chars","defaultChars"],["sizeVariants","defaultSizeVariants"],["stretchVariants","defaultStretchVariants"]])Vt(this,s,t[e]);t.delimiters&&(Object.assign(this.defaultDelimiters,t.delimiters),this.adjustDelimiters(this.defaultDelimiters,Object.keys(t.delimiters),s.sizeN,s.stretchN))}constructor(t=null){this.variant={},this.delimiters={},this.cssFontMap={},this.cssFontPrefix="",this.remapChars={},this.skewIcFactor=.75;const e=this.CLASS;this.options=Dt(At({},e.OPTIONS),t),this.params=Object.assign({},e.defaultParams),this.sizeVariants=[...e.defaultSizeVariants],this.stretchVariants=[...e.defaultStretchVariants],this.defineCssFonts(e.defaultCssFonts),this.cssFamilyPrefix=e.defaultCssFamilyPrefix,this.createVariants(e.defaultVariants),this.defineDelimiters(e.defaultDelimiters),Object.keys(e.defaultChars).forEach((t=>this.defineChars(t,e.defaultChars[t]))),this.defineRemap("accent",e.defaultAccentMap),this.defineRemap("mo",e.defaultMoMap),this.defineRemap("mn",e.defaultMnMap),this.defineDynamicCharacters(e.dynamicFiles),e.dynamicExtensions.forEach((t=>this.defineDynamicCharacters(t.files)))}setOptions(t){At(this.options,t)}addExtension(t,e=""){const s=this.constructor.JAX.toLowerCase(),i={name:t.name,prefix:e||`[${t.name}-extension]/${s}/dynamic`,files:this.CLASS.defineDynamicFiles(t.ranges,e),sizeN:this.sizeVariants.length,stretchN:this.stretchVariants.length};this.CLASS.dynamicExtensions.set(t.name,i),At(this.options,t.options||{}),At(this.params,t.parameters||{}),Vt(this,"sizeVariants",t.sizeVariants),Vt(this,"stretchVariants",t.stretchVariants),Vt(this.constructor,"VariantSmp",t.variantSmp),this.defineCssFonts(Vt({cssFonts:{}},"cssFonts",t.cssFonts)),this.createVariants(Vt({variants:[]},"variants",t.variants)),t.delimiters&&(this.defineDelimiters(Vt({delimiters:{}},"delimiters",t.delimiters)),this.CLASS.adjustDelimiters(this.delimiters,Object.keys(t.delimiters),i.sizeN,i.stretchN));for(const e of Object.keys(t.chars||{}))this.defineChars(e,t.chars[e]);return this.defineRemap("accent",t.accentMap),this.defineRemap("mo",t.moMap),this.defineRemap("mn",t.mnMap),t.ranges&&this.defineDynamicCharacters(i.files),[]}get styles(){return this._styles}set styles(t){this._styles=t}createVariant(t,e=null,s=null){const i={linked:[],chars:Object.create(e?this.variant[e].chars:{})};this.variant[s]&&(Object.assign(i.chars,this.variant[s].chars),this.variant[s].linked.push(i.chars),i.chars=Object.create(i.chars)),this.remapSmpChars(i.chars,t),this.variant[t]=i}remapSmpChars(t,e){const s=this.CLASS;let i=s.VariantSmp[e];if("string"==typeof i&&(i=s.VariantSmp[i]),!i)return;const n=s.SmpRemap,o=[null,null,s.SmpRemapGreekU,s.SmpRemapGreekL];for(const[e,r,a]of s.SmpRanges){const s=i[e];if(s){for(let e=r;e<=a;e++){if(930===e)continue;const i=s+e-r;t[e]=this.smpChar(n[i]||i)}if(o[e])for(const i of Object.keys(o[e]).map((t=>parseInt(t))))t[i]=this.smpChar(s+o[e][i])}}const r=i[5]||{};for(const e of Object.keys(r))t[e]=this.smpChar(i[5][e])}smpChar(t){return[,,,{smp:t}]}createVariants(t){for(const e of t)this.createVariant(e[0],e[1],e[2])}defineChars(t,e){const s=this.variant[t];Object.assign(s.chars,e);for(const t of s.linked)Object.assign(t,e)}defineCssFonts(t){Object.assign(this.cssFontMap,t);for(const e of Object.keys(t))"unknown"===this.cssFontMap[e][0]&&(this.cssFontMap[e][0]=this.options.unknownFamily)}defineDelimiters(t){Object.assign(this.delimiters,t)}defineRemap(t,e){e&&(Object.hasOwn(this.remapChars,t)||(this.remapChars[t]={}),Object.assign(this.remapChars[t],e))}defineDynamicCharacters(t){for(const e of Object.keys(t)){const s=t[e];for(const t of Object.keys(s.variants))this.defineChars(t,this.flattenRanges(s.variants[t],s));this.defineDelimiters(this.flattenRanges(s.delimiters,s))}}flattenRanges(t,e){const s={};for(const i of t)if(Array.isArray(i))for(let t=i[0];t<=i[1];t++)s[t]=e;else s[i]=e;return s}dynamicFileName(t){const e=t.extension?this.CLASS.dynamicExtensions.get(t.extension).prefix:this.options.dynamicPrefix;return t.file.match(/^(?:[/[]|[a-z]+:\/\/|[a-z]:)/i)?t.file:e+"/"+t.file.replace(/(\.js)?$/,".js")}loadDynamicFile(t){return _t(this,void 0,void 0,(function*(){return t.failed?Promise.reject(new Error(`dynamic file '${t.file}' failed to load`)):(t.promise||(t.promise=Pt(this.dynamicFileName(t)).catch((e=>{t.failed=!0,console.warn(e)}))),t.promise.then((()=>t.setup(this))))}))}loadDynamicFiles(){const t=this.CLASS.dynamicFiles,e=Object.keys(t).map((e=>this.loadDynamicFile(t[e])));for(const t of this.CLASS.dynamicExtensions.values())e.push(...Object.keys(t.files).map((e=>this.loadDynamicFile(t.files[e]))));return Promise.all(e)}loadDynamicFilesSync(){if(!Nt.asyncIsSynchronous)throw Error("MathJax(loadDynamicFilesSync): mathjax.asyncLoad must be specified and synchronous\n Try importing #js/../components/require.mjs and #js/util/asyncLoad/node.js");const t=this.CLASS.dynamicFiles;Object.keys(t).forEach((e=>this.loadDynamicFileSync(t[e])));for(const t of this.CLASS.dynamicExtensions.values())Object.keys(t.files).forEach((e=>this.loadDynamicFileSync(t.files[e])))}loadDynamicFileSync(t){if(!t.promise){t.promise=Promise.resolve();try{Nt.asyncLoad(this.dynamicFileName(t))}catch(e){t.failed=!0,console.warn(e)}t.setup(this)}}addDynamicFontCss(t,e){}getDelimiter(t){const e=this.delimiters[t];return e&&!("dir"in e)?(this.delimiters[t]=null,Rt(this.loadDynamicFile(e)),null):e}getSizeVariant(t,e){const s=this.getDelimiter(t);return s&&s.variants&&(e=s.variants[e]),this.sizeVariants[e]}getStretchVariant(t,e){const s=this.getDelimiter(t);return this.stretchVariants[s.stretchv?s.stretchv[e]:0]}getStretchVariants(t){return[0,1,2,3].map((e=>this.getStretchVariant(t,e)))}getChar(t,e){const s=this.variant[t].chars[e];if(s&&!Array.isArray(s)){const i=this.variant[t];return delete i.chars[e],i.linked.forEach((t=>delete t[e])),Rt(this.loadDynamicFile(s)),null}return s}getVariant(t){return this.variant[t]}getCssFont(t){return this.cssFontMap[t]||["serif",!1,!1]}getFamily(t){return this.cssFamilyPrefix?this.cssFamilyPrefix+", "+t:t}getRemappedChar(t,e){return(this.remapChars[t]||{})[e]}}Ut.OPTIONS={unknownFamily:"serif",dynamicPrefix:"."},Ut.JAX="common",Ut.NAME="",Ut.defaultVariants=[["normal"],["bold","normal"],["italic","normal"],["bold-italic","italic","bold"],["double-struck","bold"],["fraktur","normal"],["bold-fraktur","bold","fraktur"],["script","italic"],["bold-script","bold-italic","script"],["sans-serif","normal"],["bold-sans-serif","bold","sans-serif"],["sans-serif-italic","italic","sans-serif"],["sans-serif-bold-italic","bold-italic","bold-sans-serif"],["monospace","normal"],["-smallop","normal"],["-largeop","normal"],["-tex-calligraphic","italic"],["-tex-bold-calligraphic","bold-italic"],["-tex-oldstyle","normal"],["-tex-bold-oldstyle","bold"],["-tex-mathit","italic"],["-tex-variant","normal"]],Ut.defaultCssFonts={normal:["unknown",!1,!1],bold:["unknown",!1,!0],italic:["unknown",!0,!1],"bold-italic":["unknown",!0,!0],"double-struck":["unknown",!1,!0],fraktur:["unknown",!1,!1],"bold-fraktur":["unknown",!1,!0],script:["cursive",!1,!1],"bold-script":["cursive",!1,!0],"sans-serif":["sans-serif",!1,!1],"bold-sans-serif":["sans-serif",!1,!0],"sans-serif-italic":["sans-serif",!0,!1],"sans-serif-bold-italic":["sans-serif",!0,!0],monospace:["monospace",!1,!1],"-smallop":["unknown",!1,!1],"-largeop":["unknown",!1,!1],"-tex-calligraphic":["cursive",!0,!1],"-tex-bold-calligraphic":["cursive",!0,!0],"-tex-oldstyle":["unknown",!1,!1],"-tex-bold-oldstyle":["unknown",!1,!0],"-tex-mathit":["unknown",!0,!1],"-tex-variant":["unknown",!1,!1]},Ut.defaultCssFamilyPrefix="",Ut.VariantSmp={bold:[119808,119834,120488,120514,120782,{988:120778,989:120779}],italic:[119860,119886,120546,120572],"bold-italic":[119912,119938,120604,120630],script:[119964,119990],"bold-script":[120016,120042],fraktur:[120068,120094],"double-struck":[120120,120146,,,120792],"bold-fraktur":[120172,120198],"sans-serif":[120224,120250,,,120802],"bold-sans-serif":[120276,120302,120662,120688,120812],"sans-serif-italic":[120328,120354],"sans-serif-bold-italic":[120380,120406,120720,120746],monospace:[120432,120458,,,120822]},Ut.SmpRanges=[[0,65,90],[1,97,122],[2,913,937],[3,945,969],[4,48,57]],Ut.SmpRemap={119893:8462,119965:8492,119968:8496,119969:8497,119971:8459,119972:8464,119975:8466,119976:8499,119981:8475,119994:8495,119996:8458,120004:8500,120070:8493,120075:8460,120076:8465,120085:8476,120093:8488,120122:8450,120127:8461,120133:8469,120135:8473,120136:8474,120137:8477,120145:8484},Ut.SmpRemapGreekU={8711:25,1012:17},Ut.SmpRemapGreekL={977:27,981:29,982:31,1008:28,1009:30,1013:26,8706:25},Ut.defaultAccentMap={94:"\u02c6",126:"\u02dc",768:"\u02cb",769:"\u02ca",770:"\u02c6",771:"\u02dc",772:"\u02c9",774:"\u02d8",775:"\u02d9",776:"\xa8",778:"\u02da",780:"\u02c7",8594:"\u20d7"},Ut.defaultMoMap={45:"\u2212"},Ut.defaultMnMap={45:"\u2212"},Ut.defaultParams={x_height:.442,quad:1,num1:.676,num2:.394,num3:.444,denom1:.686,denom2:.345,sup1:.413,sup2:.363,sup3:.289,sub1:.15,sub2:.247,sup_drop:.386,sub_drop:.05,delim1:2.39,delim2:1,axis_height:.25,rule_thickness:.06,big_op_spacing1:.111,big_op_spacing2:.167,big_op_spacing3:.2,big_op_spacing4:.6,big_op_spacing5:.1,surd_height:.06,scriptspace:.05,nulldelimiterspace:.12,delimiterfactor:901,delimitershortfall:.3,rule_factor:1.25,min_rule_thickness:1.25,separation_factor:1.75,extra_ic:.033,extender_factor:.333},Ut.defaultDelimiters={},Ut.defaultChars={},Ut.defaultSizeVariants=[],Ut.defaultStretchVariants=[],Ut.dynamicFiles={},Ut.dynamicExtensions=new Map;const $t=MathJax._.core.Tree.Visitor.AbstractVisitor,Jt=MathJax._.util.BBox.BBox;class Kt extends Jt{static from(t,e,s=null){const i=new this;return Object.assign(i,t),i.lineLeading=e,s&&(i.indentData=s),i}constructor(t,e=null){super(t),this.indentData=null,this.isFirst=!1,this.originalL=this.L,e&&(this.start=e)}append(t){this.isFirst&&(t.originalL+=t.L,t.L=0),t.indentData&&(this.indentData=t.indentData),this.lineLeading=t.lineLeading,super.append(t),this.isFirst=t.isFirst}copy(){const t=Kt.from(this,this.lineLeading);return t.indentData=this.indentData,t.lineLeading=this.lineLeading,t}getIndentData(t){let{indentalign:e,indentshift:s,indentalignfirst:i,indentshiftfirst:n,indentalignlast:o,indentshiftlast:r}=t.attributes.getAllAttributes();"indentalign"===i&&(i=t.attributes.getInherited("indentalign")),"indentshift"===n&&(n=t.attributes.getInherited("indentshift")),"indentalign"===o&&(o=e),"indentshift"===r&&(r=s),this.indentData=[[i,n],[e,s],[o,r]]}copyIndentData(t){return t.indentData.map((([t,e])=>[t,e]))}}const qt=MathJax._.core.MmlTree.OperatorDictionary,Xt=(qt.OPDEF,qt.MO,qt.RANGES,qt.getRange,qt.MMLSPACING,qt.OPTABLE),Qt=1e6;class Gt extends $t{breakToWidth(t,e){}}class Yt extends Gt{constructor(){super(...arguments),this.PENALTY={newline:t=>0,nobreak:t=>Qt,goodbreak:t=>t-200*this.state.depth,badbreak:t=>t+200*this.state.depth,auto:t=>t},this.FACTORS={depth:t=>t+800*this.state.depth,width:t=>t+Math.floor((this.state.width-this.state.w)/this.state.width*2500),tail:t=>t+Math.floor(this.state.width/Math.max(1e-4,this.state.mathLeft-this.state.w)*500),open:(t,e)=>{const s=e.node.prevClass;if(s===jt.BIN||s===jt.REL||s===jt.OP)return t+5e3;const i=this.getPrevious(e);if(i&&("postfix"!==i.attributes.get("form")||"nobreak"===i.attributes.get("linebreak")))return t+5e3;const n=e.node.Parent;if((null==n?void 0:n.isKind("mmultiscripts"))&&e.node===this.getFirstToken(n)){if(!!n.childNodes.filter((t=>t.isKind("mprescripts"))).length)return Qt}return t-500},close:(t,e)=>{var s;const i=e.node.Parent;return!(null==i?void 0:i.isKind("msubsup"))||i.isKind("mmultiscripts")&&(null===(s=i.childNodes[1])||void 0===s?void 0:s.isKind("mprescripts"))||e.node!==this.getLastToken(i.childNodes[0])?t+500:Qt},space:(t,e)=>{const s=e;if(!s.canBreak)return Qt;const i=s.getBBox().w;return i<0?Qt:i<1?t:t-100*(i+4)},separator:t=>t+500,fuzz:t=>.99*t},this.TEXCLASS={[jt.BIN]:t=>t-250,[jt.REL]:t=>t-500}}breakToWidth(t,e){const s=this.state;this.state=this.createState(t),this.state.width=e;const i=t.breakCount;for(let s=0;s<=i;s++){(t.lineBBox[s]||t.getLineBBox(s)).w>e&&this.breakLineToWidth(t,s)}for(const[t,e]of this.state.breaks){if(null===e){const e=t.coreMO();e.setBreakStyle(e.node.attributes.get("linebreakstyle")||"before")}else t.setBreakAt(e);t.invalidateBBox()}this.state=s}createState(t){const e=t.getBBox().w;return{breaks:new Set,potential:[],width:0,w:0,prevWidth:0,prevBreak:null,depth:0,mathWidth:e,mathLeft:e}}breakLineToWidth(t,e){const s=this.state;s.potential=[],s.w=0,s.prevWidth=0,s.prevBreak=null,s.depth=0,this.visitNode(t,e)}addWidth(t,e=null){null===e&&(e=t.L+t.w+t.R),e&&(e*=t.rscale,this.state.w+=e,this.state.potential.length&&(this.state.potential[0][4]+=e),this.processBreak())}processBreak(){const t=this.state;for(;t.potential.length&&t.w>this.state.width;){const e=t.potential.pop(),[s,,i,n,o]=e;t.breaks.add(s),t.w=t.potential.reduce(((t,e)=>t+e[4]),n+o),t.prevBreak&&t.prevWidth+i<=t.width?(t.breaks.delete(t.prevBreak[0]),t.prevWidth+=i):t.prevWidth=i+n,t.potential.forEach((t=>t[2]-=i)),t.prevBreak=e,t.mathLeft-=i}}pushBreak(t,e,s,i){var n;const o=this.state;if(!(e>=Qt||0===o.w&&0===o.prevWidth)){for(;o.potential.length&&o.potential[0][1]>this.FACTORS.fuzz(e);){const t=o.potential.shift();o.potential.length&&(o.potential[0][4]+=t[4])}o.potential.unshift([[t,i],e,o.w-((null===(n=o.prevBreak)||void 0===n?void 0:n[3])||0),s,0])}}getBorderLR(t){var e;const s=t.styleData;if(!s)return[0,0];const i=(null===(e=null==s?void 0:s.border)||void 0===e?void 0:e.width)||[0,0,0,0],n=(null==s?void 0:s.padding)||[0,0,0,0];return[i[3]+n[3],i[1]+n[1]]}getFirstToken(t){return t.isToken?t:this.getFirstToken(t.childNodes[0])}getLastToken(t){return t.isToken?t:this.getLastToken(t.childNodes[t.childNodes.length-1])}visitNode(t,e){t&&(this.state.depth++,t.node.isEmbellished&&!t.node.isKind("mo")?this.visitEmbellishedOperator(t,e):super.visitNode(t,e),this.state.depth--)}visitDefault(t,e){var s;const i=t.getLineBBox(e);if(t.node.isToken||t.node.linebreakContainer||!(null===(s=t.childNodes)||void 0===s?void 0:s[0]))this.addWidth(i);else{const[s,n]=this.getBorderLR(t);0===e&&this.addWidth(i,i.L+s),this.visitNode(t.childNodes[0],e),e===t.breakCount&&this.addWidth(i,i.R+n)}}visitEmbellishedOperator(t,e){const s=t.coreMO(),i=Kt.from(t.getOuterBBox(),t.linebreakOptions.lineleading);i.getIndentData(s.node);const n=s.getBreakStyle(s.node.attributes.get("linebreakstyle")),o=s.processIndent("",i.indentData[1][1],"",i.indentData[0][1],this.state.width)[1],r=this.moPenalty(s);if("before"===n)this.pushBreak(t,r,o-i.L,null),this.addWidth(i);else{this.addWidth(i);const e=("after"===n?0:s.multChar?s.multChar.getBBox().w:i.w)+o;this.pushBreak(t,r,e,null)}}visitMoNode(t,e){const s=t,i=Kt.from(s.getOuterBBox(),s.linebreakOptions.lineleading);i.getIndentData(s.node);const n=s.getBreakStyle(s.node.attributes.get("linebreakstyle")),o=s.processIndent("",i.indentData[1][1],"",i.indentData[0][1],this.state.width)[1],r=this.moPenalty(s);if("before"===n)this.pushBreak(t,r,o-i.L,null),this.addWidth(i);else{this.addWidth(i);const e=("after"===n?0:s.multChar?s.multChar.getBBox().w:i.w)+o;this.pushBreak(t,r,e,null)}}moPenalty(t){const{linebreak:e,fence:s,form:i}=t.node.attributes.getList("linebreak","fence","form"),n=this.FACTORS;let o=n.tail(n.width(0));const r=s&&"prefix"===i||t.node.texClass===jt.OPEN,a=s&&"postfix"===i||t.node.texClass===jt.CLOSE;return r&&(o=n.open(o,t),this.state.depth++),a&&(o=n.close(o,t),this.state.depth--),o=(this.TEXCLASS[t.node.texClass]||(t=>t))(o),(this.PENALTY[e]||(t=>t))(n.depth(o))}getPrevious(t){let e=t.node,s=e.parent,i=s.childIndex(e);for(;s&&(s.notParent||s.isKind("mrow"))&&0===i;)e=s,s=e.parent,i=s.childIndex(e);if(!s||!i)return null;const n=s.childNodes[i-1];return n.isEmbellished?n.coreMO():null}visitMspaceNode(t,e){const s=t.getLineBBox(e),i=t;if(i.canBreak){const e=this.mspacePenalty(i);s.getIndentData(t.node);const n=t.processIndent("",s.indentData[1][1],"",s.indentData[0][1],this.state.width)[1];this.pushBreak(t,e,n-s.w,null)}this.addWidth(s)}mspacePenalty(t){const e=t.node.attributes.get("linebreak"),s=this.FACTORS,i=s.space(s.tail(s.width(0)),t);return(this.PENALTY[e]||(t=>t))(s.depth(i))}visitMtextNode(t,e){if(!t.getText().match(/ /))return void this.visitDefault(t,e);const s=t;s.clearBreakPoints();const i=s.textWidth(" "),n=t.getBBox(),[o,r]=this.getBorderLR(t);this.addWidth(n,n.L+o);const a=s.childNodes;for(const e of a.keys()){const o=a[e];if(o.node.isKind("text")){const r=o.node.getText().split(/ /),a=r.pop();for(const o of r.keys())this.addWidth(n,s.textWidth(r[o])),this.pushBreak(t,this.mtextPenalty(),-i,[e,o+1]),this.addWidth(n,i);this.addWidth(n,s.textWidth(a))}else this.addWidth(o.getBBox())}this.addWidth(n,n.R+r)}mtextPenalty(){const t=this.FACTORS;return t.depth(t.tail(t.width(0)))}visitMrowNode(t,e){const s=t.lineBBox[e]||t.getLineBBox(e),[i,n]=s.start||[0,0],[o,r]=s.end||[t.childNodes.length-1,0],[a,h]=this.getBorderLR(t);this.addWidth(s,s.L+a);for(let e=i;e<=o;e++)this.visitNode(t.childNodes[e],e===i?n:e===o?r:0);this.addWidth(s,s.R+h)}visitInferredMrowNode(t,e){this.state.depth--,this.visitMrowNode(t,e),this.state.depth++}visitMfracNode(t,e){const s=t;!s.node.attributes.get("bevelled")&&s.getOuterBBox().w>this.state.width&&(this.breakToWidth(s.childNodes[0],this.state.width),this.breakToWidth(s.childNodes[1],this.state.width)),this.visitDefault(t,e)}visitMsqrtNode(t,e){if(t.getOuterBBox().w>this.state.width){const e=t,s=e.childNodes[e.base];this.breakToWidth(s,this.state.width-e.rootWidth()),e.getStretchedSurd()}this.visitDefault(t,e)}visitMrootNode(t,e){this.visitMsqrtNode(t,e)}visitMsubNode(t,e){this.visitDefault(t,e);const s=t,i=s.getOffset()[0],n=s.scriptChild.getOuterBBox(),[o,r]=this.getBorderLR(t);this.addWidth(s.getLineBBox(e),i+o+n.rscale*n.w+s.font.params.scriptspace+r)}visitMsupNode(t,e){this.visitDefault(t,e);const s=t,i=s.getOffset()[0],n=s.scriptChild.getOuterBBox(),[o,r]=this.getBorderLR(t);this.addWidth(s.getLineBBox(e),i+o+n.rscale*n.w+s.font.params.scriptspace+r)}visitMsubsupNode(t,e){this.visitDefault(t,e);const s=t,i=s.subChild.getOuterBBox(),n=s.supChild.getOuterBBox(),o=s.getAdjustedIc(),r=Math.max(i.rscale*i.w,o+n.rscale*n.w)+s.font.params.scriptspace,[a,h]=this.getBorderLR(t);this.addWidth(t.getLineBBox(e),a+r+h)}visitMmultiscriptsNode(t,e){const s=t,i=s.scriptData;if(i.numPrescripts){const n=Math.max(i.psup.rscale*i.psup.w,i.psub.rscale*i.psub.w);this.addWidth(t.getLineBBox(e),n+s.font.params.scriptspace)}if(this.visitDefault(t,e),i.numScripts){const n=Math.max(i.sup.rscale*i.sup.w,i.sub.rscale*i.sub.w);this.addWidth(t.getLineBBox(e),n+s.font.params.scriptspace)}}visitMfencedNode(t,e){const s=t,i=t.getLineBBox(e),[n,o]=this.getBorderLR(t);0===e&&this.addWidth(i,i.L+n),this.visitNode(s.mrow,e),e===t.breakCount&&this.addWidth(i,i.R+o)}visitMactionNode(t,e){const s=t,i=t.getLineBBox(e),[n,o]=this.getBorderLR(t);0===e&&this.addWidth(i,i.L+n),this.visitNode(s.selected,e),e===t.breakCount&&this.addWidth(i,i.R+o)}}!function(){for(const t of Object.keys(Xt.postfix)){const e=Xt.postfix[t][3];e&&e.fence&&(e.linebreakstyle="after")}Xt.infix["\u2061"]=[...Xt.infix["\u2061"]],Xt.infix["\u2061"][3]={linebreak:"nobreak"}}();const Zt=MathJax._.util.lengths,te=Zt.BIGDIMEN,ee=(Zt.UNITS,Zt.RELUNITS,Zt.MATHSPACE,Zt.length2em),se=Zt.percent,ie=Zt.em,ne=Zt.px,oe=MathJax._.util.Styles,re=oe.TRBL,ae=(oe.WSC,oe.Styles),he=MathJax._.util.StyleJson.StyleJsonSheet,le="@mathjax/%%FONT%%-font";class de extends kt{get forceInlineBreaks(){return!1}constructor(t={},e=null,s=null){const[i,n]=t.fontData instanceof Ut?[t.fontData.constructor,t.fontData]:[t.fontData||s,null],[o,r]=Ot(t,i.OPTIONS);super(o),this.factory=this.options.wrapperFactory||new e,this.factory.jax=this,this.styleJson=this.options.styleJson||new he,this.font=n||new i(r),this.font.setOptions({mathmlSpacing:this.options.mathmlSpacing}),this.constructor.genericFont=i,this.unknownCache=new Map;const a=this.options.linebreaks.LinebreakVisitor||Yt;this.linebreaks=new a(this.factory)}setAdaptor(t){super.setAdaptor(t),"auto"===this.options.htmlHDW&&(this.options.htmlHDW=t.canMeasureNodes?"ignore":"force")}addExtension(t,e=""){return this.font.addExtension(t,e)}typeset(t,e){const s=this.constructor,i=s.genericFont;s.genericFont=this.font.constructor,this.setDocument(e);const n=this.createNode();try{this.toDOM(t,n,e)}finally{s.genericFont=i}return n}createNode(){const t=this.constructor.NAME;return this.html("mjx-container",{class:"MathJax",jax:t})}setScale(t,e){let s=this.getInitialScale()*this.options.scale;if("scale"===e.node.attributes.get("overflow")&&this.math.display){const t=e.getOuterBBox().w,i=Math.max(0,this.math.metrics.containerWidth-4)/this.pxPerEm;t>i&&t&&(s*=i/t)}1!==s&&this.adaptor.setStyle(t,"fontSize",se(s))}getInitialScale(){return this.math.metrics.scale}toDOM(t,e,s=null){var i;this.setDocument(s),this.math=t,this.container=e,this.pxPerEm=t.metrics.ex/this.font.params.x_height,this.executeFilters(this.preFilters,t,s,e),this.nodeMap=new Map,t.root.attributes.getAllInherited().overflow=this.options.displayOverflow;const n=t.root.attributes.get("overflow");this.adaptor.setAttribute(e,"overflow",n);"linebreak"===n&&this.getLinebreakWidth();const o=this.options.linebreaks.inline&&!t.display;let r=!!t.root.getProperty("inlineMarked");!r||o&&this.forceInlineBreaks===t.root.getProperty("inlineForced")||(this.unmarkInlineBreaks(t.root),t.root.removeProperty("inlineMarked"),t.root.removeProperty("inlineForced"),r=!1),o&&!r&&(this.markInlineBreaks(null===(i=t.root.childNodes)||void 0===i?void 0:i[0]),t.root.setProperty("inlineMarked",!0),t.root.setProperty("inlineForced",this.forceInlineBreaks)),t.root.setTeXclass(null);const a=this.factory.wrap(t.root);this.setScale(e,a),this.processMath(a,e),this.nodeMap=null,this.executeFilters(this.postFilters,t,s,e)}getBBox(t,e){this.setDocument(e),this.math=t,t.root.setTeXclass(null),this.nodeMap=new Map;const s=this.factory.wrap(t.root).getOuterBBox();return this.nodeMap=null,s}getLinebreakWidth(){const t=this.math.metrics.containerWidth/this.pxPerEm,e=this.math.root.attributes.get("maxwidth")||this.options.linebreaks.width;this.containerWidth=ee(e,t,1,this.pxPerEm)}markInlineBreaks(t){if(!t)return;const e=this.forceInlineBreaks;let s=!1,i=!1,n="";for(const o of t.childNodes)if(n)i=this.markInlineBreak(i,e,n,t,o),n="",s=!1;else if(o.isEmbellished){if(o===t.childNodes[0])continue;const r=o.coreMO(),a=r.texClass,h=r.attributes.get("linebreak"),l=r.attributes.get("linebreakstyle");(a===jt.BIN||a===jt.REL||a===jt.ORD&&r.hasSpacingAttributes()||"auto"!==h)&&"nobreak"!==h&&("before"===l?s&&"auto"===h||(i=this.markInlineBreak(i,e,h,t,o,r)):n=h),s="newline"===h&&"after"===l}else if(o.isKind("mspace")){const n=o.attributes.get("linebreak");"nobreak"!==n&&o.canBreak&&(i=this.markInlineBreak(i,e,n,t,o)),s="newline"===n}else s=!1,o.isKind("mstyle")&&!o.attributes.get("style")&&!o.attributes.hasExplicit("mathbackground")||o.isKind("semantics")?(this.markInlineBreaks(o.childNodes[0]),o.getProperty("process-breaks")&&(o.setProperty("inline-breaks",!0),o.childNodes[0].setProperty("inline-breaks",!0),t.parent.setProperty("process-breaks","true"))):o.isKind("mrow")&&o.attributes.get("data-semantic-added")&&(this.markInlineBreaks(o),o.getProperty("process-breaks")&&(o.setProperty("inline-breaks",!0),t.parent.setProperty("process-breaks","true")))}markInlineBreak(t,e,s,i,n,o=null){return n.setProperty("breakable",!0),e&&"newline"!==s?(n.setProperty("forcebreak",!0),null==o||o.setProperty("forcebreak",!0)):(n.removeProperty("forcebreak"),null==o||o.removeProperty("forcebreak"),"newline"===s&&n.setProperty("newline",!0)),t||(i.setProperty("process-breaks",!0),i.parent.setProperty("process-breaks",!0),t=!0),t}unmarkInlineBreaks(t){if(t&&(t.removeProperty("forcebreak"),t.removeProperty("breakable"),t.getProperty("process-breaks"))){t.removeProperty("process-breaks");for(const e of t.childNodes)this.unmarkInlineBreaks(e)}}getMetrics(t){this.setDocument(t);const e=this.adaptor,s=this.getMetricMaps(t);for(const i of t.math){const t=e.parent(i.start.node);if(i.state()<Ct.METRICS&&t){const e=s[i.display?1:0],{em:n,ex:o,containerWidth:r,scale:a,family:h}=e.get(t);i.setMetrics(n,o,r,a),this.options.mtextInheritFont&&(i.outputData.mtextFamily=h),this.options.merrorInheritFont&&(i.outputData.merrorFamily=h),i.state(Ct.METRICS)}}}getMetricsFor(t,e){const s=this.options.mtextInheritFont||this.options.merrorInheritFont,i=this.getTestElement(t,e),n=Object.assign(Object.assign({},this.measureMetrics(i,s)),{display:e});return this.adaptor.remove(i),n}getMetricMaps(t){const e=this.adaptor,s=[new Map,new Map];for(const i of t.math){const t=e.parent(i.start.node);if(t&&i.state()<Ct.METRICS){const e=s[i.display?1:0];e.has(t)||e.set(t,this.getTestElement(t,i.display))}}const i=this.options.mtextInheritFont||this.options.merrorInheritFont,n=[new Map,new Map];for(const t of n.keys())for(const e of s[t].keys())n[t].set(e,this.measureMetrics(s[t].get(e),i));for(const t of n.keys())for(const i of s[t].values())e.remove(i);return n}getTestElement(t,e){const s=this.adaptor;if(!this.testInline){this.testInline=this.html("mjx-test",{style:{display:"inline-block",width:"100%","font-style":"normal","font-weight":"normal","font-size":"100%","font-size-adjust":"none","text-indent":0,"text-transform":"none","letter-spacing":"normal","word-spacing":"normal",overflow:"hidden",height:"1px","margin-right":"-1px"}},[this.html("mjx-left-box",{style:{display:"inline-block",width:0,float:"left"}}),this.html("mjx-ex-box",{style:{position:"absolute",overflow:"hidden",width:"1px",height:"60ex"}}),this.html("mjx-right-box",{style:{display:"inline-block",width:0,float:"right"}})]),this.testDisplay=s.clone(this.testInline),s.setStyle(this.testDisplay,"display","table"),s.setStyle(this.testDisplay,"margin-right",""),s.setStyle(s.firstChild(this.testDisplay),"display","none");const t=s.lastChild(this.testDisplay);s.setStyle(t,"display","table-cell"),s.setStyle(t,"width","10000em"),s.setStyle(t,"float","")}return s.append(t,s.clone(e?this.testDisplay:this.testInline))}measureMetrics(t,e){const s=this.adaptor,i=e?s.fontFamily(t):"",n=s.fontSize(t),[o,r]=s.nodeSize(s.childNode(t,1)),a=o?r/60:n*this.options.exFactor;return{em:n,ex:a,containerWidth:o?"table"===s.getStyle(t,"display")?s.nodeSize(s.lastChild(t))[0]-1:s.nodeBBox(s.lastChild(t)).left-s.nodeBBox(s.firstChild(t)).left-2:1e6,scale:Math.max(this.options.minScale,this.options.matchFontHeight?a/this.font.params.x_height/n:1),family:i}}styleSheet(t){if(this.setDocument(t),this.styleJson.clear(),this.styleJson.addStyles(this.constructor.commonStyles),"getStyles"in t)for(const e of t.getStyles())this.styleJson.addStyles(e);this.addWrapperStyles(this.styleJson),this.addFontStyles(this.styleJson);return this.html("style",{id:"MJX-styles"},[this.text("\n"+this.styleJson.cssText+"\n")])}addFontStyles(t){t.addStyles(this.font.styles)}addWrapperStyles(t){for(const e of this.factory.getKinds())this.addClassStyles(this.factory.getNodeClass(e),t)}addClassStyles(t,e){t.addStyles(e,this)}insertStyles(t){}setDocument(t){t&&(this.document=t,this.adaptor.document=t.document)}html(t,e={},s=[],i){return this.adaptor.node(t,e,s,i)}text(t){return this.adaptor.text(t)}fixed(t,e=3){return Math.abs(t)<6e-4?"0":t.toFixed(e).replace(/\.?0+$/,"")}measureText(t,e,s=["",!1,!1]){const i=this.unknownText(t,e);if("-explicitFont"===e){const t=this.cssFontStyles(s);this.adaptor.setAttributes(i,{style:t})}return this.measureTextNodeWithCache(i,t,e,s)}measureTextNodeWithCache(t,e,s,i=["",!1,!1]){"-explicitFont"===s&&(s=[i[0],i[1]?"T":"F",i[2]?"T":"F",""].join("-")),this.unknownCache.has(s)||this.unknownCache.set(s,new Map);const n=this.unknownCache.get(s),o=n.get(e);if(o)return o;const r=this.measureTextNode(t);return n.set(e,r),r}cssFontStyles(t,e={}){const[s,i,n]=t;return e["font-family"]=this.font.getFamily(s),i&&(e["font-style"]="italic"),n&&(e["font-weight"]="bold"),e}getFontData(t){return t||(t=new ae),[this.font.getFamily(t.get("font-family")),"italic"===t.get("font-style"),"bold"===t.get("font-weight")]}}de.NAME="Common",de.OPTIONS=Object.assign(Object.assign({},kt.OPTIONS),{scale:1,minScale:.5,mtextInheritFont:!1,merrorInheritFont:!1,mtextFont:"",merrorFont:"serif",mathmlSpacing:!1,skipAttributes:{},exFactor:.5,displayAlign:"center",displayIndent:"0",displayOverflow:"overflow",linebreaks:{inline:!0,width:"100%",lineleading:.2,LinebreakVisitor:null},font:"",fontExtensions:[],htmlHDW:"auto",wrapperFactory:null,fontData:null,fontPath:le,styleJson:null}),de.commonStyles={'mjx-container[overflow="scroll"][display]':{overflow:"auto clip","min-width":"initial !important"},'mjx-container[overflow="truncate"][display]':{overflow:"hidden clip","min-width":"initial !important"},"mjx-container[display]":{display:"block","text-align":"center","justify-content":"center",margin:".7em 0",padding:".3em 2px"},'mjx-container[display][width="full"]':{display:"flex"},'mjx-container[justify="left"]':{"text-align":"left","justify-content":"left"},'mjx-container[justify="right"]':{"text-align":"right","justify-content":"right"}};const ce=MathJax._.core.Tree.WrapperFactory.AbstractWrapperFactory;class me extends ce{constructor(){super(...arguments),this.jax=null}get Wrappers(){return this.node}}me.defaultNodes={};const pe=MathJax._.core.Tree.Wrapper.AbstractWrapper,ue=MathJax._.util.string,ge=(ue.sortLength,ue.quotePattern,ue.unicodeChars),xe=(ue.unicodeString,ue.isPercent),fe=ue.split,be=(ue.replaceUnicode,ue.toEntity,2/18),ye=5/18;function Be(t,e,s){return e?t?be:ye:t?s<be?0:be:s}const ke={[ie(0)]:"0",[ie(2/18)]:"1",[ie(3/18)]:"2",[ie(4/18)]:"3",[ie(5/18)]:"4",[ie(6/18)]:"5"};class we extends pe{static addStyles(t,e){t.addStyles(this.styles)}get jax(){return this.factory.jax}get adaptor(){return this.factory.jax.adaptor}get metrics(){return this.factory.jax.math.metrics}get containerWidth(){return this.parent?this.parent.containerWidth:this.jax.containerWidth}get linebreaks(){return this.jax.linebreaks}get linebreakOptions(){return this.jax.options.linebreaks}get fixesPWidth(){return!this.node.notParent&&!this.node.isToken}get breakCount(){if(this._breakCount<0){const t=this.node;this._breakCount=t.isEmbellished?this.coreMO().embellishedBreakCount:t.arity<0&&!t.linebreakContainer&&this.childNodes[0].isStack?this.childNodes[0].breakCount:0}return this._breakCount}breakTop(t,e){return this.node.linebreakContainer||!this.parent?t:this.parent.breakTop(t,this)}constructor(t,e,s=null){super(t,e),this.parent=null,this.dom=null,this.removedStyles=null,this.styles=null,this.styleData=null,this.variant="",this.bboxComputed=!1,this._breakCount=-1,this.lineBBox=[],this.stretch=zt,this.font=null,this.parent=s,this.font=t.jax.font,this.bbox=Jt.zero(),this.getStyles(),this.getStyleData(),this.getVariant(),this.getScale(),this.getSpace(),this.childNodes=e.childNodes.map((t=>{const s=this.wrap(t);return s.bbox.pwidth&&(e.notParent||e.isKind("math"))&&(this.bbox.pwidth=Jt.fullWidth),s}))}wrap(t,e=null){const s=this.factory.wrap(t,e||this);return e&&e.childNodes.push(s),this.jax.nodeMap.set(t,s),s}getBBox(t=!0){if(this.bboxComputed)return this.bbox;const e=t?this.bbox:Jt.zero();return this.computeBBox(e),this.bboxComputed=t,e}getOuterBBox(t=!0){var e;const s=this.getBBox(t);if(!this.styleData)return s;const i=this.styleData.padding,n=(null===(e=this.styleData.border)||void 0===e?void 0:e.width)||[0,0,0,0],o=s.copy();for(const[,t,e]of Jt.boxSides)o[e]+=i[t]+n[t];return o}getUnbrokenHD(){const t=this.breakCount+1;let e=0,s=0;for(let i=0;i<t;i++){const{h:t,d:n}=this.getLineBBox(i);t>e&&(e=t),n>s&&(s=n)}return[e,s]}computeBBox(t,e=!1){t.empty();for(const e of this.childNodes)t.append(e.getOuterBBox());t.clean(),this.fixesPWidth&&this.setChildPWidths(e)&&this.computeBBox(t,!0)}getLineBBox(t){if(!this.lineBBox[t]){const e=this.breakCount;if(e){const s=this.embellishedBBox(t)||this.computeLineBBox(t);this.lineBBox[t]=s,0===t&&(!this.node.isKind("mo")&&this.node.isEmbellished?s.originalL=this.getBBox().L:s.L=this.getBBox().L),t===e&&(s.R=this.getBBox().R)}else{const e=this.getOuterBBox();this.lineBBox[t]=Kt.from(e,this.linebreakOptions.lineleading)}}return this.lineBBox[t]}embellishedBBox(t){if(!this.node.isEmbellished||this.node.isKind("mo"))return null;const e=this.coreMO();return e.moLineBBox(t,e.embellishedBreakStyle,this.getOuterBBox())}computeLineBBox(t){return this.getChildLineBBox(this.childNodes[0],t)}getBreakNode(t){var e,s;if(!t.start)return[this,null];const[i,n]=t.start;if(this.node.isEmbellished)return[this,this.coreMO()];const o=(null===(s=null===(e=this.childNodes[0])||void 0===e?void 0:e.node)||void 0===s?void 0:s.isInferred)||this.node.isKind("semantics")?this.childNodes[0].childNodes:this.childNodes;return this.node.isToken||!o[i]?[this,null]:o[i].getBreakNode(o[i].getLineBBox(n))}getChildLineBBox(t,e){const s=this.breakCount;let i=t.getLineBBox(e);return(this.styleData||this.bbox.L||this.bbox.R)&&(i=i.copy()),this.addMiddleBorders(i),0===e?(i.L+=this.bbox.L,this.addLeftBorders(i)):e===s&&(i.R+=this.bbox.R,this.addRightBorders(i)),i}addLeftBorders(t){var e;if(!this.styleData)return;const s=this.styleData.border,i=this.styleData.padding;t.w+=((null===(e=null==s?void 0:s.width)||void 0===e?void 0:e[3])||0)+((null==i?void 0:i[3])||0)}addMiddleBorders(t){var e,s;if(!this.styleData)return;const i=this.styleData.border,n=this.styleData.padding;t.h+=((null===(e=null==i?void 0:i.width)||void 0===e?void 0:e[0])||0)+((null==n?void 0:n[0])||0),t.d+=((null===(s=null==i?void 0:i.width)||void 0===s?void 0:s[2])||0)+((null==n?void 0:n[2])||0)}addRightBorders(t){var e;if(!this.styleData)return;const s=this.styleData.border,i=this.styleData.padding;t.w+=((null===(e=null==s?void 0:s.width)||void 0===e?void 0:e[1])||0)+((null==i?void 0:i[1])||0)}setChildPWidths(t,e=null,s=!0){if(t)return!1;s&&(this.bbox.pwidth="");let i=!1;for(const n of this.childNodes){const o=n.getBBox();o.pwidth&&n.setChildPWidths(t,null===e?o.w:e,s)&&(i=!0)}return i}breakToWidth(t){}invalidateBBox(t=!0){(this.bboxComputed||this._breakCount>=0)&&(this.bboxComputed=!1,this.lineBBox=[],this._breakCount=-1,this.parent&&t&&this.parent.invalidateBBox())}copySkewIC(t){var e,s,i;const n=this.childNodes[0];(null===(e=null==n?void 0:n.bbox)||void 0===e?void 0:e.sk)&&(t.sk=n.bbox.sk),(null===(s=null==n?void 0:n.bbox)||void 0===s?void 0:s.dx)&&(t.dx=n.bbox.dx);const o=this.childNodes[this.childNodes.length-1];(null===(i=null==o?void 0:o.bbox)||void 0===i?void 0:i.ic)&&(t.ic=o.bbox.ic,t.w+=t.ic)}getStyles(){const t=this.node.attributes.getExplicit("style");if(!t)return;const e=this.styles=new ae(t);for(let t=0,s=we.removeStyles.length;t<s;t++){const s=we.removeStyles[t];e.get(s)&&(this.removedStyles||(this.removedStyles={}),this.removedStyles[s]=e.get(s),e.set(s,""))}}getStyleData(){if(!this.styles)return;const t=Array(4).fill(0),e=Array(4).fill(0),s=Array(4),i=Array(4);let n=!1,o=!1;for(const[r,a]of Jt.boxSides){const h="border"+r,l=this.styles.get(h+"Width");l&&(o=!0,e[a]=Math.max(0,this.length2em(l,1)),s[a]=this.styles.get(h+"Style")||"solid",i[a]=this.styles.get(h+"Color"));const d=this.styles.get("padding"+r);d&&(n=!0,t[a]=Math.max(0,this.length2em(d,1)))}this.styleData=n||o?{padding:t,border:o?{width:e,style:s,color:i}:null}:null}getVariant(){if(!this.node.isToken)return;const t=this.node.attributes;let e=t.get("mathvariant");if(t.hasExplicit("mathvariant"))this.font.getVariant(e)||(console.warn(`Invalid variant: ${e}`),e="normal");else{const s=t.getList("fontfamily","fontweight","fontstyle");if(this.removedStyles){const t=this.removedStyles;t.fontFamily&&(s.family=t.fontFamily),t.fontWeight&&(s.weight=t.fontWeight),t.fontStyle&&(s.style=t.fontStyle)}s.fontfamily&&(s.family=s.fontfamily),s.fontweight&&(s.weight=s.fontweight),s.fontstyle&&(s.style=s.fontstyle),s.weight&&s.weight.match(/^\d+$/)&&(s.weight=parseInt(s.weight)>600?"bold":"normal"),s.family?e=this.explicitVariant(s.family,s.weight,s.style):(this.node.getProperty("variantForm")&&(e="-tex-variant"),e=(we.BOLDVARIANTS[s.weight]||{})[e]||e,e=(we.ITALICVARIANTS[s.style]||{})[e]||e)}this.variant=e}explicitVariant(t,e,s){let i=this.styles;return i||(i=this.styles=new ae),i.set("fontFamily",t),e&&i.set("fontWeight",e),s&&i.set("fontStyle",s),"-explicitFont"}getScale(){let t=1;const e=this.parent,s=e?e.bbox.scale:1,i=this.node.attributes,n=Math.min(i.get("scriptlevel"),2);let o=i.get("fontsize"),r=this.node.isToken||this.node.isKind("mstyle")?i.get("mathsize"):i.getInherited("mathsize");if(0!==n&&(t=Math.pow(i.get("scriptsizemultiplier"),n)),this.removedStyles&&this.removedStyles.fontSize&&!o&&(o=this.removedStyles.fontSize),o&&!i.hasExplicit("mathsize")&&(r=o),"1"!==r&&(t*=this.length2em(r,1,1)),0!==n){const e=this.length2em(i.get("scriptminsize"),.4,1);t<e&&(t=e)}this.bbox.scale=t,this.bbox.rscale=t/s}getSpace(){const t=this.isTopEmbellished(),e=this.node.hasSpacingAttributes();this.jax.options.mathmlSpacing||e?t&&this.getMathMLSpacing():this.getTeXSpacing(t,e)}getMathMLSpacing(){const t=this.node.coreMO(),e=t.coreParent(),s=e.parent;if(!s||!s.isKind("mrow")||1===s.childNodes.length)return;const i=s.childIndex(e);if(null===i)return;const n=t.getProperty("noDictDef"),o=t.attributes,r=o.get("scriptlevel")>0;if(this.bbox.L=o.isSet("lspace")?Math.max(0,this.length2em(o.get("lspace"))):Be(r,n,t.lspace),this.bbox.R=o.isSet("rspace")?Math.max(0,this.length2em(o.get("rspace"))):Be(r,n,t.rspace),!i)return;const a=s.childNodes[i-1];if(!a.isEmbellished)return;const h=this.jax.nodeMap.get(a).getBBox();h.R&&(this.bbox.L=Math.max(0,this.bbox.L-h.R))}getTeXSpacing(t,e){if(!e){const t=this.node.texSpacing();t&&(this.bbox.L=this.length2em(t))}if(t||e){const t=this.node.coreMO().attributes;t.isSet("lspace")&&(this.bbox.L=Math.max(0,this.length2em(t.get("lspace")))),t.isSet("rspace")&&(this.bbox.R=Math.max(0,this.length2em(t.get("rspace"))))}}isTopEmbellished(){return this.node.isEmbellished&&!(this.node.parent&&this.node.parent.isEmbellished)}core(){return this.jax.nodeMap.get(this.node.core())}coreMO(){return this.jax.nodeMap.get(this.node.coreMO())}coreRScale(){let t=this.bbox.rscale,e=this.coreMO();for(;e!==this&&e;)t*=e.bbox.rscale,e=e.parent;return t}getRScale(){let t=1,e=this;for(;e;)t*=e.bbox.rscale,e=e.parent;return t}getText(){let t="";if(this.node.isToken)for(const e of this.node.childNodes)e instanceof St&&(t+=e.getText());return t}canStretch(t){if(this.stretch=zt,this.node.isEmbellished){const e=this.core();e&&e.node!==this.node&&e.canStretch(t)&&(this.stretch=e.stretch)}return this.stretch.dir!==Et.None}getAlignShift(){let{indentalign:t,indentshift:e,indentalignfirst:s,indentshiftfirst:i}=this.node.attributes.getAllAttributes();return"indentalign"!==s&&(t=s),"indentshift"!==i&&(e=i),this.processIndent(t,e)}processIndent(t,e,s="",i="",n=this.metrics.containerWidth){if(!this.jax.math.display)return["left",0];s&&"auto"!==s||(s=this.jax.math.root.getProperty("inlineMarked")?"left":this.jax.options.displayAlign),i&&"auto"!==i||(i=this.jax.math.root.getProperty("inlineMarked")?"0":this.jax.options.displayIndent),"auto"===t&&(t=s),"auto"===e&&(e=i,"right"!==t||e.match(/^\s*0[a-z]*\s*$/)||(e=("-"+e.trim()).replace(/^--/,"")));return[t,this.length2em(e,n)]}getAlignX(t,e,s){return"right"===s?t-(e.w+e.R)*e.rscale:"left"===s?e.L*e.rscale:(t-e.w*e.rscale)/2}getAlignY(t,e,s,i,n){return"top"===n?t-s:"bottom"===n?i-e:"center"===n?(t-s-(e-i))/2:0}getWrapWidth(t){return this.childNodes[t].getBBox().w}getChildAlign(t){return"left"}percent(t){return se(t)}em(t){return ie(t)}px(t,e=-te){return ne(t,e,this.metrics.em)}length2em(t,e=1,s=null){null===s&&(s=this.bbox.scale);const i=this.font.params.rule_thickness,n=Wt(t,{medium:1,thin:2/3,thick:5/3},0);return n?n*i:ee(t,e,s,this.jax.pxPerEm)}unicodeChars(t,e=this.variant){let s=ge(t);const i=this.font.getVariant(e);if(i&&i.chars){const t=i.chars;s=s.map((e=>{var s,i;return(null===(i=null===(s=t[e])||void 0===s?void 0:s[3])||void 0===i?void 0:i.smp)||e}))}return s}remapChars(t){return t}mmlText(t){return this.node.factory.create("text").setText(t)}mmlNode(t,e={},s=[]){return this.node.factory.create(t,e,s)}createMo(t){const e=this.node.factory,s=e.create("text").setText(t),i=e.create("mo",{stretchy:!0},[s]);i.inheritAttributesFrom(this.node),i.parent=this.node.parent;const n=this.wrap(i);return n.parent=this,n}getVariantChar(t,e){const s=this.font.getChar(t,e)||[0,0,0,{unknown:!0}];return 3===s.length&&(s[3]={}),s}html(t,e={},s=[]){return this.jax.html(t,e,s)}}we.kind="unknown",we.styles={},we.removeStyles=["fontSize","fontFamily","fontWeight","fontStyle","fontVariant","font"],we.skipAttributes={fontfamily:!0,fontsize:!0,fontweight:!0,fontstyle:!0,color:!0,background:!0,class:!0,href:!0,style:!0,xmlns:!0},we.BOLDVARIANTS={bold:{normal:"bold",italic:"bold-italic",fraktur:"bold-fraktur",script:"bold-script","sans-serif":"bold-sans-serif","sans-serif-italic":"sans-serif-bold-italic"},normal:{bold:"normal","bold-italic":"italic","bold-fraktur":"fraktur","bold-script":"script","bold-sans-serif":"sans-serif","sans-serif-bold-italic":"sans-serif-italic"}},we.ITALICVARIANTS={italic:{normal:"italic",bold:"bold-italic","sans-serif":"sans-serif-italic","bold-sans-serif":"sans-serif-bold-italic"},normal:{italic:"normal","bold-italic":"bold","sans-serif-italic":"sans-serif","sans-serif-bold-italic":"bold-sans-serif"}};const Ce={"70.7%":"s","70%":"s","50%":"ss","60%":"Tn","85%":"sm","120%":"lg","144%":"Lg","173%":"LG","207%":"hg","249%":"HG"};class Me extends we{toCHTML(t){this.toEmbellishedCHTML(t)||this.addChildren(this.standardChtmlNodes(t))}toEmbellishedCHTML(t){if(t.length<=1||!this.node.isEmbellished)return!1;const e=this.ad