@cortex-js/compute-engine 0.25.0 → 0.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/compute-engine.esm.js +3185 -5191
- package/dist/compute-engine.js +3185 -5191
- package/dist/compute-engine.min.esm.js +10 -10
- package/dist/compute-engine.min.js +10 -10
- package/dist/math-json.esm.js +39 -76
- package/dist/math-json.js +39 -76
- package/dist/math-json.min.esm.js +39 -76
- package/dist/math-json.min.js +2 -2
- package/dist/types/common/ansi-codes.d.ts +1 -1
- package/dist/types/common/grapheme-splitter.d.ts +1 -1
- package/dist/types/common/signals.d.ts +1 -1
- package/dist/types/common/utils.d.ts +1 -1
- package/dist/types/compute-engine/assume.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +2 -1
- package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-domain.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-function-definition.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-symbol-definition.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/coefficient-field.d.ts +56 -0
- package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/public.d.ts +54 -35
- package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
- package/dist/types/compute-engine/collection-utils.d.ts +1 -1
- package/dist/types/compute-engine/compile.d.ts +1 -1
- package/dist/types/compute-engine/compute-engine.d.ts +4 -3
- package/dist/types/compute-engine/cost-function.d.ts +1 -1
- package/dist/types/compute-engine/domain-utils.d.ts +1 -1
- package/dist/types/compute-engine/function-utils.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse-identifier.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/public.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
- package/dist/types/compute-engine/library/arithmetic-add.d.ts +1 -1
- package/dist/types/compute-engine/library/arithmetic-divide.d.ts +1 -2
- package/dist/types/compute-engine/library/arithmetic-multiply.d.ts +2 -2
- package/dist/types/compute-engine/library/arithmetic-power.d.ts +1 -1
- package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/library/calculus.d.ts +1 -1
- package/dist/types/compute-engine/library/collections.d.ts +1 -1
- package/dist/types/compute-engine/library/complex.d.ts +1 -1
- package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
- package/dist/types/compute-engine/library/core.d.ts +1 -1
- package/dist/types/compute-engine/library/domains.d.ts +1 -1
- package/dist/types/compute-engine/library/library.d.ts +1 -1
- package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/library/logic.d.ts +1 -1
- package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
- package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
- package/dist/types/compute-engine/library/sets.d.ts +1 -1
- package/dist/types/compute-engine/library/statistics.d.ts +1 -1
- package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/library/utils.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
- package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
- package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
- package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
- package/dist/types/compute-engine/numerics/terms.d.ts +1 -1
- package/dist/types/compute-engine/public.d.ts +1 -1
- package/dist/types/compute-engine/rules.d.ts +1 -1
- package/dist/types/compute-engine/simplify-rules.d.ts +1 -1
- package/dist/types/compute-engine/solve.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/expand.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/flatten.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/negate.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/product.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/tensor-fields.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/tensors.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/utils.d.ts +2 -2
- package/dist/types/compute-engine.d.ts +2 -2
- package/dist/types/math-json/math-json-format.d.ts +1 -1
- package/dist/types/math-json/utils.d.ts +1 -1
- package/dist/types/math-json.d.ts +2 -2
- package/package.json +10 -10
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/** Compute Engine 0.25.
|
|
2
|
-
var
|
|
3
|
-
`||(E==="+"?m++:E==="-"?g++:E==="i"||E==="I"?(m+g===0&&o(),c[h+1]!==" "&&!isNaN(c[h+1])?(d.im+=parseFloat((g%2?"-":"")+c[h+1]),h++):d.im+=parseFloat((g%2?"-":"")+"1"),m=g=0):((m+g===0||isNaN(E))&&o(),c[h+1]==="i"||c[h+1]==="I"?(d.im+=parseFloat((g%2?"-":"")+E),h++):d.re+=parseFloat((g%2?"-":"")+E),m=g=0))}m+g>0&&o();break;case"number":d.im=0,d.re=u;break;default:o()}return isNaN(d.re)||isNaN(d.im),d};function l(u,f){if(!(this instanceof l))return new l(u,f);var d=a(u,f);this.re=d.re,this.im=d.im}l.prototype={re:0,im:0,sign:function(){var u=this.abs();return new l(this.re/u,this.im/u)},add:function(u,f){var d=new l(u,f);return this.isInfinite()&&d.isInfinite()?l.NAN:this.isInfinite()||d.isInfinite()?l.INFINITY:new l(this.re+d.re,this.im+d.im)},sub:function(u,f){var d=new l(u,f);return this.isInfinite()&&d.isInfinite()?l.NAN:this.isInfinite()||d.isInfinite()?l.INFINITY:new l(this.re-d.re,this.im-d.im)},mul:function(u,f){var d=new l(u,f);return this.isInfinite()&&d.isZero()||this.isZero()&&d.isInfinite()?l.NAN:this.isInfinite()||d.isInfinite()?l.INFINITY:d.im===0&&this.im===0?new l(this.re*d.re,0):new l(this.re*d.re-this.im*d.im,this.re*d.im+this.im*d.re)},div:function(u,f){var d=new l(u,f);if(this.isZero()&&d.isZero()||this.isInfinite()&&d.isInfinite())return l.NAN;if(this.isInfinite()||d.isZero())return l.INFINITY;if(this.isZero()||d.isInfinite())return l.ZERO;u=this.re,f=this.im;var c=d.re,m=d.im,g,h;return m===0?new l(u/c,f/c):Math.abs(c)<Math.abs(m)?(h=c/m,g=c*h+m,new l((u*h+f)/g,(f*h-u)/g)):(h=m/c,g=m*h+c,new l((u+f*h)/g,(f-u*h)/g))},pow:function(u,f){var d=new l(u,f);if(u=this.re,f=this.im,d.isZero())return l.ONE;if(d.im===0){if(f===0&&u>0)return new l(Math.pow(u,d.re),0);if(u===0)switch((d.re%4+4)%4){case 0:return new l(Math.pow(f,d.re),0);case 1:return new l(0,Math.pow(f,d.re));case 2:return new l(-Math.pow(f,d.re),0);case 3:return new l(0,-Math.pow(f,d.re))}}if(u===0&&f===0&&d.re>0&&d.im>=0)return l.ZERO;var c=Math.atan2(f,u),m=s(u,f);return u=Math.exp(d.re*m-d.im*c),f=d.im*m+d.re*c,new l(u*Math.cos(f),u*Math.sin(f))},sqrt:function(){var u=this.re,f=this.im,d=this.abs(),c,m;if(u>=0){if(f===0)return new l(Math.sqrt(u),0);c=.5*Math.sqrt(2*(d+u))}else c=Math.abs(f)/Math.sqrt(2*(d-u));return u<=0?m=.5*Math.sqrt(2*(d-u)):m=Math.abs(f)/Math.sqrt(2*(d+u)),new l(c,f<0?-m:m)},exp:function(){var u=Math.exp(this.re);return this.im,new l(u*Math.cos(this.im),u*Math.sin(this.im))},expm1:function(){var u=this.re,f=this.im;return new l(Math.expm1(u)*Math.cos(f)+t(f),Math.exp(u)*Math.sin(f))},log:function(){var u=this.re,f=this.im;return f===0&&u>0,new l(s(u,f),Math.atan2(f,u))},abs:function(){return r(this.re,this.im)},arg:function(){return Math.atan2(this.im,this.re)},sin:function(){var u=this.re,f=this.im;return new l(Math.sin(u)*e(f),Math.cos(u)*i(f))},cos:function(){var u=this.re,f=this.im;return new l(Math.cos(u)*e(f),-Math.sin(u)*i(f))},tan:function(){var u=2*this.re,f=2*this.im,d=Math.cos(u)+e(f);return new l(Math.sin(u)/d,i(f)/d)},cot:function(){var u=2*this.re,f=2*this.im,d=Math.cos(u)-e(f);return new l(-Math.sin(u)/d,i(f)/d)},sec:function(){var u=this.re,f=this.im,d=.5*e(2*f)+.5*Math.cos(2*u);return new l(Math.cos(u)*e(f)/d,Math.sin(u)*i(f)/d)},csc:function(){var u=this.re,f=this.im,d=.5*e(2*f)-.5*Math.cos(2*u);return new l(Math.sin(u)*e(f)/d,-Math.cos(u)*i(f)/d)},asin:function(){var u=this.re,f=this.im,d=new l(f*f-u*u+1,-2*u*f).sqrt(),c=new l(d.re-f,d.im+u).log();return new l(c.im,-c.re)},acos:function(){var u=this.re,f=this.im,d=new l(f*f-u*u+1,-2*u*f).sqrt(),c=new l(d.re-f,d.im+u).log();return new l(Math.PI/2-c.im,c.re)},atan:function(){var u=this.re,f=this.im;if(u===0){if(f===1)return new l(0,1/0);if(f===-1)return new l(0,-1/0)}var d=u*u+(1-f)*(1-f),c=new l((1-f*f-u*u)/d,-2*u/d).log();return new l(-.5*c.im,.5*c.re)},acot:function(){var u=this.re,f=this.im;if(f===0)return new l(Math.atan2(1,u),0);var d=u*u+f*f;return d!==0?new l(u/d,-f/d).atan():new l(u!==0?u/0:0,f!==0?-f/0:0).atan()},asec:function(){var u=this.re,f=this.im;if(u===0&&f===0)return new l(0,1/0);var d=u*u+f*f;return d!==0?new l(u/d,-f/d).acos():new l(u!==0?u/0:0,f!==0?-f/0:0).acos()},acsc:function(){var u=this.re,f=this.im;if(u===0&&f===0)return new l(Math.PI/2,1/0);var d=u*u+f*f;return d!==0?new l(u/d,-f/d).asin():new l(u!==0?u/0:0,f!==0?-f/0:0).asin()},sinh:function(){var u=this.re,f=this.im;return new l(i(u)*Math.cos(f),e(u)*Math.sin(f))},cosh:function(){var u=this.re,f=this.im;return new l(e(u)*Math.cos(f),i(u)*Math.sin(f))},tanh:function(){var u=2*this.re,f=2*this.im,d=e(u)+Math.cos(f);return new l(i(u)/d,Math.sin(f)/d)},coth:function(){var u=2*this.re,f=2*this.im,d=e(u)-Math.cos(f);return new l(i(u)/d,-Math.sin(f)/d)},csch:function(){var u=this.re,f=this.im,d=Math.cos(2*f)-e(2*u);return new l(-2*i(u)*Math.cos(f)/d,2*e(u)*Math.sin(f)/d)},sech:function(){var u=this.re,f=this.im,d=Math.cos(2*f)+e(2*u);return new l(2*e(u)*Math.cos(f)/d,-2*i(u)*Math.sin(f)/d)},asinh:function(){var u=this.im;this.im=-this.re,this.re=u;var f=this.asin();return this.re=-this.im,this.im=u,u=f.re,f.re=-f.im,f.im=u,f},acosh:function(){var u=this.acos();if(u.im<=0){var f=u.re;u.re=-u.im,u.im=f}else{var f=u.im;u.im=-u.re,u.re=f}return u},atanh:function(){var u=this.re,f=this.im,d=u>1&&f===0,c=1-u,m=1+u,g=c*c+f*f,h=g!==0?new l((m*c-f*f)/g,(f*c+m*f)/g):new l(u!==-1?u/0:0,f!==0?f/0:0),E=h.re;return h.re=s(h.re,h.im)/2,h.im=Math.atan2(h.im,E)/2,d&&(h.im=-h.im),h},acoth:function(){var u=this.re,f=this.im;if(u===0&&f===0)return new l(0,Math.PI/2);var d=u*u+f*f;return d!==0?new l(u/d,-f/d).atanh():new l(u!==0?u/0:0,f!==0?-f/0:0).atanh()},acsch:function(){var u=this.re,f=this.im;if(f===0)return new l(u!==0?Math.log(u+Math.sqrt(u*u+1)):1/0,0);var d=u*u+f*f;return d!==0?new l(u/d,-f/d).asinh():new l(u!==0?u/0:0,f!==0?-f/0:0).asinh()},asech:function(){var u=this.re,f=this.im;if(this.isZero())return l.INFINITY;var d=u*u+f*f;return d!==0?new l(u/d,-f/d).acosh():new l(u!==0?u/0:0,f!==0?-f/0:0).acosh()},inverse:function(){if(this.isZero())return l.INFINITY;if(this.isInfinite())return l.ZERO;var u=this.re,f=this.im,d=u*u+f*f;return new l(u/d,-f/d)},conjugate:function(){return new l(this.re,-this.im)},neg:function(){return new l(-this.re,-this.im)},ceil:function(u){return u=Math.pow(10,u||0),new l(Math.ceil(this.re*u)/u,Math.ceil(this.im*u)/u)},floor:function(u){return u=Math.pow(10,u||0),new l(Math.floor(this.re*u)/u,Math.floor(this.im*u)/u)},round:function(u){return u=Math.pow(10,u||0),new l(Math.round(this.re*u)/u,Math.round(this.im*u)/u)},equals:function(u,f){var d=new l(u,f);return Math.abs(d.re-this.re)<=l.EPSILON&&Math.abs(d.im-this.im)<=l.EPSILON},clone:function(){return new l(this.re,this.im)},toString:function(){var u=this.re,f=this.im,d="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(u)<l.EPSILON&&(u=0),Math.abs(f)<l.EPSILON&&(f=0),f===0?d+u:(u!==0?(d+=u,d+=" ",f<0?(f=-f,d+="-"):d+="+",d+=" "):f<0&&(f=-f,d+="-"),f!==1&&(d+=f),d+"i"))},toVector:function(){return[this.re,this.im]},valueOf:function(){return this.im===0?this.re:null},isNaN:function(){return isNaN(this.re)||isNaN(this.im)},isZero:function(){return this.im===0&&this.re===0},isFinite:function(){return isFinite(this.re)&&isFinite(this.im)},isInfinite:function(){return!(this.isNaN()||this.isFinite())}},l.ZERO=new l(0,0),l.ONE=new l(1,0),l.I=new l(0,1),l.PI=new l(Math.PI,0),l.E=new l(Math.E,0),l.INFINITY=new l(1/0,1/0),l.NAN=new l(NaN,NaN),l.EPSILON=1e-15,typeof define=="function"&&define.amd?define([],function(){return l}):typeof Zr=="object"?(Object.defineProperty(l,"__esModule",{value:!0}),l.default=l,l.Complex=l,Bs.exports=l):n.Complex=l})(Zr)});var es=he(me(),1);var _i=9e15,Hn=1e9,Hr="0123456789abcdef",Lt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",qt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Jr={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-_i,maxE:_i,crypto:!1},As,Tn,A=!0,$t="[DecimalError] ",Zn=$t+"Invalid argument: ",ws=$t+"Precision limit exceeded",Cs=$t+"crypto unavailable",Ms="[object Decimal]",Ae=Math.floor,be=Math.pow,Dl=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,kl=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Al=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Os=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,tn=1e7,D=7,wl=9007199254740991,Cl=Lt.length-1,Wr=qt.length-1,y={toStringTag:Ms};y.absoluteValue=y.abs=function(){var n=new this.constructor(this);return n.s<0&&(n.s=1),I(n)};y.ceil=function(){return I(new this.constructor(this),this.e+1,2)};y.clampedTo=y.clamp=function(n,e){var i,t=this,r=t.constructor;if(n=new r(n),e=new r(e),!n.s||!e.s)return new r(NaN);if(n.gt(e))throw Error(Zn+e);return i=t.cmp(n),i<0?n:t.cmp(e)>0?e:new r(t)};y.comparedTo=y.cmp=function(n){var e,i,t,r,o=this,s=o.d,a=(n=new o.constructor(n)).d,l=o.s,u=n.s;if(!s||!a)return!l||!u?NaN:l!==u?l:s===a?0:!s^l<0?1:-1;if(!s[0]||!a[0])return s[0]?l:a[0]?-u:0;if(l!==u)return l;if(o.e!==n.e)return o.e>n.e^l<0?1:-1;for(t=s.length,r=a.length,e=0,i=t<r?t:r;e<i;++e)if(s[e]!==a[e])return s[e]>a[e]^l<0?1:-1;return t===r?0:t>r^l<0?1:-1};y.cosine=y.cos=function(){var n,e,i=this,t=i.constructor;return i.d?i.d[0]?(n=t.precision,e=t.rounding,t.precision=n+Math.max(i.e,i.sd())+D,t.rounding=1,i=Ml(t,qs(t,i)),t.precision=n,t.rounding=e,I(Tn==2||Tn==3?i.neg():i,n,e,!0)):new t(1):new t(NaN)};y.cubeRoot=y.cbrt=function(){var n,e,i,t,r,o,s,a,l,u,f=this,d=f.constructor;if(!f.isFinite()||f.isZero())return new d(f);for(A=!1,o=f.s*be(f.s*f,1/3),!o||Math.abs(o)==1/0?(i=Ie(f.d),n=f.e,(o=(n-i.length+1)%3)&&(i+=o==1||o==-2?"0":"00"),o=be(i,1/3),n=Ae((n+1)/3)-(n%3==(n<0?-1:2)),o==1/0?i="5e"+n:(i=o.toExponential(),i=i.slice(0,i.indexOf("e")+1)+n),t=new d(i),t.s=f.s):t=new d(o.toString()),s=(n=d.precision)+3;;)if(a=t,l=a.times(a).times(a),u=l.plus(f),t=X(u.plus(f).times(a),u.plus(l),s+2,1),Ie(a.d).slice(0,s)===(i=Ie(t.d)).slice(0,s))if(i=i.slice(s-3,s+1),i=="9999"||!r&&i=="4999"){if(!r&&(I(a,n+1,0),a.times(a).times(a).eq(f))){t=a;break}s+=4,r=1}else{(!+i||!+i.slice(1)&&i.charAt(0)=="5")&&(I(t,n+1,1),e=!t.times(t).times(t).eq(f));break}return A=!0,I(t,n,d.rounding,e)};y.decimalPlaces=y.dp=function(){var n,e=this.d,i=NaN;if(e){if(n=e.length-1,i=(n-Ae(this.e/D))*D,n=e[n],n)for(;n%10==0;n/=10)i--;i<0&&(i=0)}return i};y.dividedBy=y.div=function(n){return X(this,new this.constructor(n))};y.dividedToIntegerBy=y.divToInt=function(n){var e=this,i=e.constructor;return I(X(e,new i(n),0,1,1),i.precision,i.rounding)};y.equals=y.eq=function(n){return this.cmp(n)===0};y.floor=function(){return I(new this.constructor(this),this.e+1,3)};y.greaterThan=y.gt=function(n){return this.cmp(n)>0};y.greaterThanOrEqualTo=y.gte=function(n){var e=this.cmp(n);return e==1||e===0};y.hyperbolicCosine=y.cosh=function(){var n,e,i,t,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;i=s.precision,t=s.rounding,s.precision=i+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(n=Math.ceil(r/3),e=(1/Gt(4,n)).toString()):(n=16,e="2.3283064365386962890625e-10"),o=Si(s,1,o.times(e),new s(1),!0);for(var l,u=n,f=new s(8);u--;)l=o.times(o),o=a.minus(l.times(f.minus(l.times(f))));return I(o,s.precision=i,s.rounding=t,!0)};y.hyperbolicSine=y.sinh=function(){var n,e,i,t,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,i=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,t=r.d.length,t<3)r=Si(o,2,r,r,!0);else{n=1.4*Math.sqrt(t),n=n>16?16:n|0,r=r.times(1/Gt(5,n)),r=Si(o,2,r,r,!0);for(var s,a=new o(5),l=new o(16),u=new o(20);n--;)s=r.times(r),r=r.times(a.plus(s.times(l.times(s).plus(u))))}return o.precision=e,o.rounding=i,I(r,e,i,!0)};y.hyperbolicTangent=y.tanh=function(){var n,e,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(n=t.precision,e=t.rounding,t.precision=n+7,t.rounding=1,X(i.sinh(),i.cosh(),t.precision=n,t.rounding=e)):new t(i.s)};y.inverseCosine=y.acos=function(){var n,e=this,i=e.constructor,t=e.abs().cmp(1),r=i.precision,o=i.rounding;return t!==-1?t===0?e.isNeg()?nn(i,r,o):new i(0):new i(NaN):e.isZero()?nn(i,r+4,o).times(.5):(i.precision=r+6,i.rounding=1,e=e.asin(),n=nn(i,r+4,o).times(.5),i.precision=r,i.rounding=o,n.minus(e))};y.inverseHyperbolicCosine=y.acosh=function(){var n,e,i=this,t=i.constructor;return i.lte(1)?new t(i.eq(1)?0:NaN):i.isFinite()?(n=t.precision,e=t.rounding,t.precision=n+Math.max(Math.abs(i.e),i.sd())+4,t.rounding=1,A=!1,i=i.times(i).minus(1).sqrt().plus(i),A=!0,t.precision=n,t.rounding=e,i.ln()):new t(i)};y.inverseHyperbolicSine=y.asinh=function(){var n,e,i=this,t=i.constructor;return!i.isFinite()||i.isZero()?new t(i):(n=t.precision,e=t.rounding,t.precision=n+2*Math.max(Math.abs(i.e),i.sd())+6,t.rounding=1,A=!1,i=i.times(i).plus(1).sqrt().plus(i),A=!0,t.precision=n,t.rounding=e,i.ln())};y.inverseHyperbolicTangent=y.atanh=function(){var n,e,i,t,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(n=o.precision,e=o.rounding,t=r.sd(),Math.max(t,n)<2*-r.e-1?I(new o(r),n,e,!0):(o.precision=i=t-r.e,r=X(r.plus(1),new o(1).minus(r),i+n,1),o.precision=n+4,o.rounding=1,r=r.ln(),o.precision=n,o.rounding=e,r.times(.5))):new o(NaN)};y.inverseSine=y.asin=function(){var n,e,i,t,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),i=o.precision,t=o.rounding,e!==-1?e===0?(n=nn(o,i+4,t).times(.5),n.s=r.s,n):new o(NaN):(o.precision=i+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=i,o.rounding=t,r.times(2)))};y.inverseTangent=y.atan=function(){var n,e,i,t,r,o,s,a,l,u=this,f=u.constructor,d=f.precision,c=f.rounding;if(u.isFinite()){if(u.isZero())return new f(u);if(u.abs().eq(1)&&d+4<=Wr)return s=nn(f,d+4,c).times(.25),s.s=u.s,s}else{if(!u.s)return new f(NaN);if(d+4<=Wr)return s=nn(f,d+4,c).times(.5),s.s=u.s,s}for(f.precision=a=d+10,f.rounding=1,i=Math.min(28,a/D+2|0),n=i;n;--n)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(A=!1,e=Math.ceil(a/D),t=1,l=u.times(u),s=new f(u),r=u;n!==-1;)if(r=r.times(l),o=s.minus(r.div(t+=2)),r=r.times(l),s=o.plus(r.div(t+=2)),s.d[e]!==void 0)for(n=e;s.d[n]===o.d[n]&&n--;);return i&&(s=s.times(2<<i-1)),A=!0,I(s,f.precision=d,f.rounding=c,!0)};y.isFinite=function(){return!!this.d};y.isInteger=y.isInt=function(){return!!this.d&&Ae(this.e/D)>this.d.length-2};y.isNaN=function(){return!this.s};y.isNegative=y.isNeg=function(){return this.s<0};y.isPositive=y.isPos=function(){return this.s>0};y.isZero=function(){return!!this.d&&this.d[0]===0};y.lessThan=y.lt=function(n){return this.cmp(n)<0};y.lessThanOrEqualTo=y.lte=function(n){return this.cmp(n)<1};y.logarithm=y.log=function(n){var e,i,t,r,o,s,a,l,u=this,f=u.constructor,d=f.precision,c=f.rounding,m=5;if(n==null)n=new f(10),e=!0;else{if(n=new f(n),i=n.d,n.s<0||!i||!i[0]||n.eq(1))return new f(NaN);e=n.eq(10)}if(i=u.d,u.s<0||!i||!i[0]||u.eq(1))return new f(i&&!i[0]?-1/0:u.s!=1?NaN:i?0:1/0);if(e)if(i.length>1)o=!0;else{for(r=i[0];r%10===0;)r/=10;o=r!==1}if(A=!1,a=d+m,s=jn(u,a),t=e?Vt(f,a+10):jn(n,a),l=X(s,t,a,1),Xi(l.d,r=d,c))do if(a+=10,s=jn(u,a),t=e?Vt(f,a+10):jn(n,a),l=X(s,t,a,1),!o){+Ie(l.d).slice(r+1,r+15)+1==1e14&&(l=I(l,d+1,0));break}while(Xi(l.d,r+=10,c));return A=!0,I(l,d,c)};y.minus=y.sub=function(n){var e,i,t,r,o,s,a,l,u,f,d,c,m=this,g=m.constructor;if(n=new g(n),!m.d||!n.d)return!m.s||!n.s?n=new g(NaN):m.d?n.s=-n.s:n=new g(n.d||m.s!==n.s?m:NaN),n;if(m.s!=n.s)return n.s=-n.s,m.plus(n);if(u=m.d,c=n.d,a=g.precision,l=g.rounding,!u[0]||!c[0]){if(c[0])n.s=-n.s;else if(u[0])n=new g(m);else return new g(l===3?-0:0);return A?I(n,a,l):n}if(i=Ae(n.e/D),f=Ae(m.e/D),u=u.slice(),o=f-i,o){for(d=o<0,d?(e=u,o=-o,s=c.length):(e=c,i=f,s=u.length),t=Math.max(Math.ceil(a/D),s)+2,o>t&&(o=t,e.length=1),e.reverse(),t=o;t--;)e.push(0);e.reverse()}else{for(t=u.length,s=c.length,d=t<s,d&&(s=t),t=0;t<s;t++)if(u[t]!=c[t]){d=u[t]<c[t];break}o=0}for(d&&(e=u,u=c,c=e,n.s=-n.s),s=u.length,t=c.length-s;t>0;--t)u[s++]=0;for(t=c.length;t>o;){if(u[--t]<c[t]){for(r=t;r&&u[--r]===0;)u[r]=tn-1;--u[r],u[t]+=tn}u[t]-=c[t]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--i;return u[0]?(n.d=u,n.e=Ut(u,i),A?I(n,a,l):n):new g(l===3?-0:0)};y.modulo=y.mod=function(n){var e,i=this,t=i.constructor;return n=new t(n),!i.d||!n.s||n.d&&!n.d[0]?new t(NaN):!n.d||i.d&&!i.d[0]?I(new t(i),t.precision,t.rounding):(A=!1,t.modulo==9?(e=X(i,n.abs(),0,3,1),e.s*=n.s):e=X(i,n,0,t.modulo,1),e=e.times(n),A=!0,i.minus(e))};y.naturalExponential=y.exp=function(){return Yr(this)};y.naturalLogarithm=y.ln=function(){return jn(this)};y.negated=y.neg=function(){var n=new this.constructor(this);return n.s=-n.s,I(n)};y.plus=y.add=function(n){var e,i,t,r,o,s,a,l,u,f,d=this,c=d.constructor;if(n=new c(n),!d.d||!n.d)return!d.s||!n.s?n=new c(NaN):d.d||(n=new c(n.d||d.s===n.s?d:NaN)),n;if(d.s!=n.s)return n.s=-n.s,d.minus(n);if(u=d.d,f=n.d,a=c.precision,l=c.rounding,!u[0]||!f[0])return f[0]||(n=new c(d)),A?I(n,a,l):n;if(o=Ae(d.e/D),t=Ae(n.e/D),u=u.slice(),r=o-t,r){for(r<0?(i=u,r=-r,s=f.length):(i=f,t=o,s=u.length),o=Math.ceil(a/D),s=o>s?o+1:s+1,r>s&&(r=s,i.length=1),i.reverse();r--;)i.push(0);i.reverse()}for(s=u.length,r=f.length,s-r<0&&(r=s,i=f,f=u,u=i),e=0;r;)e=(u[--r]=u[r]+f[r]+e)/tn|0,u[r]%=tn;for(e&&(u.unshift(e),++t),s=u.length;u[--s]==0;)u.pop();return n.d=u,n.e=Ut(u,t),A?I(n,a,l):n};y.precision=y.sd=function(n){var e,i=this;if(n!==void 0&&n!==!!n&&n!==1&&n!==0)throw Error(Zn+n);return i.d?(e=Rs(i.d),n&&i.e+1>e&&(e=i.e+1)):e=NaN,e};y.round=function(){var n=this,e=n.constructor;return I(new e(n),n.e+1,e.rounding)};y.sine=y.sin=function(){var n,e,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(n=t.precision,e=t.rounding,t.precision=n+Math.max(i.e,i.sd())+D,t.rounding=1,i=Rl(t,qs(t,i)),t.precision=n,t.rounding=e,I(Tn>2?i.neg():i,n,e,!0)):new t(NaN)};y.squareRoot=y.sqrt=function(){var n,e,i,t,r,o,s=this,a=s.d,l=s.e,u=s.s,f=s.constructor;if(u!==1||!a||!a[0])return new f(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(A=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=Ie(a),(e.length+l)%2==0&&(e+="0"),u=Math.sqrt(e),l=Ae((l+1)/2)-(l<0||l%2),u==1/0?e="5e"+l:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+l),t=new f(e)):t=new f(u.toString()),i=(l=f.precision)+3;;)if(o=t,t=o.plus(X(s,o,i+2,1)).times(.5),Ie(o.d).slice(0,i)===(e=Ie(t.d)).slice(0,i))if(e=e.slice(i-3,i+1),e=="9999"||!r&&e=="4999"){if(!r&&(I(o,l+1,0),o.times(o).eq(s))){t=o;break}i+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(I(t,l+1,1),n=!t.times(t).eq(s));break}return A=!0,I(t,l,f.rounding,n)};y.tangent=y.tan=function(){var n,e,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(n=t.precision,e=t.rounding,t.precision=n+10,t.rounding=1,i=i.sin(),i.s=1,i=X(i,new t(1).minus(i.times(i)).sqrt(),n+10,0),t.precision=n,t.rounding=e,I(Tn==2||Tn==4?i.neg():i,n,e,!0)):new t(NaN)};y.times=y.mul=function(n){var e,i,t,r,o,s,a,l,u,f=this,d=f.constructor,c=f.d,m=(n=new d(n)).d;if(n.s*=f.s,!c||!c[0]||!m||!m[0])return new d(!n.s||c&&!c[0]&&!m||m&&!m[0]&&!c?NaN:!c||!m?n.s/0:n.s*0);for(i=Ae(f.e/D)+Ae(n.e/D),l=c.length,u=m.length,l<u&&(o=c,c=m,m=o,s=l,l=u,u=s),o=[],s=l+u,t=s;t--;)o.push(0);for(t=u;--t>=0;){for(e=0,r=l+t;r>t;)a=o[r]+m[t]*c[r-t-1]+e,o[r--]=a%tn|0,e=a/tn|0;o[r]=(o[r]+e)%tn|0}for(;!o[--s];)o.pop();return e?++i:o.shift(),n.d=o,n.e=Ut(o,i),A?I(n,d.precision,d.rounding):n};y.toBinary=function(n,e){return Xr(this,2,n,e)};y.toDecimalPlaces=y.toDP=function(n,e){var i=this,t=i.constructor;return i=new t(i),n===void 0?i:(Re(n,0,Hn),e===void 0?e=t.rounding:Re(e,0,8),I(i,n+i.e+1,e))};y.toExponential=function(n,e){var i,t=this,r=t.constructor;return n===void 0?i=mn(t,!0):(Re(n,0,Hn),e===void 0?e=r.rounding:Re(e,0,8),t=I(new r(t),n+1,e),i=mn(t,!0,n+1)),t.isNeg()&&!t.isZero()?"-"+i:i};y.toFixed=function(n,e){var i,t,r=this,o=r.constructor;return n===void 0?i=mn(r):(Re(n,0,Hn),e===void 0?e=o.rounding:Re(e,0,8),t=I(new o(r),n+r.e+1,e),i=mn(t,!1,n+t.e+1)),r.isNeg()&&!r.isZero()?"-"+i:i};y.toFraction=function(n){var e,i,t,r,o,s,a,l,u,f,d,c,m=this,g=m.d,h=m.constructor;if(!g)return new h(m);if(u=i=new h(1),t=l=new h(0),e=new h(t),o=e.e=Rs(g)-m.e-1,s=o%D,e.d[0]=be(10,s<0?D+s:s),n==null)n=o>0?e:u;else{if(a=new h(n),!a.isInt()||a.lt(u))throw Error(Zn+a);n=a.gt(e)?o>0?e:u:a}for(A=!1,a=new h(Ie(g)),f=h.precision,h.precision=o=g.length*D*2;d=X(a,e,0,1,1),r=i.plus(d.times(t)),r.cmp(n)!=1;)i=t,t=r,r=u,u=l.plus(d.times(r)),l=r,r=e,e=a.minus(d.times(r)),a=r;return r=X(n.minus(i),t,0,1,1),l=l.plus(r.times(u)),i=i.plus(r.times(t)),l.s=u.s=m.s,c=X(u,t,o,1).minus(m).abs().cmp(X(l,i,o,1).minus(m).abs())<1?[u,t]:[l,i],h.precision=f,A=!0,c};y.toHexadecimal=y.toHex=function(n,e){return Xr(this,16,n,e)};y.toNearest=function(n,e){var i=this,t=i.constructor;if(i=new t(i),n==null){if(!i.d)return i;n=new t(1),e=t.rounding}else{if(n=new t(n),e===void 0?e=t.rounding:Re(e,0,8),!i.d)return n.s?i:n;if(!n.d)return n.s&&(n.s=i.s),n}return n.d[0]?(A=!1,i=X(i,n,0,e,1).times(n),A=!0,I(i)):(n.s=i.s,i=n),i};y.toNumber=function(){return+this};y.toOctal=function(n,e){return Xr(this,8,n,e)};y.toPower=y.pow=function(n){var e,i,t,r,o,s,a=this,l=a.constructor,u=+(n=new l(n));if(!a.d||!n.d||!a.d[0]||!n.d[0])return new l(be(+a,u));if(a=new l(a),a.eq(1))return a;if(t=l.precision,o=l.rounding,n.eq(1))return I(a,t,o);if(e=Ae(n.e/D),e>=n.d.length-1&&(i=u<0?-u:u)<=wl)return r=Ps(l,a,i,t),n.s<0?new l(1).div(r):I(r,t,o);if(s=a.s,s<0){if(e<n.d.length-1)return new l(NaN);if(n.d[e]&1||(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return i=be(+a,u),e=i==0||!isFinite(i)?Ae(u*(Math.log("0."+Ie(a.d))/Math.LN10+a.e+1)):new l(i+"").e,e>l.maxE+1||e<l.minE-1?new l(e>0?s/0:0):(A=!1,l.rounding=a.s=1,i=Math.min(12,(e+"").length),r=Yr(n.times(jn(a,t+i)),t),r.d&&(r=I(r,t+5,1),Xi(r.d,t,o)&&(e=t+10,r=I(Yr(n.times(jn(a,e+i)),e),e+5,1),+Ie(r.d).slice(t+1,t+15)+1==1e14&&(r=I(r,t+1,0)))),r.s=s,A=!0,l.rounding=o,I(r,t,o))};y.toPrecision=function(n,e){var i,t=this,r=t.constructor;return n===void 0?i=mn(t,t.e<=r.toExpNeg||t.e>=r.toExpPos):(Re(n,1,Hn),e===void 0?e=r.rounding:Re(e,0,8),t=I(new r(t),n,e),i=mn(t,n<=t.e||t.e<=r.toExpNeg,n)),t.isNeg()&&!t.isZero()?"-"+i:i};y.toSignificantDigits=y.toSD=function(n,e){var i=this,t=i.constructor;return n===void 0?(n=t.precision,e=t.rounding):(Re(n,1,Hn),e===void 0?e=t.rounding:Re(e,0,8)),I(new t(i),n,e)};y.toString=function(){var n=this,e=n.constructor,i=mn(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()&&!n.isZero()?"-"+i:i};y.truncated=y.trunc=function(){return I(new this.constructor(this),this.e+1,1)};y.valueOf=y.toJSON=function(){var n=this,e=n.constructor,i=mn(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()?"-"+i:i};function Ie(n){var e,i,t,r=n.length-1,o="",s=n[0];if(r>0){for(o+=s,e=1;e<r;e++)t=n[e]+"",i=D-t.length,i&&(o+=zn(i)),o+=t;s=n[e],t=s+"",i=D-t.length,i&&(o+=zn(i))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Re(n,e,i){if(n!==~~n||n<e||n>i)throw Error(Zn+n)}function Xi(n,e,i,t){var r,o,s,a;for(o=n[0];o>=10;o/=10)--e;return--e<0?(e+=D,r=0):(r=Math.ceil((e+1)/D),e%=D),o=be(10,D-e),a=n[r]%o|0,t==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=i<4&&a==99999||i>3&&a==49999||a==5e4||a==0):s=(i<4&&a+1==o||i>3&&a+1==o/2)&&(n[r+1]/o/100|0)==be(10,e-2)-1||(a==o/2||a==0)&&(n[r+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(t||i<4)&&a==9999||!t&&i>3&&a==4999):s=((t||i<4)&&a+1==o||!t&&i>3&&a+1==o/2)&&(n[r+1]/o/1e3|0)==be(10,e-3)-1,s}function Ft(n,e,i){for(var t,r=[0],o,s=0,a=n.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=Hr.indexOf(n.charAt(s++)),t=0;t<r.length;t++)r[t]>i-1&&(r[t+1]===void 0&&(r[t+1]=0),r[t+1]+=r[t]/i|0,r[t]%=i)}return r.reverse()}function Ml(n,e){var i,t,r;if(e.isZero())return e;t=e.d.length,t<32?(i=Math.ceil(t/3),r=(1/Gt(4,i)).toString()):(i=16,r="2.3283064365386962890625e-10"),n.precision+=i,e=Si(n,1,e.times(r),new n(1));for(var o=i;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return n.precision-=i,e}var X=function(){function n(t,r,o){var s,a=0,l=t.length;for(t=t.slice();l--;)s=t[l]*r+a,t[l]=s%o|0,a=s/o|0;return a&&t.unshift(a),t}function e(t,r,o,s){var a,l;if(o!=s)l=o>s?1:-1;else for(a=l=0;a<o;a++)if(t[a]!=r[a]){l=t[a]>r[a]?1:-1;break}return l}function i(t,r,o,s){for(var a=0;o--;)t[o]-=a,a=t[o]<r[o]?1:0,t[o]=a*s+t[o]-r[o];for(;!t[0]&&t.length>1;)t.shift()}return function(t,r,o,s,a,l){var u,f,d,c,m,g,h,E,S,B,_,w,Z,ce,Me,Oe,Qi,zr,en,Rt,Pt=t.constructor,jr=t.s==r.s?1:-1,ke=t.d,ne=r.d;if(!ke||!ke[0]||!ne||!ne[0])return new Pt(!t.s||!r.s||(ke?ne&&ke[0]==ne[0]:!ne)?NaN:ke&&ke[0]==0||!ne?jr*0:jr/0);for(l?(m=1,f=t.e-r.e):(l=tn,m=D,f=Ae(t.e/m)-Ae(r.e/m)),en=ne.length,Qi=ke.length,S=new Pt(jr),B=S.d=[],d=0;ne[d]==(ke[d]||0);d++);if(ne[d]>(ke[d]||0)&&f--,o==null?(ce=o=Pt.precision,s=Pt.rounding):a?ce=o+(t.e-r.e)+1:ce=o,ce<0)B.push(1),g=!0;else{if(ce=ce/m+2|0,d=0,en==1){for(c=0,ne=ne[0],ce++;(d<Qi||c)&&ce--;d++)Me=c*l+(ke[d]||0),B[d]=Me/ne|0,c=Me%ne|0;g=c||d<Qi}else{for(c=l/(ne[0]+1)|0,c>1&&(ne=n(ne,c,l),ke=n(ke,c,l),en=ne.length,Qi=ke.length),Oe=en,_=ke.slice(0,en),w=_.length;w<en;)_[w++]=0;Rt=ne.slice(),Rt.unshift(0),zr=ne[0],ne[1]>=l/2&&++zr;do c=0,u=e(ne,_,en,w),u<0?(Z=_[0],en!=w&&(Z=Z*l+(_[1]||0)),c=Z/zr|0,c>1?(c>=l&&(c=l-1),h=n(ne,c,l),E=h.length,w=_.length,u=e(h,_,E,w),u==1&&(c--,i(h,en<E?Rt:ne,E,l))):(c==0&&(u=c=1),h=ne.slice()),E=h.length,E<w&&h.unshift(0),i(_,h,w,l),u==-1&&(w=_.length,u=e(ne,_,en,w),u<1&&(c++,i(_,en<w?Rt:ne,w,l))),w=_.length):u===0&&(c++,_=[0]),B[d++]=c,u&&_[0]?_[w++]=ke[Oe]||0:(_=[ke[Oe]],w=1);while((Oe++<Qi||_[0]!==void 0)&&ce--);g=_[0]!==void 0}B[0]||B.shift()}if(m==1)S.e=f,As=g;else{for(d=1,c=B[0];c>=10;c/=10)d++;S.e=d+f*m-1,I(S,a?o+S.e+1:o,s,g)}return S}}();function I(n,e,i,t){var r,o,s,a,l,u,f,d,c,m=n.constructor;e:if(e!=null){if(d=n.d,!d)return n;for(r=1,a=d[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=D,s=e,f=d[c=0],l=f/be(10,r-s-1)%10|0;else if(c=Math.ceil((o+1)/D),a=d.length,c>=a)if(t){for(;a++<=c;)d.push(0);f=l=0,r=1,o%=D,s=o-D+1}else break e;else{for(f=a=d[c],r=1;a>=10;a/=10)r++;o%=D,s=o-D+r,l=s<0?0:f/be(10,r-s-1)%10|0}if(t=t||e<0||d[c+1]!==void 0||(s<0?f:f%be(10,r-s-1)),u=i<4?(l||t)&&(i==0||i==(n.s<0?3:2)):l>5||l==5&&(i==4||t||i==6&&(o>0?s>0?f/be(10,r-s):0:d[c-1])%10&1||i==(n.s<0?8:7)),e<1||!d[0])return d.length=0,u?(e-=n.e+1,d[0]=be(10,(D-e%D)%D),n.e=-e||0):d[0]=n.e=0,n;if(o==0?(d.length=c,a=1,c--):(d.length=c+1,a=be(10,D-o),d[c]=s>0?(f/be(10,r-s)%be(10,s)|0)*a:0),u)for(;;)if(c==0){for(o=1,s=d[0];s>=10;s/=10)o++;for(s=d[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(n.e++,d[0]==tn&&(d[0]=1));break}else{if(d[c]+=a,d[c]!=tn)break;d[c--]=0,a=1}for(o=d.length;d[--o]===0;)d.pop()}return A&&(n.e>m.maxE?(n.d=null,n.e=NaN):n.e<m.minE&&(n.e=0,n.d=[0])),n}function mn(n,e,i){if(!n.isFinite())return Ls(n);var t,r=n.e,o=Ie(n.d),s=o.length;return e?(i&&(t=i-s)>0?o=o.charAt(0)+"."+o.slice(1)+zn(t):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(n.e<0?"e":"e+")+n.e):r<0?(o="0."+zn(-r-1)+o,i&&(t=i-s)>0&&(o+=zn(t))):r>=s?(o+=zn(r+1-s),i&&(t=i-r-1)>0&&(o=o+"."+zn(t))):((t=r+1)<s&&(o=o.slice(0,t)+"."+o.slice(t)),i&&(t=i-s)>0&&(r+1===s&&(o+="."),o+=zn(t))),o}function Ut(n,e){var i=n[0];for(e*=D;i>=10;i/=10)e++;return e}function Vt(n,e,i){if(e>Cl)throw A=!0,i&&(n.precision=i),Error(ws);return I(new n(Lt),e,1,!0)}function nn(n,e,i){if(e>Wr)throw Error(ws);return I(new n(qt),e,i,!0)}function Rs(n){var e=n.length-1,i=e*D+1;if(e=n[e],e){for(;e%10==0;e/=10)i--;for(e=n[0];e>=10;e/=10)i++}return i}function zn(n){for(var e="";n--;)e+="0";return e}function Ps(n,e,i,t){var r,o=new n(1),s=Math.ceil(t/D+4);for(A=!1;;){if(i%2&&(o=o.times(e),Ds(o.d,s)&&(r=!0)),i=Ae(i/2),i===0){i=o.d.length-1,r&&o.d[i]===0&&++o.d[i];break}e=e.times(e),Ds(e.d,s)}return A=!0,o}function Is(n){return n.d[n.d.length-1]&1}function Fs(n,e,i){for(var t,r=new n(e[0]),o=0;++o<e.length;)if(t=new n(e[o]),t.s)r[i](t)&&(r=t);else{r=t;break}return r}function Yr(n,e){var i,t,r,o,s,a,l,u=0,f=0,d=0,c=n.constructor,m=c.rounding,g=c.precision;if(!n.d||!n.d[0]||n.e>17)return new c(n.d?n.d[0]?n.s<0?0:1/0:1:n.s?n.s<0?0:n:NaN);for(e==null?(A=!1,l=g):l=e,a=new c(.03125);n.e>-2;)n=n.times(a),d+=5;for(t=Math.log(be(2,d))/Math.LN10*2+5|0,l+=t,i=o=s=new c(1),c.precision=l;;){if(o=I(o.times(n),l,1),i=i.times(++f),a=s.plus(X(o,i,l,1)),Ie(a.d).slice(0,l)===Ie(s.d).slice(0,l)){for(r=d;r--;)s=I(s.times(s),l,1);if(e==null)if(u<3&&Xi(s.d,l-t,m,u))c.precision=l+=10,i=o=a=new c(1),f=0,u++;else return I(s,c.precision=g,m,A=!0);else return c.precision=g,s}s=a}}function jn(n,e){var i,t,r,o,s,a,l,u,f,d,c,m=1,g=10,h=n,E=h.d,S=h.constructor,B=S.rounding,_=S.precision;if(h.s<0||!E||!E[0]||!h.e&&E[0]==1&&E.length==1)return new S(E&&!E[0]?-1/0:h.s!=1?NaN:E?0:h);if(e==null?(A=!1,f=_):f=e,S.precision=f+=g,i=Ie(E),t=i.charAt(0),Math.abs(o=h.e)<15e14){for(;t<7&&t!=1||t==1&&i.charAt(1)>3;)h=h.times(n),i=Ie(h.d),t=i.charAt(0),m++;o=h.e,t>1?(h=new S("0."+i),o++):h=new S(t+"."+i.slice(1))}else return u=Vt(S,f+2,_).times(o+""),h=jn(new S(t+"."+i.slice(1)),f-g).plus(u),S.precision=_,e==null?I(h,_,B,A=!0):h;for(d=h,l=s=h=X(h.minus(1),h.plus(1),f,1),c=I(h.times(h),f,1),r=3;;){if(s=I(s.times(c),f,1),u=l.plus(X(s,new S(r),f,1)),Ie(u.d).slice(0,f)===Ie(l.d).slice(0,f))if(l=l.times(2),o!==0&&(l=l.plus(Vt(S,f+2,_).times(o+""))),l=X(l,new S(m),f,1),e==null)if(Xi(l.d,f-g,B,a))S.precision=f+=g,u=s=h=X(d.minus(1),d.plus(1),f,1),c=I(h.times(h),f,1),r=a=1;else return I(l,S.precision=_,B,A=!0);else return S.precision=_,l;l=u,r+=2}}function Ls(n){return String(n.s*n.s/0)}function Qr(n,e){var i,t,r;for((i=e.indexOf("."))>-1&&(e=e.replace(".","")),(t=e.search(/e/i))>0?(i<0&&(i=t),i+=+e.slice(t+1),e=e.substring(0,t)):i<0&&(i=e.length),t=0;e.charCodeAt(t)===48;t++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(t,r),e){if(r-=t,n.e=i=i-t-1,n.d=[],t=(i+1)%D,i<0&&(t+=D),t<r){for(t&&n.d.push(+e.slice(0,t)),r-=D;t<r;)n.d.push(+e.slice(t,t+=D));e=e.slice(t),t=D-e.length}else t-=r;for(;t--;)e+="0";n.d.push(+e),A&&(n.e>n.constructor.maxE?(n.d=null,n.e=NaN):n.e<n.constructor.minE&&(n.e=0,n.d=[0]))}else n.e=0,n.d=[0];return n}function Ol(n,e){var i,t,r,o,s,a,l,u,f;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Os.test(e))return Qr(n,e)}else if(e==="Infinity"||e==="NaN")return+e||(n.s=NaN),n.e=NaN,n.d=null,n;if(kl.test(e))i=16,e=e.toLowerCase();else if(Dl.test(e))i=2;else if(Al.test(e))i=8;else throw Error(Zn+e);for(o=e.search(/p/i),o>0?(l=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,t=n.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=Ps(t,new t(i),o,o*2)),u=Ft(e,i,tn),f=u.length-1,o=f;u[o]===0;--o)u.pop();return o<0?new t(n.s*0):(n.e=Ut(u,f),n.d=u,A=!1,s&&(n=X(n,r,a*4)),l&&(n=n.times(Math.abs(l)<54?be(2,l):N.pow(2,l))),A=!0,n)}function Rl(n,e){var i,t=e.d.length;if(t<3)return e.isZero()?e:Si(n,2,e,e);i=1.4*Math.sqrt(t),i=i>16?16:i|0,e=e.times(1/Gt(5,i)),e=Si(n,2,e,e);for(var r,o=new n(5),s=new n(16),a=new n(20);i--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function Si(n,e,i,t,r){var o,s,a,l,u=1,f=n.precision,d=Math.ceil(f/D);for(A=!1,l=i.times(i),a=new n(t);;){if(s=X(a.times(l),new n(e++*e++),f,1),a=r?t.plus(s):t.minus(s),t=X(s.times(l),new n(e++*e++),f,1),s=a.plus(t),s.d[d]!==void 0){for(o=d;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=t,t=s,s=o,u++}return A=!0,s.d.length=d+1,s}function Gt(n,e){for(var i=n;--e;)i*=n;return i}function qs(n,e){var i,t=e.s<0,r=nn(n,n.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return Tn=t?4:1,e;if(i=e.divToInt(r),i.isZero())Tn=t?3:2;else{if(e=e.minus(i.times(r)),e.lte(o))return Tn=Is(i)?t?2:3:t?4:1,e;Tn=Is(i)?t?1:4:t?3:2}return e.minus(r).abs()}function Xr(n,e,i,t){var r,o,s,a,l,u,f,d,c,m=n.constructor,g=i!==void 0;if(g?(Re(i,1,Hn),t===void 0?t=m.rounding:Re(t,0,8)):(i=m.precision,t=m.rounding),!n.isFinite())f=Ls(n);else{for(f=mn(n),s=f.indexOf("."),g?(r=2,e==16?i=i*4-3:e==8&&(i=i*3-2)):r=e,s>=0&&(f=f.replace(".",""),c=new m(1),c.e=f.length-s,c.d=Ft(mn(c),10,r),c.e=c.d.length),d=Ft(f,10,r),o=l=d.length;d[--l]==0;)d.pop();if(!d[0])f=g?"0p+0":"0";else{if(s<0?o--:(n=new m(n),n.d=d,n.e=o,n=X(n,c,i,t,0,r),d=n.d,o=n.e,u=As),s=d[i],a=r/2,u=u||d[i+1]!==void 0,u=t<4?(s!==void 0||u)&&(t===0||t===(n.s<0?3:2)):s>a||s===a&&(t===4||u||t===6&&d[i-1]&1||t===(n.s<0?8:7)),d.length=i,u)for(;++d[--i]>r-1;)d[i]=0,i||(++o,d.unshift(1));for(l=d.length;!d[l-1];--l);for(s=0,f="";s<l;s++)f+=Hr.charAt(d[s]);if(g){if(l>1)if(e==16||e==8){for(s=e==16?4:3,--l;l%s;l++)f+="0";for(d=Ft(f,r,e),l=d.length;!d[l-1];--l);for(s=1,f="1.";s<l;s++)f+=Hr.charAt(d[s])}else f=f.charAt(0)+"."+f.slice(1);f=f+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)f="0"+f;f="0."+f}else if(++o>l)for(o-=l;o--;)f+="0";else o<l&&(f=f.slice(0,o)+"."+f.slice(o))}f=(e==16?"0x":e==2?"0b":e==8?"0o":"")+f}return n.s<0?"-"+f:f}function Ds(n,e){if(n.length>e)return n.length=e,!0}function Pl(n){return new this(n).abs()}function Fl(n){return new this(n).acos()}function Ll(n){return new this(n).acosh()}function ql(n,e){return new this(n).plus(e)}function Vl(n){return new this(n).asin()}function $l(n){return new this(n).asinh()}function Ul(n){return new this(n).atan()}function Gl(n){return new this(n).atanh()}function zl(n,e){n=new this(n),e=new this(e);var i,t=this.precision,r=this.rounding,o=t+4;return!n.s||!e.s?i=new this(NaN):!n.d&&!e.d?(i=nn(this,o,1).times(e.s>0?.25:.75),i.s=n.s):!e.d||n.isZero()?(i=e.s<0?nn(this,t,r):new this(0),i.s=n.s):!n.d||e.isZero()?(i=nn(this,o,1).times(.5),i.s=n.s):e.s<0?(this.precision=o,this.rounding=1,i=this.atan(X(n,e,o,1)),e=nn(this,o,1),this.precision=t,this.rounding=r,i=n.s<0?i.minus(e):i.plus(e)):i=this.atan(X(n,e,o,1)),i}function jl(n){return new this(n).cbrt()}function Zl(n){return I(n=new this(n),n.e+1,2)}function Hl(n,e,i){return new this(n).clamp(e,i)}function Jl(n){if(!n||typeof n!="object")throw Error($t+"Object expected");var e,i,t,r=n.defaults===!0,o=["precision",1,Hn,"rounding",0,8,"toExpNeg",-_i,0,"toExpPos",0,_i,"maxE",0,_i,"minE",-_i,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(i=o[e],r&&(this[i]=Jr[i]),(t=n[i])!==void 0)if(Ae(t)===t&&t>=o[e+1]&&t<=o[e+2])this[i]=t;else throw Error(Zn+i+": "+t);if(i="crypto",r&&(this[i]=Jr[i]),(t=n[i])!==void 0)if(t===!0||t===!1||t===0||t===1)if(t)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[i]=!0;else throw Error(Cs);else this[i]=!1;else throw Error(Zn+i+": "+t);return this}function Wl(n){return new this(n).cos()}function Yl(n){return new this(n).cosh()}function Vs(n){var e,i,t;function r(o){var s,a,l,u=this;if(!(u instanceof r))return new r(o);if(u.constructor=r,ks(o)){u.s=o.s,A?!o.d||o.e>r.maxE?(u.e=NaN,u.d=null):o.e<r.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(l=typeof o,l==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;A?s>r.maxE?(u.e=NaN,u.d=null):s<r.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}else if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return Qr(u,o.toString())}else if(l!=="string")throw Error(Zn+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),Os.test(o)?Qr(u,o):Ol(u,o)}if(r.prototype=y,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=Jl,r.clone=Vs,r.isDecimal=ks,r.abs=Pl,r.acos=Fl,r.acosh=Ll,r.add=ql,r.asin=Vl,r.asinh=$l,r.atan=Ul,r.atanh=Gl,r.atan2=zl,r.cbrt=jl,r.ceil=Zl,r.clamp=Hl,r.cos=Wl,r.cosh=Yl,r.div=Ql,r.exp=Xl,r.floor=Kl,r.hypot=ef,r.ln=nf,r.log=tf,r.log10=of,r.log2=rf,r.max=sf,r.min=af,r.mod=uf,r.mul=lf,r.pow=ff,r.random=df,r.round=cf,r.sign=mf,r.sin=pf,r.sinh=hf,r.sqrt=gf,r.sub=xf,r.sum=bf,r.tan=yf,r.tanh=Ef,r.trunc=vf,n===void 0&&(n={}),n&&n.defaults!==!0)for(t=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<t.length;)n.hasOwnProperty(i=t[e++])||(n[i]=this[i]);return r.config(n),r}function Ql(n,e){return new this(n).div(e)}function Xl(n){return new this(n).exp()}function Kl(n){return I(n=new this(n),n.e+1,3)}function ef(){var n,e,i=new this(0);for(A=!1,n=0;n<arguments.length;)if(e=new this(arguments[n++]),e.d)i.d&&(i=i.plus(e.times(e)));else{if(e.s)return A=!0,new this(1/0);i=e}return A=!0,i.sqrt()}function ks(n){return n instanceof N||n&&n.toStringTag===Ms||!1}function nf(n){return new this(n).ln()}function tf(n,e){return new this(n).log(e)}function rf(n){return new this(n).log(2)}function of(n){return new this(n).log(10)}function sf(){return Fs(this,arguments,"lt")}function af(){return Fs(this,arguments,"gt")}function uf(n,e){return new this(n).mod(e)}function lf(n,e){return new this(n).mul(e)}function ff(n,e){return new this(n).pow(e)}function df(n){var e,i,t,r,o=0,s=new this(1),a=[];if(n===void 0?n=this.precision:Re(n,1,Hn),t=Math.ceil(n/D),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(t));o<t;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(t*=4);o<t;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=t/4}else throw Error(Cs);else for(;o<t;)a[o++]=Math.random()*1e7|0;for(t=a[--o],n%=D,t&&n&&(r=be(10,D-n),a[o]=(t/r|0)*r);a[o]===0;o--)a.pop();if(o<0)i=0,a=[0];else{for(i=-1;a[0]===0;i-=D)a.shift();for(t=1,r=a[0];r>=10;r/=10)t++;t<D&&(i-=D-t)}return s.e=i,s.d=a,s}function cf(n){return I(n=new this(n),n.e+1,this.rounding)}function mf(n){return n=new this(n),n.d?n.d[0]?n.s:0*n.s:n.s||NaN}function pf(n){return new this(n).sin()}function hf(n){return new this(n).sinh()}function gf(n){return new this(n).sqrt()}function xf(n,e){return new this(n).sub(e)}function bf(){var n=0,e=arguments,i=new this(e[n]);for(A=!1;i.s&&++n<e.length;)i=i.plus(e[n]);return A=!0,I(i,this.precision,this.rounding)}function yf(n){return new this(n).tan()}function Ef(n){return new this(n).tanh()}function vf(n){return I(n=new this(n),n.e+1,1)}y[Symbol.for("nodejs.util.inspect.custom")]=y.toString;y[Symbol.toStringTag]="Decimal";var N=y.constructor=Vs(Jr);Lt=new N(Lt);qt=new N(qt);var ye=N;var sn=he(me(),1);var zs=he(me(),1);function Kr(n,e,i={}){let{contract:t=.125,step:r=1,power:o=2,atol:s=1e-16,rtol:a=s>0?0:Math.sqrt(Number.EPSILON),maxeval:l=1e6,breaktol:u=2}=i;if(!isFinite(e))return Kr(E=>n(1/E),1/e,{rtol:a,atol:s,maxeval:l,contract:Math.abs(t)>1?1/t:t,step:1/r,power:o});let f=r,d=Math.pow(1/t,o),c=n(e+f),m=[c],g=1/0,h=1;for(;h<l;){h+=1,f*=t,m.push(n(e+f));let E=d,S=1/0;for(let B=m.length-2;B>=0;B--){let _=m[B];m[B]=m[B+1]+(m[B+1]-m[B])/(E-1);let w=Math.abs(m[B]-_);S=Math.min(S,w),w<g&&(c=m[B],g=w),E*=d}if(S>u*g||!isFinite(S)||g<=Math.max(a*Math.abs(c),s))break}return[c,g]}var $s=new Set([2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999,5003,5009,5011,5021,5023,5039,5051,5059,5077,5081,5087,5099,5101,5107,5113,5119,5147,5153,5167,5171,5179,5189,5197,5209,5227,5231,5233,5237,5261,5273,5279,5281,5297,5303,5309,5323,5333,5347,5351,5381,5387,5393,5399,5407,5413,5417,5419,5431,5437,5441,5443,5449,5471,5477,5479,5483,5501,5503,5507,5519,5521,5527,5531,5557,5563,5569,5573,5581,5591,5623,5639,5641,5647,5651,5653,5657,5659,5669,5683,5689,5693,5701,5711,5717,5737,5741,5743,5749,5779,5783,5791,5801,5807,5813,5821,5827,5839,5843,5849,5851,5857,5861,5867,5869,5879,5881,5897,5903,5923,5927,5939,5953,5981,5987,6007,6011,6029,6037,6043,6047,6053,6067,6073,6079,6089,6091,6101,6113,6121,6131,6133,6143,6151,6163,6173,6197,6199,6203,6211,6217,6221,6229,6247,6257,6263,6269,6271,6277,6287,6299,6301,6311,6317,6323,6329,6337,6343,6353,6359,6361,6367,6373,6379,6389,6397,6421,6427,6449,6451,6469,6473,6481,6491,6521,6529,6547,6551,6553,6563,6569,6571,6577,6581,6599,6607,6619,6637,6653,6659,6661,6673,6679,6689,6691,6701,6703,6709,6719,6733,6737,6761,6763,6779,6781,6791,6793,6803,6823,6827,6829,6833,6841,6857,6863,6869,6871,6883,6899,6907,6911,6917,6947,6949,6959,6961,6967,6971,6977,6983,6991,6997,7001,7013,7019,7027,7039,7043,7057,7069,7079,7103,7109,7121,7127,7129,7151,7159,7177,7187,7193,7207,7211,7213,7219,7229,7237,7243,7247,7253,7283,7297,7307,7309,7321,7331,7333,7349,7351,7369,7393,7411,7417,7433,7451,7457,7459,7477,7481,7487,7489,7499,7507,7517,7523,7529,7537,7541,7547,7549,7559,7561,7573,7577,7583,7589,7591,7603,7607,7621,7639,7643,7649,7669,7673,7681,7687,7691,7699,7703,7717,7723,7727,7741,7753,7757,7759,7789,7793,7817,7823,7829,7841,7853,7867,7873,7877,7879,7883,7901,7907,7919]),Nf=7919;function zt(n){if(Number.isInteger(n)&&n>=0&&n<Number.MAX_SAFE_INTEGER,n<=3)return{[n]:1};let e={},i=0;for(;n%2===0;)i+=1,n/=2;for(i>0&&(e[2]=i),i=0;n%3===0;)i+=1,n/=3;i>0&&(e[3]=i);let t=!1;for(;!t;){if(n===1)return e;let r=Math.sqrt(n);t=!0;for(let o=6;o<=r+6;o+=6){if(n%(o-1)===0){e[o-1]=(e[o-1]??0)+1,n/=o-1,t=!1;break}if(n%(o+1)===0){e[o+1]=(e[o+1]??0)+1,n/=o+1,t=!1;break}}}return e[n]!==void 0?e[n]+=1:e[n]=1,e}function Jn(n){if(!Number.isInteger(n)||!Number.isFinite(n)||Number.isNaN(n)||n<=1)return!1;if(n<=Nf)return $s.has(n);for(let e of $s)if(n%e===0)return!1;return n>=0x3ffffffffffe5?Sf(n,30)?void 0:!1:n===_f(n)}function _f(n){if(n===1)return 1;if(n%2===0)return 2;if(n%3===0)return 3;if(n%5===0)return 5;let e=Math.floor(Math.sqrt(n)),i=7;for(;i<=e;){if(n%i===0)return i;if(n%(i+4)===0)return i+4;if(n%(i+6)===0)return i+6;if(n%(i+10)===0)return i+10;if(n%(i+12)===0)return i+12;if(n%(i+16)===0)return i+16;if(n%(i+22)===0)return i+22;if(n%(i+24)===0)return i+24;i+=30}return n}function Sf(n,e){let i=0,t=n-1;for(;t%2===0;)t/=2,++i;e:do{let r=Math.pow(2+Math.floor(Math.random()*(n-3)),t)%n;if(!(r===1||r===n-1)){for(let o=i-1;o--;){if(r=r*r%n,r===1)return!1;if(r===n-1)continue e}return!1}}while(--e);return!0}var js=53,ai=Math.log10(Math.pow(2,js)),Tf=7,bc=Math.pow(2,-(js-Tf)),Bi=Math.pow(10,-10),ui=1e6,jt=1e6,Ki=200;function Wn(n,e){if(n>=Number.MAX_SAFE_INTEGER)return[1,n];if(n===0)return[0,0];Number.isInteger(n)&&n>0&&n<Number.MAX_SAFE_INTEGER;let i=zt(n),t=1,r=1;for(let o of Object.keys(i)){let s=parseInt(o);t=t*Math.pow(s,Math.floor(i[o]/e)),r=r*Math.pow(s,i[o]%e)}return[t,r]}function Bn(n,e){if(n===0)return e;if(e===0||n===e)return n;if(!Number.isInteger(n)||!Number.isInteger(e))return NaN;for(;e!==0;)[n,e]=[e,n%e];return n<0?-n:n}function Zt(n,e){return n*e/Bn(n,e)}function Ht(n){if(!Number.isInteger(n)||n<0)return NaN;let e=1;for(let i=2;i<=n;i++)e=e*i;return e}function Zs(n){if(!Number.isInteger(n)||n<0)return NaN;if(n<0)return NaN;if(n<=1)return 1;let e=n;for(;n>2;)n-=2,e*=n;return e}var Us=7,Gs=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23];function et(n){if(n<0)return NaN;let e=Math.PI,i=n*n*n;return n*Math.log(n)-n-.5*Math.log(n)+.5*Math.log(2*e)+1/(12*n)-1/(360*i)+1/(1260*i*n*n)}function Ii(n){if(n<.5)return Math.PI/(Math.sin(Math.PI*n)*Ii(1-n));if(n>100)return Math.exp(et(n));n-=1;let e=Gs[0];for(let t=1;t<Us+2;t++)e+=Gs[t]/(n+t);let i=n+Us+.5;return Math.sqrt(2*Math.PI)*Math.pow(i,n+.5)*Math.exp(-i)*e}function li(n,e){return typeof n=="number"&&Math.abs(n)<=e||n instanceof N&&n.abs().lte(e)||n instanceof zs.Complex&&Math.abs(n.re)<=e&&Math.abs(n.im)<=e?0:n}function eo(n){let e=.254829592,i=-.284496736,t=1.421413741,r=-1.453152027,o=1.061405429,s=.3275911,a=n<0?-1:1;n=Math.abs(n);let l=1/(1+s*n),u=((((o*l+r)*l+t)*l+i)*l+e)*l;return a*(1-u*Math.exp(-n*n))}function Hs(n){let e=Math.PI,i=e*e,t=i*e,r=n*n,o=n*r,s=o*r,a=s*r;return Math.sqrt(e)/2*(n+e/12*o+7*i/480*s+127*t/40320*a+4369*i*i/5806080*a*r+34807*t*i/182476800*a*r*r)}function Js(n,e,i=.1){return(n(e-4*i)/280-4*n(e-3*i)/105+n(e-2*i)/5-4*n(e-i)/5+4*n(e+i)/5-n(e+2*i)/5+4*n(e+3*i)/105-n(e+4*i)/280)/i}function Jt(n,e,i,t=1e5){let r=0;if(e===-1/0&&i===1/0)for(let o=0;o<t;o++){let s=Math.random(),a=Math.tan(Math.PI*(s-.5)),l=Math.PI*(1+a*a);r+=n(a)/l}else if(e===-1/0)for(let o=0;o<t;o++){let s=Math.random(),a=i-Math.log(1-s),l=1/(1-s);r+=n(a)/l}else if(i===1/0)for(let o=0;o<t;o++){let s=Math.random(),a=e+Math.log(s),l=1/s;r+=n(a)/l}else for(let o=0;o<t;o++)r+=n(e+Math.random()*(i-e));return r/t*(i-e)}function si(n,e,i=1){if(i===0){let o=si(n,e,-1),s=si(n,e,1);return o===void 0||s===void 0?NaN:Math.abs(o-s)>1e-5?NaN:(o+s)/2}let[t,r]=Kr(n,e,{step:i>0?1:-1});return t}function Bf(n){if(n==="N")return[0,""];let e={I:1,V:5,X:10,L:50,C:100,D:500,M:1e3},i=0,t=0;n=n.toUpperCase();for(let r=n.length-1;r>=0;r--){let o=e[n[r]];if(o===void 0)return[i,n.slice(r)];o<t?i-=o:i+=o,t=o}return[i,""]}function Ti(n,e){if(n=n.trim(),n.length===0)return[NaN,""];if(n.startsWith("+"))return Ti(n.slice(1),e);if(n.startsWith("-")){let[r,o]=Ti(n.slice(1),e);return[-r,o]}let i=10;if(typeof e=="string"&&(e=e.toLowerCase()),n.startsWith("0x"))i=16,n=n.slice(2);else if(n.startsWith("0b"))i=2,n=n.slice(2);else{if(e==="roman")return Bf(n);if(e==="base64"||e==="base-64")try{return[parseInt(btoa(n)),""]}catch{return[NaN,""]}else typeof e=="number"?i=e:typeof e=="string"&&(i=parseInt(e))}let t=0;for(let r=0;r<n.length;r++){let o={" ":-1,"\xA0":-1,"\u2000":-1,"\u2001":-1,"\u2002":-1,"\u2003":-1,"\u2004":-1,"\u2005":-1,"\u2006":-1,"\u2007":-1,"\u2008":-1,"\u2009":-1,"\u200A":-1,"\u200B":-1,"\u202F":-1,"\u205F":-1,_:-1,",":-1,0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,b:11,c:12,d:13,e:14,f:15,g:16,h:17,i:18,j:19,k:20,l:21,m:22,n:23,o:24,p:25,q:26,r:27,s:28,t:29,u:30,v:31,w:32,x:33,y:34,z:35}[n[r]];if(o!==-1){if(o===void 0)return[t,n.substring(r)];if(o>=i)return[t,n.substring(r)];t=t*i+o}}return[t,""]}var fi=["Error","'missing'"];function pn(n){return!!(typeof n=="number"||di(n)||typeof n=="string"&&/^[+-]?[0-9\.]/.test(n))}function di(n){return n!==null&&typeof n=="object"&&"num"in n}function it(n){return n!==null&&typeof n=="object"&&"sym"in n}function Xs(n){return n!==null&&typeof n=="object"&&"str"in n}function Di(n){return n!==null&&typeof n=="object"&&"fn"in n}var no;function Ks(n){if(!no){let i=`^[${["Zyyy","Zinh","Arab","Armn","Beng","Bopo","Cyrl","Deva","Ethi","Geor","Grek","Gujr","Guru","Hang","Hani","Hebr","Hira","Kana","Knda","Khmr","Laoo","Latn","Mlym","Mymr","Orya","Sinh","Taml","Telu","Thaa","Thai","Tibt"].map(t=>`\\p{Script=${t}}`).join("")}]*$`;no=new RegExp(i,"u")}return no.test(n)}function Ee(n){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)||ki.test(n)?!0:Ks(n)?/^[\p{XIDS}_]\p{XIDC}*$/u.test(n):!1}var If="\\u{FE0F}",Df="\\u{20E3}",kf="\\u{200D}",Af="\\p{RI}\\p{RI}",wf="(?:[\\u{E0020}-\\u{E007E}]+\\u{E007F})",Ws=`(?:\\p{EMod}|${If}${Df}?|${wf})`,Cf="(?:(?=\\P{XIDC})\\p{Emoji})",Ys=`(?:${Cf}${Ws}*|\\p{Emoji}${Ws}+|${Af})`,ea=`(?:${Ys})(${kf}${Ys})*`,Mf=new RegExp(`(?:${ea})+`,"u"),ki=new RegExp(`^(?:${ea})+$`,"u");function on(n){return typeof n!="string"?"not-a-string":n===""?"empty-string":n.normalize()!==n?"expected-nfc":/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/.test(n)?"unexpected-bidi-marker":ki.test(n)?"valid":/\p{XIDC}/u.test(n)&&Mf.test(n)?"unexpected-mixed-emoji":Ks(n)?Ee(n)?"valid":Ee(n[0])?"invalid-char":"invalid-first-char":"unexpected-script"}function z(n){return n==null?null:typeof n=="object"&&"str"in n?n.str:typeof n!="string"||n.length<2||n[0]!=="'"||n[n.length-1]!=="'"?null:n.substring(1,n.length-1)}function to(n){if(n==null||z(n)!==null)return null;let e=x(n);return e==null?n:[e,...(T(n)??[]).map(i=>to(i)).filter(i=>i!==null)]}function x(n){return Array.isArray(n)?typeof n[0]=="string"&&!Ee(n[0])?(console.error(`Invalid identifier "${n[0]}": ${on(n[0])}`),null):n[0]:n==null?null:Di(n)?n.fn[0]:null}function In(n){let e=x(n);return typeof e=="string"?e:""}function T(n){return Array.isArray(n)?n.slice(1):n==null?null:Di(n)?n.fn.slice(1):null}function p(n,e){return Array.isArray(n)?n[e]??null:n==null?null:Di(n)?n.fn[e]??null:null}function De(n){return p(n,1)}function rn(n){return p(n,2)}function j(n){return n==null?0:Array.isArray(n)?Math.max(0,n.length-1):Di(n)?Math.max(0,n.fn.length-1):0}function ro(n){return n==null?null:x(n)==="Hold"?p(n,1):n}function C(n){if(typeof n=="string")return/^[+-]?[0-9\.]/.test(n)||n.length>=2&&n[0]==="'"&&n[n.length-1]==="'"?null:n;if(n==null)return null;let e=it(n)?n.sym:n;return typeof e!="string"?null:e}function Qs(n){let e=x(n);if(e==="KeyValuePair"||e==="Tuple"||e==="Pair"){let i=z(De(n));return i?[i,rn(n)??"Nothing"]:null}return null}function ci(n){if(n===null)return null;if(typeof n=="object"&&"dict"in n)return n.dict;let e=Qs(n);if(e)return{[e[0]]:e[1]};if(x(n)==="Dictionary"){let t={};for(let r=1;r<j(n);r++){let o=Qs(p(n,r));o&&(t[o[0]]=o[1])}return t}return null}function Of(n){if(n=n.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,""),n==="nan")return NaN;if(n==="infinity"||n==="+infinity")return 1/0;if(n==="-infinity")return-1/0;if(/\([0-9]+\)/.test(n)){let[e,i,t,r]=n.match(/(.+)\(([0-9]+)\)(.*)$/)??[];n=i+t.repeat(Math.ceil(16/t.length))+(r??"")}return parseFloat(n)}function M(n){return typeof n=="number"?n:typeof n=="string"?Of(n):n==null?null:di(n)?M(n.num):null}function Ai(n){if(n==null)return null;if(C(n)==="Half")return[1,2];let e=x(n);if(!e)return null;let i=null,t=null;if(e==="Negate"){let r=Ai(De(n));if(r)return[-r[0],r[1]]}if((e==="Rational"||e==="Divide")&&(i=M(De(n))??NaN,t=M(rn(n))??NaN),e==="Power"){let r=M(rn(n));r===1?(i=M(De(n)),t=1):r===-1&&(i=1,t=M(De(n)))}return e==="Multiply"&&x(rn(n))==="Power"&&M(rn(rn(n)))===-1&&(i=M(De(n)),t=M(De(rn(n)))),i===null||t===null?null:Number.isInteger(i)&&Number.isInteger(t)?[i,t]:null}function nt(n,e){let i=x(n);if(i!==null)return[nt(i,e),...(T(n)??[]).map(o=>nt(o,e))];let t=ci(n);if(t!==null){let o=Object.keys(t),s={};for(let a of o)s[a]=nt(t[a],e);return{dict:s}}let r=C(n);return r&&e[r]?e[r]:n}function tt(n,e){let i=null;if(Array.isArray(n)&&(i=n),Di(n)&&(i=n.fn),i===null)return[];let t=1,r=[];for(;t<i.length;)r.push(e(i[t])),t+=1;return r}function wi(n,e,i){let t=x(e),r=x(i);return t===n&&r===n?[n,...T(e)??[],...T(i)??[]]:t===n?[n,...T(e)??[],i]:r===n?[n,e,...T(i)??[]]:[n,e,i]}function Wt(n){if(n===null)return null;let e=x(n);if(e==="Delimiter"){if(n=p(n,1),n===null)return[];if(e=x(n),e!=="Sequence")return[n]}return e!=="Sequence"?null:T(n)??[]}function oe(n){return x(n)==="Sequence"&&j(n)===0}function F(n){return oe(n)?fi:n??fi}function io(n){return n[0]==="Square"?io(n.slice(1))+2:n.reduce((e,i)=>e+rt(i),0)}function rt(n){if(n===null)return 0;if(typeof n=="number"||typeof n=="string"||pn(n)||it(n)||Xs(n))return 1;if(Array.isArray(n))return io(n);if("fn"in n)return io(n.fn);let e=ci(n);if(e){let i=Object.keys(e);return 1+i.length+i.reduce((t,r)=>t+rt(e[r]),0)}return 0}function oo(n){if(typeof n=="number")return Number.isInteger(n)?BigInt(n):null;if(n==null||!pn(n))return null;let e=di(n)?n.num:n;if(typeof e=="number")return Number.isInteger(e)?BigInt(e):null;if(typeof e!="string")return null;let i=e.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,"");return i==="nan"||i==="infinity"||i==="+infinity"||i==="-infinity"||i.includes(".")?null:O(i)}function O(n){if(typeof n=="bigint")return n;if(n instanceof ye)return O(n.toString());let e=n.toString().toLowerCase();if(e==="nan")return NaN;if(e==="infinity"||e==="+infinity")return 1/0;if(e==="-infinity")return-1/0;let i=e.match(/([^\.]+)(?:\.([0-9]+))?e(.+)$/);return i&&(e=i[1]+(i[2]??"")+"0".repeat(parseInt(i[3])-(i[2]?i[2].length:0))),BigInt(e)}function na(n,e){for(;e!==BigInt(0);)[n,e]=[e,n%e];return n<0?-n:n}var Rf=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];function Pf(n){if(n<Number.MAX_SAFE_INTEGER){let f=zt(Number(n)),d=new Map;for(let c of Object.keys(f))d.set(O(c),f[c]);return d}let e=n,i=new Map,t=0,r=0,o=0,s=BigInt(10);for(;e%s===BigInt(0);)t+=1,o+=1,e=e/s;for(s=BigInt(5);e%s===BigInt(0);)o+=1,e=e/s;for(s=BigInt(3);e%s===BigInt(0);)r+=1,e=e/s;for(s=BigInt(2);e%s===BigInt(0);)t+=1,e=e/s;t>0&&i.set("2",t),r>0&&i.set("3",r),o>0&&i.set("5",o),s=BigInt(7);let a="",l=0;for(;s*s<e;)e%s===BigInt(0)?(a||(a=s.toString()),i.set(a,(i.get(a)??0)+1),e=e/s):(s=s+Rf[l],a="",l=l<7?l+1:0);e!==BigInt(1)&&i.set(e.toString(),(i.get(e.toString())??0)+1);let u=new Map;for(let[f,d]of i)u.set(O(f),d);return u}function mi(n,e){let i=Pf(n),t=BigInt(1),r=BigInt(1),o=O(e);for(let[s,a]of i){let l=O(a);t=t*s**(l/o),r=r*s**(l%o)}return[t,r]}function V(n){return n!==null&&Array.isArray(n)}function $(n){return n!==null&&Array.isArray(n)&&typeof n[0]=="number"}function G(n){return n!==null&&Array.isArray(n)&&typeof n[0]=="bigint"}function Ue(n){return n[0]==0}function K(n){return n[0]===n[1]}function ia(n){return n[1]===1||n[1]===BigInt(1)}function Ci(n){return n[0]===-n[1]}function Pe(n){return Number(n[0])}function hn(n){return Number(n[1])}function so(n){return n[0]<0}function ve(n){return[-n[0],n[1]]}function Dn(n){return n[0]<0?[-n[1],-n[0]]:[n[1],n[0]]}function ot(n,e){if(Number.isInteger(e),e===0)return[1,1];if(e<0&&(n=Dn(n),e=-e),e===1)return n;let i=O(e);return[O(n[0])**i,O(n[1])**i]}function ta(n){let e=Math.sqrt(Number(n[0])),i=Math.sqrt(Number(n[1]));if(Number.isInteger(e)&&Number.isInteger(i))return[e,i]}function Ge(n){if($(n)){if(n[0]===1||n[1]===1)return n;if(n[1]<0&&(n=[-n[0],-n[1]]),!Number.isFinite(n[1]))return[0,1];let i=Bn(n[0],n[1]);return i<=1?n:[n[0]/i,n[1]/i]}if(n[0]===BigInt(1)||n[1]===BigInt(1))return n;n[1]<0&&(n=[-n[0],-n[1]]);let e=na(n[0],n[1]);return e<=1?n:[n[0]/e,n[1]/e]}function Yt(n){if(!Number.isFinite(n)||n%1===0)return n;let i=1e-15,t=Math.floor(n),r=1,o=0,s=t,a=1;for(;n-t>i*a*a;){n=1/(n-t),t=Math.floor(n);let l=r;r=s;let u=o;o=a,s=l+t*r,a=u+t*o}return[s,a]}function ra(n){if(G(n)){let[a,l]=n,[u,f]=mi(a,2),[d,c]=mi(l,2);return[Ge([u,d]),Ge([f,c])]}let[e,i]=n,[t,r]=Wn(e,2),[o,s]=Wn(i,2);return[Ge([t,o]),Ge([r,s])]}function ze(n){n.isCanonical;let e=n.engine;if(n.head==="Multiply"){let r=[],o=[1,1];for(let s of n.ops){let a=Ff(s);a?o=W(o,a):r.push(s)}return K(o)?[o,n]:[o,e.mul(...r)]}if(n.head==="Divide"){let[r,o]=ze(n.op1),[s,a]=ze(n.op2),l=W(r,Dn(s));return a.isOne?[l,o]:K(l)?[l,n]:[l,e.div(o,a)]}if(n.head==="Power"){if(n.op2.numericValue===null)return[[1,1],n];let[r,o]=ze(n.op1);if(K(r))return[r,n];let s=b(n.op2);return typeof s=="number"&&Number.isInteger(s)?[ot(r,s),e.pow(o,n.op2)]:[[1,1],n]}if(n.head==="Sqrt"){let[r,o]=ze(n.op1),s=ta(r);return s?[s,e.sqrt(o)]:[[1,1],n]}if(n.head,n.head==="Negate"){let[r,o]=ze(n.op1);return[ve(r),o]}let i=n.numericValue;if(i instanceof sn.default&&i.re<0)return[[-1,1],e.number(e.complex(-i.re,-i.im))];let t=J(n);return t?[t,e.One]:[[1,1],n]}function J(n){let e=n.numericValue;if(Array.isArray(e))return e;if(e!==null){if(typeof e=="number"&&Number.isInteger(e))return e>1e9||e<-1e9?[O(e),BigInt(1)]:[e,1];if(e instanceof ye&&e.isInteger())return[O(e),BigInt(1)]}}function Ff(n){let e=J(n);if(e)return e;let i=b(n);if(i!==null&&(e=Yt(i),V(e)))return e}function oa(n,e){return W(n,Dn(e))}function st(n,e){if(Array.isArray(e)||e.numericValue!==null&&e.numericValue instanceof sn.default,typeof n[0]=="number"&&!Number.isFinite(n[0]))return n;let i=Array.isArray(e)?e:e.numericValue;if(i===null)return n;if(Array.isArray(i)){if(G(i))return n=[BigInt(n[0]),BigInt(n[1])],[i[1]*n[0]+i[0]*n[1],i[1]*n[1]];if(!Number.isFinite(i[0]))return i;if(G(n)){let t=[BigInt(i[0]),BigInt(i[1])];return[t[1]*n[0]+t[0]*n[1],t[1]*n[1]]}return[i[1]*n[0]+i[0]*n[1],i[1]*n[1]]}return i instanceof ye?i.isNaN()?[Number.NaN,1]:i.isFinite()?(i.isInteger(),$(n)&&(n=[BigInt(n[0]),BigInt(n[1])]),[n[0]+n[1]*O(i.toString()),n[1]]):[i.isNegative()?-1/0:1/0,1]:i instanceof sn.default?[Number.NaN,1]:(!Number.isFinite(i)||Number.isInteger(i),Number.isFinite(i)?$(n)?[n[0]+n[1]*i,n[1]]:[n[0]+n[1]*O(i),n[1]]:[i,1])}function W(n,e){if(Array.isArray(e)||e.numericValue!==null&&e instanceof sn.default,Array.isArray(e))return $(n)&&$(e)?[n[0]*e[0],n[1]*e[1]]:($(n)&&(n=[O(n[0]),O(n[1])]),$(e)&&(e=[O(e[0]),O(e[1])]),[n[0]*e[0],n[1]*e[1]]);let i=e.numericValue;return i!==null&&typeof i=="number"?(Number.isInteger(i),$(n)?[n[0]*i,n[1]]:[n[0]*O(i),n[1]]):i instanceof ye?(i.isInteger(),$(n)?[O(i.toString())*O(n[0]),O(n[1])]:[O(i.toString())*n[0],n[1]]):Array.isArray(i)?G(i)?[i[0]*O(n[0]),i[1]*O(n[1])]:$(n)?[n[0]*i[0],n[1]*i[1]]:[n[0]*O(i[0]),n[1]*O(i[1])]:n}function b(n){if(n==null)return null;let e=n.numericValue;if(e===null)return null;if(typeof e=="number")return e;if(e instanceof ye)return e.toNumber();if(Array.isArray(e)){let[i,t]=e;return typeof i=="number"&&typeof t=="number"?i/t:Number(i)/Number(t)}return!(e instanceof sn.default)||e.im,null}function je(n){if(n==null)return null;let e=n.numericValue;if(e===null)return null;if(e instanceof ye)return e;if(typeof e=="number")return n.engine.bignum(e);if(Array.isArray(e)){let[i,t]=e;return typeof i=="number"&&typeof t=="number"?n.engine.bignum(i/t):n.engine.bignum(i).div(t.toString())}return!(e instanceof sn.default)||e.im,null}function U(n){if(n==null)return null;let e=n.numericValue;if(e===null)return null;if(typeof e=="number")return Number.isInteger(e)&&e>=-ui&&e<=ui?e:null;if(e instanceof ye){if(e.isInteger()){let t=e.toNumber();if(t>=-ui&&t<=ui)return t}return null}if(n.isCanonical)return null;let i=e;if(Array.isArray(i)){let[t,r]=i,o;return typeof t=="number"&&typeof r=="number"?o=t/r:o=Number(t)/Number(r),Number.isInteger(o)&&o>=-ui&&o<=ui?o:null}return null}function pi(n,e,i){if(n===e)return 0;let t=n.N(),r=e.N(),o=t.numericValue,s=r.numericValue;if(o===null||s===null){let u=t.sgn,f=r.sgn;return typeof u!="number"||typeof f!="number"?void 0:u===0&&f===0?0:u<0&&f>0?-1:u>0&&f<0?1:void 0}if(i??(i=n.engine.tolerance),o instanceof sn.default&&s instanceof sn.default)return li(o.re-s.re,i)===0&&li(o.im-s.im,i)===0?0:void 0;if(o instanceof sn.default||s instanceof sn.default)return;if(!V(o)&&V(s),typeof o=="number"&&typeof s=="number")return li(s-o,i)===0?0:o<s?-1:1;let a=n.engine,l=a.bignum(s).sub(a.bignum(o));return li(l,i)===0?0:l.isPos()?1:-1}function ao(n,e){for(n.isInteger()&&e.isInteger();!e.isZero();)[n,e]=[e,n.modulo(e)];return n.abs()}function aa(n,e){return n.mul(e).div(ao(n,e))}function uo(n,e){if(!e.isInteger()||e.isNegative())return n._BIGNUM_NAN;if(e.lessThan(10))return n.bignum([1,1,2,6,24,120,720,5040,40320,362880,3628800][e.toNumber()]);if(e.gt(Number.MAX_SAFE_INTEGER)){let o=n._BIGNUM_ONE,s=n._BIGNUM_TWO;for(;s.lessThan(e);)o=o.mul(s),s=s.add(1);return o}if(e.modulo(2).eq(1))return e.times(uo(n,e.minus(1)));let i=e.toNumber(),t=e,r=e;for(;i>2;)i-=2,t=t.add(i),r=r.mul(t);return r}function ua(n,e){if(!e.isInteger()||e.isNegative())return n._BIGNUM_NAN;if(e.lessThan(1))return n._BIGNUM_ONE;let i=e;for(;e.greaterThan(2);)e=e.minus(2),i=i.mul(e);return i}var sa=7;function lo(n,e){if(e.isNegative())return n._BIGNUM_NAN;let i=n.cache("gamma-p-ln",()=>["0.99999999999999709182","57.156235665862923517","-59.597960355475491248","14.136097974741747174","-0.49191381609762019978","0.33994649984811888699e-4","0.46523628927048575665e-4","-0.98374475304879564677e-4","0.15808870322491248884e-3","-0.21026444172410488319e-3","0.2174396181152126432e-3","-0.16431810653676389022e-3","0.84418223983852743293e-4","-0.2619083840158140867e-4","0.36899182659531622704e-5"].map(s=>n.bignum(s))),t=i[0];for(let s=i.length-1;s>0;--s)t=t.add(i[s].div(e.add(s)));let r=n.cache("gamma-g-ln",()=>n.bignum(607).div(128)),o=e.add(r).add(n._BIGNUM_HALF);return n._BIGNUM_NEGATIVE_ONE.acos().mul(n._BIGNUM_TWO).log().mul(n._BIGNUM_HALF).add(o.log().mul(e.add(n._BIGNUM_HALF)).minus(o).add(t.log()).minus(e.log()))}function fo(n,e){if(e.lessThan(n._BIGNUM_HALF)){let o=n._BIGNUM_NEGATIVE_ONE.acos();return o.div(o.mul(e).sin().mul(fo(n,n._BIGNUM_ONE.sub(e))))}if(e.greaterThan(100))return lo(n,e).exp();e=e.sub(1);let i=n.cache("lanczos-7-c",()=>["0.99999999999980993227684700473478","676.520368121885098567009190444019","-1259.13921672240287047156078755283","771.3234287776530788486528258894","-176.61502916214059906584551354","12.507343278686904814458936853","-0.13857109526572011689554707","9.984369578019570859563e-6","1.50563273514931155834e-7"].map(o=>n.bignum(o))),t=i[0];for(let o=1;o<sa+2;o++)t=t.add(i[o].div(e.add(o)));let r=e.add(sa).add(n._BIGNUM_HALF);return n._BIGNUM_NEGATIVE_ONE.acos().times(n._BIGNUM_TWO).sqrt().mul(t.mul(r.neg().exp()).mul(r.pow(e.add(n._BIGNUM_HALF))))}function Qt(n){return n.isFinite()?n.d.length>3||n.d.length===3&&n.d[0]>=90?!1:(n.precision()<=16,n.e<308&&n.e>-306):!0}var Oo=he(me(),1);var mo=he(me(),1);function ut(n){if(n.head==="Power"&&n.op2.numericValue!==null){let e=U(n.op2);return e!==null&&e>0?e:1}if(n.head==="Multiply"){let e=1;for(let i of n.ops){let t=ut(i);t>1&&(e=e+t)}return e}return 1}function co(n){if(n.head==="Power"&&n.op2.numericValue!==null){let e=U(n.op2);return e!==null&&e>0?e:1}if(n.head==="Multiply"){let e=1;for(let i of n.ops)e=Math.max(e,ut(i));return e}return 1}function at(n){return n.symbol?n.symbol:n.ops?(typeof n.head=="string"?n.head:at(n.head))+'"'+n.ops.map(i=>at(i)).filter(i=>i.length>0).join('"'):""}var gn=1e5;function po(n){return[...n].sort((e,i)=>{let t=at(e),r=at(i);if(!t&&!r)return an(e,i);if(!t)return 1;if(!r||t<r)return-1;if(t>r)return 1;let o=ut(e),s=ut(i);if(o!==s)return s-o;let a=co(e),l=co(i);return a!==l?a-l:an(e,i)})}function an(n,e){if(n===e||n.numericValue!==null&&n.numericValue===e.numericValue)return 0;let i=b(n);if(i!==null){let t=b(e);return t!==null?i-t:-1}if(n.numericValue instanceof mo.Complex)return e.numericValue instanceof mo.Complex?n.numericValue.re===e.numericValue.re?Math.abs(n.numericValue.im)===Math.abs(e.numericValue.im)?n.numericValue.im-e.numericValue.im:Math.abs(n.numericValue.im)-Math.abs(e.numericValue.im):n.numericValue.re-e.numericValue.re:e.numericValue!==null?1:-1;if(n.numericValue)return e.numericValue?1:-1;if(n.head==="Sqrt"&&n.op1.numericValue)return e.head==="Sqrt"&&e.op1.numericValue?an(n.op1,e.op1):-1;if(n.symbol)return e.symbol?n.symbol===e.symbol?0:n.symbol>e.symbol?1:-1:e.numericValue!==null?1:-1;if(n.ops){if(e.ops){let t=n.functionDefinition?.complexity??gn,r=e.functionDefinition?.complexity??gn;return t===r?typeof n.head=="string"&&typeof e.head=="string"?n.head===e.head?Mi(n)-Mi(e):n.head<e.head?1:-1:Mi(n)-Mi(e):t-r}return e.numericValue!==null||e.symbol?1:-1}if(n.string)return e.string?n.string.length!==e.string.length?e.string.length-n.string.length:e.string<n.string?-1:n.string>e.string?1:0:e.keys?-1:1;if(n.keys&&e.keys){if(n.keysCount!==e.keysCount)return e.keysCount-n.keysCount;let t=0,r=0;for(let o of e.keys)t+=e.getKey(o).complexity??gn;for(let o of n.keys)r+=n.getKey(o).complexity??gn;return r-t}return(n.complexity??gn)-(e.complexity??gn)}function ho(n,{recursive:e=!1}){if(n.ops){let i=n.ops;e&&(i=i.map(r=>ho(r,{recursive:e})));let t=n.engine;return n.head==="Add"?i=po(i):(n.head==="Multiply"||(t.lookupFunction(n.head)?.commutative??!1))&&(i=[...i].sort(an)),t._fn(n.head,i,{canonical:n.isCanonical})}return n}function Mi(n){return n.keys!==null?1+n.keysCount:n.ops?(typeof n.head=="string"?1:Mi(n.head))+[...n.ops].reduce((e,i)=>e+Mi(i),0):1}function Lf(n){let e=[];for(let i=0;i<n.length;i++){let t=n.charCodeAt(i);if(t>=55296&&t<=56319){let r=n.charCodeAt(i+1);if(r>=56320&&r<=57343){let o=t-55296,s=r-56320;t=2**16+o*2**10+s,i++}}e.push(t)}return e}var Xt=8205,la=[127462,127487];function fa(n){return n===Xt||n===65038||n===65039||n>=127995&&n<=128e3||n>=129456&&n<=129460||n>=917536&&n<=917632}function qf(n){return n>=la[0]&&n<=la[1]}function da(n){if(/^[\u0020-\u00FF]*$/.test(n))return n;let e=[],i=Lf(n),t=0;for(;t<i.length;){let r=i[t++],o=i[t];if(o===Xt){let s=t-1;for(t+=2;i[t]===Xt;)t+=2;e.push(String.fromCodePoint(...i.slice(s,2*t-s+1)))}else if(fa(o)){let s=t-1;for(;fa(i[t]);)t+=i[t]===Xt?2:1;e.push(String.fromCodePoint(...i.slice(s,2*t-s-1)))}else qf(r)?(t+=1,e.push(String.fromCodePoint(...i.slice(t-2,2)))):e.push(String.fromCodePoint(r))}return e}var go=class{constructor(e){this.obeyspaces=!1;e=e.replace(/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/g,""),this.s=da(e),this.pos=0}end(){return this.pos>=this.s.length}get(){return this.pos<this.s.length?this.s[this.pos++]:""}peek(){return this.s[this.pos]}match(e){let i;return typeof this.s=="string"?i=e.exec(this.s.slice(this.pos)):i=e.exec(this.s.slice(this.pos).join("")),i?.[0]?(this.pos+=i[0].length,i[0]):null}next(){if(this.end())return null;if(!this.obeyspaces&&this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]+/))return"<space>";if(this.obeyspaces&&this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]/))return"<space>";let e=this.get();if(e==="\\"){if(!this.end()){let i=this.match(/^[a-zA-Z*]+/);if(i)this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]*/);else if(i=this.get(),i===" ")return"<space>";return"\\"+i}}else{if(e==="{")return"<{>";if(e==="}")return"<}>";if(e==="^"){if(this.peek()==="^"){this.get();let i=this.match(/^(\^(\^(\^(\^[0-9a-f])?[0-9a-f])?[0-9a-f])?[0-9a-f])?[0-9a-f][0-9a-f]/);if(i)return String.fromCodePoint(parseInt(i.slice(i.lastIndexOf("^")+1),16))}return e}else if(e==="#"){if(!this.end()){let i=!1;if(/[0-9?]/.test(this.peek())&&(i=!0,this.pos+1<this.s.length)){let t=this.s[this.pos+1];i=/[^0-9A-Za-z]/.test(t)}return i?"#"+this.get():"#"}}else if(e==="$")return this.peek()==="$"?(this.get(),"<$$>"):"<$>"}return e}};function Vf(n,e){let i=n.next();if(!i)return[];let t=[];if(i!=="\\relax"){if(i==="\\noexpand")i=n.next(),i&&t.push(i);else if(i==="\\obeyspaces")n.obeyspaces=!0;else if(i==="\\space"||i==="~")t.push("<space>");else if(i==="\\bgroup")t.push("<{>");else if(i==="\\egroup")t.push("<}>");else if(i==="\\string")i=n.next(),i&&(i[0]==="\\"?Array.from(i).forEach(r=>t.push(r==="\\"?"\\backslash":r)):i==="<{>"?t.push("\\{"):i==="<space>"?t.push("~"):i==="<}>"&&t.push("\\}"));else if(i==="\\csname"){for(;n.peek()==="<space>";)n.next();let r="",o=!1,s=[];do{if(s.length===0)if(/^#[0-9?]$/.test(n.peek())){let a=n.get().slice(1);s=ge(e?.[a]??e?.["?"]??"\\placeholder{}",e),i=s[0]}else i=n.next(),s=i?[i]:[];o=s.length===0,!o&&i==="\\endcsname"&&(o=!0,s.shift()),o||(o=i==="<$>"||i==="<$$>"||i==="<{>"||i==="<}>"||!!i&&i.length>1&&i[0]==="\\"),o||(r+=s.shift())}while(!o);r&&t.push("\\"+r),t=t.concat(s)}else if(i!=="\\endcsname")if(i.length>1&&i[0]==="#"){let r=i.slice(1);t=t.concat(ge(e?.[r]??e?.["?"]??"\\placeholder{}",e))}else t.push(i)}return t}function ge(n,e=[]){let i=n.toString().split(/\r?\n/),t="",r="";for(let a of i){t+=r,r=" ";let l=a.match(/((?:\\%)|[^%])*/);l!==null&&(t+=l[0])}let o=new go(t),s=[];do s.push(...Vf(o,e));while(!o.end());return s}function Kt(n){return ge(n).length}function v(n){let e="",i="";for(let t of n)t!=null&&(typeof t=="string"&&(/[a-zA-Z*]/.test(t[0])&&(i+=e),/\\[a-zA-Z]+\*?$/.test(t)?e=" ":e=""),i+=t.toString());return i}function Oi(n,e){return/^[0-9]$/.test(e)?`${n}${e}`:`${n}{${e}}`}function xn(n){let e=[];if(Array.isArray(n))for(let t of n)Array.isArray(t)?e=[...e,...t]:e.push(t);else e=[n];return v(e.map(t=>({"<space>":" ","<$$>":"$$","<$>":"$","<{>":"{","<}>":"}"})[t]??t))}function ca(n){return!("kind"in n)||n.kind==="expression"}function ma(n){return"kind"in n&&n.kind==="symbol"}function lt(n){return"kind"in n&&n.kind==="matchfix"}function xo(n){return"kind"in n&&n.kind==="infix"}function er(n){return"kind"in n&&n.kind==="prefix"}function bo(n){return"kind"in n&&n.kind==="postfix"}function pa(n){return"kind"in n&&n.kind==="environment"}var nr=[{latexTrigger:["\\not","<"],kind:"infix",associativity:"any",precedence:246,parse:"NotLess"},{name:"NotLess",latexTrigger:["\\nless"],kind:"infix",associativity:"any",precedence:246},{latexTrigger:["<"],kind:"infix",associativity:"any",precedence:245,parse:"Less"},{name:"Less",latexTrigger:["\\lt"],kind:"infix",associativity:"any",precedence:245},{latexTrigger:["<","="],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{name:"LessEqual",latexTrigger:["\\le"],kind:"infix",associativity:"any",precedence:241},{latexTrigger:["\\leq"],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{latexTrigger:["\\leqslant"],kind:"infix",associativity:"any",precedence:250,parse:"LessEqual"},{name:"LessNotEqual",latexTrigger:["\\lneqq"],kind:"infix",associativity:"any",precedence:245},{name:"NotLessNotEqual",latexTrigger:["\\nleqq"],kind:"infix",associativity:"any",precedence:245},{name:"LessOverEqual",latexTrigger:["\\leqq"],kind:"infix",associativity:"any",precedence:250},{name:"GreaterOverEqual",latexTrigger:["\\geqq"],kind:"infix",associativity:"any",precedence:250,parse:"GreaterEqual"},{name:"Equal",latexTrigger:["="],kind:"infix",associativity:"right",precedence:245},{latexTrigger:["*","="],kind:"infix",associativity:"right",precedence:245,parse:"StarEqual"},{name:"StarEqual",latexTrigger:["\\star","="],kind:"infix",associativity:"right",precedence:245},{name:"PlusEqual",latexTrigger:["+","="],kind:"infix",associativity:"right",precedence:245},{name:"MinusEqual",latexTrigger:["-","="],kind:"infix",associativity:"right",precedence:245},{name:"SlashEqual",latexTrigger:["/","="],kind:"infix",associativity:"right",precedence:245},{name:"EqualEqual",latexTrigger:["=","="],kind:"infix",associativity:"right",precedence:245},{name:"EqualEqualEqual",latexTrigger:["=","=","="],kind:"infix",associativity:"right",precedence:250},{name:"TildeFullEqual",latexTrigger:["\\cong"],kind:"infix",associativity:"right",precedence:245},{name:"NotTildeFullEqual",latexTrigger:["\\ncong"],kind:"infix",associativity:"right",precedence:245},{name:"Approx",latexTrigger:["\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"NotApprox",latexTrigger:["\\not","\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"ApproxEqual",latexTrigger:["\\approxeq"],kind:"infix",associativity:"right",precedence:245},{name:"NotApproxEqual",latexTrigger:["\\not","\\approxeq"],kind:"infix",associativity:"right",precedence:250},{name:"NotEqual",latexTrigger:["\\ne"],kind:"infix",associativity:"right",precedence:255},{name:"Unequal",latexTrigger:["!","="],kind:"infix",associativity:"right",precedence:245},{name:"GreaterEqual",latexTrigger:["\\ge"],kind:"infix",associativity:"right",precedence:242},{latexTrigger:["\\geq"],kind:"infix",associativity:"right",precedence:242,parse:"GreaterEqual"},{latexTrigger:[">","="],kind:"infix",associativity:"right",precedence:243,parse:"GreaterEqual"},{latexTrigger:["\\geqslant"],kind:"infix",associativity:"right",precedence:250,parse:"GreaterEqual"},{name:"GreaterNotEqual",latexTrigger:["\\gneqq"],kind:"infix",associativity:"right",precedence:245},{name:"NotGreaterNotEqual",latexTrigger:["\\ngeqq"],kind:"infix",associativity:"right",precedence:245},{latexTrigger:[">"],kind:"infix",associativity:"right",precedence:245,parse:"Greater"},{name:"Greater",latexTrigger:["\\gt"],kind:"infix",associativity:"right",precedence:245},{name:"NotGreater",latexTrigger:["\\ngtr"],kind:"infix",associativity:"right",precedence:244},{latexTrigger:["\\not",">"],kind:"infix",associativity:"right",precedence:244,parse:"NotGreater"},{name:"RingEqual",latexTrigger:["\\circeq"],kind:"infix",associativity:"right",precedence:245},{name:"TriangleEqual",latexTrigger:["\\triangleq"],kind:"infix",associativity:"right",precedence:245},{name:"DotEqual",latexTrigger:["\\doteq"],kind:"infix",associativity:"right",precedence:250},{name:"DotEqualDot",latexTrigger:["\\doteqdot"],kind:"infix",associativity:"right",precedence:250},{name:"FallingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:250},{name:"RisingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:250},{name:"QuestionEqual",latexTrigger:["\\questeq"],kind:"infix",associativity:"right",precedence:245},{name:"MuchLess",latexTrigger:["\\ll"],kind:"infix",associativity:"right",precedence:245},{name:"MuchGreater",latexTrigger:["\\gg"],kind:"infix",associativity:"right",precedence:245},{name:"Precedes",latexTrigger:["\\prec"],kind:"infix",associativity:"right",precedence:245},{name:"Succeeds",latexTrigger:["\\succ"],kind:"infix",associativity:"right",precedence:245},{name:"PrecedesEqual",latexTrigger:["\\preccurlyeq"],kind:"infix",associativity:"right",precedence:245},{name:"SucceedsEqual",latexTrigger:["\\curlyeqprec"],kind:"infix",associativity:"right",precedence:245},{name:"NotPrecedes",latexTrigger:["\\nprec"],kind:"infix",associativity:"right",precedence:245},{name:"NotSucceeds",latexTrigger:["\\nsucc"],kind:"infix",associativity:"right",precedence:245},{name:"Between",latexTrigger:["\\between"],kind:"infix",associativity:"right",precedence:250}];function un(n){return typeof n=="object"&&n!==null&&"engine"in n}function L(n){return n.numericMode==="bignum"||n.numericMode==="auto"}function ae(n){return n.numericMode==="auto"||n.numericMode==="complex"}function ir(n){return typeof n=="string"?n.startsWith("$")&&n.endsWith("$"):!1}function hi(n){if(typeof n=="number")return n.toString();if(typeof n=="string"){let e=n.trim();if(e.startsWith("$$")&&e.endsWith("$$"))return e.slice(2,-2);if(e.startsWith("$")&&e.endsWith("$"))return e.slice(1,-1)}return Array.isArray(n)?hi(v(n)):null}function Te(n){let e=0;for(let i=0;i<n.length;i++)e=Math.imul(31,e)+n.charCodeAt(i)|0;return Math.abs(e)}function ft(n){let e=n.numericValue;return typeof e=="number"&&Number.isInteger(e)?O(e):e instanceof N&&e.isInteger()?O(e):null}function dt(n){return n==null?[]:typeof n=="string"?[n]:un(n)?dt(n.symbol):typeof n[Symbol.iterator]=="function"?Array.from(n).map(e=>typeof e=="string"?e:e.symbol):[]}function kn(n){return typeof n!="string"?!1:nr.some(e=>e.name===n)}function yo(n){let e=n.head;return typeof e!="string"?!1:["Equal","Less","LessEqual","Greater","GreaterEqual"].includes(e)}var qi=he(me(),1);var ct=he(me(),1);var Fa=he(me(),1);function bn(n){return n.string!==null||(n.symbolDefinition?.value?.string??null)!==null?!0:(n.functionDefinition??n.symbolDefinition?.value?.functionDefinition)?.iterator!==void 0}function tr(n){return n.string!==null||(n.symbolDefinition?.value?.string??null)!==null?!0:(n.functionDefinition??n.symbolDefinition?.value?.functionDefinition)?.at!==void 0}function ue(n){if(n.string!==null||(n.symbolDefinition?.value?.string??null)!==null)return!0;let e=n.functionDefinition??n.symbolDefinition?.value?.functionDefinition;return e?e.at!==void 0&&Number.isFinite(e.size?.(n)??1/0):!1}function*Y(n){let e=$f(n);if(!e){yield n;return}let i=n.engine.iterationLimit,t=0;for(;;){let{done:r,value:o}=e.next();if(r)return;if(t++>i){yield n.engine.error("iteration-limit-exceeded");return}yield o}}function $f(n){let e=n.functionDefinition??n.symbolDefinition?.value?.functionDefinition;if(e?.iterator)return e.iterator(n);let i=n.string??n.symbolDefinition?.value?.string??null;if(i!==null){if(i.length===0)return{next:()=>({done:!0,value:void 0})};let t=0;return{next:()=>({value:n.engine.string(i.charAt(t++)),done:t>i.length})}}}function ha(n,e){let i=n.functionDefinition??n.symbolDefinition?.value?.functionDefinition;if(i?.at)return i.at(n,e);let t=n.string;if(t)return e<1?n.engine.string(t.charAt(t.length+e)):n.engine.string(t.charAt(e-1))}function ie(n,e){if(!e||n.every(t=>!t.ops||t.head!==e))return n;let i=[];for(let t of n)!t.ops||t.head!==e?i.push(t):i.push(...ie(t.ops,e));return i.length,n.length,i.length===n.length?n:i}function te(n){if(n.every(i=>i.head!=="Sequence"&&i.head!=="Delimiter"))return n;let e=[];for(let i of n)if(!i.isValid)e.push(i);else if(i.head==="Delimiter")if(i.op1.head==="Sequence"){let t=i.op1.ops??[];t.length===0?e.push(i.engine.box(["Tuple"])):e.push(...te(t))}else e.push(i.op1);else i.head==="Sequence"?i.ops&&e.push(...i.ops):e.push(i);return e}function Be(n,e,i){if(e=re(e),e=te(e),!n.strict||e.length===i)return e;let t=[...e.slice(0,i)],r=Math.min(i,e.length);for(;r<i;)t.push(n.error("missing")),r+=1;for(;r<e.length;)t.push(n.error("unexpected-argument",e[r])),r+=1;return t}function Fe(n,e,i){let t=typeof i=="number"?i:i?.count,r=typeof i=="number"||(i?.flatten??!0);if(e=re(e),r&&(e=te(e)),typeof r=="string"&&ie(e,r),!n.strict){for(let a of e)ue(a)||a.infer(n.Numbers);return e}let o=!0;t??(t=e.length);let s=[];for(let a=0;a<=Math.max(t-1,e.length-1);a++){let l=e[a];if(a>t-1)o=!1,s.push(n.error("unexpected-argument",l));else if(l===void 0)o=!1,s.push(n.error("missing"));else if(l.symbol&&!n.lookupSymbol(l.symbol)&&!n.lookupFunction(l.symbol))s.push(l);else if(l.isNumber||l.domain?.isNumber)s.push(l);else if(!l.isValid)o=!1,s.push(l);else if(!l.domain)s.push(l);else if(ue(l)){for(let u of Y(l))if(!u.isNumber&&!u.domain?.isNumber){o=!1;break}o?s.push(l):s.push(n.domainError("Numbers",l.domain,l))}else l.symbolDefinition?.inferredDomain&&l.domain.isCompatible(n.Numbers,"contravariant")||l.functionDefinition?.signature.inferredSignature&&l.domain.isCompatible(n.Numbers,"contravariant")?s.push(l):(o=!1,s.push(n.domainError("Numbers",l.domain,l)))}if(o)for(let a of s)if(ue(a))for(let l of Y(a))l.infer(n.Numbers);else a.infer(n.Numbers);return s}function Le(n,e,i){return e==null?n.error("missing"):i===void 0?n.error("unexpected-argument",e):(e=e.canonical,e.head==="Sequence"&&(e=e.op1),!e.isValid||!e.domain||e.domain.isCompatible(i)?e:n.domainError(i,e.domain,e))}function ga(n,e){return e==null?n.error("missing"):(e=e.canonical,!e.isValid||e.isPure?e:n.error("expected-pure-expression",e))}function rr(n,e,i){if(e.length===i.length&&e.every((r,o)=>!r.domain||r.domain.isCompatible(i[o])))return e;let t=[];for(let r=0;r<=i.length-1;r++)t.push(Le(n,e[r],i[r]));for(let r=i.length;r<=e.length-1;r++)t.push(n.error("unexpected-argument",e[r]));return t}function xa(n,e,i,t,r,o,s){if(!n.strict)return null;let a=[],l=!0,u=0;for(let f of r){let d=e[u++];if(!d){a.push(n.error("missing")),l=!1;continue}if(An(i,r.length,u-1)){a.push(d);continue}if(!d.isValid){a.push(d),l=!1;continue}if(!d.domain){a.push(d);continue}if(t&&ue(d)){a.push(d);continue}if(d.symbolDefinition?.inferredDomain&&d.domain.isCompatible(f,"contravariant")){a.push(d);continue}if(d.functionDefinition?.signature.inferredSignature&&d.domain.isCompatible(f,"contravariant")){a.push(d);continue}if(!d.domain.isCompatible(f)){a.push(n.domainError(f,d.domain,d)),l=!1;continue}a.push(d)}for(let f of o){let d=e[u];if(!d)break;if(An(i,r.length,u)){a.push(d);continue}if(!d.isValid){a.push(d),l=!1,u+=1;continue}if(!d.domain){a.push(d),u+=1;continue}if(t&&ue(d)){a.push(d);continue}if(d.symbolDefinition?.inferredDomain&&d.domain.isCompatible(f,"contravariant")){a.push(d);continue}if(!d.domain.isCompatible(f)){a.push(n.domainError(f,d.domain,d)),l=!1,u+=1;continue}a.push(d),u+=1}if(s)for(let f of e.slice(u)){if(u+=1,An(i,r.length,u-1)){a.push(f);continue}if(!f.isValid){a.push(f),l=!1;continue}if(!f.domain){a.push(f);continue}if(t&&ue(f)){a.push(f);continue}if(f.symbolDefinition?.inferredDomain&&f.domain.isCompatible(s,"contravariant")){a.push(f);continue}if(!f.domain.isCompatible(s)){a.push(n.domainError(s,f.domain,f)),l=!1;continue}a.push(f)}if(u<e.length)for(let f of e.slice(u))a.push(n.error("unexpected-argument",f)),l=!1;if(!l)return a;u=0;for(let f of r)An(i,r.length,u)||(!t||!ue(e[u]))&&e[u].infer(f),u+=1;for(let f of o)(!t||!ue(e[u]))&&e[u]?.infer(f),u+=1;if(s)for(let f of e.slice(u))An(i,r.length,u)||(!t||!ue(f))&&f.infer(s),u+=1;return null}function or(n){if(!n)return;let e=n.engine,i=[],t=n.ops?.length==3,r=n.ops[0].ops[0].ops,o=r?.length??0,s=null;if(!(t&&(s=n.ops[2].ops[0].ops,r?.length!=s?.length))){for(let a=0;a<o;a++){let l,u,f=null,d=null;u=r[a].canonical,r&&r[a].head==="Equal"&&(u=r[a].op1.canonical,f=r[a].op2.canonical),s&&(d=s[a].canonical),d&&f?l=Yn(e.tuple([u,f,d])):d?l=Yn(e.tuple([u,e.One,d])):f?l=Yn(e.tuple([u,f])):l=Yn(u),l&&i.push(l)}return i}}function Yn(n){if(!n)return;let e=n.engine,i=null,t=null,r=null;return n.head!=="Tuple"&&n.head!=="Triple"&&n.head!=="Pair"&&n.head!=="Single"?i=n:(i=n.ops[0]??null,t=n.ops[1]?.canonical??null,r=n.ops[2]?.canonical??null),i.head==="Hold"&&(i=i.op1),i.symbol&&(e.declare(i.symbol,{domain:"Integers"}),i.bind()),t&&t.isFinite&&(t=Le(e,t,"Integers")),r&&r.isFinite&&(r=Le(e,r,"Integers")),t&&r?e.tuple([i,t,r]):r?e.tuple([i,e.One,r]):t?e.tuple([i,t]):i}function wn(n){let e=1,i=e+jt,t,r=!0;if(n&&(n.head==="Tuple"||n.head==="Triple"||n.head==="Pair"||n.head==="Single")){if(t=(n.op1.head==="Hold"?n.op1.op1.symbol:n.op1.symbol)??"Nothing",e=U(n.op2)??1,Number.isFinite(e)||(r=!1),n.op3.symbol==="Nothing"||n.op3.isInfinity)r=!1;else{let o=U(n.op3);o===null?r=!1:(i=o,Number.isFinite(i)||(r=!1))}!r&&Number.isFinite(e)&&(i=e+jt)}else n&&(t=(n.head==="Hold"?n.op1.symbol:n.symbol)??"Nothing",e=1,i=e+jt);return[t,e,i,r]}function Ri(n,e){return n.flatMap(i=>e.map(t=>[i,t]))}function yn(n,e){return Array.from({length:e-n+1},(i,t)=>n+t)}var Uf={Add:["+",11],Negate:["-",14],Subtract:["-",11],Multiply:["*",12],Divide:["/",13],Equal:["===",8],NotEqual:["!==",8],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["&&",4],Or:["||",3],Not:["!",14]},Gf={Abs:"Math.abs",Add:(n,e)=>n.length===1?e(n[0]):`(${n.map(i=>e(i)).join(" + ")})`,Arccos:"Math.acos",Arcosh:"Math.acosh",Arsin:"Math.asin",Arsinh:"Math.asinh",Arctan:"Math.atan",Artanh:"Math.atanh",Ceiling:"Math.ceil",Chop:"_SYS.chop",Cos:"Math.cos",Cosh:"Math.cosh",Exp:"Math.exp",Floor:"Math.floor",Gamma:"_SYS.gamma",GCD:"_SYS.gcd",Integrate:(n,e,i)=>Zf(n,e,i),LCM:"_SYS.lcm",Limit:(n,e)=>`_SYS.limit(${e(n[0])}, ${e(n[1])})`,Ln:"Math.log",List:(n,e)=>`[${n.map(i=>e(i)).join(", ")}]`,Log:(n,e)=>n.length===1?`Math.log(${e(n[0])})`:`(Math.log(${e(n[0])}) / Math.log(${e(n[1])}))`,LogGamma:"_SYS.lngamma",Lb:"Math.log2",Max:"Math.max",Min:"Math.min",Power:(n,e)=>{let i=n[0];if(i===null)throw new Error("Power: no argument");let t=b(n[1]);return t===.5?`Math.sqrt(${e(i)})`:t===1/3?`Math.cbrt(${e(i)})`:t===1?e(i):t===-1?`1 / (${e(i)})`:t===-.5?`1 / Math.sqrt(${e(i)})`:`Math.pow(${e(i)}, ${e(n[1])})`},Range:(n,e)=>{if(n.length===0)return"[]";if(n.length===1)return`Array.from({length: ${e(n[0])}}, (_, i) => i)`;let i=e(n[0]),t=e(n[1]),r=n[2]?e(n[2]):"1";if(i===null)throw new Error("Range: no start");if(t===null&&(t=i,i="1"),r==="0")throw new Error("Range: step cannot be zero");if(parseFloat(r)===1){let o=parseFloat(t),s=parseFloat(i);return o!==null&&s!==null?o-s<50?`[${Array.from({length:o-s+1},(a,l)=>s+l).join(", ")}]`:`Array.from({length: ${o-s+1}
|
|
1
|
+
/** Compute Engine 0.25.1 */
|
|
2
|
+
var Dl=Object.create;var As=Object.defineProperty;var Il=Object.getOwnPropertyDescriptor;var kl=Object.getOwnPropertyNames;var Al=Object.getPrototypeOf,wl=Object.prototype.hasOwnProperty;var Cl=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var Ml=(n,e,i,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of kl(e))!wl.call(n,r)&&r!==i&&As(n,r,{get:()=>e[r],enumerable:!(t=Il(e,r))||t.enumerable});return n};var he=(n,e,i)=>(i=n!=null?Dl(Al(n)):{},Ml(e||!n||!n.__esModule?As(i,"default",{value:n,enumerable:!0}):i,n));var fe=Cl((Qr,ws)=>{(function(n){"use strict";var e=Math.cosh||function(u){return Math.abs(u)<1e-9?1-u:(Math.exp(u)+Math.exp(-u))*.5},i=Math.sinh||function(u){return Math.abs(u)<1e-9?u:(Math.exp(u)-Math.exp(-u))*.5},t=function(u){var f=Math.PI/4;if(-f>u||u>f)return Math.cos(u)-1;var d=u*u;return d*(d*(d*(d*(d*(d*(d*(d/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-1/2)},r=function(u,f){var d=Math.abs(u),c=Math.abs(f);return d<3e3&&c<3e3?Math.sqrt(d*d+c*c):(d<c?(d=c,c=u/f):c=f/u,d*Math.sqrt(1+c*c))},o=function(){throw SyntaxError("Invalid Param")};function s(u,f){var d=Math.abs(u),c=Math.abs(f);return u===0?Math.log(c):f===0?Math.log(d):d<3e3&&c<3e3?Math.log(u*u+f*f)*.5:(u=u/2,f=f/2,.5*Math.log(u*u+f*f)+Math.LN2)}var a=function(u,f){var d={re:0,im:0};if(u==null)d.re=d.im=0;else if(f!==void 0)d.re=u,d.im=f;else switch(typeof u){case"object":if("im"in u&&"re"in u)d.re=u.re,d.im=u.im;else if("abs"in u&&"arg"in u){if(!Number.isFinite(u.abs)&&Number.isFinite(u.arg))return l.INFINITY;d.re=u.abs*Math.cos(u.arg),d.im=u.abs*Math.sin(u.arg)}else if("r"in u&&"phi"in u){if(!Number.isFinite(u.r)&&Number.isFinite(u.phi))return l.INFINITY;d.re=u.r*Math.cos(u.phi),d.im=u.r*Math.sin(u.phi)}else u.length===2?(d.re=u[0],d.im=u[1]):o();break;case"string":d.im=d.re=0;var c=u.match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),m=1,g=0;c===null&&o();for(var h=0;h<c.length;h++){var E=c[h];E===" "||E===" "||E===`
|
|
3
|
+
`||(E==="+"?m++:E==="-"?g++:E==="i"||E==="I"?(m+g===0&&o(),c[h+1]!==" "&&!isNaN(c[h+1])?(d.im+=parseFloat((g%2?"-":"")+c[h+1]),h++):d.im+=parseFloat((g%2?"-":"")+"1"),m=g=0):((m+g===0||isNaN(E))&&o(),c[h+1]==="i"||c[h+1]==="I"?(d.im+=parseFloat((g%2?"-":"")+E),h++):d.re+=parseFloat((g%2?"-":"")+E),m=g=0))}m+g>0&&o();break;case"number":d.im=0,d.re=u;break;default:o()}return isNaN(d.re)||isNaN(d.im),d};function l(u,f){if(!(this instanceof l))return new l(u,f);var d=a(u,f);this.re=d.re,this.im=d.im}l.prototype={re:0,im:0,sign:function(){var u=this.abs();return new l(this.re/u,this.im/u)},add:function(u,f){var d=new l(u,f);return this.isInfinite()&&d.isInfinite()?l.NAN:this.isInfinite()||d.isInfinite()?l.INFINITY:new l(this.re+d.re,this.im+d.im)},sub:function(u,f){var d=new l(u,f);return this.isInfinite()&&d.isInfinite()?l.NAN:this.isInfinite()||d.isInfinite()?l.INFINITY:new l(this.re-d.re,this.im-d.im)},mul:function(u,f){var d=new l(u,f);return this.isInfinite()&&d.isZero()||this.isZero()&&d.isInfinite()?l.NAN:this.isInfinite()||d.isInfinite()?l.INFINITY:d.im===0&&this.im===0?new l(this.re*d.re,0):new l(this.re*d.re-this.im*d.im,this.re*d.im+this.im*d.re)},div:function(u,f){var d=new l(u,f);if(this.isZero()&&d.isZero()||this.isInfinite()&&d.isInfinite())return l.NAN;if(this.isInfinite()||d.isZero())return l.INFINITY;if(this.isZero()||d.isInfinite())return l.ZERO;u=this.re,f=this.im;var c=d.re,m=d.im,g,h;return m===0?new l(u/c,f/c):Math.abs(c)<Math.abs(m)?(h=c/m,g=c*h+m,new l((u*h+f)/g,(f*h-u)/g)):(h=m/c,g=m*h+c,new l((u+f*h)/g,(f-u*h)/g))},pow:function(u,f){var d=new l(u,f);if(u=this.re,f=this.im,d.isZero())return l.ONE;if(d.im===0){if(f===0&&u>0)return new l(Math.pow(u,d.re),0);if(u===0)switch((d.re%4+4)%4){case 0:return new l(Math.pow(f,d.re),0);case 1:return new l(0,Math.pow(f,d.re));case 2:return new l(-Math.pow(f,d.re),0);case 3:return new l(0,-Math.pow(f,d.re))}}if(u===0&&f===0&&d.re>0&&d.im>=0)return l.ZERO;var c=Math.atan2(f,u),m=s(u,f);return u=Math.exp(d.re*m-d.im*c),f=d.im*m+d.re*c,new l(u*Math.cos(f),u*Math.sin(f))},sqrt:function(){var u=this.re,f=this.im,d=this.abs(),c,m;if(u>=0){if(f===0)return new l(Math.sqrt(u),0);c=.5*Math.sqrt(2*(d+u))}else c=Math.abs(f)/Math.sqrt(2*(d-u));return u<=0?m=.5*Math.sqrt(2*(d-u)):m=Math.abs(f)/Math.sqrt(2*(d+u)),new l(c,f<0?-m:m)},exp:function(){var u=Math.exp(this.re);return this.im,new l(u*Math.cos(this.im),u*Math.sin(this.im))},expm1:function(){var u=this.re,f=this.im;return new l(Math.expm1(u)*Math.cos(f)+t(f),Math.exp(u)*Math.sin(f))},log:function(){var u=this.re,f=this.im;return f===0&&u>0,new l(s(u,f),Math.atan2(f,u))},abs:function(){return r(this.re,this.im)},arg:function(){return Math.atan2(this.im,this.re)},sin:function(){var u=this.re,f=this.im;return new l(Math.sin(u)*e(f),Math.cos(u)*i(f))},cos:function(){var u=this.re,f=this.im;return new l(Math.cos(u)*e(f),-Math.sin(u)*i(f))},tan:function(){var u=2*this.re,f=2*this.im,d=Math.cos(u)+e(f);return new l(Math.sin(u)/d,i(f)/d)},cot:function(){var u=2*this.re,f=2*this.im,d=Math.cos(u)-e(f);return new l(-Math.sin(u)/d,i(f)/d)},sec:function(){var u=this.re,f=this.im,d=.5*e(2*f)+.5*Math.cos(2*u);return new l(Math.cos(u)*e(f)/d,Math.sin(u)*i(f)/d)},csc:function(){var u=this.re,f=this.im,d=.5*e(2*f)-.5*Math.cos(2*u);return new l(Math.sin(u)*e(f)/d,-Math.cos(u)*i(f)/d)},asin:function(){var u=this.re,f=this.im,d=new l(f*f-u*u+1,-2*u*f).sqrt(),c=new l(d.re-f,d.im+u).log();return new l(c.im,-c.re)},acos:function(){var u=this.re,f=this.im,d=new l(f*f-u*u+1,-2*u*f).sqrt(),c=new l(d.re-f,d.im+u).log();return new l(Math.PI/2-c.im,c.re)},atan:function(){var u=this.re,f=this.im;if(u===0){if(f===1)return new l(0,1/0);if(f===-1)return new l(0,-1/0)}var d=u*u+(1-f)*(1-f),c=new l((1-f*f-u*u)/d,-2*u/d).log();return new l(-.5*c.im,.5*c.re)},acot:function(){var u=this.re,f=this.im;if(f===0)return new l(Math.atan2(1,u),0);var d=u*u+f*f;return d!==0?new l(u/d,-f/d).atan():new l(u!==0?u/0:0,f!==0?-f/0:0).atan()},asec:function(){var u=this.re,f=this.im;if(u===0&&f===0)return new l(0,1/0);var d=u*u+f*f;return d!==0?new l(u/d,-f/d).acos():new l(u!==0?u/0:0,f!==0?-f/0:0).acos()},acsc:function(){var u=this.re,f=this.im;if(u===0&&f===0)return new l(Math.PI/2,1/0);var d=u*u+f*f;return d!==0?new l(u/d,-f/d).asin():new l(u!==0?u/0:0,f!==0?-f/0:0).asin()},sinh:function(){var u=this.re,f=this.im;return new l(i(u)*Math.cos(f),e(u)*Math.sin(f))},cosh:function(){var u=this.re,f=this.im;return new l(e(u)*Math.cos(f),i(u)*Math.sin(f))},tanh:function(){var u=2*this.re,f=2*this.im,d=e(u)+Math.cos(f);return new l(i(u)/d,Math.sin(f)/d)},coth:function(){var u=2*this.re,f=2*this.im,d=e(u)-Math.cos(f);return new l(i(u)/d,-Math.sin(f)/d)},csch:function(){var u=this.re,f=this.im,d=Math.cos(2*f)-e(2*u);return new l(-2*i(u)*Math.cos(f)/d,2*e(u)*Math.sin(f)/d)},sech:function(){var u=this.re,f=this.im,d=Math.cos(2*f)+e(2*u);return new l(2*e(u)*Math.cos(f)/d,-2*i(u)*Math.sin(f)/d)},asinh:function(){var u=this.im;this.im=-this.re,this.re=u;var f=this.asin();return this.re=-this.im,this.im=u,u=f.re,f.re=-f.im,f.im=u,f},acosh:function(){var u=this.acos();if(u.im<=0){var f=u.re;u.re=-u.im,u.im=f}else{var f=u.im;u.im=-u.re,u.re=f}return u},atanh:function(){var u=this.re,f=this.im,d=u>1&&f===0,c=1-u,m=1+u,g=c*c+f*f,h=g!==0?new l((m*c-f*f)/g,(f*c+m*f)/g):new l(u!==-1?u/0:0,f!==0?f/0:0),E=h.re;return h.re=s(h.re,h.im)/2,h.im=Math.atan2(h.im,E)/2,d&&(h.im=-h.im),h},acoth:function(){var u=this.re,f=this.im;if(u===0&&f===0)return new l(0,Math.PI/2);var d=u*u+f*f;return d!==0?new l(u/d,-f/d).atanh():new l(u!==0?u/0:0,f!==0?-f/0:0).atanh()},acsch:function(){var u=this.re,f=this.im;if(f===0)return new l(u!==0?Math.log(u+Math.sqrt(u*u+1)):1/0,0);var d=u*u+f*f;return d!==0?new l(u/d,-f/d).asinh():new l(u!==0?u/0:0,f!==0?-f/0:0).asinh()},asech:function(){var u=this.re,f=this.im;if(this.isZero())return l.INFINITY;var d=u*u+f*f;return d!==0?new l(u/d,-f/d).acosh():new l(u!==0?u/0:0,f!==0?-f/0:0).acosh()},inverse:function(){if(this.isZero())return l.INFINITY;if(this.isInfinite())return l.ZERO;var u=this.re,f=this.im,d=u*u+f*f;return new l(u/d,-f/d)},conjugate:function(){return new l(this.re,-this.im)},neg:function(){return new l(-this.re,-this.im)},ceil:function(u){return u=Math.pow(10,u||0),new l(Math.ceil(this.re*u)/u,Math.ceil(this.im*u)/u)},floor:function(u){return u=Math.pow(10,u||0),new l(Math.floor(this.re*u)/u,Math.floor(this.im*u)/u)},round:function(u){return u=Math.pow(10,u||0),new l(Math.round(this.re*u)/u,Math.round(this.im*u)/u)},equals:function(u,f){var d=new l(u,f);return Math.abs(d.re-this.re)<=l.EPSILON&&Math.abs(d.im-this.im)<=l.EPSILON},clone:function(){return new l(this.re,this.im)},toString:function(){var u=this.re,f=this.im,d="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(u)<l.EPSILON&&(u=0),Math.abs(f)<l.EPSILON&&(f=0),f===0?d+u:(u!==0?(d+=u,d+=" ",f<0?(f=-f,d+="-"):d+="+",d+=" "):f<0&&(f=-f,d+="-"),f!==1&&(d+=f),d+"i"))},toVector:function(){return[this.re,this.im]},valueOf:function(){return this.im===0?this.re:null},isNaN:function(){return isNaN(this.re)||isNaN(this.im)},isZero:function(){return this.im===0&&this.re===0},isFinite:function(){return isFinite(this.re)&&isFinite(this.im)},isInfinite:function(){return!(this.isNaN()||this.isFinite())}},l.ZERO=new l(0,0),l.ONE=new l(1,0),l.I=new l(0,1),l.PI=new l(Math.PI,0),l.E=new l(Math.E,0),l.INFINITY=new l(1/0,1/0),l.NAN=new l(NaN,NaN),l.EPSILON=1e-15,typeof define=="function"&&define.amd?define([],function(){return l}):typeof Qr=="object"?(Object.defineProperty(l,"__esModule",{value:!0}),l.default=l,l.Complex=l,ws.exports=l):n.Complex=l})(Qr)});var os=he(fe(),1);var Ti=9e15,Wn=1e9,Xr="0123456789abcdef",Ut="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Gt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Kr={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Ti,maxE:Ti,crypto:!1},Rs,Dn,A=!0,Zt="[DecimalError] ",Jn=Zt+"Invalid argument: ",Ps=Zt+"Precision limit exceeded",Fs=Zt+"crypto unavailable",Ls="[object Decimal]",we=Math.floor,Ee=Math.pow,Ol=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Rl=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Pl=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,qs=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,on=1e7,I=7,Fl=9007199254740991,Ll=Ut.length-1,eo=Gt.length-1,y={toStringTag:Ls};y.absoluteValue=y.abs=function(){var n=new this.constructor(this);return n.s<0&&(n.s=1),D(n)};y.ceil=function(){return D(new this.constructor(this),this.e+1,2)};y.clampedTo=y.clamp=function(n,e){var i,t=this,r=t.constructor;if(n=new r(n),e=new r(e),!n.s||!e.s)return new r(NaN);if(n.gt(e))throw Error(Jn+e);return i=t.cmp(n),i<0?n:t.cmp(e)>0?e:new r(t)};y.comparedTo=y.cmp=function(n){var e,i,t,r,o=this,s=o.d,a=(n=new o.constructor(n)).d,l=o.s,u=n.s;if(!s||!a)return!l||!u?NaN:l!==u?l:s===a?0:!s^l<0?1:-1;if(!s[0]||!a[0])return s[0]?l:a[0]?-u:0;if(l!==u)return l;if(o.e!==n.e)return o.e>n.e^l<0?1:-1;for(t=s.length,r=a.length,e=0,i=t<r?t:r;e<i;++e)if(s[e]!==a[e])return s[e]>a[e]^l<0?1:-1;return t===r?0:t>r^l<0?1:-1};y.cosine=y.cos=function(){var n,e,i=this,t=i.constructor;return i.d?i.d[0]?(n=t.precision,e=t.rounding,t.precision=n+Math.max(i.e,i.sd())+I,t.rounding=1,i=ql(t,zs(t,i)),t.precision=n,t.rounding=e,D(Dn==2||Dn==3?i.neg():i,n,e,!0)):new t(1):new t(NaN)};y.cubeRoot=y.cbrt=function(){var n,e,i,t,r,o,s,a,l,u,f=this,d=f.constructor;if(!f.isFinite()||f.isZero())return new d(f);for(A=!1,o=f.s*Ee(f.s*f,1/3),!o||Math.abs(o)==1/0?(i=Ie(f.d),n=f.e,(o=(n-i.length+1)%3)&&(i+=o==1||o==-2?"0":"00"),o=Ee(i,1/3),n=we((n+1)/3)-(n%3==(n<0?-1:2)),o==1/0?i="5e"+n:(i=o.toExponential(),i=i.slice(0,i.indexOf("e")+1)+n),t=new d(i),t.s=f.s):t=new d(o.toString()),s=(n=d.precision)+3;;)if(a=t,l=a.times(a).times(a),u=l.plus(f),t=ee(u.plus(f).times(a),u.plus(l),s+2,1),Ie(a.d).slice(0,s)===(i=Ie(t.d)).slice(0,s))if(i=i.slice(s-3,s+1),i=="9999"||!r&&i=="4999"){if(!r&&(D(a,n+1,0),a.times(a).times(a).eq(f))){t=a;break}s+=4,r=1}else{(!+i||!+i.slice(1)&&i.charAt(0)=="5")&&(D(t,n+1,1),e=!t.times(t).times(t).eq(f));break}return A=!0,D(t,n,d.rounding,e)};y.decimalPlaces=y.dp=function(){var n,e=this.d,i=NaN;if(e){if(n=e.length-1,i=(n-we(this.e/I))*I,n=e[n],n)for(;n%10==0;n/=10)i--;i<0&&(i=0)}return i};y.dividedBy=y.div=function(n){return ee(this,new this.constructor(n))};y.dividedToIntegerBy=y.divToInt=function(n){var e=this,i=e.constructor;return D(ee(e,new i(n),0,1,1),i.precision,i.rounding)};y.equals=y.eq=function(n){return this.cmp(n)===0};y.floor=function(){return D(new this.constructor(this),this.e+1,3)};y.greaterThan=y.gt=function(n){return this.cmp(n)>0};y.greaterThanOrEqualTo=y.gte=function(n){var e=this.cmp(n);return e==1||e===0};y.hyperbolicCosine=y.cosh=function(){var n,e,i,t,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;i=s.precision,t=s.rounding,s.precision=i+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(n=Math.ceil(r/3),e=(1/Ht(4,n)).toString()):(n=16,e="2.3283064365386962890625e-10"),o=Di(s,1,o.times(e),new s(1),!0);for(var l,u=n,f=new s(8);u--;)l=o.times(o),o=a.minus(l.times(f.minus(l.times(f))));return D(o,s.precision=i,s.rounding=t,!0)};y.hyperbolicSine=y.sinh=function(){var n,e,i,t,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,i=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,t=r.d.length,t<3)r=Di(o,2,r,r,!0);else{n=1.4*Math.sqrt(t),n=n>16?16:n|0,r=r.times(1/Ht(5,n)),r=Di(o,2,r,r,!0);for(var s,a=new o(5),l=new o(16),u=new o(20);n--;)s=r.times(r),r=r.times(a.plus(s.times(l.times(s).plus(u))))}return o.precision=e,o.rounding=i,D(r,e,i,!0)};y.hyperbolicTangent=y.tanh=function(){var n,e,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(n=t.precision,e=t.rounding,t.precision=n+7,t.rounding=1,ee(i.sinh(),i.cosh(),t.precision=n,t.rounding=e)):new t(i.s)};y.inverseCosine=y.acos=function(){var n,e=this,i=e.constructor,t=e.abs().cmp(1),r=i.precision,o=i.rounding;return t!==-1?t===0?e.isNeg()?rn(i,r,o):new i(0):new i(NaN):e.isZero()?rn(i,r+4,o).times(.5):(i.precision=r+6,i.rounding=1,e=e.asin(),n=rn(i,r+4,o).times(.5),i.precision=r,i.rounding=o,n.minus(e))};y.inverseHyperbolicCosine=y.acosh=function(){var n,e,i=this,t=i.constructor;return i.lte(1)?new t(i.eq(1)?0:NaN):i.isFinite()?(n=t.precision,e=t.rounding,t.precision=n+Math.max(Math.abs(i.e),i.sd())+4,t.rounding=1,A=!1,i=i.times(i).minus(1).sqrt().plus(i),A=!0,t.precision=n,t.rounding=e,i.ln()):new t(i)};y.inverseHyperbolicSine=y.asinh=function(){var n,e,i=this,t=i.constructor;return!i.isFinite()||i.isZero()?new t(i):(n=t.precision,e=t.rounding,t.precision=n+2*Math.max(Math.abs(i.e),i.sd())+6,t.rounding=1,A=!1,i=i.times(i).plus(1).sqrt().plus(i),A=!0,t.precision=n,t.rounding=e,i.ln())};y.inverseHyperbolicTangent=y.atanh=function(){var n,e,i,t,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(n=o.precision,e=o.rounding,t=r.sd(),Math.max(t,n)<2*-r.e-1?D(new o(r),n,e,!0):(o.precision=i=t-r.e,r=ee(r.plus(1),new o(1).minus(r),i+n,1),o.precision=n+4,o.rounding=1,r=r.ln(),o.precision=n,o.rounding=e,r.times(.5))):new o(NaN)};y.inverseSine=y.asin=function(){var n,e,i,t,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),i=o.precision,t=o.rounding,e!==-1?e===0?(n=rn(o,i+4,t).times(.5),n.s=r.s,n):new o(NaN):(o.precision=i+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=i,o.rounding=t,r.times(2)))};y.inverseTangent=y.atan=function(){var n,e,i,t,r,o,s,a,l,u=this,f=u.constructor,d=f.precision,c=f.rounding;if(u.isFinite()){if(u.isZero())return new f(u);if(u.abs().eq(1)&&d+4<=eo)return s=rn(f,d+4,c).times(.25),s.s=u.s,s}else{if(!u.s)return new f(NaN);if(d+4<=eo)return s=rn(f,d+4,c).times(.5),s.s=u.s,s}for(f.precision=a=d+10,f.rounding=1,i=Math.min(28,a/I+2|0),n=i;n;--n)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(A=!1,e=Math.ceil(a/I),t=1,l=u.times(u),s=new f(u),r=u;n!==-1;)if(r=r.times(l),o=s.minus(r.div(t+=2)),r=r.times(l),s=o.plus(r.div(t+=2)),s.d[e]!==void 0)for(n=e;s.d[n]===o.d[n]&&n--;);return i&&(s=s.times(2<<i-1)),A=!0,D(s,f.precision=d,f.rounding=c,!0)};y.isFinite=function(){return!!this.d};y.isInteger=y.isInt=function(){return!!this.d&&we(this.e/I)>this.d.length-2};y.isNaN=function(){return!this.s};y.isNegative=y.isNeg=function(){return this.s<0};y.isPositive=y.isPos=function(){return this.s>0};y.isZero=function(){return!!this.d&&this.d[0]===0};y.lessThan=y.lt=function(n){return this.cmp(n)<0};y.lessThanOrEqualTo=y.lte=function(n){return this.cmp(n)<1};y.logarithm=y.log=function(n){var e,i,t,r,o,s,a,l,u=this,f=u.constructor,d=f.precision,c=f.rounding,m=5;if(n==null)n=new f(10),e=!0;else{if(n=new f(n),i=n.d,n.s<0||!i||!i[0]||n.eq(1))return new f(NaN);e=n.eq(10)}if(i=u.d,u.s<0||!i||!i[0]||u.eq(1))return new f(i&&!i[0]?-1/0:u.s!=1?NaN:i?0:1/0);if(e)if(i.length>1)o=!0;else{for(r=i[0];r%10===0;)r/=10;o=r!==1}if(A=!1,a=d+m,s=Hn(u,a),t=e?zt(f,a+10):Hn(n,a),l=ee(s,t,a,1),it(l.d,r=d,c))do if(a+=10,s=Hn(u,a),t=e?zt(f,a+10):Hn(n,a),l=ee(s,t,a,1),!o){+Ie(l.d).slice(r+1,r+15)+1==1e14&&(l=D(l,d+1,0));break}while(it(l.d,r+=10,c));return A=!0,D(l,d,c)};y.minus=y.sub=function(n){var e,i,t,r,o,s,a,l,u,f,d,c,m=this,g=m.constructor;if(n=new g(n),!m.d||!n.d)return!m.s||!n.s?n=new g(NaN):m.d?n.s=-n.s:n=new g(n.d||m.s!==n.s?m:NaN),n;if(m.s!=n.s)return n.s=-n.s,m.plus(n);if(u=m.d,c=n.d,a=g.precision,l=g.rounding,!u[0]||!c[0]){if(c[0])n.s=-n.s;else if(u[0])n=new g(m);else return new g(l===3?-0:0);return A?D(n,a,l):n}if(i=we(n.e/I),f=we(m.e/I),u=u.slice(),o=f-i,o){for(d=o<0,d?(e=u,o=-o,s=c.length):(e=c,i=f,s=u.length),t=Math.max(Math.ceil(a/I),s)+2,o>t&&(o=t,e.length=1),e.reverse(),t=o;t--;)e.push(0);e.reverse()}else{for(t=u.length,s=c.length,d=t<s,d&&(s=t),t=0;t<s;t++)if(u[t]!=c[t]){d=u[t]<c[t];break}o=0}for(d&&(e=u,u=c,c=e,n.s=-n.s),s=u.length,t=c.length-s;t>0;--t)u[s++]=0;for(t=c.length;t>o;){if(u[--t]<c[t]){for(r=t;r&&u[--r]===0;)u[r]=on-1;--u[r],u[t]+=on}u[t]-=c[t]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--i;return u[0]?(n.d=u,n.e=jt(u,i),A?D(n,a,l):n):new g(l===3?-0:0)};y.modulo=y.mod=function(n){var e,i=this,t=i.constructor;return n=new t(n),!i.d||!n.s||n.d&&!n.d[0]?new t(NaN):!n.d||i.d&&!i.d[0]?D(new t(i),t.precision,t.rounding):(A=!1,t.modulo==9?(e=ee(i,n.abs(),0,3,1),e.s*=n.s):e=ee(i,n,0,t.modulo,1),e=e.times(n),A=!0,i.minus(e))};y.naturalExponential=y.exp=function(){return no(this)};y.naturalLogarithm=y.ln=function(){return Hn(this)};y.negated=y.neg=function(){var n=new this.constructor(this);return n.s=-n.s,D(n)};y.plus=y.add=function(n){var e,i,t,r,o,s,a,l,u,f,d=this,c=d.constructor;if(n=new c(n),!d.d||!n.d)return!d.s||!n.s?n=new c(NaN):d.d||(n=new c(n.d||d.s===n.s?d:NaN)),n;if(d.s!=n.s)return n.s=-n.s,d.minus(n);if(u=d.d,f=n.d,a=c.precision,l=c.rounding,!u[0]||!f[0])return f[0]||(n=new c(d)),A?D(n,a,l):n;if(o=we(d.e/I),t=we(n.e/I),u=u.slice(),r=o-t,r){for(r<0?(i=u,r=-r,s=f.length):(i=f,t=o,s=u.length),o=Math.ceil(a/I),s=o>s?o+1:s+1,r>s&&(r=s,i.length=1),i.reverse();r--;)i.push(0);i.reverse()}for(s=u.length,r=f.length,s-r<0&&(r=s,i=f,f=u,u=i),e=0;r;)e=(u[--r]=u[r]+f[r]+e)/on|0,u[r]%=on;for(e&&(u.unshift(e),++t),s=u.length;u[--s]==0;)u.pop();return n.d=u,n.e=jt(u,t),A?D(n,a,l):n};y.precision=y.sd=function(n){var e,i=this;if(n!==void 0&&n!==!!n&&n!==1&&n!==0)throw Error(Jn+n);return i.d?(e=Vs(i.d),n&&i.e+1>e&&(e=i.e+1)):e=NaN,e};y.round=function(){var n=this,e=n.constructor;return D(new e(n),n.e+1,e.rounding)};y.sine=y.sin=function(){var n,e,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(n=t.precision,e=t.rounding,t.precision=n+Math.max(i.e,i.sd())+I,t.rounding=1,i=$l(t,zs(t,i)),t.precision=n,t.rounding=e,D(Dn>2?i.neg():i,n,e,!0)):new t(NaN)};y.squareRoot=y.sqrt=function(){var n,e,i,t,r,o,s=this,a=s.d,l=s.e,u=s.s,f=s.constructor;if(u!==1||!a||!a[0])return new f(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(A=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=Ie(a),(e.length+l)%2==0&&(e+="0"),u=Math.sqrt(e),l=we((l+1)/2)-(l<0||l%2),u==1/0?e="5e"+l:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+l),t=new f(e)):t=new f(u.toString()),i=(l=f.precision)+3;;)if(o=t,t=o.plus(ee(s,o,i+2,1)).times(.5),Ie(o.d).slice(0,i)===(e=Ie(t.d)).slice(0,i))if(e=e.slice(i-3,i+1),e=="9999"||!r&&e=="4999"){if(!r&&(D(o,l+1,0),o.times(o).eq(s))){t=o;break}i+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(D(t,l+1,1),n=!t.times(t).eq(s));break}return A=!0,D(t,l,f.rounding,n)};y.tangent=y.tan=function(){var n,e,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(n=t.precision,e=t.rounding,t.precision=n+10,t.rounding=1,i=i.sin(),i.s=1,i=ee(i,new t(1).minus(i.times(i)).sqrt(),n+10,0),t.precision=n,t.rounding=e,D(Dn==2||Dn==4?i.neg():i,n,e,!0)):new t(NaN)};y.times=y.mul=function(n){var e,i,t,r,o,s,a,l,u,f=this,d=f.constructor,c=f.d,m=(n=new d(n)).d;if(n.s*=f.s,!c||!c[0]||!m||!m[0])return new d(!n.s||c&&!c[0]&&!m||m&&!m[0]&&!c?NaN:!c||!m?n.s/0:n.s*0);for(i=we(f.e/I)+we(n.e/I),l=c.length,u=m.length,l<u&&(o=c,c=m,m=o,s=l,l=u,u=s),o=[],s=l+u,t=s;t--;)o.push(0);for(t=u;--t>=0;){for(e=0,r=l+t;r>t;)a=o[r]+m[t]*c[r-t-1]+e,o[r--]=a%on|0,e=a/on|0;o[r]=(o[r]+e)%on|0}for(;!o[--s];)o.pop();return e?++i:o.shift(),n.d=o,n.e=jt(o,i),A?D(n,d.precision,d.rounding):n};y.toBinary=function(n,e){return to(this,2,n,e)};y.toDecimalPlaces=y.toDP=function(n,e){var i=this,t=i.constructor;return i=new t(i),n===void 0?i:(Fe(n,0,Wn),e===void 0?e=t.rounding:Fe(e,0,8),D(i,n+i.e+1,e))};y.toExponential=function(n,e){var i,t=this,r=t.constructor;return n===void 0?i=hn(t,!0):(Fe(n,0,Wn),e===void 0?e=r.rounding:Fe(e,0,8),t=D(new r(t),n+1,e),i=hn(t,!0,n+1)),t.isNeg()&&!t.isZero()?"-"+i:i};y.toFixed=function(n,e){var i,t,r=this,o=r.constructor;return n===void 0?i=hn(r):(Fe(n,0,Wn),e===void 0?e=o.rounding:Fe(e,0,8),t=D(new o(r),n+r.e+1,e),i=hn(t,!1,n+t.e+1)),r.isNeg()&&!r.isZero()?"-"+i:i};y.toFraction=function(n){var e,i,t,r,o,s,a,l,u,f,d,c,m=this,g=m.d,h=m.constructor;if(!g)return new h(m);if(u=i=new h(1),t=l=new h(0),e=new h(t),o=e.e=Vs(g)-m.e-1,s=o%I,e.d[0]=Ee(10,s<0?I+s:s),n==null)n=o>0?e:u;else{if(a=new h(n),!a.isInt()||a.lt(u))throw Error(Jn+a);n=a.gt(e)?o>0?e:u:a}for(A=!1,a=new h(Ie(g)),f=h.precision,h.precision=o=g.length*I*2;d=ee(a,e,0,1,1),r=i.plus(d.times(t)),r.cmp(n)!=1;)i=t,t=r,r=u,u=l.plus(d.times(r)),l=r,r=e,e=a.minus(d.times(r)),a=r;return r=ee(n.minus(i),t,0,1,1),l=l.plus(r.times(u)),i=i.plus(r.times(t)),l.s=u.s=m.s,c=ee(u,t,o,1).minus(m).abs().cmp(ee(l,i,o,1).minus(m).abs())<1?[u,t]:[l,i],h.precision=f,A=!0,c};y.toHexadecimal=y.toHex=function(n,e){return to(this,16,n,e)};y.toNearest=function(n,e){var i=this,t=i.constructor;if(i=new t(i),n==null){if(!i.d)return i;n=new t(1),e=t.rounding}else{if(n=new t(n),e===void 0?e=t.rounding:Fe(e,0,8),!i.d)return n.s?i:n;if(!n.d)return n.s&&(n.s=i.s),n}return n.d[0]?(A=!1,i=ee(i,n,0,e,1).times(n),A=!0,D(i)):(n.s=i.s,i=n),i};y.toNumber=function(){return+this};y.toOctal=function(n,e){return to(this,8,n,e)};y.toPower=y.pow=function(n){var e,i,t,r,o,s,a=this,l=a.constructor,u=+(n=new l(n));if(!a.d||!n.d||!a.d[0]||!n.d[0])return new l(Ee(+a,u));if(a=new l(a),a.eq(1))return a;if(t=l.precision,o=l.rounding,n.eq(1))return D(a,t,o);if(e=we(n.e/I),e>=n.d.length-1&&(i=u<0?-u:u)<=Fl)return r=$s(l,a,i,t),n.s<0?new l(1).div(r):D(r,t,o);if(s=a.s,s<0){if(e<n.d.length-1)return new l(NaN);if(n.d[e]&1||(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return i=Ee(+a,u),e=i==0||!isFinite(i)?we(u*(Math.log("0."+Ie(a.d))/Math.LN10+a.e+1)):new l(i+"").e,e>l.maxE+1||e<l.minE-1?new l(e>0?s/0:0):(A=!1,l.rounding=a.s=1,i=Math.min(12,(e+"").length),r=no(n.times(Hn(a,t+i)),t),r.d&&(r=D(r,t+5,1),it(r.d,t,o)&&(e=t+10,r=D(no(n.times(Hn(a,e+i)),e),e+5,1),+Ie(r.d).slice(t+1,t+15)+1==1e14&&(r=D(r,t+1,0)))),r.s=s,A=!0,l.rounding=o,D(r,t,o))};y.toPrecision=function(n,e){var i,t=this,r=t.constructor;return n===void 0?i=hn(t,t.e<=r.toExpNeg||t.e>=r.toExpPos):(Fe(n,1,Wn),e===void 0?e=r.rounding:Fe(e,0,8),t=D(new r(t),n,e),i=hn(t,n<=t.e||t.e<=r.toExpNeg,n)),t.isNeg()&&!t.isZero()?"-"+i:i};y.toSignificantDigits=y.toSD=function(n,e){var i=this,t=i.constructor;return n===void 0?(n=t.precision,e=t.rounding):(Fe(n,1,Wn),e===void 0?e=t.rounding:Fe(e,0,8)),D(new t(i),n,e)};y.toString=function(){var n=this,e=n.constructor,i=hn(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()&&!n.isZero()?"-"+i:i};y.truncated=y.trunc=function(){return D(new this.constructor(this),this.e+1,1)};y.valueOf=y.toJSON=function(){var n=this,e=n.constructor,i=hn(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()?"-"+i:i};function Ie(n){var e,i,t,r=n.length-1,o="",s=n[0];if(r>0){for(o+=s,e=1;e<r;e++)t=n[e]+"",i=I-t.length,i&&(o+=jn(i)),o+=t;s=n[e],t=s+"",i=I-t.length,i&&(o+=jn(i))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Fe(n,e,i){if(n!==~~n||n<e||n>i)throw Error(Jn+n)}function it(n,e,i,t){var r,o,s,a;for(o=n[0];o>=10;o/=10)--e;return--e<0?(e+=I,r=0):(r=Math.ceil((e+1)/I),e%=I),o=Ee(10,I-e),a=n[r]%o|0,t==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=i<4&&a==99999||i>3&&a==49999||a==5e4||a==0):s=(i<4&&a+1==o||i>3&&a+1==o/2)&&(n[r+1]/o/100|0)==Ee(10,e-2)-1||(a==o/2||a==0)&&(n[r+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(t||i<4)&&a==9999||!t&&i>3&&a==4999):s=((t||i<4)&&a+1==o||!t&&i>3&&a+1==o/2)&&(n[r+1]/o/1e3|0)==Ee(10,e-3)-1,s}function $t(n,e,i){for(var t,r=[0],o,s=0,a=n.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=Xr.indexOf(n.charAt(s++)),t=0;t<r.length;t++)r[t]>i-1&&(r[t+1]===void 0&&(r[t+1]=0),r[t+1]+=r[t]/i|0,r[t]%=i)}return r.reverse()}function ql(n,e){var i,t,r;if(e.isZero())return e;t=e.d.length,t<32?(i=Math.ceil(t/3),r=(1/Ht(4,i)).toString()):(i=16,r="2.3283064365386962890625e-10"),n.precision+=i,e=Di(n,1,e.times(r),new n(1));for(var o=i;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return n.precision-=i,e}var ee=function(){function n(t,r,o){var s,a=0,l=t.length;for(t=t.slice();l--;)s=t[l]*r+a,t[l]=s%o|0,a=s/o|0;return a&&t.unshift(a),t}function e(t,r,o,s){var a,l;if(o!=s)l=o>s?1:-1;else for(a=l=0;a<o;a++)if(t[a]!=r[a]){l=t[a]>r[a]?1:-1;break}return l}function i(t,r,o,s){for(var a=0;o--;)t[o]-=a,a=t[o]<r[o]?1:0,t[o]=a*s+t[o]-r[o];for(;!t[0]&&t.length>1;)t.shift()}return function(t,r,o,s,a,l){var u,f,d,c,m,g,h,E,S,T,_,w,W,pe,Re,Pe,nt,Wr,tn,qt,Vt=t.constructor,Yr=t.s==r.s?1:-1,Ae=t.d,te=r.d;if(!Ae||!Ae[0]||!te||!te[0])return new Vt(!t.s||!r.s||(Ae?te&&Ae[0]==te[0]:!te)?NaN:Ae&&Ae[0]==0||!te?Yr*0:Yr/0);for(l?(m=1,f=t.e-r.e):(l=on,m=I,f=we(t.e/m)-we(r.e/m)),tn=te.length,nt=Ae.length,S=new Vt(Yr),T=S.d=[],d=0;te[d]==(Ae[d]||0);d++);if(te[d]>(Ae[d]||0)&&f--,o==null?(pe=o=Vt.precision,s=Vt.rounding):a?pe=o+(t.e-r.e)+1:pe=o,pe<0)T.push(1),g=!0;else{if(pe=pe/m+2|0,d=0,tn==1){for(c=0,te=te[0],pe++;(d<nt||c)&&pe--;d++)Re=c*l+(Ae[d]||0),T[d]=Re/te|0,c=Re%te|0;g=c||d<nt}else{for(c=l/(te[0]+1)|0,c>1&&(te=n(te,c,l),Ae=n(Ae,c,l),tn=te.length,nt=Ae.length),Pe=tn,_=Ae.slice(0,tn),w=_.length;w<tn;)_[w++]=0;qt=te.slice(),qt.unshift(0),Wr=te[0],te[1]>=l/2&&++Wr;do c=0,u=e(te,_,tn,w),u<0?(W=_[0],tn!=w&&(W=W*l+(_[1]||0)),c=W/Wr|0,c>1?(c>=l&&(c=l-1),h=n(te,c,l),E=h.length,w=_.length,u=e(h,_,E,w),u==1&&(c--,i(h,tn<E?qt:te,E,l))):(c==0&&(u=c=1),h=te.slice()),E=h.length,E<w&&h.unshift(0),i(_,h,w,l),u==-1&&(w=_.length,u=e(te,_,tn,w),u<1&&(c++,i(_,tn<w?qt:te,w,l))),w=_.length):u===0&&(c++,_=[0]),T[d++]=c,u&&_[0]?_[w++]=Ae[Pe]||0:(_=[Ae[Pe]],w=1);while((Pe++<nt||_[0]!==void 0)&&pe--);g=_[0]!==void 0}T[0]||T.shift()}if(m==1)S.e=f,Rs=g;else{for(d=1,c=T[0];c>=10;c/=10)d++;S.e=d+f*m-1,D(S,a?o+S.e+1:o,s,g)}return S}}();function D(n,e,i,t){var r,o,s,a,l,u,f,d,c,m=n.constructor;e:if(e!=null){if(d=n.d,!d)return n;for(r=1,a=d[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=I,s=e,f=d[c=0],l=f/Ee(10,r-s-1)%10|0;else if(c=Math.ceil((o+1)/I),a=d.length,c>=a)if(t){for(;a++<=c;)d.push(0);f=l=0,r=1,o%=I,s=o-I+1}else break e;else{for(f=a=d[c],r=1;a>=10;a/=10)r++;o%=I,s=o-I+r,l=s<0?0:f/Ee(10,r-s-1)%10|0}if(t=t||e<0||d[c+1]!==void 0||(s<0?f:f%Ee(10,r-s-1)),u=i<4?(l||t)&&(i==0||i==(n.s<0?3:2)):l>5||l==5&&(i==4||t||i==6&&(o>0?s>0?f/Ee(10,r-s):0:d[c-1])%10&1||i==(n.s<0?8:7)),e<1||!d[0])return d.length=0,u?(e-=n.e+1,d[0]=Ee(10,(I-e%I)%I),n.e=-e||0):d[0]=n.e=0,n;if(o==0?(d.length=c,a=1,c--):(d.length=c+1,a=Ee(10,I-o),d[c]=s>0?(f/Ee(10,r-s)%Ee(10,s)|0)*a:0),u)for(;;)if(c==0){for(o=1,s=d[0];s>=10;s/=10)o++;for(s=d[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(n.e++,d[0]==on&&(d[0]=1));break}else{if(d[c]+=a,d[c]!=on)break;d[c--]=0,a=1}for(o=d.length;d[--o]===0;)d.pop()}return A&&(n.e>m.maxE?(n.d=null,n.e=NaN):n.e<m.minE&&(n.e=0,n.d=[0])),n}function hn(n,e,i){if(!n.isFinite())return Gs(n);var t,r=n.e,o=Ie(n.d),s=o.length;return e?(i&&(t=i-s)>0?o=o.charAt(0)+"."+o.slice(1)+jn(t):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(n.e<0?"e":"e+")+n.e):r<0?(o="0."+jn(-r-1)+o,i&&(t=i-s)>0&&(o+=jn(t))):r>=s?(o+=jn(r+1-s),i&&(t=i-r-1)>0&&(o=o+"."+jn(t))):((t=r+1)<s&&(o=o.slice(0,t)+"."+o.slice(t)),i&&(t=i-s)>0&&(r+1===s&&(o+="."),o+=jn(t))),o}function jt(n,e){var i=n[0];for(e*=I;i>=10;i/=10)e++;return e}function zt(n,e,i){if(e>Ll)throw A=!0,i&&(n.precision=i),Error(Ps);return D(new n(Ut),e,1,!0)}function rn(n,e,i){if(e>eo)throw Error(Ps);return D(new n(Gt),e,i,!0)}function Vs(n){var e=n.length-1,i=e*I+1;if(e=n[e],e){for(;e%10==0;e/=10)i--;for(e=n[0];e>=10;e/=10)i++}return i}function jn(n){for(var e="";n--;)e+="0";return e}function $s(n,e,i,t){var r,o=new n(1),s=Math.ceil(t/I+4);for(A=!1;;){if(i%2&&(o=o.times(e),Ms(o.d,s)&&(r=!0)),i=we(i/2),i===0){i=o.d.length-1,r&&o.d[i]===0&&++o.d[i];break}e=e.times(e),Ms(e.d,s)}return A=!0,o}function Cs(n){return n.d[n.d.length-1]&1}function Us(n,e,i){for(var t,r=new n(e[0]),o=0;++o<e.length;)if(t=new n(e[o]),t.s)r[i](t)&&(r=t);else{r=t;break}return r}function no(n,e){var i,t,r,o,s,a,l,u=0,f=0,d=0,c=n.constructor,m=c.rounding,g=c.precision;if(!n.d||!n.d[0]||n.e>17)return new c(n.d?n.d[0]?n.s<0?0:1/0:1:n.s?n.s<0?0:n:NaN);for(e==null?(A=!1,l=g):l=e,a=new c(.03125);n.e>-2;)n=n.times(a),d+=5;for(t=Math.log(Ee(2,d))/Math.LN10*2+5|0,l+=t,i=o=s=new c(1),c.precision=l;;){if(o=D(o.times(n),l,1),i=i.times(++f),a=s.plus(ee(o,i,l,1)),Ie(a.d).slice(0,l)===Ie(s.d).slice(0,l)){for(r=d;r--;)s=D(s.times(s),l,1);if(e==null)if(u<3&&it(s.d,l-t,m,u))c.precision=l+=10,i=o=a=new c(1),f=0,u++;else return D(s,c.precision=g,m,A=!0);else return c.precision=g,s}s=a}}function Hn(n,e){var i,t,r,o,s,a,l,u,f,d,c,m=1,g=10,h=n,E=h.d,S=h.constructor,T=S.rounding,_=S.precision;if(h.s<0||!E||!E[0]||!h.e&&E[0]==1&&E.length==1)return new S(E&&!E[0]?-1/0:h.s!=1?NaN:E?0:h);if(e==null?(A=!1,f=_):f=e,S.precision=f+=g,i=Ie(E),t=i.charAt(0),Math.abs(o=h.e)<15e14){for(;t<7&&t!=1||t==1&&i.charAt(1)>3;)h=h.times(n),i=Ie(h.d),t=i.charAt(0),m++;o=h.e,t>1?(h=new S("0."+i),o++):h=new S(t+"."+i.slice(1))}else return u=zt(S,f+2,_).times(o+""),h=Hn(new S(t+"."+i.slice(1)),f-g).plus(u),S.precision=_,e==null?D(h,_,T,A=!0):h;for(d=h,l=s=h=ee(h.minus(1),h.plus(1),f,1),c=D(h.times(h),f,1),r=3;;){if(s=D(s.times(c),f,1),u=l.plus(ee(s,new S(r),f,1)),Ie(u.d).slice(0,f)===Ie(l.d).slice(0,f))if(l=l.times(2),o!==0&&(l=l.plus(zt(S,f+2,_).times(o+""))),l=ee(l,new S(m),f,1),e==null)if(it(l.d,f-g,T,a))S.precision=f+=g,u=s=h=ee(d.minus(1),d.plus(1),f,1),c=D(h.times(h),f,1),r=a=1;else return D(l,S.precision=_,T,A=!0);else return S.precision=_,l;l=u,r+=2}}function Gs(n){return String(n.s*n.s/0)}function io(n,e){var i,t,r;for((i=e.indexOf("."))>-1&&(e=e.replace(".","")),(t=e.search(/e/i))>0?(i<0&&(i=t),i+=+e.slice(t+1),e=e.substring(0,t)):i<0&&(i=e.length),t=0;e.charCodeAt(t)===48;t++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(t,r),e){if(r-=t,n.e=i=i-t-1,n.d=[],t=(i+1)%I,i<0&&(t+=I),t<r){for(t&&n.d.push(+e.slice(0,t)),r-=I;t<r;)n.d.push(+e.slice(t,t+=I));e=e.slice(t),t=I-e.length}else t-=r;for(;t--;)e+="0";n.d.push(+e),A&&(n.e>n.constructor.maxE?(n.d=null,n.e=NaN):n.e<n.constructor.minE&&(n.e=0,n.d=[0]))}else n.e=0,n.d=[0];return n}function Vl(n,e){var i,t,r,o,s,a,l,u,f;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),qs.test(e))return io(n,e)}else if(e==="Infinity"||e==="NaN")return+e||(n.s=NaN),n.e=NaN,n.d=null,n;if(Rl.test(e))i=16,e=e.toLowerCase();else if(Ol.test(e))i=2;else if(Pl.test(e))i=8;else throw Error(Jn+e);for(o=e.search(/p/i),o>0?(l=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,t=n.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=$s(t,new t(i),o,o*2)),u=$t(e,i,on),f=u.length-1,o=f;u[o]===0;--o)u.pop();return o<0?new t(n.s*0):(n.e=jt(u,f),n.d=u,A=!1,s&&(n=ee(n,r,a*4)),l&&(n=n.times(Math.abs(l)<54?Ee(2,l):N.pow(2,l))),A=!0,n)}function $l(n,e){var i,t=e.d.length;if(t<3)return e.isZero()?e:Di(n,2,e,e);i=1.4*Math.sqrt(t),i=i>16?16:i|0,e=e.times(1/Ht(5,i)),e=Di(n,2,e,e);for(var r,o=new n(5),s=new n(16),a=new n(20);i--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function Di(n,e,i,t,r){var o,s,a,l,u=1,f=n.precision,d=Math.ceil(f/I);for(A=!1,l=i.times(i),a=new n(t);;){if(s=ee(a.times(l),new n(e++*e++),f,1),a=r?t.plus(s):t.minus(s),t=ee(s.times(l),new n(e++*e++),f,1),s=a.plus(t),s.d[d]!==void 0){for(o=d;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=t,t=s,s=o,u++}return A=!0,s.d.length=d+1,s}function Ht(n,e){for(var i=n;--e;)i*=n;return i}function zs(n,e){var i,t=e.s<0,r=rn(n,n.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return Dn=t?4:1,e;if(i=e.divToInt(r),i.isZero())Dn=t?3:2;else{if(e=e.minus(i.times(r)),e.lte(o))return Dn=Cs(i)?t?2:3:t?4:1,e;Dn=Cs(i)?t?1:4:t?3:2}return e.minus(r).abs()}function to(n,e,i,t){var r,o,s,a,l,u,f,d,c,m=n.constructor,g=i!==void 0;if(g?(Fe(i,1,Wn),t===void 0?t=m.rounding:Fe(t,0,8)):(i=m.precision,t=m.rounding),!n.isFinite())f=Gs(n);else{for(f=hn(n),s=f.indexOf("."),g?(r=2,e==16?i=i*4-3:e==8&&(i=i*3-2)):r=e,s>=0&&(f=f.replace(".",""),c=new m(1),c.e=f.length-s,c.d=$t(hn(c),10,r),c.e=c.d.length),d=$t(f,10,r),o=l=d.length;d[--l]==0;)d.pop();if(!d[0])f=g?"0p+0":"0";else{if(s<0?o--:(n=new m(n),n.d=d,n.e=o,n=ee(n,c,i,t,0,r),d=n.d,o=n.e,u=Rs),s=d[i],a=r/2,u=u||d[i+1]!==void 0,u=t<4?(s!==void 0||u)&&(t===0||t===(n.s<0?3:2)):s>a||s===a&&(t===4||u||t===6&&d[i-1]&1||t===(n.s<0?8:7)),d.length=i,u)for(;++d[--i]>r-1;)d[i]=0,i||(++o,d.unshift(1));for(l=d.length;!d[l-1];--l);for(s=0,f="";s<l;s++)f+=Xr.charAt(d[s]);if(g){if(l>1)if(e==16||e==8){for(s=e==16?4:3,--l;l%s;l++)f+="0";for(d=$t(f,r,e),l=d.length;!d[l-1];--l);for(s=1,f="1.";s<l;s++)f+=Xr.charAt(d[s])}else f=f.charAt(0)+"."+f.slice(1);f=f+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)f="0"+f;f="0."+f}else if(++o>l)for(o-=l;o--;)f+="0";else o<l&&(f=f.slice(0,o)+"."+f.slice(o))}f=(e==16?"0x":e==2?"0b":e==8?"0o":"")+f}return n.s<0?"-"+f:f}function Ms(n,e){if(n.length>e)return n.length=e,!0}function Ul(n){return new this(n).abs()}function Gl(n){return new this(n).acos()}function zl(n){return new this(n).acosh()}function Zl(n,e){return new this(n).plus(e)}function jl(n){return new this(n).asin()}function Hl(n){return new this(n).asinh()}function Jl(n){return new this(n).atan()}function Wl(n){return new this(n).atanh()}function Yl(n,e){n=new this(n),e=new this(e);var i,t=this.precision,r=this.rounding,o=t+4;return!n.s||!e.s?i=new this(NaN):!n.d&&!e.d?(i=rn(this,o,1).times(e.s>0?.25:.75),i.s=n.s):!e.d||n.isZero()?(i=e.s<0?rn(this,t,r):new this(0),i.s=n.s):!n.d||e.isZero()?(i=rn(this,o,1).times(.5),i.s=n.s):e.s<0?(this.precision=o,this.rounding=1,i=this.atan(ee(n,e,o,1)),e=rn(this,o,1),this.precision=t,this.rounding=r,i=n.s<0?i.minus(e):i.plus(e)):i=this.atan(ee(n,e,o,1)),i}function Ql(n){return new this(n).cbrt()}function Xl(n){return D(n=new this(n),n.e+1,2)}function Kl(n,e,i){return new this(n).clamp(e,i)}function ef(n){if(!n||typeof n!="object")throw Error(Zt+"Object expected");var e,i,t,r=n.defaults===!0,o=["precision",1,Wn,"rounding",0,8,"toExpNeg",-Ti,0,"toExpPos",0,Ti,"maxE",0,Ti,"minE",-Ti,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(i=o[e],r&&(this[i]=Kr[i]),(t=n[i])!==void 0)if(we(t)===t&&t>=o[e+1]&&t<=o[e+2])this[i]=t;else throw Error(Jn+i+": "+t);if(i="crypto",r&&(this[i]=Kr[i]),(t=n[i])!==void 0)if(t===!0||t===!1||t===0||t===1)if(t)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[i]=!0;else throw Error(Fs);else this[i]=!1;else throw Error(Jn+i+": "+t);return this}function nf(n){return new this(n).cos()}function tf(n){return new this(n).cosh()}function Zs(n){var e,i,t;function r(o){var s,a,l,u=this;if(!(u instanceof r))return new r(o);if(u.constructor=r,Os(o)){u.s=o.s,A?!o.d||o.e>r.maxE?(u.e=NaN,u.d=null):o.e<r.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(l=typeof o,l==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;A?s>r.maxE?(u.e=NaN,u.d=null):s<r.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}else if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return io(u,o.toString())}else if(l!=="string")throw Error(Jn+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),qs.test(o)?io(u,o):Vl(u,o)}if(r.prototype=y,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=ef,r.clone=Zs,r.isDecimal=Os,r.abs=Ul,r.acos=Gl,r.acosh=zl,r.add=Zl,r.asin=jl,r.asinh=Hl,r.atan=Jl,r.atanh=Wl,r.atan2=Yl,r.cbrt=Ql,r.ceil=Xl,r.clamp=Kl,r.cos=nf,r.cosh=tf,r.div=rf,r.exp=of,r.floor=sf,r.hypot=af,r.ln=uf,r.log=lf,r.log10=df,r.log2=ff,r.max=cf,r.min=mf,r.mod=pf,r.mul=hf,r.pow=gf,r.random=xf,r.round=bf,r.sign=yf,r.sin=Ef,r.sinh=vf,r.sqrt=Nf,r.sub=_f,r.sum=Sf,r.tan=Bf,r.tanh=Tf,r.trunc=Df,n===void 0&&(n={}),n&&n.defaults!==!0)for(t=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<t.length;)n.hasOwnProperty(i=t[e++])||(n[i]=this[i]);return r.config(n),r}function rf(n,e){return new this(n).div(e)}function of(n){return new this(n).exp()}function sf(n){return D(n=new this(n),n.e+1,3)}function af(){var n,e,i=new this(0);for(A=!1,n=0;n<arguments.length;)if(e=new this(arguments[n++]),e.d)i.d&&(i=i.plus(e.times(e)));else{if(e.s)return A=!0,new this(1/0);i=e}return A=!0,i.sqrt()}function Os(n){return n instanceof N||n&&n.toStringTag===Ls||!1}function uf(n){return new this(n).ln()}function lf(n,e){return new this(n).log(e)}function ff(n){return new this(n).log(2)}function df(n){return new this(n).log(10)}function cf(){return Us(this,arguments,"lt")}function mf(){return Us(this,arguments,"gt")}function pf(n,e){return new this(n).mod(e)}function hf(n,e){return new this(n).mul(e)}function gf(n,e){return new this(n).pow(e)}function xf(n){var e,i,t,r,o=0,s=new this(1),a=[];if(n===void 0?n=this.precision:Fe(n,1,Wn),t=Math.ceil(n/I),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(t));o<t;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(t*=4);o<t;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=t/4}else throw Error(Fs);else for(;o<t;)a[o++]=Math.random()*1e7|0;for(t=a[--o],n%=I,t&&n&&(r=Ee(10,I-n),a[o]=(t/r|0)*r);a[o]===0;o--)a.pop();if(o<0)i=0,a=[0];else{for(i=-1;a[0]===0;i-=I)a.shift();for(t=1,r=a[0];r>=10;r/=10)t++;t<I&&(i-=I-t)}return s.e=i,s.d=a,s}function bf(n){return D(n=new this(n),n.e+1,this.rounding)}function yf(n){return n=new this(n),n.d?n.d[0]?n.s:0*n.s:n.s||NaN}function Ef(n){return new this(n).sin()}function vf(n){return new this(n).sinh()}function Nf(n){return new this(n).sqrt()}function _f(n,e){return new this(n).sub(e)}function Sf(){var n=0,e=arguments,i=new this(e[n]);for(A=!1;i.s&&++n<e.length;)i=i.plus(e[n]);return A=!0,D(i,this.precision,this.rounding)}function Bf(n){return new this(n).tan()}function Tf(n){return new this(n).tanh()}function Df(n){return D(n=new this(n),n.e+1,1)}y[Symbol.for("nodejs.util.inspect.custom")]=y.toString;y[Symbol.toStringTag]="Decimal";var N=y.constructor=Zs(Kr);Ut=new N(Ut);Gt=new N(Gt);var ve=N;var ln=he(fe(),1);var Ws=he(fe(),1);function ro(n,e,i={}){let{contract:t=.125,step:r=1,power:o=2,atol:s=1e-16,rtol:a=s>0?0:Math.sqrt(Number.EPSILON),maxeval:l=1e6,breaktol:u=2}=i;if(!isFinite(e))return ro(E=>n(1/E),1/e,{rtol:a,atol:s,maxeval:l,contract:Math.abs(t)>1?1/t:t,step:1/r,power:o});let f=r,d=Math.pow(1/t,o),c=n(e+f),m=[c],g=1/0,h=1;for(;h<l;){h+=1,f*=t,m.push(n(e+f));let E=d,S=1/0;for(let T=m.length-2;T>=0;T--){let _=m[T];m[T]=m[T+1]+(m[T+1]-m[T])/(E-1);let w=Math.abs(m[T]-_);S=Math.min(S,w),w<g&&(c=m[T],g=w),E*=d}if(S>u*g||!isFinite(S)||g<=Math.max(a*Math.abs(c),s))break}return[c,g]}var js=new Set([2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999,5003,5009,5011,5021,5023,5039,5051,5059,5077,5081,5087,5099,5101,5107,5113,5119,5147,5153,5167,5171,5179,5189,5197,5209,5227,5231,5233,5237,5261,5273,5279,5281,5297,5303,5309,5323,5333,5347,5351,5381,5387,5393,5399,5407,5413,5417,5419,5431,5437,5441,5443,5449,5471,5477,5479,5483,5501,5503,5507,5519,5521,5527,5531,5557,5563,5569,5573,5581,5591,5623,5639,5641,5647,5651,5653,5657,5659,5669,5683,5689,5693,5701,5711,5717,5737,5741,5743,5749,5779,5783,5791,5801,5807,5813,5821,5827,5839,5843,5849,5851,5857,5861,5867,5869,5879,5881,5897,5903,5923,5927,5939,5953,5981,5987,6007,6011,6029,6037,6043,6047,6053,6067,6073,6079,6089,6091,6101,6113,6121,6131,6133,6143,6151,6163,6173,6197,6199,6203,6211,6217,6221,6229,6247,6257,6263,6269,6271,6277,6287,6299,6301,6311,6317,6323,6329,6337,6343,6353,6359,6361,6367,6373,6379,6389,6397,6421,6427,6449,6451,6469,6473,6481,6491,6521,6529,6547,6551,6553,6563,6569,6571,6577,6581,6599,6607,6619,6637,6653,6659,6661,6673,6679,6689,6691,6701,6703,6709,6719,6733,6737,6761,6763,6779,6781,6791,6793,6803,6823,6827,6829,6833,6841,6857,6863,6869,6871,6883,6899,6907,6911,6917,6947,6949,6959,6961,6967,6971,6977,6983,6991,6997,7001,7013,7019,7027,7039,7043,7057,7069,7079,7103,7109,7121,7127,7129,7151,7159,7177,7187,7193,7207,7211,7213,7219,7229,7237,7243,7247,7253,7283,7297,7307,7309,7321,7331,7333,7349,7351,7369,7393,7411,7417,7433,7451,7457,7459,7477,7481,7487,7489,7499,7507,7517,7523,7529,7537,7541,7547,7549,7559,7561,7573,7577,7583,7589,7591,7603,7607,7621,7639,7643,7649,7669,7673,7681,7687,7691,7699,7703,7717,7723,7727,7741,7753,7757,7759,7789,7793,7817,7823,7829,7841,7853,7867,7873,7877,7879,7883,7901,7907,7919]),If=7919;function Jt(n){if(Number.isInteger(n)&&n>=0&&n<Number.MAX_SAFE_INTEGER,n<=3)return{[n]:1};let e={},i=0;for(;n%2===0;)i+=1,n/=2;for(i>0&&(e[2]=i),i=0;n%3===0;)i+=1,n/=3;i>0&&(e[3]=i);let t=!1;for(;!t;){if(n===1)return e;let r=Math.sqrt(n);t=!0;for(let o=6;o<=r+6;o+=6){if(n%(o-1)===0){e[o-1]=(e[o-1]??0)+1,n/=o-1,t=!1;break}if(n%(o+1)===0){e[o+1]=(e[o+1]??0)+1,n/=o+1,t=!1;break}}}return e[n]!==void 0?e[n]+=1:e[n]=1,e}function Yn(n){if(!Number.isInteger(n)||!Number.isFinite(n)||Number.isNaN(n)||n<=1)return!1;if(n<=If)return js.has(n);for(let e of js)if(n%e===0)return!1;return n>=0x3ffffffffffe5?Af(n,30)?void 0:!1:n===kf(n)}function kf(n){if(n===1)return 1;if(n%2===0)return 2;if(n%3===0)return 3;if(n%5===0)return 5;let e=Math.floor(Math.sqrt(n)),i=7;for(;i<=e;){if(n%i===0)return i;if(n%(i+4)===0)return i+4;if(n%(i+6)===0)return i+6;if(n%(i+10)===0)return i+10;if(n%(i+12)===0)return i+12;if(n%(i+16)===0)return i+16;if(n%(i+22)===0)return i+22;if(n%(i+24)===0)return i+24;i+=30}return n}function Af(n,e){let i=0,t=n-1;for(;t%2===0;)t/=2,++i;e:do{let r=Math.pow(2+Math.floor(Math.random()*(n-3)),t)%n;if(!(r===1||r===n-1)){for(let o=i-1;o--;){if(r=r*r%n,r===1)return!1;if(r===n-1)continue e}return!1}}while(--e);return!0}var Ys=53,li=Math.log10(Math.pow(2,Ys)),wf=7,Sc=Math.pow(2,-(Ys-wf)),ki=Math.pow(10,-10),fi=1e6,Wt=1e6,tt=200;function Qn(n,e){if(n>=Number.MAX_SAFE_INTEGER)return[1,n];if(n===0)return[0,0];Number.isInteger(n)&&n>0&&n<Number.MAX_SAFE_INTEGER;let i=Jt(n),t=1,r=1;for(let o of Object.keys(i)){let s=parseInt(o);t=t*Math.pow(s,Math.floor(i[o]/e)),r=r*Math.pow(s,i[o]%e)}return[t,r]}function In(n,e){if(n===0)return e;if(e===0||n===e)return n;if(!Number.isInteger(n)||!Number.isInteger(e))return NaN;for(;e!==0;)[n,e]=[e,n%e];return n<0?-n:n}function Yt(n,e){return n*e/In(n,e)}function Qt(n){if(!Number.isInteger(n)||n<0)return NaN;let e=1;for(let i=2;i<=n;i++)e=e*i;return e}function Qs(n){if(!Number.isInteger(n)||n<0)return NaN;if(n<0)return NaN;if(n<=1)return 1;let e=n;for(;n>2;)n-=2,e*=n;return e}var Hs=7,Js=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23];function rt(n){if(n<0)return NaN;let e=Math.PI,i=n*n*n;return n*Math.log(n)-n-.5*Math.log(n)+.5*Math.log(2*e)+1/(12*n)-1/(360*i)+1/(1260*i*n*n)}function Ai(n){if(n<.5)return Math.PI/(Math.sin(Math.PI*n)*Ai(1-n));if(n>100)return Math.exp(rt(n));n-=1;let e=Js[0];for(let t=1;t<Hs+2;t++)e+=Js[t]/(n+t);let i=n+Hs+.5;return Math.sqrt(2*Math.PI)*Math.pow(i,n+.5)*Math.exp(-i)*e}function di(n,e){return typeof n=="number"&&Math.abs(n)<=e||n instanceof N&&n.abs().lte(e)||n instanceof Ws.Complex&&Math.abs(n.re)<=e&&Math.abs(n.im)<=e?0:n}function oo(n){let e=.254829592,i=-.284496736,t=1.421413741,r=-1.453152027,o=1.061405429,s=.3275911,a=n<0?-1:1;n=Math.abs(n);let l=1/(1+s*n),u=((((o*l+r)*l+t)*l+i)*l+e)*l;return a*(1-u*Math.exp(-n*n))}function Xs(n){let e=Math.PI,i=e*e,t=i*e,r=n*n,o=n*r,s=o*r,a=s*r;return Math.sqrt(e)/2*(n+e/12*o+7*i/480*s+127*t/40320*a+4369*i*i/5806080*a*r+34807*t*i/182476800*a*r*r)}function Ks(n,e,i=.1){return(n(e-4*i)/280-4*n(e-3*i)/105+n(e-2*i)/5-4*n(e-i)/5+4*n(e+i)/5-n(e+2*i)/5+4*n(e+3*i)/105-n(e+4*i)/280)/i}function Xt(n,e,i,t=1e5){let r=0;if(e===-1/0&&i===1/0)for(let o=0;o<t;o++){let s=Math.random(),a=Math.tan(Math.PI*(s-.5)),l=Math.PI*(1+a*a);r+=n(a)/l}else if(e===-1/0)for(let o=0;o<t;o++){let s=Math.random(),a=i-Math.log(1-s),l=1/(1-s);r+=n(a)/l}else if(i===1/0)for(let o=0;o<t;o++){let s=Math.random(),a=e+Math.log(s),l=1/s;r+=n(a)/l}else for(let o=0;o<t;o++)r+=n(e+Math.random()*(i-e));return r/t*(i-e)}function ui(n,e,i=1){if(i===0){let o=ui(n,e,-1),s=ui(n,e,1);return o===void 0||s===void 0?NaN:Math.abs(o-s)>1e-5?NaN:(o+s)/2}let[t,r]=ro(n,e,{step:i>0?1:-1});return t}function Cf(n){if(n==="N")return[0,""];let e={I:1,V:5,X:10,L:50,C:100,D:500,M:1e3},i=0,t=0;n=n.toUpperCase();for(let r=n.length-1;r>=0;r--){let o=e[n[r]];if(o===void 0)return[i,n.slice(r)];o<t?i-=o:i+=o,t=o}return[i,""]}function Ii(n,e){if(n=n.trim(),n.length===0)return[NaN,""];if(n.startsWith("+"))return Ii(n.slice(1),e);if(n.startsWith("-")){let[r,o]=Ii(n.slice(1),e);return[-r,o]}let i=10;if(typeof e=="string"&&(e=e.toLowerCase()),n.startsWith("0x"))i=16,n=n.slice(2);else if(n.startsWith("0b"))i=2,n=n.slice(2);else{if(e==="roman")return Cf(n);if(e==="base64"||e==="base-64")try{return[parseInt(btoa(n)),""]}catch{return[NaN,""]}else typeof e=="number"?i=e:typeof e=="string"&&(i=parseInt(e))}let t=0;for(let r=0;r<n.length;r++){let o={" ":-1,"\xA0":-1,"\u2000":-1,"\u2001":-1,"\u2002":-1,"\u2003":-1,"\u2004":-1,"\u2005":-1,"\u2006":-1,"\u2007":-1,"\u2008":-1,"\u2009":-1,"\u200A":-1,"\u200B":-1,"\u202F":-1,"\u205F":-1,_:-1,",":-1,0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,b:11,c:12,d:13,e:14,f:15,g:16,h:17,i:18,j:19,k:20,l:21,m:22,n:23,o:24,p:25,q:26,r:27,s:28,t:29,u:30,v:31,w:32,x:33,y:34,z:35}[n[r]];if(o!==-1){if(o===void 0)return[t,n.substring(r)];if(o>=i)return[t,n.substring(r)];t=t*i+o}}return[t,""]}var ci=["Error","'missing'"];function gn(n){return!!(typeof n=="number"||mi(n)||typeof n=="string"&&/^[+-]?[0-9\.]/.test(n))}function mi(n){return n!==null&&typeof n=="object"&&"num"in n}function st(n){return n!==null&&typeof n=="object"&&"sym"in n}function ta(n){return n!==null&&typeof n=="object"&&"str"in n}function wi(n){return n!==null&&typeof n=="object"&&"fn"in n}var so;function ra(n){if(!so){let i=`^[${["Zyyy","Zinh","Arab","Armn","Beng","Bopo","Cyrl","Deva","Ethi","Geor","Grek","Gujr","Guru","Hang","Hani","Hebr","Hira","Kana","Knda","Khmr","Laoo","Latn","Mlym","Mymr","Orya","Sinh","Taml","Telu","Thaa","Thai","Tibt"].map(t=>`\\p{Script=${t}}`).join("")}]*$`;so=new RegExp(i,"u")}return so.test(n)}function Ne(n){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)||Ci.test(n)?!0:ra(n)?/^[\p{XIDS}_]\p{XIDC}*$/u.test(n):!1}var Mf="\\u{FE0F}",Of="\\u{20E3}",Rf="\\u{200D}",Pf="\\p{RI}\\p{RI}",Ff="(?:[\\u{E0020}-\\u{E007E}]+\\u{E007F})",ea=`(?:\\p{EMod}|${Mf}${Of}?|${Ff})`,Lf="(?:(?=\\P{XIDC})\\p{Emoji})",na=`(?:${Lf}${ea}*|\\p{Emoji}${ea}+|${Pf})`,oa=`(?:${na})(${Rf}${na})*`,qf=new RegExp(`(?:${oa})+`,"u"),Ci=new RegExp(`^(?:${oa})+$`,"u");function an(n){return typeof n!="string"?"not-a-string":n===""?"empty-string":n.normalize()!==n?"expected-nfc":/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/.test(n)?"unexpected-bidi-marker":Ci.test(n)?"valid":/\p{XIDC}/u.test(n)&&qf.test(n)?"unexpected-mixed-emoji":ra(n)?Ne(n)?"valid":Ne(n[0])?"invalid-char":"invalid-first-char":"unexpected-script"}function Z(n){return n==null?null:typeof n=="object"&&"str"in n?n.str:typeof n!="string"||n.length<2||n[0]!=="'"||n[n.length-1]!=="'"?null:n.substring(1,n.length-1)}function uo(n){if(n==null||Z(n)!==null)return null;let e=x(n);return e==null?n:[e,...(B(n)??[]).map(i=>uo(i)).filter(i=>i!==null)]}function x(n){return Array.isArray(n)?typeof n[0]=="string"&&!Ne(n[0])?(console.error(`Invalid identifier "${n[0]}": ${an(n[0])}`),null):n[0]:n==null?null:wi(n)?n.fn[0]:null}function kn(n){let e=x(n);return typeof e=="string"?e:""}function B(n){return Array.isArray(n)?n.slice(1):n==null?null:wi(n)?n.fn.slice(1):null}function p(n,e){return Array.isArray(n)?n[e]??null:n==null?null:wi(n)?n.fn[e]??null:null}function ke(n){return p(n,1)}function sn(n){return p(n,2)}function j(n){return n==null?0:Array.isArray(n)?Math.max(0,n.length-1):wi(n)?Math.max(0,n.fn.length-1):0}function lo(n){return n==null?null:x(n)==="Hold"?p(n,1):n}function C(n){if(typeof n=="string")return/^[+-]?[0-9\.]/.test(n)||n.length>=2&&n[0]==="'"&&n[n.length-1]==="'"?null:n;if(n==null)return null;let e=st(n)?n.sym:n;return typeof e!="string"?null:e}function ia(n){let e=x(n);if(e==="KeyValuePair"||e==="Tuple"||e==="Pair"){let i=Z(ke(n));return i?[i,sn(n)??"Nothing"]:null}return null}function pi(n){if(n===null)return null;if(typeof n=="object"&&"dict"in n)return n.dict;let e=ia(n);if(e)return{[e[0]]:e[1]};if(x(n)==="Dictionary"){let t={};for(let r=1;r<j(n);r++){let o=ia(p(n,r));o&&(t[o[0]]=o[1])}return t}return null}function Vf(n){if(n=n.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,""),n==="nan")return NaN;if(n==="infinity"||n==="+infinity")return 1/0;if(n==="-infinity")return-1/0;if(/\([0-9]+\)/.test(n)){let[e,i,t,r]=n.match(/(.+)\(([0-9]+)\)(.*)$/)??[];n=i+t.repeat(Math.ceil(16/t.length))+(r??"")}return parseFloat(n)}function O(n){return typeof n=="number"?n:typeof n=="string"?Vf(n):n==null?null:mi(n)?O(n.num):null}function Mi(n){if(n==null)return null;if(C(n)==="Half")return[1,2];let e=x(n);if(!e)return null;let i=null,t=null;if(e==="Negate"){let r=Mi(ke(n));if(r)return[-r[0],r[1]]}if((e==="Rational"||e==="Divide")&&(i=O(ke(n))??NaN,t=O(sn(n))??NaN),e==="Power"){let r=O(sn(n));r===1?(i=O(ke(n)),t=1):r===-1&&(i=1,t=O(ke(n)))}return e==="Multiply"&&x(sn(n))==="Power"&&O(sn(sn(n)))===-1&&(i=O(ke(n)),t=O(ke(sn(n)))),i===null||t===null?null:Number.isInteger(i)&&Number.isInteger(t)?[i,t]:null}function ot(n,e){let i=x(n);if(i!==null)return[ot(i,e),...(B(n)??[]).map(o=>ot(o,e))];let t=pi(n);if(t!==null){let o=Object.keys(t),s={};for(let a of o)s[a]=ot(t[a],e);return{dict:s}}let r=C(n);return r&&e[r]?e[r]:n}function at(n,e){let i=null;if(Array.isArray(n)&&(i=n),wi(n)&&(i=n.fn),i===null)return[];let t=1,r=[];for(;t<i.length;)r.push(e(i[t])),t+=1;return r}function Oi(n,e,i){let t=x(e),r=x(i);return t===n&&r===n?[n,...B(e)??[],...B(i)??[]]:t===n?[n,...B(e)??[],i]:r===n?[n,e,...B(i)??[]]:[n,e,i]}function Kt(n){if(n===null)return null;let e=x(n);if(e==="Delimiter"){if(n=p(n,1),n===null)return[];if(e=x(n),e!=="Sequence")return[n]}return e!=="Sequence"?null:B(n)??[]}function se(n){return x(n)==="Sequence"&&j(n)===0}function L(n){return se(n)?ci:n??ci}function ao(n){return n[0]==="Square"?ao(n.slice(1))+2:n.reduce((e,i)=>e+ut(i),0)}function ut(n){if(n===null)return 0;if(typeof n=="number"||typeof n=="string"||gn(n)||st(n)||ta(n))return 1;if(Array.isArray(n))return ao(n);if("fn"in n)return ao(n.fn);let e=pi(n);if(e){let i=Object.keys(e);return 1+i.length+i.reduce((t,r)=>t+ut(e[r]),0)}return 0}function fo(n){if(typeof n=="number")return Number.isInteger(n)?BigInt(n):null;if(n==null||!gn(n))return null;let e=mi(n)?n.num:n;if(typeof e=="number")return Number.isInteger(e)?BigInt(e):null;if(typeof e!="string")return null;let i=e.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,"");return i==="nan"||i==="infinity"||i==="+infinity"||i==="-infinity"||i.includes(".")?null:R(i)}function R(n){if(typeof n=="bigint")return n;if(n instanceof ve)return R(n.toString());let e=n.toString().toLowerCase();if(e==="nan")return NaN;if(e==="infinity"||e==="+infinity")return 1/0;if(e==="-infinity")return-1/0;let i=e.match(/([^\.]+)(?:\.([0-9]+))?e(.+)$/);return i&&(e=i[1]+(i[2]??"")+"0".repeat(parseInt(i[3])-(i[2]?i[2].length:0))),BigInt(e)}function sa(n,e){for(;e!==BigInt(0);)[n,e]=[e,n%e];return n<0?-n:n}var $f=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];function Uf(n){if(n<Number.MAX_SAFE_INTEGER){let f=Jt(Number(n)),d=new Map;for(let c of Object.keys(f))d.set(R(c),f[c]);return d}let e=n,i=new Map,t=0,r=0,o=0,s=BigInt(10);for(;e%s===BigInt(0);)t+=1,o+=1,e=e/s;for(s=BigInt(5);e%s===BigInt(0);)o+=1,e=e/s;for(s=BigInt(3);e%s===BigInt(0);)r+=1,e=e/s;for(s=BigInt(2);e%s===BigInt(0);)t+=1,e=e/s;t>0&&i.set("2",t),r>0&&i.set("3",r),o>0&&i.set("5",o),s=BigInt(7);let a="",l=0;for(;s*s<e;)e%s===BigInt(0)?(a||(a=s.toString()),i.set(a,(i.get(a)??0)+1),e=e/s):(s=s+$f[l],a="",l=l<7?l+1:0);e!==BigInt(1)&&i.set(e.toString(),(i.get(e.toString())??0)+1);let u=new Map;for(let[f,d]of i)u.set(R(f),d);return u}function hi(n,e){let i=Uf(n),t=BigInt(1),r=BigInt(1),o=R(e);for(let[s,a]of i){let l=R(a);t=t*s**(l/o),r=r*s**(l%o)}return[t,r]}function M(n){return n!==null&&Array.isArray(n)}function U(n){return n!==null&&Array.isArray(n)&&typeof n[0]=="number"}function z(n){return n!==null&&Array.isArray(n)&&typeof n[0]=="bigint"}function Me(n){return n[0]==0}function X(n){return n[0]===n[1]}function aa(n){return n[1]===1||n[1]===BigInt(1)}function Ri(n){return n[0]===-n[1]}function Le(n){return Number(n[0])}function xn(n){return Number(n[1])}function lt(n){return n[0]<0}function ue(n){return[-n[0],n[1]]}function un(n){return n[0]<0?[-n[1],-n[0]]:[n[1],n[0]]}function gi(n,e){if(Number.isInteger(e),e===0)return[1,1];if(e<0&&(n=un(n),e=-e),e===1)return n;let i=R(e);return[R(n[0])**i,R(n[1])**i]}function er(n){let e=Math.sqrt(Number(n[0])),i=Math.sqrt(Number(n[1]));if(Number.isInteger(e)&&Number.isInteger(i))return[e,i]}function Ze(n){if(U(n)){if(n[0]===1||n[1]===1)return n;if(n[1]<0&&(n=[-n[0],-n[1]]),!Number.isFinite(n[1]))return[0,1];let i=In(n[0],n[1]);return i<=1?n:[n[0]/i,n[1]/i]}if(n[0]===BigInt(1)||n[1]===BigInt(1))return n;n[1]<0&&(n=[-n[0],-n[1]]);let e=sa(n[0],n[1]);return e<=1?n:[n[0]/e,n[1]/e]}function xi(n){if(!Number.isFinite(n)||n%1===0)return n;let i=1e-15,t=Math.floor(n),r=1,o=0,s=t,a=1;for(;n-t>i*a*a;){n=1/(n-t),t=Math.floor(n);let l=r;r=s;let u=o;o=a,s=l+t*r,a=u+t*o}return[s,a]}function ua(n){if(z(n)){let[a,l]=n,[u,f]=hi(a,2),[d,c]=hi(l,2);return[Ze([u,d]),Ze([f,c])]}let[e,i]=n,[t,r]=Qn(e,2),[o,s]=Qn(i,2);return[Ze([t,o]),Ze([r,s])]}var la=he(fe(),1);var H=class H{static fromExpression(e){e.isCanonical;let i=e.engine;if(e.head==="Multiply"){let o=[],s=H.one;for(let a of e.ops){let[l,u]=H.fromExpression(a);s=s.mul(l),u.isOne||o.push(u)}return s.isOne?[s,i._fn("Multiply",o)]:[s,i.mul(...o)]}if(e.head==="Divide"){let[o,s]=H.fromExpression(e.op1),[a,l]=H.fromExpression(e.op2),u=o.div(a);return u.isOne?[u,e]:[u,i.div(s,l)]}if(e.head==="Power"){if(e.op2.numericValue===null)return[H.one,e];let[o,s]=H.fromExpression(e.op1);if(o.isOne)return[o,e];let a=V(e.op2);return a!==null?[o.pow(a),i.pow(s,e.op2)]:[H.one,e]}if(e.head,e.head==="Sqrt"){let[o,s]=H.fromExpression(e.op1);return[o.pow(.5),i.sqrt(s)]}if(e.head==="Negate"){let[o,s]=H.fromExpression(e.op1);return[o.neg(),s]}let t=e.numericValue;if(typeof t=="number")return[new H(t),i.One];if(M(t))return[new H({rational:t}),i.One];if(t instanceof la.default&&t.re<0)return[H.one.neg(),i.number(i.complex(-t.re,-t.im))];let r=J(e);return r?[new H({rational:r}),i.One]:[H.one,e]}constructor(e=1){typeof e=="number"?(this.float=e,this.rational=[1,1],this.sqrt=1):M(e)?(this.float=1,this.rational=e,this.sqrt=1):("float"in e&&e.float!==void 0?this.float=e.float:this.float=1,"rational"in e&&e.rational!==void 0?this.rational=e.rational:this.rational=[1,1],"sqrt"in e&&e.sqrt!==void 0?this.sqrt=e.sqrt:this.sqrt=1),this.normalize()}asFloat(){return this.float*Math.sqrt(this.sqrt)*Number(this.rational[0])/Number(this.rational[1])}asRational(){if(this.sqrt===1&&this.float===1)return this.rational;let e=xi(this.asFloat());return typeof e=="number"?[e,1]:e}normalize(){if(this.sqrt===0||Me(this.rational)){this.float=0,this.rational=[0,1],this.sqrt=0;return}Number.isInteger(this.sqrt)||(this.float*=Math.sqrt(this.sqrt),this.sqrt=1);let e=Math.sqrt(this.sqrt);Number.isInteger(e)&&(this.rational=G(this.rational,[e,1]),this.sqrt=1);let i=xi(this.float);M(i)&&i[1]<=10&&(this.rational=G(this.rational,i),this.float=1),Number.isInteger(this.float)||(this.float=this.asFloat(),this.sqrt=1,this.rational=[1,1]),Number.isInteger(this.float)&&(this.rational=G(this.rational,[this.float,1]),this.float=1),lt(this.rational)&&(this.rational=ue(this.rational),this.float=-this.float)}get isZero(){return this.float===0}get isOne(){return this.float===1&&this.sqrt===1&&X(this.rational)}get sign(){return Math.sign(this.float)}neg(){return new H({float:-this.float,rational:this.rational,sqrt:this.sqrt})}inv(){return new H({float:1/this.float,rational:un(this.rational),sqrt:1/this.sqrt})}mul(e){return typeof e=="number"?e={float:e}:M(e)&&(e={rational:e}),new H({float:this.float*(e.float??1),rational:G(this.rational,e.rational??[1,1]),sqrt:this.sqrt*(e.sqrt??1)})}pow(e){if(e===.5){let i=er(this.rational)??Math.sqrt(Number(this.rational[0])/Number(this.rational[1]));return typeof i=="number"?new H({float:Math.sqrt(this.float)*i,rational:[1,1],sqrt:i}):new H({float:Math.pow(this.float,e),rational:i,sqrt:this.sqrt**e})}return new H({float:Math.pow(this.float,e),rational:gi(this.rational,e),sqrt:this.sqrt**e})}div(e){return typeof e=="number"?e={float:e}:M(e)&&(e={rational:e}),new H({float:this.float/(e.float??1),rational:nr(this.rational,e.rational??[1,1]),sqrt:this.sqrt/(e.sqrt??1)})}add(e){return typeof e=="number"?e={float:e}:M(e)&&(e={rational:e}),Math.abs(this.float)===1&&Math.abs(e.float??1)===1&&this.sqrt===1&&(e.sqrt??1)===1&&e.rational?new H({float:this.float*(e.float??1),rational:An(this.rational,e.rational)}):new H(this.asFloat()+new H(e).asFloat())}sub(e){return typeof e=="number"?e={float:e}:M(e)&&(e={rational:e}),Math.abs(this.float)===1&&Math.abs(e.float??1)===1&&this.sqrt===1&&(e.sqrt??1)===1&&e.rational?new H({float:this.float*(e.float??1),rational:An(this.rational,ue(e.rational))}):new H(this.asFloat()-new H(e).asFloat())}eq(e){return this.float===e.float&&this.sqrt===e.sqrt&&this.rational[0]===e.rational[0]&&this.rational[1]===e.rational[1]}};H.zero=new H(0),H.one=new H(1);var Pi=H;function je(n){let[e,i]=Gf(n);return[e,i]}function Gf(n){n.isCanonical;let e=n.engine;if(n.head==="Multiply"){let r=[],o=[1,1];for(let s of n.ops){let a=zf(s);a?o=G(o,a):r.push(s)}return X(o)?[o,n]:[o,e.mul(...r)]}if(n.head==="Divide"){let[r,o]=je(n.op1),[s,a]=je(n.op2),l=G(r,un(s));return a.isOne?[l,o]:X(l)?[l,n]:[l,e.div(o,a)]}if(n.head==="Power"){if(n.op2.numericValue===null)return[[1,1],n];let[r,o]=je(n.op1);if(X(r))return[r,n];let s=b(n.op2);return typeof s=="number"&&Number.isInteger(s)?[gi(r,s),e.pow(o,n.op2)]:[[1,1],n]}if(n.head==="Sqrt"){let[r,o]=je(n.op1),s=er(r);return s?[s,e.sqrt(o)]:[[1,1],n]}if(n.head,n.head==="Negate"){let[r,o]=je(n.op1);return[ue(r),o]}let i=n.numericValue;if(i instanceof ln.default&&i.re<0)return[[-1,1],e.number(e.complex(-i.re,-i.im))];let t=J(n);return t?[t,e.One]:[[1,1],n]}function J(n){let e=n.numericValue;if(Array.isArray(e))return e;if(e!==null){if(typeof e=="number"&&Number.isInteger(e))return e>1e9||e<-1e9?[R(e),BigInt(1)]:[e,1];if(e instanceof ve&&e.isInteger())return[R(e),BigInt(1)]}}function zf(n){let e=J(n);if(e)return e;let i=b(n);if(i!==null&&(e=xi(i),M(e)))return e}function nr(n,e){return G(n,un(e))}function An(n,e){if(Array.isArray(e)||e.numericValue!==null&&e.numericValue instanceof ln.default,typeof n[0]=="number"&&!Number.isFinite(n[0]))return n;let i=Array.isArray(e)?e:e.numericValue;if(i===null)return n;if(Array.isArray(i)){if(z(i))return n=[BigInt(n[0]),BigInt(n[1])],[i[1]*n[0]+i[0]*n[1],i[1]*n[1]];if(!Number.isFinite(i[0]))return i;if(z(n)){let t=[BigInt(i[0]),BigInt(i[1])];return[t[1]*n[0]+t[0]*n[1],t[1]*n[1]]}return[i[1]*n[0]+i[0]*n[1],i[1]*n[1]]}return i instanceof ve?i.isNaN()?[Number.NaN,1]:i.isFinite()?(i.isInteger(),U(n)&&(n=[BigInt(n[0]),BigInt(n[1])]),[n[0]+n[1]*R(i.toString()),n[1]]):[i.isNegative()?-1/0:1/0,1]:i instanceof ln.default?[Number.NaN,1]:(!Number.isFinite(i)||Number.isInteger(i),Number.isFinite(i)?U(n)?[n[0]+n[1]*i,n[1]]:[n[0]+n[1]*R(i),n[1]]:[i,1])}function G(n,e){if(Array.isArray(e)||e.numericValue!==null&&e instanceof ln.default,Array.isArray(e))return U(n)&&U(e)?[n[0]*e[0],n[1]*e[1]]:(U(n)&&(n=[R(n[0]),R(n[1])]),U(e)&&(e=[R(e[0]),R(e[1])]),[n[0]*e[0],n[1]*e[1]]);let i=e.numericValue;return i!==null&&typeof i=="number"?(Number.isInteger(i),U(n)?[n[0]*i,n[1]]:[n[0]*R(i),n[1]]):i instanceof ve?(i.isInteger(),U(n)?[R(i.toString())*R(n[0]),R(n[1])]:[R(i.toString())*n[0],n[1]]):Array.isArray(i)?z(i)?[i[0]*R(n[0]),i[1]*R(n[1])]:U(n)?[n[0]*i[0],n[1]*i[1]]:[n[0]*R(i[0]),n[1]*R(i[1])]:n}function b(n){if(n==null)return null;let e=n.numericValue;if(e===null)return null;if(typeof e=="number")return e;if(e instanceof ve)return e.toNumber();if(Array.isArray(e)){let[i,t]=e;return typeof i=="number"&&typeof t=="number"?i/t:Number(i)/Number(t)}return!(e instanceof ln.default)||e.im,null}function He(n){if(n==null)return null;let e=n.numericValue;if(e===null)return null;if(e instanceof ve)return e;if(typeof e=="number")return n.engine.bignum(e);if(Array.isArray(e)){let[i,t]=e;return typeof i=="number"&&typeof t=="number"?n.engine.bignum(i/t):n.engine.bignum(i).div(t.toString())}return!(e instanceof ln.default)||e.im,null}function V(n){if(n==null)return null;let e=n.numericValue;if(e===null)return null;if(typeof e=="number")return Number.isInteger(e)&&e>=-fi&&e<=fi?e:null;if(e instanceof ve){if(e.isInteger()){let t=e.toNumber();if(t>=-fi&&t<=fi)return t}return null}if(n.isCanonical)return null;let i=e;if(Array.isArray(i)){let[t,r]=i,o;return typeof t=="number"&&typeof r=="number"?o=t/r:o=Number(t)/Number(r),Number.isInteger(o)&&o>=-fi&&o<=fi?o:null}return null}function bi(n,e,i){if(n===e)return 0;let t=n.N(),r=e.N(),o=t.numericValue,s=r.numericValue;if(o===null||s===null){let u=t.sgn,f=r.sgn;return typeof u!="number"||typeof f!="number"?void 0:u===0&&f===0?0:u<0&&f>0?-1:u>0&&f<0?1:void 0}if(i??(i=n.engine.tolerance),o instanceof ln.default&&s instanceof ln.default)return di(o.re-s.re,i)===0&&di(o.im-s.im,i)===0?0:void 0;if(o instanceof ln.default||s instanceof ln.default)return;if(!M(o)&&M(s),typeof o=="number"&&typeof s=="number")return di(s-o,i)===0?0:o<s?-1:1;let a=n.engine,l=a.bignum(s).sub(a.bignum(o));return di(l,i)===0?0:l.isPos()?1:-1}function co(n,e){for(n.isInteger()&&e.isInteger();!e.isZero();)[n,e]=[e,n.modulo(e)];return n.abs()}function da(n,e){return n.mul(e).div(co(n,e))}function mo(n,e){if(!e.isInteger()||e.isNegative())return n._BIGNUM_NAN;if(e.lessThan(10))return n.bignum([1,1,2,6,24,120,720,5040,40320,362880,3628800][e.toNumber()]);if(e.gt(Number.MAX_SAFE_INTEGER)){let o=n._BIGNUM_ONE,s=n._BIGNUM_TWO;for(;s.lessThan(e);)o=o.mul(s),s=s.add(1);return o}if(e.modulo(2).eq(1))return e.times(mo(n,e.minus(1)));let i=e.toNumber(),t=e,r=e;for(;i>2;)i-=2,t=t.add(i),r=r.mul(t);return r}function ca(n,e){if(!e.isInteger()||e.isNegative())return n._BIGNUM_NAN;if(e.lessThan(1))return n._BIGNUM_ONE;let i=e;for(;e.greaterThan(2);)e=e.minus(2),i=i.mul(e);return i}var fa=7;function po(n,e){if(e.isNegative())return n._BIGNUM_NAN;let i=n.cache("gamma-p-ln",()=>["0.99999999999999709182","57.156235665862923517","-59.597960355475491248","14.136097974741747174","-0.49191381609762019978","0.33994649984811888699e-4","0.46523628927048575665e-4","-0.98374475304879564677e-4","0.15808870322491248884e-3","-0.21026444172410488319e-3","0.2174396181152126432e-3","-0.16431810653676389022e-3","0.84418223983852743293e-4","-0.2619083840158140867e-4","0.36899182659531622704e-5"].map(s=>n.bignum(s))),t=i[0];for(let s=i.length-1;s>0;--s)t=t.add(i[s].div(e.add(s)));let r=n.cache("gamma-g-ln",()=>n.bignum(607).div(128)),o=e.add(r).add(n._BIGNUM_HALF);return n._BIGNUM_NEGATIVE_ONE.acos().mul(n._BIGNUM_TWO).log().mul(n._BIGNUM_HALF).add(o.log().mul(e.add(n._BIGNUM_HALF)).minus(o).add(t.log()).minus(e.log()))}function ho(n,e){if(e.lessThan(n._BIGNUM_HALF)){let o=n._BIGNUM_NEGATIVE_ONE.acos();return o.div(o.mul(e).sin().mul(ho(n,n._BIGNUM_ONE.sub(e))))}if(e.greaterThan(100))return po(n,e).exp();e=e.sub(1);let i=n.cache("lanczos-7-c",()=>["0.99999999999980993227684700473478","676.520368121885098567009190444019","-1259.13921672240287047156078755283","771.3234287776530788486528258894","-176.61502916214059906584551354","12.507343278686904814458936853","-0.13857109526572011689554707","9.984369578019570859563e-6","1.50563273514931155834e-7"].map(o=>n.bignum(o))),t=i[0];for(let o=1;o<fa+2;o++)t=t.add(i[o].div(e.add(o)));let r=e.add(fa).add(n._BIGNUM_HALF);return n._BIGNUM_NEGATIVE_ONE.acos().times(n._BIGNUM_TWO).sqrt().mul(t.mul(r.neg().exp()).mul(r.pow(e.add(n._BIGNUM_HALF))))}function ir(n){return n.isFinite()?n.d.length>3||n.d.length===3&&n.d[0]>=90?!1:(n.precision()<=16,n.e<308&&n.e>-306):!0}var Lo=he(fe(),1);var xo=he(fe(),1);function dt(n){if(n.head==="Power"&&n.op2.numericValue!==null){let e=V(n.op2);return e!==null&&e>0?e:1}if(n.head==="Multiply"){let e=1;for(let i of n.ops){let t=dt(i);t>1&&(e=e+t)}return e}return 1}function go(n){if(n.head==="Power"&&n.op2.numericValue!==null){let e=V(n.op2);return e!==null&&e>0?e:1}if(n.head==="Multiply"){let e=1;for(let i of n.ops)e=Math.max(e,dt(i));return e}return 1}function ft(n){return n.symbol?n.symbol:n.ops?(typeof n.head=="string"?n.head:ft(n.head))+'"'+n.ops.map(i=>ft(i)).filter(i=>i.length>0).join('"'):""}var bn=1e5;function bo(n){return[...n].sort((e,i)=>{let t=ft(e),r=ft(i);if(!t&&!r)return fn(e,i);if(!t)return 1;if(!r||t<r)return-1;if(t>r)return 1;let o=dt(e),s=dt(i);if(o!==s)return s-o;let a=go(e),l=go(i);return a!==l?a-l:fn(e,i)})}function fn(n,e){if(n===e||n.numericValue!==null&&n.numericValue===e.numericValue)return 0;let i=b(n);if(i!==null){let t=b(e);return t!==null?i-t:-1}if(n.numericValue instanceof xo.Complex)return e.numericValue instanceof xo.Complex?n.numericValue.re===e.numericValue.re?Math.abs(n.numericValue.im)===Math.abs(e.numericValue.im)?n.numericValue.im-e.numericValue.im:Math.abs(n.numericValue.im)-Math.abs(e.numericValue.im):n.numericValue.re-e.numericValue.re:e.numericValue!==null?1:-1;if(n.numericValue)return e.numericValue?1:-1;if(n.head==="Sqrt"&&n.op1.numericValue)return e.head==="Sqrt"&&e.op1.numericValue?fn(n.op1,e.op1):-1;if(n.symbol)return e.symbol?n.symbol===e.symbol?0:n.symbol>e.symbol?1:-1:e.numericValue!==null?1:-1;if(n.ops){if(e.ops){let t=n.functionDefinition?.complexity??bn,r=e.functionDefinition?.complexity??bn;return t===r?typeof n.head=="string"&&typeof e.head=="string"?n.head===e.head?Fi(n)-Fi(e):n.head<e.head?1:-1:Fi(n)-Fi(e):t-r}return e.numericValue!==null||e.symbol?1:-1}if(n.string)return e.string?n.string.length!==e.string.length?e.string.length-n.string.length:e.string<n.string?-1:n.string>e.string?1:0:e.keys?-1:1;if(n.keys&&e.keys){if(n.keysCount!==e.keysCount)return e.keysCount-n.keysCount;let t=0,r=0;for(let o of e.keys)t+=e.getKey(o).complexity??bn;for(let o of n.keys)r+=n.getKey(o).complexity??bn;return r-t}return(n.complexity??bn)-(e.complexity??bn)}function yo(n,{recursive:e=!1}){if(n.ops){let i=n.ops;e&&(i=i.map(r=>yo(r,{recursive:e})));let t=n.engine;return n.head==="Add"?i=bo(i):(n.head==="Multiply"||(t.lookupFunction(n.head)?.commutative??!1))&&(i=[...i].sort(fn)),t._fn(n.head,i,{canonical:n.isCanonical})}return n}function Fi(n){return n.keys!==null?1+n.keysCount:n.ops?(typeof n.head=="string"?1:Fi(n.head))+[...n.ops].reduce((e,i)=>e+Fi(i),0):1}function Zf(n){let e=[];for(let i=0;i<n.length;i++){let t=n.charCodeAt(i);if(t>=55296&&t<=56319){let r=n.charCodeAt(i+1);if(r>=56320&&r<=57343){let o=t-55296,s=r-56320;t=2**16+o*2**10+s,i++}}e.push(t)}return e}var tr=8205,ma=[127462,127487];function pa(n){return n===tr||n===65038||n===65039||n>=127995&&n<=128e3||n>=129456&&n<=129460||n>=917536&&n<=917632}function jf(n){return n>=ma[0]&&n<=ma[1]}function ha(n){if(/^[\u0020-\u00FF]*$/.test(n))return n;let e=[],i=Zf(n),t=0;for(;t<i.length;){let r=i[t++],o=i[t];if(o===tr){let s=t-1;for(t+=2;i[t]===tr;)t+=2;e.push(String.fromCodePoint(...i.slice(s,2*t-s+1)))}else if(pa(o)){let s=t-1;for(;pa(i[t]);)t+=i[t]===tr?2:1;e.push(String.fromCodePoint(...i.slice(s,2*t-s-1)))}else jf(r)?(t+=1,e.push(String.fromCodePoint(...i.slice(t-2,2)))):e.push(String.fromCodePoint(r))}return e}var Eo=class{constructor(e){this.obeyspaces=!1;e=e.replace(/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/g,""),this.s=ha(e),this.pos=0}end(){return this.pos>=this.s.length}get(){return this.pos<this.s.length?this.s[this.pos++]:""}peek(){return this.s[this.pos]}match(e){let i;return typeof this.s=="string"?i=e.exec(this.s.slice(this.pos)):i=e.exec(this.s.slice(this.pos).join("")),i?.[0]?(this.pos+=i[0].length,i[0]):null}next(){if(this.end())return null;if(!this.obeyspaces&&this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]+/))return"<space>";if(this.obeyspaces&&this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]/))return"<space>";let e=this.get();if(e==="\\"){if(!this.end()){let i=this.match(/^[a-zA-Z*]+/);if(i)this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]*/);else if(i=this.get(),i===" ")return"<space>";return"\\"+i}}else{if(e==="{")return"<{>";if(e==="}")return"<}>";if(e==="^"){if(this.peek()==="^"){this.get();let i=this.match(/^(\^(\^(\^(\^[0-9a-f])?[0-9a-f])?[0-9a-f])?[0-9a-f])?[0-9a-f][0-9a-f]/);if(i)return String.fromCodePoint(parseInt(i.slice(i.lastIndexOf("^")+1),16))}return e}else if(e==="#"){if(!this.end()){let i=!1;if(/[0-9?]/.test(this.peek())&&(i=!0,this.pos+1<this.s.length)){let t=this.s[this.pos+1];i=/[^0-9A-Za-z]/.test(t)}return i?"#"+this.get():"#"}}else if(e==="$")return this.peek()==="$"?(this.get(),"<$$>"):"<$>"}return e}};function Hf(n,e){let i=n.next();if(!i)return[];let t=[];if(i!=="\\relax"){if(i==="\\noexpand")i=n.next(),i&&t.push(i);else if(i==="\\obeyspaces")n.obeyspaces=!0;else if(i==="\\space"||i==="~")t.push("<space>");else if(i==="\\bgroup")t.push("<{>");else if(i==="\\egroup")t.push("<}>");else if(i==="\\string")i=n.next(),i&&(i[0]==="\\"?Array.from(i).forEach(r=>t.push(r==="\\"?"\\backslash":r)):i==="<{>"?t.push("\\{"):i==="<space>"?t.push("~"):i==="<}>"&&t.push("\\}"));else if(i==="\\csname"){for(;n.peek()==="<space>";)n.next();let r="",o=!1,s=[];do{if(s.length===0)if(/^#[0-9?]$/.test(n.peek())){let a=n.get().slice(1);s=be(e?.[a]??e?.["?"]??"\\placeholder{}",e),i=s[0]}else i=n.next(),s=i?[i]:[];o=s.length===0,!o&&i==="\\endcsname"&&(o=!0,s.shift()),o||(o=i==="<$>"||i==="<$$>"||i==="<{>"||i==="<}>"||!!i&&i.length>1&&i[0]==="\\"),o||(r+=s.shift())}while(!o);r&&t.push("\\"+r),t=t.concat(s)}else if(i!=="\\endcsname")if(i.length>1&&i[0]==="#"){let r=i.slice(1);t=t.concat(be(e?.[r]??e?.["?"]??"\\placeholder{}",e))}else t.push(i)}return t}function be(n,e=[]){let i=n.toString().split(/\r?\n/),t="",r="";for(let a of i){t+=r,r=" ";let l=a.match(/((?:\\%)|[^%])*/);l!==null&&(t+=l[0])}let o=new Eo(t),s=[];do s.push(...Hf(o,e));while(!o.end());return s}function rr(n){return be(n).length}function v(n){let e="",i="";for(let t of n)t!=null&&(typeof t=="string"&&(/[a-zA-Z*]/.test(t[0])&&(i+=e),/\\[a-zA-Z]+\*?$/.test(t)?e=" ":e=""),i+=t.toString());return i}function Li(n,e){return/^[0-9]$/.test(e)?`${n}${e}`:`${n}{${e}}`}function yn(n){let e=[];if(Array.isArray(n))for(let t of n)Array.isArray(t)?e=[...e,...t]:e.push(t);else e=[n];return v(e.map(t=>({"<space>":" ","<$$>":"$$","<$>":"$","<{>":"{","<}>":"}"})[t]??t))}function ga(n){return!("kind"in n)||n.kind==="expression"}function xa(n){return"kind"in n&&n.kind==="symbol"}function ct(n){return"kind"in n&&n.kind==="matchfix"}function vo(n){return"kind"in n&&n.kind==="infix"}function or(n){return"kind"in n&&n.kind==="prefix"}function No(n){return"kind"in n&&n.kind==="postfix"}function ba(n){return"kind"in n&&n.kind==="environment"}var sr=[{latexTrigger:["\\not","<"],kind:"infix",associativity:"any",precedence:246,parse:"NotLess"},{name:"NotLess",latexTrigger:["\\nless"],kind:"infix",associativity:"any",precedence:246},{latexTrigger:["<"],kind:"infix",associativity:"any",precedence:245,parse:"Less"},{name:"Less",latexTrigger:["\\lt"],kind:"infix",associativity:"any",precedence:245},{latexTrigger:["<","="],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{name:"LessEqual",latexTrigger:["\\le"],kind:"infix",associativity:"any",precedence:241},{latexTrigger:["\\leq"],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{latexTrigger:["\\leqslant"],kind:"infix",associativity:"any",precedence:250,parse:"LessEqual"},{name:"LessNotEqual",latexTrigger:["\\lneqq"],kind:"infix",associativity:"any",precedence:245},{name:"NotLessNotEqual",latexTrigger:["\\nleqq"],kind:"infix",associativity:"any",precedence:245},{name:"LessOverEqual",latexTrigger:["\\leqq"],kind:"infix",associativity:"any",precedence:250},{name:"GreaterOverEqual",latexTrigger:["\\geqq"],kind:"infix",associativity:"any",precedence:250,parse:"GreaterEqual"},{name:"Equal",latexTrigger:["="],kind:"infix",associativity:"right",precedence:245},{latexTrigger:["*","="],kind:"infix",associativity:"right",precedence:245,parse:"StarEqual"},{name:"StarEqual",latexTrigger:["\\star","="],kind:"infix",associativity:"right",precedence:245},{name:"PlusEqual",latexTrigger:["+","="],kind:"infix",associativity:"right",precedence:245},{name:"MinusEqual",latexTrigger:["-","="],kind:"infix",associativity:"right",precedence:245},{name:"SlashEqual",latexTrigger:["/","="],kind:"infix",associativity:"right",precedence:245},{name:"EqualEqual",latexTrigger:["=","="],kind:"infix",associativity:"right",precedence:245},{name:"EqualEqualEqual",latexTrigger:["=","=","="],kind:"infix",associativity:"right",precedence:250},{name:"TildeFullEqual",latexTrigger:["\\cong"],kind:"infix",associativity:"right",precedence:245},{name:"NotTildeFullEqual",latexTrigger:["\\ncong"],kind:"infix",associativity:"right",precedence:245},{name:"Approx",latexTrigger:["\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"NotApprox",latexTrigger:["\\not","\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"ApproxEqual",latexTrigger:["\\approxeq"],kind:"infix",associativity:"right",precedence:245},{name:"NotApproxEqual",latexTrigger:["\\not","\\approxeq"],kind:"infix",associativity:"right",precedence:250},{name:"NotEqual",latexTrigger:["\\ne"],kind:"infix",associativity:"right",precedence:255},{name:"Unequal",latexTrigger:["!","="],kind:"infix",associativity:"right",precedence:245},{name:"GreaterEqual",latexTrigger:["\\ge"],kind:"infix",associativity:"right",precedence:242},{latexTrigger:["\\geq"],kind:"infix",associativity:"right",precedence:242,parse:"GreaterEqual"},{latexTrigger:[">","="],kind:"infix",associativity:"right",precedence:243,parse:"GreaterEqual"},{latexTrigger:["\\geqslant"],kind:"infix",associativity:"right",precedence:250,parse:"GreaterEqual"},{name:"GreaterNotEqual",latexTrigger:["\\gneqq"],kind:"infix",associativity:"right",precedence:245},{name:"NotGreaterNotEqual",latexTrigger:["\\ngeqq"],kind:"infix",associativity:"right",precedence:245},{latexTrigger:[">"],kind:"infix",associativity:"right",precedence:245,parse:"Greater"},{name:"Greater",latexTrigger:["\\gt"],kind:"infix",associativity:"right",precedence:245},{name:"NotGreater",latexTrigger:["\\ngtr"],kind:"infix",associativity:"right",precedence:244},{latexTrigger:["\\not",">"],kind:"infix",associativity:"right",precedence:244,parse:"NotGreater"},{name:"RingEqual",latexTrigger:["\\circeq"],kind:"infix",associativity:"right",precedence:245},{name:"TriangleEqual",latexTrigger:["\\triangleq"],kind:"infix",associativity:"right",precedence:245},{name:"DotEqual",latexTrigger:["\\doteq"],kind:"infix",associativity:"right",precedence:250},{name:"DotEqualDot",latexTrigger:["\\doteqdot"],kind:"infix",associativity:"right",precedence:250},{name:"FallingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:250},{name:"RisingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:250},{name:"QuestionEqual",latexTrigger:["\\questeq"],kind:"infix",associativity:"right",precedence:245},{name:"MuchLess",latexTrigger:["\\ll"],kind:"infix",associativity:"right",precedence:245},{name:"MuchGreater",latexTrigger:["\\gg"],kind:"infix",associativity:"right",precedence:245},{name:"Precedes",latexTrigger:["\\prec"],kind:"infix",associativity:"right",precedence:245},{name:"Succeeds",latexTrigger:["\\succ"],kind:"infix",associativity:"right",precedence:245},{name:"PrecedesEqual",latexTrigger:["\\preccurlyeq"],kind:"infix",associativity:"right",precedence:245},{name:"SucceedsEqual",latexTrigger:["\\curlyeqprec"],kind:"infix",associativity:"right",precedence:245},{name:"NotPrecedes",latexTrigger:["\\nprec"],kind:"infix",associativity:"right",precedence:245},{name:"NotSucceeds",latexTrigger:["\\nsucc"],kind:"infix",associativity:"right",precedence:245},{name:"Between",latexTrigger:["\\between"],kind:"infix",associativity:"right",precedence:250}];function dn(n){return typeof n=="object"&&n!==null&&"engine"in n}function q(n){return n.numericMode==="bignum"||n.numericMode==="auto"}function le(n){return n.numericMode==="auto"||n.numericMode==="complex"}function ar(n){return typeof n=="string"?n.startsWith("$")&&n.endsWith("$"):!1}function yi(n){if(typeof n=="number")return n.toString();if(typeof n=="string"){let e=n.trim();if(e.startsWith("$$")&&e.endsWith("$$"))return e.slice(2,-2);if(e.startsWith("$")&&e.endsWith("$"))return e.slice(1,-1)}return Array.isArray(n)?yi(v(n)):null}function Te(n){let e=0;for(let i=0;i<n.length;i++)e=Math.imul(31,e)+n.charCodeAt(i)|0;return Math.abs(e)}function mt(n){let e=n.numericValue;return typeof e=="number"&&Number.isInteger(e)?R(e):e instanceof N&&e.isInteger()?R(e):null}function pt(n){return n==null?[]:typeof n=="string"?[n]:dn(n)?pt(n.symbol):typeof n[Symbol.iterator]=="function"?Array.from(n).map(e=>typeof e=="string"?e:e.symbol):[]}function wn(n){return typeof n!="string"?!1:sr.some(e=>e.name===n)}function _o(n){let e=n.head;return typeof e!="string"?!1:["Equal","Less","LessEqual","Greater","GreaterEqual"].includes(e)}var Gi=he(fe(),1);var ht=he(fe(),1);var Va=he(fe(),1);function En(n){return n.string!==null||(n.symbolDefinition?.value?.string??null)!==null?!0:(n.functionDefinition??n.symbolDefinition?.value?.functionDefinition)?.iterator!==void 0}function ur(n){return n.string!==null||(n.symbolDefinition?.value?.string??null)!==null?!0:(n.functionDefinition??n.symbolDefinition?.value?.functionDefinition)?.at!==void 0}function de(n){if(n.string!==null||(n.symbolDefinition?.value?.string??null)!==null)return!0;let e=n.functionDefinition??n.symbolDefinition?.value?.functionDefinition;return e?e.at!==void 0&&Number.isFinite(e.size?.(n)??1/0):!1}function*Q(n){let e=Jf(n);if(!e){yield n;return}let i=n.engine.iterationLimit,t=0;for(;;){let{done:r,value:o}=e.next();if(r)return;if(t++>i){yield n.engine.error("iteration-limit-exceeded");return}yield o}}function Jf(n){let e=n.functionDefinition??n.symbolDefinition?.value?.functionDefinition;if(e?.iterator)return e.iterator(n);let i=n.string??n.symbolDefinition?.value?.string??null;if(i!==null){if(i.length===0)return{next:()=>({done:!0,value:void 0})};let t=0;return{next:()=>({value:n.engine.string(i.charAt(t++)),done:t>i.length})}}}function ya(n,e){let i=n.functionDefinition??n.symbolDefinition?.value?.functionDefinition;if(i?.at)return i.at(n,e);let t=n.string;if(t)return e<1?n.engine.string(t.charAt(t.length+e)):n.engine.string(t.charAt(e-1))}function ne(n,e){if(!e||n.every(t=>!t.ops||t.head!==e))return n;let i=[];for(let t of n)!t.ops||t.head!==e?i.push(t):i.push(...ne(t.ops,e));return i.length,n.length,i.length===n.length?n:i}function re(n){if(n.every(i=>i.head!=="Sequence"&&i.head!=="Delimiter"))return n;let e=[];for(let i of n)if(!i.isValid)e.push(i);else if(i.head==="Delimiter")if(i.op1.head==="Sequence"){let t=i.op1.ops??[];t.length===0?e.push(i.engine.box(["Tuple"])):e.push(...re(t))}else e.push(i.op1);else i.head==="Sequence"?i.ops&&e.push(...i.ops):e.push(i);return e}function De(n,e,i){if(e=oe(e),e=re(e),!n.strict||e.length===i)return e;let t=[...e.slice(0,i)],r=Math.min(i,e.length);for(;r<i;)t.push(n.error("missing")),r+=1;for(;r<e.length;)t.push(n.error("unexpected-argument",e[r])),r+=1;return t}function Ue(n,e,i){let t=typeof i=="number"?i:i?.count,r=typeof i=="number"||(i?.flatten??!0);if(e=oe(e),r&&(e=re(e)),typeof r=="string"&&ne(e,r),!n.strict){for(let a of e)de(a)||a.infer(n.Numbers);return e}let o=!0;t??(t=e.length);let s=[];for(let a=0;a<=Math.max(t-1,e.length-1);a++){let l=e[a];if(a>t-1)o=!1,s.push(n.error("unexpected-argument",l));else if(l===void 0)o=!1,s.push(n.error("missing"));else if(l.symbol&&!n.lookupSymbol(l.symbol)&&!n.lookupFunction(l.symbol))s.push(l);else if(l.isNumber||l.domain?.isNumber)s.push(l);else if(!l.isValid)o=!1,s.push(l);else if(!l.domain)s.push(l);else if(de(l)){for(let u of Q(l))if(!u.isNumber&&!u.domain?.isNumber){o=!1;break}o?s.push(l):s.push(n.domainError("Numbers",l.domain,l))}else l.symbolDefinition?.inferredDomain&&l.domain.isCompatible(n.Numbers,"contravariant")||l.functionDefinition?.signature.inferredSignature&&l.domain.isCompatible(n.Numbers,"contravariant")?s.push(l):(o=!1,s.push(n.domainError("Numbers",l.domain,l)))}if(o)for(let a of s)if(de(a))for(let l of Q(a))l.infer(n.Numbers);else a.infer(n.Numbers);return s}function Ge(n,e,i){return e==null?n.error("missing"):i===void 0?n.error("unexpected-argument",e):(e=e.canonical,e.head==="Sequence"&&(e=e.op1),!e.isValid||!e.domain||e.domain.isCompatible(i)?e:n.domainError(i,e.domain,e))}function lr(n,e,i){if(e.length===i.length&&e.every((r,o)=>!r.domain||r.domain.isCompatible(i[o])))return e;let t=[];for(let r=0;r<=i.length-1;r++)t.push(Ge(n,e[r],i[r]));for(let r=i.length;r<=e.length-1;r++)t.push(n.error("unexpected-argument",e[r]));return t}function Ea(n,e,i,t,r,o,s){if(!n.strict)return null;let a=[],l=!0,u=0;for(let f of r){let d=e[u++];if(!d){a.push(n.error("missing")),l=!1;continue}if(Cn(i,r.length,u-1)){a.push(d);continue}if(!d.isValid){a.push(d),l=!1;continue}if(!d.domain){a.push(d);continue}if(t&&de(d)){a.push(d);continue}if(d.symbolDefinition?.inferredDomain&&d.domain.isCompatible(f,"contravariant")){a.push(d);continue}if(d.functionDefinition?.signature.inferredSignature&&d.domain.isCompatible(f,"contravariant")){a.push(d);continue}if(!d.domain.isCompatible(f)){a.push(n.domainError(f,d.domain,d)),l=!1;continue}a.push(d)}for(let f of o){let d=e[u];if(!d)break;if(Cn(i,r.length,u)){a.push(d);continue}if(!d.isValid){a.push(d),l=!1,u+=1;continue}if(!d.domain){a.push(d),u+=1;continue}if(t&&de(d)){a.push(d);continue}if(d.symbolDefinition?.inferredDomain&&d.domain.isCompatible(f,"contravariant")){a.push(d);continue}if(!d.domain.isCompatible(f)){a.push(n.domainError(f,d.domain,d)),l=!1,u+=1;continue}a.push(d),u+=1}if(s)for(let f of e.slice(u)){if(u+=1,Cn(i,r.length,u-1)){a.push(f);continue}if(!f.isValid){a.push(f),l=!1;continue}if(!f.domain){a.push(f);continue}if(t&&de(f)){a.push(f);continue}if(f.symbolDefinition?.inferredDomain&&f.domain.isCompatible(s,"contravariant")){a.push(f);continue}if(!f.domain.isCompatible(s)){a.push(n.domainError(s,f.domain,f)),l=!1;continue}a.push(f)}if(u<e.length)for(let f of e.slice(u))a.push(n.error("unexpected-argument",f)),l=!1;if(!l)return a;u=0;for(let f of r)Cn(i,r.length,u)||(!t||!de(e[u]))&&e[u].infer(f),u+=1;for(let f of o)(!t||!de(e[u]))&&e[u]?.infer(f),u+=1;if(s)for(let f of e.slice(u))Cn(i,r.length,u)||(!t||!de(f))&&f.infer(s),u+=1;return null}function fr(n){if(!n)return;let e=n.engine,i=[],t=n.ops?.length==3,r=n.ops[0].ops[0].ops,o=r?.length??0,s=null;if(!(t&&(s=n.ops[2].ops[0].ops,r?.length!=s?.length))){for(let a=0;a<o;a++){let l,u,f=null,d=null;u=r[a].canonical,r&&r[a].head==="Equal"&&(u=r[a].op1.canonical,f=r[a].op2.canonical),s&&(d=s[a].canonical),d&&f?l=Xn(e.tuple([u,f,d])):d?l=Xn(e.tuple([u,e.One,d])):f?l=Xn(e.tuple([u,f])):l=Xn(u),l&&i.push(l)}return i}}function Xn(n){if(!n)return;let e=n.engine,i=null,t=null,r=null;return n.head!=="Tuple"&&n.head!=="Triple"&&n.head!=="Pair"&&n.head!=="Single"?i=n:(i=n.ops[0]??null,t=n.ops[1]?.canonical??null,r=n.ops[2]?.canonical??null),i.head==="Hold"&&(i=i.op1),i.symbol&&(e.declare(i.symbol,{domain:"Integers"}),i.bind()),t&&t.isFinite&&(t=Ge(e,t,"Integers")),r&&r.isFinite&&(r=Ge(e,r,"Integers")),t&&r?e.tuple([i,t,r]):r?e.tuple([i,e.One,r]):t?e.tuple([i,t]):i}function Mn(n){let e=1,i=e+Wt,t,r=!0;if(n&&(n.head==="Tuple"||n.head==="Triple"||n.head==="Pair"||n.head==="Single")){if(t=(n.op1.head==="Hold"?n.op1.op1.symbol:n.op1.symbol)??"Nothing",e=V(n.op2)??1,Number.isFinite(e)||(r=!1),n.op3.symbol==="Nothing"||n.op3.isInfinity)r=!1;else{let o=V(n.op3);o===null?r=!1:(i=o,Number.isFinite(i)||(r=!1))}!r&&Number.isFinite(e)&&(i=e+Wt)}else n&&(t=(n.head==="Hold"?n.op1.symbol:n.symbol)??"Nothing",e=1,i=e+Wt);return[t,e,i,r]}function qi(n,e){return n.flatMap(i=>e.map(t=>[i,t]))}function vn(n,e){return Array.from({length:e-n+1},(i,t)=>n+t)}var Wf={Add:["+",11],Negate:["-",14],Subtract:["-",11],Multiply:["*",12],Divide:["/",13],Equal:["===",8],NotEqual:["!==",8],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["&&",4],Or:["||",3],Not:["!",14]},Yf={Abs:"Math.abs",Add:(n,e)=>n.length===1?e(n[0]):`(${n.map(i=>e(i)).join(" + ")})`,Arccos:"Math.acos",Arcosh:"Math.acosh",Arsin:"Math.asin",Arsinh:"Math.asinh",Arctan:"Math.atan",Artanh:"Math.atanh",Ceiling:"Math.ceil",Chop:"_SYS.chop",Cos:"Math.cos",Cosh:"Math.cosh",Exp:"Math.exp",Floor:"Math.floor",Gamma:"_SYS.gamma",GCD:"_SYS.gcd",Integrate:(n,e,i)=>Kf(n,e,i),LCM:"_SYS.lcm",Limit:(n,e)=>`_SYS.limit(${e(n[0])}, ${e(n[1])})`,Ln:"Math.log",List:(n,e)=>`[${n.map(i=>e(i)).join(", ")}]`,Log:(n,e)=>n.length===1?`Math.log(${e(n[0])})`:`(Math.log(${e(n[0])}) / Math.log(${e(n[1])}))`,LogGamma:"_SYS.lngamma",Lb:"Math.log2",Max:"Math.max",Min:"Math.min",Power:(n,e)=>{let i=n[0];if(i===null)throw new Error("Power: no argument");let t=b(n[1]);return t===.5?`Math.sqrt(${e(i)})`:t===1/3?`Math.cbrt(${e(i)})`:t===1?e(i):t===-1?`1 / (${e(i)})`:t===-.5?`1 / Math.sqrt(${e(i)})`:`Math.pow(${e(i)}, ${e(n[1])})`},Range:(n,e)=>{if(n.length===0)return"[]";if(n.length===1)return`Array.from({length: ${e(n[0])}}, (_, i) => i)`;let i=e(n[0]),t=e(n[1]),r=n[2]?e(n[2]):"1";if(i===null)throw new Error("Range: no start");if(t===null&&(t=i,i="1"),r==="0")throw new Error("Range: step cannot be zero");if(parseFloat(r)===1){let o=parseFloat(t),s=parseFloat(i);return o!==null&&s!==null?o-s<50?`[${Array.from({length:o-s+1},(a,l)=>s+l).join(", ")}]`:`Array.from({length: ${o-s+1}
|
|
4
4
|
}, (_, i) => ${i} + i)`:`Array.from({length: ${t} - ${i} + 1
|
|
5
|
-
}, (_, i) => ${i} + i)`}return`Array.from({length: Math.floor((${t} - ${i}) / ${r}) + 1}, (_, i) => ${i} + i * ${r})`},Root:(n,e)=>{let i=n[0];if(i===null)throw new Error("Root: no argument");let t=n[1];return t===null?`Math.sqrt(${e(i)})`:`Math.pow(${e(i)}, 1 / (${e(t)}))`},Random:"Math.random",Round:"Math.round",Square:(n,e)=>{let i=n[0];if(i===null)throw new Error("Square: no argument");return`Math.pow(${e(i)}, 2)`},Sgn:"Math.sign",Sin:"Math.sin",Sinh:"Math.sinh",Sqrt:"Math.sqrt",Tan:"Math.tan",Tanh:"Math.tanh"},
|
|
5
|
+
}, (_, i) => ${i} + i)`}return`Array.from({length: Math.floor((${t} - ${i}) / ${r}) + 1}, (_, i) => ${i} + i * ${r})`},Root:(n,e)=>{let i=n[0];if(i===null)throw new Error("Root: no argument");let t=n[1];return t===null?`Math.sqrt(${e(i)})`:`Math.pow(${e(i)}, 1 / (${e(t)}))`},Random:"Math.random",Round:"Math.round",Square:(n,e)=>{let i=n[0];if(i===null)throw new Error("Square: no argument");return`Math.pow(${e(i)}, 2)`},Sgn:"Math.sign",Sin:"Math.sin",Sinh:"Math.sinh",Sqrt:"Math.sqrt",Tan:"Math.tan",Tanh:"Math.tanh"},So=class extends Function{constructor(i){super("_SYS","_",`return ${i}`);this.sys={chop:di,factorial:Qt,gamma:Ai,gcd:In,integrate:(i,t,r)=>Xt(i,t,r,1e7),lcm:Yt,lngamma:rt,limit:ui};return new Proxy(this,{apply:(t,r,o)=>super.apply(r,[this.sys,...o]),get:(t,r)=>r==="toString"?()=>i:t[r]})}};function Qf(n,e){let i=ge(n,e);return new So(i)}function va(n){let e=n.unknowns;return Qf(n,{operators:i=>Wf[i],functions:i=>Yf[i],var:i=>{let t={Pi:"Math.PI",ExponentialE:"Math.E",NaN:"Number.NaN",ImaginaryUnit:"Number.NaN",Half:"0.5",MachineEpsilon:"Number.EPSILON",GoldenRatio:"((1 + Math.sqrt(5)) / 2)",CatalanConstant:"0.91596559417721901",EulerGamma:"0.57721566490153286"}[i];if(t!==void 0)return t;if(e.includes(i))return`_.${i}`},string:i=>JSON.stringify(i),number:i=>i.toString(),indent:0,ws:i=>i??""})}function Na(n,e,i,t){if(n==="Error")throw new Error("Error");if(n==="Sequence")return e.length===0?"":`(${e.map(o=>ge(o,t,i)).join(", ")})`;if(n==="Sum"||n==="Product")return Xf(n,e,t);if(e.every(o=>!En(o))){let o=t.operators?.(n);if(wn(n)&&e.length>2&&o){let s=[];for(let a=0;a<e.length-1;a++)s.push(Na(n,[e[a],e[a+1]],o[1],t));return`(${s.join(") && (")})`}if(o!==void 0){if(e===null)return"";let s;return e.length===1?s=`${o[0]}${ge(e[0],t,o[1])}`:s=e.map(a=>ge(a,t,o[1])).join(` ${o[0]} `),o[1]<i?`(${s})`:s}}if(n==="Function"){let o=e.slice(1).map(s=>s.symbol);return`((${o.join(", ")}) => ${ge(e[0].canonical,{...t,var:s=>o.includes(s)?s:t.var(s)})})`}if(n==="Declare")return`let ${e[0].symbol}`;if(n==="Assign")return`${e[0].symbol} = ${ge(e[1],t)}`;if(n==="Return")return`return ${ge(e[0],t)}`;if(n==="If"){if(e.length!==3)throw new Error("If: wrong number of arguments");return`((${ge(e[0],t)}) ? (${ge(e[1],t)}) : (${ge(e[2],t)}))`}if(n==="Block"){let o=[];for(let a of e)a.head==="Declare"&&o.push(a.ops[0].symbol);if(e.length===1&&o.length===0)return ge(e[0],t);let s=e.map(a=>ge(a,{...t,var:l=>o.includes(l)?l:t.var(l)}));return s[s.length-1]=`return ${s[s.length-1]}`,`(() => {${t.ws(`
|
|
6
6
|
`)}${s.join(`;${t.ws(`
|
|
7
7
|
`)}`)}${t.ws(`
|
|
8
|
-
`)}})()`}let r=t.functions?.(n);if(!r)throw new Error(`Unknown function ${n}`);if(typeof r=="function"){if(e.length===1&&
|
|
8
|
+
`)}})()`}let r=t.functions?.(n);if(!r)throw new Error(`Unknown function ${n}`);if(typeof r=="function"){if(e.length===1&&de(e[0])){let o=Vi();return`(${ge(e[0],t)}).map((${o}) => ${r(e[0].engine.box(o),s=>ge(s,t))})`}return r(e,o=>ge(o,t),t)}if(e===null)return`${r}()`;if(e.length===1&&de(e[0])){let o=Vi();return`(${ge(e[0],t)}).map((${o}) => ${r}(${ge(e[0].engine.box(o),t)}))`}return`${r}(${e.map(o=>ge(o,t)).join(", ")})`}function ge(n,e,i=0){if(n===void 0)return"";if(!n.isValid)throw new Error("Invalid expression");let t=b(n);if(t!==null)return e.number(t);let r=n.symbol;if(r!==null)return e.var?.(r)??r;if(n.string!==null)return e.string(r);let s=n.keys;if(s!==null){let l=[];for(let u of s){let f=n.getKey(u);f&&l.push(`${u}: ${ge(f,e,0)}`)}return`{${l.join(", ")}}`}let a=n.head;return typeof a=="string"?Na(a,n.ops,i,e):""}function Xf(n,e,i){if(e===null)throw new Error("Sum/Product: no arguments");if(!e[0])throw new Error("Sum/Product: no body");let[t,r,o,s]=Mn(e[1]),a=n==="Sum"?"+":"*";if(!t){let d=Vi(),c=Vi();return`${ge(e[0],i)}.reduce((${c}, ${d}) => ${c} ${a} ${d}, ${a==="+"?"0":"1"})`}let l=ge(e[0],{...i,var:d=>d===t?t:i.var(d)}),u=Vi(),f=Vi();return`(() => {
|
|
9
9
|
let ${f} = ${a==="+"?"0":"1"};
|
|
10
10
|
let ${t} = ${r};
|
|
11
11
|
const _fn = () => ${l};
|
|
@@ -14,7 +14,7 @@ var vl=Object.create;var Ts=Object.defineProperty;var Nl=Object.getOwnPropertyDe
|
|
|
14
14
|
${u}++;
|
|
15
15
|
}
|
|
16
16
|
return ${f};
|
|
17
|
-
})()`}function Pi(){return`_${Math.random().toString(36).substring(2)}`}function Zf(n,e,i){let[t,r,o]=wn(n[1]),s=pe(n[0],{...i,var:a=>a===t?a:i.var(a)});return`_SYS.integrate((${t}) => (${s}), ${r}, ${o})`}function Ea(n,e){return"normal"}function va(n,e){return"normal"}function Na(n,e){return e>2?"solidus":"radical"}function _a(n,e){if(e>3)return"inline-solidus";if(x(n)==="Divide"){let[i,t]=[rt(De(n)),rt(rn(n))];if(t<=2&&i>5)return"factor";if(i<=2&&t>5)return"reciprocal"}return"quotient"}function Sa(n,e){return"boolean"}function Ta(n,e){return"solidus"}function Ba(n,e){return"compact"}function Da(n,e,i){if(i.repeatingDecimal&&i.repeatingDecimal!=="none"){let o=n.slice(0,-1);for(let s=0;s<n.length-16;s++){let a=o.substring(0,s);for(let l=0;l<17;l++){let u=o.substring(s,s+l+1),f=Math.floor((o.length-a.length)/u.length);if(f<=3)break;if((a+u.repeat(f+1)).startsWith(o)){if(u==="0")return vo(a,i);let d={vinculum:"\\overline{#}",parentheses:"(#)",dots:"\\overset{\\cdots}{#1}#2\\overset{\\cdots}{#3}",arc:"\\wideparen{#}"}[i.repeatingDecimal]??"\\overline{#}";return d=d.replace(/#1/g,u[0]).replace(/#2/g,u.slice(1)).replace(/#3/g,u.slice(-1)).replace(/#/,u),vo(a,i)+d}}}}let t=typeof i.fractionalDigits=="number"?i.fractionalDigits:1/0;t<0&&(t=t-e),t<0&&(t=0);let r=n.length>t;return r&&(n=n.substring(0,t)),n=vo(n,i),r&&(n+=i.truncationMarker),n}function ka(n,e){return!n||n==="0"?"":e.beginExponentMarker?e.beginExponentMarker+n+(e.endExponentMarker??""):`10^{${n}}`}function Aa(n,e){if(n===null)return"";let i;if(typeof n=="number"||typeof n=="string")i=n;else if(typeof n=="object"&&"num"in n)i=n.num;else return"";if(typeof i=="number"){if(i===1/0)return e.positiveInfinity;if(i===-1/0)return e.negativeInfinity;if(Number.isNaN(i))return e.notANumber;let o;return e.notation==="engineering"?o=sr(i.toExponential(),e,3):e.notation==="scientific"&&(o=sr(i.toExponential(),e)),o??No(i.toString(),e)}if(i=i.toLowerCase().replace(/[\u0009-\u000d\u0020\u00a0]/g,""),i==="infinity"||i==="+infinity")return e.positiveInfinity;if(i==="-infinity")return e.negativeInfinity;if(i==="nan")return e.notANumber;if(!/^[-+\.]?[0-9]/.test(i))return"";if(i=i.replace(/[nd]$/,""),/\([0-9]+\)/.test(i)){let[o,s,a,l]=i.match(/(.+)\(([0-9]+)\)(.*)$/)??[];i=s+a.repeat(6)+l}let t="";for(i[0]==="-"?(t="-",i=i.substring(1)):i[0]==="+"&&(i=i.substring(1));i[0]==="0";)i=i.substring(1);i.length===0?i="0":i[0]==="."&&(i="0"+i);let r;return e.notation==="engineering"?r=sr(i,e,3):e.notation==="scientific"&&(r=sr(i,e)),t+(r??No(i,e))}function sr(n,e,i=1){let t=n.match(/^(.*)[e|E]([-+]?[0-9]+)$/);if(!t){let f="";if(n[0]==="-"?(f="-",n=n.substring(1)):n[0]==="+"&&(n=n.substring(1)),n.indexOf(".")<0)n.length===1?n=f+n+"e+0":n=f+n[0]+"."+n.slice(1)+"e+"+(n.length-1).toString();else{let[d,c,m]=n.match(/^(.*)\.(.*)$/);for(m||(m="");c.startsWith("0");)c=c.substring(1);c?n=f+c[0]+"."+c.slice(1)+m+"e+"+(c.length-1).toString():n=f+"0."+m+"e+0"}t=n.match(/^(.*)[e|E]([-+]?[0-9]+)$/)}if(!t)return No(n,e);let r=parseInt(t[2]),o=t[1];if(Math.abs(r)%i!==0){let f=r>0?r%i:-((i+r)%i);r=r>=0?r-f:r+f;let[d,c,m]=o.match(/^(.*)\.(.*)$/)??["",o,""];o=c+(m+"00000000000000000").slice(0,Math.abs(f))+"."+m.slice(Math.abs(f))}let s=e.avoidExponentsInRange;if(s&&r>=s[0]&&r<=s[1])return;let a="",l=o;t=l.match(/^(.*)\.(.*)$/),t&&(l=t[1],a=t[2]);let u=ka(Number(r).toString(),e);if(a=Da(a,l.length,e),l=Ca(l,e),a&&(a=e.decimalSeparator+a),!u)return l+a;if(!a){if(l==="1")return u;if(l==="-1")return"-"+u}return l+a+e.exponentProduct+u}function No(n,e){let i=n.match(/^(.*)[e|E]([-+]?[0-9]+)$/i),t=0;i?.[1]&&i[2]&&(t=parseInt(i[2]),n=i[1]);let r=i?.[1]??n,o="";i=n.match(/^(.*)\.(.*)$/),i?.[1]&&i[2]&&(r=i[1],o=i[2]),t!==0&&o&&(r+=o,t-=o.length,o="");let s=e.avoidExponentsInRange;t!==0&&s&&t>=s[0]&&t<=s[1]&&([r,o]=Wf(r,o,t));let a=ka(t.toString(),e);if(o&&(o=e.decimalSeparator+Da(o,r.length,e)),r=Ca(r,e),!a)return r+o;if(!o){if(r==="1")return a;if(r==="-1")return"-"+a}return r+o+e.exponentProduct+a}function Ia(n,e,i){let t=new RegExp(`(\\d{${e}})(?=\\d)`,"g");return n.replace(t,`$1${i}`)}function Hf(n,e,i){let t=new RegExp(`(\\d{${e}})(?=\\d)`,"g"),r=i.split("").reverse().join("");return n.split("").reverse().join("").replace(t,`$1${r}`).split("").reverse().join("")}function Jf(n,e){let i=n.split("").reverse().join(""),t=e.split("").reverse().join(""),r=i.replace(/(\d{3})(?=\d)/,`$1${t}`);return r=r.replace(/(\d{2})(?=(\d{2})+,)/g,`$1${t}`),r.split("").reverse().join("")}function wa(n,e,i){let t=e.digitGroup;typeof t!="string"&&Array.isArray(t)&&(t=t[i]);let r=typeof e.digitGroupSeparator=="string"?e.digitGroupSeparator:e.digitGroupSeparator[i];return r?t==="lakh"?i===0?Jf(n,r):Ia(n,3,r):t===!1||t<=0?n:i===1?Ia(n,t,r):Hf(n,t,r):n}function vo(n,e){return wa(n,e,1)}function Ca(n,e){return wa(n,e,0)}function Wf(n,e,i){let t=n+e,o=n.length+i,s,a;return o>0?o>=t.length?(t=t+"0".repeat(o-t.length),s=t,a=""):(s=t.slice(0,o),a=t.slice(o)):(s="0",a="0".repeat(-o)+t),[s,a]}var ln=[["alpha","\\alpha",945],["beta","\\beta",946],["gamma","\\gamma",947],["delta","\\delta",948],["epsilon","\\epsilon",949],["epsilonSymbol","\\varepsilon",1013],["zeta","\\zeta",950],["eta","\\eta",951],["theta","\\theta",952],["thetaSymbol","\\vartheta",977],["iota","\\iota",953],["kappa","\\kappa",954],["kappaSymbol","\\varkappa",1008],["lambda","\\lambda",955],["mu","\\mu",956],["nu","\\nu",957],["xi","\\xi",958],["omicron","\\omicron",959],["pi","\\pi",960],["piSymbol","\\varpi",982],["rho","\\rho",961],["rhoSymbol","\\varrho",1009],["sigma","\\sigma",963],["finalSigma","\\varsigma",962],["tau","\\tau",964],["phi","\\phi",981],["phiLetter","\\varphi",966],["upsilon","\\upsilon",965],["chi","\\chi",967],["psi","\\psi",968],["omega","\\omega",969],["Alpha","\\Alpha",913],["Beta","\\Beta",914],["Gamma","\\Gamma",915],["Delta","\\Delta",916],["Epsilon","\\Epsilon",917],["Zeta","\\Zeta",918],["Eta","\\Eta",919],["Theta","\\Theta",920],["Iota","\\Iota",921],["Kappa","\\Kappa",922],["Lambda","\\Lambda",923],["Mu","\\Mu",924],["Nu","\\Nu",925],["Xi","\\Xi",926],["Omicron","\\Omicron",927],["Rho","\\Rho",929],["Sigma","\\Sigma",931],["Tau","\\Tau",932],["Phi","\\Phi",934],["Upsilon","\\Upsilon",933],["Chi","\\Chi",935],["Psi","\\Psi",936],["Omega","\\Omega",937],["digamma","\\digamma",989],["aleph","\\aleph",8501],["bet","\\beth",8502],["gimel","\\gimel",8503],["dalet","\\daleth",8504],["ell","\\ell",8499],["turnedCapitalF","\\Finv",8498],["turnedCapitalG","\\Game",8513],["weierstrass","\\wp",8472],["eth","\\eth",240],["invertedOhm","\\mho",8487],["hBar","\\hbar",295],["hSlash","\\hslash",8463],["blackClubSuit","\\clubsuit",9827],["whiteHeartSuit","\\heartsuit",9825],["blackSpadeSuit","\\spadesuit",9824],["whiteDiamondSuit","\\diamondsuit",9826],["sharp","\\sharp",9839],["flat","\\flat",9837],["natural","\\natural",9838]],Ma=[...ln.map(([n,e,i])=>({kind:"symbol",name:n,latexTrigger:[e],parse:n})),...ln.map(([n,e,i])=>({kind:"symbol",latexTrigger:[String.fromCodePoint(i)],parse:n}))];function _o(n,e,i,t,r){if(e&&e.minPrec>=t)return null;let o=i?[i]:["Nothing"],s=!1;for(;!s;){for(s=!0,n.skipSpace();n.match(r);)o.push("Nothing"),n.skipSpace();if(n.atTerminator(e))o.push("Nothing");else{let a=n.parseExpression({...e,minPrec:t});o.push(a??"Nothing"),s=a===null}s||(n.skipSpace(),s=!n.match(r))}return o}function ur(n=""){return(e,i)=>{if(!i)return"";let t=T(i)??[];if(t.length===0)return"";if(t.length===1)return e.serialize(t[0]);n={"&":"\\&",":":"\\colon","|":"\\mvert","-":"-","\xB7":"\\cdot","\u2012":"-","\u2013":"--","\u2014":"---","\u2015":"-","\u2022":"\\bullet","\u2026":"\\ldots"}[n]??n;let r=t.reduce((o,s)=>(o.push(e.serialize(s),n),o),[]);return r.pop(),v(r)}}var Oa=[{latexTrigger:["\\placeholder"],kind:"symbol",parse:n=>{for(;n.match("<space>"););if(n.match("["))for(;!n.match("]")&&!n.atBoundary;)n.nextToken();for(;n.match("<space>"););if(n.match("<{>"))for(;!n.match("<}>")&&!n.atBoundary;)n.nextToken();return"Nothing"}},{name:"Function",latexTrigger:["\\mapsto"],kind:"infix",precedence:270,parse:(n,e)=>{let i=[];if(x(e)==="Delimiter"&&(e=p(e,1)??"Nothing"),x(e)==="Sequence")for(let r of T(e)??[]){if(!C(r))return null;i.push(C(r))}else{if(!C(e))return null;i=[C(e)]}let t=n.parseExpression({minPrec:270})??"Nothing";return x(t)==="Delimiter"&&(t=p(t,1)??"Nothing"),x(t)==="Sequence"&&(t=["Block",...T(t)??[]]),["Function",t,...i]},serialize:(n,e)=>{let i=T(e);return i===null||i.length<1?"()\\mapsto()":i.length===1?v(["()","\\mapsto",n.serialize(p(e,1))]):i.length===2?v([n.serialize(p(e,2)),"\\mapsto",n.serialize(p(e,1))]):v([n.wrapString((T(e)?.slice(1)??[]).map(t=>n.serialize(t)).join(", "),"normal"),"\\mapsto",n.serialize(p(e,1))])}},{name:"Apply",kind:"function",identifierTrigger:"apply",serialize:(n,e)=>{if(typeof p(e,1)=="string"){let t=e.slice(1);return n.serialize(t)}return n.serializeFunction(T(e))}},{latexTrigger:"\\lhd",kind:"infix",precedence:20,parse:"Apply"},{latexTrigger:"\\rhd",kind:"infix",precedence:20,parse:(n,e)=>["Apply",n.parseExpression({minPrec:21})??"Nothing",e]},{name:"Assign",latexTrigger:"\\coloneq",kind:"infix",associativity:"right",precedence:260,serialize:(n,e)=>{let i=ro(p(e,1));if(x(p(e,2))==="Function"){let t=p(e,2),r=ro(p(t,1)),o=T(t)?.slice(1)??[];return v([n.serialize(i),n.wrapString(o.map(s=>n.serialize(s)).join(", "),n.options.applyFunctionStyle(e,n.level)),"\\coloneq",n.serialize(r)])}return v([n.serialize(i),"\\coloneq",n.serialize(p(e,2))])},parse:lr},{latexTrigger:"\\coloneqq",kind:"infix",associativity:"right",precedence:260,parse:lr},{latexTrigger:"\\colonequals",kind:"infix",associativity:"right",precedence:260,parse:lr},{latexTrigger:[":","="],kind:"infix",associativity:"right",precedence:260,parse:lr},{name:"BaseForm",serialize:(n,e)=>{let i=M(p(e,2))??NaN;if(isFinite(i)&&i>=2&&i<=36){let t=M(p(e,1))??NaN;if(isFinite(t)&&Number.isInteger(t)){let r=Number(t).toString(i),o=0;if(i===2||i===10?o=4:i===16?o=2:i>16&&(o=4),o>0){let s=r;r="";for(let a=0;a<s.length;a++)a>0&&a%o===0&&(r="\\, "+r),r=s[s.length-a-1]+r}return`(\\text{${r}}_{${i}}`}}return"\\operatorname{BaseForm}("+n.serialize(p(e,1))+", "+n.serialize(p(e,2))+")"}},{name:"Sequence",serialize:ur(" ")},{name:"InvisibleOperator",serialize:ur("")},{name:"Delimiter",serialize:(n,e)=>{let i=n.options.groupStyle(e,n.level+1),t=p(e,1),r=x(t),o={Set:"{,}",List:"[,]",Tuple:"(,)",Single:"(,)",Pair:"(,)",Triple:"(,)",Sequence:"(,)",String:'""'}[typeof r=="string"?r:""],s=o?t:["Sequence",t];if(o??(o="(,)"),j(e)>1){let d=z(p(e,2));typeof d=="string"&&d.length<=3&&(o=d)}let[a,l,u]=["","",""];o.length===3?[a,l,u]=o:o.length===2?[a,u]=o:o.length===1&&(l=o);let f=t?s?ur(l)(n,s):n.serialize(t):"";return n.wrapString(f,i,a+u)}},{name:"Domain",serialize:(n,e)=>x(e)==="Error"?n.serialize(e):`\\mathbf{${n.serialize(p(e,1))}}`},{latexTrigger:["\\mathtip"],parse:n=>{let e=n.parseGroup();return n.parseGroup(),e}},{latexTrigger:["\\texttip"],parse:n=>{let e=n.parseGroup();return n.parseGroup(),e}},{latexTrigger:["\\error"],parse:n=>["Error",n.parseGroup()]},{name:"Error",serialize:(n,e)=>{let i=p(e,1);if(z(i)==="missing")return`\\error{${n.options.missingSymbol??"\\placeholder{}"}}`;let t=Xf(n,e)||"\\blacksquare",r=x(i)==="ErrorCode"?z(p(i,1)):z(i);return r==="incompatible-domain"?C(p(i,3))==="Undefined"?`\\mathtip{\\error{${t}}}{\\notin ${n.serialize(p(i,2))}}`:`\\mathtip{\\error{${t}}}{\\in ${n.serialize(p(i,3))}\\notin ${n.serialize(p(i,2))}}`:typeof r=="string"?`\\error{${t}}`:`\\error{${t}}`}},{name:"ErrorCode",serialize:(n,e)=>{let i=z(p(e,1));return i==="missing"?n.options.missingSymbol??"\\placeholder{}":i==="unexpected-command"||i==="unexpected-operator"||i==="unexpected-token"||i==="invalid-identifier"||i==="unknown-environment"||i==="unexpected-base"||i==="incompatible-domain"||i==="invalid-domain"?"":`\\texttip{\\error{\\blacksquare}}{\\mathtt{${i}}}`}},{name:"FromLatex",serialize:(n,e)=>`\\texttt{${Qf(z(p(e,1)))}}`},{name:"Latex",serialize:(n,e)=>e===null?"":v(tt(e,i=>z(i)??n.serialize(i)))},{name:"LatexString",serialize:(n,e)=>e===null?"":v(tt(e,i=>n.serialize(i)))},{name:"LatexTokens",serialize:Yf},{name:"List",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:Ra,serialize:(n,e)=>v(["\\bigl\\lbrack",ur(", ")(n,e),"\\bigr\\rbrack"])},{kind:"matchfix",openTrigger:"(",closeTrigger:")",parse:Kf},{latexTrigger:[","],kind:"infix",precedence:20,parse:(n,e,i)=>{let t=_o(n,i,e,20,",");return t===null?null:["Delimiter",["Sequence",...t],{str:","}]}},{latexTrigger:[","],kind:"prefix",precedence:20,parse:(n,e)=>{let i=_o(n,e,null,20,",");return i===null?null:["Delimiter",["Sequence",...i],{str:","}]}},{name:"Range",latexTrigger:[".","."],kind:"infix",precedence:10,parse:ed,serialize:(n,e)=>{let i=T(e);if(i===null)return"";if(i.length===1)return"1.."+n.serialize(p(e,1));if(i.length===2)return n.wrap(p(e,1),10)+".."+n.wrap(p(e,2),10);if(i.length===3){let t=M(p(e,3)),r=M(p(e,1));return t!==null&&r!==null?n.wrap(p(e,1),10)+","+n.wrap(r+t,10)+".."+n.wrap(p(e,2),10):n.wrap(p(e,1),10)+","+(n.wrap(p(e,3),275)+"+"+n.wrap(p(e,3),275))+".."+n.wrap(p(e,2),10)}return""}},{latexTrigger:[";"],kind:"infix",precedence:19,parse:(n,e,i)=>{let t=_o(n,i,e,19,";");return t===null?null:["Delimiter",["Sequence",...t],"';'"]}},{name:"String",latexTrigger:["\\text"],parse:n=>To(n),serialize:(n,e)=>{let i=T(e);return i===null||i.length===0?"\\text{}":v(["\\text{",i.map(t=>n.serialize(t)).join(""),"}"])}},{name:"Subscript",latexTrigger:["_"],kind:"infix",serialize:(n,e)=>j(e)===2?n.serialize(p(e,1))+"_{"+n.serialize(p(e,2))+"}":"_{"+n.serialize(p(e,1))+"}"},{name:"Superplus",latexTrigger:["^","+"],kind:"postfix"},{name:"Subplus",latexTrigger:["_","+"],kind:"postfix"},{name:"Superminus",latexTrigger:["^","-"],kind:"postfix"},{name:"Subminus",latexTrigger:["_","-"],kind:"postfix"},{latexTrigger:["^","*"],kind:"postfix",parse:(n,e)=>["Superstar",e]},{latexTrigger:["_","*"],kind:"postfix",parse:(n,e)=>["Substar",e]},{name:"Substar",latexTrigger:["_","\\star"],kind:"postfix"},{name:"Superdagger",latexTrigger:["^","\\dagger"],kind:"postfix"},{latexTrigger:["^","\\dag"],kind:"postfix",parse:(n,e)=>["Superdagger",e]},{name:"Prime",latexTrigger:["^","\\prime"],kind:"postfix",parse:(n,e)=>Cn(n,e,1),serialize:(n,e)=>{let i=M(p(e,2))??1,t=n.serialize(p(e,1));return i===1?t+"^\\prime":i===2?t+"^\\doubleprime":i===3?t+"^\\tripleprime":t+"^{("+n.serialize(p(e,2))+")}"}},{latexTrigger:"^{\\prime\\prime}",kind:"postfix",parse:(n,e)=>Cn(n,e,2)},{latexTrigger:"^{\\prime\\prime\\prime}",kind:"postfix",parse:(n,e)=>Cn(n,e,3)},{latexTrigger:["^","\\doubleprime"],kind:"postfix",parse:(n,e)=>Cn(n,e,2)},{latexTrigger:["^","\\tripleprime"],kind:"postfix",parse:(n,e)=>Cn(n,e,3)},{latexTrigger:"'",kind:"postfix",precedence:810,parse:(n,e)=>Cn(n,e,1)},{latexTrigger:"\\prime",kind:"postfix",precedence:810,parse:(n,e)=>Cn(n,e,1)},{latexTrigger:"\\doubleprime",kind:"postfix",precedence:810,parse:(n,e)=>Cn(n,e,2)},{latexTrigger:"\\tripleprime",kind:"postfix",precedence:810,parse:(n,e)=>Cn(n,e,3)},{latexTrigger:["^","<{>","("],kind:"postfix",parse:(n,e,i)=>{let t=C(e);if(!t||n.getIdentifierType(t)!=="function")return null;let r=n.index;n.addBoundary([")"]);let o=n.parseExpression(i);return!n.matchBoundary()||!n.match("<}>")?(n.index=r,null):["Derivative",e,o]}},{name:"InverseFunction",latexTrigger:"^{-1",kind:"postfix",parse:(n,e)=>{let i=C(e);if(!i||n.getIdentifierType(i)!=="function")return null;let t=0,r=n.index;for(;!n.atEnd&&!n.match("<}>");)if(n.match("'"))t++;else if(n.match("\\prime"))t++;else if(n.match("\\doubleprime"))t+=2;else if(n.match("\\tripleprime"))t+=3;else return n.index=r,null;return t===1?["Derivative",["InverseFunction",e]]:t>0?["Derivative",["InverseFunction",e],t]:["InverseFunction",e]},serialize:(n,e)=>n.serialize(p(e,1))+"^{-1}"},{name:"Derivative",serialize:(n,e)=>{let i=M(p(e,2))??1,t=n.serialize(p(e,1));return i===1?t+"^{\\prime}":i===2?t+"^{\\doubleprime}":i===3?t+"^{\\tripleprime}":t+"^{("+n.serialize(p(e,2))+")}"}},{kind:"environment",name:"Which",identifierTrigger:"cases",parse:So,serialize:(n,e)=>{let i=[],t=T(e);if(t)for(let r=0;r<=t.length-2;r+=2){let o=[];o.push(n.serialize(t[r+1])),o.push(n.serialize(t[r])),i.push(o.join("&"))}return v(["\\begin{cases}",i.join("\\\\"),"\\end{cases}"])}},{kind:"environment",identifierTrigger:"dcases",parse:So},{kind:"environment",identifierTrigger:"rcases",parse:So}];function To(n,e){if(!n.match("<{>"))return"''";let i=[],t="",r=null;for(;!n.atEnd&&!n.match("<}>");)if(n.peek==="<{>")i.push(To(n));else if(n.match("\\textbf")&&n.match("<{>"))i.push(To(n,{"font-weight":"bold"}));else if(n.match("\\color")){let s=n.parseStringGroup();s!==null&&(r!==null&&t?i.push(["Style",t,{dict:r}]):t&&i.push(["String",t]),t="",r={color:s})}else if(n.match("<space>"))t+=" ";else if(n.match("<$>")){let s=n.index,a=n.parseExpression()??["Sequence"];n.skipSpace(),n.match("<$>")?i.push(a):(t+="$",n.index=s)}else if(n.match("<$$>")){let s=n.index,a=n.parseExpression()??["Sequence"];n.skipSpace(),n.match("<$$>")?i.push(a):(t+="$$",n.index=s)}else{let s=n.matchChar()??n.nextToken();t+={"\\enskip":"\u2002","\\enspace":"\u2002","\\quad":"\u2003","\\qquad":"\u2003\u2003","\\space":"\u2003","\\ ":"\u2003","\\;":"\u2004","\\,":"\u2009","\\:":"\u205F","\\!":"","\\{":"{","\\}":"}","\\$":"$","\\&":"&","\\#":"#","\\%":"%","\\_":"_","\\textbackslash":"\\","\\textasciitilde":"~","\\textasciicircum":"^","\\textless":"<","\\textgreater":">","\\textbar":"|","\\textunderscore":"_","\\textbraceleft":"{","\\textbraceright":"}","\\textasciigrave":"`","\\textquotesingle":"'","\\textquotedblleft":"\u201C","\\textquotedblright":"\u201D","\\textquotedbl":'"',"\\textquoteleft":"\u2018","\\textquoteright":"\u2019","\\textbullet":"\u2022","\\textdagger":"\u2020","\\textdaggerdbl":"\u2021","\\textsection":"\xA7","\\textparagraph":"\xB6","\\textperiodcentered":"\xB7","\\textellipsis":"\u2026","\\textemdash":"\u2014","\\textendash":"\u2013","\\textregistered":"\xAE","\\texttrademark":"\u2122","\\textdegree":"\xB0"}[s]??s}r!==null&&t?i.push(["Style",`'${t}'`,{dict:r}]):t&&i.push(`'${t}'`);let o;return i.length===1?o=i[0]:i.every(s=>z(s)!==null)?o="'"+i.map(s=>z(s)).join()+"'":o=["String",...i],e?["Style",o,{dict:e}]:o}function Yf(n,e){return e===null?"":v(tt(e,i=>{let t=z(i);return t===null?n.serialize(i):t==="<{>"?"{":t==="<}>"?"}":t==="<$>"?"$":t==="<$$>"?"$$":t==="<space>"?" ":t}))}function Qf(n){return n===null?"":n.replace(/[{}\[\]\\:\-\$%]/g,e=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "})[e]??"\\"+e)}function Xf(n,e){let i=p(e,2);return i?x(i)==="LatexString"?z(p(i,1))??"":x(i)==="Hold"?n.serialize(p(i,1)):n.serialize(i):""}function Cn(n,e,i){let t=x(e);if(t==="Derivative"||t==="Prime"){let o=M(p(e,2))??1;return[t,F(p(e,1)),o+i]}let r=C(e);return r&&n.getIdentifierType(r)==="function"||x(e)?i===1?["Derivative",e]:["Derivative",e,i]:i===1?["Prime",F(e)]:["Prime",F(e),i]}function Kf(n,e){if(e===null||oe(e))return["Delimiter"];let i=x(e);if(i==="Delimiter"&&p(e,2)){let t=z(p(e,2));if(t?.length===1)return["Delimiter",p(e,1)??["Sequence"],{str:`(${t})`}]}return i==="Sequence"?j(e)===0?["Delimiter"]:j(e)===1?["Delimiter",p(e,1)]:["Delimiter",e]:i==="Matrix"&&(z(p(e,2))??"..")===".."?["Matrix",p(e,1)]:["Delimiter",e]}function Ra(n,e){if(e===null||oe(e))return["List"];let i=x(e);if(i==="Range"||i==="Linspace")return e;if(i==="Sequence")return["List",...T(e)??[]];if(i==="Delimiter"){let t=z(p(e,2))??"...";if(t===";"||t===".;.")return["List",...(T(p(e,1))??[]).map(r=>Ra(n,r))];if(t===","||t===".,.")return e=p(e,1),x(e)==="Sequence"?["List",...T(e)??[]]:["List",e??["Sequence"]]}return["List",e]}function ed(n,e){let i=n.index;if(!e)return null;let t=null,r=null;if(x(e)==="Sequence"){if(j(e)!==2)return null;if(t=p(e,1),r=p(e,2),r===null)return n.index=i,null}else t=p(e,1);if(t===null)return null;let o=n.parseExpression({minPrec:0});if(!o)return n.index=i,null;if(r){let s=M(r),a=M(t);return s!==null&&a!==null?["Range",t,o,s-a]:["Range",t,o,["Subtract",r,t]]}return["Range",t,o]}var Fi={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","\u27E6":"\\llbrack","\u27E7":"\\rrbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","\u2016":"\\Vert","\\":"\\backslash","\u2308":"\\lceil","\u2309":"\\rceil","\u230A":"\\lfloor","\u230B":"\\rfloor","\u231C":"\\ulcorner","\u231D":"\\urcorner","\u231E":"\\llcorner","\u231F":"\\lrcorner","\u23B0":"\\lmoustache","\u23B1":"\\rmoustache"};function lr(n,e){let i=n.index;if(x(e)==="InvisibleOperator"&&j(e)===2&&x(p(e,2))==="Delimiter"){let r=C(p(e,1));if(!r)return null;let o=n.parseExpression({minPrec:0});if(o===null)return n.index=i,null;let s=p(p(e,2),1),a=[];return x(s)==="Sequence"?a=T(s)??[]:s&&(a=[s]),["Assign",r,["Function",o,...a??[]]]}if(typeof x(e)=="string"){let r=x(e),o=T(e)??[],s=n.parseExpression({minPrec:0});return s===null?(n.index=i,null):["Assign",r,["Function",s,...o]]}if(!C(e))return null;let t=n.parseExpression({minPrec:0});return t===null?(n.index=i,null):["Assign",e,t]}function So(n){let e=n.parseTabular();if(!e)return["Which"];let i=["Which"];for(let t of e)if(t.length===1)i.push("True"),i.push(t[0]);else if(t.length===2){let r=z(t[1]);i.push(r?"True":to(t[1])??"True"),i.push(t[0])}return i}var Io={deg:n=>`${n}\\degree`,prime:n=>`${n}^{\\prime}`,dprime:n=>`${n}^{\\doubleprime}`,ring:n=>`\\mathring{${n}}`,hat:n=>`\\hat{${n}}`,tilde:n=>`\\tilde{${n}}`,vec:n=>`\\vec{${n}}`,bar:n=>`\\overline{${n}}`,underbar:n=>`\\underline{${n}}`,dot:n=>`\\dot{${n}}`,ddot:n=>`\\ddot{${n}}`,tdot:n=>`\\dddot{${n}}`,qdot:n=>`\\ddddot{${n}}`,acute:n=>`\\acute{${n}}`,grave:n=>`\\grave{${n}}`,breve:n=>`\\breve{${n}}`,check:n=>`\\check{${n}}`},Do={upright:n=>`\\mathrm{${n}}`,italic:n=>`\\mathit{${n}}`,bold:n=>`\\mathbf{${n}}`,script:n=>`\\mathscr{${n}}`,fraktur:n=>`\\mathfrak{${n}}`,doublestruck:n=>`\\mathbb{${n}}`,blackboard:n=>`\\mathbb{${n}}`,calligraphic:n=>`\\mathcal{${n}}`,gothic:n=>`\\mathfrak{${n}}`,sansserif:n=>`\\mathsf{${n}}`,monospace:n=>`\\mathtt{${n}}`},ko=class{constructor(e,i){this.level=-1;this.dictionary=e,this.options=i}wrap(e,i){if(e===null)return"";if(i===void 0)return this.wrapString(this.serialize(e),this.options.groupStyle(e,this.level+1));if(typeof e=="number"||di(e)){let r=M(e);return r!==null&&r<0&&i>275?this.wrap(e):this.serialize(e)}let t=x(e);if(typeof t=="string"&&t!=="Delimiter"&&t!=="Subscript"){let r=this.dictionary.ids.get(t);if(r&&(r.kind==="symbol"||r.kind==="expression"||r.kind==="prefix"||r.kind==="infix"||r.kind==="postfix")&&r.precedence<i)return this.wrapString(this.serialize(e),this.options.applyFunctionStyle(e,this.level))}return this.serialize(e)}wrapShort(e){if(e===null)return"";let i=this.serialize(e);if(C(e)!==null||x(e)==="Delimiter"&&j(e)===1||pn(e)&&!/^(-|\.)/.test(i))return i;let r=x(e);return r!=="Add"&&r!=="Negate"&&r!=="Subtract"&&r!=="PlusMinus"&&r!=="Multiply"?i:this.wrapString(i,this.options.groupStyle(e,this.level+1))}wrapString(e,i,t){if(i==="none")return e;t??(t="()");let r=t?.[0]??".",o=t?.[1]??".";return r==='"'?r="``":r==="|"?r="\\lvert":r=Fi[r]??r,o==='"'?o="''":o==="|"?o="\\rvert":o=Fi[o]??o,r==="."&&o==="."?e:((r==="."||o===".")&&i==="normal"&&(i="scaled"),i==="scaled"?`\\left${r}${e}\\right${o}}`:i==="big"?`${`\\Bigl${r}`}${e}${`\\Bigr${o}`})`:r+e+o)}wrapArguments(e){return this.wrapString((T(e)??[]).map(i=>this.serialize(i)).join(", "),this.options.applyFunctionStyle(e,this.level))}serializeSymbol(e,i){return typeof e=="string"||it(e),i?.kind==="function"?Bo(C(e)??"")??"":i?.serialize?.(this,e)??Bo(C(e))??""}serializeFunction(e,i){if(i?.serialize)return i.serialize(this,e);let t=x(e);if(typeof t=="string")return Bo(t,"auto")+this.wrapArguments(e);if(x(t)==="InverseFunction"||x(t)==="Derivative")return this.serializeFunction(t,this.dictionary.ids.get(x(t)))+this.wrapArguments(e);let r=T(e)??[];if(r.length===1)return v([this.serialize(r[0]),"\\rhd",this.wrapString(this.serialize(t),this.options.applyFunctionStyle(e,this.level))]);let o=this.options.applyFunctionStyle(e,this.level);return v(["\\operatorname{apply}",this.wrapString(this.serialize(t)+", "+this.serialize(["List",...r]),o)])}serializeDictionary(e){return`\\left\\lbrack\\begin{array}{lll}${Object.keys(e).map(i=>`\\textbf{${i}} & \\rightarrow & ${this.serialize(e[i])}`).join("\\\\")}\\end{array}\\right\\rbrack`}serialize(e){if(e==null)return"";this.level+=1;try{let i=(()=>{let t=Aa(e,this.options);if(t)return t;let r=z(e);if(r!==null)return`\\text{${r}}`;let o=ci(e);if(o!==null)return this.serializeDictionary(o);let s=C(e);if(s!==null)return this.serializeSymbol(e,this.dictionary.ids.get(s));let a=In(e);if(a){let l=this.dictionary.ids.get(a);return this.serializeFunction(e,l)}if(x(e)!==null)return this.serializeFunction(e);throw Error(`Syntax error ${e?JSON.stringify(e):""}`)})();return this.level-=1,i??""}catch{}return this.level-=1,""}applyFunctionStyle(e,i){return this.options.applyFunctionStyle(e,i)}groupStyle(e,i){return this.options.groupStyle(e,i)}rootStyle(e,i){return this.options.rootStyle(e,i)}fractionStyle(e,i){return this.options.fractionStyle(e,i)}logicStyle(e,i){return this.options.logicStyle(e,i)}powerStyle(e,i){return this.options.powerStyle(e,i)}numericSetStyle(e,i){return this.options.numericSetStyle(e,i)}};function nd(n){let e=n.match(/^([^_]+)/)?.[1]??"",i=ln.findIndex(s=>e===s[0]);if(i>=0)return[ln[i][1],n.substring(ln[i][0].length)];let t={zero:"0",one:"1",two:"2",three:"3",four:"4",five:"5",six:"6",seven:"7",eight:"8",nine:"9",ten:"10"};if(i=Object.keys(t).findIndex(s=>n.startsWith(s)),i>=0){let s=Object.keys(t)[i];return[t[s],n.substring(s.length)]}let r=n.codePointAt(0);if(i=ln.findIndex(s=>s[2]===r),i>=0)return[ln[i][1],n.substring(1)];let o={plus:"+",minus:"-",pm:"\\pm",ast:"\\ast",dag:"\\dag",ddag:"\\ddag",hash:"\\#",bottom:"\\bot",top:"\\top",bullet:"\\bullet",circle:"\\circ",diamond:"\\diamond",times:"\\times",square:"\\square",star:"\\star"};if(i=Object.keys(o).findIndex(s=>e===s),i>=0){let s=Object.keys(o)[i];return[o[s],n.substring(s.length)]}return[e,n.substring(e.length)]}function id(n){let[e,i]=nd(n),t=[];for(;i.length>0;){let o=i.match(/^_([a-zA-Z]+)(.*)/);if(!o||!Io[o[1]])break;t.push(o[1]),i=o[2]}let r=[];for(;i.length>0;){let o=i.match(/^_([a-zA-Z]+)(.*)/);if(!o||!Do[o[1]])break;r.push(o[1]),i=o[2]}return[e,t,r,i]}function fr(n,e=!0,i="auto"){let[t,r,o,s]=id(n);for(let a of r)Io[a]&&(t=Io[a](t));if(e){let a=[],l=[],u=t.match(/^([^\d].*?)(\d+)$/);for(u&&(l.push(u[2]),t=u[1]);s.length>0;)if(s.startsWith("__")){let[f,d]=fr(s.substring(2),!1,"none");a.push(f),s=d}else if(s.startsWith("_")){let[f,d]=fr(s.substring(1),!1,"none");l.push(f),s=d}else break;a.length>0&&(t=`${t}${Oi("^",a.join(","))}`),l.length>0&&(t=`${t}${Oi("_",l.join(","))}`)}for(let a of o)Do[a]&&(t=Do[a](t));if(o.length===0&&i!=="none")switch(i){case"auto":Kt(t)>1&&(t=`\\mathrm{${t}}`);break;case"operator":t=`\\operatorname{${t}}`;break;case"italic":t=`\\mathit{${t}}`;break;case"upright":t=`\\mathrm{${t}}`;break}return[t,s]}function Bo(n,e="auto"){if(n===null)return null;if(ki.test(n))return n;let i=n.match(/^(_+)(.*)/);if(i){let[o,s]=fr(i[2],!0,"none");return`\\operatorname{${"\\_".repeat(i[1].length)+o+s}}`}let[t,r]=fr(n,!0,e);return r.length>0?`\\operatorname{${n}}`:t}function Pa(n,e,i){if(i.invisibleMultiply&&(!/#1/.test(i.invisibleMultiply)||!/#2/.test(i.invisibleMultiply)))throw Error("Expected 2 arguments (#1 and #2) for invisibleMultiply");return new ko(e,i).serialize(n)}var P=class{constructor(e,i){this.engine=e,i?.latex!==void 0&&(this.verbatimLatex=i.latex)}valueOf(){return this.symbol==="True"?!0:this.symbol==="False"?!1:this.symbol==="NaN"?NaN:this.symbol==="PositiveInfinity"?1/0:this.symbol==="NegativeInfinity"?-1/0:typeof this.string=="string"?this.string:typeof this.symbol=="string"?this.symbol:b(this)??this}toString(){if(this.symbol)return this.symbol;if(this.string)return this.string;let e=this.numericValue;if(e!==null){if(typeof e=="number"||e instanceof N)return e.toString();if($(e))return`(${e[0].toString()}/${e[1].toString()})`;if(G(e))return`(${e[0].toString()}/${e[1].toString()})`;if(e instanceof Fa.Complex){let i=e.im===1?"":e.im===-1?"-":e.im.toString();return e.re===0?i+"i":e.im<0?`${e.re.toString()}${i}i`:`(${e.re.toString()}+${i}i)`}}return this.head&&typeof this.head=="string"?this.head==="List"?`[${this.ops?.map(i=>i.toString())??""}]`:this.head==="Domain"?JSON.stringify(this.json):`${this.head}(${this.ops?.map(i=>i.toString()).join(", ")??""})`:JSON.stringify(this.json)}print(){let e=console.log;e?.(this.toString())}[Symbol.toPrimitive](e){if(e==="number"){let i=this.valueOf();return typeof i=="number"?i:null}return this.toString()}toJSON(){return this.json}toMathJson(e){let i={exclude:[],shorthands:["function","symbol","string","dictionary","number"],metadata:[],fractionalDigits:"max",repeatingDecimal:!0,prettify:!0};e&&((typeof e.shorthands=="string"&&e.shorthands==="all"||e.shorthands?.includes("all"))&&(i.shorthands=["function","symbol","string","dictionary","number"]),(typeof e.metadata=="string"&&e.metadata==="all"||e.metadata?.includes("all"))&&(i.metadata=["latex","wikidata"]),e.fractionalDigits==="auto"&&(i.fractionalDigits=-this.engine.precision));let t={...i,...e,fractionalDigits:i.fractionalDigits,shorthands:i.shorthands,metadata:i.metadata};return Li(this.engine,this,t)}toLatex(e){let i=this.toMathJson(),t={imaginaryUnit:"\\imaginaryI",positiveInfinity:"\\infty",negativeInfinity:"-\\infty",notANumber:"\\operatorname{NaN}",decimalSeparator:this.engine.decimalSeparator,digitGroupSeparator:"\\,",exponentProduct:"\\cdot",beginExponentMarker:"10^{",endExponentMarker:"}",digitGroup:3,truncationMarker:"\\ldots",repeatingDecimal:"vinculum",fractionalDigits:"max",notation:"auto",avoidExponentsInRange:[-7,20],prettify:!0,invisibleMultiply:"",invisiblePlus:"",multiply:"\\times",missingSymbol:"\\blacksquare",applyFunctionStyle:Ea,groupStyle:va,rootStyle:Na,fractionStyle:_a,logicStyle:Sa,powerStyle:Ta,numericSetStyle:Ba};return e?.fractionalDigits==="auto"&&(t.fractionalDigits=-this.engine.precision),typeof t.fractionalDigits=="number"&&t.fractionalDigits>this.engine.precision&&(t.fractionalDigits=this.engine.precision),t={...t,...e??{},fractionalDigits:t.fractionalDigits},!t.prettify&&this.verbatimLatex?this.verbatimLatex:Pa(i,this.engine.indexedLatexDictionary,t)}get scope(){return null}is(e){return e==null?!1:this.isSame(this.engine.box(e))}get canonical(){return this}get latex(){return this.toLatex()}set latex(e){this.verbatimLatex=e}get symbol(){return null}get string(){return null}getSubexpressions(e){return Ao(this,e)}get subexpressions(){return this.getSubexpressions("")}get symbols(){let e=new Set;return cr(this,e),Array.from(e)}get unknowns(){let e=new Set;return mr(this,e),Array.from(e)}get freeVariables(){let e=new Set;return dr(this,e),Array.from(e)}get errors(){return this.getSubexpressions("Error")}get ops(){return null}get nops(){return 0}get op1(){return this.engine.Nothing}get op2(){return this.engine.Nothing}get op3(){return this.engine.Nothing}get isValid(){return!0}get isPure(){return!1}get isExact(){return!1}get isConstant(){return!1}get isNaN(){}get isZero(){}get isNotZero(){}get isOne(){}get isNegativeOne(){}get isInfinity(){}get isFinite(){}get isEven(){}get isOdd(){}get isPrime(){}get isComposite(){}get numericValue(){return null}get sgn(){return null}get shape(){return[]}get rank(){return 0}subs(e,i){return i?.canonical===!0?this.canonical:this}map(e,i){return this.ops?e(this.engine.function(this.head,this.ops.map(e),i)):e(this)}solve(e){return null}replace(e){return null}has(e){return!1}isLess(e){}isLessEqual(e){}isGreater(e){}isGreaterEqual(e){}get isPositive(){}get isNonNegative(){}get isNegative(){}get isNonPositive(){}isCompatible(e,i){return!1}get description(){if(this.baseDefinition&&this.baseDefinition.description)return typeof this.baseDefinition.description=="string"?[this.baseDefinition.description]:this.baseDefinition.description}get url(){return this.baseDefinition?.url??void 0}get wikidata(){return this.baseDefinition?.wikidata??void 0}get complexity(){}get baseDefinition(){}get symbolDefinition(){}get functionDefinition(){}infer(e){return!1}bind(){}reset(){}get keys(){return null}get keysCount(){return 0}getKey(e){}hasKey(e){return!1}get value(){return this.N().valueOf()}set value(e){throw new Error(`Can't change the value of \\(${this.latex}\\)`)}get domain(){}set domain(e){throw new Error(`Can't change the domain of \\(${this.latex}\\)`)}get isNumber(){}get isInteger(){}get isRational(){}get isAlgebraic(){return!1}get isReal(){}get isExtendedReal(){}get isComplex(){}get isImaginary(){}get isExtendedComplex(){}simplify(e){return this}evaluate(e){return this.simplify()}N(e){return this.evaluate({numericMode:!0})}compile(e="javascript",i){if(e!=="javascript")return;i??(i={optimize:["simplify"]});let t=this;return i.optimize.includes("simplify")&&(t=t.simplify()),i.optimize.includes("evaluate")&&(t=t.evaluate()),ba(t)}};function dr(n,e){if(n.head,n.symbol){let i=n.engine.lookupSymbol(n.symbol);if(i&&i.value!==void 0)return;let t=n.engine.lookupFunction(n.symbol);if(t&&(t.signature.evaluate||t.signature.N))return;e.add(n.symbol);return}if(n.head&&typeof n.head!="string"&&dr(n.head,e),n.ops)for(let i of n.ops)dr(i,e);if(n.keys)for(let i of n.keys)dr(n.getKey(i),e)}function cr(n,e){if(n.symbol){e.add(n.symbol);return}if(n.head&&typeof n.head!="string"&&cr(n.head,e),n.ops)for(let i of n.ops)cr(i,e);if(n.keys)for(let i of n.keys)cr(n.getKey(i),e)}function mr(n,e){if(n.symbol){let i=n.symbol;if(i==="Unknown"||i==="Undefined"||i==="Nothing")return;let t=n.engine.lookupSymbol(i);if(t&&t.value!==void 0)return;let r=n.engine.lookupFunction(i);if(r&&(r.signature.evaluate||r.signature.N))return;e.add(i);return}if(n.head&&typeof n.head!="string"&&mr(n.head,e),n.ops)for(let i of n.ops)mr(i,e);if(n.keys)for(let i of n.keys)mr(n.getKey(i),e)}function Ao(n,e){let i=!e||n.head===e?[n]:[];if(n.ops)for(let t of n.ops)i.push(...Ao(t,e));else if(n.keys)for(let t of n.keys)i.push(...Ao(n.getKey(t),e));return i}function wo(n){if(n.head==="Negate")return[-1,n.op1];let e=n.numericValue;if(e===null)return[1,n];let i=n.engine;return typeof e=="number"&&e<0?[-1,i.number(-e)]:e instanceof N&&e.isNegative()?[-1,i.number(e.neg())]:e instanceof ct.Complex&&e.re<0?[-1,i.number(i.complex(-e.re,-e.im))]:$(e)&&e[0]<0?[-1,i.number([-e[0],e[1]])]:G(e)&&e[0]<0?[-1,i.number([-e[0],e[1]])]:[1,n]}function td(n,e,i,t){let r=n.numericValue,o=n.engine;return typeof r=="number"?L(o)&&i?o.chop(i(o.bignum(r))):o.chop(e(r)):r instanceof N?o.chop(i?.(r)??e(r.toNumber())):$(r)?!L(o)||!i?o.chop(e(r[0]/r[1])):o.chop(i(o.bignum(r[0]).div(r[1]))):G(r)?i?o.chop(i(o.bignum(r[0]).div(o.bignum(r[1])))):o.chop(e(Number(r[0])/Number(r[1]))):r instanceof ct.Complex?!t||!ae(o)?NaN:o.chop(t(r)):NaN}function ee(n,e,i,t){if((n?.numericValue??null)!==null)return n.engine.number(td(n,e,i,t))}function rd(n,e,i,t,r){n.numericValue!==null&&e.numericValue;let o=n.engine,s=n.numericValue;$(s)&&(s=s[0]/s[1]);let a=e.numericValue;if($(a)&&(a=a[0]/a[1]),!L(o)&&typeof s=="number"&&typeof a=="number")return i(s,a);let l;s instanceof N?l=s:G(s)?l=o.bignum(s[0]).div(o.bignum(s[1])):s!==null&&typeof s=="number"&&(l=o.bignum(s));let u;return a instanceof N?u=a:G(a)?l=o.bignum(a[0]).div(o.bignum(a[1])):a!==null&&typeof a=="number"&&(u=o.bignum(a)),l&&u?t?.(l,u)??i(l.toNumber(),u.toNumber()):s instanceof ct.Complex||a instanceof ct.Complex?!r||!ae(o)?NaN:r(o.complex(s??l?.toNumber()??NaN),o.complex(a??u?.toNumber()??NaN)):NaN}function Mn(n,e,i,t,r){if(!(n.numericValue===null||e.numericValue===null))return n.engine.number(rd(n,e,i,t,r))}function An(n,e,i){return n==="all"?!0:n==="none"?!1:n==="first"?i===0:n==="rest"?i!==0:n==="last"?i===e:n==="most"?i!==e:!0}function pr(n,e){return e.every(i=>i instanceof P)?e.every(i=>i.isCanonical)?e:e.map(i=>i.canonical):e.map(i=>n.box(i))}function re(n){return n.every(e=>e instanceof P)?n.every(e=>e instanceof P&&e.isCanonical)?n:n.map(e=>e.canonical):n.map(e=>e.canonical)}function Rn(n,e,i,t){if(i.symbol==="ComplexInfinity")return n.NaN;if(i.isZero)return n.One;if(i.isOne)return e;if(i.isNegativeOne)return n.inv(e);if(i.numericValue!==null&&e.numericValue!==null){if(e.isOne)return n.One;if(e.isZero){if(i.isPositive)return n.Zero;if(i.isNegative)return n.ComplexInfinity}if(i.isNegativeOne)return n.inv(e);let r=b(i);if(r===.5||r===-.5){if(J(e)){let s=n._fn("Sqrt",[e],t);return r>0?s:n._fn("Divide",[n.One,s],t)}return n._fn("Power",[e,i],t)}if(e.isInfinity){if(i.numericValue instanceof qi.Complex){let o=i.numericValue.re;if(o===0)return n.NaN;if(o<0)return n.Zero;if(o>0)return n.ComplexInfinity}if(e.isNegative){if(i.isInfinity)return n.NaN}else if(e.isPositive){if(i.isNegativeOne)return n.Zero;if(i.isInfinity)return i.isNegative?n.Zero:n.PositiveInfinity}}if(i.isInfinity&&(e.isOne||e.isNegativeOne))return n.NaN}if(e.head==="Power"&&e.op1.isReal){let r=U(i);if(r!==null){let o=U(e.op2);if(o!==null)return n.pow(e.op1,n.number(r*o))}if(e.op1.isNonNegative){let o=J(i);if(o){let s=J(e.op2);if(s)return n.pow(e.op1,n.number(W(o,s)))}}}return e.head==="Power"?n._fn("Power",[e.op1,n.mul(e.op2,i)],t):n._fn("Power",[e,i],t)}function La(n,e,i){if(e.numericValue===null||i.numericValue===null)return;if(e.numericValue instanceof qi.Complex)return i.numericValue instanceof qi.Complex?n.number(e.numericValue.pow(i.numericValue)):n.number(e.numericValue.pow(b(i)??NaN));if(i.numericValue instanceof qi.Complex){let s=b(e)??null;return s!==null?n.number(n.complex(s).pow(i.numericValue)):void 0}let t=od(i);if(L(n)||e.numericValue instanceof N||i.numericValue instanceof N){let s=je(e),a=je(i);if(!s||!a)return;if(t===2)return s.isNeg()?ae(n)?n.number(n.complex(0,s.neg().sqrt().toNumber())):n.NaN:n.number(s.sqrt());if(!a.isInteger()&&s.isNeg()){if(!ae(n))return n.NaN;let l=n.complex(s.toNumber()),u=n.complex(a.toNumber());return n.number(l.pow(u))}return n.number(s.pow(a))}let r=b(i)??NaN,o=b(e)??NaN;if(t===2)return o<0?ae(n)?n.mul(n.I,n.number(Math.sqrt(-o))):n.NaN:n.number(Math.sqrt(o));if(!Number.isInteger(r)&&o<0){if(!ae(n))return n.NaN;let s=n.complex(o),a=n.complex(r);return n.number(s.pow(a))}return n.number(Math.pow(o,r))}function On(n,e,i,t){if(t!=="simplify"&&e.symbol==="ExponentialE"&&i instanceof qi.Complex){let r=i.im,o=i.re,s;if(o===0)s=this.number(this.complex(Math.cos(r),Math.sin(r)));else{if(r===0)return this.number(Math.exp(o));{let a=Math.exp(o);s=this.number(this.complex(a*Math.cos(r),a*Math.sin(r)))}}return t==="N"?s.N():s}if(e.head==="Divide")return n.function("Divide",[On(n,e.op1,i,t)??n._fn("Power",[e.op1,i]),On(n,e.op2,i,t)??n._fn("Power",[e.op2,i])]);if(e.head==="Multiply"){let r=L(n)?[BigInt(1),BigInt(1)]:[1,1],o=r,s=[];for(let a of e.ops){let l=J(a);if(l)r=W(r,l);else{let u=Co(a);u?o=W(o,u):s.push(a)}}if(!K(r)||!K(o)){let a=On(n,n.number(r),i,t),l=On(n,n.number(o),n.div(i,n.number(2)),t),u=n.mul(...s),f=On(n,u,i,t)??n._fn("Power",[u,i]);if(a&&l&&f)return n.mul(a,l,f)}}if(e.head==="Power"){if(U(e.op2)===-1&&U(i)===-1)return e.op1;let r=J(e.op2),o=J(i);if(r&&o){let s=W(r,o);return n.pow(e.op1,s)}if(t==="N"){let s=b(e.op2),a=b(i);if(s!==null&&a!==null){let l=s*a;return l===0?n.One:l===1?e.op1:n.pow(e.op1,l)}}}if(t!=="N"&&e.numericValue!==null&&e.isInteger){if(e.isOne)return n.One;if(U(i))return La(n,e,i);let o=J(i);if(o){let[s,a]=[Pe(o),hn(o)];if((s===1||s===-1)&&(a%2===0||a===3)){if(L(n)||e.numericValue instanceof N){let l=ft(e);if(a%2===0&&l<0&&!ae(n))return n.NaN;let u=l<0?a%2===0?n.I:n.NegativeOne:n.One,[f,d]=mi(l>0?l:-l,a);if(d===BigInt(1)&&f===BigInt(1))return u;if(f!==BigInt(1))return d===BigInt(1)?n.mul(u,n.number(s>=0?f:[BigInt(1),f])):n.mul(u,n.number(f),n.pow(n.number(d),i))}else if(typeof e.numericValue=="number"){if(e.numericValue<0&&a%2===0&&!ae(n))return n.NaN;let[l,u]=Wn(Math.abs(e.numericValue),a),f=e.numericValue<0?a%2===0?n.I:n.NegativeOne:n.One;if(u===1&&l===1)return f;if(l!==1)return u===1?n.mul(f,n.number(s>=0?l:[1,l])):n.mul(f,n.number(l),n.pow(n.number(u),i))}}return e.isNegative?ae?n.mul(n.I,n.box(["Sqrt",n.neg(e)])):n.NaN:void 0}}if(t!=="N"&&V(e.numericValue)){let[r,o]=e.numericValue;return n.div(n.pow(n.number(r),i),n.pow(n.number(o),i))}if(t!=="simplify"&&e.numericValue!==null&&i.numericValue!==null)return La(n,e,i)}function Vi(n,e,i){if(e.isOne)return n.One;if(e.isZero)return n.Zero;if(e.isNegativeOne)return ae(n)?n.I:n.NaN;if(e.isNegative&&!ae(n))return n.NaN;let t=J(e);if(i==="N"||i==="evaluate"&&!t)return ee(e,o=>o<0?n.complex(o).sqrt():Math.sqrt(o),o=>o.isNeg()?n.complex(o.toNumber()).sqrt():o.sqrt(),o=>o.sqrt());let r=U(e);if(r!==null){let[o,s]=Wn(Math.abs(r),2);return o===1?n._fn("Sqrt",[e]):r<0?s===1?n.number(n.complex(0,o)):n.mul(n.number(n.complex(0,o)),n.sqrt(n.number(s))):s===1?n.number(o):n.mul(n.number(o),n.sqrt(n.number(s)))}if(t){if($(t)&&!L(n)){let[o,s]=t;if(Math.abs(o)<Number.MAX_SAFE_INTEGER&&s<Number.MAX_SAFE_INTEGER){let[a,l]=Wn(Math.abs(o),2),[u,f]=Wn(s,2);if(o<0)return n.mul(n.number([a,u]),n.sqrt(n.number([l,f])),n.I);let d=n.number([a,u]);return d.isOne?n._fn("Sqrt",[n.number([l,f])]):n.mul(d,n.sqrt(n.number([l,f])))}}if(G(t)||L(n)){let o=O(t[0]),[s,a]=mi(o>0?o:-o,2),[l,u]=mi(O(t[1]),2);if(o<0)return n.mul(n.number([s,l]),n.sqrt(n.number([a,u])),n.I);let f=n.number([s,l]);return f.isOne?n._fn("Sqrt",[n.number([a,u])]):n.mul(f,n.sqrt(n.number([a,u])))}}}function od(n){if(typeof n.numericValue=="number"){let t=1/n.numericValue;return Number.isInteger(t)?t:null}if(n.numericValue instanceof N){let t=n.engine._BIGNUM_ONE.div(n.numericValue);return t.isInt()?t.toNumber():null}if(!V(n.numericValue))return null;let[e,i]=[Pe(n.numericValue),hn(n.numericValue)];return e!==1&&e!==-1?null:e*i}function $i(n){return n.head==="Sqrt"||n.head==="Power"&&b(n.op2)===.5}function Co(n){return $i(n)?J(n.op1)??null:null}var Pn=class{constructor(e,i,t){this.options=t;this._terms=[];this._hasInfinity=!1;this._hasZero=!1;this._isCanonical=!0;if(t=t?{...t}:{},"canonical"in t||(t.canonical=!0),this._isCanonical=t.canonical,this.engine=e,this._sign=1,this._rational=L(e)?[BigInt(1),BigInt(1)]:[1,1],this._rationalSqrt=this._rational,this._complex=Oo.Complex.ONE,this._bignum=e._BIGNUM_ONE,this._number=1,i)for(let r of i)this.addTerm(r)}get isEmpty(){return this._isCanonical?this._terms.length===0&&this._hasInfinity===!1&&this._hasZero===!1&&this._sign===1&&this._number===1&&this._complex.re===1&&this._complex.im===0&&this._bignum.eq(this.engine._BIGNUM_ONE)&&K(this._rational)&&K(this._rationalSqrt):this._terms.length===0}addTerm(e){if(e.isCanonical,e.head==="Multiply"){for(let o of e.ops)this.addTerm(o);return}if(this._isCanonical){if(e.symbol==="Nothing")return;if(e.numericValue!==null){if(e.isOne)return;if(e.isZero){this._hasZero=!0;return}if(e.isNegativeOne){this._sign*=-1;return}if(e.isInfinity){this._hasInfinity=!0,e.isNegative&&(this._sign*=-1);return}let s=e.numericValue;if(typeof s=="number"){s<0&&(this._sign*=-1,s=-s),Number.isInteger(s)?this._rational=W(this._rational,[s,1]):L(this.engine)?this._bignum=this._bignum.mul(s):this._number*=s;return}if(s instanceof N){s.isNegative()&&(this._sign*=-1,s=s.neg()),s.isInteger()?this._rational=W(this._rational,[O(s),BigInt(1)]):L(this.engine)?this._bignum=this._bignum.mul(s):this._number*=s.toNumber();return}if(s instanceof Oo.Complex){this._complex=this._complex.mul(s);return}if(V(s)){this._rational=W(this._rational,s),so(this._rational)&&(this._sign*=-1,this._rational=ve(this._rational));return}}let o=Co(e);if(o){this._rationalSqrt=W(this._rationalSqrt,o);return}}let i=e;if(this._isCanonical){let o;[o,i]=ze(e),this._rational=W(this._rational,o),so(this._rational)&&(this._sign*=-1,this._rational=ve(this._rational))}if(i.numericValue!==null&&i.isOne)return;let t=[1,1];if(i.head==="Power"){let o=J(i.op2);o&&(t=o,i=i.op1)}else i.head==="Divide"&&(this.addTerm(i.op1),t=[-1,1],i=i.op2);let r=!1;for(let o of this._terms)if(o.term.isSame(i)){o.exponent=st(o.exponent,t),r=!0;break}r||this._terms.push({term:i,exponent:t})}unitTerms(e){let i=this.engine;if(e==="numeric"){if(!ae(i)&&this._complex.im!==0)return null;if(L(i)){let l=i._BIGNUM_ONE;if(K(this._rational)||(G(this._rational)?l=i.bignum(this._rational[0].toString()).div(i.bignum(this._rational[1].toString())):l=i.bignum(this._rational[0]).div(this._rational[1])),l=l.mul(this._bignum).mul(this._sign*this._number),this._complex.im!==0){let u=this._complex.mul(l.toNumber());return u.equals(1)?[]:[{exponent:[1,1],terms:[i.number(u)]}]}return l=l.mul(this._complex.re),l.equals(1)?[]:[{exponent:[1,1],terms:[i.number(l)]}]}let a=1;if(K(this._rational)||(G(this._rational)?a=Number(this._rational[0])/Number(this._rational[1]):a=this._rational[0]/this._rational[1]),a*=this._sign*this._number*this._bignum.toNumber(),this._complex.im!==0){let l=this._complex.mul(a);return l.equals(1)?[]:[{exponent:[1,1],terms:[i.number(l)]}]}return a*=this._complex.re,a===1?[]:[{exponent:[1,1],terms:[i.number(a)]}]}let t=[],r=[];if(this._hasInfinity&&r.push(i.PositiveInfinity),this._rationalSqrt=Ge(this._rationalSqrt),!K(this._rationalSqrt)){let[a,l]=this._rationalSqrt,u=i.sqrt(i.number(a)),f=i.sqrt(i.number(l));if(f.isOne){let d=J(u);d?this._rational=W(this._rational,d):r.push(u)}else u.isInteger&&f.isInteger?(this._rational=W(W(this._rational,u),i.inv(f)),r.push(i._fn("Sqrt",[i.div(u.op1,f.op1)]))):$i(u)&&$i(f)?r.push(i._fn("Sqrt",[i.div(u.op1,f.op1)])):r.push(i._fn("Divide",[u,f]))}(this._complex.re!==1||this._complex.im!==0)&&(this._complex.im===0?this._number*=Math.abs(this._complex.re):r.push(i.number(this._complex)));let o=this._sign*this._number,s=this._bignum;return this._rational=Ge(this._rational),K(this._rational)||(e==="rational"?(Pe(this._rational)!==1&&(G(this._rational)?s=s.mul(i.bignum(this._rational[0])):o*=this._rational[0]),hn(this._rational)!==1&&t.push({exponent:[-1,1],terms:[i.number(this._rational[1])]})):o===-1?(r.push(i.number(ve(this._rational))),o=1):r.push(i.number(this._rational))),s.equals(i._BIGNUM_ONE)?o!==1&&r.push(i.number(o)):r.push(i.number(s.mul(o))),r.length>0&&t.push({exponent:[1,1],terms:r}),t}groupedByDegrees(e){e??(e={}),"mode"in e||(e.mode="expression");let i=this.engine;if(e.mode==="numeric"){if(this._complex.im!==0&&!ae(i))return null;if(this._hasInfinity)return[{exponent:[1,1],terms:[i.PositiveInfinity]}]}let t=this.unitTerms(e.mode??"expression");if(t===null)return null;for(let r of this._terms){let o=Ge(r.exponent);if(o[0]===0)continue;let s=!1;for(let a of t)if(o[0]===a.exponent[0]&&o[1]===a.exponent[1]){a.terms.push(r.term),s=!0;break}s||t.push({exponent:o,terms:[r.term]})}return t}asExpression(e="evaluate"){let i=this.engine;if(this._hasInfinity){if(this._hasZero)return i.NaN;if(this._terms.length===0)return Pe(this._rational)>0?i.PositiveInfinity:i.NegativeInfinity}if(this._hasZero)return i.Zero;let t=this.groupedByDegrees({mode:e==="N"?"numeric":"expression"});if(t===null)return i.NaN;let r=Mo(i,t);return r.length===0?i.One:r.length===1?r[0]:this.engine._fn("Multiply",r)}asNumeratorDenominator(){if(this._hasZero)return[this.engine.Zero,this.engine.One];if(this._hasInfinity)return[this.engine.NaN,this.engine.NaN];let e=this.groupedByDegrees({mode:"rational"});if(e===null)return[this.engine.NaN,this.engine.NaN];let i=[],t=[];for(let u of e)u.exponent[0]>=0?i.push(u):t.push({exponent:ve(u.exponent),terms:u.terms});let r=this.engine,o=Mo(r,i),s=r.One;o.length===1?s=o[0]:o.length>0&&(s=r._fn("Multiply",o));let a=Mo(r,t),l=r.One;return a.length===1?l=a[0]:a.length>0&&(l=r._fn("Multiply",a)),[s,l]}asRationalExpression(){let[e,i]=this.asNumeratorDenominator();if(i.numericValue!==null){if(i.isOne)return e;if(i.isNegativeOne)return this.engine.neg(e)}return this.engine._fn("Divide",[e,i])}};function qa(n){if(K(n))return 0;let[e,i]=[Pe(n),hn(n)];return e>0&&Number.isInteger(e/i)?1:e>0?2:Number.isInteger(e/i)?3:4}function sd(n,e){let i=qa(n.exponent),t=qa(e.exponent);if(i!==t)return i-t;let[r,o]=[Pe(n.exponent),hn(n.exponent)],[s,a]=[Pe(e.exponent),hn(e.exponent)];return r/o-s/a}function Mo(n,e){let i=e.sort(sd).map(t=>{let r=ie(t.terms,"Multiply"),o=r.length<=1?r[0]:n._fn("Multiply",[...r].sort(an));return n.pow(o,t.exponent)});return ie(i,"Multiply")??i}function Ze(n){return n.symbol?.startsWith("_")??(n.head==="Wildcard"||n.head==="WildcardSequence"||n.head==="WildcardOptionalSequence")}function He(n){if(n.symbol?.startsWith("_"))return n.symbol;if(n.nops===1){let e=n.op1;if(n.head==="Wildcard")return`_${e}`;if(n.head==="WildcardSequence")return`__${e}`;if(n.head==="WildcardOptionalSequence")return`___${e}`}return n.head==="Wildcard"?"_":n.head==="WildcardSequence"?"__":n.head==="WildcardOptionalSequence"?"___":null}var Je=class n extends P{constructor(e,i,t){super(e,t),this._string=i.normalize(),e._register(this)}get json(){return`'${this._string}'`}get hash(){return Te("String"+this._string)}get head(){return"String"}get isPure(){return!0}get isCanonical(){return!0}set isCanonical(e){}get domain(){return this.engine.Strings}get complexity(){return 19}get string(){return this._string}isEqual(e){return e.string===this._string}isSame(e){return e.string===this._string}match(e,i){return un(e)||(e=this.engine.box(e,{canonical:!1})),Ze(e)?{[He(e)]:this}:e instanceof n&&this._string===e._string?{}:null}};function mt(n,e,i){let t=[];for(let r of e){let o=Ro(r,n,i);o!==null&&(t.some(s=>s.isEqual(o))||t.push(o))}return t}function gi(n,e){let i=new Set;for(let{match:t,replace:r,condition:o,priority:s,id:a}of e){let l;if(typeof o=="string"){let u=hi(o);if(u){let f=n.parse(u,{canonical:!1});l=(d,c)=>f.subs(d).evaluate()?.symbol==="True"}}else l=o;i.add({match:n.box(t,{canonical:!1}),replace:typeof r=="function"?r:n.box(r,{canonical:!1}),priority:s??0,condition:l,id:a??n.box(t,{canonical:!1}).toString()+(typeof r=="function"?" -> function":" -> "+n.box(r,{canonical:!1}).toString())})}return i}function Ro(n,e,i,t){let{match:r,replace:o,condition:s,id:a}=n,l=!1;if(e.ops&&t?.recursive){let f=e.engine,c=e.ops.map(m=>{let g=Ro(n,m,{},t);return g&&(l=!0),g??m});l&&(e=f.function(e.head,c,{canonical:!1}))}let u=e.match(r,{substitution:i,...t});return u===null?l?e:null:typeof s=="function"&&!s(u,e.engine)?null:typeof o=="function"?o(e,u):o.subs(u,{canonical:e.isCanonical})}function hr(n,e,i){let t=i?.iterationLimit??1,r=0,o=i?.once??!1;e instanceof Set||(e=n.engine.rules(Array.isArray(e)?e:[e]));let s=!1,a=!1;try{for(;!s&&r<t;){s=!0;for(let l of e){let u=Ro(l,n,{},i);if(u!==null&&u!==n){if(o)return u;s=!1,a=!0,n=u}}r+=1}}catch(l){console.error(l)}return a?n:null}var Ga=he(me(),1);var Va=he(me(),1);function $a(n){if(typeof n=="number"&&!isNaN(n))return isFinite(n)?Number.isInteger(n)?n>0?"PositiveIntegers":n<0?"NegativeIntegers":"Integers":n>0?"PositiveNumbers":n<0?"NegativeNumbers":"RealNumbers":"ExtendedRealNumbers";if(n instanceof N)return n.isNaN()?"Numbers":n.isFinite()?n.isInteger()?n.isPositive()?"PositiveIntegers":n.isNegative()?"NegativeIntegers":"Integers":n.isPositive()?"PositiveNumbers":n.isNegative()?"NegativeNumbers":"RealNumbers":"ExtendedRealNumbers";if(n instanceof Va.Complex){let e=n;return e.im,e.re===0?"ImaginaryNumbers":"ComplexNumbers"}if(V(n)){let[e,i]=n;return typeof e!="number"||!Number.isNaN(e)&&Number.isNaN(i),"RationalNumbers"}return"Numbers"}function pt(n){n.ctor;let e=n.engine,i=n.params,t=[],r=[],o,s=e.domain(i[i.length-1]);for(let a of i.slice(0,-1))if(x(a)==="OptArg"){if(r.length>0)throw Error(`Unexpected multiple OptArg in domain ${n}`);if(o)throw Error(`Unexpected OptArg after VarArg in domain ${n}`);if(j(a)===0)throw Error(`Unexpected empty OptArg in domain ${n}`);for(let l of T(a)){if(x(l)==="OptArg")throw Error(`Unexpected OptArg of OptArg in domain ${n}`);if(x(l)==="VarArg")throw Error(`Unexpected superfluous OptArg of VarArg in domain ${n}`);r.push(e.domain(l))}}else if(x(a)==="VarArg"){let l=T(a);if(l.length!==1)throw Error(`Invalid VarArg in domain ${n}`);if(x(l[0])==="OptArg")throw Error(`Unexpectedf VarArg of OptArg in domain ${n}`);if(x(l[0])==="VarArg")throw Error(`Unexpected VarArg of VarArg in domain ${n}`);o=e.domain(l[0])}else{if(r.length>0)throw Error(`Unexpected required parameter after OptArg in domain ${n}`);if(o)throw Error(`Unexpected required parameter after VarArg in domain ${n}`);t.push(e.domain(a))}return[t,r,o,s]}function ht(n){let[e,i,t,r]=pt(n);return{params:e.map(o=>o.json),optParams:i.map(o=>o.json),restParam:t?.json,result:r.json}}function gr(n,e){let i=[...e.params];return e.optParams.length>0&&i.push(["OptArg",...e.optParams]),e.restParam&&i.push(["VarArg",e.restParam]),typeof e.result=="function"?i.push(e.result(n,[])??n.symbol("Undefined")):i.push(e.result),n.domain(["FunctionOf",...i])}var Ui=["InvalidDomain","DictionaryOf","FunctionOf","ListOf","TupleOf","Intersection","Union","OptArg","VarArg"],xr={Functions:["FunctionOf",["VarArg","Anything"],"Anything"],NumericFunctions:["FunctionOf","Numbers",["VarArg","Numbers"],"Numbers"],RealFunctions:["FunctionOf","ExtendedRealNumbers",["VarArg","ExtendedRealNumbers"],"ExtendedRealNumbers"],LogicOperators:["FunctionOf","Booleans",["VarArg","Booleans"],"Booleans"],Predicates:["FunctionOf","Anything",["VarArg","Anything"],"Booleans"],RelationalOperators:["FunctionOf","Anything","Anything","Booleans"]},Xn={Anything:[],Values:"Anything",Domains:"Anything",Void:"NothingDomain",NothingDomain:["Booleans","Strings","Symbols","Tuples","Lists","Dictionaries","ImaginaryNumbers","TranscendentalNumbers","PositiveIntegers","NegativeIntegers","NonPositiveIntegers","NonNegativeIntegers","PositiveNumbers","NegativeNumbers","NonPositiveNumbers","NonNegativeNumbers","LogicOperators","RelationalOperators"],Booleans:"Values",Strings:"Values",Symbols:"Values",Collections:"Values",Lists:"Collections",Dictionaries:"Collections",Sequences:"Collections",Tuples:"Collections",Sets:"Collections",Functions:"Anything",Predicates:"Functions",LogicOperators:"Predicates",RelationalOperators:"Predicates",NumericFunctions:"Functions",RealFunctions:"NumericFunctions",Numbers:"Values",ExtendedComplexNumbers:"Numbers",ComplexNumbers:"ExtendedComplexNumbers",ImaginaryNumbers:"ComplexNumbers",ExtendedRealNumbers:"ExtendedComplexNumbers",RealNumbers:["ComplexNumbers","ExtendedRealNumbers"],PositiveNumbers:"NonNegativeNumbers",NonNegativeNumbers:"RealNumbers",NonPositiveNumbers:"NegativeNumbers",NegativeNumbers:"RealNumbers",TranscendentalNumbers:"RealNumbers",AlgebraicNumbers:"RealNumbers",RationalNumbers:"AlgebraicNumbers",Integers:"RationalNumbers",PositiveIntegers:"NonNegativeIntegers",NonNegativeIntegers:"Integers",NonPositiveIntegers:"NegativeIntegers",NegativeIntegers:"Integers"},gt;function xi(n){return n?Xn[n]!==void 0:!1}function We(n){if(gt||(gt={},We("Void")),gt[n])return Array.from(gt[n]);let e=[];if(typeof n!="string"||!Xn[n]){if(!Array.isArray(n))throw Error(`Unknown domain literal ${n}`);if(!Ui.includes(n[0]))throw Error(`Unknown domain constructor ${n[0]}`);return n[0]==="FunctionOf"?We("Functions"):n[0]==="TupleOf"?We("Tuples"):n[0]==="ListOf"?We("Lists"):n[0]==="DictionaryOf"?We("Dictionaries"):n[0]==="OptArg"||n[0]==="VarArg"?We(n[1]):n[0]==="Literal"?["Anything"]:n[0]==="Union"?["Anything"]:n[0]==="Intersection"?["Anything"]:["Anything"]}if(typeof Xn[n]=="string")e=[Xn[n],...We(Xn[n])];else if(Array.isArray(Xn[n]))for(let i of Xn[n])e.push(i),e.push(...We(i));return gt[n]=new Set(e),e}function Ua(){let n={};for(let e of Object.keys(Xn))n[e]={domain:"Domains",value:["Domain",e]};n.InvalidDomain={signature:{domain:["FunctionOf","Domains","Domains"],canonical:(e,i)=>e.domain(["InvalidDomain",i[0]])}};for(let e of["DictionaryOf","FunctionOf","ListOf","TupleOf"])n[e]={signature:{domain:["FunctionOf",["VarArg","Domains"],"Domains"],canonical:(i,t)=>i.domain([e,...t])}};for(let e of["OptArg","VarArg"])n[e]={signature:{domain:["FunctionOf","Domains","Domains"],canonical:(i,t)=>i.domain([e,t[0]])}};return n}var Fn=class n extends P{constructor(e,i,t){if(i instanceof n,super(e,t),typeof i=="string"){if(!xi(i))throw Error(`Unknown domain literal "${i}"`);this.base=i,this.ctor=null,this.params=[];return}if(!Array.isArray(i))throw Error("Expected a domain expression");if(!Ui.includes(i[0]))throw Error(`Unknown domain constructor "${i[0]}`);let r=i[0];if(this.ctor=r,r==="OptArg"||r==="VarArg")throw Error(`Unexpected domain constructor "${r}" outside of FunctionOf`);if(this.params=i.slice(1).map(o=>o instanceof P?o.json:o),r==="FunctionOf"&&(this.base="Functions",e.strict&&pt(this)),r==="DictionaryOf"&&(this.base="Dictionaries"),r==="ListOf"&&(this.base="Lists"),r==="TupleOf"&&(this.base="Tuples"),r==="Covariant"||r==="Contravariant"||r==="Bivariant"||r==="Invariant"){let o=e.domain(i[1]);if(this.ctor=r,this.base=o.base,this.params=[o.json],i.length!==2)throw Error(`Invalid "${r}" in domain "${i}"`)}if(r==="Union"||r==="Intersection"){let o;if(r==="Union")for(let s of this.params)o=Kn(o,e.domain(s));else for(let s of this.params)o=xt(o,e.domain(s));this.base=o.base}}get isCanonical(){return!0}get canonical(){return this}get isValid(){return!0}get json(){return this.ctor?[this.ctor,...this.params]:this.base}get hash(){return this._hash===void 0&&(this._hash=Te(JSON.stringify(this.json))),this._hash}isCompatible(e,i="covariant"){let t=this.json,r=e instanceof n?e.json:e,o=Array.isArray(r)?r[0]:null;if(o){let s=r[1];if(o==="Covariant")return Ne(t,s);if(o==="Contravariant")return Ne(s,t);if(o==="Invariant")return!Ne(s,t)&&!Ne(t,s);if(o==="Bivariant")return Ne(t,s)&&Ne(s,t)}return i==="covariant"?Ne(t,r):i==="contravariant"?Ne(r,t):i==="bivariant"?Ne(r,t)&&Ne(t,r):!Ne(r,t)&&!Ne(t,r)}isEqual(e){return e instanceof n?this===e?!0:this.isCompatible(e,"invariant"):!1}isSame(e){return this.isEqual(e)}match(e,i){return un(e)||(e=this.engine.box(e,{canonical:!1})),Ze(e)?{[He(e)]:this}:e instanceof n&&this.isCompatible(e,"invariant")?{}:null}get head(){return"Domain"}get domain(){return this.engine.domain("Domains")}get isFunction(){return this.base==="Functions"}get isNumeric(){return this.isCompatible(this.engine.domain("Numbers"))}};function En(n){if(n instanceof Fn)return!0;if(n instanceof P&&(n=n.json),typeof n=="string")return xi(n);if(!Array.isArray(n)||n.length<=1)return!1;let e=n[0];return typeof e!="string"||!Ui.includes(e)?!1:e==="ListOf"||e==="OptArg"||e==="VarArg"?n.length===2&&En(n[1]):e==="FunctionOf"||e==="TupleOf"||e==="Intersection"||e==="Union"?n.slice(1).every(En):n.every(i=>i!==null)}function Ne(n,e){let[i,t]=br([n],e);return!!(i&&t.length===0)}function br(n,e){let i=n.shift(),t=typeof e=="string"?e:null;if(t==="Anything")return[!0,n];let r=typeof i=="string"?i:null;if(r&&t)return r===t?[!0,n]:[We(r).includes(t),n];if(t){let s=i[0];return s==="FunctionOf"?[t==="Functions",n]:s==="DictionaryOf"?[t==="Dictionaries",n]:s==="ListOf"?[t==="Lists",n]:s==="TupleOf"?[t==="Tuples",n]:[!0,n]}let o=e[0];if(o==="FunctionOf"){if(r==="Functions")return[!0,n];if(r)return[!1,n];if(i[0]!=="FunctionOf")return[!1,n];if(i.length===1&&e.length===1)return[!0,n];if(!Ne(i[i.length-1],e[e.length-1]))return[!1,n];let s=i.slice(1,-1),a=e.slice(1,-1);for(let l=0;l<=s.length-1;l++){if(a.length===0)return(Array.isArray(s[l])?s[l][0]:null)!=="OptArg"?[!1,n]:[!0,n];{let u=!1;if([u,a]=br(a,s[l]),!u)return[!1,n]}}return[a.length===0,n]}if(o==="Intersection")return[e.slice(1,-1).every(s=>Ne(i,s)),n];if(o==="Union")return[e.slice(1,-1).some(s=>Ne(i,s)),n];if(o==="OptArg")return r==="NothingDomain"?[!0,n]:br([i,...n],e[1]);if(o==="VarArg"){let s=e[1];if(!Ne(i,s))return[!1,n];i=n.shift();let a=!0;for(;n.length>0&&a;)[a,n]=br(n,s),i=n.shift();return[!0,n]}if(o==="TupleOf"){if(!Array.isArray(i)||i[0]!=="TupleOf")return[!1,n];if(i.length>e.length)return[!1,n];for(let s=1;s<=e.length-1;s++)if(!i[s]||!Ne(i[s],e[s]))return[!1,n];return[!0,n]}return console.error("Unexpected domain constructor "+o),[!1,n]}function Kn(n,e){if(n==null)return e;if(e==null)return n;let i=[n.base,...We(n.base)],t=[e.base,...We(e.base)];for(;!t.includes(i[0]);)i.shift();return n.engine.domain(i[0])}function xt(n,e){return n===void 0?e:e===void 0||Ne(n.base,e.base)?n:Ne(e.base,n.base)?e:n.engine.Void}var le=class{constructor(e,i,t){if(!e.context)throw Error("No context available");this.name=i,this.wikidata=t.wikidata,this.description=t.description,this.url=t.url,this._engine=e,this.scope=e.context,this.name=i,this._flags=t.flags?bt(t.flags):void 0,this._domain=t.domain?e.domain(t.domain):void 0,this.inferredDomain=t.inferred??!1,this.constant=t.constant??!1,this.holdUntil=t.holdUntil??"evaluate",this.constant?(this._defValue=t.value,this._value=null):(t.value!==void 0?ir(t.value)?this._value=e.parse(t.value)??e.symbol("Undefined"):typeof t.value=="function"?this._value=e.box(t.value(e)??"Undefined"):t.value instanceof P?this._value=t.value:this._value=e.box(t.value):this._value=void 0,!this._value&&this._domain&&!t.flags&&(this._flags=yr(this._domain))),this._value&&!this._domain&&(this._domain=this._value.domain,this.inferredDomain=!0)}update(e){e.wikidata&&(this.wikidata=e.wikidata),e.description&&(this.description=e.description),e.url&&(this.url=e.url);let i=e?.flags,t=e?.domain?this._engine.domain(e.domain):void 0;t&&(i={...yr(t),...i??{}}),i&&(this._flags=bt(i)),t&&(this._domain=t,this.inferredDomain=!1),e.holdUntil&&(this.holdUntil=e.holdUntil),e.constant?(this.constant=e.constant,this._defValue=e.value,this._value=null):e.value&&(ir(e.value)?this._value=this._engine.parse(e.value)??this._engine.symbol("Undefined"):typeof e.value=="function"?this._value=this._engine.box(e.value(this._engine)??"Undefined"):e.value instanceof P?this._value=e.value:this._value=this._engine.box(e.value)),this._value&&!this._domain&&(this._domain=this._value.domain,this.inferredDomain=!0)}reset(){this.constant&&(this._value=null)}get value(){if(this._value===null){let e=this._engine;if(ir(this._defValue)?this._value=e.parse(this._defValue)??e.symbol("Undefined"):typeof this._defValue=="function"?this._value=e.box(this._defValue(e)??"Undefined"):this._defValue?this._value=e.box(this._defValue):this._value=void 0,this._value?.numericValue){let i=this._value.numericValue;!L(e)&&i instanceof N?this._value=e.number(i.toNumber()):!ae(e)&&i instanceof Ga.Complex&&(this._value=e.NaN)}}return this._value??void 0}set value(e){if(this.constant)throw new Error(`The value of the constant "${this.name}" cannot be changed`);if(this._defValue,typeof e=="number")this._value=this._engine.number(e);else if(e){let i=this._engine.box(e);this.inferredDomain?(this._value=i,this._domain=Kn(this._domain,i.domain)):!this._domain||!i.domain||i.domain?.isCompatible(this._domain)?this._value=i:this._value=void 0}else this._value=void 0;this._value!==void 0?this._flags=void 0:this._flags=yr(this._domain)}get domain(){return this._domain??void 0}set domain(e){if(this.constant)throw new Error(`The domain of the constant "${this.name}" cannot be changed`);if(!this.inferredDomain)throw Error(`The domain of "${this.name}" cannot be changed because it has already been declared`);if(!e){this._defValue=void 0,this._value=void 0,this._flags=void 0,this._domain=void 0;return}if(e=this._engine.domain(e),this._domain&&!e.isCompatible(this._domain))throw Error(`The domain of "${this.name}" cannot be widened from "${this._domain.base}" to "${e.base}"`);if(this._value?.domain&&!this._value.domain.isCompatible(e))throw Error(`The domain of "${this.name}" cannot be changed to "${e.base}" because its value has a domain of "${this._value.domain.base}"`);this._domain=e,this._flags=void 0,this._value===void 0&&e.isNumeric&&(this._flags=yr(e))}get number(){return this.value?.isNumber??this._flags?.number}set number(e){this.updateFlags({number:e})}get integer(){return this.value?.isInteger??this._flags?.integer}set integer(e){this.updateFlags({integer:e})}get rational(){return this.value?.isRational??this._flags?.rational}set rational(e){this.updateFlags({rational:e})}get algebraic(){return this.value?.isAlgebraic??this._flags?.algebraic}set algebraic(e){this.updateFlags({algebraic:e})}get real(){return this.value?.isReal??this._flags?.real}set real(e){this.updateFlags({real:e})}get extendedReal(){return this.value?.isExtendedReal??this._flags?.extendedReal}set extendedReal(e){this.updateFlags({extendedReal:e})}get complex(){return this.value?.isComplex??this._flags?.complex}set complex(e){this.updateFlags({complex:e})}get extendedComplex(){return this.value?.isExtendedComplex??this._flags?.extendedComplex}set extendedComplex(e){this.updateFlags({extendedComplex:e})}get imaginary(){return this.value?.isImaginary??this._flags?.imaginary}set imaginary(e){this.updateFlags({imaginary:e})}get positive(){return this.value?.isPositive??this._flags?.positive}set positive(e){this.updateFlags({positive:e})}get nonPositive(){return this.value?.isNonPositive??this._flags?.nonPositive}set nonPositive(e){this.updateFlags({nonPositive:e})}get negative(){return this.value?.isNegative??this._flags?.negative}set negative(e){this.updateFlags({negative:e})}get nonNegative(){return this.value?.isNonNegative??this._flags?.nonNegative}set nonNegative(e){this.updateFlags({nonNegative:e})}get zero(){return this.value?.isZero??this._flags?.zero}set zero(e){this.updateFlags({zero:e})}get notZero(){return this.value?.isNotZero??this._flags?.notZero}set notZero(e){this.updateFlags({notZero:e})}get one(){return this.value?.isOne??this._flags?.one}set one(e){this.updateFlags({one:e})}get negativeOne(){return this.value?.isNegativeOne??this._flags?.negativeOne}set negativeOne(e){this.updateFlags({negativeOne:e})}get infinity(){return this.value?.isInfinity??this._flags?.infinity}set infinity(e){this.updateFlags({infinity:e})}get finite(){return this.value?.isFinite??this._flags?.finite}set finite(e){this.updateFlags({finite:e})}get NaN(){return this.value?.isNaN??this._flags?.NaN}set NaN(e){this.updateFlags({NaN:e})}get even(){return this.value?.isEven??this._flags?.even}set even(e){this.updateFlags({even:e})}get odd(){return this.value?.isOdd??this._flags?.odd}set odd(e){this.updateFlags({odd:e})}get prime(){let e=this._value;return e?!e.isInteger||e.isNonPositive?!1:Jn(b(e)??NaN):this._flags?.prime}set prime(e){this.updateFlags({prime:e})}get composite(){let e=this._value;return e?!e.isInteger||e.isNonPositive?!1:!Jn(b(e)??NaN):this._flags?.composite}set composite(e){this.updateFlags({composite:e})}updateFlags(e){if(this.constant)throw Error("The flags of constant cannot be changed");if(this.domain?.isNumeric===!1)throw Error("Flags only apply to numeric domains");let i=0,t=!0;for(let r in Object.keys(e))if(i+=1,this._value&&e[r]!==void 0)switch(r){case"number":t=this._value.isNumber===e.number;break;case"integer":t=this._value.isInteger===e.integer;break;case"rational":t=this._value.isRational===e.rational;break;case"algebraic":t=this._value.isAlgebraic===e.algebraic;break;case"real":t=this._value.isReal===e.real;break;case"extendedReal":t=this._value.isExtendedReal===e.extendedReal;break;case"complex":t=this._value.isComplex===e.complex;break;case"extendedComplex":t=this._value.isExtendedComplex===e.extendedComplex;break;case"imaginary":t=this._value.isImaginary===e.imaginary;break;case"positive":t=this._value.isPositive===e.positive;break;case"nonPositive":t=this._value.isNonPositive===e.nonPositive;break;case"negative":t=this._value.isNegative===e.negative;break;case"nonNegative":t=this._value.isNonNegative===e.nonNegative;break;case"zero":t=this._value.isZero===e.zero;break;case"notZero":t=this._value.isNotZero===e.notZero;break;case"one":t=this._value.isOne===e.one;break;case"negativeOne":t=this._value.isNegativeOne===e.negativeOne;break;case"infinity":t=this._value.isInfinity===e.infinity;break;case"NaN":t=this._value.isNaN===e.NaN;break;case"finite":t=this._value.isFinite===e.finite;break;case"even":t=this._value.isEven===e.even;break;case"odd":t=this._value.isOdd===e.odd;break;case"prime":t=this._value.isPrime===e.prime;break;case"composite":t=this._value.isComposite===e.composite;break}i>0&&(t||(this._defValue=void 0,this._value=void 0),this._domain=this._engine.Numbers,this._flags?this._flags={...this._flags,...bt(e)}:this._flags=bt(e))}};function ad(n){return Object.fromEntries(Object.entries(n).filter(([e,i])=>i!==void 0))}function bt(n){let e={...n};return(n.zero||n.one||n.negativeOne)&&(e.zero=n.zero&&!n.one&&!n.negativeOne,e.notZero=!n.zero||n.one||n.negativeOne,e.one=n.one&&!n.zero&&!n.negativeOne,e.negativeOne=n.negativeOne&&!n.zero&&!n.one,e.infinity=!1,e.NaN=!1,e.finite=!0,e.integer=!0,e.finite=!0,e.infinity=!1,e.NaN=!1,e.even=n.one,e.odd=!n.one,e.prime=!1,e.composite=!1),e.zero&&(e.positive=!1,e.negative=!1,e.nonPositive=!0,e.nonNegative=!0),e.notZero===!0&&(e.imaginary||(e.real=!0),e.zero=!1),e.one&&(e.positive=!0),e.negativeOne&&(e.nonPositive=!0),(e.positive||e.nonNegative)&&(e.negativeOne=!1),e.positive?(e.nonPositive=!1,e.negative=!1,e.nonNegative=!0):e.nonPositive?(e.positive=!1,e.negative=e.notZero,e.nonNegative=!e.zero):e.negative?(e.positive=!1,e.nonPositive=e.notZero,e.nonNegative=!1):e.nonNegative&&(e.positive=e.notZero,e.nonPositive=!e.zero,e.negative=!1),(e.positive||e.negative||e.nonPositive||e.nonNegative)&&(e.number=!0,e.finite?e.real=!0:e.finite||(e.complex=!0),e.imaginary=!1),e.finite&&(e.number=!0,e.complex=!0,e.infinity=!1,e.NaN=!1),e.infinity&&(e.finite=!1,e.NaN=!1),e.infinity===!1&&(e.extendedComplex=!1,e.extendedReal=!1),n.even&&(e.odd=!1),n.odd&&(e.even=!1),e.integer&&(e.rational=!0),e.rational&&(e.algebraic=!0),e.algebraic&&(e.real=!0),e.real&&(e.complex=!0),e.imaginary&&(e.complex=!0),e.complex&&(e.number=!0),e.real&&e.infinity!==!1&&(e.extendedReal=!0),e.complex&&e.infinity!==!1&&(e.extendedComplex=!0),(e.even||e.infinity||e.NaN||e.negative||e.imaginary||e.integer===!1)&&(e.prime=!1),e.number&&e.prime&&(e.composite=!1),e}function yr(n){if(!n)return{};let e={};if(!n.isNumeric)return e.number=!1,e.integer=!1,e.rational=!1,e.algebraic=!1,e.real=!1,e.extendedReal=!1,e.complex=!1,e.extendedComplex=!1,e.imaginary=!1,e.positive=!1,e.nonPositive=!1,e.negative=!1,e.nonNegative=!1,e.zero=!1,e.notZero=!1,e.one=!1,e.negativeOne=!1,e.infinity=!1,e.NaN=!1,e.odd=!1,e.even=!1,e.prime=!1,e.composite=!1,e;let i=n.base;return e.number=!0,i==="Integers"&&(e.integer=!0),i==="RationalNumbers"&&(e.rational=!0),i==="AlgebraicNumbers"&&(e.algebraic=!0),i==="TranscendentalNumbers"&&(e.algebraic=!1,e.real=!0),i==="ExtendedRealNumbers"&&(e.extendedReal=!0),i==="RealNumbers"&&(e.real=!0),i==="ImaginaryNumbers"&&(e.imaginary=!0),i==="ExtendedComplexNumbers"&&(e.extendedComplex=!0),i==="ComplexNumbers"&&(e.complex=!0),i==="PositiveNumbers"&&(e.notZero=!0,e.real=!0,e.positive=!0),i==="NegativeNumbers"&&(e.notZero=!0,e.real=!0,e.negative=!0),i==="NonNegativeNumbers"&&(e.real=!0,e.positive=!0),i==="NonPositiveNumbers"&&(e.real=!0,e.negative=!0),i==="PositiveIntegers"&&(e.notZero=!0,e.integer=!0,e.positive=!0),i==="NegativeNumbers"&&(e.notZero=!0,e.integer=!0,e.negative=!0),i==="NonNegativeNumbers"&&(e.integer=!0,e.positive=!0),i==="NonPositiveNumbers"&&(e.integer=!0,e.negative=!0),ad(bt(e))}function Po(n){if(n.head==="N"&&typeof n.op1.head=="string"){let o={Integrate:"NIntegrate",Limit:"NLimit"}[n.op1.head];o&&(n=n.engine._fn(o,n.op1.ops))}if(n.head==="Function")return n;let e=n.unknowns;e.includes("_")&&(n=n.subs({_:"_1"}),e=n.unknowns);let i=0;for(let o of e)if(o.startsWith("_")){let s=Number(o.slice(1));s>i&&(i=s)}let t=n.engine;return t._fn("Function",[n,...Array.from({length:i},(o,s)=>t.symbol(`_${s+1}`))])}function Fo(n){let e=n.engine,i=n.symbol?e.lookupFunction(n.symbol):void 0;if(i){let a=i.signature.N??i.signature.evaluate;return a?l=>a(e,l)??e._fn(n,l):l=>e._fn(n,l)}let t=Po(n);if(!t)return;t.head;let r=t.ops.slice(1).map(a=>a.symbol??"Nothing");e.pushScope();for(let a of r)e.declare(a,{inferred:!0,domain:void 0});let o=t.op1.canonical;o.bind(),e.popScope();let s=o.scope;return s?r.length===0?()=>{let a=e.swapScope(s);e.resetContext();let l=o.N()??o.evaluate();return e.swapScope(a),l}:a=>{if(e.strict&&(a=Be(e,a,r.length),!a.every(d=>d.isValid)))return;a=a.map(d=>d.evaluate());let l=e.swapScope(s);e.resetContext();let u=0;for(let d of r)e.assign(d,a[u++]);let f=o.N()??o.evaluate();if(e.swapScope(l),!!f.isValid)return f}:()=>o.N()??o.evaluate()}function bi(n,e){return Fo(n)?.(e)??n.engine._fn(n,e)}function yi(n){return Fo(n)??(e=>n.engine._fn(n.N(),e).N())}function Lo(n){let e=n.engine,i=Fo(n);return i?t=>i([e.number(t)])?.value??NaN:t=>e._fn(n.evaluate(),[e.number(t)]).value}function qo(n){let e=n.match(/(.+)\((.*)\)/);if(!e)return[n,void 0];let i=e[1],t=e[2].split(",").map(r=>r.trim());return[i,t]}var Ye=class{constructor(e,i,t){if(!e.context)throw Error("No context available");this.engine=e,this.scope=e.context;let r=t.idempotent??!1,o=t.involution??!1;if(r&&o)throw new Error(`Function Definition "${i}": the 'idempotent' and 'involution' flags are mutually exclusive`);if(this.name=i,this.description=t.description,this.wikidata=t.wikidata,this.threadable=t.threadable??!1,this.associative=t.associative??!1,this.commutative=t.commutative??!1,this.idempotent=r,this.involution=o,this.inert=t.inert??!1,this.numeric=t.numeric??!1,this.pure=t.pure??!0,this.complexity=t.complexity??gn,this.hold=t.hold??"none",t.at&&(this.at=t.at),t.iterator&&(this.iterator=t.iterator),t.size&&(this.size=t.size),t.keys&&(this.keys=t.keys),t.indexOf&&(this.indexOf=t.indexOf),t.at&&!t.size&&(this.size=s=>{let a=t.at,l=0;for(;a(s,l)!==void 0;)l++;return l}),t.at&&!t.iterator&&(this.iterator=(s,a=1,l=-1)=>{let u=t.at,f=a;return{next(){if(l>=0&&f>=a+l)return{done:!0,value:void 0};let d=u(s,f);return d===void 0?{done:!0,value:void 0}:(f++,{done:!1,value:d})}}}),this.iterator&&!t.indexOf&&(this.indexOf=(s,a)=>{let l=1,u=this.iterator(s),f=u.next();for(;!f.done;){if(a.isEqual(f.value))return l;l++,f=u.next()}}),this.inert){if(t.hold)throw Error(`Function Definition "${i}": an inert function should not have a hold`);if(this.hold="rest",t.signature){let s=t.signature;if("simplify"in s||"evaluate"in s||"N"in s||"evalDimension"in s||"sgn"in s||"compile"in s)throw Error(`Function Definition "${i}": an inert function should only have 'canonical' or 'codomain' handlers`)}if(this.threadable)throw Error(`Function Definition "${i}": an inert function should not be threadable`);if(this.associative)throw Error(`Function Definition "${i}": an inert function should not be associative`);if(this.commutative)throw Error(`Function Definition "${i}": an inert function should not be commutative`);if(this.idempotent)throw Error(`Function Definition "${i}": an inert function should not be idempotent`);if(this.involution)throw Error(`Function Definition "${i}": an inert function should not be involution`);if(!this.pure)throw Error(`Function Definition "${i}": an inert function should be pure`)}if(t.signature){let s=t.signature,a,l,u,f,d=!1;if(s.domain){let m=e.domain(s.domain);if(!m.isValid)throw Error(`Function Definition "${i}": invalid domain ${JSON.stringify(s.domain)}`);[a,l,u,f]=pt(e.domain(m))}else s.params||s.result?(a=s.params?.map(m=>e.domain(m))??[],l=s.optParams?.map(m=>e.domain(m))??[],u=s.restParam?e.domain(s.restParam):void 0,typeof s.result=="function"?f=s.result:s.result?f=e.domain(s.result):t.numeric?f=e.Numbers:f=e.Anything):t.numeric?(d=!0,a=[],l=[],u=e.Numbers,f=e.Numbers):(d=!0,a=[],l=[],u=e.Anything,f=e.Anything);let c;if(s.evaluate&&typeof s.evaluate!="function"){let m=e.box(s.evaluate,{canonical:!1});if(!m.isValid)throw Error(`Invalid function ${m.toString()}`);let g=yi(m);c=(h,E)=>g(E),c.toString=()=>m.toString()}else c=s.evaluate;t.signature.result&&(typeof t.signature.result=="function"?f=t.signature.result:f=e.domain(t.signature.result)),this.signature={inferredSignature:d,params:a,optParams:l,restParam:u||void 0,result:f,canonical:s.canonical,simplify:s.simplify,evaluate:c,N:s.N,evalDimension:s.evalDimension,sgn:s.sgn,compile:s.compile}}else t.numeric?this.signature={inferredSignature:!0,params:[],optParams:[],restParam:e.Numbers,result:e.Numbers}:this.signature={inferredSignature:!0,params:[],optParams:[],restParam:e.Anything,result:e.Anything}}reset(){}};function Er(n,e,i){return i instanceof Ye?i:new Ye(n,e,i)}function za(n){let e=[],i=(t,r=[])=>{if(t.length===0)e.push(r);else for(let o=0;o<t.length;o++){let s=t.slice(),a=s.splice(o,1);i(s.slice(),r.concat(a))}};return i(n),e}var Ce=he(me(),1);var se=class n extends P{constructor(e,i,t){if(super(e,t?.metadata),typeof i=="number"){this._value=i,this._isCanonical=!0;return}if(V(i)){let[r,o]=i;typeof r!="number"||Number.isInteger(r)&&Number.isInteger(o),!(typeof r=="bigint"&&typeof o=="bigint")||o!==r&&BigInt(1),t?.canonical??!0?(this._value=Vo(e,i),this._isCanonical=!0):(this._value=i,this._isCanonical=!1)}else!(i instanceof Ce.Complex)||!Number.isNaN(i.re)&&!Number.isNaN(i.im)&&e.chop(i.im),this._value=Vo(e,i),this._isCanonical=!0}get hash(){if(this._hash!==void 0)return this._hash;let e=0;return typeof this._value=="number"?e=Te(this._value.toString()):this._value instanceof Ce.Complex?e=Te(this._value.re.toString()+" +i "+this._value.im.toString()):this._value instanceof N?e=Te(this._value.toString()):e=Te(this._value[0].toString()+" / "+this._value[1].toString()),this._hash=e,e}get json(){let e=this._value;if(e instanceof N){if(e.isNaN())return"NaN";let i=e.toNumber();return Number.isFinite(i)?i:i>0?"PositiveInfinity":"NegativeInfinity"}if(e instanceof Ce.Complex)return e.isNaN()?"NaN":e.isInfinite()?"ComplexInfinity":e.im===0?e.re:["Complex",e.re,e.im];if(G(e)){let[i,t]=e;return["Rational",{num:`${i.toString()}n`},{num:`${t.toString()}n`}]}else if(V(e)){let[i,t]=e;return["Rational",i,t]}return Number.isNaN(e)?"NaN":Number.isFinite(e)?e:e>0?"PositiveInfinity":"NegativeInfinity"}get head(){return"Number"}get isPure(){return!0}get isExact(){let e=this._value;return typeof e=="number"?Number.isInteger(e):e instanceof N?e.isInteger():e instanceof Ce.Complex?Number.isInteger(e.re)&&Number.isInteger(e.im):V(e)}get isCanonical(){return this._isCanonical}set isCanonical(e){this._isCanonical=e}get complexity(){return 1}get numericValue(){return this._value}get domain(){return this._domain??(this._domain=this.engine.domain($a(this._value))),this._domain}get sgn(){if(this._value===0)return 0;if(typeof this._value=="number")return this._value<0?-1:this._value>0?1:null;if(this._value instanceof N)return this._value.isZero()?0:this._value.isNegative()?-1:this._value.isPositive()?1:null;if(Array.isArray(this._value)){let[e,i]=this._value;return e===0&&i!==0?0:e<0?-1:e>0?1:null}return null}isSame(e){if(this===e)return!0;if(!(e instanceof n))return!1;if(typeof this._value=="number")return typeof e._value!="number"?!1:this._value===e._value;if(this._value instanceof N)return e._value instanceof N?this._value.eq(e._value):!1;if(Array.isArray(this._value)){if(!Array.isArray(e._value))return!1;let[i,t]=e._value;return this._value[0]===i&&this._value[1]===t}return this._value instanceof Ce.Complex&&e._value instanceof Ce.Complex?this._value.equals(e._value):!1}isEqual(e){return this===e||pi(this,e)===0}match(e,i){return Gi(this,e,i)}isEqualWithTolerance(e,i){return e instanceof n&&pi(this,e,i)===0}isLess(e){let i=pi(this,e);if(i!==void 0)return i<0}isLessEqual(e){let i=pi(this,e);if(i!==void 0)return i<=0}isGreater(e){return e.isLessEqual(this)}isGreaterEqual(e){return e.isLess(this)}get isPositive(){if(typeof this._value=="number")return this._value>0;let e=this.sgn;if(e!=null)return e>0}get isNonNegative(){if(typeof this._value=="number")return this._value>=0;let e=this.sgn;if(e!=null)return e>=0}get isNegative(){if(typeof this._value=="number")return this._value<0;let e=this.sgn;if(e!=null)return e<0}get isNonPositive(){if(typeof this._value=="number")return this._value<=0;let e=this.sgn;if(e!=null)return e<=0}get isZero(){return this._value===0?!0:this._value instanceof N?this._value.isZero():this._value instanceof Ce.Complex?this._value.isZero():!1}get isNotZero(){return this._value===0?!1:this._value instanceof N?!this._value.isZero():this._value instanceof Ce.Complex?!this._value.isZero():!0}get isOne(){return this._value===1?!0:typeof this._value=="number"?!1:this._value instanceof N?this._value.equals(this.engine._BIGNUM_ONE):this._value instanceof Ce.Complex?this._value.im===0&&this._value.re===1:K(this._value)}get isNegativeOne(){return this._value===-1?!0:typeof this._value=="number"?!1:this._value instanceof N?this._value.equals(this.engine._BIGNUM_NEGATIVE_ONE):this._value instanceof Ce.Complex?this._value.im===0&&this._value.re===-1:Ci(this._value)}get isOdd(){if(this.isOne||this.isNegativeOne)return!0;if(this.isZero||!this.isInteger)return!1;if(typeof this._value=="number")return this._value%2!==0;if(this._value instanceof N)return!this._value.mod(2).isZero()}get isEven(){if(this.isOne||this.isNegativeOne)return!1;if(this.isZero)return!0;if(!this.isInteger)return!1;if(typeof this._value=="number")return this._value%2===0;if(this._value instanceof N)return this._value.mod(2).isZero()}get isPrime(){if(!this.isInteger||!this.isFinite||this.isNonPositive||this.isOne||this.isZero)return!1;if(typeof this._value=="number")return Jn(this._value);if(this._value instanceof N)return Jn(this._value.toNumber())}get isComposite(){if(!this.isInteger||!this.isFinite||this.isNonPositive||this.isOne||this.isZero)return!1;if(typeof this._value=="number")return!Jn(this._value);if(this._value instanceof N)return!Jn(this._value.toNumber())}get isInfinity(){return typeof this._value=="number"?!Number.isFinite(this._value)&&!Number.isNaN(this._value):this._value instanceof N?!this._value.isFinite()&&!this._value.isNaN():this._value instanceof Ce.Complex?!this._value.isFinite()&&!this._value.isNaN():!1}get isNaN(){return typeof this._value=="number"?Number.isNaN(this._value):this._value instanceof N?this._value.isNaN():this._value instanceof Ce.Complex?this._value.isNaN():!1}get isFinite(){return!this.isInfinity&&!this.isNaN}get isNumber(){return!0}get isInteger(){return typeof this._value=="number"?Number.isInteger(this._value):this._value instanceof N?this._value.isInteger():!1}get isRational(){return Array.isArray(this._value)?!0:this.isInteger}get isAlgebraic(){if(this.isRational)return!0}get isReal(){return this.isFinite?this._value instanceof Ce.Complex?this.engine.chop(this._value.im)===0:!0:!1}get isExtendedReal(){return this.isInfinity||this.isReal}get isComplex(){return!this.isNaN}get isImaginary(){return this._value instanceof Ce.Complex?(this._value.im,!0):!1}get isExtendedComplex(){return this.isInfinity||!this.isNaN}get canonical(){return this._isCanonical?this:this.engine.number(Vo(this.engine,this._value))}simplify(e){return this.canonical}evaluate(e){return e?.numericMode?this.N(e):this}N(e){if(!Array.isArray(this._value))return this;let i=this.engine,[t,r]=this._value;return typeof t=="number"&&typeof r=="number"&&!L(i)?i.number(t/r):i.number(i.bignum(t).div(i.bignum(r)))}};function Vo(n,e){if(e instanceof N&&Qt(e))return e.toNumber();if(!V(e))return e;if(e=Ge(e),G(e)){let[r,o]=e;if(r>Number.MIN_SAFE_INTEGER&&r<Number.MAX_SAFE_INTEGER&&o>Number.MIN_SAFE_INTEGER&&o<Number.MAX_SAFE_INTEGER)e=[Number(r),Number(o)];else return o<0&&([r,o]=[-r,-o]),o===BigInt(1)?n.bignum(r):o===BigInt(0)?r===o?NaN:r<0?-1/0:1/0:[r,o]}let[i,t]=e;return Number.isNaN(i)||Number.isNaN(t)?NaN:(t<0&&([i,t]=[-i,-t]),t===1?i:t===0?i===0||!Number.isFinite(i)?NaN:i<0?-1/0:1/0:i===0?i:[i,t])}function vr(n){if(typeof n=="string")return n.startsWith("_");if(Ze(n))return!0;if(n.ops)return vr(n.head)||n.ops.some(vr);if(n.keys){for(let e of n.keys)if(vr(n.getKey(e)))return!0}return!1}function _r(n,e,i){return n.startsWith("_"),n==="_"||n==="__"||n==="___"?i:n in i?e.isSame(i[n])?i:null:vr(e)?null:{...i,[n]:e}}function _e(n,e,i,t){if(Ze(e))return _r(He(e),n,i);let r=t.acceptVariants??!0;if(t={...t,acceptVariants:!0},e instanceof se){let l=t?.numericTolerance??Bi;return n instanceof se?l===0&&e.isSame(n)||e.isEqualWithTolerance(n,l)?i:r?$o(n,e,i,t):null:null}let o=e.string;if(o!==null)return n.string===o?i:null;let s=e.symbol;if(s!==null)return s===n.symbol?i:r?$o(n,e,i,t):null;let a=e.keys;if(a!==null){let l=n.keys;if(l===null)return null;for(let u of a){let f=_e(l[u],a[u],i,t);if(f===null)return null;i=f}return i}if(e.ops){let l=t.exact??!1,u=n.engine,f=null,d=e.head;if(typeof d=="string"){if(d.startsWith("_"))f=_r(d,u.box(n.head),i),f!==null&&(f=Nr(n,e.ops,f,t));else if(d===n.head)f=u.lookupFunction(d)?.commutative?ld(n,e,i,t):Nr(n,e.ops,i,t);else if(typeof n.head=="string"&&!l){if(!r)return null;f=$o(n,e,i,t)}}else typeof n.head!="string"&&(f=_e(u.box(n.head,{canonical:!1}),u.box(d,{canonical:!1}),i,t),f!==null&&(f=Nr(n,e.ops,f,t)));return f!==null&&(i=f),t.recursive&&n.ops&&(f=ud(n,e,i,{...t,acceptVariants:r})??f),f}return null}function ud(n,e,i,t){n.ops;let r=null;for(let o of n.ops){let s=_e(o,e,i,t);s!==null&&(r=s,i=s)}return r}function $o(n,e,i,t){if(t.exact)return null;e.head;let r=e.head,o=n.engine,s=null,a={...t,acceptVariants:!1};if(r==="Add"){let l=_e(o.box(["Add",0,n],{canonical:!1}),e,i,a);if(l!==null||(n.head==="Subtract"&&(l=_e(o.box(["Add",n.op1,["Negate",n.op2]],{canonical:!1}),e,i,a)),l!==null))return l}if(r==="Subtract"){let l=_e(o.box(["Subtract",n,0],{canonical:!1}),e,i,a);if(l!==null||(n.head==="Negate"&&(l=_e(o.box(["Subtract",0,n.op1],{canonical:!1}),e,i,a)),l!==null))return l}if(r==="Multiply"){let l=_e(o.box(["Multiply",1,n],{canonical:!1}),e,i,a);if(l!==null||n.head==="Negate"&&(l=_e(o.box(["Multiply",-1,n.op1],{canonical:!1}),e,i,a),l!==null)||n.head==="Divide"&&(l=_e(o.box(["Multiply",n.op1,["Divide",1,n.op2]],{canonical:!1}),e,i,a),l!==null))return l}if(r==="Divide"){let l=_e(o.box(["Divide",n,1],{canonical:!1}),e,i,a);if(l!==null)return l}if(r==="Square"){let l=_e(o.box(["Power",n,2],{canonical:!1}),e,i,a);if(l!==null)return l}if(r==="Exp"){let l=_e(o.box(["Power",o.box("ExponentialE"),n],{canonical:!1}),e,i,a);if(l!==null)return l}if(r==="Power"){if(e.op2.numericValue===2){let l=_e(o.box(["Square",n],{canonical:!1}),e,i,a);if(l!==null)return l}if(e.op1.symbol==="ExponentialE"){let l=_e(o.box(["Exp",n],{canonical:!1}),e,i,a);if(l!==null)return l}}return s}function ld(n,e,i,t){let r=za(e.ops);for(let o of r){let s=Nr(n,o,i,t);if(s!==null)return s}return null}function Nr(n,e,i,t){if(e.length===0)return n.ops&&n.ops.length===0?i:null;let r=e[0].engine,o={...i},s=[...n.ops],a=0;for(;a<e.length;){let l=e[a],u=He(l);if(u!==null)if(u.startsWith("__")){let f=0;if(e[a+1]===void 0)f=s.length+1;else{let c=!1;for(;!c&&f<s.length;)c=_e(s[f],e[a+1],o,t)!==null,f+=1;if(!c&&u.startsWith("___"))return null}if(!u.startsWith("___")&&f<=1)return null;let d;if(f<=1)n.head==="Add"?d=r.Zero:n.head==="Multiply"?d=r.One:d=r.box(["Sequence"]);else if(f===2)d=s.shift();else{let c=r.lookupFunction(n.head),m=s.splice(0,f-1);c?.associative?d=r.box([n.head,...m],{canonical:!1}):d=r.box(["Sequence",...m],{canonical:!1})}o=_r(u,d,o)}else u.startsWith("_")?o=_r(u,s.shift(),o):o=_e(s.shift(),l,o,t);else{let f=s.shift();if(!f)return null;o=_e(f,l,o,t)}if(o===null)return null;a+=1}return s.length>0?null:o}function Gi(n,e,i){if(un(e)||(e=n.engine.box(e,{canonical:!1})),Ze(e))return{[He(e)]:n};let t={recursive:i?.recursive??!1,exact:i?.exact??!1,acceptVariants:!(i?.exact??!1),numericTolerance:i?.numericTolerance??Bi},r=i?.substitution??{};return _e(n,e,r,t)}var Ln=class n extends P{constructor(e,i,t){super(e,t?.metadata),Ee(i),`${i}${on(i)}`,this._id=i,this._def=t?.def??void 0,(t?.canonical??!0)!==!0?this._scope=null:this._def?this._scope=e.context:this.bind()}get json(){return this._id}get hash(){return this._hash===void 0&&(this._hash=Te(this._id)),this._hash}get isPure(){return!0}get scope(){return this._scope}get isConstant(){let e=this._def??this.engine.lookupSymbol(this._id,this.wikidata);return!(e instanceof le)||e.constant}bind(){this._scope=this.engine.context;let e=this.engine.lookupSymbol(this._id)??this.engine.lookupFunction(this._id);if(e){this._def=e;return}this._def=this.engine.defineSymbol(this._id,{domain:void 0,inferred:!0}),this._id=this._def.name}reset(){this._def?.reset(),this._def=void 0}get isCanonical(){return this._scope!==null}set isCanonical(e){this._scope=e?this.engine.context:null,this._def=void 0}get canonical(){return this._scope?this:this.engine.box(this._id)}solve(e){let i=dt(e);return i.length!==1?null:i.includes(this.symbol)?[this.engine.Zero]:null}get complexity(){return 7}get head(){return"Symbol"}get symbol(){return this._id}get baseDefinition(){return this._def===void 0&&this.bind(),this._def??void 0}get symbolDefinition(){return this._def===void 0&&this.bind(),this._def instanceof le?this._def:void 0}get functionDefinition(){return this._def===void 0&&this.bind(),this._def instanceof Ye?this._def:void 0}infer(e){let i=this.engine.lookupSymbol(this._id)??this.engine.lookupFunction(this._id);if(!i){let t=this.engine.swapScope(this._scope??this.engine.context);return this._def=this.engine.defineSymbol(this._id,{domain:e,inferred:!0}),this.engine.swapScope(t),!0}return i instanceof le&&i.inferredDomain?(i.domain=xt(i.domain,e),!0):!1}get value(){let e=this._def;if(e&&e instanceof le)return e.value?.value}set value(e){let i=this.engine;i.forget(this._id);let t;if(typeof e=="boolean"&&(e=e?i.True:i.False),typeof e=="string"&&(e=i.string(e)),typeof e=="object")if("re"in e&&"im"in e)e=i.complex(e.re,e.im);else if("num"in e&&"denom"in e)e=i.number([e.num,e.denom]);else if(Array.isArray(e))e=i._fn("List",e.map(o=>i.box(o)));else throw new Error(`Invalid value for symbol ${this._id}: ${e}`);if(e!==void 0&&(t=i.box(e).evaluate()),t?.domain?.isFunction){this.engine.lookupSymbol(this._id),this._def=i.defineFunction(this._id,{signature:{...ht(t.domain),evaluate:t}});return}let r=this.engine.lookupSymbol(this._id);if(r&&r instanceof le)r.value=t;else{let o=t?.domain;o?.isNumeric&&(o=i.Numbers),this._def=i.defineSymbol(this._id,{value:t,domain:o})}}get domain(){let e=this._def;if(e){if(e instanceof Ye)return gr(this.engine,e.signature);if(e instanceof le)return e.domain??void 0}}set domain(e){if(!this._def)return;if(this._id[0]==="_")throw new Error(`The domain of the wildcard "${this._id}" cannot be changed`);let i=this.engine.domain(e);i.isFunction?(this.engine.forget(this._id),this._def=this.engine.defineFunction(this._id,{signature:ht(i)})):this._def instanceof le?this._def.domain=i:(this.engine.forget(this._id),this._def=this.engine.defineSymbol(this._id,{domain:i}))}get sgn(){let e=this._def;if(!e||!(e instanceof le))return null;let i=e.value;if(i&&i!==this){let t=i.sgn;if(t!==void 0)return t}if(e.zero===!0)return 0;if(e.positive===!0)return 1;if(e.negative===!0)return-1}has(e){return typeof e=="string"?this._id===e:e.includes(this._id)}isSame(e){return this===e?!0:e instanceof n?this._id===e._id:!1}match(e,i){return Gi(this,e,i)}isEqual(e){if(!this.isCanonical)return this.canonical.isEqual(e);if(e=e.canonical,this===e)return!0;if(e.symbol!==null)return e.symbol===this._id;let i=this.symbolDefinition?.value?.N();if(i)return i.isEqual(e.N());if(e.isZero){if(this.isZero)return!0;if(this.isNotZero)return!1}return this.isZero&&e.isNotZero?!1:this.engine.ask(["Equal",this,e]).length>0?!0:(this.engine.ask(["NotEqual",this,e]).length>0,!1)}isLess(e){if(e.symbol!==null&&e.symbol===this._id)return!1;let i=this.symbolDefinition?.value?.N();if(i)return i.isLess(e.N());if(e.isZero){let t=this.sgn;if(t===null)return!1;if(t!==void 0)return t<0}}isLessEqual(e){if(e.symbol!==null&&e.symbol===this._id)return!0;let i=this.symbolDefinition?.value?.N();if(i)return i.isLessEqual(e.N());if(e.isZero){let t=this.sgn;if(t===null)return!1;if(t!==void 0)return t<=0}return this.isLess(e)||this.isEqual(e)}isGreater(e){if(e.symbol!==null&&e.symbol===this._id)return!1;let i=this.symbolDefinition?.value?.N();if(i)return i.isGreater(e.N());if(e.isZero){let t=this.sgn;if(t===null)return!1;if(t!==void 0)return t>0}}isGreaterEqual(e){if(e.symbol!==null&&e.symbol===this._id)return!0;let i=this.symbolDefinition?.value?.N();if(i)return i.isGreaterEqual(e.N());if(e.isZero){let t=this.sgn;if(t===null)return!1;if(t!==void 0)return t>=0}return this.isGreater(e)||this.isEqual(e)}get isFunction(){return!!this.functionDefinition}get isZero(){return this.symbolDefinition?.zero}get isNotZero(){return this.symbolDefinition?.notZero}get isOne(){return this.symbolDefinition?.one}get isNegativeOne(){return this.symbolDefinition?.negativeOne}get isOdd(){return this.symbolDefinition?.odd}get isEven(){return this.symbolDefinition?.even}get isPrime(){return this.symbolDefinition?.prime}get isComposite(){return this.symbolDefinition?.composite}get isInfinity(){return this.symbolDefinition?.infinity}get isNaN(){return this.symbolDefinition?.NaN}get isPositive(){return this.symbolDefinition?.positive}get isNonPositive(){return this.symbolDefinition?.nonPositive}get isNegative(){return this.symbolDefinition?.negative}get isNonNegative(){return this.symbolDefinition?.nonNegative}get isNumber(){return this.symbolDefinition?.number}get isInteger(){return this.symbolDefinition?.integer}get isRational(){return this.symbolDefinition?.rational}get isAlgebraic(){return this.symbolDefinition?.rational}get isReal(){return this.symbolDefinition?.real}get isExtendedReal(){return this.symbolDefinition?.extendedReal}get isComplex(){return this.symbolDefinition?.complex}get isImaginary(){return this.symbolDefinition?.imaginary}simplify(e){let i=this.symbolDefinition;return i?.holdUntil==="simplify"&&i.value?i.value.simplify(e):e?.rules?this.replace(e.rules)??this:this}evaluate(e){let i=this.symbolDefinition;if(i){if(e?.numericMode)return i.holdUntil==="never"?this:i.value?.N(e)??this;if(i.holdUntil==="simplify"||i.holdUntil==="evaluate")return i.value?.evaluate(e)??this}return this}N(e){let i=this.symbolDefinition;return i&&i.holdUntil==="never"?this:i?.value?.N(e)??this}replace(e,i){return hr(this,e,i)}subs(e,i){return e[this._id]===void 0?i?.canonical===!0?this.canonical:this:this.engine.box(e[this._id],i)}};function ja(n,e){let i=n.lookupSymbol(e);return i?.holdUntil==="never"&&i.value?i.value:new Ln(n,e,{canonical:!0,def:i})}var lu=he(me(),1);var Ya=he(me(),1);var Wa=he(me(),1);var yt=he(me(),1);function Ha(n,e){if(K(e))return n;if(Ue(e))return 0;if(n===null)return null;if(Ci(e))return typeof n=="number"?-n:n instanceof ye||n instanceof yt.default?n.neg():ve(n);if(V(n))return W(n,e);if(G(e)){let[i,t]=e;if(typeof n=="number")return Number.isInteger(n)?[BigInt(n)*i,BigInt(n)*t]:new ye(n).mul(i.toString()).div(t.toString());if(n instanceof ye){let[r,o]=[new ye(i.toString()),new ye(t.toString())];return n.isInteger()?t===BigInt(1)?n.mul(r):[BigInt(n.mul(r).toString()),t]:n.mul(r).div(o)}if(n instanceof yt.default)return n.mul(Number(i)).div(Number(t))}else{let[i,t]=e;if(typeof n=="number")return Number.isInteger(n)?[n*i,t]:n*i/t;if(n instanceof ye)return n.isInteger()?[BigInt(n.mul(i).toString()),BigInt(t)]:n.mul(i).div(t);if(n instanceof yt.default)return n.mul(i).div(t)}return null}function Ei(n){let e=n.engine,i=n.head;if(kn(i))return e.function(i,[Ei(n.ops[0]),Ei(n.ops[1])]);if(i==="Divide")return e.div(n.ops[0],n.ops[1]);if(i==="Add"){let[t,r]=n.ops.reduce((o,s)=>(s.head==="Divide"?(o[0].push(s.ops[0]),o[1].push(s.ops[1])):o[0].push(s),o),[[],[]]);return e.div(e.add(...t),e.add(...r))}return i==="Negate"?e.neg(Ei(n.ops[0])):n}function Za(n,e){let i=[],t=n.engine;for(let o of n.factors){let s=e.find(o.factor);if(s!==-1)if(o.exponent.isSame(e.factors[s].exponent))i.push(o);else{let a=b(o.exponent),l=b(e.factors[s].exponent);if(a!==null&&l!==null){if(a>0&&l>0){let u=Math.min(a,l);i.push({factor:o.factor,exponent:t.number(u)})}else if(a<0&&l<0){let u=Math.max(a,l);i.push({factor:o.factor,exponent:t.number(u)})}}}}let r=n.integerCoefficient();if(r!==null){let o=e.integerCoefficient();o!==null&&i.push({factor:t.number(Bn(r,o)),exponent:t.One})}return i.length===0?t.One:t.mul(...i.map(o=>t.pow(o.factor,o.exponent)))}function Ja(n){let e=n.head;if(kn(e)){let t=new ei(n.op1),r=new ei(n.op2);t.reduceExactNumbers(),r.reduceExactNumbers();let o=Za(t,r);return o.isOne||(t.div(o),r.div(o)),n.engine.function(e,[t.asExpression(),r.asExpression()])}if(e==="Add"){let t=null;for(let r of n.ops)if(!t)t=new ei(r),t.reduceExactNumbers();else{let o=new ei(r);o.reduceExactNumbers(),t=new ei(Za(t,o)),t.reduceExactNumbers()}return t?.asExpression()??n.engine.One}let i=new ei(Ei(n));return i.reduceExactNumbers(),i.asExpression()}var ei=class{constructor(e){this.factors=[];this.hasNaN=!1;this.hasZero=!1;this.hasInfinity=!1;this.sign=1;this.engine=e.engine,this.mul(Ei(e))}div(e){if(!e.isOne){if(e.isNegativeOne){this.sign=-this.sign;return}this.mul(e,this.engine.NegativeOne)}}mul(e,i){if(i??(i=e.engine.One),e.head==="Negate"&&(this.sign=-this.sign,e=e.ops[0]),e.head==="Divide"){this.mul(e.ops[0],i),this.mul(e.ops[1],this.engine.neg(i));return}if(e.head==="Multiply"){for(let r of e.ops)this.mul(r,i);return}if(e.head==="Power"){this.mul(e.ops[0],this.engine.mul(e.ops[1],i));return}if(e.head==="Sqrt"){this.mul(e.ops[0],this.engine.mul(this.engine.Half,i));return}if(e.isNegative&&(this.sign=-this.sign,e=this.engine.neg(e)),i.isZero||e.isOne)return;if(e.isNaN){this.hasNaN=!0;return}if(e.isZero){i.isNonNegative?this.hasZero=!0:this.hasNaN=!0;return}if(e.isInfinity&&i.isNonNegative){i.isNonNegative?this.hasInfinity=!0:this.hasNaN=!0;return}let t=this.find(e);t===-1?this.factors.push({factor:e,exponent:i}):this.factors[t].exponent=this.engine.add(this.factors[t].exponent,i)}find(e){return this.factors.findIndex(i=>i.factor.isSame(e))}has(e){return this.find(e)!==-1}reduceNumbers(){let e=this.factors;this.factors=[];let i=this.engine,t=i.One;for(let r of e){let o=r.factor.N();o.numericValue!==null?t=i.mul(t,i.pow(o,r.exponent)):this.factors.push(r)}t.isOne||this.factors.push({factor:t,exponent:i.One})}reduceExactNumbers(){let e=this.engine;for(let u of this.factors){let f=u.factor;if(f.numericValue!==null&&!f.isExact)return this.reduceNumbers()}let i=this.factors;this.factors=[];let t=[1,1],r=1,o=0,s=[1,1];for(let u of i){let f=b(u.exponent);if(f===null){this.factors.push(u);continue}if(Number.isInteger(2*f)){let m=J(u.factor);if(m){s=W(s,ot(m,2*f));continue}}let d=J(u.factor);if(d){t=W(t,ot(d,f));continue}let c=u.factor.numericValue;if(c!==null&&c instanceof yt.default&&Number.isInteger(c.re)&&Number.isInteger(c.im)&&Number.isInteger(f)){c=c.pow(f),t=W(t,[c.re,1]),c.im!==0&&(r*=c.im,o+=f);continue}this.factors.push(u)}let[a,l]=ra(s);t=W(t,a),o!==0&&(o%2===0?t=W(t,[r,1]):ia(t)?(this.factors.push({factor:e.number(e.complex(Pe(t),r)),exponent:e.One}),t=[1,1]):this.factors.push({factor:e.number(e.complex(0,r)),exponent:e.One})),K(t)||this.factors.push({factor:e.number(t),exponent:e.One}),K(l)||this.factors.push({factor:e.sqrt(e.number(l)),exponent:e.One})}integerCoefficient(){let e=null;for(let i of this.factors){let t=b(i.factor);if(t!==null&&Number.isInteger(t)){let r=b(i.exponent);r!==null&&(e=(e??1)*Math.pow(t,r));continue}}return e}asExpression(){let e=this.engine;if(this.factors.length===0)return e.One;if(this.hasNaN)return e.NaN;if(this.hasInfinity)return this.sign>0?e.PositiveInfinity:e.NegativeInfinity;if(this.hasZero)return e.Zero;if(this.factors.length===1){let{factor:o,exponent:s}=this.factors[0];return e.pow(o,s)}let i=this.factors.filter(o=>o.exponent.isPositive&&!o.factor.isOne).map(o=>e.pow(o.factor,o.exponent)),t;i.length===0?t=this.sign>0?e.One:e.NegativeOne:i.length===1?this.sign<0?t=e.neg(i[0]):t=i[0]:(t=e._fn("Multiply",i),this.sign<0&&(t=e.neg(t)));let r=this.factors.filter(o=>o.exponent.isNegative&&!o.factor.isOne).map(o=>e.pow(o.factor,e.neg(o.exponent)));return r.length===0?t:r.length===1?e.div(t,r[0]):e.div(t,e._fn("Multiply",r))}};var Et=class{constructor(e,i){this.terms=[];this.engine=e;for(let t of i)this.add(t)}sub(e){this.add(e,[-1,1])}add(e,i){i??(i=[1,1]);let[t,r]=ze(e);if(t=W(t,i),Ue(t))return;if(r.head==="Add"){for(let s of r.ops)this.add(s,t);return}if(r.head==="Negate"){this.add(r.op1,ve(t));return}let o=this.find(r);if(o>=0){this.terms[o].coef=st(this.terms[o].coef,t);return}this.terms.push({coef:t,term:r})}find(e){return this.terms.findIndex(i=>i.term.isSame(e))}reduceNumbers({exact:e}){let i=this.engine,t=this.terms;this.terms=[];let r=0,o=0,s=0,a=0,l=[0,1],u=i._BIGNUM_ZERO;for(let{coef:f,term:d}of t){if(d.isNaN){this.terms=[{term:i.NaN,coef:[1,1]}];return}if(d.isFinite===!1){d.isPositive?r++:o++;continue}if(d.numericValue!==null){let c=Ha(d.numericValue,f);if(c!==null){V(c)?l=st(l,c):c instanceof ye?u=u.add(c):c instanceof Wa.default?(L(i)?u=u.add(c.re):s+=c.re,a+=c.im):L(i)?u=u.add(c):s+=c;continue}}this.terms.push({coef:f,term:d})}if(r>0&&o>0){this.terms=[{term:i.NaN,coef:[1,1]}];return}if(r>0){this.terms=[{term:i.PositiveInfinity,coef:[1,1]}];return}if(o>0){this.terms=[{term:i.NegativeInfinity,coef:[1,1]}];return}if(!e||!Number.isInteger(s)||!u.isInteger()||!Number.isInteger(a)){if(Ue(l)||(u=u.add(i.bignum(l[0]).div(i.bignum(l[1]))),l=[0,1]),!u.isZero()&&L(i)){u=u.add(s),u=u.add(i.bignum(l[0]).div(i.bignum(l[1]))),this.terms.push({term:i.number(u),coef:[1,1]}),a!==0&&this.terms.push({term:i.number(i.complex(0,a)),coef:[1,1]});return}let f=s+u.toNumber()+Number(l[0])/Number(l[1]);a!==0?this.terms.push({term:i.number(i.complex(f,a)),coef:[1,1]}):f!==0&&this.terms.push({term:i.number(f),coef:[1,1]});return}u.isZero()||(u=u.add(s),s=0,Ue(l)||(u=u.add(i.bignum(l[0]).div(i.bignum(l[1]))),l=[0,1]),this.terms.push({coef:[1,1],term:i.number(u)})),a!==0?(Ue(l)||(s+=Number(l[0])/Number(l[1])),this.terms.push({coef:[1,1],term:i.number(i.complex(s,a))})):s!==0&&this.terms.push({coef:[1,1],term:i.number(s)}),Ue(l)||this.terms.push({coef:[1,1],term:i.number(l)})}asExpression(e){let i=this.engine,{exact:t}=e,r=this.terms.filter(({coef:o,term:s})=>!Ue(o)&&!s.isZero);if(r.length===0)return i.Zero;if(r.length===1){let{coef:o,term:s}=r[0];if(K(o))return s;if(Ci(o))return i.neg(s);let a=o;return t||($(o)?a=o[0]/o[1]:G(o)&&(a=i.bignum(o[0]).div(i.bignum(o[1])))),i.mul(i.number(a),s)}return i.function("Add",r.map(({coef:o,term:s})=>{let a=o;return t||($(o)?a=o[0]/o[1]:G(o)&&(a=i.bignum(o[0]).div(i.bignum(o[1])))),i.mul(i.number(a),s)}))}};function qn(n,e){if(e.every(i=>i.isCanonical),e=e.filter(i=>i.numericValue===null||!i.isZero),e.length===0)return n.Zero;if(e.length===1&&!tr(e[0]))return e[0];if(e.length===2){let i=0,t=b(e[0]);if(t!==null&&t!==0?i=Sr(e[1]):(i=Sr(e[0]),i!==0&&e[1].numericValue!==null&&(t=b(e[1]))),t!==null&&i!==null&&i!==0)return n.number(n.complex(t,i))}return e.length===1?e[0]:n._fn("Add",po(e))}function Qa(n,e){let i=null;for(let t of e){if(!t?.isNumeric)return null;i=Kn(i,t)}return i}function Tr(n,e){let i=new Et(n,[]);for(let t of e){if(t=t.simplify(),t.isImaginary&&t.isInfinity)return n.ComplexInfinity;if(t.isNaN||t.symbol==="Undefined")return n.NaN;i.add(t)}return i.reduceNumbers({exact:!0}),i.asExpression({exact:!0})}function fd(n){let e=0;for(let i of n){let t=i.numericValue;if(typeof t=="number")e+=t;else return null}return e}function vt(n,e,i="evaluate"){if(i==="N"&&n.numericMode==="machine"){e=e.map(o=>o.N());let r=fd(e);if(r!==null)return n.number(r)}for(let r of e){if(r.isImaginary&&r.isInfinity)return n.ComplexInfinity;if(r.isNaN||r.symbol==="Undefined")return n.NaN;r.numericValue!==null&&!r.isExact&&(i="N")}i==="N"?e=e.map(r=>r.N()):e=e.map(r=>r.evaluate());let t=new Et(n,e);return t.reduceNumbers({exact:i!=="N"}),t.asExpression({exact:i!=="N"})}function Xa(n,e,i){n.pushScope(),e??(e=n.error("missing"));var t=void 0;if(i&&i.ops&&i.ops[0]?.head==="Delimiter"){var r=or(i);if(!r)return null;var o=[e.canonical];r.forEach(a=>o.push(a)),t=n._fn("Sum",o)}else{var s=Yn(i);t=s?n._fn("Sum",[e.canonical,s]):n._fn("Sum",[e.canonical])}return n.popScope(),t}function Br(n,e,i){let t=e[0],r=[];if(e){r=[];for(let c=1;c<e.length;c++)r.push(e[c])}let o=null;if(r?.length===0||bn(t)){let c=i==="simplify"?t.simplify():t.evaluate({numericMode:i==="N"});if(L(n)){let m=n.bignum(0);for(let g of Y(c)){let h=je(g);if(h===null){o=void 0;break}if(h.isFinite()===!1){m=h;break}m=m.add(h)}o===null&&(o=n.number(m))}else{let m=0;for(let g of Y(c)){let h=b(g);if(h===null){o=void 0;break}if(h===null||!Number.isFinite(h)){m=h;break}m+=h}o===null&&(o=n.number(m))}return o??void 0}let s=t;n.pushScope();var a=[];let l=[],u=[],f=[];r.forEach(c=>{let[m,g,h,E]=wn(c.evaluate());m&&(n.declare(m,{holdUntil:"simplify",domain:"Numbers"}),a.push(m),l.push(g),u.push(h),f.push(E))}),s.bind();for(let c=0;c<a.length;c++){let m=a[c],g=l[c],h=u[c],E=f[c];if(g>=h||i==="simplify"&&h-g>=Ki)return;if(i==="evaluate"&&h-g>=Ki&&(i="N"),i==="simplify"){let S=[];for(let B=g;B<=h;B++)n.assign(m,B),S.push(s.simplify());o=n.add(...S).simplify()}}let d=[];if(a.length>1)for(let c=0;c<a.length-1;c++)d.length===0?d=Ri(yn(l[c],u[c]),yn(l[c+1],u[c+1])):d=Ri(d.map(m=>m[0]),yn(l[c+1],u[c+1]));else d=yn(l[0],u[0]).map(c=>[c]);if(i==="evaluate"){let c=[];for(let m of d){let g=a.map((h,E)=>(n.assign(h,m[E]),h));c.push(s.evaluate())}o=n.add(...c).evaluate()}for(let c=0;c<a.length;c++)n.assign(a[c],void 0);if(i==="N")for(let c=0;c<a.length;c++){let m=a[c],g=l[c],h=u[c],E=f[c];if(o===null&&E)if(L(n)){let S=n.bignum(0);for(let B=g;B<=h;B++){n.assign(m,B);let _=je(s.N());if(_===null){o=void 0;break}if(_.isFinite()===!1){S=_;break}S=S.add(_)}o===null&&(o=n.number(S))}else{let S=n.numericMode,B=n.precision;n.numericMode="machine";let _=0;for(let w=g;w<=h;w++){n.assign(m,w);let Z=b(s.N());if(Z===null){o=void 0;break}if(!Number.isFinite(Z)){_=Z;break}_+=Z}n.numericMode=S,n.precision=B,o===null&&(o=n.number(_))}else if(o===null){n.assign(m,1e3);let S=s.N();n.assign(m,999);let B=s.N(),_=b(n.div(S,B).N());if(_!==null&&Number.isFinite(_)&&Math.abs(_)>1)o=n.PositiveInfinity;else{let w=0,Z=n.numericMode,ce=n.precision;n.numericMode="machine";for(let Me=g;Me<=h;Me++){n.assign(m,Me);let Oe=b(s.N());if(Oe===null){o=void 0;break}if(Math.abs(Oe)<Number.EPSILON||!Number.isFinite(Oe))break;w+=Oe}n.numericMode=Z,n.precision=ce,o===null&&(o=n.number(w))}}}return n.popScope(),o??void 0}function Sr(n){if(n.symbol==="ImaginaryUnit")return 1;let e=n.numericValue;if(e!==null&&e instanceof Ya.default&&e.re===0)return e.im;if(n.head==="Negate")return-Sr(n.op1);if(n.head==="Multiply"&&n.nops===2){if(n.op1.symbol==="ImaginaryUnit")return b(n.op2)??0;if(n.op2.symbol==="ImaginaryUnit")return b(n.op1)??0}if(n.head==="Divide"){let i=Sr(n.op1),t=b(n.op2);return t===null?0:i/t}return 0}var Ka=he(me(),1);function eu(n){let e=n.numericValue;return e===null?null:(typeof e=="number"?e=-e:e instanceof N||e instanceof Ka.Complex?e=e.neg():Array.isArray(e)&&(e=ve(e)),n.engine.number(e))}function Nt(n){let e=-1;for(;n.head==="Negate";)n=n.op1,e=-e;if(e===1)return n;if(n.numericValue!==null)return eu(n);let i=n.engine;if(n.head==="Subtract")return i.add(n.op2,Nt(n.op1));if(n.head==="Add"){let t=n.ops.map(r=>Nt(r));return i.add(...t)}return n.head==="Multiply"?dd(i,n.ops):n.head==="Divide"?i.div(Nt(n.op1),n.op2):i._fn("Negate",[n])}function fe(n){let e=-1;for(;n.head==="Negate";)n=n.op1,e=-e;if(e===1)return n;let i=n.engine;if(n.head==="Add"){let t=n.ops.map(r=>fe(r));return qn(i,ie(te(t),"Add"))}return n.numericValue!==null?eu(n):i._fn("Negate",[n])}function dd(n,e){let i=[],t=!1;for(let r of e)!t&&r.head==="Negate"?(t=!0,i.push(r.op1)):i.push(r);if(t)return n.mul(...i);i=[];for(let r of e)t||r.numericValue===null||!r.isInteger?i.push(r):(t=!0,i.push(fe(r)));if(t)return n.mul(...i);i=[];for(let r of e)t||r.numericValue===null||!r.isNumber?i.push(r):(t=!0,i.push(fe(r)));return t?n.mul(...i):n._fn("Negate",[n._fn("Multiply",e)])}function Ir(n,e,i="simplify"){return fe(e)}function vn(n,e){if(n.head==="Negate"&&e.head==="Negate")return vn(n.op1,e.op1);if(n.head==="Negate")return fe(vn(n.op1,e));if(e.head==="Negate")return fe(vn(n,e.op1));let i=n.engine;if(n.head==="Divide"&&e.head==="Divide"){let t=i.mul(n.op2,e.op2);return i.div(vn(n.op1,e.op1),t)}return n.head==="Divide"?i.div(vn(n.op1,e),n.op2):e.head==="Divide"?i.div(vn(n,e.op1),e.op2):n.head==="Add"?i.add(...n.ops.map(t=>vn(t,e))):e.head==="Add"?i.add(...e.ops.map(t=>vn(n,t))):i.mul(n,e)}function Vn(n){return n.length===1?n[0]:n.length===2?vn(n[0],n[1]):vn(n[0],Vn(n.slice(1)))}var _t=[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1],[1,5,10,10,5,1],[1,6,15,20,15,6,1],[1,7,21,35,35,21,7,1],[1,8,28,56,70,56,28,8,1]];function cd(n,e){for(;n>=_t.length;){let i=_t.length,t=[1],r=_t[i-1];for(let o=1;o<i;o++)t[o]=r[o-1]+r[o];t[i]=1,_t.push(t)}return _t[n][e]}function md(n){let e=n.reduce((t,r)=>t+r,0),i=1;for(let t=0;t<n.length;t+=1)i*=cd(e,n[t]),e-=n[t];return i}function*nu(n,e){if(n===1){yield[e];return}for(let i=0;i<=e;i+=1)for(let t of nu(n-1,e-i))yield[i,...t]}function iu(n){if(n.head!=="Power")return null;let e=U(n.op2);if(e===null||e<0)return null;if(e===0)return n.engine.One;if(e===1)return fn(n.op1);let i=n.engine;if(n.op1.head==="Negate"){let s=e%2===0?1:-1,a=iu(i._fn("Power",[n.op1.op1,n.op2]));return a===null?null:s>0?a:i.neg(a)}if(n.op1.head,n.op1.head!=="Add")return null;let t=n.op1.ops,r=nu(t.length,e),o=[];for(let s of r){let a=[i.number(md(s))];for(let l=0;l<s.length;l+=1)s[l]!==0&&(s[l]===1?a.push(t[l]):a.push(i.pow(t[l],s[l])));o.push(i.mul(...a))}return i.add(...o)}function Uo(n){if(n.head&&n.ops){let e=n.ops.map(t=>Uo(t)??t),i=n.engine.box([n.head,...e]);return fn(i)??i}return null}function pd(n){if(n.head!=="Divide")return null;let e=fn(n.op1);if(e===null)return null;let i=n.engine;return e.head==="Add"?i.add(...e.ops.map(t=>i.div(t,n.op2))):n.engine.div(e,n.op2)}function fn(n){if(!n)return null;let e=pd(n);if(e!==null||n.head==="Multiply"&&(e=Vn(n.ops),e!==null))return e;if(n.head==="Add"){let i=n.ops.map(t=>fn(t)??t);return Tr(n.engine,i)}return n.head==="Negate"&&(e=fn(n.op1),e!==null)?n.engine.neg(e):n.head==="Power"&&(e=iu(n),e!==null)?e:null}var hd=[{match:["Multiply","_x","__a"],replace:0,id:"ax",condition:({__a:n})=>!n.has("_x")},{match:["Add",["Divide","_a","_x"],"__b"],replace:1/0,condition:({_a:n,__b:e})=>!n.has("_x")&&!e.has("_x")},{match:["Add",["Multiply","_x","__a"],"__b"],replace:["Divide",["Negate","__b"],"__a"],condition:({__a:n,__b:e})=>!n.has("_x")&&!e.has("_x")},{match:["Add",["Multiply","_a",["Power","_x","_n"]],"__b"],replace:["Power",["Divide",["Negate","__b"],"_a"],["Divide",1,"_n"]],condition:({_a:n,__b:e,_n:i})=>!n.has("_x")&&!e.has("_x")&&!i.isZero},{match:["Add",["Multiply","__a",["Power","_x",2]],["Multiply","__b","_x"],"__c"],replace:["Divide",["Add",["Negate","__b"],["Sqrt",["Subtract",["Square","__b"],["Multiply",4,"__a","__c"]]]],["Multiply",2,"__a"]],condition:({__a:n,__b:e,__c:i})=>!n.has("_x")&&!e.has("_x")&&!i.has("_x")},{match:["Add",["Multiply","__a",["Power","_x",2]],["Multiply","__b","_x"],"__c"],replace:["Divide",["Subtract",["Negate","__b"],["Sqrt",["Subtract",["Square","__b"],["Multiply",4,"__a","__c"]]]],["Multiply",2,"__a"]],condition:({__a:n,__b:e,__c:i})=>!n.has("_x")&&!e.has("_x")&&!i.has("_x")},{match:["Add",["Multiply","__a",["Exp",["Multiply","__b","_x"]]],"__c"],replace:["Divide",["Ln",["Negate",["Divide","__c","__a"]]],"__b"],condition:({__a:n,__c:e},i)=>((!n.isZero&&i.div(e,n).isNegative)??!1)&&!n.has("_x")&&!e.has("_x")},{match:["Add",["Multiply","__a",["Exp","_x"]],"__c"],replace:["Ln",["Negate",["Divide","__c","__a"]]],condition:({__a:n,__c:e},i)=>((!n.isZero&&i.div(e,n).isNegative)??!1)&&!n.has("_x")&&!e.has("_x")}];function Dr(n,e){let i=n.engine;n.head==="Equal"&&(n=i.add(n.op1.canonical,i.neg(n.op2.canonical)).simplify());let t=i.cache("univariate-roots-rules",()=>gi(i,hd)),r=[n.subs({[e]:"_x"},{canonical:!1})],o=r.flatMap(s=>mt(s,t,{_x:i.symbol("_x")}));return o.length===0&&(r=r.flatMap(s=>tu(s)),o=r.flatMap(s=>mt(s,t,{_x:i.symbol(e)}))),o.length===0&&(r=r.flatMap(s=>fn(s.canonical)).filter(s=>s!==null),r=r.flatMap(s=>tu(s)),o=r.flatMap(s=>mt(s,t,{_x:i.symbol(e)}))),o.map(s=>s.evaluate().simplify())}var gd=[{match:["Add",["Abs",["Add",["Multiply","__a","_x"],"__b"]],"__c"],replace:["Add",["Multiply","__a","_x"],"__b","__c"]},{match:["Add",["Abs",["Add",["Multiply","__a","_x"],"__b"]],"__c"],replace:["Add",["Negate",["Multiply","__a","_x"]],["Negate","__b"],"__c"]},{match:["Multiply","__a",["Power","_b","_n"]],replace:"_b",condition:({__a:n,_b:e,_n:i})=>!n.has("_x")&&e.has("_x")&&!i.isZero&&!i.has("_x")},{match:["Multiply","__a",["Sqrt","_b"]],replace:["Multiply",["Square","_a"],"__b"],condition:({_b:n})=>n.has("_x")},{match:["Divide","_a","_b"],replace:"_a",condition:({_a:n,_b:e})=>n.has("_x")&&!e.isZero},{match:["Multiply","__a","_b"],replace:"_b",condition:({__a:n,_b:e})=>!n.has("_x")&&e.has("_x")},{match:["Add",["Ln","_a"],["Ln","_b"],"__c"],replace:["Add",["Ln",["Multiply","_a","_b"]],"__c"]},{match:["Multiply",["Exp","__a"],["Exp","__b"],"__c"],replace:["Multiply",["Exp",["Add","_a","_b"]],"__c"]},{match:["Ln","_a"],replace:["Subtract","_a",1],condition:({_a:n})=>n.has("_x")},{match:["Sin","_a"],replace:"_a",condition:({_a:n})=>n.has("_x")},{match:["Cos","_a"],replace:["Subtract","_a",["Divide","Pi",2]],condition:({_a:n})=>n.has("_x")},{match:["Tan","_a"],replace:"_a",condition:({_a:n})=>n.has("_x")},{match:["Add",["Sin","_a"],["Cos","_a"]],replace:1,condition:({_a:n})=>n.has("_x")},{match:["Subtract",["Square",["Sin","_a"]],["Square",["Cos","_a"]]],replace:["PlusMinus",["Sin","_a"],["Divide",["Sqrt",2],2]],condition:({_a:n})=>n.has("_x")}];function tu(n){let e=n.engine,i=e.cache("univariate-roots-rules",()=>gi(e,gd));return mt(n,i,{_x:e.symbol("_x")})}var ru=[];function dn(n,e,i){if(!e.isValid||!i.isValid)return n._fn("Divide",[e,i]);if(e.head==="Negate"&&i.head==="Negate"&&(e=e.op1,i=i.op1),e.numericValue!==null&&i.numericValue!==null){if(i.isOne)return e;if(i.isNegativeOne)return n.neg(e);if(e.isOne)return n.inv(i);if(e.isNegativeOne)return n.neg(n.inv(i));let m=J(e),g=J(i);if(m&&g&&!Ue(g))return n.number(W(m,Dn(g)))}if(e.head==="Divide"&&i.head==="Divide")return dn(n,n.mul(e.op1,i.op2),n.mul(e.op2,i.op1));if(e.head==="Divide")return dn(n,e.op1,n.mul(e.op2,i));if(i.head==="Divide")return dn(n,n.mul(e,i.op2),i.op1);let t=e.numericValue;if(t!==null){if($(t)){let[m,g]=t;return dn(n,n.number(m),n.mul(n.number(g),i))}if(G(t)){let[m,g]=t;return dn(n,n.number(m),n.mul(n.number(g),i))}}let r=i.numericValue;if(r!==null){if($(r)){let[m,g]=r;return dn(n,n.mul(e,n.number(g)),n.number(m))}if(G(r)){let[m,g]=r;return dn(n,n.mul(e,n.number(g)),n.number(m))}}let[o,s]=ze(e),[a,l]=ze(i);if(!K(o)||!K(a)){let[m,g]=oa(o,a),[h,E]=[n.mul(n.number(m),s),n.mul(n.number(g),l)];return E.isNegative&&(E=n.neg(E),h=n.neg(h)),E.head==="Negate"&&(E=E.op1,h=n.neg(h)),h.isZero?n.Zero:E.isOne?h:n._fn("Divide",[h,E])}let[u,f]=wo(e),[d,c]=wo(i);return f=f.canonical,c=c.canonical,c.numericValue!==null&&c.isOne?u*d<0?fe(f):f:u*d>0?n._fn("Divide",[f,c]):f.numericValue?n._fn("Divide",[fe(f),c]):fe(n._fn("Divide",[f,c]))}function St(n,e,i){if(e.numericValue!==null&&i.numericValue!==null){let t=J(e),r=J(i);if(t&&r&&!Ue(r))return n.number(W(t,Dn(r)))}return new Pn(n,[e,n.inv(i)]).asRationalExpression()}function kr(n,e,i){let t=St(n,e,i);return t?.head==="Divide"&&(!t.op1.isExact||!t.op2.isExact)&&(t=Mn(e,i,(r,o)=>r/o,(r,o)=>r.div(o),(r,o)=>r.div(o))??t),t!==void 0?t:n._fn("Divide",[e,i])}function ou(n,e,i){let t=St(n,e,i);t?.head==="Divide"&&(t=Mn(e,i,(o,s)=>o/s,(o,s)=>o.div(s),(o,s)=>o.div(s))??t);let r=t?.numericValue;if(G(r)){let[o,s]=r;return n.number(o/s)}if($(r)){let[o,s]=r;return n.number(o/s)}return t!==void 0?t:n._fn("Divide",[e,i])}function Tt(n,e){if(e.every(s=>s.isCanonical),e.length===0)return n.One;if(e.length===1)return e[0];let i=[],t=1,r,o=0;for(let s of e)if(!s.isOne){if(s.isNegativeOne){t=-t;continue}if(s.head==="Negate"){t=-t,i.push(s.op1);continue}if(r===void 0&&typeof s.numericValue=="number"){r=s.numericValue,r<0&&(t=-t,r=-r);continue}if(s.numericValue!==null&&s.isNegative){t=-t,i.push(n.neg(s));continue}if(s.symbol==="ImaginaryUnit"){o++;continue}i.push(s)}return o>0&&(o%2===0?t=-t:(i.push(n.number(n.complex(0,t*(r??1)))),t=1,r=void 0)),typeof r=="number"&&(i.push(n.number(t*r)),t=1),t<0?i.length===0?n.NegativeOne:i.length===1?n.neg(i[0]):n.neg(n._fn("Multiply",i.sort(an))):i.length===0?n.One:i.length===1?i[0]:n._fn("Multiply",i.sort(an))}function su(n,e){e.every(t=>t.head!=="Multiply");let i=new Pn(n);for(let t of e){if(t=t.simplify(),t.isNaN||t.symbol==="Undefined")return n.NaN;i.addTerm(t)}return i.asExpression()}function Bt(n,e,i="evaluate"){if(e.length===1)return e[0];if(i==="N"&&(e=e.map(t=>t.N()),(n.numericMode==="machine"||n.numericMode==="auto")&&e.every(t=>typeof t.numericValue=="number"))){let t=1;for(let r of e)t*=r.numericValue;return n.number(t)}for(let t of e){if(t.isNaN||t.symbol==="Undefined")return n.NaN;t.numericValue!==null&&!t.isExact&&(i="N")}return e.every(t=>t.head!=="Multiply"),i==="N"?e=e.map(t=>t.N()):e=e.map(t=>t.evaluate()),new Pn(n,e).asExpression(i)}function au(n,e,i){n.pushScope(),e??(e=n.error("missing"));var t=void 0;if(i&&i.ops&&i.ops[0]?.head==="Delimiter"){var r=or(i);if(!r)return null;var o=[e.canonical];r.forEach(a=>{o.push(a)}),t=n._fn("Product",o)}else{var s=Yn(i);t=s?n._fn("Product",[e.canonical,s]):n._fn("Product",[e.canonical])}return n.popScope(),t}function Ar(n,e,i){let t=e[0],r=[];if(e){r=[];for(let c=1;c<e.length;c++)r.push(e[c])}let o=null;if(r?.length===0||bn(t)){let c=i==="simplify"?t.simplify():t.evaluate({numericMode:i==="N"});if(L(n)){let m=n.bignum(1);for(let g of Y(c)){let h=je(g);if(h===null){o=void 0;break}if(h.isFinite()===!1){m=h;break}m=m.mul(h)}o===null&&(o=n.number(m))}else{let m=1;for(let g of Y(c)){let h=b(g);if(h===null){o=void 0;break}if(h===null||!Number.isFinite(h)){m=h;break}m*=h}o===null&&(o=n.number(m))}return o??void 0}let s=t;n.pushScope();var a=[];let l=[],u=[],f=[];r.forEach(c=>{let[m,g,h,E]=wn(c.evaluate());m&&(n.declare(m,{holdUntil:"simplify",domain:"Numbers"}),a.push(m),l.push(g),u.push(h),f.push(E))}),s.bind();for(let c=0;c<a.length;c++){let m=a[c],g=l[c],h=u[c],E=f[c];if(g>=h||i!=="N"&&(g>=h||h-g>=Ki))return;if(i==="simplify"){let S=[];for(let B=g;B<=h;B++)n.assign({[m]:B}),S.push(s.simplify());o=n.mul(...S).simplify()}}let d=[];if(a.length>1)for(let c=0;c<a.length-1;c++)d.length===0?d=Ri(yn(l[c],u[c]),yn(l[c+1],u[c+1])):d=Ri(d.map(m=>m[0]),yn(l[c+1],u[c+1]));else d=yn(l[0],u[0]).map(c=>[c]);if(i==="evaluate"){let c=[];for(let m of d){let g=a.map((h,E)=>(n.assign(h,m[E]),h));c.push(s.evaluate())}o=n.mul(...c).evaluate()}if(i==="N")for(let c=0;c<a.length;c++){let m=a[c],g=l[c],h=u[c],E=f[c];if(o===null&&E){if(L(n)){let w=n.bignum(1);for(let Z=g;Z<=h;Z++){n.assign({[m]:Z});let ce=je(s.N());if(ce===null||ce.isFinite()===!1){o=ce!==null?n.number(ce):void 0;break}w=w.mul(ce)}o===null&&(o=n.number(w))}let S=1,B=n.numericMode,_=n.precision;n.numericMode="machine";for(let w=g;w<=h;w++){n.assign({[m]:w});let Z=b(s.N());if(Z===null||!Number.isFinite(Z)){o=Z!==null?n.number(Z):void 0;break}S*=Z}n.numericMode=B,n.precision=_,o===null&&(o=n.number(S))}if(o===null){n.assign({[m]:1e3});let S=s.N();n.assign({[m]:999});let B=s.N(),_=b(n.div(S,B).N());if(_!==null&&Number.isFinite(_)&&Math.abs(_)>1)o=n.PositiveInfinity;else{let w=1,Z=n.numericMode,ce=n.precision;n.numericMode="machine";for(let Me=g;Me<=h;Me++){n.assign({[m]:Me});let Oe=b(s.N());if(Oe===null){o=void 0;break}if(Math.abs(1-Oe)<Number.EPSILON||!Number.isFinite(Oe))break;w*=Oe}o===null&&(o=n.number(w)),n.numericMode=Z,n.precision=ce}}}for(let c=0;c<a.length;c++)n.assign(a[c],void 0);return n.popScope(),o??void 0}var xe=class n extends P{constructor(i,t,r,o){o=o?{...o}:{},o.canonical??(o.canonical=!1);super(i,o.metadata);this._result=void 0;this._head=t,this._ops=r,o.canonical&&(this._canonical=this,this.bind()),i._register(this)}get hash(){if(this._hash!==void 0)return this._hash;let i=0;for(let t of this._ops)i=i<<1^t.hash|0;return typeof this._head=="string"?i=i^Te(this._head)|0:i=i^this._head.hash|0,this._hash=i,i}infer(i){let t=this._def;return!t||!t.signature.inferredSignature?!1:(typeof t.signature.result!="function"&&(t.signature.result=xt(t.signature.result,i)),!0)}bind(){this._def=void 0,this._scope=this.engine.context;let i=this._head;if(typeof i!="string"){i.bind();return}this._def=this.engine.lookupFunction(i);for(let t of this._ops)t.bind()}reset(){}get isExact(){return $i(this)&&this.op1.isExact}get isCanonical(){return this._canonical===this}set isCanonical(i){this._canonical=i?this:void 0}get isPure(){if(this._isPure!==void 0)return this._isPure;if(!this.isCanonical)return this._isPure=!1,!1;let i=this.functionDefinition?.pure??!1;return i&&(i=this._ops.every(t=>t.isPure)),this._isPure=i,i}get json(){return[typeof this._head=="string"?this._head:this._head.json,...this.ops.map(t=>t.json)]}get scope(){return this._scope}get head(){return this._head}get ops(){return this._ops}get nops(){return this._ops.length}get op1(){return this._ops[0]??this.engine.Nothing}get op2(){return this._ops[1]??this.engine.Nothing}get op3(){return this._ops[2]??this.engine.Nothing}get isValid(){return this._head==="Error"||typeof this._head!="string"&&!this._head.isValid?!1:this._ops.every(i=>i?.isValid)}get canonical(){return this._canonical??(this._canonical=this.isValid?this.engine.function(this._head,this._ops):this),this._canonical}subs(i,t){let r=this._ops.map(o=>o.subs(i,t));return r.every(o=>o.isValid)?this.engine.function(this._head,r,t):this.engine.function(this._head,r,{canonical:!1})}replace(i,t){return hr(this,i,t)}has(i){if(typeof this._head=="string"){if(typeof i=="string"){if(this._head===i)return!0}else if(i.includes(this._head))return!0}for(let t of this._ops)if(t.has(i))return!0;return!1}isSame(i){if(this===i)return!0;if(!(i instanceof n)||this.nops!==i.nops)return!1;if(typeof this.head=="string"){if(this.head!==i.head)return!1}else if(typeof i.head=="string"||!i.head||!this.engine.box(this.head).isSame(this.engine.box(i.head)))return!1;let t=this._ops,r=i._ops;for(let o=0;o<t.length;o++)if(!t[o].isSame(r[o]))return!1;return!0}match(i,t){return Gi(this,i,t)}get complexity(){if(this.isCanonical)return this.functionDefinition?.complexity??gn}get baseDefinition(){return this.functionDefinition}get functionDefinition(){return this._def}isEqual(i){if(this===i)return!0;let t=this.head;if(t==="Equal"||t==="NotEqual"||t==="Unequal")return i.head!==t?!1:!!(this.op1.isEqual(i.op1)&&this.op2.isEqual(i.op2)||this.op1.isEqual(i.op2)&&this.op2.isEqual(i.op1));if(t==="Less")return i.head==="Less"?!!(this.op1.isEqual(i.op1)&&this.op2.isEqual(i.op2)):i.head==="Greater"?!!(this.op1.isEqual(i.op2)&&this.op2.isEqual(i.op1)):!1;if(t==="Greater")return i.head==="Greater"?!!(this.op1.isEqual(i.op1)&&this.op2.isEqual(i.op2)):i.head==="Less"?!!(this.op1.isEqual(i.op2)&&this.op2.isEqual(i.op1)):!1;if(t==="LessEqual")return i.head==="LessEqual"?!!(this.op1.isEqual(i.op1)&&this.op2.isEqual(i.op2)):i.head==="GreaterEqual"?!!(this.op1.isEqual(i.op2)&&this.op2.isEqual(i.op1)):!1;if(t==="GreaterEqual")return i.head==="GreaterEqual"?!!(this.op1.isEqual(i.op1)&&this.op2.isEqual(i.op2)):i.head==="LessEqual"?!!(this.op1.isEqual(i.op2)&&this.op2.isEqual(i.op1)):!1;if(kn(t))return i.head!==this.head?!1:!!(this.op1.isEqual(i.op1)&&this.op2.isEqual(i.op2));let r=pi(this,i);return r===0?!0:r!==void 0?!1:this.engine.add(this,this.engine.neg(i)).simplify().isZero?!0:this.isSame(i)}get isNumber(){return this.domain?.isCompatible("Numbers")}get isInteger(){return this.domain?.isCompatible("Integers")}get isRational(){return this.domain?.isCompatible("RationalNumbers")}get isAlgebraic(){return this.domain?.isCompatible("AlgebraicNumbers")}get isReal(){return this.domain?.isCompatible("RealNumbers")}get isExtendedReal(){return this.domain?.isCompatible("ExtendedRealNumbers")}get isComplex(){return this.domain?.isCompatible("ComplexNumbers")}get isImaginary(){return this.domain?.isCompatible("ImaginaryNumbers")}get domain(){if(this._result!==void 0)return this._result;if(!this.canonical)return;let i=this.engine,t;if(typeof this._head!="string")t=this._head.domain;else if(this._def){let r=this._def.signature;typeof r.result=="function"?t=r.result(i,this._ops):t=r.result}return t??(t=void 0),this._result=t,t}simplify(i){if(!this.isValid)return this;if(!this.isCanonical){let f=this.canonical;return!f.isCanonical||!f.isValid?this:f.simplify(i)}let t=i?.recursive??!0,r;if(t&&(r=fn(this),r!==null))return r=r.simplify({...i,recursive:!1}),It(this,r);let o=this.functionDefinition,s=t?uu(this._ops,o?.hold??"none",o?.associative?o.name:"",f=>f.simplify(i)):this._ops;if(typeof this._head!="string"){let f=bi(this._head,s);return typeof f.head!="string"?f:f.simplify(i)}if(o)if(o.inert)r=s[0]?.canonical??this;else{let f=o.signature;f?.simplify&&(r=f.simplify(this.engine,s))}r?r=It(this.engine.box([this._head,...s]),r):r=this.engine.box([this._head,...s]),r=It(this,r);let a=i?.rules??this.engine.cache("standard-simplification-rules",()=>gi(this.engine,ru),f=>{for(let[d,c,m,g]of f)d.reset(),c.reset();return f}),l=0,u=!1;do{let f=r.replace(a);f!==null?(r=It(r,f),r===f&&(u=!0)):u=!0,l+=1}while(!u&&l<this.engine.iterationLimit);return It(this,r)}evaluate(i){if(!this.isValid)return this;if(i?.numericMode){let a=this.head;if(a==="Integrate"||a==="Limit")return this.engine.box(["N",this],{canonical:!0}).evaluate(i)}if(!this.isCanonical){this.engine.pushScope();let a=this.canonical;return this.engine.popScope(),!a.isCanonical||!a.isValid?this:a.evaluate(i)}let t=this.functionDefinition;if(t?.threadable&&this.ops.some(a=>ue(a))){let a=Math.max(...this._ops.map(u=>u.functionDefinition?.size?.(u)??0)),l=[];for(let u=0;u<=a-1;u++){let f=this._ops.map(d=>ue(d)?ha(d,u%a+1)??this.engine.Nothing:d);l.push(this.engine._fn(this.head,f).evaluate(i))}return l.length===0?this.engine.box(["Sequence"]):l.length===1?l[0]:this.engine._fn("List",l)}let r=uu(this._ops,t?.hold??"none",t?.associative?t.name:"",a=>a.evaluate(i));if(t?.inert)return r[0]??this;let o;typeof this._head!="string"&&(o=bi(this._head,r));let s=t?.signature;if(!o&&s){let a=i?.numericMode??!1,l=this.engine.swapScope(this.scope);a&&s.N&&(o=s.N(this.engine,r)),!o&&s.evaluate&&(o=s.evaluate(this.engine,r)),this.engine.swapScope(l)}if(o){let a=o.numericValue;a!==null&&(!ae(this.engine)&&a instanceof lu.Complex?o=this.engine.NaN:!L(this.engine)&&a instanceof N&&(o=this.engine.number(a.toNumber())))}return o??this.engine.box([this._head,...r])}N(i){return this.evaluate({...i,numericMode:!0})}solve(i){let t=dt(i);return t.length!==1?null:Dr(this.simplify(),t[0])}};function xd(n,e,i,t){let r=[];if(e==="Add"||e==="Multiply")r=Fe(n,pr(n,i),{flatten:e});else if(e==="Negate"||e==="Square"||e==="Sqrt"||e==="Exp"||e==="Ln")r=Fe(n,pr(n,i),1);else if(e==="Divide"||e==="Power")r=Fe(n,pr(n,i),2);else return null;if(!r.every(o=>o.isValid))return n._fn(e,r,t);if(e==="Add")return qn(n,ie(te(r),"Add"));if(e==="Negate")return fe(r[0]);if(e==="Multiply")return Tt(n,ie(te(r),"Multiply"));if(e==="Divide")return dn(n,r[0].canonical,r[1].canonical);if(e==="Exp")return Rn(n,n.E,r[0].canonical);if(e==="Power")return Rn(n,r[0].canonical,r[1].canonical);if(e==="Square")return Rn(n,r[0].canonical,n.number(2));if(e==="Sqrt"){let o=r[0].canonical;return V(o.numericValue)?n._fn("Sqrt",[o],t):Rn(n,o,n.Half)}return e==="Ln"?n._fn("Ln",r,t):null}function fu(n,e,i,t){if(typeof e!="string"&&(n.pushScope(),e=e.evaluate().symbol??e,n.popScope()),typeof e=="string"){let u=xd(n,e,i,t);if(u)return u}else if(!e.isValid)return new xe(n,e,i.map(u=>n.box(u,{canonical:!1})),{metadata:t,canonical:!1});let r=n.lookupFunction(e);if(!r)return new xe(n,e,te(i.map(u=>n.box(u))),{metadata:t,canonical:!0});let o=[];for(let u=0;u<i.length;u++)if(!An(r.hold,i.length-1,u))o.push(n.box(i[u]));else{let f=n.box(i[u],{canonical:!1});f.head==="ReleaseHold"?o.push(f.op1.canonical):o.push(f)}let s=r.signature;if(s.canonical){try{let u=s.canonical(n,o);if(u)return u}catch(u){console.error(u)}return new xe(n,e,o,{metadata:t,canonical:!1})}let a=te(o);r.associative&&(a=ie(a,e));let l=xa(n,a,r.hold,r.threadable,s.params,s.optParams,s.restParam);if(l)return n._fn(e,l,t);if(a.length===1&&a[0].head===e){if(r.involution)return a[0].op1;r.idempotent&&(a=o[0].ops)}return a.length>1&&r.commutative===!0&&(a=[...a].sort(an)),n._fn(e,a,t)}function uu(n,e,i,t){if(n.length===0)return[];if(n=ie(n,i),e==="all")return n;if(e==="none"){let o=[];for(let s of n){let a=s.head;if(a==="Hold")o.push(s);else{let l=a==="ReleaseHold"?s.op1:s;if(l){let u=t(l);u!==null&&o.push(u)}}}return ie(o,i)}let r=[];for(let o=0;o<n.length;o++)if(n[o].head==="Hold")r.push(n[o]);else{let s;if(n[o].head==="ReleaseHold"?s=n[o].op1:An(e,n.length-1,o)?r.push(n[o]):s=n[o],s){let a=t(s);a!==null&&r.push(a)}}return ie(r,i)}function It(n,e){if(e==null||n===e)return n;let i=n.engine,t=i.box(e);return i.costFunction(t)<=1.2*i.costFunction(n)?t:n}var Zo=he(me(),1);function wr(n,e){switch(e){case"float64":case"float32":case"int32":case"uint8":return new Go(n);case"complex128":case"complex64":return new jo(n);case"bool":case"string":case"expression":return new zo(n)}throw new Error(`Unknown dtype ${e}`)}var Go=class{constructor(e){this.ce=e;this.one=1;this.zero=0;this.nan=NaN}cast(e,i){let t=this.ce;switch(i){case"float64":case"float32":case"int32":case"uint8":return e;case"complex128":case"complex64":return Array.isArray(e)?e.map(r=>t.complex(r)):this.ce.complex(e);case"bool":return Array.isArray(e)?e.map(r=>r!==0):e!==0;case"string":return Array.isArray(e)?e.map(r=>Number(r).toString()):Number(e).toString();case"expression":return Array.isArray(e)?e.map(r=>t.number(r)):t.number(e)}throw new Error(`Cannot cast ${e} to ${i}`)}expression(e){return this.ce.number(e)}isZero(e){return e===0}isOne(e){return e===1}equals(e,i){return e===i}add(e,i){return e+i}addn(...e){return e.reduce((i,t)=>i+t,0)}neg(e){return-e}sub(e,i){return e-i}mul(e,i){return e*i}muln(...e){return e.reduce((i,t)=>i*t,1)}div(e,i){return e/i}pow(e,i){return e**i}conjugate(e){return e}},zo=class{constructor(e){this.one=e.One,this.zero=e.Zero,this.nan=e.NaN,this.ce=e}cast(e,i){if(Array.isArray(e))return e.map(r=>this.cast(r,i));let t=e.value;switch(i){case"float64":case"float32":return typeof t=="number"?t:void 0;case"int32":return typeof t=="number"?Math.round(t):void 0;case"uint8":if(typeof t!="number")return;let r=Math.round(t);return r>=0&&r<=255?r:void 0;case"complex128":case"complex64":if(typeof t=="number")return this.ce.complex(t);let o=e.numericValue;return o instanceof Zo.default?o:void 0;case"bool":return typeof t=="boolean"?t:void 0;case"string":return typeof t=="string"?t:void 0;case"expression":return e}throw new Error(`Cannot cast ${e} to ${i}`)}expression(e){return e}isZero(e){return e.isZero??!1}isOne(e){return e.isOne??!1}equals(e,i){return e.isEqual(i)}add(e,i){return this.ce.add(e,i)}addn(...e){return this.ce.add(...e)}neg(e){return this.ce.neg(e)}sub(e,i){return this.ce.add(e,this.ce.neg(i))}mul(e,i){return this.ce.mul(e,i)}muln(...e){return this.ce.mul(...e)}div(e,i){return this.ce.div(e,i)}pow(e,i){return this.ce.pow(e,i)}conjugate(e){return this.ce.box(["Conjugate",e])}},jo=class{constructor(e){this.ce=e,this.one=e.complex(1),this.zero=e.complex(0),this.nan=e.complex(NaN)}cast(e,i){if(Array.isArray(e))return e.map(t=>this.cast(t,i));switch(i){case"float64":return e.im===0?e.re:void 0;case"float32":return e.im===0?e.re:void 0;case"int32":return e.im===0?Math.round(e.re):void 0;case"uint8":if(e.im!==0)return;let t=Math.round(e.re);return t>=0&&t<=255?t:void 0;case"complex128":return e;case"complex64":return e;case"bool":return!(e.im===0&&e.re===0);case"string":return e.toString();case"expression":return this.ce.number(e)}throw new Error(`Cannot cast ${e} to ${i}`)}expression(e){return this.ce.number(e)}isZero(e){return e.isZero()}isOne(e){return e.re===1&&e.im===0}equals(e,i){return e.equals(i)}add(e,i){return e.add(i)}addn(...e){return e.reduce((i,t)=>i.add(t),this.zero)}neg(e){return e.neg()}sub(e,i){return e.sub(i)}mul(e,i){return e.mul(i)}muln(...e){return e.reduce((i,t)=>i.mul(t),this.one)}div(e,i){return e.div(i)}pow(e,i){return e.pow(i)}conjugate(e){return e.conjugate()}};function Cr(n,e){return n===e?n:n==="string"||e==="string"||n==="expression"||e==="expression"?"expression":n==="complex128"||e==="complex128"?"complex128":n==="complex64"||e==="complex64"?"complex64":n==="float64"||e==="float64"?"float64":n==="float32"||e==="float32"?"float32":n==="int32"||e==="int32"?"int32":n==="uint8"||e==="uint8"?"uint8":n==="bool"||e==="bool"?"bool":"expression"}function Ho(n){let e=n.value;if(typeof e=="number")return Number.isInteger(e)?e>=0&&e<=255?"uint8":"int32":"float64";let i=n.numericValue;return i!==null&&i instanceof Zo.default?"complex128":n.string?"string":"expression"}var ni=class n{constructor(e,i){this.ce=e;this.shape=i.shape,this.rank=this.shape.length,this._strides=bd(this.shape),this.field=wr(e,i.dtype)}static align(e,i){if(e.dtype===i.dtype)return[e,i];let t=Cr(e.dtype,i.dtype);return e.dtype===t?[e,i.upcast(t)]:[e.upcast(t),i]}static broadcast(e,i,t){if(!(t instanceof n))return i.map1(e,t);let[r,o]=n.align(i,t),s=r.data.map((a,l)=>e(a,o.data[l]));return Nn(r.ce,{dtype:r.dtype,shape:r.shape,data:s})}get expression(){let e=this.shape,i=this.rank,t=this.data,r=this._index.bind(this),o=this.field.expression.bind(this.field),s=a=>{if(a.length===i-1){let l=r(a),u=this.ce._fn("List",t.slice(l,l+e[i-1]).map(f=>o(f)));return u.isCanonical=u.ops.every(f=>f.isCanonical),u}else{let l=[];for(let f=0;f<=e[a.length]-1;f++)l.push(s([...a,f+1]));let u=this.ce._fn("List",l);return u.isCanonical=u.ops.every(f=>f.isCanonical),u}};return s([])}get array(){let e=this.shape,i=this.rank,t=this.data;if(i===1)return t;if(i===2){let[s,a]=e,l=new Array(s);for(let u=0;u<s;u++)l[u]=t.slice(u*a,(u+1)*a);return l}let r=this._index.bind(this),o=s=>{if(s.length===i-1){let a=r(s);return t.slice(a,a+e[i-1])}else{let a=[];for(let l=0;l<e[s.length];l++)a.push(o([...s,l+1]));return a}};return o([])}_index(e){let i=this._strides;return e.reduce((t,r,o)=>t+(r-1)*i[o],0)}get isSquare(){let e=this.shape;return e.length===2&&e[0]===e[1]}get isSymmetric(){if(!this.isSquare)return!1;let e=this.shape[0],i=this.data,t=this.field.equals.bind(this.field);for(let r=0;r<e;r++)for(let o=r+1;o<e;o++)if(!t(i[r*e+o],i[o*e+r]))return!1;return!0}get isSkewSymmetric(){if(!this.isSquare)return!1;let e=this.shape[0],i=this.data,t=this.field.equals.bind(this.field),r=this.field.neg.bind(this.field);for(let o=0;o<e;o++)for(let s=o+1;s<e;s++)if(!t(i[o*e+s],r(i[s*e+o])))return!1;return!0}get isUpperTriangular(){if(!this.isSquare)return!1;let e=this.shape[0],i=this.data,t=this.field.isZero.bind(this.field);for(let r=1;r<e;r++)for(let o=0;o<r;o++)if(t(i[r*e+o]))return!1;return!0}get isLowerTriangular(){if(!this.isSquare)return!1;let e=this.shape[0],i=this.data,t=this.field.isZero.bind(this.field);for(let r=0;r<e-1;r++)for(let o=r+1;o<e;o++)if(!t(i[r*e+o]))return!1;return!0}get isTriangular(){if(!this.isSquare)return!1;let e=this.shape[0],i=this.data,t=this.field.isZero.bind(this.field);for(let r=0;r<e;r++)for(let o=0;o<e;o++)if(r<o&&!t(i[r*e+o])||r>o&&!t(i[r*e+o]))return!1;return!0}get isDiagonal(){if(!this.isSquare)return!1;let e=this.shape[0],i=this.data,t=this.field.isZero.bind(this.field);for(let r=0;r<e;r++)for(let o=0;o<e;o++)if(r===o&&!t(i[r*e+o])||r!==o&&!t(i[r*e+o]))return!1;return!0}get isIdentity(){if(!this.isSquare)return!1;let[e,i]=this.shape,t=this.data,r=this.field.isOne.bind(this.field),o=this.field.isZero.bind(this.field);for(let s=0;s<i;s++)for(let a=0;a<i;a++)if(s===a&&!r(t[s*i+a])||s!==a&&!o(t[s*i+a]))return!1;return!0}get isZero(){let e=this.field.isZero.bind(this.field);return this.data.every(i=>e(i))}at(...e){let i=this.data.length;return this.data[this._index(e)%i]}diagonal(e,i){if(e??(e=1),i??(i=2),e===i||e<=0||e>this.shape.length||this.shape[e-1]!==this.shape[i-1])return;let t=new Array(this.shape[e-1]),r=this.data,o=this.shape[e-1];for(let s=0;s<o;s++)t[s]=r[s*o+s];return t}trace(e,i){if(this.rank!==2)return;let[t,r]=this.shape;if(t!==r)return;let o=this.data,s=new Array(t);for(let a=0;a<t;a++)s[a]=o[a*t+a];return this.field.addn(...s)}reshape(...e){return Nn(this.ce,{dtype:this.dtype,shape:e,data:this.data})}flatten(){return this.data}upcast(e){let i=this.field.cast(this.data,e);if(i===void 0)throw Error(`Cannot cast tensor to ${e}`);return Nn(this.ce,{dtype:e,shape:this.shape,data:i})}transpose(e,i,t){if(this.rank!==2)return;if(e??(e=1),i??(i=2),e===i)return this;if(e<=0||e>2||i<=0||i>2)return;let[r,o]=this.shape,s=this.data;t&&(s=s.map(f=>t(f)));let a=0,l=new Array(r*o),u=o;for(let f=0;f<o;f++)for(let d=0;d<r;d++)l[a++]=s[d*u+f];return Nn(this.ce,{dtype:this.dtype,shape:[o,r],data:l})}conjugateTranspose(e,i){let t=this.field.conjugate.bind(this.field);return this.transpose(e,i,t)}determinant(){if(this.rank!==2)return;let[e,i]=this.shape;if(e!==i)return;if(e===1)return this.data[0];let t=this.field.add.bind(this.field),r=this.field.mul.bind(this.field),o=this.field.neg.bind(this.field);if(e===2){let[h,E,S,B]=this.data;return t(r(h,B),o(r(E,S)))}let s=this.field.addn.bind(this.field),a=this.field.muln.bind(this.field);if(e===3){let[h,E,S,B,_,w,Z,ce,Me]=this.data;return s([a(h,_,Me),a(E,w,Z),a(S,B,ce),o(a(S,_,Z)),o(a(E,B,Me)),o(a(h,w,ce))])}let l=this.shape[0],u=!1,f=this.field.div.bind(this.field),d=this.field.sub.bind(this.field),c=new Array(l).fill(0).map((h,E)=>E),m=[...this.data];for(let h=0;h<l;h++){let E=c[h-1];if(this.at(E,h)===0){let _;for(_=h+1;_<l;_++)if(this.at(c[_],h)!==0){E=c[_],c[_-1]=c[h-1],c[h-1]=E,u=!u;break}if(_===l)return this.at(E,h)}let S=this.at(E,h),B=h===0?1:this.at(c[h-2],h-2);for(let _=h+1;_<l;_++){let w=c[_-1];for(let Z=h+1;Z<l;Z++)m[w][Z]=f(d(r(m[w][Z],S),r(m[w][h],m[E][Z])),B)}}let g=m[c[l-1]][l-1];return u?this.field.neg(g):g}inverse(){if(this.rank!==2)return;let[e,i]=this.shape;if(e!==i)return;if(e===2){let[c,m,g,h]=this.data,E=this.determinant();if(E===void 0||this.field.isZero(E))return;let S=this.field.div.bind(this.field),B=this.field.neg.bind(this.field),_=[S(h,E),B(S(m,E)),B(S(g,E)),S(c,E)];return Nn(this.ce,{dtype:this.dtype,shape:[i,i],data:_})}let t=this.shape[0],r=this.field.div.bind(this.field),o=this.field.sub.bind(this.field),s=this.field.mul.bind(this.field),a=this.array,l=new Array(t).fill(0).map((c,m)=>{let g=new Array(t).fill(0);return g[m]=1,g}),u=a.map((c,m)=>[...c,...l[m]]),f=new Array(t).fill(0).map((c,m)=>m);for(let c=0;c<t;c++){let m=f[c-1];if(this.at(m,c)===0){let E;for(E=c+1;E<t;E++)if(this.at(f[E],c)!==0){m=f[E],f[E-1]=f[c-1],f[c-1]=m;break}if(E===t)return}let g=this.at(m,c),h=c===0?1:this.at(f[c-2],c-2);for(let E=c+1;E<t;E++){let S=f[E-1];for(let B=c+1;B<t*2;B++)u[S][B]=o(u[S][B],s(r(s(u[S][c],u[m][B]),g),h))}}for(let c=t-1;c>=0;c--){let m=u[f[c],c];for(let g=0;g<c;g++){let h=f[g];for(let E=t;E<t*2;E++)u[h][E]=o(u[h][E],s(r(s(u[h][c],u[c][E]),m),m))}for(let g=t;g<t*2;g++)u[c][g]=r(u[c][g],m)}let d=u.map(c=>c.slice(t));return Nn(this.ce,{dtype:this.dtype,shape:[i,i],data:d})}pseudoInverse(){}adjugateMatrix(){}minor(e,i){}map1(e,i){return Nn(this.ce,{dtype:this.dtype,shape:this.shape,data:this.data.map(t=>e(t,i))})}map2(e,i){let t=i.data;return Nn(this.ce,{dtype:this.dtype,shape:this.shape,data:this.data.map((r,o)=>e(r,t[o]))})}add(e){return n.broadcast(this.field.add.bind(this.field),this,e)}subtract(e){return n.broadcast(this.field.sub.bind(this.field),this,e)}multiply(e){return n.broadcast(this.field.mul.bind(this.field),this,e)}divide(e){return n.broadcast(this.field.div.bind(this.field),this,e)}power(e){return n.broadcast(this.field.pow.bind(this.field),this,e)}equals(e){if(this.rank!==e.rank||!this.shape.every((o,s)=>o===e.shape[s]))return!1;let i=this.field.equals.bind(this.field),t=this.field.cast.bind(this.field),r=this.dtype;return this.dtype!==e.dtype?!!this.data.every((o,s)=>i(o,t(e.data[s],r))):this.data.every((o,s)=>i(o,e.data[s]))}};function bd(n){let e=new Array(n.length);for(let i=n.length-1,t=1;i>=0;i--)e[i]=t,t*=n[i];return e}var Jo=class extends ni{constructor(i,t){super(i,t);this.dtype="float64";this.data=t.data}get isZero(){return this.data.every(i=>i===0)}},Wo=class extends ni{constructor(i,t){super(i,t);this.dtype="complex128";this.data=t.data}},Yo=class extends ni{constructor(i,t){super(i,t);this.dtype="bool";this.data=t.data}},Qo=class extends ni{constructor(i,t){super(i,t);this.dtype="expression";this.data=t.data}};function Nn(n,e){let i=e.dtype;return i==="float64"||i==="float32"||i==="uint8"||i==="int32"?new Jo(n,e):i==="bool"?new Yo(n,e):i==="complex64"||i==="complex128"?new Wo(n,e):new Qo(n,e)}var vi=class n extends P{constructor(e,i,t){t=t?{...t}:{},t.canonical??(t.canonical=!0),super(e,t.metadata),i instanceof ni?this._tensor=i:(this._head=i.head??"List",this._ops=t.canonical===!0?re(i.ops):i.ops,this._expression=e._fn(this._head,this._ops,{canonical:t.canonical})),e._register(this)}get expression(){return this._expression??(this._expression=this._tensor.expression),this._expression}get tensor(){if(this._tensor===void 0){this._head,this._ops;let e=yd(this._head,this._ops);if(e===void 0)throw new Error("Invalid tensor");this._tensor=Nn(this.engine,e)}return this._tensor}get baseDefinition(){return this.expression.baseDefinition}get functionDefinition(){return this.expression.functionDefinition}bind(){this.expression.bind()}reset(){}get hash(){return Te("BoxedTensor")}get canonical(){return this.isCanonical?this:new n(this.engine,{head:this._head,ops:this._ops},{canonical:!0})}get isCanonical(){return this._tensor?!0:this._expression.isCanonical}set isCanonical(e){this._tensor||(this.expression.isCanonical=e)}get isPure(){return this._tensor?!0:this.expression.isPure}get isValid(){return this._tensor?!0:this.expression.isValid}get complexity(){return 97}get head(){return this._tensor?"List":this._head}get nops(){return this._tensor?this._tensor.shape[0]:this.expression.nops}get ops(){return this.expression.ops}get op1(){if(this._tensor){let e=this._tensor.data;return e.length===0?this.engine.Nothing:this.engine.box(e[0])}return this.expression.op1}get op2(){if(this._tensor){let e=this._tensor.data;return e.length<2?this.engine.Nothing:this.engine.box(e[1])}return this.expression.op2}get op3(){if(this._tensor){let e=this._tensor.data;return e.length<3?this.engine.Nothing:this.engine.box(e[2])}return this.expression.op3}get shape(){return this.tensor.shape}get rank(){return this.tensor.rank}get domain(){return this._tensor?this.engine.domain("Lists"):this.expression.domain}get json(){return this.expression.json}isSame(e){return this===e?!0:e instanceof n?this.tensor.equals(e.tensor):this.expression.isSame(e)}isEqual(e){return this===e?!0:e instanceof n?this.tensor.equals(e.tensor):this.expression.isEqual(e)}match(e,i){return un(e)||(e=this.engine.box(e,{canonical:!1})),Ze(e)?{[He(e)]:this}:this.expression.match(e,i)}evaluate(e){return this._tensor?this:this.expression.evaluate(e)}simplify(e){return this._tensor?this:this.expression.simplify(e)}N(e){return this._tensor?this:this.expression.N(e)}};function qe(n){return n instanceof vi}function Xo(n,e){let i,t=[],r=!0,o=(s,a=0)=>{if(s.length!==0){s.length>1&&t[a]!==void 0?r=r&&t[a]===s.length:t[a]=Math.max(t[a]??0,s.length);for(let l of s)if(l.head===n?o(l.ops,a+1):i===void 0?i=Ho(l):i=Cr(i,Ho(l)),!r)return}};if(o(e),!!r)return{shape:t,dtype:i}}function yd(n,e){let{shape:i,dtype:t}=Xo(n,e)??{shape:[],dtype:void 0};if(t===void 0)return;let r=!0,o=[],s=wr(e[0].engine,"expression"),a=s.cast.bind(s),l=u=>{for(let f of u)if(f.head===n)l(f.ops);else{let d=a(f,t);if(d===void 0){r=!1;return}o.push(d)}};if(l(e),!!r)return{shape:i,data:o,dtype:t}}var ii=class n extends P{constructor(i,t,r){r??(r={});super(i,r.metadata);this._value=new Map;let o=r.canonical??!0;if(t instanceof Map)for(let[s,a]of t)this._value.set(s,i.box(a,{canonical:o}));else for(let s of Object.keys(t))this._value.set(s,i.box(t[s],{canonical:o}));i._register(this)}bind(){for(let[i,t]of this._value)t.bind()}reset(){for(let[i,t]of this._value)t.reset()}get hash(){let i=Te("Dictionary");for(let[t,r]of this._value)i^=Te(t)^r.hash;return i}get complexity(){return 97}get head(){return"Dictionary"}get isPure(){return!1}getKey(i){return this._value.get(i)}hasKey(i){return this._value.has(i)}get keys(){return this._value.keys()}get keysCount(){return this._value.size}has(i){for(let[t,r]of this._value)if(r.has(i))return!0;return!1}get domain(){return this.engine.domain("Dictionaries")}get json(){let i=this.engine,t=[];for(let r of this._value.keys())t.push(i._fn("KeyValuePair",[i.string(r),this._value.get(r)]));return["Dictionary",...t.map(r=>r.json)]}isSame(i){if(this===i)return!0;if(!(i instanceof n)||this._value.size!==i._value.size)return!1;for(let[t,r]of this._value){let o=i.getKey(t);if(!o||!r.isSame(o))return!1}return!0}match(i,t){if(un(i)||(i=this.engine.box(i,{canonical:!1})),Ze(i))return{[He(i)]:this};if(!(i instanceof n)||this._value.size!==i._value.size)return null;let r={};for(let[o,s]of this._value){let a=i.getKey(o);if(!a)return null;let l=s.match(a,t);if(l===null)return null;r={...r,...l}}return r}isEqual(i){if(this===i)return!0;if(!(i instanceof n)||!i.keys||this._value.size!==i._value.size)return!1;for(let[t,r]of this._value){let o=i.getKey(t);if(!o||!r.isEqual(o))return!1}return!0}evaluate(i){return this}get isCanonical(){return this._isCanonical}set isCanonical(i){this._isCanonical=i}get canonical(){return this.isCanonical?this:new n(this.engine,this._value,{canonical:!0})}simplify(i){return this}N(i){return this}replace(i,t){let r=0,o={};for(let s of this.keys){let a=this.getKey(s),l=a.replace(i,t);l!==null&&(r+=1),o[s]=l??a}return r===0?null:new n(this.engine,o)}subs(i,t){let r={};for(let o of this.keys)r[o]=this.getKey(o).subs(i,t);return new n(this.engine,r,t)}};function du(n,e,i,t,r){if(e.numericValue!==null){if(V(e.numericValue))return Pe(e.numericValue)<0?q(n,"Subtract",[i,n.number(ve(e.numericValue))],t,r):null;let o=U(e);if(o!==null&&o<0)return q(n,"Subtract",[i,n.number(-o)],t,r)}return e.head==="Negate"&&i.head!=="Negate"?q(n,"Subtract",[i,e.op1],t,r):null}function Ed(n,e,i,t,r){let o=t.exclude;if(e==="Add"&&i.length===2&&!o.includes("Subtract")){let s=du(n,i[0],i[1],t,r)??du(n,i[1],i[0],t,r);if(s)return s}if(e==="Divide"&&i.length===2&&o.includes("Divide"))return q(n,"Multiply",[i[0],n._fn("Power",[i[1],n.NegativeOne])],t,r);if(e==="Multiply"&&!o.includes("Negate")&&b(i[0])===-1)return i.length===2?q(n,"Negate",[i[1]],t):q(n,"Negate",[n._fn("Multiply",i.slice(1))],t,r);if(e==="Multiply"&&!o.includes("Divide")){let s=new Pn(n,i,{canonical:!1}).asRationalExpression();if(s.head==="Divide")return q(n,s.head,s.ops,t,r)}if(e==="Power"){if(!o.includes("Exp")&&i[0]?.symbol==="ExponentialE")return q(n,"Exp",[i[1]],t,r);if(i[1]?.numericValue!==null){let s=U(i[1]);if(s===2&&!o.includes("Square"))return q(n,"Square",[i[0]],t,r);if(s!==null&&s<0&&!o.includes("Divide"))return q(n,"Divide",[n.One,s===-1?i[0]:n.pow(i[0],-s)],t,r);let a=i[1].numericValue;if(!o.includes("Sqrt")&&a===.5)return q(n,"Sqrt",[i[0]],t,r);if(!o.includes("Sqrt")&&a===-.5)return q(n,"Divide",[n.One,n._fn("Sqrt",[i[0]])],t,r);if(V(a)){let l=Pe(a),u=hn(a);if(l===1){if(!o.includes("Sqrt")&&u===2)return q(n,"Sqrt",[i[0]],t,r);if(!o.includes("Root"))return q(n,"Root",[i[0],n.number(a[1])],t,r)}if(l===-1){if(!o.includes("Sqrt")&&u===2)return q(n,"Divide",[n.One,n._fn("Sqrt",[i[0]])],t,r);if(!o.includes("Root"))return q(n,"Divide",[n.One,n._fn("Root",[i[0],n.number(a[1])])],t,r)}}}}if(e==="Add"&&i.length===2&&!o.includes("Subtract")){if(i[1]?.numericValue!==null){let s=U(i[1]);if(s!==null&&s<0)return q(n,"Subtract",[i[0],n.number(-s)],t,r)}if(i[1]?.head==="Negate")return q(n,"Subtract",[i[0],i[1].op1],t,r)}if(e==="Tuple"){if(i.length===1&&!o.includes("Single"))return q(n,"Single",i,t,r);if(i.length===2&&!o.includes("Pair"))return q(n,"Pair",i,t,r);if(i.length===3&&!o.includes("Triple"))return q(n,"Triple",i,t,r)}return q(n,e,i,t,r)}function q(n,e,i,t,r){let o=t.exclude;if(e==="Negate"&&i.length===1){let u=i[0]?.numericValue;if(u!==null){if(typeof u=="number")return zi(n,-u,t);if(u instanceof N||u instanceof es.Complex)return zi(n,u.neg(),t);if(V(u))return zi(n,ve(u),t)}}if(typeof e=="string"&&o.includes(e)){if(e==="Rational"&&i.length===2)return q(n,"Divide",i,t,r);if(e==="Complex"&&i.length===2)return q(n,"Add",[i[0],n._fn("Multiply",[i[1]??n.symbol("Undefined"),n.I])],t,r);if(e==="Sqrt"&&i.length===1)return q(n,"Power",[i[0],o.includes("Half")?n.number([1,2]):n.Half],t,r);if(e==="Root"&&i.length===2&&i[1]?.numericValue!==null){let u=U(i[1]);if(u===2)return q(n,"Sqrt",[i[0]],t);if(u!==null)return u<0?q(n,"Divide",[n.One,n._fn("Power",[i[0]??n.symbol("Undefined"),n.number([1,-u])])],t,r):q(n,"Power",[i[0],n.number([1,-u])],t,r)}if(e==="Square"&&i.length===1)return q(n,"Power",[i[0],n.number(2)],t,r);if(e==="Exp"&&i.length===1)return q(n,"Power",[n.E,i[0]],t,r);if(e==="Pair"||e=="Single"||e==="Triple")return q(n,"Tuple",i,t,r);if(e==="Subtract"&&i.length===2)return q(n,"Add",[i[0],n._fn("Negate",[i[1]??n.symbol("Undefined")])],t,r);if(e==="Subtract"&&i.length===1)return q(n,"Negate",i,t,r)}let a=[typeof e=="string"?e:Li(n,e,t),...i.map(u=>u?Li(n,u,t):"Undefined")],l={...r??{}};return t.metadata.includes("latex")?l.latex=l.latex??n.box({fn:a}).latex:l.latex="",t.metadata.includes("wikidata")||(l.wikidata=""),!l.latex&&!l.wikidata&&t.shorthands.includes("function")?a:l.latex&&l.wikidata?{fn:a,latex:l.latex,wikidata:l.wikidata}:l.latex?{fn:a,latex:l.latex}:l.wikidata?{fn:a,wikidata:l.wikidata}:{fn:a}}function vd(n,e){return n=n,e.shorthands.includes("string")?`'${n}'`:{str:n}}function Ko(n,e,i,t){if(e==="Half"&&i.exclude.includes("Half"))return zi(n,[1,2],i,t);if(t={...t},i.metadata.includes("latex")?(t.latex=t.latex??n.box({sym:e}).latex,t.latex!==void 0&&(t.latex=t.latex)):t.latex=void 0,i.metadata.includes("wikidata")){if(t.wikidata===void 0){let r=n.lookupSymbol(e)?.wikidata;r!==void 0&&(t.wikidata=r)}}else t.wikidata=void 0;return e=e,t.latex===void 0&&t.wikidata===void 0&&i.shorthands.includes("symbol")?e:t.latex!==void 0&&t.wikidata!==void 0?{sym:e,latex:t.latex,wikidata:t.wikidata}:t.latex!==void 0?{sym:e,latex:t.latex}:t.wikidata!==void 0?{sym:e,wikidata:t.wikidata}:{sym:e}}function cu(n,e){if(!e.repeatingDecimal)return n;let[i,t,r,o]=n.match(/^(.*)\.([0-9]+)([e|E][-+]?[0-9]+)?$/)??[];if(!r)return n.toLowerCase();let s=r[r.length-1];r=r.slice(0,-1);let a=16,l="";for(let u=0;u<r.length-a;u++){l=r.substring(0,u);for(let f=0;f<=a;f++){let d=r.substring(u,u+f+1),c=Math.floor((r.length-l.length)/d.length);if(c<3)break;if((l+d.repeat(c+1)).startsWith(r))return d==="0"?s==="0"?t+"."+l+(o??""):n:t+"."+l+"("+d+")"+(o??"")}}for(r+=s;r.endsWith("0");)r=r.slice(0,-1);return o?`${t}.${r}${o.toLowerCase()}`:`${t}.${r}`}function Nd(n,e){let i=n.engine;if(e.shorthands.includes("dictionary")){let r={};for(let o of n.keys)r[o]=Li(n.engine,n.getKey(o),e);return{dict:r}}let t=[];for(let r of n.keys)t.push(i._fn("KeyValuePair",[i.string(r),n.getKey(r)]));return q(i,"Dictionary",t,e,{latex:n.verbatimLatex})}function zi(n,e,i,t){t={...t},i.metadata.includes("latex")||(t.latex=void 0);let r=t.latex===void 0&&t.wikidata===void 0&&!i.metadata.includes("latex")&&i.shorthands.includes("number"),o=i.exclude,s="";if(e instanceof N){let l;if(e.isNaN())l="NaN";else if(!e.isFinite())l=e.isPositive()?"PositiveInfinity":"NegativeInfinity";else{if(r&&Qt(e))return e.toNumber();if(e.isInteger()&&e.e<e.precision()+4)s=e.toFixed(0);else{let u=i.fractionalDigits,f;if(u==="max"?f=e.toString():u==="auto"?f=e.toPrecision(n.precision):f=e.toDecimalPlaces(u).toString(),s=cu(f,i),r){let d=e.toNumber();if(d.toString()===s)return d}}}return i.metadata.includes("latex")&&(t.latex=t.latex??n.box(l??{num:s}).latex),l?t.latex!==void 0?{sym:l,latex:t.latex}:r?l:{sym:l}:t.latex!==void 0?{num:s,latex:t.latex}:r?s:{num:s}}if(e instanceof es.Complex)return e.isInfinite()?Ko(n,"ComplexInfinity",i,t):e.isNaN()?(s="NaN",i.metadata.includes("latex")&&(t.latex=t.latex??n.box({num:s}).latex),t.latex!==void 0?{num:s,latex:t.latex}:{num:s}):q(n,"Complex",[n.number(e.re),n.number(e.im)],i,{...t,wikidata:"Q11567"});if(V(e)){let l=!o.includes("Rational");return r&&i.shorthands.includes("function")&&$(e)?e[0]===1&&e[1]===2&&!o.includes("Half")?Ko(n,"Half",i,t):[l?"Rational":"Divide",e[0],e[1]]:q(n,l?"Rational":"Divide",[n.number(e[0]),n.number(e[1])],i,{...t})}let a;return Number.isNaN(e)?a="NaN":Number.isFinite(e)?s=cu(e.toString(),i):a=e>0?"PositiveInfinity":"NegativeInfinity",i.metadata.includes("latex")&&(t.latex=t.latex??n.box({num:s}).latex),a?t.latex!==void 0?{sym:a,latex:t.latex}:r?a:{sym:a}:t.latex!==void 0?{num:s,latex:t.latex}:r&&s===e.toString()?e:{num:s}}function Li(n,e,i){let t=e.scope?e.wikidata:void 0;return e instanceof se?zi(n,e.numericValue,i,{latex:e.verbatimLatex}):e instanceof xe?e.isValid&&e.isCanonical&&i.prettify?Ed(n,e.head,e.ops,i,{latex:e.verbatimLatex,wikidata:t}):q(n,e.head,e.ops,i,{latex:e.verbatimLatex,wikidata:t}):e instanceof ii?Nd(e,i):e instanceof vi?Li(n,e.expression,i):e instanceof Je?vd(e.string,i):e instanceof Ln?Ko(n,e.symbol,i,{latex:e.verbatimLatex,wikidata:t}):e.json}var Yi=he(me(),1);function mu(n){return n.head==="Element"?Td(n):n.head==="Equal"?_d(n):yo(n)?Sd(n):"not-a-predicate"}function _d(n){n.head;let e=n.unknowns;if(e.length===0){let r=n.evaluate();return r.symbol==="True"?"tautology":r.symbol==="False"?"contradiction":(n.canonical.evaluate(),"not-a-predicate")}let i=n.engine,t=n.op1.symbol;if(t&&!Id(i,t)&&!n.op2.has(t)){let r=n.op2.evaluate();if(!r.isValid)return"not-a-predicate";let o=i.lookupSymbol(t);return o?o.domain&&!r.domain?.isCompatible(o.domain)?"contradiction":(o.value=r,"ok"):(i.defineSymbol(t,{value:r,domain:r.domain}),"ok")}if(e.length===1){let r=e[0],o=Dr(n,r);o.length===0&&i.assumptions.set(i.box(["Equal",i.add(n.op1.canonical,i.neg(n.op2.canonical)).simplify(),0]),!0);let s=o.length===1?o[0]:i.box(["List",...o]),a=i.lookupSymbol(r);return a?a.domain&&!o.every(l=>!l.domain||s.domain?.isCompatible(l.domain))?"contradiction":(a.value=s,"ok"):(i.defineSymbol(r,{value:s,domain:s.domain}),"ok")}return i.assumptions.set(n,!0),"ok"}function Sd(n){let e=n.engine;if(n.op1.symbol&&!ns(e,n.op1.symbol))return n.op2.evaluate().isZero?n.head==="Less"?e.defineSymbol(n.op1.symbol,{domain:e.domain("NegativeNumbers")}):n.head==="LessEqual"?e.defineSymbol(n.op1.symbol,{domain:e.domain("NonPositiveNumbers")}):n.head==="Greater"?e.defineSymbol(n.op1.symbol,{domain:e.domain("PositiveNumbers")}):n.head==="GreaterEqual"&&e.defineSymbol(n.op1.symbol,{domain:e.domain("NonNegativeNumbers")}):(e.defineSymbol(n.op1.symbol,{domain:e.domain("ExtendedRealNumbers")}),e.assumptions.set(n,!0)),"ok";let i="",t,r;if(n.head==="Less"?(t=n.op1,r=n.op2,i="<"):n.head==="LessEqual"?(t=n.op1,r=n.op2,i="<="):n.head==="Greater"?(t=n.op2,r=n.op1,i="<"):n.head==="GreaterEqual"&&(t=n.op2,r=n.op1,i="<="),!i)return"internal-error";let o=e.add(t.canonical,e.neg(r.canonical)).simplify(),s=e.box([i==="<"?"Less":"LessEqual",o,0]).evaluate();if(s.symbol==="True")return"tautology";if(s.symbol==="False")return"contradiction";let a=s.unknowns;return a.length===0?"not-a-predicate":(a.length===1&&(e.lookupSymbol(a[0])||e.defineSymbol(a[0],{domain:"ExtendedRealNumbers"})),s.head==="Less"||s.head,e.assumptions.set(s,!0),"ok")}function Td(n){n.head;let e=n.engine,i=Bd(n.op1);if(i.length===1){let r=e.domain(n.op2.evaluate().json);return r.isValid?(e.declare(i[0],r),"ok"):"not-a-predicate"}if(n.op1.symbol&&ns(e,n.op1.symbol)){let r=e.domain(n.op2.evaluate().json);if(!r.isValid)return"not-a-predicate";e.context?.ids?.has(n.op1.symbol)||e.declare(n.op1.symbol,r);let o=e.lookupSymbol(n.op1.symbol);if(o)return o.domain&&!r.isCompatible(o.domain)?"contradiction":(o.domain=r,"ok");let s=e.lookupFunction(n.op1.symbol);return s?r.isCompatible(gr(e,s.signature))?"ok":"contradiction":"not-a-predicate"}if(i.length>0)return e.assumptions.set(n,!0),"ok";let t=n.evaluate();return t.symbol==="True"?"tautology":t.symbol==="False"?"contradiction":"not-a-predicate"}function ns(n,e){return(n.lookupSymbol(e)??n.lookupFunction(e))!==void 0}function Bd(n){return n.symbols.filter(e=>!ns(n.engine,e))}function Id(n,e){return n.lookupFunction(e)?!1:n.lookupSymbol(e)?.value!==void 0}var Mr=he(me(),1);function Dt(n){return n[Math.floor(Math.random()*n.length)]}function pu(n,e){if(n==="Add"||n==="Multiply"){let i=[],t=1+Math.floor(Math.random()*12);for(;t>0;)i.push(_n(e+1)),t-=1;return[n,...i]}return n==="Divide"||n==="Power"?[n,_n(e+1),_n(e+1)]:n==="Root"?[n,_n(e+1),_n(10)]:n==="trig"?Dd():[n,_n(e+1)]}function Dd(){return[Dt(["Cos","Sin","Tan","Sinh","Arccos","Arsinh"]),Dt(["Pi","-1","0","1",["Divide","Pi",-5],["Multiply",-2,["Divide","Pi",11]],["Multiply","Half","Pi"],["Multiply",5,"Pi"],["Multiply",12,"Pi"],["Divide","Pi",5],["Divide","Pi",9],["Multiply",5,["Divide","Pi",9]],["Multiply",2,["Divide","Pi",11]],["Multiply",2,["Divide","Pi",3]]])]}function _n(n){if(n??(n=1),n===1){let e=Dt([["Sqrt",["Multiply",6,["Sum",["Divide",1,["Power","n",2]],["Triple",["Hold","n"],1,"PositiveInfinity"]]]],"Add","Add","Add","Add","Add","Multiply","Multiply","Multiply","Multiply","Divide","Divide","Divide","Root","Sqrt","Subtract","Negate","trig"]);return typeof e=="string"?pu(e,1):e}if(n===2){let e=Math.random();if(e>.75)return _n(1);if(e>.5)return _n(3);let i=Dt(["Multiply","Multiply","Add","Power","trig","Ln","Exp"]);return pu(i,2)}return Dt([-12345e-9,-2,-2,-2,-3,-5,-6,-12,-1654e-60,0,0,12345e-8,1654e-60,1,2,2,2,2,3,3,5,5,6,6,1234.5678,5678.1234,10,15,18,30,60,1234e54,"123456789.12345678912345e200","987654321.12345678912345",["Rational",-6,10],["Rational",-12,15],["Rational",-15,12],["Rational",3,5],["Rational",12,15],["Rational",15,12],"ExponentialE",["Sqrt",3],["Sqrt",5],["Sqrt",15],["Sqrt",25],["Complex",-1.1,1.1],["Complex",4,5],"x","x","x","x",["Add","x",1],["Divide","x",3],["Square","x"],["Power","x",3],["Power","x",4],["Subtract","x",1],["Add","x",1],"Pi"])}var hu=[{Nothing:{domain:"NothingDomain"}},{InvisibleOperator:{complexity:9e3,hold:"all",signature:{restParam:"Anything",result:(n,e)=>e.length===0?n.domain("NothingDomain"):e.length===1?e[0].domain:n.Anything,canonical:is}},Sequence:{hold:"all",signature:{restParam:"Anything",result:(n,e)=>e.length===0?n.domain("NothingDomain"):e.length===1?e[0].domain:n.Anything,canonical:(n,e)=>{let i=te(re(e));return i.length===0?n._fn("Sequence",[]):i.length===1?i[0]:n._fn("Sequence",i)}}},Delimiter:{complexity:9e3,hold:"all",signature:{params:["Anything"],optParams:["Strings"],result:(n,e)=>e[0].domain,canonical:(n,e)=>{if(e.length===0)return n._fn("Tuple",[]);let i=e[0];return i.head==="Sequence"?i=n._fn("Sequence",re(i.ops)):i=i.canonical,i.head==="Sequence"&&i.ops.length===1&&(i=i.ops[0]),e=[i,...e.slice(1)],e.length===1?n._fn("Delimiter",e):e.length>2?n._fn("Delimiter",Be(n,e,2)):(e[1].string?.length??0)>3?n._fn("Delimiter",[e[0],n.error("invalid-delimiter",e[1])]):n._fn("Delimiter",[e[0],Le(n,e[1],"Strings")])},evaluate:(n,e)=>{if(e.length===0)return n.Nothing;let i=e[0];return(i.head==="Sequence"||i.head==="Delimiter")&&(e=te(e[0].ops)),e.length===1?e[0].evaluate():n._fn("Tuple",e.map(t=>t.evaluate()))},N:(n,e)=>{if(e.length===0)return n.Nothing;let i=e[0];return(i.head==="Sequence"||i.head==="Delimiter")&&(e=te(e[0].ops)),e.length===1?e[0].N():n._fn("Tuple",e.map(t=>t.N()))}}},Error:{hold:"all",complexity:500,signature:{domain:["FunctionOf","Anything",["OptArg","Anything"],"Void"],canonical:(n,e)=>n._fn("Error",e)}},ErrorCode:{complexity:500,hold:"all",signature:{domain:["FunctionOf","Strings",["VarArg","Anything"],"Anything"],canonical:(n,e)=>{let i=Le(n,e[0],n.Strings).string;return i==="incompatible-domain"?n._fn("ErrorCode",[n.string(i),e[1],e[2]]):n._fn("ErrorCode",e)}}},Hold:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],result:(n,e)=>{let i=e[0];return i.symbol?n.domain("Symbols"):i.string?n.domain("Strings"):i.head==="Numbers"?n.domain("Numbers"):i.domain},canonical:(n,e)=>e.length!==1?null:n.hold(e[0]),evaluate:(n,e)=>e[0]}},HorizontalSpacing:{signature:{domain:"Functions",canonical:(n,e)=>e.length===2?e[0].canonical:n.box(["Sequence"])}},Style:{complexity:9e3,inert:!0,signature:{domain:["FunctionOf","Anything",["OptArg","Dictionaries"],"Anything"]}}},{About:{signature:{domain:"Functions"}},Head:{hold:"all",signature:{domain:"Functions",canonical:(n,e)=>{if(e.length!==1)return null;let i=e[0];return i.head?n.box(i.head):n._fn("Head",re(e))},evaluate:(n,e)=>{let i=e[0];return typeof i?.head=="string"?n.symbol(i.head):i?.head??n.Nothing}}},Tail:{hold:"all",signature:{domain:"Functions",canonical:(n,e)=>{if(e.length!==1)return null;let i=e[0];return i.ops?n._fn("Sequence",i.ops):n._fn("Tail",re(e))},evaluate:(n,e)=>{let i=e[0];return i?.ops?n.box(["Sequence",...i.ops]):n.box(["Sequence"])}}},Identity:{signature:{domain:["FunctionOf","Anything","Anything"],result:(n,e)=>e[0].domain,evaluate:(n,e)=>e[0]}}},{Apply:{signature:{domain:"Functions",canonical:(n,e)=>e[0].symbol?n.box([e[0].symbol,...e.slice(1)]):n._fn("Apply",e),evaluate:(n,e)=>bi(e[0],e.slice(1))}},Assign:{hold:"all",pure:!1,signature:{domain:["FunctionOf","Anything","Anything","Anything"],canonical:(n,e)=>{if(e.length!==2)return null;let i=e[0];if(!i.symbol)return null;let t=e[1];return n._fn("Assign",[i,t])},evaluate:(n,e)=>{let i=e[0],t=e[1];if(!i.symbol)return n.Nothing;let r=t.evaluate();return n.assign(i.symbol,r),r}}},Assume:{hold:"all",pure:!1,signature:{domain:["FunctionOf","Anything","Anything"],evaluate:(n,e)=>n.string(n.assume(e[0]))}},Declare:{hold:"all",pure:!1,signature:{domain:["FunctionOf","Symbols","Anything"],canonical:(n,e)=>{if(e.length!==2)return null;let i=e[0],t=e[1];return i.symbol?t.symbol?n._fn("Declare",e):n._fn("Declare",[i,n._fn("Hold",[t])]):null},evaluate:(n,e)=>{let i=e[0],t=e[1];if(!i.symbol)return n.Nothing;let r=t.evaluate();if(En(r))return n.declare(i.symbol,r),r}}},Domain:{signature:{domain:["FunctionOf","Anything","Domains"],evaluate:(n,e)=>e[0].domain}},Evaluate:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],result:(n,e)=>e[0].domain,canonical:(n,e)=>n._fn("Evaluate",Be(n,e,1)),evaluate:(n,e)=>e[0].evaluate()}},Function:{complexity:9876,hold:"all",signature:{domain:["FunctionOf","Anything",["VarArg","Symbols"],"Functions"],canonical:(n,e)=>e.length===0?n.box(["Sequence"]):(e.length===1?Po(e[0]):n._fn("Function",e))??null,evaluate:(n,e)=>{}}},Simplify:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],result:(n,e)=>e[0].domain,canonical:(n,e)=>n._fn("Simplify",Be(n,e,1)),evaluate:(n,e)=>e[0].simplify()}},CanonicalForm:{complexity:8200,hold:"all",signature:{domain:["FunctionOf","Anything",["VarArg","Symbols"],"Anything"],canonical:(n,e)=>{if(e.length===1)return e[0].canonical;let i=e.slice(1).map(t=>t.symbol??t.string).filter(t=>t!=null);return cn(e[0],i)}}},N:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],result:(n,e)=>e[0].domain,canonical:(n,e)=>{if(e.length!==1)return n._fn("N",Be(n,e,1));let i=e[0].head;if(i==="N")return e[0].canonical;if(i==="Integrate"){let[t,r,o]=wn(e[0].op2);if(!t||r===void 0||o===void 0)return null;let s=e[0].op1;return n._fn("NIntegrate",[n.box(["Function",s,t]),n.number(r),n.number(o)])}return i==="Limit"?n._fn("NLimit",e[0].ops):n._fn("N",e)},evaluate:(n,e)=>e[0].N()}},Signatures:{signature:{domain:["FunctionOf","Symbols",["ListOf","Domains"]],canonical:(n,e)=>(e=Be(n,e,1),e[0].symbol?n._fn("Signatures",e):n._fn("Signatures",[n.domainError("Symbols",e[0].domain,e[0])])),evaluate:(n,e)=>{let i=e[0].symbol;if(!i)return n.Nothing;let t=n.lookupFunction(i);if(!t)return n.box(["List"]);let r=t.signature,o=[...r.params];return r.optParams.length>0&&o.push(n._fn("OptArg",r.optParams)),r.restParam&&o.push(n._fn("VarArg",[r.restParam])),typeof r.result=="function"?o.push(r.result(n,[])??n.symbol("Undefined")):o.push(r.result),n.box(["List",...o])}}},Subscript:{hold:"last",signature:{domain:["FunctionOf","Anything","Anything","Anything"],result:(n,e)=>{let i=e[0],t=e[1];if(i.string&&U(t)!==null)return n.domain("Integers");if(i.symbol){let r=i.evaluate()?.head;if(r)return n.lookupFunction(r)?.at?void 0:n.domain("Symbols")}},canonical:(n,e)=>{let i=e[0],t=e[1];if(i.string){let r=U(t);if(r!==null&&r>1&&r<=36){let[o,s]=Ti(i.string,r);return s?n.error(["unexpected-digit",{str:s[0]}],["LatexString",n.string(i.string)]):n.number(o)}}if(i.symbol){let r=i.evaluate()?.head;if(r&&n.lookupFunction(r)?.at)return n._fn("At",[i.canonical,t.canonical]);let o=t.string??t.symbol??U(t)?.toString();if(o)return n.symbol(i.symbol+"_"+o)}return t.head==="Sequence"&&n._fn("Subscript",[i,n._fn("List",t.ops)]),n._fn("Subscript",e)}}},Symbol:{complexity:500,description:"Construct a new symbol with a name formed by concatenating the arguments",threadable:!0,hold:"all",signature:{domain:["FunctionOf",["VarArg","Anything"],"Anything"],canonical:(n,e)=>{if(e.length===0)return n.Nothing;let i=e.map(t=>t.symbol??t.string??U(t)?.toString()??"").join("");return i.length>0?n.symbol(i):n.Nothing}}},Timing:{description:"`Timing(expr)` evaluates `expr` and return a `Pair` of the number of second elapsed for the evaluation, and the value of the evaluation",signature:{domain:["FunctionOf","Values",["OptArg","Integers"],["TupleOf","Values","Numbers"]],evaluate:(n,e)=>{if(e[1].symbol==="Nothing"){let l=globalThis.performance.now(),u=e[0].evaluate(),f=1e3*(globalThis.performance.now()-l);return n.pair(n.number(f),u)}let i=Math.max(3,Math.round(U(e[1])??3)),t=[],r;for(;i>0;){let l=globalThis.performance.now();r=e[0].evaluate(),t.push(1e3*(globalThis.performance.now()-l)),i-=1}let o=Math.max(...t),s=Math.min(...t);t=t.filter(l=>l>s&&l<o);let a=t.reduce((l,u)=>l+u,0);return a===0?n.pair(n.number(o),r):n.pair(n.number(a/t.length),r)}}}},{Wildcard:{signature:{params:["Symbols"],result:"Symbols",canonical:(n,e)=>e.length!==1?n.symbol("_"):n.symbol("_"+e[0].symbol)}},WildcardSequence:{signature:{params:["Symbols"],result:"Symbols",canonical:(n,e)=>e.length!==1?n.symbol("__"):n.symbol("__"+e[0].symbol)}},WildcardOptionalSequence:{signature:{params:["Symbols"],result:"Symbols",canonical:(n,e)=>e.length!==1?n.symbol("___"):n.symbol("___"+e[0].symbol)}}},{LatexString:{inert:!0,signature:{domain:["FunctionOf","Strings","Strings"]}},Latex:{signature:{domain:["FunctionOf",["VarArg","Anything"],"Strings"],evaluate:(n,e)=>n.box(["LatexString",n.string(v(e.map(i=>i.latex)))])}},Parse:{description:"Parse a LaTeX string and evaluate to a corresponding expression",signature:{domain:["FunctionOf","Anything","Anything"],evaluate:(n,e)=>{if(e.length===0)return n.box(["Sequence"]);let i=e[0],t=i.string??i.head==="LatexString"?i.op1.string:"";return n.parse(t)??n.box(["Sequence"])}}}},{RandomExpression:{signature:{domain:"Functions",evaluate:(n,e)=>n.box(_n())}}}];function is(n,e){if(e.length===0)return null;let i=e[0];if(e.length===1)return i.canonical;if(e.length===2){let t=b(i);if(t!==null&&Number.isInteger(t)){let o=e[1];if(o.head==="Divide"||o.head==="Rational"){let[s,a]=[b(o.op1),b(o.op2)];if(s!==null&&a!==null&&s>0&&s<=1e3&&a>1&&a<=1e3&&Number.isInteger(s)&&Number.isInteger(a)){let l=o.canonical;return t<0&&(l=n.neg(l)),n._fn("Add",[i.canonical,l])}}}if(t!==null&&e[1].symbol==="ImaginaryUnit")return n.number(n.complex(0,t));let r=e[1];if(i.symbol&&r.head==="Delimiter"&&!n.lookupSymbol(i.symbol)){if(r.nops===0)return n.lookupFunction(i.symbol)||n.declare(i.symbol,"Functions"),n.box([i.symbol]);let o=r.op1.head==="Sequence"?r.op1.ops:[r.op1];if(o=te(re(o)),!n.lookupSymbol(i.symbol))return n.lookupFunction(i.symbol)||n.declare(i.symbol,"Functions"),n.function(i.symbol,o)}}return e=te(re(e)),e.every(t=>t.isValid&&(!t.domain||t.domain.isNumeric||tr(t)&&!t.string))?(e=ie(e,"Multiply"),e.length===1?e[0]:n._fn("Multiply",e)):n._fn("Tuple",e)}function cn(n,e){if(e===!1)return n;if(e===!0)return n.canonical;typeof e=="string"&&(e=[e]);for(let i of e)switch(i){case"InvisibleOperator":n=rs(n);break;case"Number":n=gu(n);break;case"Multiply":n=xu(n);break;case"Add":n=bu(n);break;case"Power":n=ji(n);break;case"Divide":n=yu(n);break;case"Flatten":n=ts(n);break;case"Order":n=ho(n,{recursive:!0});break;default:throw Error("Invalid canonical form")}return n}function ts(n){if(!n.head||!n.ops||n.nops===0)return n;if(n.head==="Delimiter")return ts(n.op1);let e=n.engine,i=n.head==="Add"||n.head==="Multiply";return i||e.lookupFunction(n.head)?.associative&&(i=!0),i&&typeof n.head=="string"?e.function(n.head,ie(n.ops.map(ts),n.head)):n}function rs(n){return n.ops?n.head==="InvisibleOperator"?is(n.engine,n.ops.map(rs))??n:n.engine._fn(n.head,n.ops.map(rs)):n}function gu(n){return n.numericValue?n.canonical:n.ops?n.engine._fn(n.head,n.ops.map(gu)):n}function xu(n){if(!n.ops)return n;let e=n.ops.map(xu);return n.head==="Multiply"?Tt(n.engine,e.map(i=>i.canonical)):n.head==="Negate"?Tt(n.engine,[e[0],n.engine.NegativeOne]):n}function bu(n){if(!n.ops)return n;let e=n.ops.map(bu);return n.head==="Add"?qn(n.engine,e):n.head==="Subtract"?qn(n.engine,[e[0],n.engine.neg(e[1])]):n.engine._fn(n.head,e)}function ji(n){return n.ops?n.head==="Power"?Rn(n.engine,ji(n.op1),ji(n.op2)):n.ops?n.engine._fn(n.head,n.ops.map(ji)):n:n}function yu(n){return n.head==="Divide"?dn(n.engine,ji(n.op1),ji(n.op2)):n.ops?n.engine._fn(n.head,n.ops.map(yu)):n}function Or(n,e,i){if(i=i?{...i}:{},"canonical"in i||(i.canonical=!0),typeof e=="number"||e instanceof N)return new se(n,e,i);if(Array.isArray(e)&&e.length===2&&e[0]instanceof N&&e[1]instanceof N){if(!e[0].isInteger()||!e[1].isInteger())throw new Error("Array argument to `boxNumber()` should be two integers");e=[O(e[0].toString()),O(e[1].toString())]}if(V(e)){if(e.length!==2)throw new Error("Array argument to `boxNumber()` should be two integers or two bignums");let[r,o]=e;if(typeof r=="bigint"&&typeof o=="bigint")return r===o?o===BigInt(0)?n.NaN:n.One:r===BigInt(0)?n.Zero:o===BigInt(1)?n.number(r,i):o===BigInt(-1)?n.number(-r,i):r===BigInt(1)&&o===BigInt(2)?n.Half:new se(n,[r,o],i);if(typeof r!="number"||typeof o!="number")throw new Error("Array argument to `boxNumber()` should be two integers or two bignums");if(!isFinite(r)||!isFinite(o))return n.div(n.number(r,i),n.number(o,i));if(!Number.isInteger(r)||!Number.isInteger(o))throw new Error("Array argument to `boxNumber()` should be two integers");return o===r?o===0?n.NaN:n.One:r===0?n.Zero:o===1?n.number(r,i):o===-1?n.number(-r,i):r===1&&o===2?n.Half:new se(n,[r,o],i)}if(e instanceof Mr.Complex)return e.isNaN()?n.NaN:e.isZero()?n.Zero:e.isInfinite()?n.ComplexInfinity:n.chop(e.im)===0?n.number(e.re,i):new se(n,e,i);let t="";if(typeof e=="string")t=e;else if(typeof e=="object"&&"num"in e){if(typeof e.num=="number")return n.number(e.num,i);if(typeof e.num!="string")throw new Error("MathJSON `num` property should be a string of digits");t=e.num}if(t){if(t=t.toLowerCase(),/[0-9][nd]$/.test(t)&&(t=t.slice(0,-1)),t=t.replace(/[\u0009-\u000d\u0020\u00a0]/g,""),t==="nan")return n.NaN;if(t==="infinity"||t==="+infinity")return n.PositiveInfinity;if(t==="-infinity")return n.NegativeInfinity;if(t==="0")return n.Zero;if(t==="1")return n.One;if(t==="-1")return n.NegativeOne;if(/\([0-9]+\)/.test(t)){let[r,o,s,a]=t.match(/(.+)\(([0-9]+)\)(.+)?$/)??[];t=o+s.repeat(Math.ceil(n.precision/s.length))+(a??"")}return Or(n,n.bignum(t),i)}return null}function os(n,e,i){if(e===null)return n.error("missing");if(typeof e=="object"&&e instanceof P)return e;if(e=F(e),typeof e=="string")return we(n,e,i);if(Array.isArray(e)){let t=e.map(r=>os(n,r,i));return new xe(n,t[0],t.slice(1))}if(typeof e=="object"){if("dict"in e)return new ii(n,e.dict);if("fn"in e)return os(n,e.fn,i);if("str"in e)return new Je(n,e.str);if("sym"in e)return we(n,e.sym,i);if("num"in e)return we(n,e.num,i)}return we(n,e,i)}function vu(n,e,i,t){if(t=t?{...t}:{},"canonical"in t||(t.canonical=!0),e==="Hold")return new xe(n,"Hold",[os(n,i[0],t)],{...t,canonical:!0});if(e==="Error"||e==="ErrorCode")return n._fn(e,i.map(o=>n.box(o,{canonical:!1})),t.metadata);if(e==="String")return i.length===0?new Je(n,"",t.metadata):new Je(n,i.map(o=>Eu(o)??"").join(""),t.metadata);if(e==="Symbol"&&i.length>0)return n.symbol(i.map(o=>Eu(o)??"").join(""),t);if(e==="Domain")return n.domain(i[0],t.metadata);if(e==="Number"&&i.length===1)return we(n,i[0],t);if(t.canonical===!0||t.canonical==="Number"||Array.isArray(t.canonical)&&t.canonical.includes("Number")){if((e==="Divide"||e==="Rational")&&i.length===2){if(i[0]instanceof P&&i[1]instanceof P){if(n.numericMode==="machine"){let[a,l]=[b(i[0]),b(i[1])];if(a!==null&&Number.isInteger(a)&&l!==null&&Number.isInteger(l))return n.number([a,l],t)}let[o,s]=[ft(i[0]),ft(i[1])];if(o!==null&&s!==null)return n.number([o,s],t)}else{let[o,s]=[oo(i[0]),oo(i[1])];if(o!==null&&s!==null)return n.number([o,s],t)}e="Divide"}if(e==="Complex"){if(i.length===1){let o=we(n,i[0],t),s=b(o);return s!==null&&s!==0?n.number(n.complex(0,s),t):n.mul(o,n.I)}if(i.length===2){let o=we(n,i[0],t),s=we(n,i[1],t),a=b(o),l=b(s);return l!==null&&a!==null?l===0&&a===0?n.Zero:l!==null&&l!==0?n.number(n.complex(a,l),t):o:n.add(o,n.mul(s,n.I))}throw new Error("Expected one or two arguments with Complex expression")}if(e==="Negate"&&i.length===1){let o=i[0];if(typeof o=="number")return n.number(-o,t);if(o instanceof N)return n.number(o.neg(),t);let s=n.box(o,t).numericValue;if(s!==null){if(typeof s=="number")return n.number(-s,t);if(s instanceof N)return n.number(s.neg(),t);if(s instanceof Mr.Complex)return n.number(s.neg());if(V(s))return n.number(ve(s))}}}if(e==="Dictionary"){let o={};for(let s of i){let a=n.box(s,{canonical:t.canonical}),l=a.head;if(l==="KeyValuePair"||l==="Pair"||l==="Tuple"&&a.nops===2){let u=a.op1;if(u.isValid&&u.symbol!=="Nothing"){let f=a.op2,d=u.symbol??u.string;if(!d&&(u.numericValue!==null||u.string)){let c=typeof u.numericValue=="number"?u.numericValue:U(u);c&&Number.isFinite(c)&&Number.isInteger(c)&&(d=c.toString())}d&&(o[d]=f)}}}return new ii(n,o,t)}if(e==="List"&&t.canonical===!0){let o=i.map(l=>we(n,l)),{shape:s,dtype:a}=Xo("List",o)??{};return a&&s?new vi(n,{head:e,ops:o}):n._fn(e,o)}return t.canonical===!0?fu(n,e,i,t.metadata):cn(new xe(n,e,i.map(o=>we(n,o,{canonical:t?.canonical??!0})),{metadata:t.metadata,canonical:!1}),t.canonical??!1)}function we(n,e,i){if(e==null)return n._fn("Sequence",[]);if(e instanceof P)return cn(e,i?.canonical??!0);i=i?{...i}:{},"canonical"in i||(i.canonical=!0);let t=i.canonical===!0;if(Array.isArray(e)){if($(e))return Number.isInteger(e[0])&&Number.isInteger(e[1])?n.number(e):cn(n.function("Divide",e,{canonical:t}),i.canonical);if(G(e))return n.number(e);if(typeof e[0]=="string")return cn(n.function(e[0],e.slice(1),{canonical:t}),i.canonical);Array.isArray(e[0]);let r=e.slice(1).map(s=>we(n,s,i)),o=we(n,e[0],{canonical:!1});return cn(new xe(n,o,r),i.canonical)}if(typeof e=="number"||e instanceof Mr.Complex||e instanceof N)return n.number(e);if(typeof e=="string")return e.startsWith("'")&&e.endsWith("'")?new Je(n,e.slice(1,-1)):/^[+-]?[0-9]/.test(e)?n.number(e):xi(e)?n.domain(e):Ee(e)?n.symbol(e,{canonical:t}):n.error("invalid-identifier",{str:e});if(typeof e=="object"){let r={latex:e.latex,wikidata:e.wikidata};if("dict"in e)return cn(new ii(n,e.dict,{canonical:!0,metadata:r}),i.canonical);if("fn"in e)return typeof e.fn[0]=="string"?cn(n.function(e.fn[0],e.fn.slice(1),{canonical:t}),i.canonical):cn(new xe(n,we(n,e.fn[0],i),e.fn.slice(1).map(o=>we(n,o,i)),{metadata:r}),i.canonical);if("str"in e)return new Je(n,e.str,r);if("sym"in e)return n.symbol(e.sym,{canonical:t});if("num"in e)return n.number(e,{canonical:t})}return n.symbol("Undefined")}function Eu(n){if(typeof n=="string")return n;if(n instanceof P)return n.string??n.symbol??n.toString();if(typeof n=="object"){if("str"in n)return n.str;if("fn"in n&&n.fn[0]==="String"&&typeof n.fn[1]=="string")return n.fn[1]}return Array.isArray(n)&&n[0]==="String"&&typeof n[1]=="string"?n[1]:null}var as=he(me(),1);var Su=[{Abs:{wikidata:"Q3317982",threadable:!0,idempotent:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","NonNegativeNumbers"],simplify:(n,e)=>ss(n,e[0],"simplify"),evaluate:(n,e)=>ss(n,e[0],"evaluate"),N:(n,e)=>ss(n,e[0],"N")}},Add:{wikidata:"Q32043",associative:!0,commutative:!0,threadable:!0,idempotent:!0,complexity:1300,hold:"all",signature:{domain:"NumericFunctions",result:(n,e)=>Qa(n,e.map(i=>i.domain)),simplify:(n,e)=>Tr(n,e.map(i=>i.simplify())),evaluate:(n,e)=>vt(n,e.map(i=>i.evaluate())),N:(n,e)=>vt(n,e.map(i=>i.N()),"N")}},Ceil:{description:"Rounds a number up to the next largest integer",complexity:1250,threadable:!0,signature:{domain:["FunctionOf","Numbers","Integers"],evaluate:(n,e)=>ee(e[0],Math.ceil,i=>i.ceil(),i=>i.ceil(0))}},Chop:{associative:!0,threadable:!0,idempotent:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>ee(e[0],i=>n.chop(i),i=>n.chop(i),i=>n.chop(i))}},Divide:{wikidata:"Q1226939",complexity:2500,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers","Numbers"],canonical:(n,e)=>{if(e=Fe(n,e,2),e.length!==2)return n._fn("Divide",e);let[i,t]=e;return n.div(i,t)},simplify:(n,e)=>St(n,e[0],e[1]),evaluate:(n,e)=>kr(n,e[0],e[1]),N:(n,e)=>ou(n,e[0],e[1])}},Exp:{wikidata:"Q168698",threadable:!0,complexity:3500,signature:{domain:["FunctionOf","Numbers","Numbers"],canonical:(n,e)=>(e=Fe(n,e,1),e.length!==1?n._fn("Power",[n.E,...e]):n.pow(n.E,e[0]))}},Factorial:{description:"Factorial Function",wikidata:"Q120976",threadable:!0,complexity:9e3,signature:{domain:["FunctionOf","Numbers","Numbers"],canonical:(n,e)=>{let i=e[0];return i instanceof se&&i.isNegative?n.neg(n._fn("Factorial",[n.neg(i)])):n._fn("Factorial",[i])},evaluate:(n,e)=>{let i=U(e[0]);if(i!==null&&i>=0)return L(n)?n.number(uo(n,n.bignum(i))):n.number(Ht(i));let t=e[0].numericValue;if(t!==null&&t instanceof as.Complex)return n.number(t.add(1));let r=b(e[0]);if(r!==null)return n.number(Ii(1+r))}}},Factorial2:{description:"Double Factorial Function",complexity:9e3,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>{let i=U(e[0]);if(i!==null)return L(n)?n.number(ua(n,n.bignum(i))):n.number(Zs(i))}}},Floor:{wikidata:"Q56860783",complexity:1250,threadable:!0,signature:{domain:["FunctionOf","Numbers","ExtendedRealNumbers"],evaluate:(n,e)=>ee(e[0],Math.floor,i=>i.floor(),i=>i.floor(0))}},Gamma:{wikidata:"Q190573",complexity:8e3,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],N:(n,e)=>ee(e[0],i=>Ii(i),i=>fo(n,i),i=>i)}},GammaLn:{complexity:8e3,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],N:(n,e)=>ee(e[0],i=>et(i),i=>lo(n,i),i=>i)}},Ln:{description:"Natural Logarithm",wikidata:"Q204037",complexity:4e3,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],simplify:_u,evaluate:_u,N:(n,e)=>ee(e[0],i=>i>=0?Math.log(i):n.complex(i).log(),i=>i.isNeg()?n.complex(i.toNumber()).log():i.ln(),i=>i.log())}},Log:{description:"Log(z, b = 10) = Logarithm of base b",wikidata:"Q11197",complexity:4100,threadable:!0,signature:{domain:["FunctionOf","Numbers",["OptArg","Numbers"],"Numbers"],canonical:(n,e)=>{if(e.length===1)return n._fn("Log",[Le(n,e[0],"Numbers")]);if(e=Fe(n,e,2),e.length!==2)return n._fn("Log",e);let[i,t]=e;return t.numericValue===10?n._fn("Log",[i]):n._fn("Log",[i,t])},N:(n,e)=>e[1]===void 0?ee(e[0],i=>i>=0?Math.log10(i):n.complex(i).log().div(Math.LN10),i=>i.isNeg()?n.complex(i.toNumber()).log().div(Math.LN10):N.log10(i),i=>i.log().div(Math.LN10)):Mn(e[0],e[1],(i,t)=>Math.log(i)/Math.log(t),(i,t)=>i.log(t),(i,t)=>i.log().div(typeof t=="number"?Math.log(t):t.log()))}},Lb:{description:"Base-2 Logarithm",wikidata:"Q581168",complexity:4100,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],N:(n,e)=>ee(e[0],i=>i>=0?Math.log2(i):n.complex(i).log().div(Math.LN2),i=>i.isNeg()?N.log10(i):n.complex(i.toNumber()).log().div(Math.LN2),i=>i.log().div(Math.LN2))}},Lg:{description:"Base-10 Logarithm",wikidata:"Q966582",complexity:4100,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],N:(n,e)=>ee(e[0],i=>i>=0?Math.log10(i):n.complex(i).log().div(Math.LN10),i=>i.isNeg()?n.complex(i.toNumber()).log().div(Math.LN10):N.log10(i),i=>i.log().div(Math.LN10))}},Mod:{description:"Modulo",wikidata:"Q1799665",complexity:2500,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers","Numbers"],evaluate:(n,e)=>{if(e.length!==2)return;let[i,t]=e,r=i.value,o=t.value;if(typeof r=="number"&&typeof o=="number")return n.number((r%o+o)%o)}}},Multiply:{wikidata:"Q40276",associative:!0,commutative:!0,idempotent:!0,complexity:2100,hold:"all",threadable:!0,signature:{domain:"NumericFunctions",simplify:(n,e)=>su(n,e.map(i=>i.simplify())),evaluate:(n,e)=>{e=e.map(t=>t.evaluate());let i=Vn(e);return i.head!=="Multiply"?i.evaluate():Bt(n,e)},N:(n,e)=>{e=e.map(t=>t.N());let i=Vn(e);return i.head!=="Multiply"?i.N():Bt(n,e,"N")}}},Negate:{description:"Additive Inverse",wikidata:"Q715358",complexity:2e3,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],result:(n,e)=>{let i=e[0].domain;if(!i?.base)return i;let t={PositiveNumbers:"NegativeNumbers",NonNegativeNumbers:"NonPositiveNumbers",NonPositiveNumbers:"NonNegativeNumbers",NegativeNumbers:"PositiveNumbers",PositiveIntegers:"NegativeIntegers",NonNegativeIntegers:"NonPositiveIntegers",NonPositiveIntegers:"NonNegativeIntegers",NegativeIntegers:"PositiveIntegers"}[i.base];return t?n.domain(t):i},canonical:(n,e)=>(e=Fe(n,e),e.length!==1?n._fn("Negate",e):n.neg(e[0])),simplify:(n,e)=>Ir(n,e[0],"simplify"),evaluate:(n,e)=>Ir(n,e[0],"evaluate"),N:(n,e)=>Ir(n,e[0],"N"),sgn:(n,e)=>{let i=e[0].sgn;if(i!=null){if(i===0)return 0;if(i>0)return-1;if(i<0)return 1}}}},PlusMinus:{description:"Plus or Minus",wikidata:"Q120812",complexity:1200,involution:!0,signature:{domain:["FunctionOf","Values","Tuples"],evaluate:(n,e)=>{if(e.length===1)return n.box(["Pair",e[0],n.neg(e[0])])}}},Power:{wikidata:"Q33456",commutative:!1,threadable:!0,complexity:3500,signature:{domain:["FunctionOf","Numbers","Numbers","Numbers"],canonical:(n,e)=>{if(e=Fe(n,e,2),e.length!==2)return n._fn("Power",e);let[i,t]=e;return i instanceof se&&i.isNegative?n.neg(n.pow(i,t)):n.pow(i,t)},simplify:(n,e)=>On(n,e[0],e[1],"simplify"),evaluate:(n,e)=>On(n,e[0],e[1],"evaluate"),N:(n,e)=>n.numericMode==="machine"&&typeof e[0].numericValue=="number"&&typeof e[1].numericValue=="number"?n.number(Math.pow(e[0].numericValue,e[1].numericValue)):On(n,e[0],e[1],"N")}},Rational:{complexity:2400,signature:{domain:["FunctionOf","Numbers",["OptArg","Numbers"],"RationalNumbers"],canonical:(n,e)=>(e=te(re(e)),e.length===0?n._fn("Rational",[n.error("missing")]):e.length===1?n._fn("Rational",[Le(n,e[0],"ExtendedRealNumbers")]):(e=rr(n,e,["Integers","Integers"]),e.length!==2||!e[0].isValid||!e[1].isValid?n._fn("Rational",e):n.div(e[0],e[1]))),simplify:(n,e)=>{if(e.length===2)return St(n,e[0],e[1])},evaluate:(n,e)=>{if(e.length===2){let[t,r]=[U(e[0]),U(e[1])];return t!==null&&r!==null?n.number([t,r]):void 0}let i=b(e[0].N());if(i!==null)return n.number(Yt(i))},N:(n,e)=>e.length===1?e[0]:Mn(e[0],e[1],(i,t)=>i/t,(i,t)=>i.div(t),(i,t)=>i.div(t))}},Root:{complexity:3200,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers","Numbers"],canonical:(n,e)=>{e=Fe(n,e,2);let[i,t]=e;return e.length!==2||!i.isValid||!t.isValid?n._fn("Root",e):n.pow(i,n.inv(t))}}},Round:{complexity:1250,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>ee(e[0],Math.round,i=>i.round(),i=>i.round(0))}},Sign:{complexity:1200,threadable:!0,signature:{domain:["FunctionOf","Numbers","Integers"],simplify:(n,e)=>{let i=e[0].sgn;if(i===0)return n.Zero;if(i===1)return n.One;if(i===-1)return n.NegativeOne},evaluate:(n,e)=>{let i=e[0].sgn;if(i===0)return n.Zero;if(i===1)return n.One;if(i===-1)return n.NegativeOne},N:(n,e)=>{let i=e[0].sgn;if(i===0)return n.Zero;if(i===1)return n.One;if(i===-1)return n.NegativeOne}}},Sqrt:{description:"Square Root",wikidata:"Q134237",complexity:3e3,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],canonical:(n,e)=>(e=te(re(e)),e.length!==1?n._fn("Sqrt",e):n.pow(e[0],n.Half)),simplify:(n,e)=>Vi(n,e[0],"simplify"),evaluate:(n,e)=>Vi(n,e[0],"evaluate"),N:(n,e)=>Vi(n,e[0],"N")}},Square:{wikidata:"Q3075175",complexity:3100,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],canonical:(n,e)=>(e=te(re(e)),e.length!==1?n._fn("Square",e):n._fn("Power",[e[0],n.number(2)]).canonical)}},Subtract:{wikidata:"Q40754",complexity:1350,threadable:!0,signature:{domain:["FunctionOf","Numbers",["OptArg","Numbers"],"Numbers"],canonical:(n,e)=>{if(e.length===1){let r=Le(n,e[0],"Numbers");if(r.isValid)return fe(r)}e=Fe(n,e,2);let[i,t]=e;return e.length!==2||!i.isValid||!t.isValid?n._fn("Subtract",e):qn(n,ie([i,fe(t)],"Add"))}}}},{e:{domain:"TranscendentalNumbers",constant:!0,holdUntil:"never",value:"ExponentialE"},i:{domain:"ImaginaryNumbers",constant:!0,holdUntil:"never",flags:{imaginary:!0},value:"ImaginaryUnit"},MachineEpsilon:{domain:"RealNumbers",holdUntil:"N",constant:!0,flags:{real:!0},value:{num:Number.EPSILON.toString()}},Half:{domain:"RationalNumbers",constant:!0,holdUntil:"evaluate",value:["Rational",1,2]},ImaginaryUnit:{domain:"ImaginaryNumbers",constant:!0,holdUntil:"evaluate",wikidata:"Q193796",flags:{imaginary:!0},value:["Complex",0,1]},ExponentialE:{domain:"TranscendentalNumbers",flags:{algebraic:!1,real:!0},wikidata:"Q82435",constant:!0,holdUntil:"N",value:n=>L(n)?n._BIGNUM_ONE.exp():Math.exp(1)},GoldenRatio:{domain:"AlgebraicNumbers",wikidata:"Q41690",constant:!0,flags:{algebraic:!0},holdUntil:"simplify",value:["Divide",["Add",1,["Sqrt",5]],2]},CatalanConstant:{domain:"RealNumbers",flags:{algebraic:void 0},wikidata:"Q855282",constant:!0,holdUntil:"N",value:{num:`0.91596559417721901505460351493238411077414937428167
|
|
17
|
+
})()`}function Vi(){return`_${Math.random().toString(36).substring(2)}`}function Kf(n,e,i){let[t,r,o]=Mn(n[1]),s=ge(n[0],{...i,var:a=>a===t?a:i.var(a)});return`_SYS.integrate((${t}) => (${s}), ${r}, ${o})`}function _a(n,e){return"normal"}function Sa(n,e){return"normal"}function Ba(n,e){return e>2?"solidus":"radical"}function Ta(n,e){if(e>3)return"inline-solidus";if(x(n)==="Divide"){let[i,t]=[ut(ke(n)),ut(sn(n))];if(t<=2&&i>5)return"factor";if(i<=2&&t>5)return"reciprocal"}return"quotient"}function Da(n,e){return"boolean"}function Ia(n,e){return"solidus"}function ka(n,e){return"compact"}function wa(n,e,i){if(i.repeatingDecimal&&i.repeatingDecimal!=="none"){let o=n.slice(0,-1);for(let s=0;s<n.length-16;s++){let a=o.substring(0,s);for(let l=0;l<17;l++){let u=o.substring(s,s+l+1),f=Math.floor((o.length-a.length)/u.length);if(f<=3)break;if((a+u.repeat(f+1)).startsWith(o)){if(u==="0")return Bo(a,i);let d={vinculum:"\\overline{#}",parentheses:"(#)",dots:"\\overset{\\cdots}{#1}#2\\overset{\\cdots}{#3}",arc:"\\wideparen{#}"}[i.repeatingDecimal]??"\\overline{#}";return d=d.replace(/#1/g,u[0]).replace(/#2/g,u.slice(1)).replace(/#3/g,u.slice(-1)).replace(/#/,u),Bo(a,i)+d}}}}let t=typeof i.fractionalDigits=="number"?i.fractionalDigits:1/0;t<0&&(t=t-e),t<0&&(t=0);let r=n.length>t;return r&&(n=n.substring(0,t)),n=Bo(n,i),r&&(n+=i.truncationMarker),n}function Ca(n,e){return!n||n==="0"?"":e.beginExponentMarker?e.beginExponentMarker+n+(e.endExponentMarker??""):`10^{${n}}`}function Ma(n,e){if(n===null)return"";let i;if(typeof n=="number"||typeof n=="string")i=n;else if(typeof n=="object"&&"num"in n)i=n.num;else return"";if(typeof i=="number"){if(i===1/0)return e.positiveInfinity;if(i===-1/0)return e.negativeInfinity;if(Number.isNaN(i))return e.notANumber;let o;return e.notation==="engineering"?o=dr(i.toExponential(),e,3):e.notation==="scientific"&&(o=dr(i.toExponential(),e)),o??To(i.toString(),e)}if(i=i.toLowerCase().replace(/[\u0009-\u000d\u0020\u00a0]/g,""),i==="infinity"||i==="+infinity")return e.positiveInfinity;if(i==="-infinity")return e.negativeInfinity;if(i==="nan")return e.notANumber;if(!/^[-+\.]?[0-9]/.test(i))return"";if(i=i.replace(/[nd]$/,""),/\([0-9]+\)/.test(i)){let[o,s,a,l]=i.match(/(.+)\(([0-9]+)\)(.*)$/)??[];i=s+a.repeat(6)+l}let t="";for(i[0]==="-"?(t="-",i=i.substring(1)):i[0]==="+"&&(i=i.substring(1));i[0]==="0";)i=i.substring(1);i.length===0?i="0":i[0]==="."&&(i="0"+i);let r;return e.notation==="engineering"?r=dr(i,e,3):e.notation==="scientific"&&(r=dr(i,e)),t+(r??To(i,e))}function dr(n,e,i=1){let t=n.match(/^(.*)[e|E]([-+]?[0-9]+)$/);if(!t){let f="";if(n[0]==="-"?(f="-",n=n.substring(1)):n[0]==="+"&&(n=n.substring(1)),n.indexOf(".")<0)n.length===1?n=f+n+"e+0":n=f+n[0]+"."+n.slice(1)+"e+"+(n.length-1).toString();else{let[d,c,m]=n.match(/^(.*)\.(.*)$/);for(m||(m="");c.startsWith("0");)c=c.substring(1);c?n=f+c[0]+"."+c.slice(1)+m+"e+"+(c.length-1).toString():n=f+"0."+m+"e+0"}t=n.match(/^(.*)[e|E]([-+]?[0-9]+)$/)}if(!t)return To(n,e);let r=parseInt(t[2]),o=t[1];if(Math.abs(r)%i!==0){let f=r>0?r%i:-((i+r)%i);r=r>=0?r-f:r+f;let[d,c,m]=o.match(/^(.*)\.(.*)$/)??["",o,""];o=c+(m+"00000000000000000").slice(0,Math.abs(f))+"."+m.slice(Math.abs(f))}let s=e.avoidExponentsInRange;if(s&&r>=s[0]&&r<=s[1])return;let a="",l=o;t=l.match(/^(.*)\.(.*)$/),t&&(l=t[1],a=t[2]);let u=Ca(Number(r).toString(),e);if(a=wa(a,l.length,e),l=Ra(l,e),a&&(a=e.decimalSeparator+a),!u)return l+a;if(!a){if(l==="1")return u;if(l==="-1")return"-"+u}return l+a+e.exponentProduct+u}function To(n,e){let i=n.match(/^(.*)[e|E]([-+]?[0-9]+)$/i),t=0;i?.[1]&&i[2]&&(t=parseInt(i[2]),n=i[1]);let r=i?.[1]??n,o="";i=n.match(/^(.*)\.(.*)$/),i?.[1]&&i[2]&&(r=i[1],o=i[2]),t!==0&&o&&(r+=o,t-=o.length,o="");let s=e.avoidExponentsInRange;t!==0&&s&&t>=s[0]&&t<=s[1]&&([r,o]=id(r,o,t));let a=Ca(t.toString(),e);if(o&&(o=e.decimalSeparator+wa(o,r.length,e)),r=Ra(r,e),!a)return r+o;if(!o){if(r==="1")return a;if(r==="-1")return"-"+a}return r+o+e.exponentProduct+a}function Aa(n,e,i){let t=new RegExp(`(\\d{${e}})(?=\\d)`,"g");return n.replace(t,`$1${i}`)}function ed(n,e,i){let t=new RegExp(`(\\d{${e}})(?=\\d)`,"g"),r=i.split("").reverse().join("");return n.split("").reverse().join("").replace(t,`$1${r}`).split("").reverse().join("")}function nd(n,e){let i=n.split("").reverse().join(""),t=e.split("").reverse().join(""),r=i.replace(/(\d{3})(?=\d)/,`$1${t}`);return r=r.replace(/(\d{2})(?=(\d{2})+,)/g,`$1${t}`),r.split("").reverse().join("")}function Oa(n,e,i){let t=e.digitGroup;typeof t!="string"&&Array.isArray(t)&&(t=t[i]);let r=typeof e.digitGroupSeparator=="string"?e.digitGroupSeparator:e.digitGroupSeparator[i];return r?t==="lakh"?i===0?nd(n,r):Aa(n,3,r):t===!1||t<=0?n:i===1?Aa(n,t,r):ed(n,t,r):n}function Bo(n,e){return Oa(n,e,1)}function Ra(n,e){return Oa(n,e,0)}function id(n,e,i){let t=n+e,o=n.length+i,s,a;return o>0?o>=t.length?(t=t+"0".repeat(o-t.length),s=t,a=""):(s=t.slice(0,o),a=t.slice(o)):(s="0",a="0".repeat(-o)+t),[s,a]}var cn=[["alpha","\\alpha",945],["beta","\\beta",946],["gamma","\\gamma",947],["delta","\\delta",948],["epsilon","\\epsilon",949],["epsilonSymbol","\\varepsilon",1013],["zeta","\\zeta",950],["eta","\\eta",951],["theta","\\theta",952],["thetaSymbol","\\vartheta",977],["iota","\\iota",953],["kappa","\\kappa",954],["kappaSymbol","\\varkappa",1008],["lambda","\\lambda",955],["mu","\\mu",956],["nu","\\nu",957],["xi","\\xi",958],["omicron","\\omicron",959],["pi","\\pi",960],["piSymbol","\\varpi",982],["rho","\\rho",961],["rhoSymbol","\\varrho",1009],["sigma","\\sigma",963],["finalSigma","\\varsigma",962],["tau","\\tau",964],["phi","\\phi",981],["phiLetter","\\varphi",966],["upsilon","\\upsilon",965],["chi","\\chi",967],["psi","\\psi",968],["omega","\\omega",969],["Alpha","\\Alpha",913],["Beta","\\Beta",914],["Gamma","\\Gamma",915],["Delta","\\Delta",916],["Epsilon","\\Epsilon",917],["Zeta","\\Zeta",918],["Eta","\\Eta",919],["Theta","\\Theta",920],["Iota","\\Iota",921],["Kappa","\\Kappa",922],["Lambda","\\Lambda",923],["Mu","\\Mu",924],["Nu","\\Nu",925],["Xi","\\Xi",926],["Omicron","\\Omicron",927],["Rho","\\Rho",929],["Sigma","\\Sigma",931],["Tau","\\Tau",932],["Phi","\\Phi",934],["Upsilon","\\Upsilon",933],["Chi","\\Chi",935],["Psi","\\Psi",936],["Omega","\\Omega",937],["digamma","\\digamma",989],["aleph","\\aleph",8501],["bet","\\beth",8502],["gimel","\\gimel",8503],["dalet","\\daleth",8504],["ell","\\ell",8499],["turnedCapitalF","\\Finv",8498],["turnedCapitalG","\\Game",8513],["weierstrass","\\wp",8472],["eth","\\eth",240],["invertedOhm","\\mho",8487],["hBar","\\hbar",295],["hSlash","\\hslash",8463],["blackClubSuit","\\clubsuit",9827],["whiteHeartSuit","\\heartsuit",9825],["blackSpadeSuit","\\spadesuit",9824],["whiteDiamondSuit","\\diamondsuit",9826],["sharp","\\sharp",9839],["flat","\\flat",9837],["natural","\\natural",9838]],Pa=[...cn.map(([n,e,i])=>({kind:"symbol",name:n,latexTrigger:[e],parse:n})),...cn.map(([n,e,i])=>({kind:"symbol",latexTrigger:[String.fromCodePoint(i)],parse:n}))];function Do(n,e,i,t,r){if(e&&e.minPrec>=t)return null;let o=i?[i]:["Nothing"],s=!1;for(;!s;){for(s=!0,n.skipSpace();n.match(r);)o.push("Nothing"),n.skipSpace();if(n.atTerminator(e))o.push("Nothing");else{let a=n.parseExpression({...e,minPrec:t});o.push(a??"Nothing"),s=a===null}s||(n.skipSpace(),s=!n.match(r))}return o}function mr(n=""){return(e,i)=>{if(!i)return"";let t=B(i)??[];if(t.length===0)return"";if(t.length===1)return e.serialize(t[0]);n={"&":"\\&",":":"\\colon","|":"\\mvert","-":"-","\xB7":"\\cdot","\u2012":"-","\u2013":"--","\u2014":"---","\u2015":"-","\u2022":"\\bullet","\u2026":"\\ldots"}[n]??n;let r=t.reduce((o,s)=>(o.push(e.serialize(s),n),o),[]);return r.pop(),v(r)}}var Fa=[{latexTrigger:["\\placeholder"],kind:"symbol",parse:n=>{for(;n.match("<space>"););if(n.match("["))for(;!n.match("]")&&!n.atBoundary;)n.nextToken();for(;n.match("<space>"););if(n.match("<{>"))for(;!n.match("<}>")&&!n.atBoundary;)n.nextToken();return"Nothing"}},{name:"Function",latexTrigger:["\\mapsto"],kind:"infix",precedence:270,parse:(n,e)=>{let i=[];if(x(e)==="Delimiter"&&(e=p(e,1)??"Nothing"),x(e)==="Sequence")for(let r of B(e)??[]){if(!C(r))return null;i.push(C(r))}else{if(!C(e))return null;i=[C(e)]}let t=n.parseExpression({minPrec:270})??"Nothing";return x(t)==="Delimiter"&&(t=p(t,1)??"Nothing"),x(t)==="Sequence"&&(t=["Block",...B(t)??[]]),["Function",t,...i]},serialize:(n,e)=>{let i=B(e);return i===null||i.length<1?"()\\mapsto()":i.length===1?v(["()","\\mapsto",n.serialize(p(e,1))]):i.length===2?v([n.serialize(p(e,2)),"\\mapsto",n.serialize(p(e,1))]):v([n.wrapString((B(e)?.slice(1)??[]).map(t=>n.serialize(t)).join(", "),"normal"),"\\mapsto",n.serialize(p(e,1))])}},{name:"Apply",kind:"function",identifierTrigger:"apply",serialize:(n,e)=>{if(typeof p(e,1)=="string"){let t=e.slice(1);return n.serialize(t)}return n.serializeFunction(B(e))}},{latexTrigger:"\\lhd",kind:"infix",precedence:20,parse:"Apply"},{latexTrigger:"\\rhd",kind:"infix",precedence:20,parse:(n,e)=>["Apply",n.parseExpression({minPrec:21})??"Nothing",e]},{name:"Assign",latexTrigger:"\\coloneq",kind:"infix",associativity:"right",precedence:260,serialize:(n,e)=>{let i=lo(p(e,1));if(x(p(e,2))==="Function"){let t=p(e,2),r=lo(p(t,1)),o=B(t)?.slice(1)??[];return v([n.serialize(i),n.wrapString(o.map(s=>n.serialize(s)).join(", "),n.options.applyFunctionStyle(e,n.level)),"\\coloneq",n.serialize(r)])}return v([n.serialize(i),"\\coloneq",n.serialize(p(e,2))])},parse:pr},{latexTrigger:"\\coloneqq",kind:"infix",associativity:"right",precedence:260,parse:pr},{latexTrigger:"\\colonequals",kind:"infix",associativity:"right",precedence:260,parse:pr},{latexTrigger:[":","="],kind:"infix",associativity:"right",precedence:260,parse:pr},{name:"BaseForm",serialize:(n,e)=>{let i=O(p(e,2))??NaN;if(isFinite(i)&&i>=2&&i<=36){let t=O(p(e,1))??NaN;if(isFinite(t)&&Number.isInteger(t)){let r=Number(t).toString(i),o=0;if(i===2||i===10?o=4:i===16?o=2:i>16&&(o=4),o>0){let s=r;r="";for(let a=0;a<s.length;a++)a>0&&a%o===0&&(r="\\, "+r),r=s[s.length-a-1]+r}return`(\\text{${r}}_{${i}}`}}return"\\operatorname{BaseForm}("+n.serialize(p(e,1))+", "+n.serialize(p(e,2))+")"}},{name:"Sequence",serialize:mr(" ")},{name:"InvisibleOperator",serialize:mr("")},{name:"Delimiter",serialize:(n,e)=>{let i=n.options.groupStyle(e,n.level+1),t=p(e,1),r=x(t),o={Set:"{,}",List:"[,]",Tuple:"(,)",Single:"(,)",Pair:"(,)",Triple:"(,)",Sequence:"(,)",String:'""'}[typeof r=="string"?r:""],s=o?t:["Sequence",t];if(o??(o="(,)"),j(e)>1){let d=Z(p(e,2));typeof d=="string"&&d.length<=3&&(o=d)}let[a,l,u]=["","",""];o.length===3?[a,l,u]=o:o.length===2?[a,u]=o:o.length===1&&(l=o);let f=t?s?mr(l)(n,s):n.serialize(t):"";return n.wrapString(f,i,a+u)}},{name:"Domain",serialize:(n,e)=>x(e)==="Error"?n.serialize(e):`\\mathbf{${n.serialize(p(e,1))}}`},{latexTrigger:["\\mathtip"],parse:n=>{let e=n.parseGroup();return n.parseGroup(),e}},{latexTrigger:["\\texttip"],parse:n=>{let e=n.parseGroup();return n.parseGroup(),e}},{latexTrigger:["\\error"],parse:n=>["Error",n.parseGroup()]},{name:"Error",serialize:(n,e)=>{let i=p(e,1);if(Z(i)==="missing")return`\\error{${n.options.missingSymbol??"\\placeholder{}"}}`;let t=od(n,e)||"\\blacksquare",r=x(i)==="ErrorCode"?Z(p(i,1)):Z(i);return r==="incompatible-domain"?C(p(i,3))==="Undefined"?`\\mathtip{\\error{${t}}}{\\notin ${n.serialize(p(i,2))}}`:`\\mathtip{\\error{${t}}}{\\in ${n.serialize(p(i,3))}\\notin ${n.serialize(p(i,2))}}`:typeof r=="string"?`\\error{${t}}`:`\\error{${t}}`}},{name:"ErrorCode",serialize:(n,e)=>{let i=Z(p(e,1));return i==="missing"?n.options.missingSymbol??"\\placeholder{}":i==="unexpected-command"||i==="unexpected-operator"||i==="unexpected-token"||i==="invalid-identifier"||i==="unknown-environment"||i==="unexpected-base"||i==="incompatible-domain"||i==="invalid-domain"?"":`\\texttip{\\error{\\blacksquare}}{\\mathtt{${i}}}`}},{name:"FromLatex",serialize:(n,e)=>`\\texttt{${rd(Z(p(e,1)))}}`},{name:"Latex",serialize:(n,e)=>e===null?"":v(at(e,i=>Z(i)??n.serialize(i)))},{name:"LatexString",serialize:(n,e)=>e===null?"":v(at(e,i=>n.serialize(i)))},{name:"LatexTokens",serialize:td},{name:"List",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:La,serialize:(n,e)=>v(["\\bigl\\lbrack",mr(", ")(n,e),"\\bigr\\rbrack"])},{kind:"matchfix",openTrigger:"(",closeTrigger:")",parse:sd},{latexTrigger:[","],kind:"infix",precedence:20,parse:(n,e,i)=>{let t=Do(n,i,e,20,",");return t===null?null:["Delimiter",["Sequence",...t],{str:","}]}},{latexTrigger:[","],kind:"prefix",precedence:20,parse:(n,e)=>{let i=Do(n,e,null,20,",");return i===null?null:["Delimiter",["Sequence",...i],{str:","}]}},{name:"Range",latexTrigger:[".","."],kind:"infix",precedence:10,parse:ad,serialize:(n,e)=>{let i=B(e);if(i===null)return"";if(i.length===1)return"1.."+n.serialize(p(e,1));if(i.length===2)return n.wrap(p(e,1),10)+".."+n.wrap(p(e,2),10);if(i.length===3){let t=O(p(e,3)),r=O(p(e,1));return t!==null&&r!==null?n.wrap(p(e,1),10)+","+n.wrap(r+t,10)+".."+n.wrap(p(e,2),10):n.wrap(p(e,1),10)+","+(n.wrap(p(e,3),275)+"+"+n.wrap(p(e,3),275))+".."+n.wrap(p(e,2),10)}return""}},{latexTrigger:[";"],kind:"infix",precedence:19,parse:(n,e,i)=>{let t=Do(n,i,e,19,";");return t===null?null:["Delimiter",["Sequence",...t],"';'"]}},{name:"String",latexTrigger:["\\text"],parse:n=>ko(n),serialize:(n,e)=>{let i=B(e);return i===null||i.length===0?"\\text{}":v(["\\text{",i.map(t=>n.serialize(t)).join(""),"}"])}},{name:"Subscript",latexTrigger:["_"],kind:"infix",serialize:(n,e)=>j(e)===2?n.serialize(p(e,1))+"_{"+n.serialize(p(e,2))+"}":"_{"+n.serialize(p(e,1))+"}"},{name:"Superplus",latexTrigger:["^","+"],kind:"postfix"},{name:"Subplus",latexTrigger:["_","+"],kind:"postfix"},{name:"Superminus",latexTrigger:["^","-"],kind:"postfix"},{name:"Subminus",latexTrigger:["_","-"],kind:"postfix"},{latexTrigger:["^","*"],kind:"postfix",parse:(n,e)=>["Superstar",e]},{latexTrigger:["_","*"],kind:"postfix",parse:(n,e)=>["Substar",e]},{name:"Substar",latexTrigger:["_","\\star"],kind:"postfix"},{name:"Superdagger",latexTrigger:["^","\\dagger"],kind:"postfix"},{latexTrigger:["^","\\dag"],kind:"postfix",parse:(n,e)=>["Superdagger",e]},{name:"Prime",latexTrigger:["^","\\prime"],kind:"postfix",parse:(n,e)=>On(n,e,1),serialize:(n,e)=>{let i=O(p(e,2))??1,t=n.serialize(p(e,1));return i===1?t+"^\\prime":i===2?t+"^\\doubleprime":i===3?t+"^\\tripleprime":t+"^{("+n.serialize(p(e,2))+")}"}},{latexTrigger:"^{\\prime\\prime}",kind:"postfix",parse:(n,e)=>On(n,e,2)},{latexTrigger:"^{\\prime\\prime\\prime}",kind:"postfix",parse:(n,e)=>On(n,e,3)},{latexTrigger:["^","\\doubleprime"],kind:"postfix",parse:(n,e)=>On(n,e,2)},{latexTrigger:["^","\\tripleprime"],kind:"postfix",parse:(n,e)=>On(n,e,3)},{latexTrigger:"'",kind:"postfix",precedence:810,parse:(n,e)=>On(n,e,1)},{latexTrigger:"\\prime",kind:"postfix",precedence:810,parse:(n,e)=>On(n,e,1)},{latexTrigger:"\\doubleprime",kind:"postfix",precedence:810,parse:(n,e)=>On(n,e,2)},{latexTrigger:"\\tripleprime",kind:"postfix",precedence:810,parse:(n,e)=>On(n,e,3)},{latexTrigger:["^","<{>","("],kind:"postfix",parse:(n,e,i)=>{let t=C(e);if(!t||n.getIdentifierType(t)!=="function")return null;let r=n.index;n.addBoundary([")"]);let o=n.parseExpression(i);return!n.matchBoundary()||!n.match("<}>")?(n.index=r,null):["Derivative",e,o]}},{name:"InverseFunction",latexTrigger:"^{-1",kind:"postfix",parse:(n,e)=>{let i=C(e);if(!i||n.getIdentifierType(i)!=="function")return null;let t=0,r=n.index;for(;!n.atEnd&&!n.match("<}>");)if(n.match("'"))t++;else if(n.match("\\prime"))t++;else if(n.match("\\doubleprime"))t+=2;else if(n.match("\\tripleprime"))t+=3;else return n.index=r,null;return t===1?["Derivative",["InverseFunction",e]]:t>0?["Derivative",["InverseFunction",e],t]:["InverseFunction",e]},serialize:(n,e)=>n.serialize(p(e,1))+"^{-1}"},{name:"Derivative",serialize:(n,e)=>{let i=O(p(e,2))??1,t=n.serialize(p(e,1));return i===1?t+"^{\\prime}":i===2?t+"^{\\doubleprime}":i===3?t+"^{\\tripleprime}":t+"^{("+n.serialize(p(e,2))+")}"}},{kind:"environment",name:"Which",identifierTrigger:"cases",parse:Io,serialize:(n,e)=>{let i=[],t=B(e);if(t)for(let r=0;r<=t.length-2;r+=2){let o=[];o.push(n.serialize(t[r+1])),o.push(n.serialize(t[r])),i.push(o.join("&"))}return v(["\\begin{cases}",i.join("\\\\"),"\\end{cases}"])}},{kind:"environment",identifierTrigger:"dcases",parse:Io},{kind:"environment",identifierTrigger:"rcases",parse:Io}];function ko(n,e){if(!n.match("<{>"))return"''";let i=[],t="",r=null;for(;!n.atEnd&&!n.match("<}>");)if(n.peek==="<{>")i.push(ko(n));else if(n.match("\\textbf")&&n.match("<{>"))i.push(ko(n,{"font-weight":"bold"}));else if(n.match("\\color")){let s=n.parseStringGroup();s!==null&&(r!==null&&t?i.push(["Style",t,{dict:r}]):t&&i.push(["String",t]),t="",r={color:s})}else if(n.match("<space>"))t+=" ";else if(n.match("<$>")){let s=n.index,a=n.parseExpression()??["Sequence"];n.skipSpace(),n.match("<$>")?i.push(a):(t+="$",n.index=s)}else if(n.match("<$$>")){let s=n.index,a=n.parseExpression()??["Sequence"];n.skipSpace(),n.match("<$$>")?i.push(a):(t+="$$",n.index=s)}else{let s=n.matchChar()??n.nextToken();t+={"\\enskip":"\u2002","\\enspace":"\u2002","\\quad":"\u2003","\\qquad":"\u2003\u2003","\\space":"\u2003","\\ ":"\u2003","\\;":"\u2004","\\,":"\u2009","\\:":"\u205F","\\!":"","\\{":"{","\\}":"}","\\$":"$","\\&":"&","\\#":"#","\\%":"%","\\_":"_","\\textbackslash":"\\","\\textasciitilde":"~","\\textasciicircum":"^","\\textless":"<","\\textgreater":">","\\textbar":"|","\\textunderscore":"_","\\textbraceleft":"{","\\textbraceright":"}","\\textasciigrave":"`","\\textquotesingle":"'","\\textquotedblleft":"\u201C","\\textquotedblright":"\u201D","\\textquotedbl":'"',"\\textquoteleft":"\u2018","\\textquoteright":"\u2019","\\textbullet":"\u2022","\\textdagger":"\u2020","\\textdaggerdbl":"\u2021","\\textsection":"\xA7","\\textparagraph":"\xB6","\\textperiodcentered":"\xB7","\\textellipsis":"\u2026","\\textemdash":"\u2014","\\textendash":"\u2013","\\textregistered":"\xAE","\\texttrademark":"\u2122","\\textdegree":"\xB0"}[s]??s}r!==null&&t?i.push(["Style",`'${t}'`,{dict:r}]):t&&i.push(`'${t}'`);let o;return i.length===1?o=i[0]:i.every(s=>Z(s)!==null)?o="'"+i.map(s=>Z(s)).join()+"'":o=["String",...i],e?["Style",o,{dict:e}]:o}function td(n,e){return e===null?"":v(at(e,i=>{let t=Z(i);return t===null?n.serialize(i):t==="<{>"?"{":t==="<}>"?"}":t==="<$>"?"$":t==="<$$>"?"$$":t==="<space>"?" ":t}))}function rd(n){return n===null?"":n.replace(/[{}\[\]\\:\-\$%]/g,e=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "})[e]??"\\"+e)}function od(n,e){let i=p(e,2);return i?x(i)==="LatexString"?Z(p(i,1))??"":x(i)==="Hold"?n.serialize(p(i,1)):n.serialize(i):""}function On(n,e,i){let t=x(e);if(t==="Derivative"||t==="Prime"){let o=O(p(e,2))??1;return[t,L(p(e,1)),o+i]}let r=C(e);return r&&n.getIdentifierType(r)==="function"||x(e)?i===1?["Derivative",e]:["Derivative",e,i]:i===1?["Prime",L(e)]:["Prime",L(e),i]}function sd(n,e){if(e===null||se(e))return["Delimiter"];let i=x(e);if(i==="Delimiter"&&p(e,2)){let t=Z(p(e,2));if(t?.length===1)return["Delimiter",p(e,1)??["Sequence"],{str:`(${t})`}]}return i==="Sequence"?j(e)===0?["Delimiter"]:j(e)===1?["Delimiter",p(e,1)]:["Delimiter",e]:i==="Matrix"&&(Z(p(e,2))??"..")===".."?["Matrix",p(e,1)]:["Delimiter",e]}function La(n,e){if(e===null||se(e))return["List"];let i=x(e);if(i==="Range"||i==="Linspace")return e;if(i==="Sequence")return["List",...B(e)??[]];if(i==="Delimiter"){let t=Z(p(e,2))??"...";if(t===";"||t===".;.")return["List",...(B(p(e,1))??[]).map(r=>La(n,r))];if(t===","||t===".,.")return e=p(e,1),x(e)==="Sequence"?["List",...B(e)??[]]:["List",e??["Sequence"]]}return["List",e]}function ad(n,e){let i=n.index;if(!e)return null;let t=null,r=null;if(x(e)==="Sequence"){if(j(e)!==2)return null;if(t=p(e,1),r=p(e,2),r===null)return n.index=i,null}else t=p(e,1);if(t===null)return null;let o=n.parseExpression({minPrec:0});if(!o)return n.index=i,null;if(r){let s=O(r),a=O(t);return s!==null&&a!==null?["Range",t,o,s-a]:["Range",t,o,["Subtract",r,t]]}return["Range",t,o]}var $i={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","\u27E6":"\\llbrack","\u27E7":"\\rrbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","\u2016":"\\Vert","\\":"\\backslash","\u2308":"\\lceil","\u2309":"\\rceil","\u230A":"\\lfloor","\u230B":"\\rfloor","\u231C":"\\ulcorner","\u231D":"\\urcorner","\u231E":"\\llcorner","\u231F":"\\lrcorner","\u23B0":"\\lmoustache","\u23B1":"\\rmoustache"};function pr(n,e){let i=n.index;if(x(e)==="InvisibleOperator"&&j(e)===2&&x(p(e,2))==="Delimiter"){let r=C(p(e,1));if(!r)return null;let o=n.parseExpression({minPrec:0});if(o===null)return n.index=i,null;let s=p(p(e,2),1),a=[];return x(s)==="Sequence"?a=B(s)??[]:s&&(a=[s]),["Assign",r,["Function",o,...a??[]]]}if(typeof x(e)=="string"){let r=x(e),o=B(e)??[],s=n.parseExpression({minPrec:0});return s===null?(n.index=i,null):["Assign",r,["Function",s,...o]]}if(!C(e))return null;let t=n.parseExpression({minPrec:0});return t===null?(n.index=i,null):["Assign",e,t]}function Io(n){let e=n.parseTabular();if(!e)return["Which"];let i=["Which"];for(let t of e)if(t.length===1)i.push("True"),i.push(t[0]);else if(t.length===2){let r=Z(t[1]);i.push(r?"True":uo(t[1])??"True"),i.push(t[0])}return i}var wo={deg:n=>`${n}\\degree`,prime:n=>`${n}^{\\prime}`,dprime:n=>`${n}^{\\doubleprime}`,ring:n=>`\\mathring{${n}}`,hat:n=>`\\hat{${n}}`,tilde:n=>`\\tilde{${n}}`,vec:n=>`\\vec{${n}}`,bar:n=>`\\overline{${n}}`,underbar:n=>`\\underline{${n}}`,dot:n=>`\\dot{${n}}`,ddot:n=>`\\ddot{${n}}`,tdot:n=>`\\dddot{${n}}`,qdot:n=>`\\ddddot{${n}}`,acute:n=>`\\acute{${n}}`,grave:n=>`\\grave{${n}}`,breve:n=>`\\breve{${n}}`,check:n=>`\\check{${n}}`},Co={upright:n=>`\\mathrm{${n}}`,italic:n=>`\\mathit{${n}}`,bold:n=>`\\mathbf{${n}}`,script:n=>`\\mathscr{${n}}`,fraktur:n=>`\\mathfrak{${n}}`,doublestruck:n=>`\\mathbb{${n}}`,blackboard:n=>`\\mathbb{${n}}`,calligraphic:n=>`\\mathcal{${n}}`,gothic:n=>`\\mathfrak{${n}}`,sansserif:n=>`\\mathsf{${n}}`,monospace:n=>`\\mathtt{${n}}`},Mo=class{constructor(e,i){this.level=-1;this.dictionary=e,this.options=i}wrap(e,i){if(e===null)return"";if(i===void 0)return this.wrapString(this.serialize(e),this.options.groupStyle(e,this.level+1));if(typeof e=="number"||mi(e)){let r=O(e);return r!==null&&r<0&&i>275?this.wrap(e):this.serialize(e)}let t=x(e);if(typeof t=="string"&&t!=="Delimiter"&&t!=="Subscript"){let r=this.dictionary.ids.get(t);if(r&&(r.kind==="symbol"||r.kind==="expression"||r.kind==="prefix"||r.kind==="infix"||r.kind==="postfix")&&r.precedence<i)return this.wrapString(this.serialize(e),this.options.applyFunctionStyle(e,this.level))}return this.serialize(e)}wrapShort(e){if(e===null)return"";let i=this.serialize(e);if(C(e)!==null||x(e)==="Delimiter"&&j(e)===1||gn(e)&&!/^(-|\.)/.test(i))return i;let r=x(e);return r!=="Add"&&r!=="Negate"&&r!=="Subtract"&&r!=="PlusMinus"&&r!=="Multiply"?i:this.wrapString(i,this.options.groupStyle(e,this.level+1))}wrapString(e,i,t){if(i==="none")return e;t??(t="()");let r=t?.[0]??".",o=t?.[1]??".";return r==='"'?r="``":r==="|"?r="\\lvert":r=$i[r]??r,o==='"'?o="''":o==="|"?o="\\rvert":o=$i[o]??o,r==="."&&o==="."?e:((r==="."||o===".")&&i==="normal"&&(i="scaled"),i==="scaled"?`\\left${r}${e}\\right${o}}`:i==="big"?`${`\\Bigl${r}`}${e}${`\\Bigr${o}`})`:r+e+o)}wrapArguments(e){return this.wrapString((B(e)??[]).map(i=>this.serialize(i)).join(", "),this.options.applyFunctionStyle(e,this.level))}serializeSymbol(e,i){return typeof e=="string"||st(e),i?.kind==="function"?Ao(C(e)??"")??"":i?.serialize?.(this,e)??Ao(C(e))??""}serializeFunction(e,i){if(i?.serialize)return i.serialize(this,e);let t=x(e);if(typeof t=="string")return Ao(t,"auto")+this.wrapArguments(e);if(x(t)==="InverseFunction"||x(t)==="Derivative")return this.serializeFunction(t,this.dictionary.ids.get(x(t)))+this.wrapArguments(e);let r=B(e)??[];if(r.length===1)return v([this.serialize(r[0]),"\\rhd",this.wrapString(this.serialize(t),this.options.applyFunctionStyle(e,this.level))]);let o=this.options.applyFunctionStyle(e,this.level);return v(["\\operatorname{apply}",this.wrapString(this.serialize(t)+", "+this.serialize(["List",...r]),o)])}serializeDictionary(e){return`\\left\\lbrack\\begin{array}{lll}${Object.keys(e).map(i=>`\\textbf{${i}} & \\rightarrow & ${this.serialize(e[i])}`).join("\\\\")}\\end{array}\\right\\rbrack`}serialize(e){if(e==null)return"";this.level+=1;try{let i=(()=>{let t=Ma(e,this.options);if(t)return t;let r=Z(e);if(r!==null)return`\\text{${r}}`;let o=pi(e);if(o!==null)return this.serializeDictionary(o);let s=C(e);if(s!==null)return this.serializeSymbol(e,this.dictionary.ids.get(s));let a=kn(e);if(a){let l=this.dictionary.ids.get(a);return this.serializeFunction(e,l)}if(x(e)!==null)return this.serializeFunction(e);throw Error(`Syntax error ${e?JSON.stringify(e):""}`)})();return this.level-=1,i??""}catch{}return this.level-=1,""}applyFunctionStyle(e,i){return this.options.applyFunctionStyle(e,i)}groupStyle(e,i){return this.options.groupStyle(e,i)}rootStyle(e,i){return this.options.rootStyle(e,i)}fractionStyle(e,i){return this.options.fractionStyle(e,i)}logicStyle(e,i){return this.options.logicStyle(e,i)}powerStyle(e,i){return this.options.powerStyle(e,i)}numericSetStyle(e,i){return this.options.numericSetStyle(e,i)}};function ud(n){let e=n.match(/^([^_]+)/)?.[1]??"",i=cn.findIndex(s=>e===s[0]);if(i>=0)return[cn[i][1],n.substring(cn[i][0].length)];let t={zero:"0",one:"1",two:"2",three:"3",four:"4",five:"5",six:"6",seven:"7",eight:"8",nine:"9",ten:"10"};if(i=Object.keys(t).findIndex(s=>n.startsWith(s)),i>=0){let s=Object.keys(t)[i];return[t[s],n.substring(s.length)]}let r=n.codePointAt(0);if(i=cn.findIndex(s=>s[2]===r),i>=0)return[cn[i][1],n.substring(1)];let o={plus:"+",minus:"-",pm:"\\pm",ast:"\\ast",dag:"\\dag",ddag:"\\ddag",hash:"\\#",bottom:"\\bot",top:"\\top",bullet:"\\bullet",circle:"\\circ",diamond:"\\diamond",times:"\\times",square:"\\square",star:"\\star"};if(i=Object.keys(o).findIndex(s=>e===s),i>=0){let s=Object.keys(o)[i];return[o[s],n.substring(s.length)]}return[e,n.substring(e.length)]}function ld(n){let[e,i]=ud(n),t=[];for(;i.length>0;){let o=i.match(/^_([a-zA-Z]+)(.*)/);if(!o||!wo[o[1]])break;t.push(o[1]),i=o[2]}let r=[];for(;i.length>0;){let o=i.match(/^_([a-zA-Z]+)(.*)/);if(!o||!Co[o[1]])break;r.push(o[1]),i=o[2]}return[e,t,r,i]}function hr(n,e=!0,i="auto"){let[t,r,o,s]=ld(n);for(let a of r)wo[a]&&(t=wo[a](t));if(e){let a=[],l=[],u=t.match(/^([^\d].*?)(\d+)$/);for(u&&(l.push(u[2]),t=u[1]);s.length>0;)if(s.startsWith("__")){let[f,d]=hr(s.substring(2),!1,"none");a.push(f),s=d}else if(s.startsWith("_")){let[f,d]=hr(s.substring(1),!1,"none");l.push(f),s=d}else break;a.length>0&&(t=`${t}${Li("^",a.join(","))}`),l.length>0&&(t=`${t}${Li("_",l.join(","))}`)}for(let a of o)Co[a]&&(t=Co[a](t));if(o.length===0&&i!=="none")switch(i){case"auto":rr(t)>1&&(t=`\\mathrm{${t}}`);break;case"operator":t=`\\operatorname{${t}}`;break;case"italic":t=`\\mathit{${t}}`;break;case"upright":t=`\\mathrm{${t}}`;break}return[t,s]}function Ao(n,e="auto"){if(n===null)return null;if(Ci.test(n))return n;let i=n.match(/^(_+)(.*)/);if(i){let[o,s]=hr(i[2],!0,"none");return`\\operatorname{${"\\_".repeat(i[1].length)+o+s}}`}let[t,r]=hr(n,!0,e);return r.length>0?`\\operatorname{${n}}`:t}function qa(n,e,i){if(i.invisibleMultiply&&(!/#1/.test(i.invisibleMultiply)||!/#2/.test(i.invisibleMultiply)))throw Error("Expected 2 arguments (#1 and #2) for invisibleMultiply");return new Mo(e,i).serialize(n)}var F=class{constructor(e,i){this.engine=e,i?.latex!==void 0&&(this.verbatimLatex=i.latex)}valueOf(){return this.symbol==="True"?!0:this.symbol==="False"?!1:this.symbol==="NaN"?NaN:this.symbol==="PositiveInfinity"?1/0:this.symbol==="NegativeInfinity"?-1/0:typeof this.string=="string"?this.string:typeof this.symbol=="string"?this.symbol:b(this)??this}toString(){if(this.symbol)return this.symbol;if(this.string)return this.string;let e=this.numericValue;if(e!==null){if(typeof e=="number"||e instanceof N)return e.toString();if(U(e))return`(${e[0].toString()}/${e[1].toString()})`;if(z(e))return`(${e[0].toString()}/${e[1].toString()})`;if(e instanceof Va.Complex){let i=e.im===1?"":e.im===-1?"-":e.im.toString();return e.re===0?i+"i":e.im<0?`${e.re.toString()}${i}i`:`(${e.re.toString()}+${i}i)`}}return this.head&&typeof this.head=="string"?this.head==="List"?`[${this.ops?.map(i=>i.toString())??""}]`:this.head==="Domain"?JSON.stringify(this.json):`${this.head}(${this.ops?.map(i=>i.toString()).join(", ")??""})`:JSON.stringify(this.json)}print(){let e=console.log;e?.(this.toString())}[Symbol.toPrimitive](e){if(e==="number"){let i=this.valueOf();return typeof i=="number"?i:null}return this.toString()}toJSON(){return this.json}toMathJson(e){let i={exclude:[],shorthands:["function","symbol","string","dictionary","number"],metadata:[],fractionalDigits:"max",repeatingDecimal:!0,prettify:!0};e&&((typeof e.shorthands=="string"&&e.shorthands==="all"||e.shorthands?.includes("all"))&&(i.shorthands=["function","symbol","string","dictionary","number"]),(typeof e.metadata=="string"&&e.metadata==="all"||e.metadata?.includes("all"))&&(i.metadata=["latex","wikidata"]),e.fractionalDigits==="auto"&&(i.fractionalDigits=-this.engine.precision));let t={...i,...e,fractionalDigits:i.fractionalDigits,shorthands:i.shorthands,metadata:i.metadata};return Ui(this.engine,this,t)}toLatex(e){let i=this.toMathJson(),t={imaginaryUnit:"\\imaginaryI",positiveInfinity:"\\infty",negativeInfinity:"-\\infty",notANumber:"\\operatorname{NaN}",decimalSeparator:this.engine.decimalSeparator,digitGroupSeparator:"\\,",exponentProduct:"\\cdot",beginExponentMarker:"10^{",endExponentMarker:"}",digitGroup:3,truncationMarker:"\\ldots",repeatingDecimal:"vinculum",fractionalDigits:"max",notation:"auto",avoidExponentsInRange:[-7,20],prettify:!0,invisibleMultiply:"",invisiblePlus:"",multiply:"\\times",missingSymbol:"\\blacksquare",applyFunctionStyle:_a,groupStyle:Sa,rootStyle:Ba,fractionStyle:Ta,logicStyle:Da,powerStyle:Ia,numericSetStyle:ka};return e?.fractionalDigits==="auto"&&(t.fractionalDigits=-this.engine.precision),typeof t.fractionalDigits=="number"&&t.fractionalDigits>this.engine.precision&&(t.fractionalDigits=this.engine.precision),t={...t,...e??{},fractionalDigits:t.fractionalDigits},!t.prettify&&this.verbatimLatex?this.verbatimLatex:qa(i,this.engine.indexedLatexDictionary,t)}get scope(){return null}is(e){return e==null?!1:this.isSame(this.engine.box(e))}get canonical(){return this}get latex(){return this.toLatex()}set latex(e){this.verbatimLatex=e}get symbol(){return null}get string(){return null}getSubexpressions(e){return Oo(this,e)}get subexpressions(){return this.getSubexpressions("")}get symbols(){let e=new Set;return xr(this,e),Array.from(e)}get unknowns(){let e=new Set;return br(this,e),Array.from(e)}get freeVariables(){let e=new Set;return gr(this,e),Array.from(e)}get errors(){return this.getSubexpressions("Error")}get ops(){return null}get nops(){return 0}get op1(){return this.engine.Nothing}get op2(){return this.engine.Nothing}get op3(){return this.engine.Nothing}get isValid(){return!0}get isPure(){return!1}get isExact(){return!1}get isConstant(){return!1}get isNaN(){}get isZero(){}get isNotZero(){}get isOne(){}get isNegativeOne(){}get isInfinity(){}get isFinite(){}get isEven(){}get isOdd(){}get isPrime(){}get isComposite(){}get numericValue(){return null}get sgn(){return null}get shape(){return[]}get rank(){return 0}subs(e,i){return i?.canonical===!0?this.canonical:this}map(e,i){if(!this.ops)return e(this);let t=i?.canonical??!0;return i?.recursive??!0?e(this.engine.function(this.head,this.ops.map(o=>o.map(e,i)),{canonical:t})):e(this.engine.function(this.head,this.ops.map(o=>e(o)),{canonical:t}))}solve(e){return null}replace(e){return null}has(e){return!1}isLess(e){}isLessEqual(e){}isGreater(e){}isGreaterEqual(e){}get isPositive(){}get isNonNegative(){}get isNegative(){}get isNonPositive(){}isCompatible(e,i){return!1}get description(){if(this.baseDefinition&&this.baseDefinition.description)return typeof this.baseDefinition.description=="string"?[this.baseDefinition.description]:this.baseDefinition.description}get url(){return this.baseDefinition?.url??void 0}get wikidata(){return this.baseDefinition?.wikidata??void 0}get complexity(){}get baseDefinition(){}get symbolDefinition(){}get functionDefinition(){}infer(e){return!1}bind(){}reset(){}get keys(){return null}get keysCount(){return 0}getKey(e){}hasKey(e){return!1}get value(){return this.N().valueOf()}set value(e){throw new Error(`Can't change the value of \\(${this.latex}\\)`)}get domain(){}set domain(e){throw new Error(`Can't change the domain of \\(${this.latex}\\)`)}get isNumber(){}get isInteger(){}get isRational(){}get isAlgebraic(){return!1}get isReal(){}get isExtendedReal(){}get isComplex(){}get isImaginary(){}get isExtendedComplex(){}simplify(e){return this}evaluate(e){return this.simplify()}N(e){return this.evaluate({numericMode:!0})}compile(e="javascript",i){if(e!=="javascript")return;i??(i={optimize:["simplify"]});let t=this;return i.optimize.includes("simplify")&&(t=t.simplify()),i.optimize.includes("evaluate")&&(t=t.evaluate()),va(t)}};function gr(n,e){if(n.head,n.symbol){let i=n.engine.lookupSymbol(n.symbol);if(i&&i.value!==void 0)return;let t=n.engine.lookupFunction(n.symbol);if(t&&(t.signature.evaluate||t.signature.N))return;e.add(n.symbol);return}if(n.head&&typeof n.head!="string"&&gr(n.head,e),n.ops)for(let i of n.ops)gr(i,e);if(n.keys)for(let i of n.keys)gr(n.getKey(i),e)}function xr(n,e){if(n.symbol){e.add(n.symbol);return}if(n.head&&typeof n.head!="string"&&xr(n.head,e),n.ops)for(let i of n.ops)xr(i,e);if(n.keys)for(let i of n.keys)xr(n.getKey(i),e)}function br(n,e){if(n.symbol){let i=n.symbol;if(i==="Unknown"||i==="Undefined"||i==="Nothing")return;let t=n.engine.lookupSymbol(i);if(t&&t.value!==void 0)return;let r=n.engine.lookupFunction(i);if(r&&(r.signature.evaluate||r.signature.N))return;e.add(i);return}if(n.head&&typeof n.head!="string"&&br(n.head,e),n.ops)for(let i of n.ops)br(i,e);if(n.keys)for(let i of n.keys)br(n.getKey(i),e)}function Oo(n,e){let i=!e||n.head===e?[n]:[];if(n.ops)for(let t of n.ops)i.push(...Oo(t,e));else if(n.keys)for(let t of n.keys)i.push(...Oo(n.getKey(t),e));return i}function Ro(n){if(n.head==="Negate")return[-1,n.op1];let e=n.numericValue;if(e===null)return[1,n];let i=n.engine;return typeof e=="number"&&e<0?[-1,i.number(-e)]:e instanceof N&&e.isNegative()?[-1,i.number(e.neg())]:e instanceof ht.Complex&&e.re<0?[-1,i.number(i.complex(-e.re,-e.im))]:U(e)&&e[0]<0?[-1,i.number([-e[0],e[1]])]:z(e)&&e[0]<0?[-1,i.number([-e[0],e[1]])]:[1,n]}function fd(n,e,i,t){let r=n.numericValue,o=n.engine;return typeof r=="number"?q(o)&&i?o.chop(i(o.bignum(r))):o.chop(e(r)):r instanceof N?o.chop(i?.(r)??e(r.toNumber())):U(r)?!q(o)||!i?o.chop(e(r[0]/r[1])):o.chop(i(o.bignum(r[0]).div(r[1]))):z(r)?i?o.chop(i(o.bignum(r[0]).div(o.bignum(r[1])))):o.chop(e(Number(r[0])/Number(r[1]))):r instanceof ht.Complex?!t||!le(o)?NaN:o.chop(t(r)):NaN}function ie(n,e,i,t){if((n?.numericValue??null)!==null)return n.engine.number(fd(n,e,i,t))}function dd(n,e,i,t,r){n.numericValue!==null&&e.numericValue;let o=n.engine,s=n.numericValue;U(s)&&(s=s[0]/s[1]);let a=e.numericValue;if(U(a)&&(a=a[0]/a[1]),!q(o)&&typeof s=="number"&&typeof a=="number")return i(s,a);let l;s instanceof N?l=s:z(s)?l=o.bignum(s[0]).div(o.bignum(s[1])):s!==null&&typeof s=="number"&&(l=o.bignum(s));let u;return a instanceof N?u=a:z(a)?l=o.bignum(a[0]).div(o.bignum(a[1])):a!==null&&typeof a=="number"&&(u=o.bignum(a)),l&&u?t?.(l,u)??i(l.toNumber(),u.toNumber()):s instanceof ht.Complex||a instanceof ht.Complex?!r||!le(o)?NaN:r(o.complex(s??l?.toNumber()??NaN),o.complex(a??u?.toNumber()??NaN)):NaN}function Rn(n,e,i,t,r){if(!(n.numericValue===null||e.numericValue===null))return n.engine.number(dd(n,e,i,t,r))}function Cn(n,e,i){return n==="all"?!0:n==="none"?!1:n==="first"?i===0:n==="rest"?i!==0:n==="last"?i===e:n==="most"?i!==e:!0}function gt(n,e){return e.every(i=>i instanceof F)?e.every(i=>i.isCanonical)?e:e.map(i=>i.canonical):e.map(i=>n.box(i))}function oe(n){return n.every(e=>e instanceof F)?n.every(e=>e instanceof F&&e.isCanonical)?n:n.map(e=>e.canonical):n.map(e=>e.canonical)}function Fn(n,e,i,t){if(i.symbol==="ComplexInfinity")return n.NaN;if(i.isZero)return n.One;if(i.isOne)return e;if(i.isNegativeOne)return n.inv(e);if(i.numericValue!==null&&e.numericValue!==null){if(e.isOne)return n.One;if(e.isZero){if(i.isPositive)return n.Zero;if(i.isNegative)return n.ComplexInfinity}if(i.isNegativeOne)return n.inv(e);let r=b(i);if(r===.5||r===-.5){if(J(e)){let s=n._fn("Sqrt",[e],t);return r>0?s:n._fn("Divide",[n.One,s],t)}return n._fn("Power",[e,i],t)}if(e.isInfinity){if(i.numericValue instanceof Gi.Complex){let o=i.numericValue.re;if(o===0)return n.NaN;if(o<0)return n.Zero;if(o>0)return n.ComplexInfinity}if(e.isNegative){if(i.isInfinity)return n.NaN}else if(e.isPositive){if(i.isNegativeOne)return n.Zero;if(i.isInfinity)return i.isNegative?n.Zero:n.PositiveInfinity}}if(i.isInfinity&&(e.isOne||e.isNegativeOne))return n.NaN}if(e.head==="Power"&&e.op1.isReal){let r=V(i);if(r!==null){let o=V(e.op2);if(o!==null)return n.pow(e.op1,n.number(r*o))}if(e.op1.isNonNegative){let o=J(i);if(o){let s=J(e.op2);if(s)return n.pow(e.op1,n.number(G(o,s)))}}}return e.head==="Power"?n._fn("Power",[e.op1,n.mul(e.op2,i)],t):n._fn("Power",[e,i],t)}function $a(n,e,i){if(e.numericValue===null||i.numericValue===null)return;if(e.numericValue instanceof Gi.Complex)return i.numericValue instanceof Gi.Complex?n.number(e.numericValue.pow(i.numericValue)):n.number(e.numericValue.pow(b(i)??NaN));if(i.numericValue instanceof Gi.Complex){let s=b(e)??null;return s!==null?n.number(n.complex(s).pow(i.numericValue)):void 0}let t=cd(i);if(q(n)||e.numericValue instanceof N||i.numericValue instanceof N){let s=He(e),a=He(i);if(!s||!a)return;if(t===2)return s.isNeg()?le(n)?n.number(n.complex(0,s.neg().sqrt().toNumber())):n.NaN:n.number(s.sqrt());if(!a.isInteger()&&s.isNeg()){if(!le(n))return n.NaN;let l=n.complex(s.toNumber()),u=n.complex(a.toNumber());return n.number(l.pow(u))}return n.number(s.pow(a))}let r=b(i)??NaN,o=b(e)??NaN;if(t===2)return o<0?le(n)?n.mul(n.I,n.number(Math.sqrt(-o))):n.NaN:n.number(Math.sqrt(o));if(!Number.isInteger(r)&&o<0){if(!le(n))return n.NaN;let s=n.complex(o),a=n.complex(r);return n.number(s.pow(a))}return n.number(Math.pow(o,r))}function Pn(n,e,i,t){if(t!=="simplify"&&e.symbol==="ExponentialE"&&i instanceof Gi.Complex){let r=i.im,o=i.re,s;if(o===0)s=this.number(this.complex(Math.cos(r),Math.sin(r)));else{if(r===0)return this.number(Math.exp(o));{let a=Math.exp(o);s=this.number(this.complex(a*Math.cos(r),a*Math.sin(r)))}}return t==="N"?s.N():s}if(e.head==="Divide")return n.function("Divide",[Pn(n,e.op1,i,t)??n._fn("Power",[e.op1,i]),Pn(n,e.op2,i,t)??n._fn("Power",[e.op2,i])]);if(e.head==="Multiply"){let r=q(n)?[BigInt(1),BigInt(1)]:[1,1],o=r,s=[];for(let a of e.ops){let l=J(a);if(l)r=G(r,l);else{let u=Po(a);u?o=G(o,u):s.push(a)}}if(!X(r)||!X(o)){let a=Pn(n,n.number(r),i,t),l=Pn(n,n.number(o),n.div(i,n.number(2)),t),u=n.mul(...s),f=Pn(n,u,i,t)??n._fn("Power",[u,i]);if(a&&l&&f)return n.mul(a,l,f)}}if(e.head==="Power"){if(V(e.op2)===-1&&V(i)===-1)return e.op1;let r=J(e.op2),o=J(i);if(r&&o){let s=G(r,o);return n.pow(e.op1,s)}if(t==="N"){let s=b(e.op2),a=b(i);if(s!==null&&a!==null){let l=s*a;return l===0?n.One:l===1?e.op1:n.pow(e.op1,l)}}}if(t!=="N"&&e.numericValue!==null&&e.isInteger){if(e.isOne)return n.One;if(V(i))return $a(n,e,i);let o=J(i);if(o){let[s,a]=[Le(o),xn(o)];if((s===1||s===-1)&&(a%2===0||a===3)){if(q(n)||e.numericValue instanceof N){let l=mt(e);if(a%2===0&&l<0&&!le(n))return n.NaN;let u=l<0?a%2===0?n.I:n.NegativeOne:n.One,[f,d]=hi(l>0?l:-l,a);if(d===BigInt(1)&&f===BigInt(1))return u;if(f!==BigInt(1))return d===BigInt(1)?n.mul(u,n.number(s>=0?f:[BigInt(1),f])):n.mul(u,n.number(f),n.pow(n.number(d),i))}else if(typeof e.numericValue=="number"){if(e.numericValue<0&&a%2===0&&!le(n))return n.NaN;let[l,u]=Qn(Math.abs(e.numericValue),a),f=e.numericValue<0?a%2===0?n.I:n.NegativeOne:n.One;if(u===1&&l===1)return f;if(l!==1)return u===1?n.mul(f,n.number(s>=0?l:[1,l])):n.mul(f,n.number(l),n.pow(n.number(u),i))}}return e.isNegative?le?n.mul(n.I,n.box(["Sqrt",n.neg(e)])):n.NaN:void 0}}if(t!=="N"&&M(e.numericValue)){let[r,o]=e.numericValue;return n.div(n.pow(n.number(r),i),n.pow(n.number(o),i))}if(t!=="simplify"&&e.numericValue!==null&&i.numericValue!==null)return $a(n,e,i)}function zi(n,e,i){if(e.isOne)return n.One;if(e.isZero)return n.Zero;if(e.isNegativeOne)return le(n)?n.I:n.NaN;if(e.isNegative&&!le(n))return n.NaN;let t=J(e);if(i==="N"||i==="evaluate"&&!t)return ie(e,o=>o<0?n.complex(o).sqrt():Math.sqrt(o),o=>o.isNeg()?n.complex(o.toNumber()).sqrt():o.sqrt(),o=>o.sqrt());let r=V(e);if(r!==null){let[o,s]=Qn(Math.abs(r),2);return o===1?n._fn("Sqrt",[e]):r<0?s===1?n.number(n.complex(0,o)):n.mul(n.number(n.complex(0,o)),n.sqrt(n.number(s))):s===1?n.number(o):n.mul(n.number(o),n.sqrt(n.number(s)))}if(t){if(U(t)&&!q(n)){let[o,s]=t;if(Math.abs(o)<Number.MAX_SAFE_INTEGER&&s<Number.MAX_SAFE_INTEGER){let[a,l]=Qn(Math.abs(o),2),[u,f]=Qn(s,2);if(o<0)return n.mul(n.number([a,u]),n.sqrt(n.number([l,f])),n.I);let d=n.number([a,u]);return d.isOne?n._fn("Sqrt",[n.number([l,f])]):n.mul(d,n.sqrt(n.number([l,f])))}}if(z(t)||q(n)){let o=R(t[0]),[s,a]=hi(o>0?o:-o,2),[l,u]=hi(R(t[1]),2);if(o<0)return n.mul(n.number([s,l]),n.sqrt(n.number([a,u])),n.I);let f=n.number([s,l]);return f.isOne?n._fn("Sqrt",[n.number([a,u])]):n.mul(f,n.sqrt(n.number([a,u])))}}}function cd(n){if(typeof n.numericValue=="number"){let t=1/n.numericValue;return Number.isInteger(t)?t:null}if(n.numericValue instanceof N){let t=n.engine._BIGNUM_ONE.div(n.numericValue);return t.isInt()?t.toNumber():null}if(!M(n.numericValue))return null;let[e,i]=[Le(n.numericValue),xn(n.numericValue)];return e!==1&&e!==-1?null:e*i}function Zi(n){return n.head==="Sqrt"||n.head==="Power"&&b(n.op2)===.5}function Po(n){return Zi(n)?J(n.op1)??null:null}var Ln=class{constructor(e,i,t){this.options=t;this._terms=[];this._hasInfinity=!1;this._hasZero=!1;this._isCanonical=!0;if(t=t?{...t}:{},"canonical"in t||(t.canonical=!0),this._isCanonical=t.canonical,this.engine=e,this._sign=1,this._rational=q(e)?[BigInt(1),BigInt(1)]:[1,1],this._rationalSqrt=this._rational,this._complex=Lo.Complex.ONE,this._bignum=e._BIGNUM_ONE,this._number=1,i)for(let r of i)this.addTerm(r)}get isEmpty(){return this._isCanonical?this._terms.length===0&&this._hasInfinity===!1&&this._hasZero===!1&&this._sign===1&&this._number===1&&this._complex.re===1&&this._complex.im===0&&this._bignum.eq(this.engine._BIGNUM_ONE)&&X(this._rational)&&X(this._rationalSqrt):this._terms.length===0}addTerm(e){if(e.isCanonical,e.head==="Multiply"){for(let o of e.ops)this.addTerm(o);return}if(this._isCanonical){if(e.symbol==="Nothing")return;if(e.numericValue!==null){if(e.isOne)return;if(e.isZero){this._hasZero=!0;return}if(e.isNegativeOne){this._sign*=-1;return}if(e.isInfinity){this._hasInfinity=!0,e.isNegative&&(this._sign*=-1);return}let s=e.numericValue;if(typeof s=="number"){s<0&&(this._sign*=-1,s=-s),Number.isInteger(s)?this._rational=G(this._rational,[s,1]):q(this.engine)?this._bignum=this._bignum.mul(s):this._number*=s;return}if(s instanceof N){s.isNegative()&&(this._sign*=-1,s=s.neg()),s.isInteger()?this._rational=G(this._rational,[R(s),BigInt(1)]):q(this.engine)?this._bignum=this._bignum.mul(s):this._number*=s.toNumber();return}if(s instanceof Lo.Complex){this._complex=this._complex.mul(s);return}if(M(s)){this._rational=G(this._rational,s),lt(this._rational)&&(this._sign*=-1,this._rational=ue(this._rational));return}}let o=Po(e);if(o){this._rationalSqrt=G(this._rationalSqrt,o);return}}let i=e;if(this._isCanonical){let o;[o,i]=je(e),this._rational=G(this._rational,o),lt(this._rational)&&(this._sign*=-1,this._rational=ue(this._rational))}if(i.numericValue!==null&&i.isOne)return;let t=[1,1];if(i.head==="Power"){let o=J(i.op2);if(o){let s=i.op2;if(t=o,i=i.op1,i.head==="Multiply"){for(let a of i.ops)this.addTerm(this.engine._fn("Power",[a,s]));return}else if(i.head==="Divide"){this.addTerm(this.engine._fn("Power",[i.op1,s])),this.addTerm(this.engine._fn("Power",[i.op2,this.engine.number(ue(t))]));return}}}else i.head==="Divide"&&(this.addTerm(i.op1),t=[-1,1],i=i.op2);let r=!1;for(let o of this._terms)if(o.term.isSame(i)){o.exponent=An(o.exponent,t),r=!0;break}r||this._terms.push({term:i,exponent:t})}unitTerms(e){let i=this.engine;if(e==="numeric"){if(!le(i)&&this._complex.im!==0)return null;if(q(i)){let l=i._BIGNUM_ONE;if(X(this._rational)||(z(this._rational)?l=i.bignum(this._rational[0].toString()).div(i.bignum(this._rational[1].toString())):l=i.bignum(this._rational[0]).div(this._rational[1])),l=l.mul(this._bignum).mul(this._sign*this._number),this._complex.im!==0){let u=this._complex.mul(l.toNumber());return u.equals(1)?[]:[{exponent:[1,1],terms:[i.number(u)]}]}return l=l.mul(this._complex.re),l.equals(1)?[]:[{exponent:[1,1],terms:[i.number(l)]}]}let a=1;if(X(this._rational)||(z(this._rational)?a=Number(this._rational[0])/Number(this._rational[1]):a=this._rational[0]/this._rational[1]),a*=this._sign*this._number*this._bignum.toNumber(),this._complex.im!==0){let l=this._complex.mul(a);return l.equals(1)?[]:[{exponent:[1,1],terms:[i.number(l)]}]}return a*=this._complex.re,a===1?[]:[{exponent:[1,1],terms:[i.number(a)]}]}let t=[],r=[];if(this._hasInfinity&&r.push(i.PositiveInfinity),this._rationalSqrt=Ze(this._rationalSqrt),!X(this._rationalSqrt)){let[a,l]=this._rationalSqrt,u=i.sqrt(i.number(a)),f=i.sqrt(i.number(l));if(f.isOne){let d=J(u);d?this._rational=G(this._rational,d):r.push(u)}else u.isInteger&&f.isInteger?(this._rational=G(G(this._rational,u),i.inv(f)),r.push(i._fn("Sqrt",[i.div(u.op1,f.op1)]))):Zi(u)&&Zi(f)?r.push(i._fn("Sqrt",[i.div(u.op1,f.op1)])):r.push(i._fn("Divide",[u,f]))}(this._complex.re!==1||this._complex.im!==0)&&(this._complex.im===0?this._number*=Math.abs(this._complex.re):r.push(i.number(this._complex)));let o=this._sign*this._number,s=this._bignum;return this._rational=Ze(this._rational),X(this._rational)||(e==="rational"?(Le(this._rational)!==1&&(z(this._rational)?s=s.mul(i.bignum(this._rational[0])):o*=this._rational[0]),xn(this._rational)!==1&&t.push({exponent:[-1,1],terms:[i.number(this._rational[1])]})):o===-1?(r.push(i.number(ue(this._rational))),o=1):r.push(i.number(this._rational))),s.equals(i._BIGNUM_ONE)?o!==1&&r.push(i.number(o)):r.push(i.number(s.mul(o))),r.length>0&&t.push({exponent:[1,1],terms:r}),t}groupedByDegrees(e){e??(e={}),"mode"in e||(e.mode="expression");let i=this.engine;if(e.mode==="numeric"){if(this._complex.im!==0&&!le(i))return null;if(this._hasInfinity)return[{exponent:[1,1],terms:[i.PositiveInfinity]}]}let t=this.unitTerms(e.mode??"expression");if(t===null)return null;for(let r of this._terms){let o=Ze(r.exponent);if(o[0]===0)continue;let s=!1;for(let a of t)if(o[0]===a.exponent[0]&&o[1]===a.exponent[1]){a.terms.push(r.term),s=!0;break}s||t.push({exponent:o,terms:[r.term]})}return t}asExpression(e="evaluate"){let i=this.engine;if(this._hasInfinity){if(this._hasZero)return i.NaN;if(this._terms.length===0)return Le(this._rational)>0?i.PositiveInfinity:i.NegativeInfinity}if(this._hasZero)return i.Zero;let t=this.groupedByDegrees({mode:e==="N"?"numeric":"expression"});if(t===null)return i.NaN;let r=Fo(i,t);return r.length===0?i.One:r.length===1?r[0]:this.engine._fn("Multiply",r)}asNumeratorDenominator(){if(this._hasZero)return[this.engine.Zero,this.engine.One];if(this._hasInfinity)return[this.engine.NaN,this.engine.NaN];let e=this.groupedByDegrees({mode:"rational"});if(e===null)return[this.engine.NaN,this.engine.NaN];let i=[],t=[];for(let u of e)u.exponent[0]>=0?i.push(u):t.push({exponent:ue(u.exponent),terms:u.terms});let r=this.engine,o=Fo(r,i),s=r.One;o.length===1?s=o[0]:o.length>0&&(s=r._fn("Multiply",o));let a=Fo(r,t),l=r.One;return a.length===1?l=a[0]:a.length>0&&(l=r._fn("Multiply",a)),[s,l]}asRationalExpression(){let[e,i]=this.asNumeratorDenominator();if(i.numericValue!==null){if(i.isOne)return e;if(i.isNegativeOne)return this.engine.neg(e)}return this.engine._fn("Divide",[e,i])}};function Ua(n){if(X(n))return 0;let[e,i]=[Le(n),xn(n)];return e>0&&Number.isInteger(e/i)?1:e>0?2:Number.isInteger(e/i)?3:4}function md(n,e){let i=Ua(n.exponent),t=Ua(e.exponent);if(i!==t)return i-t;let[r,o]=[Le(n.exponent),xn(n.exponent)],[s,a]=[Le(e.exponent),xn(e.exponent)];return r/o-s/a}function Fo(n,e){let i=e.sort(md).map(t=>{let r=ne(t.terms,"Multiply"),o=r.length<=1?r[0]:n._fn("Multiply",[...r].sort(fn));return n.pow(o,t.exponent)});return ne(i,"Multiply")??i}function Je(n){return n.symbol?.startsWith("_")??(n.head==="Wildcard"||n.head==="WildcardSequence"||n.head==="WildcardOptionalSequence")}function We(n){if(n.symbol?.startsWith("_"))return n.symbol;if(n.nops===1){let e=n.op1;if(n.head==="Wildcard")return`_${e}`;if(n.head==="WildcardSequence")return`__${e}`;if(n.head==="WildcardOptionalSequence")return`___${e}`}return n.head==="Wildcard"?"_":n.head==="WildcardSequence"?"__":n.head==="WildcardOptionalSequence"?"___":null}var Ye=class n extends F{constructor(e,i,t){super(e,t),this._string=i.normalize(),e._register(this)}get json(){return`'${this._string}'`}get hash(){return Te("String"+this._string)}get head(){return"String"}get isPure(){return!0}get isCanonical(){return!0}set isCanonical(e){}get domain(){return this.engine.Strings}get complexity(){return 19}get string(){return this._string}isEqual(e){return e.string===this._string}isSame(e){return e.string===this._string}match(e,i){return dn(e)||(e=this.engine.box(e,{canonical:!1})),Je(e)?{[We(e)]:this}:e instanceof n&&this._string===e._string?{}:null}};function xt(n,e,i){let t=[];for(let r of e){let o=qo(r,n,i);o!==null&&(t.some(s=>s.isEqual(o))||t.push(o))}return t}function bt(n,e){let i=[];for(let t of e)i.push(Ga(n,t));return i.sort((t,r)=>r.priority-t.priority)}function yr(n,e){if(typeof e=="string"){let i=n.parse(e,{canonical:!1});return i=i.map(t=>t.symbol&&t.symbol.length===1?n.symbol("_"+t.symbol):t,{canonical:!1}),i}return n.box(e,{canonical:!1})}function pd(n,e){let[i,t]=e.split(/->|\\to/).map(r=>r.trim());return Ga(n,{match:yr(n,i),replace:yr(n,t),priority:0,condition:void 0,id:i+" -> "+t})}function Ga(n,e){if(typeof e=="string")return pd(n,e);let{match:i,replace:t,condition:r,priority:o,id:s}=e,a;if(typeof r=="string"){let f=yi(r);if(f){let d=n.parse(f,{canonical:!1});a=(c,m)=>d.subs(c).evaluate()?.symbol==="True"}}else a=r;let l=yr(n,i),u=typeof t=="function"?"()":yr(n,t);return{match:l,replace:typeof t=="function"?t:u,priority:o??0,condition:a,exact:e.exact??!0,id:s??l.latex+ +" -> "+(typeof u=="string"?u:u.latex)}}function qo(n,e,i,t){let{match:r,replace:o,condition:s,id:a}=n,l=!1;if(e.ops&&t?.recursive){let f=e.engine,c=e.ops.map(m=>{let g=qo(n,m,{},t);return g&&(l=!0),g??m});l&&(e=f.function(e.head,c,{canonical:!1}))}let u=e.match(r,{substitution:i,...t,exact:n.exact??!0});return u===null?l?e:null:typeof s=="function"&&!s(u,e.engine)?null:typeof o=="function"?o(e,u):o.subs(u,{canonical:e.isCanonical})}function Er(n,e,i){let t=i?.iterationLimit??1,r=0,o=i?.once??!1;e instanceof Set||(e=n.engine.rules(Array.isArray(e)?e:[e]));let s=!1,a=!1;try{for(;!s&&r<t;){s=!0;let l=[];for(let u of e){let f=qo(u,n,{},i);if(f!==null&&f!==n){if(o)return f;l.includes(u.id)&&console.error("Rule cycle detected",l.reduce((d,c)=>d+" -> "+c,"")),l.push(u.id),s=!1,a=!0,n=f}}r+=1}}catch(l){console.error(l)}return a?n:null}var Ha=he(fe(),1);var za=he(fe(),1);function Za(n){if(typeof n=="number"&&!isNaN(n))return isFinite(n)?Number.isInteger(n)?n>0?"PositiveIntegers":n<0?"NegativeIntegers":"Integers":n>0?"PositiveNumbers":n<0?"NegativeNumbers":"RealNumbers":"ExtendedRealNumbers";if(n instanceof N)return n.isNaN()?"Numbers":n.isFinite()?n.isInteger()?n.isPositive()?"PositiveIntegers":n.isNegative()?"NegativeIntegers":"Integers":n.isPositive()?"PositiveNumbers":n.isNegative()?"NegativeNumbers":"RealNumbers":"ExtendedRealNumbers";if(n instanceof za.Complex){let e=n;return e.im,e.re===0?"ImaginaryNumbers":"ComplexNumbers"}if(M(n)){let[e,i]=n;return typeof e!="number"||!Number.isNaN(e)&&Number.isNaN(i),"RationalNumbers"}return"Numbers"}function yt(n){n.ctor;let e=n.engine,i=n.params,t=[],r=[],o,s=e.domain(i[i.length-1]);for(let a of i.slice(0,-1))if(x(a)==="OptArg"){if(r.length>0)throw Error(`Unexpected multiple OptArg in domain ${n}`);if(o)throw Error(`Unexpected OptArg after VarArg in domain ${n}`);if(j(a)===0)throw Error(`Unexpected empty OptArg in domain ${n}`);for(let l of B(a)){if(x(l)==="OptArg")throw Error(`Unexpected OptArg of OptArg in domain ${n}`);if(x(l)==="VarArg")throw Error(`Unexpected superfluous OptArg of VarArg in domain ${n}`);r.push(e.domain(l))}}else if(x(a)==="VarArg"){let l=B(a);if(l.length!==1)throw Error(`Invalid VarArg in domain ${n}`);if(x(l[0])==="OptArg")throw Error(`Unexpectedf VarArg of OptArg in domain ${n}`);if(x(l[0])==="VarArg")throw Error(`Unexpected VarArg of VarArg in domain ${n}`);o=e.domain(l[0])}else{if(r.length>0)throw Error(`Unexpected required parameter after OptArg in domain ${n}`);if(o)throw Error(`Unexpected required parameter after VarArg in domain ${n}`);t.push(e.domain(a))}return[t,r,o,s]}function Et(n){let[e,i,t,r]=yt(n);return{params:e.map(o=>o.json),optParams:i.map(o=>o.json),restParam:t?.json,result:r.json}}function vr(n,e){let i=[...e.params];return e.optParams.length>0&&i.push(["OptArg",...e.optParams]),e.restParam&&i.push(["VarArg",e.restParam]),typeof e.result=="function"?i.push(e.result(n,[])??n.symbol("Undefined")):i.push(e.result),n.domain(["FunctionOf",...i])}var ji=["InvalidDomain","DictionaryOf","FunctionOf","ListOf","TupleOf","Intersection","Union","OptArg","VarArg"],Nr={Functions:["FunctionOf",["VarArg","Anything"],"Anything"],NumericFunctions:["FunctionOf","Numbers",["VarArg","Numbers"],"Numbers"],RealFunctions:["FunctionOf","ExtendedRealNumbers",["VarArg","ExtendedRealNumbers"],"ExtendedRealNumbers"],LogicOperators:["FunctionOf","Booleans",["VarArg","Booleans"],"Booleans"],Predicates:["FunctionOf","Anything",["VarArg","Anything"],"Booleans"],RelationalOperators:["FunctionOf","Anything","Anything","Booleans"]},ei={Anything:[],Values:"Anything",Domains:"Anything",Void:"NothingDomain",NothingDomain:["Booleans","Strings","Symbols","Tuples","Lists","Dictionaries","ImaginaryNumbers","TranscendentalNumbers","PositiveIntegers","NegativeIntegers","NonPositiveIntegers","NonNegativeIntegers","PositiveNumbers","NegativeNumbers","NonPositiveNumbers","NonNegativeNumbers","LogicOperators","RelationalOperators"],Booleans:"Values",Strings:"Values",Symbols:"Values",Collections:"Values",Lists:"Collections",Dictionaries:"Collections",Sequences:"Collections",Tuples:"Collections",Sets:"Collections",Functions:"Anything",Predicates:"Functions",LogicOperators:"Predicates",RelationalOperators:"Predicates",NumericFunctions:"Functions",RealFunctions:"NumericFunctions",Numbers:"Values",ExtendedComplexNumbers:"Numbers",ComplexNumbers:"ExtendedComplexNumbers",ImaginaryNumbers:"ComplexNumbers",ExtendedRealNumbers:"ExtendedComplexNumbers",RealNumbers:["ComplexNumbers","ExtendedRealNumbers"],PositiveNumbers:"NonNegativeNumbers",NonNegativeNumbers:"RealNumbers",NonPositiveNumbers:"NegativeNumbers",NegativeNumbers:"RealNumbers",TranscendentalNumbers:"RealNumbers",AlgebraicNumbers:"RealNumbers",RationalNumbers:"AlgebraicNumbers",Integers:"RationalNumbers",PositiveIntegers:"NonNegativeIntegers",NonNegativeIntegers:"Integers",NonPositiveIntegers:"NegativeIntegers",NegativeIntegers:"Integers"},vt;function Ei(n){return n?ei[n]!==void 0:!1}function Qe(n){if(vt||(vt={},Qe("Void")),vt[n])return Array.from(vt[n]);let e=[];if(typeof n!="string"||!ei[n]){if(!Array.isArray(n))throw Error(`Unknown domain literal ${n}`);if(!ji.includes(n[0]))throw Error(`Unknown domain constructor ${n[0]}`);return n[0]==="FunctionOf"?Qe("Functions"):n[0]==="TupleOf"?Qe("Tuples"):n[0]==="ListOf"?Qe("Lists"):n[0]==="DictionaryOf"?Qe("Dictionaries"):n[0]==="OptArg"||n[0]==="VarArg"?Qe(n[1]):n[0]==="Literal"?["Anything"]:n[0]==="Union"?["Anything"]:n[0]==="Intersection"?["Anything"]:["Anything"]}if(typeof ei[n]=="string")e=[ei[n],...Qe(ei[n])];else if(Array.isArray(ei[n]))for(let i of ei[n])e.push(i),e.push(...Qe(i));return vt[n]=new Set(e),e}function ja(){let n={};for(let e of Object.keys(ei))n[e]={domain:"Domains",value:["Domain",e]};n.InvalidDomain={signature:{domain:["FunctionOf","Domains","Domains"],canonical:(e,i)=>e.domain(["InvalidDomain",i[0]])}};for(let e of["DictionaryOf","FunctionOf","ListOf","TupleOf"])n[e]={signature:{domain:["FunctionOf",["VarArg","Domains"],"Domains"],canonical:(i,t)=>i.domain([e,...t])}};for(let e of["OptArg","VarArg"])n[e]={signature:{domain:["FunctionOf","Domains","Domains"],canonical:(i,t)=>i.domain([e,t[0]])}};return n}var qn=class n extends F{constructor(e,i,t){if(i instanceof n,super(e,t),typeof i=="string"){if(!Ei(i))throw Error(`Unknown domain literal "${i}"`);this.base=i,this.ctor=null,this.params=[];return}if(!Array.isArray(i))throw Error("Expected a domain expression");if(!ji.includes(i[0]))throw Error(`Unknown domain constructor "${i[0]}`);let r=i[0];if(this.ctor=r,r==="OptArg"||r==="VarArg")throw Error(`Unexpected domain constructor "${r}" outside of FunctionOf`);if(this.params=i.slice(1).map(o=>o instanceof F?o.json:o),r==="FunctionOf"&&(this.base="Functions",e.strict&&yt(this)),r==="DictionaryOf"&&(this.base="Dictionaries"),r==="ListOf"&&(this.base="Lists"),r==="TupleOf"&&(this.base="Tuples"),r==="Covariant"||r==="Contravariant"||r==="Bivariant"||r==="Invariant"){let o=e.domain(i[1]);if(this.ctor=r,this.base=o.base,this.params=[o.json],i.length!==2)throw Error(`Invalid "${r}" in domain "${i}"`)}if(r==="Union"||r==="Intersection"){let o;if(r==="Union")for(let s of this.params)o=ni(o,e.domain(s));else for(let s of this.params)o=Nt(o,e.domain(s));this.base=o.base}}get isCanonical(){return!0}get canonical(){return this}get isValid(){return!0}get json(){return this.ctor?[this.ctor,...this.params]:this.base}get hash(){return this._hash===void 0&&(this._hash=Te(JSON.stringify(this.json))),this._hash}isCompatible(e,i="covariant"){let t=this.json,r=e instanceof n?e.json:e,o=Array.isArray(r)?r[0]:null;if(o){let s=r[1];if(o==="Covariant")return _e(t,s);if(o==="Contravariant")return _e(s,t);if(o==="Invariant")return!_e(s,t)&&!_e(t,s);if(o==="Bivariant")return _e(t,s)&&_e(s,t)}return i==="covariant"?_e(t,r):i==="contravariant"?_e(r,t):i==="bivariant"?_e(r,t)&&_e(t,r):!_e(r,t)&&!_e(t,r)}isEqual(e){return e instanceof n?this===e?!0:this.isCompatible(e,"invariant"):!1}isSame(e){return this.isEqual(e)}match(e,i){return dn(e)||(e=this.engine.box(e,{canonical:!1})),Je(e)?{[We(e)]:this}:e instanceof n&&this.isCompatible(e,"invariant")?{}:null}get head(){return"Domain"}get domain(){return this.engine.domain("Domains")}get isFunction(){return this.base==="Functions"}get isNumeric(){return this.isCompatible(this.engine.domain("Numbers"))}};function Nn(n){if(n instanceof qn)return!0;if(n instanceof F&&(n=n.json),typeof n=="string")return Ei(n);if(!Array.isArray(n)||n.length<=1)return!1;let e=n[0];return typeof e!="string"||!ji.includes(e)?!1:e==="ListOf"||e==="OptArg"||e==="VarArg"?n.length===2&&Nn(n[1]):e==="FunctionOf"||e==="TupleOf"||e==="Intersection"||e==="Union"?n.slice(1).every(Nn):n.every(i=>i!==null)}function _e(n,e){let[i,t]=_r([n],e);return!!(i&&t.length===0)}function _r(n,e){let i=n.shift(),t=typeof e=="string"?e:null;if(t==="Anything")return[!0,n];let r=typeof i=="string"?i:null;if(r&&t)return r===t?[!0,n]:[Qe(r).includes(t),n];if(t){let s=i[0];return s==="FunctionOf"?[t==="Functions",n]:s==="DictionaryOf"?[t==="Dictionaries",n]:s==="ListOf"?[t==="Lists",n]:s==="TupleOf"?[t==="Tuples",n]:[!0,n]}let o=e[0];if(o==="FunctionOf"){if(r==="Functions")return[!0,n];if(r)return[!1,n];if(i[0]!=="FunctionOf")return[!1,n];if(i.length===1&&e.length===1)return[!0,n];if(!_e(i[i.length-1],e[e.length-1]))return[!1,n];let s=i.slice(1,-1),a=e.slice(1,-1);for(let l=0;l<=s.length-1;l++){if(a.length===0)return(Array.isArray(s[l])?s[l][0]:null)!=="OptArg"?[!1,n]:[!0,n];{let u=!1;if([u,a]=_r(a,s[l]),!u)return[!1,n]}}return[a.length===0,n]}if(o==="Intersection")return[e.slice(1,-1).every(s=>_e(i,s)),n];if(o==="Union")return[e.slice(1,-1).some(s=>_e(i,s)),n];if(o==="OptArg")return r==="NothingDomain"?[!0,n]:_r([i,...n],e[1]);if(o==="VarArg"){let s=e[1];if(!_e(i,s))return[!1,n];i=n.shift();let a=!0;for(;n.length>0&&a;)[a,n]=_r(n,s),i=n.shift();return[!0,n]}if(o==="TupleOf"){if(!Array.isArray(i)||i[0]!=="TupleOf")return[!1,n];if(i.length>e.length)return[!1,n];for(let s=1;s<=e.length-1;s++)if(!i[s]||!_e(i[s],e[s]))return[!1,n];return[!0,n]}return console.error("Unexpected domain constructor "+o),[!1,n]}function ni(n,e){if(n==null)return e;if(e==null)return n;let i=[n.base,...Qe(n.base)],t=[e.base,...Qe(e.base)];for(;!t.includes(i[0]);)i.shift();return n.engine.domain(i[0])}function Nt(n,e){return n===void 0?e:e===void 0||_e(n.base,e.base)?n:_e(e.base,n.base)?e:n.engine.Void}var ce=class{constructor(e,i,t){if(!e.context)throw Error("No context available");this.name=i,this.wikidata=t.wikidata,this.description=t.description,this.url=t.url,this._engine=e,this.scope=e.context,this.name=i,this._flags=t.flags?_t(t.flags):void 0,this._domain=t.domain?e.domain(t.domain):void 0,this.inferredDomain=t.inferred??!1,this.constant=t.constant??!1,this.holdUntil=t.holdUntil??"evaluate",this.constant?(this._defValue=t.value,this._value=null):(t.value!==void 0?ar(t.value)?this._value=e.parse(t.value)??e.symbol("Undefined"):typeof t.value=="function"?this._value=e.box(t.value(e)??"Undefined"):t.value instanceof F?this._value=t.value:this._value=e.box(t.value):this._value=void 0,!this._value&&this._domain&&!t.flags&&(this._flags=Sr(this._domain))),this._value&&!this._domain&&(this._domain=this._value.domain,this.inferredDomain=!0)}update(e){e.wikidata&&(this.wikidata=e.wikidata),e.description&&(this.description=e.description),e.url&&(this.url=e.url);let i=e?.flags,t=e?.domain?this._engine.domain(e.domain):void 0;t&&(i={...Sr(t),...i??{}}),i&&(this._flags=_t(i)),t&&(this._domain=t,this.inferredDomain=!1),e.holdUntil&&(this.holdUntil=e.holdUntil),e.constant?(this.constant=e.constant,this._defValue=e.value,this._value=null):e.value&&(ar(e.value)?this._value=this._engine.parse(e.value)??this._engine.symbol("Undefined"):typeof e.value=="function"?this._value=this._engine.box(e.value(this._engine)??"Undefined"):e.value instanceof F?this._value=e.value:this._value=this._engine.box(e.value)),this._value&&!this._domain&&(this._domain=this._value.domain,this.inferredDomain=!0)}reset(){this.constant&&(this._value=null)}get value(){if(this._value===null){let e=this._engine;if(ar(this._defValue)?this._value=e.parse(this._defValue)??e.symbol("Undefined"):typeof this._defValue=="function"?this._value=e.box(this._defValue(e)??"Undefined"):this._defValue?this._value=e.box(this._defValue):this._value=void 0,this._value?.numericValue){let i=this._value.numericValue;!q(e)&&i instanceof N?this._value=e.number(i.toNumber()):!le(e)&&i instanceof Ha.Complex&&(this._value=e.NaN)}}return this._value??void 0}set value(e){if(this.constant)throw new Error(`The value of the constant "${this.name}" cannot be changed`);if(this._defValue,typeof e=="number")this._value=this._engine.number(e);else if(e){let i=this._engine.box(e);this.inferredDomain?(this._value=i,this._domain=ni(this._domain,i.domain)):!this._domain||!i.domain||i.domain?.isCompatible(this._domain)?this._value=i:this._value=void 0}else this._value=void 0;this._value!==void 0?this._flags=void 0:this._flags=Sr(this._domain)}get domain(){return this._domain??void 0}set domain(e){if(this.constant)throw new Error(`The domain of the constant "${this.name}" cannot be changed`);if(!this.inferredDomain)throw Error(`The domain of "${this.name}" cannot be changed because it has already been declared`);if(!e){this._defValue=void 0,this._value=void 0,this._flags=void 0,this._domain=void 0;return}if(e=this._engine.domain(e),this._domain&&!e.isCompatible(this._domain))throw Error(`The domain of "${this.name}" cannot be widened from "${this._domain.base}" to "${e.base}"`);if(this._value?.domain&&!this._value.domain.isCompatible(e))throw Error(`The domain of "${this.name}" cannot be changed to "${e.base}" because its value has a domain of "${this._value.domain.base}"`);this._domain=e,this._flags=void 0,this._value===void 0&&e.isNumeric&&(this._flags=Sr(e))}get number(){return this.value?.isNumber??this._flags?.number}set number(e){this.updateFlags({number:e})}get integer(){return this.value?.isInteger??this._flags?.integer}set integer(e){this.updateFlags({integer:e})}get rational(){return this.value?.isRational??this._flags?.rational}set rational(e){this.updateFlags({rational:e})}get algebraic(){return this.value?.isAlgebraic??this._flags?.algebraic}set algebraic(e){this.updateFlags({algebraic:e})}get real(){return this.value?.isReal??this._flags?.real}set real(e){this.updateFlags({real:e})}get extendedReal(){return this.value?.isExtendedReal??this._flags?.extendedReal}set extendedReal(e){this.updateFlags({extendedReal:e})}get complex(){return this.value?.isComplex??this._flags?.complex}set complex(e){this.updateFlags({complex:e})}get extendedComplex(){return this.value?.isExtendedComplex??this._flags?.extendedComplex}set extendedComplex(e){this.updateFlags({extendedComplex:e})}get imaginary(){return this.value?.isImaginary??this._flags?.imaginary}set imaginary(e){this.updateFlags({imaginary:e})}get positive(){return this.value?.isPositive??this._flags?.positive}set positive(e){this.updateFlags({positive:e})}get nonPositive(){return this.value?.isNonPositive??this._flags?.nonPositive}set nonPositive(e){this.updateFlags({nonPositive:e})}get negative(){return this.value?.isNegative??this._flags?.negative}set negative(e){this.updateFlags({negative:e})}get nonNegative(){return this.value?.isNonNegative??this._flags?.nonNegative}set nonNegative(e){this.updateFlags({nonNegative:e})}get zero(){return this.value?.isZero??this._flags?.zero}set zero(e){this.updateFlags({zero:e})}get notZero(){return this.value?.isNotZero??this._flags?.notZero}set notZero(e){this.updateFlags({notZero:e})}get one(){return this.value?.isOne??this._flags?.one}set one(e){this.updateFlags({one:e})}get negativeOne(){return this.value?.isNegativeOne??this._flags?.negativeOne}set negativeOne(e){this.updateFlags({negativeOne:e})}get infinity(){return this.value?.isInfinity??this._flags?.infinity}set infinity(e){this.updateFlags({infinity:e})}get finite(){return this.value?.isFinite??this._flags?.finite}set finite(e){this.updateFlags({finite:e})}get NaN(){return this.value?.isNaN??this._flags?.NaN}set NaN(e){this.updateFlags({NaN:e})}get even(){return this.value?.isEven??this._flags?.even}set even(e){this.updateFlags({even:e})}get odd(){return this.value?.isOdd??this._flags?.odd}set odd(e){this.updateFlags({odd:e})}get prime(){let e=this._value;return e?!e.isInteger||e.isNonPositive?!1:Yn(b(e)??NaN):this._flags?.prime}set prime(e){this.updateFlags({prime:e})}get composite(){let e=this._value;return e?!e.isInteger||e.isNonPositive?!1:!Yn(b(e)??NaN):this._flags?.composite}set composite(e){this.updateFlags({composite:e})}updateFlags(e){if(this.constant)throw Error("The flags of constant cannot be changed");if(this.domain?.isNumeric===!1)throw Error("Flags only apply to numeric domains");let i=0,t=!0;for(let r in Object.keys(e))if(i+=1,this._value&&e[r]!==void 0)switch(r){case"number":t=this._value.isNumber===e.number;break;case"integer":t=this._value.isInteger===e.integer;break;case"rational":t=this._value.isRational===e.rational;break;case"algebraic":t=this._value.isAlgebraic===e.algebraic;break;case"real":t=this._value.isReal===e.real;break;case"extendedReal":t=this._value.isExtendedReal===e.extendedReal;break;case"complex":t=this._value.isComplex===e.complex;break;case"extendedComplex":t=this._value.isExtendedComplex===e.extendedComplex;break;case"imaginary":t=this._value.isImaginary===e.imaginary;break;case"positive":t=this._value.isPositive===e.positive;break;case"nonPositive":t=this._value.isNonPositive===e.nonPositive;break;case"negative":t=this._value.isNegative===e.negative;break;case"nonNegative":t=this._value.isNonNegative===e.nonNegative;break;case"zero":t=this._value.isZero===e.zero;break;case"notZero":t=this._value.isNotZero===e.notZero;break;case"one":t=this._value.isOne===e.one;break;case"negativeOne":t=this._value.isNegativeOne===e.negativeOne;break;case"infinity":t=this._value.isInfinity===e.infinity;break;case"NaN":t=this._value.isNaN===e.NaN;break;case"finite":t=this._value.isFinite===e.finite;break;case"even":t=this._value.isEven===e.even;break;case"odd":t=this._value.isOdd===e.odd;break;case"prime":t=this._value.isPrime===e.prime;break;case"composite":t=this._value.isComposite===e.composite;break}i>0&&(t||(this._defValue=void 0,this._value=void 0),this._domain=this._engine.Numbers,this._flags?this._flags={...this._flags,..._t(e)}:this._flags=_t(e))}};function hd(n){return Object.fromEntries(Object.entries(n).filter(([e,i])=>i!==void 0))}function _t(n){let e={...n};return(n.zero||n.one||n.negativeOne)&&(e.zero=n.zero&&!n.one&&!n.negativeOne,e.notZero=!n.zero||n.one||n.negativeOne,e.one=n.one&&!n.zero&&!n.negativeOne,e.negativeOne=n.negativeOne&&!n.zero&&!n.one,e.infinity=!1,e.NaN=!1,e.finite=!0,e.integer=!0,e.finite=!0,e.infinity=!1,e.NaN=!1,e.even=n.one,e.odd=!n.one,e.prime=!1,e.composite=!1),e.zero&&(e.positive=!1,e.negative=!1,e.nonPositive=!0,e.nonNegative=!0),e.notZero===!0&&(e.imaginary||(e.real=!0),e.zero=!1),e.one&&(e.positive=!0),e.negativeOne&&(e.nonPositive=!0),(e.positive||e.nonNegative)&&(e.negativeOne=!1),e.positive?(e.nonPositive=!1,e.negative=!1,e.nonNegative=!0):e.nonPositive?(e.positive=!1,e.negative=e.notZero,e.nonNegative=!e.zero):e.negative?(e.positive=!1,e.nonPositive=e.notZero,e.nonNegative=!1):e.nonNegative&&(e.positive=e.notZero,e.nonPositive=!e.zero,e.negative=!1),(e.positive||e.negative||e.nonPositive||e.nonNegative)&&(e.number=!0,e.finite?e.real=!0:e.finite||(e.complex=!0),e.imaginary=!1),e.finite&&(e.number=!0,e.complex=!0,e.infinity=!1,e.NaN=!1),e.infinity&&(e.finite=!1,e.NaN=!1),e.infinity===!1&&(e.extendedComplex=!1,e.extendedReal=!1),n.even&&(e.odd=!1),n.odd&&(e.even=!1),e.integer&&(e.rational=!0),e.rational&&(e.algebraic=!0),e.algebraic&&(e.real=!0),e.real&&(e.complex=!0),e.imaginary&&(e.complex=!0),e.complex&&(e.number=!0),e.real&&e.infinity!==!1&&(e.extendedReal=!0),e.complex&&e.infinity!==!1&&(e.extendedComplex=!0),(e.even||e.infinity||e.NaN||e.negative||e.imaginary||e.integer===!1)&&(e.prime=!1),e.number&&e.prime&&(e.composite=!1),e}function Sr(n){if(!n)return{};let e={};if(!n.isNumeric)return e.number=!1,e.integer=!1,e.rational=!1,e.algebraic=!1,e.real=!1,e.extendedReal=!1,e.complex=!1,e.extendedComplex=!1,e.imaginary=!1,e.positive=!1,e.nonPositive=!1,e.negative=!1,e.nonNegative=!1,e.zero=!1,e.notZero=!1,e.one=!1,e.negativeOne=!1,e.infinity=!1,e.NaN=!1,e.odd=!1,e.even=!1,e.prime=!1,e.composite=!1,e;let i=n.base;return e.number=!0,i==="Integers"&&(e.integer=!0),i==="RationalNumbers"&&(e.rational=!0),i==="AlgebraicNumbers"&&(e.algebraic=!0),i==="TranscendentalNumbers"&&(e.algebraic=!1,e.real=!0),i==="ExtendedRealNumbers"&&(e.extendedReal=!0),i==="RealNumbers"&&(e.real=!0),i==="ImaginaryNumbers"&&(e.imaginary=!0),i==="ExtendedComplexNumbers"&&(e.extendedComplex=!0),i==="ComplexNumbers"&&(e.complex=!0),i==="PositiveNumbers"&&(e.notZero=!0,e.real=!0,e.positive=!0),i==="NegativeNumbers"&&(e.notZero=!0,e.real=!0,e.negative=!0),i==="NonNegativeNumbers"&&(e.real=!0,e.positive=!0),i==="NonPositiveNumbers"&&(e.real=!0,e.negative=!0),i==="PositiveIntegers"&&(e.notZero=!0,e.integer=!0,e.positive=!0),i==="NegativeNumbers"&&(e.notZero=!0,e.integer=!0,e.negative=!0),i==="NonNegativeNumbers"&&(e.integer=!0,e.positive=!0),i==="NonPositiveNumbers"&&(e.integer=!0,e.negative=!0),hd(_t(e))}function Vo(n){if(n.head==="N"&&typeof n.op1.head=="string"){let o={Integrate:"NIntegrate",Limit:"NLimit"}[n.op1.head];o&&(n=n.engine._fn(o,n.op1.ops))}if(n.head==="Function")return n;let e=n.unknowns;e.includes("_")&&(n=n.subs({_:"_1"}),e=n.unknowns);let i=0;for(let o of e)if(o.startsWith("_")){let s=Number(o.slice(1));s>i&&(i=s)}let t=n.engine;return t._fn("Function",[n,...Array.from({length:i},(o,s)=>t.symbol(`_${s+1}`))])}function $o(n){let e=n.engine,i=n.symbol?e.lookupFunction(n.symbol):void 0;if(i){let a=i.signature.N??i.signature.evaluate;return a?l=>a(e,l)??e._fn(n,l):l=>e._fn(n,l)}let t=Vo(n);if(!t)return;t.head;let r=t.ops.slice(1).map(a=>a.symbol??"Nothing");e.pushScope();for(let a of r)e.declare(a,{inferred:!0,domain:void 0});let o=t.op1.canonical;o.bind(),e.popScope();let s=o.scope;return s?r.length===0?()=>{let a=e.swapScope(s);e.resetContext();let l=o.N()??o.evaluate();return e.swapScope(a),l}:a=>{if(e.strict&&(a=De(e,a,r.length),!a.every(d=>d.isValid)))return;a=a.map(d=>d.evaluate());let l=e.swapScope(s);e.resetContext();let u=0;for(let d of r)e.assign(d,a[u++]);let f=o.N()??o.evaluate();if(e.swapScope(l),!!f.isValid)return f}:()=>o.N()??o.evaluate()}function vi(n,e){return $o(n)?.(e)??n.engine._fn(n,e)}function Ni(n){return $o(n)??(e=>n.engine._fn(n.N(),e).N())}function Uo(n){let e=n.engine,i=$o(n);return i?t=>i([e.number(t)])?.value??NaN:t=>e._fn(n.evaluate(),[e.number(t)]).value}function Go(n){let e=n.match(/(.+)\((.*)\)/);if(!e)return[n,void 0];let i=e[1],t=e[2].split(",").map(r=>r.trim());return[i,t]}var Xe=class{constructor(e,i,t){if(!e.context)throw Error("No context available");this.engine=e,this.scope=e.context;let r=t.idempotent??!1,o=t.involution??!1;if(r&&o)throw new Error(`Function Definition "${i}": the 'idempotent' and 'involution' flags are mutually exclusive`);if(this.name=i,this.description=t.description,this.wikidata=t.wikidata,this.threadable=t.threadable??!1,this.associative=t.associative??!1,this.commutative=t.commutative??!1,this.idempotent=r,this.involution=o,this.inert=t.inert??!1,this.numeric=t.numeric??!1,this.pure=t.pure??!0,this.complexity=t.complexity??bn,this.hold=t.hold??"none",t.at&&(this.at=t.at),t.iterator&&(this.iterator=t.iterator),t.size&&(this.size=t.size),t.keys&&(this.keys=t.keys),t.indexOf&&(this.indexOf=t.indexOf),t.at&&!t.size&&(this.size=s=>{let a=t.at,l=0;for(;a(s,l)!==void 0;)l++;return l}),t.at&&!t.iterator&&(this.iterator=(s,a=1,l=-1)=>{let u=t.at,f=a;return{next(){if(l>=0&&f>=a+l)return{done:!0,value:void 0};let d=u(s,f);return d===void 0?{done:!0,value:void 0}:(f++,{done:!1,value:d})}}}),this.iterator&&!t.indexOf&&(this.indexOf=(s,a)=>{let l=1,u=this.iterator(s),f=u.next();for(;!f.done;){if(a.isEqual(f.value))return l;l++,f=u.next()}}),this.inert){if(t.hold)throw Error(`Function Definition "${i}": an inert function should not have a hold`);if(this.hold="rest",t.signature){let s=t.signature;if("simplify"in s||"evaluate"in s||"N"in s||"evalDimension"in s||"sgn"in s||"compile"in s)throw Error(`Function Definition "${i}": an inert function should only have 'canonical' or 'codomain' handlers`)}if(this.threadable)throw Error(`Function Definition "${i}": an inert function should not be threadable`);if(this.associative)throw Error(`Function Definition "${i}": an inert function should not be associative`);if(this.commutative)throw Error(`Function Definition "${i}": an inert function should not be commutative`);if(this.idempotent)throw Error(`Function Definition "${i}": an inert function should not be idempotent`);if(this.involution)throw Error(`Function Definition "${i}": an inert function should not be involution`);if(!this.pure)throw Error(`Function Definition "${i}": an inert function should be pure`)}if(t.signature){let s=t.signature,a,l,u,f,d=!1;if(s.domain){let m=e.domain(s.domain);if(!m.isValid)throw Error(`Function Definition "${i}": invalid domain ${JSON.stringify(s.domain)}`);[a,l,u,f]=yt(e.domain(m))}else s.params||s.result?(a=s.params?.map(m=>e.domain(m))??[],l=s.optParams?.map(m=>e.domain(m))??[],u=s.restParam?e.domain(s.restParam):void 0,typeof s.result=="function"?f=s.result:s.result?f=e.domain(s.result):t.numeric?f=e.Numbers:f=e.Anything):t.numeric?(d=!0,a=[],l=[],u=e.Numbers,f=e.Numbers):(d=!0,a=[],l=[],u=e.Anything,f=e.Anything);let c;if(s.evaluate&&typeof s.evaluate!="function"){let m=e.box(s.evaluate,{canonical:!1});if(!m.isValid)throw Error(`Invalid function ${m.toString()}`);let g=Ni(m);c=(h,E)=>g(E),c.toString=()=>m.toString()}else c=s.evaluate;t.signature.result&&(typeof t.signature.result=="function"?f=t.signature.result:f=e.domain(t.signature.result)),this.signature={inferredSignature:d,params:a,optParams:l,restParam:u||void 0,result:f,canonical:s.canonical,simplify:s.simplify,evaluate:c,N:s.N,evalDimension:s.evalDimension,sgn:s.sgn,compile:s.compile}}else t.numeric?this.signature={inferredSignature:!0,params:[],optParams:[],restParam:e.Numbers,result:e.Numbers}:this.signature={inferredSignature:!0,params:[],optParams:[],restParam:e.Anything,result:e.Anything}}reset(){}};function Br(n,e,i){return i instanceof Xe?i:new Xe(n,e,i)}function Ja(n){let e=[],i=(t,r=[])=>{if(t.length===0)e.push(r);else for(let o=0;o<t.length;o++){let s=t.slice(),a=s.splice(o,1);i(s.slice(),r.concat(a))}};return i(n),e}var Oe=he(fe(),1);var ae=class n extends F{constructor(e,i,t){if(super(e,t?.metadata),typeof i=="number"){this._value=i,this._isCanonical=!0;return}if(M(i)){let[r,o]=i;typeof r!="number"||Number.isInteger(r)&&Number.isInteger(o),!(typeof r=="bigint"&&typeof o=="bigint")||o!==r&&BigInt(1),t?.canonical??!0?(this._value=zo(e,i),this._isCanonical=!0):(this._value=i,this._isCanonical=!1)}else!(i instanceof Oe.Complex)||!Number.isNaN(i.re)&&!Number.isNaN(i.im)&&e.chop(i.im),this._value=zo(e,i),this._isCanonical=!0}get hash(){if(this._hash!==void 0)return this._hash;let e=0;return typeof this._value=="number"?e=Te(this._value.toString()):this._value instanceof Oe.Complex?e=Te(this._value.re.toString()+" +i "+this._value.im.toString()):this._value instanceof N?e=Te(this._value.toString()):e=Te(this._value[0].toString()+" / "+this._value[1].toString()),this._hash=e,e}get json(){let e=this._value;if(e instanceof N){if(e.isNaN())return"NaN";let i=e.toNumber();return Number.isFinite(i)?i:i>0?"PositiveInfinity":"NegativeInfinity"}if(e instanceof Oe.Complex)return e.isNaN()?"NaN":e.isInfinite()?"ComplexInfinity":e.im===0?e.re:["Complex",e.re,e.im];if(z(e)){let[i,t]=e;return["Rational",{num:`${i.toString()}n`},{num:`${t.toString()}n`}]}else if(M(e)){let[i,t]=e;return["Rational",i,t]}return Number.isNaN(e)?"NaN":Number.isFinite(e)?e:e>0?"PositiveInfinity":"NegativeInfinity"}get head(){return"Number"}get isPure(){return!0}get isExact(){let e=this._value;return typeof e=="number"?Number.isInteger(e):e instanceof N?e.isInteger():e instanceof Oe.Complex?Number.isInteger(e.re)&&Number.isInteger(e.im):M(e)}get isCanonical(){return this._isCanonical}set isCanonical(e){this._isCanonical=e}get complexity(){return 1}get numericValue(){return this._value}get domain(){return this._domain??(this._domain=this.engine.domain(Za(this._value))),this._domain}get sgn(){if(this._value===0)return 0;if(typeof this._value=="number")return this._value<0?-1:this._value>0?1:null;if(this._value instanceof N)return this._value.isZero()?0:this._value.isNegative()?-1:this._value.isPositive()?1:null;if(Array.isArray(this._value)){let[e,i]=this._value;return e===0&&i!==0?0:e<0?-1:e>0?1:null}return null}isSame(e){if(this===e)return!0;if(!(e instanceof n))return!1;if(typeof this._value=="number")return typeof e._value!="number"?!1:this._value===e._value;if(this._value instanceof N)return e._value instanceof N?this._value.eq(e._value):!1;if(Array.isArray(this._value)){if(!Array.isArray(e._value))return!1;let[i,t]=e._value;return this._value[0]===i&&this._value[1]===t}return this._value instanceof Oe.Complex&&e._value instanceof Oe.Complex?this._value.equals(e._value):!1}isEqual(e){return this===e||bi(this,e)===0}match(e,i){return Hi(this,e,i)}isEqualWithTolerance(e,i){return e instanceof n&&bi(this,e,i)===0}isLess(e){let i=bi(this,e);if(i!==void 0)return i<0}isLessEqual(e){let i=bi(this,e);if(i!==void 0)return i<=0}isGreater(e){return e.isLessEqual(this)}isGreaterEqual(e){return e.isLess(this)}get isPositive(){if(typeof this._value=="number")return this._value>0;let e=this.sgn;if(e!=null)return e>0}get isNonNegative(){if(typeof this._value=="number")return this._value>=0;let e=this.sgn;if(e!=null)return e>=0}get isNegative(){if(typeof this._value=="number")return this._value<0;let e=this.sgn;if(e!=null)return e<0}get isNonPositive(){if(typeof this._value=="number")return this._value<=0;let e=this.sgn;if(e!=null)return e<=0}get isZero(){return this._value===0?!0:this._value instanceof N?this._value.isZero():this._value instanceof Oe.Complex?this._value.isZero():!1}get isNotZero(){return this._value===0?!1:this._value instanceof N?!this._value.isZero():this._value instanceof Oe.Complex?!this._value.isZero():!0}get isOne(){return this._value===1?!0:typeof this._value=="number"?!1:this._value instanceof N?this._value.equals(this.engine._BIGNUM_ONE):this._value instanceof Oe.Complex?this._value.im===0&&this._value.re===1:X(this._value)}get isNegativeOne(){return this._value===-1?!0:typeof this._value=="number"?!1:this._value instanceof N?this._value.equals(this.engine._BIGNUM_NEGATIVE_ONE):this._value instanceof Oe.Complex?this._value.im===0&&this._value.re===-1:Ri(this._value)}get isOdd(){if(this.isOne||this.isNegativeOne)return!0;if(this.isZero||!this.isInteger)return!1;if(typeof this._value=="number")return this._value%2!==0;if(this._value instanceof N)return!this._value.mod(2).isZero()}get isEven(){if(this.isOne||this.isNegativeOne)return!1;if(this.isZero)return!0;if(!this.isInteger)return!1;if(typeof this._value=="number")return this._value%2===0;if(this._value instanceof N)return this._value.mod(2).isZero()}get isPrime(){if(!this.isInteger||!this.isFinite||this.isNonPositive||this.isOne||this.isZero)return!1;if(typeof this._value=="number")return Yn(this._value);if(this._value instanceof N)return Yn(this._value.toNumber())}get isComposite(){if(!this.isInteger||!this.isFinite||this.isNonPositive||this.isOne||this.isZero)return!1;if(typeof this._value=="number")return!Yn(this._value);if(this._value instanceof N)return!Yn(this._value.toNumber())}get isInfinity(){return typeof this._value=="number"?!Number.isFinite(this._value)&&!Number.isNaN(this._value):this._value instanceof N?!this._value.isFinite()&&!this._value.isNaN():this._value instanceof Oe.Complex?!this._value.isFinite()&&!this._value.isNaN():!1}get isNaN(){return typeof this._value=="number"?Number.isNaN(this._value):this._value instanceof N?this._value.isNaN():this._value instanceof Oe.Complex?this._value.isNaN():!1}get isFinite(){return!this.isInfinity&&!this.isNaN}get isNumber(){return!0}get isInteger(){return typeof this._value=="number"?Number.isInteger(this._value):this._value instanceof N?this._value.isInteger():!1}get isRational(){return Array.isArray(this._value)?!0:this.isInteger}get isAlgebraic(){if(this.isRational)return!0}get isReal(){return this.isFinite?this._value instanceof Oe.Complex?this.engine.chop(this._value.im)===0:!0:!1}get isExtendedReal(){return this.isInfinity||this.isReal}get isComplex(){return!this.isNaN}get isImaginary(){return this._value instanceof Oe.Complex?(this._value.im,!0):!1}get isExtendedComplex(){return this.isInfinity||!this.isNaN}get canonical(){return this._isCanonical?this:this.engine.number(zo(this.engine,this._value))}simplify(e){return this.canonical}evaluate(e){return e?.numericMode?this.N(e):this}N(e){if(!Array.isArray(this._value))return this;let i=this.engine,[t,r]=this._value;return typeof t=="number"&&typeof r=="number"&&!q(i)?i.number(t/r):i.number(i.bignum(t).div(i.bignum(r)))}};function zo(n,e){if(e instanceof N&&ir(e))return e.toNumber();if(!M(e))return e;if(e=Ze(e),z(e)){let[r,o]=e;if(r>Number.MIN_SAFE_INTEGER&&r<Number.MAX_SAFE_INTEGER&&o>Number.MIN_SAFE_INTEGER&&o<Number.MAX_SAFE_INTEGER)e=[Number(r),Number(o)];else return o<0&&([r,o]=[-r,-o]),o===BigInt(1)?n.bignum(r):o===BigInt(0)?r===o?NaN:r<0?-1/0:1/0:[r,o]}let[i,t]=e;return Number.isNaN(i)||Number.isNaN(t)?NaN:(t<0&&([i,t]=[-i,-t]),t===1?i:t===0?i===0||!Number.isFinite(i)?NaN:i<0?-1/0:1/0:i===0?i:[i,t])}function Tr(n){if(typeof n=="string")return n.startsWith("_");if(Je(n))return!0;if(n.ops)return Tr(n.head)||n.ops.some(Tr);if(n.keys){for(let e of n.keys)if(Tr(n.getKey(e)))return!0}return!1}function Ir(n,e,i){return n.startsWith("_"),n==="_"||n==="__"||n==="___"?i:n in i?e.isSame(i[n])?i:null:Tr(e)?null:{...i,[n]:e}}function Se(n,e,i,t){if(Je(e))return Ir(We(e),n,i);let r=t.acceptVariants??!0;if(t={...t,acceptVariants:!0},e instanceof ae){let l=t?.numericTolerance??ki;return n instanceof ae?l===0&&e.isSame(n)||e.isEqualWithTolerance(n,l)?i:r?Zo(n,e,i,t):null:null}let o=e.string;if(o!==null)return n.string===o?i:null;let s=e.symbol;if(s!==null)return s===n.symbol?i:r?Zo(n,e,i,t):null;let a=e.keys;if(a!==null){let l=n.keys;if(l===null)return null;for(let u of a){let f=Se(l[u],a[u],i,t);if(f===null)return null;i=f}return i}if(e.ops){let l=t.exact??!1,u=n.engine,f=null,d=e.head;if(typeof d=="string"){if(d.startsWith("_"))f=Ir(d,u.box(n.head),i),f!==null&&(f=Dr(n,e.ops,f,t));else if(d===n.head)f=u.lookupFunction(d)?.commutative?xd(n,e,i,t):Dr(n,e.ops,i,t);else if(typeof n.head=="string"&&!l){if(!r)return null;f=Zo(n,e,i,t)}}else typeof n.head!="string"&&(f=Se(u.box(n.head,{canonical:!1}),u.box(d,{canonical:!1}),i,t),f!==null&&(f=Dr(n,e.ops,f,t)));return f!==null&&(i=f),t.recursive&&n.ops&&(f=gd(n,e,i,{...t,acceptVariants:r})??f),f}return null}function gd(n,e,i,t){n.ops;let r=null;for(let o of n.ops){let s=Se(o,e,i,t);s!==null&&(r=s,i=s)}return r}function Zo(n,e,i,t){if(t.exact)return null;e.head;let r=e.head,o=n.engine,s=null,a={...t,acceptVariants:!1};if(r==="Add"){let l=Se(o.box(["Add",0,n],{canonical:!1}),e,i,a);if(l!==null||(n.head==="Subtract"&&(l=Se(o.box(["Add",n.op1,["Negate",n.op2]],{canonical:!1}),e,i,a)),l!==null))return l}if(r==="Subtract"){let l=Se(o.box(["Subtract",n,0],{canonical:!1}),e,i,a);if(l!==null||(n.head==="Negate"&&(l=Se(o.box(["Subtract",0,n.op1],{canonical:!1}),e,i,a)),l!==null))return l}if(r==="Multiply"){let l=Se(o.box(["Multiply",1,n],{canonical:!1}),e,i,a);if(l!==null||n.head==="Negate"&&(l=Se(o.box(["Multiply",-1,n.op1],{canonical:!1}),e,i,a),l!==null)||n.head==="Divide"&&(l=Se(o.box(["Multiply",n.op1,["Divide",1,n.op2]],{canonical:!1}),e,i,a),l!==null))return l}if(r==="Divide"){let l=Se(o.box(["Divide",n,1],{canonical:!1}),e,i,a);if(l!==null)return l}if(r==="Square"){let l=Se(o.box(["Power",n,2],{canonical:!1}),e,i,a);if(l!==null)return l}if(r==="Exp"){let l=Se(o.box(["Power",o.box("ExponentialE"),n],{canonical:!1}),e,i,a);if(l!==null)return l}if(r==="Power"){if(e.op2.numericValue===2){let l=Se(o.box(["Square",n],{canonical:!1}),e,i,a);if(l!==null)return l}if(e.op1.symbol==="ExponentialE"){let l=Se(o.box(["Exp",n],{canonical:!1}),e,i,a);if(l!==null)return l}}return s}function xd(n,e,i,t){let r=Ja(e.ops);for(let o of r){let s=Dr(n,o,i,t);if(s!==null)return s}return null}function Dr(n,e,i,t){if(e.length===0)return n.ops&&n.ops.length===0?i:null;let r=e[0].engine,o={...i},s=[...n.ops],a=0;for(;a<e.length;){let l=e[a],u=We(l);if(u!==null)if(u.startsWith("__")){let f=0;if(e[a+1]===void 0)f=s.length+1;else{let c=!1;for(;!c&&f<s.length;)c=Se(s[f],e[a+1],o,t)!==null,f+=1;if(!c&&u.startsWith("___"))return null}if(!u.startsWith("___")&&f<=1)return null;let d;if(f<=1)n.head==="Add"?d=r.Zero:n.head==="Multiply"?d=r.One:d=r.box(["Sequence"]);else if(f===2)d=s.shift();else{let c=r.lookupFunction(n.head),m=s.splice(0,f-1);c?.associative?d=r.box([n.head,...m],{canonical:!1}):d=r.box(["Sequence",...m],{canonical:!1})}o=Ir(u,d,o)}else u.startsWith("_")?o=Ir(u,s.shift(),o):o=Se(s.shift(),l,o,t);else{let f=s.shift();if(!f)return null;o=Se(f,l,o,t)}if(o===null)return null;a+=1}return s.length>0?null:o}function Hi(n,e,i){if(dn(e)||(e=n.engine.box(e,{canonical:!1})),Je(e))return{[We(e)]:n};let t={recursive:i?.recursive??!1,exact:i?.exact??!1,acceptVariants:!(i?.exact??!1),numericTolerance:i?.numericTolerance??ki},r=i?.substitution??{};return Se(n,e,r,t)}var Vn=class n extends F{constructor(e,i,t){super(e,t?.metadata),Ne(i),`${i}${an(i)}`,this._id=i,this._def=t?.def??void 0,(t?.canonical??!0)!==!0?this._scope=null:this._def?this._scope=e.context:this.bind()}get json(){return this._id}get hash(){return this._hash===void 0&&(this._hash=Te(this._id)),this._hash}get isPure(){return!0}get scope(){return this._scope}get isConstant(){let e=this._def??this.engine.lookupSymbol(this._id,this.wikidata);return!(e instanceof ce)||e.constant}bind(){this._scope=this.engine.context;let e=this.engine.lookupSymbol(this._id)??this.engine.lookupFunction(this._id);if(e){this._def=e;return}this._def=this.engine.defineSymbol(this._id,{domain:void 0,inferred:!0}),this._id=this._def.name}reset(){this._def?.reset(),this._def=void 0}get isCanonical(){return this._scope!==null}set isCanonical(e){this._scope=e?this.engine.context:null,this._def=void 0}get canonical(){return this._scope?this:this.engine.box(this._id)}solve(e){let i=pt(e);return i.length!==1?null:i.includes(this.symbol)?[this.engine.Zero]:null}get complexity(){return 7}get head(){return"Symbol"}get symbol(){return this._id}get baseDefinition(){return this._def===void 0&&this.bind(),this._def??void 0}get symbolDefinition(){return this._def===void 0&&this.bind(),this._def instanceof ce?this._def:void 0}get functionDefinition(){return this._def===void 0&&this.bind(),this._def instanceof Xe?this._def:void 0}infer(e){let i=this.engine.lookupSymbol(this._id)??this.engine.lookupFunction(this._id);if(!i){let t=this.engine.swapScope(this._scope??this.engine.context);return this._def=this.engine.defineSymbol(this._id,{domain:e,inferred:!0}),this.engine.swapScope(t),!0}return i instanceof ce&&i.inferredDomain?(i.domain=Nt(i.domain,e),!0):!1}get value(){let e=this._def;if(e&&e instanceof ce)return e.value?.value}set value(e){let i=this.engine;i.forget(this._id);let t;if(typeof e=="boolean"&&(e=e?i.True:i.False),typeof e=="string"&&(e=i.string(e)),typeof e=="object")if("re"in e&&"im"in e)e=i.complex(e.re,e.im);else if("num"in e&&"denom"in e)e=i.number([e.num,e.denom]);else if(Array.isArray(e))e=i._fn("List",e.map(o=>i.box(o)));else throw new Error(`Invalid value for symbol ${this._id}: ${e}`);if(e!==void 0&&(t=i.box(e).evaluate()),t?.domain?.isFunction){this.engine.lookupSymbol(this._id),this._def=i.defineFunction(this._id,{signature:{...Et(t.domain),evaluate:t}});return}let r=this.engine.lookupSymbol(this._id);if(r&&r instanceof ce)r.value=t;else{let o=t?.domain;o?.isNumeric&&(o=i.Numbers),this._def=i.defineSymbol(this._id,{value:t,domain:o})}}get domain(){let e=this._def;if(e){if(e instanceof Xe)return vr(this.engine,e.signature);if(e instanceof ce)return e.domain??void 0}}set domain(e){if(!this._def)return;if(this._id[0]==="_")throw new Error(`The domain of the wildcard "${this._id}" cannot be changed`);let i=this.engine.domain(e);i.isFunction?(this.engine.forget(this._id),this._def=this.engine.defineFunction(this._id,{signature:Et(i)})):this._def instanceof ce?this._def.domain=i:(this.engine.forget(this._id),this._def=this.engine.defineSymbol(this._id,{domain:i}))}get sgn(){let e=this._def;if(!e||!(e instanceof ce))return null;let i=e.value;if(i&&i!==this){let t=i.sgn;if(t!==void 0)return t}if(e.zero===!0)return 0;if(e.positive===!0)return 1;if(e.negative===!0)return-1}has(e){return typeof e=="string"?this._id===e:e.includes(this._id)}isSame(e){return this===e?!0:e instanceof n?this._id===e._id:!1}match(e,i){return Hi(this,e,i)}isEqual(e){if(!this.isCanonical)return this.canonical.isEqual(e);if(e=e.canonical,this===e)return!0;if(e.symbol!==null)return e.symbol===this._id;let i=this.symbolDefinition?.value?.N();if(i)return i.isEqual(e.N());if(e.isZero){if(this.isZero)return!0;if(this.isNotZero)return!1}return this.isZero&&e.isNotZero?!1:this.engine.ask(["Equal",this,e]).length>0?!0:(this.engine.ask(["NotEqual",this,e]).length>0,!1)}isLess(e){if(e.symbol!==null&&e.symbol===this._id)return!1;let i=this.symbolDefinition?.value?.N();if(i)return i.isLess(e.N());if(e.isZero){let t=this.sgn;if(t===null)return!1;if(t!==void 0)return t<0}}isLessEqual(e){if(e.symbol!==null&&e.symbol===this._id)return!0;let i=this.symbolDefinition?.value?.N();if(i)return i.isLessEqual(e.N());if(e.isZero){let t=this.sgn;if(t===null)return!1;if(t!==void 0)return t<=0}return this.isLess(e)||this.isEqual(e)}isGreater(e){if(e.symbol!==null&&e.symbol===this._id)return!1;let i=this.symbolDefinition?.value?.N();if(i)return i.isGreater(e.N());if(e.isZero){let t=this.sgn;if(t===null)return!1;if(t!==void 0)return t>0}}isGreaterEqual(e){if(e.symbol!==null&&e.symbol===this._id)return!0;let i=this.symbolDefinition?.value?.N();if(i)return i.isGreaterEqual(e.N());if(e.isZero){let t=this.sgn;if(t===null)return!1;if(t!==void 0)return t>=0}return this.isGreater(e)||this.isEqual(e)}get isFunction(){return!!this.functionDefinition}get isZero(){return this.symbolDefinition?.zero}get isNotZero(){return this.symbolDefinition?.notZero}get isOne(){return this.symbolDefinition?.one}get isNegativeOne(){return this.symbolDefinition?.negativeOne}get isOdd(){return this.symbolDefinition?.odd}get isEven(){return this.symbolDefinition?.even}get isPrime(){return this.symbolDefinition?.prime}get isComposite(){return this.symbolDefinition?.composite}get isInfinity(){return this.symbolDefinition?.infinity}get isNaN(){return this.symbolDefinition?.NaN}get isPositive(){return this.symbolDefinition?.positive}get isNonPositive(){return this.symbolDefinition?.nonPositive}get isNegative(){return this.symbolDefinition?.negative}get isNonNegative(){return this.symbolDefinition?.nonNegative}get isNumber(){return this.symbolDefinition?.number}get isInteger(){return this.symbolDefinition?.integer}get isRational(){return this.symbolDefinition?.rational}get isAlgebraic(){return this.symbolDefinition?.rational}get isReal(){return this.symbolDefinition?.real}get isExtendedReal(){return this.symbolDefinition?.extendedReal}get isComplex(){return this.symbolDefinition?.complex}get isImaginary(){return this.symbolDefinition?.imaginary}simplify(e){let i=this.symbolDefinition;return i?.holdUntil==="simplify"&&i.value?i.value.simplify(e):e?.rules?this.replace(e.rules)??this:this}evaluate(e){let i=this.symbolDefinition;if(i){if(e?.numericMode)return i.holdUntil==="never"?this:i.value?.N(e)??this;if(i.holdUntil==="simplify"||i.holdUntil==="evaluate")return i.value?.evaluate(e)??this}return this}N(e){let i=this.symbolDefinition;return i&&i.holdUntil==="never"?this:i?.value?.N(e)??this}replace(e,i){return Er(this,e,i)}subs(e,i){return e[this._id]===void 0?i?.canonical===!0?this.canonical:this:this.engine.box(e[this._id],i)}};function Wa(n,e){let i=n.lookupSymbol(e);return i?.holdUntil==="never"&&i.value?i.value:new Vn(n,e,{canonical:!0,def:i})}var pu=he(fe(),1);var eu=he(fe(),1);var Ka=he(fe(),1);var St=he(fe(),1);function Qa(n,e){if(X(e))return n;if(Me(e))return 0;if(n===null)return null;if(Ri(e))return typeof n=="number"?-n:n instanceof ve||n instanceof St.default?n.neg():ue(n);if(M(n))return G(n,e);if(z(e)){let[i,t]=e;if(typeof n=="number")return Number.isInteger(n)?[BigInt(n)*i,BigInt(n)*t]:new ve(n).mul(i.toString()).div(t.toString());if(n instanceof ve){let[r,o]=[new ve(i.toString()),new ve(t.toString())];return n.isInteger()?t===BigInt(1)?n.mul(r):[BigInt(n.mul(r).toString()),t]:n.mul(r).div(o)}if(n instanceof St.default)return n.mul(Number(i)).div(Number(t))}else{let[i,t]=e;if(typeof n=="number")return Number.isInteger(n)?[n*i,t]:n*i/t;if(n instanceof ve)return n.isInteger()?[BigInt(n.mul(i).toString()),BigInt(t)]:n.mul(i).div(t);if(n instanceof St.default)return n.mul(i).div(t)}return null}function _i(n){let e=n.engine,i=n.head;if(wn(i))return e.function(i,[_i(n.ops[0]),_i(n.ops[1])]);if(i==="Divide")return e.div(n.ops[0],n.ops[1]);if(i==="Add"){let[t,r]=n.ops.reduce((o,s)=>(s.head==="Divide"?(o[0].push(s.ops[0]),o[1].push(s.ops[1])):o[0].push(s),o),[[],[]]);return e.div(e.add(...t),e.add(...r))}return i==="Negate"?e.neg(_i(n.ops[0])):n}function Ya(n,e){let i=[],t=n.engine;for(let o of n.factors){let s=e.find(o.factor);if(s!==-1)if(o.exponent.isSame(e.factors[s].exponent))i.push(o);else{let a=b(o.exponent),l=b(e.factors[s].exponent);if(a!==null&&l!==null){if(a>0&&l>0){let u=Math.min(a,l);i.push({factor:o.factor,exponent:t.number(u)})}else if(a<0&&l<0){let u=Math.max(a,l);i.push({factor:o.factor,exponent:t.number(u)})}}}}let r=n.integerCoefficient();if(r!==null){let o=e.integerCoefficient();o!==null&&i.push({factor:t.number(In(r,o)),exponent:t.One})}return i.length===0?t.One:t.mul(...i.map(o=>t.pow(o.factor,o.exponent)))}function Xa(n){let e=n.head;if(wn(e)){let t=new ii(n.op1),r=new ii(n.op2);t.reduceExactNumbers(),r.reduceExactNumbers();let o=Ya(t,r);return o.isOne||(t.div(o),r.div(o)),n.engine.function(e,[t.asExpression(),r.asExpression()])}if(e==="Add"){let t=null;for(let r of n.ops)if(!t)t=new ii(r),t.reduceExactNumbers();else{let o=new ii(r);o.reduceExactNumbers(),t=new ii(Ya(t,o)),t.reduceExactNumbers()}return t?.asExpression()??n.engine.One}let i=new ii(_i(n));return i.reduceExactNumbers(),i.asExpression()}var ii=class{constructor(e){this.factors=[];this.hasNaN=!1;this.hasZero=!1;this.hasInfinity=!1;this.sign=1;this.engine=e.engine,this.mul(_i(e))}div(e){if(!e.isOne){if(e.isNegativeOne){this.sign=-this.sign;return}this.mul(e,this.engine.NegativeOne)}}mul(e,i){if(i??(i=e.engine.One),e.head==="Negate"&&(this.sign=-this.sign,e=e.ops[0]),e.head==="Divide"){this.mul(e.ops[0],i),this.mul(e.ops[1],this.engine.neg(i));return}if(e.head==="Multiply"){for(let r of e.ops)this.mul(r,i);return}if(e.head==="Power"){this.mul(e.ops[0],this.engine.mul(e.ops[1],i));return}if(e.head==="Sqrt"){this.mul(e.ops[0],this.engine.mul(this.engine.Half,i));return}if(e.isNegative&&(this.sign=-this.sign,e=this.engine.neg(e)),i.isZero||e.isOne)return;if(e.isNaN){this.hasNaN=!0;return}if(e.isZero){i.isNonNegative?this.hasZero=!0:this.hasNaN=!0;return}if(e.isInfinity&&i.isNonNegative){i.isNonNegative?this.hasInfinity=!0:this.hasNaN=!0;return}let t=this.find(e);t===-1?this.factors.push({factor:e,exponent:i}):this.factors[t].exponent=this.engine.add(this.factors[t].exponent,i)}find(e){return this.factors.findIndex(i=>i.factor.isSame(e))}has(e){return this.find(e)!==-1}reduceNumbers(){let e=this.factors;this.factors=[];let i=this.engine,t=i.One;for(let r of e){let o=r.factor.N();o.numericValue!==null?t=i.mul(t,i.pow(o,r.exponent)):this.factors.push(r)}t.isOne||this.factors.push({factor:t,exponent:i.One})}reduceExactNumbers(){let e=this.engine;for(let u of this.factors){let f=u.factor;if(f.numericValue!==null&&!f.isExact)return this.reduceNumbers()}let i=this.factors;this.factors=[];let t=[1,1],r=1,o=0,s=[1,1];for(let u of i){let f=b(u.exponent);if(f===null){this.factors.push(u);continue}if(Number.isInteger(2*f)){let m=J(u.factor);if(m){s=G(s,gi(m,2*f));continue}}let d=J(u.factor);if(d){t=G(t,gi(d,f));continue}let c=u.factor.numericValue;if(c!==null&&c instanceof St.default&&Number.isInteger(c.re)&&Number.isInteger(c.im)&&Number.isInteger(f)){c=c.pow(f),t=G(t,[c.re,1]),c.im!==0&&(r*=c.im,o+=f);continue}this.factors.push(u)}let[a,l]=ua(s);t=G(t,a),o!==0&&(o%2===0?t=G(t,[r,1]):aa(t)?(this.factors.push({factor:e.number(e.complex(Le(t),r)),exponent:e.One}),t=[1,1]):this.factors.push({factor:e.number(e.complex(0,r)),exponent:e.One})),X(t)||this.factors.push({factor:e.number(t),exponent:e.One}),X(l)||this.factors.push({factor:e.sqrt(e.number(l)),exponent:e.One})}integerCoefficient(){let e=null;for(let i of this.factors){let t=b(i.factor);if(t!==null&&Number.isInteger(t)){let r=b(i.exponent);r!==null&&(e=(e??1)*Math.pow(t,r));continue}}return e}asExpression(){let e=this.engine;if(this.factors.length===0)return e.One;if(this.hasNaN)return e.NaN;if(this.hasInfinity)return this.sign>0?e.PositiveInfinity:e.NegativeInfinity;if(this.hasZero)return e.Zero;if(this.factors.length===1){let{factor:o,exponent:s}=this.factors[0];return e.pow(o,s)}let i=this.factors.filter(o=>o.exponent.isPositive&&!o.factor.isOne).map(o=>e.pow(o.factor,o.exponent)),t;i.length===0?t=this.sign>0?e.One:e.NegativeOne:i.length===1?this.sign<0?t=e.neg(i[0]):t=i[0]:(t=e._fn("Multiply",i),this.sign<0&&(t=e.neg(t)));let r=this.factors.filter(o=>o.exponent.isNegative&&!o.factor.isOne).map(o=>e.pow(o.factor,e.neg(o.exponent)));return r.length===0?t:r.length===1?e.div(t,r[0]):e.div(t,e._fn("Multiply",r))}};var Bt=class{constructor(e,i){this.terms=[];this.engine=e;for(let t of i)this.add(t)}sub(e){this.add(e,[-1,1])}add(e,i){i??(i=[1,1]);let[t,r]=je(e);if(t=G(t,i),Me(t))return;if(r.head==="Add"){for(let s of r.ops)this.add(s,t);return}if(r.head==="Negate"){this.add(r.op1,ue(t));return}let o=this.find(r);if(o>=0){this.terms[o].coef=An(this.terms[o].coef,t);return}this.terms.push({coef:t,term:r})}find(e){return this.terms.findIndex(i=>i.term.isSame(e))}reduceNumbers({exact:e}){let i=this.engine,t=this.terms;this.terms=[];let r=0,o=0,s=0,a=0,l=[0,1],u=i._BIGNUM_ZERO;for(let{coef:f,term:d}of t){if(d.isNaN){this.terms=[{term:i.NaN,coef:[1,1]}];return}if(d.isFinite===!1){d.isPositive?r++:o++;continue}if(d.numericValue!==null){let c=Qa(d.numericValue,f);if(c!==null){M(c)?l=An(l,c):c instanceof ve?u=u.add(c):c instanceof Ka.default?(q(i)?u=u.add(c.re):s+=c.re,a+=c.im):q(i)?u=u.add(c):s+=c;continue}}this.terms.push({coef:f,term:d})}if(r>0&&o>0){this.terms=[{term:i.NaN,coef:[1,1]}];return}if(r>0){this.terms=[{term:i.PositiveInfinity,coef:[1,1]}];return}if(o>0){this.terms=[{term:i.NegativeInfinity,coef:[1,1]}];return}if(!e||!Number.isInteger(s)||!u.isInteger()||!Number.isInteger(a)){if(Me(l)||(u=u.add(i.bignum(l[0]).div(i.bignum(l[1]))),l=[0,1]),!u.isZero()&&q(i)){u=u.add(s),u=u.add(i.bignum(l[0]).div(i.bignum(l[1]))),this.terms.push({term:i.number(u),coef:[1,1]}),a!==0&&this.terms.push({term:i.number(i.complex(0,a)),coef:[1,1]});return}let f=s+u.toNumber()+Number(l[0])/Number(l[1]);a!==0?this.terms.push({term:i.number(i.complex(f,a)),coef:[1,1]}):f!==0&&this.terms.push({term:i.number(f),coef:[1,1]});return}u.isZero()||(u=u.add(s),s=0,Me(l)||(u=u.add(i.bignum(l[0]).div(i.bignum(l[1]))),l=[0,1]),this.terms.push({coef:[1,1],term:i.number(u)})),a!==0?(Me(l)||(s+=Number(l[0])/Number(l[1])),this.terms.push({coef:[1,1],term:i.number(i.complex(s,a))})):s!==0&&this.terms.push({coef:[1,1],term:i.number(s)}),Me(l)||this.terms.push({coef:[1,1],term:i.number(l)})}asExpression(e){let i=this.engine,{exact:t}=e,r=this.terms.filter(({coef:o,term:s})=>!Me(o)&&!s.isZero);if(r.length===0)return i.Zero;if(r.length===1){let{coef:o,term:s}=r[0];if(X(o))return s;if(Ri(o))return i.neg(s);let a=o;return t||(U(o)?a=o[0]/o[1]:z(o)&&(a=i.bignum(o[0]).div(i.bignum(o[1])))),i.mul(i.number(a),s)}return i.function("Add",r.map(({coef:o,term:s})=>{let a=o;return t||(U(o)?a=o[0]/o[1]:z(o)&&(a=i.bignum(o[0]).div(i.bignum(o[1])))),i.mul(i.number(a),s)}))}};function $n(n,e){if(e.every(i=>i.isCanonical),e=e.filter(i=>i.numericValue===null||!i.isZero),e.length===0)return n.Zero;if(e.length===1&&!ur(e[0]))return e[0];if(e.length===2){let i=0,t=b(e[0]);if(t!==null&&t!==0?i=kr(e[1]):(i=kr(e[0]),i!==0&&e[1].numericValue!==null&&(t=b(e[1]))),t!==null&&i!==null&&i!==0)return n.number(n.complex(t,i))}return e.length===1?e[0]:n._fn("Add",bo(e))}function nu(n,e){let i=null;for(let t of e){if(!t?.isNumeric)return null;i=ni(i,t)}return i}function Ar(n,e){let i=new Bt(n,[]);for(let t of e){if(t=t.simplify(),t.isImaginary&&t.isInfinity)return n.ComplexInfinity;if(t.isNaN||t.symbol==="Undefined")return n.NaN;i.add(t)}return i.reduceNumbers({exact:!0}),i.asExpression({exact:!0})}function bd(n){let e=0;for(let i of n){let t=i.numericValue;if(typeof t=="number")e+=t;else return null}return e}function Tt(n,e,i="evaluate"){if(i==="N"&&n.numericMode==="machine"){e=e.map(o=>o.N());let r=bd(e);if(r!==null)return n.number(r)}for(let r of e){if(r.isImaginary&&r.isInfinity)return n.ComplexInfinity;if(r.isNaN||r.symbol==="Undefined")return n.NaN;r.numericValue!==null&&!r.isExact&&(i="N")}i==="N"?e=e.map(r=>r.N()):e=e.map(r=>r.evaluate());let t=new Bt(n,e);return t.reduceNumbers({exact:i!=="N"}),t.asExpression({exact:i!=="N"})}function iu(n,e,i){n.pushScope(),e??(e=n.error("missing"));var t=void 0;if(i&&i.ops&&i.ops[0]?.head==="Delimiter"){var r=fr(i);if(!r)return null;var o=[e.canonical];r.forEach(a=>o.push(a)),t=n._fn("Sum",o)}else{var s=Xn(i);t=s?n._fn("Sum",[e.canonical,s]):n._fn("Sum",[e.canonical])}return n.popScope(),t}function wr(n,e,i){let t=e[0],r=[];if(e){r=[];for(let c=1;c<e.length;c++)r.push(e[c])}let o=null;if(r?.length===0||En(t)){let c=i==="simplify"?t.simplify():t.evaluate({numericMode:i==="N"});if(q(n)){let m=n.bignum(0);for(let g of Q(c)){let h=He(g);if(h===null){o=void 0;break}if(h.isFinite()===!1){m=h;break}m=m.add(h)}o===null&&(o=n.number(m))}else{let m=0;for(let g of Q(c)){let h=b(g);if(h===null){o=void 0;break}if(h===null||!Number.isFinite(h)){m=h;break}m+=h}o===null&&(o=n.number(m))}return o??void 0}let s=t;n.pushScope();var a=[];let l=[],u=[],f=[];r.forEach(c=>{let[m,g,h,E]=Mn(c.evaluate());m&&(n.declare(m,{holdUntil:"simplify",domain:"Numbers"}),a.push(m),l.push(g),u.push(h),f.push(E))}),s.bind();for(let c=0;c<a.length;c++){let m=a[c],g=l[c],h=u[c],E=f[c];if(g>=h||i==="simplify"&&h-g>=tt)return;if(i==="evaluate"&&h-g>=tt&&(i="N"),i==="simplify"){let S=[];for(let T=g;T<=h;T++)n.assign(m,T),S.push(s.simplify());o=n.add(...S).simplify()}}let d=[];if(a.length>1)for(let c=0;c<a.length-1;c++)d.length===0?d=qi(vn(l[c],u[c]),vn(l[c+1],u[c+1])):d=qi(d.map(m=>m[0]),vn(l[c+1],u[c+1]));else d=vn(l[0],u[0]).map(c=>[c]);if(i==="evaluate"){let c=[];for(let m of d){let g=a.map((h,E)=>(n.assign(h,m[E]),h));c.push(s.evaluate())}o=n.add(...c).evaluate()}for(let c=0;c<a.length;c++)n.assign(a[c],void 0);if(i==="N")for(let c=0;c<a.length;c++){let m=a[c],g=l[c],h=u[c],E=f[c];if(o===null&&E)if(q(n)){let S=n.bignum(0);for(let T=g;T<=h;T++){n.assign(m,T);let _=He(s.N());if(_===null){o=void 0;break}if(_.isFinite()===!1){S=_;break}S=S.add(_)}o===null&&(o=n.number(S))}else{let S=n.numericMode,T=n.precision;n.numericMode="machine";let _=0;for(let w=g;w<=h;w++){n.assign(m,w);let W=b(s.N());if(W===null){o=void 0;break}if(!Number.isFinite(W)){_=W;break}_+=W}n.numericMode=S,n.precision=T,o===null&&(o=n.number(_))}else if(o===null){n.assign(m,1e3);let S=s.N();n.assign(m,999);let T=s.N(),_=b(n.div(S,T).N());if(_!==null&&Number.isFinite(_)&&Math.abs(_)>1)o=n.PositiveInfinity;else{let w=0,W=n.numericMode,pe=n.precision;n.numericMode="machine";for(let Re=g;Re<=h;Re++){n.assign(m,Re);let Pe=b(s.N());if(Pe===null){o=void 0;break}if(Math.abs(Pe)<Number.EPSILON||!Number.isFinite(Pe))break;w+=Pe}n.numericMode=W,n.precision=pe,o===null&&(o=n.number(w))}}}return n.popScope(),o??void 0}function kr(n){if(n.symbol==="ImaginaryUnit")return 1;let e=n.numericValue;if(e!==null&&e instanceof eu.default&&e.re===0)return e.im;if(n.head==="Negate")return-kr(n.op1);if(n.head==="Multiply"&&n.nops===2){if(n.op1.symbol==="ImaginaryUnit")return b(n.op2)??0;if(n.op2.symbol==="ImaginaryUnit")return b(n.op1)??0}if(n.head==="Divide"){let i=kr(n.op1),t=b(n.op2);return t===null?0:i/t}return 0}var tu=he(fe(),1);function ru(n){let e=n.numericValue;return e===null?null:(typeof e=="number"?e=-e:e instanceof N||e instanceof tu.Complex?e=e.neg():Array.isArray(e)&&(e=ue(e)),n.engine.number(e))}function Dt(n){let e=-1;for(;n.head==="Negate";)n=n.op1,e=-e;if(e===1)return n;if(n.numericValue!==null)return ru(n);let i=n.engine;if(n.head==="Subtract")return i.add(n.op2,Dt(n.op1));if(n.head==="Add"){let t=n.ops.map(r=>Dt(r));return i.add(...t)}return n.head==="Multiply"?yd(i,n.ops):n.head==="Divide"?i.div(Dt(n.op1),n.op2):i._fn("Negate",[n])}function xe(n){let e=-1;for(;n.head==="Negate";)n=n.op1,e=-e;if(e===1)return n;let i=n.engine;if(n.head==="Add"){let t=n.ops.map(r=>xe(r));return $n(i,ne(re(t),"Add"))}return n.numericValue!==null?ru(n):i._fn("Negate",[n])}function yd(n,e){let i=[],t=!1;for(let r of e)!t&&r.head==="Negate"?(t=!0,i.push(r.op1)):i.push(r);if(t)return n.mul(...i);i=[];for(let r of e)t||r.numericValue===null||!r.isInteger?i.push(r):(t=!0,i.push(xe(r)));if(t)return n.mul(...i);i=[];for(let r of e)t||r.numericValue===null||!r.isNumber?i.push(r):(t=!0,i.push(xe(r)));return t?n.mul(...i):n._fn("Negate",[n._fn("Multiply",e)])}function Cr(n,e,i="simplify"){return xe(e)}function _n(n,e){if(n.head==="Negate"&&e.head==="Negate")return _n(n.op1,e.op1);if(n.head==="Negate")return xe(_n(n.op1,e));if(e.head==="Negate")return xe(_n(n,e.op1));let i=n.engine;if(n.head==="Divide"&&e.head==="Divide"){let t=i.mul(n.op2,e.op2);return i.div(_n(n.op1,e.op1),t)}return n.head==="Divide"?i.div(_n(n.op1,e),n.op2):e.head==="Divide"?i.div(_n(n,e.op1),e.op2):n.head==="Add"?i.add(...n.ops.map(t=>_n(t,e))):e.head==="Add"?i.add(...e.ops.map(t=>_n(n,t))):i.mul(n,e)}function Un(n){return n.length===1?n[0]:n.length===2?_n(n[0],n[1]):_n(n[0],Un(n.slice(1)))}var It=[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1],[1,5,10,10,5,1],[1,6,15,20,15,6,1],[1,7,21,35,35,21,7,1],[1,8,28,56,70,56,28,8,1]];function Ed(n,e){for(;n>=It.length;){let i=It.length,t=[1],r=It[i-1];for(let o=1;o<i;o++)t[o]=r[o-1]+r[o];t[i]=1,It.push(t)}return It[n][e]}function vd(n){let e=n.reduce((t,r)=>t+r,0),i=1;for(let t=0;t<n.length;t+=1)i*=Ed(e,n[t]),e-=n[t];return i}function*ou(n,e){if(n===1){yield[e];return}for(let i=0;i<=e;i+=1)for(let t of ou(n-1,e-i))yield[i,...t]}function su(n){if(n.head!=="Power")return null;let e=V(n.op2);if(e===null||e<0)return null;if(e===0)return n.engine.One;if(e===1)return mn(n.op1);let i=n.engine;if(n.op1.head==="Negate"){let s=e%2===0?1:-1,a=su(i._fn("Power",[n.op1.op1,n.op2]));return a===null?null:s>0?a:i.neg(a)}if(n.op1.head,n.op1.head!=="Add")return null;let t=n.op1.ops,r=ou(t.length,e),o=[];for(let s of r){let a=[i.number(vd(s))];for(let l=0;l<s.length;l+=1)s[l]!==0&&(s[l]===1?a.push(t[l]):a.push(i.pow(t[l],s[l])));o.push(i.mul(...a))}return i.add(...o)}function jo(n){if(n.head&&n.ops){let e=n.ops.map(t=>jo(t)??t),i=n.engine.box([n.head,...e]);return mn(i)??i}return null}function Nd(n){if(n.head!=="Divide")return null;let e=mn(n.op1);if(e===null)return null;let i=n.engine;return e.head==="Add"?i.add(...e.ops.map(t=>i.div(t,n.op2))):n.engine.div(e,n.op2)}function mn(n){if(!n)return null;let e=Nd(n);if(e!==null||n.head==="Multiply"&&(e=Un(n.ops),e!==null))return e;if(n.head==="Add"){let i=n.ops.map(t=>mn(t)??t);return Ar(n.engine,i)}return n.head==="Negate"&&(e=mn(n.op1),e!==null)?n.engine.neg(e):n.head==="Power"&&(e=su(n),e!==null)?e:null}var uu=[{match:["Multiply","_x","__a"],replace:0,id:"ax",exact:!1,condition:({__a:n})=>!n.has("_x")},{match:["Add",["Divide","_a","_x"],"__b"],replace:1/0,exact:!1,condition:({_a:n,__b:e})=>!n.has("_x")&&!e.has("_x")},{match:["Add",["Multiply","_x","__a"],"__b"],replace:["Divide",["Negate","__b"],"__a"],exact:!1,condition:({__a:n,__b:e})=>!n.has("_x")&&!e.has("_x")},{match:["Add",["Multiply","_a",["Power","_x","_n"]],"__b"],replace:["Power",["Divide",["Negate","__b"],"_a"],["Divide",1,"_n"]],exact:!1,condition:({_a:n,__b:e,_n:i})=>!n.has("_x")&&!e.has("_x")&&!i.isZero},{match:["Add",["Multiply","__a",["Power","_x",2]],["Multiply","__b","_x"],"__c"],replace:["Divide",["Add",["Negate","__b"],["Sqrt",["Subtract",["Square","__b"],["Multiply",4,"__a","__c"]]]],["Multiply",2,"__a"]],exact:!1,condition:({__a:n,__b:e,__c:i})=>!n.has("_x")&&!e.has("_x")&&!i.has("_x")},{match:["Add",["Multiply","__a",["Power","_x",2]],["Multiply","__b","_x"],"__c"],replace:["Divide",["Subtract",["Negate","__b"],["Sqrt",["Subtract",["Square","__b"],["Multiply",4,"__a","__c"]]]],["Multiply",2,"__a"]],exact:!1,condition:({__a:n,__b:e,__c:i})=>!n.has("_x")&&!e.has("_x")&&!i.has("_x")},{match:["Add",["Multiply","__a",["Exp",["Multiply","__b","_x"]]],"__c"],replace:["Divide",["Ln",["Negate",["Divide","__c","__a"]]],"__b"],exact:!1,condition:({__a:n,__c:e},i)=>((!n.isZero&&i.div(e,n).isNegative)??!1)&&!n.has("_x")&&!e.has("_x")},{match:["Add",["Multiply","__a",["Exp","_x"]],"__c"],replace:["Ln",["Negate",["Divide","__c","__a"]]],exact:!1,condition:({__a:n,__c:e},i)=>((!n.isZero&&i.div(e,n).isNegative)??!1)&&!n.has("_x")&&!e.has("_x")}];function Mr(n,e){let i=n.engine;n.head==="Equal"&&(n=i.add(n.op1.canonical,i.neg(n.op2.canonical)).simplify());let t=i.getRuleSet("solve-univariate"),r=[n.subs({[e]:"_x"},{canonical:!1})],o=r.flatMap(s=>xt(s,t,{_x:i.symbol("_x")}));return o.length===0&&(r=r.flatMap(s=>au(s)),o=r.flatMap(s=>xt(s,t,{_x:i.symbol(e)}))),o.length===0&&(r=r.flatMap(s=>mn(s.canonical)).filter(s=>s!==null),r=r.flatMap(s=>au(s)),o=r.flatMap(s=>xt(s,t,{_x:i.symbol(e)}))),o.map(s=>s.evaluate().simplify())}var lu=[{match:["Add",["Abs",["Add",["Multiply","__a","_x"],"__b"]],"__c"],replace:["Add",["Multiply","__a","_x"],"__b","__c"]},{match:["Add",["Abs",["Add",["Multiply","__a","_x"],"__b"]],"__c"],replace:["Add",["Negate",["Multiply","__a","_x"]],["Negate","__b"],"__c"]},{match:["Multiply","__a",["Power","_b","_n"]],replace:"_b",condition:({__a:n,_b:e,_n:i})=>!n.has("_x")&&e.has("_x")&&!i.isZero&&!i.has("_x")},{match:["Multiply","__a",["Sqrt","_b"]],replace:["Multiply",["Square","_a"],"__b"],condition:({_b:n})=>n.has("_x")},{match:["Divide","_a","_b"],replace:"_a",condition:({_a:n,_b:e})=>n.has("_x")&&!e.isZero},{match:["Multiply","__a","_b"],replace:"_b",condition:({__a:n,_b:e})=>!n.has("_x")&&e.has("_x")},{match:["Add",["Ln","_a"],["Ln","_b"],"__c"],replace:["Add",["Ln",["Multiply","_a","_b"]],"__c"]},{match:["Multiply",["Exp","__a"],["Exp","__b"],"__c"],replace:["Multiply",["Exp",["Add","_a","_b"]],"__c"]},{match:["Ln","_a"],replace:["Subtract","_a",1],condition:({_a:n})=>n.has("_x")},{match:["Sin","_a"],replace:"_a",condition:({_a:n})=>n.has("_x")},{match:["Cos","_a"],replace:["Subtract","_a",["Divide","Pi",2]],condition:({_a:n})=>n.has("_x")},{match:["Tan","_a"],replace:"_a",condition:({_a:n})=>n.has("_x")},{match:["Add",["Sin","_a"],["Cos","_a"]],replace:1,condition:({_a:n})=>n.has("_x")},{match:["Subtract",["Square",["Sin","_a"]],["Square",["Cos","_a"]]],replace:["PlusMinus",["Sin","_a"],["Divide",["Sqrt",2],2]],condition:({_a:n})=>n.has("_x")}];function au(n){let e=n.engine,i=e.getRuleSet("harmonization");return xt(n,i,{_x:e.symbol("_x")})}function ze(n,e,i){if(!e.isValid||!i.isValid)return n._fn("Divide",[e,i]);if(e.head==="Negate"&&i.head==="Negate"&&(e=e.op1,i=i.op1),e.numericValue!==null&&i.numericValue!==null){if(i.isOne)return e;if(i.isNegativeOne)return n.neg(e);if(e.isOne)return n.inv(i);if(e.isNegativeOne)return n.neg(n.inv(i));let m=J(e),g=J(i);if(m&&g&&!Me(g))return n.number(G(m,un(g)))}if(e.head==="Divide"&&i.head==="Divide")return ze(n,n.mul(e.op1,i.op2),n.mul(e.op2,i.op1));if(e.head==="Divide")return ze(n,e.op1,n.mul(e.op2,i));if(i.head==="Divide")return ze(n,n.mul(e,i.op2),i.op1);let t=e.numericValue;if(t!==null){if(U(t)){let[m,g]=t;return ze(n,n.number(m),n.mul(n.number(g),i))}if(z(t)){let[m,g]=t;return ze(n,n.number(m),n.mul(n.number(g),i))}}let r=i.numericValue;if(r!==null){if(U(r)){let[m,g]=r;return ze(n,n.mul(e,n.number(g)),n.number(m))}if(z(r)){let[m,g]=r;return ze(n,n.mul(e,n.number(g)),n.number(m))}}let[o,s]=je(e),[a,l]=je(i);if(!X(o)||!X(a)){let[m,g]=nr(o,a),[h,E]=[n.mul(n.number(m),s),n.mul(n.number(g),l)];return E.isNegative&&(E=n.neg(E),h=n.neg(h)),E.head==="Negate"&&(E=E.op1,h=n.neg(h)),h.isZero?n.Zero:E.isOne?h:n._fn("Divide",[h,E])}let[u,f]=Ro(e),[d,c]=Ro(i);return f=f.canonical,c=c.canonical,c.numericValue!==null&&c.isOne?u*d<0?xe(f):f:u*d>0?n._fn("Divide",[f,c]):f.numericValue?n._fn("Divide",[xe(f),c]):xe(n._fn("Divide",[f,c]))}function kt(n,e,i){if(e.numericValue!==null&&i.numericValue!==null){let t=J(e),r=J(i);if(t&&r&&!Me(r))return n.number(G(t,un(r)))}return new Ln(n,[e,n.inv(i)]).asRationalExpression()}function Or(n,e,i){let t=kt(n,e,i);return t?.head==="Divide"&&(!t.op1.isExact||!t.op2.isExact)&&(t=Rn(e,i,(r,o)=>r/o,(r,o)=>r.div(o),(r,o)=>r.div(o))??t),t!==void 0?t:n._fn("Divide",[e,i])}function fu(n,e,i){let t=kt(n,e,i);t?.head==="Divide"&&(t=Rn(e,i,(o,s)=>o/s,(o,s)=>o.div(s),(o,s)=>o.div(s))??t);let r=t?.numericValue;if(z(r)){let[o,s]=r;return n.number(o/s)}if(U(r)){let[o,s]=r;return n.number(o/s)}return t!==void 0?t:n._fn("Divide",[e,i])}function At(n,e){if(e.every(s=>s.isCanonical),e.length===0)return n.One;if(e.length===1)return e[0];let i=[],t=1,r,o=0;for(let s of e)if(!s.isOne){if(s.isNegativeOne){t=-t;continue}if(s.head==="Negate"){t=-t,i.push(s.op1);continue}if(r===void 0&&typeof s.numericValue=="number"){r=s.numericValue,r<0&&(t=-t,r=-r);continue}if(s.numericValue!==null&&s.isNegative){t=-t,i.push(n.neg(s));continue}if(s.symbol==="ImaginaryUnit"){o++;continue}i.push(s)}return o>0&&(o%2===0?t=-t:(i.push(n.number(n.complex(0,t*(r??1)))),t=1,r=void 0)),typeof r=="number"&&(i.push(n.number(t*r)),t=1),t<0?i.length===0?n.NegativeOne:i.length===1?n.neg(i[0]):n.neg(n._fn("Multiply",i.sort(fn))):i.length===0?n.One:i.length===1?i[0]:n._fn("Multiply",i.sort(fn))}function du(n,e){e.every(t=>t.head!=="Multiply");let i=new Ln(n);for(let t of e){if(t=t.simplify(),t.isNaN||t.symbol==="Undefined")return n.NaN;i.addTerm(t)}return i.asExpression()}function wt(n,e,i="evaluate"){if(e.length===1)return e[0];if(i==="N"&&(e=e.map(t=>t.N()),(n.numericMode==="machine"||n.numericMode==="auto")&&e.every(t=>typeof t.numericValue=="number"))){let t=1;for(let r of e)t*=r.numericValue;return n.number(t)}for(let t of e){if(t.isNaN||t.symbol==="Undefined")return n.NaN;t.numericValue!==null&&!t.isExact&&(i="N")}return e.every(t=>t.head!=="Multiply"),i==="N"?e=e.map(t=>t.N()):e=e.map(t=>t.evaluate()),new Ln(n,e).asExpression(i)}function cu(n,e,i){n.pushScope(),e??(e=n.error("missing"));var t=void 0;if(i&&i.ops&&i.ops[0]?.head==="Delimiter"){var r=fr(i);if(!r)return null;var o=[e.canonical];r.forEach(a=>{o.push(a)}),t=n._fn("Product",o)}else{var s=Xn(i);t=s?n._fn("Product",[e.canonical,s]):n._fn("Product",[e.canonical])}return n.popScope(),t}function Rr(n,e,i){let t=e[0],r=[];if(e){r=[];for(let c=1;c<e.length;c++)r.push(e[c])}let o=null;if(r?.length===0||En(t)){let c=i==="simplify"?t.simplify():t.evaluate({numericMode:i==="N"});if(q(n)){let m=n.bignum(1);for(let g of Q(c)){let h=He(g);if(h===null){o=void 0;break}if(h.isFinite()===!1){m=h;break}m=m.mul(h)}o===null&&(o=n.number(m))}else{let m=1;for(let g of Q(c)){let h=b(g);if(h===null){o=void 0;break}if(h===null||!Number.isFinite(h)){m=h;break}m*=h}o===null&&(o=n.number(m))}return o??void 0}let s=t;n.pushScope();var a=[];let l=[],u=[],f=[];r.forEach(c=>{let[m,g,h,E]=Mn(c.evaluate());m&&(n.declare(m,{holdUntil:"simplify",domain:"Numbers"}),a.push(m),l.push(g),u.push(h),f.push(E))}),s.bind();for(let c=0;c<a.length;c++){let m=a[c],g=l[c],h=u[c],E=f[c];if(g>=h||i!=="N"&&(g>=h||h-g>=tt))return;if(i==="simplify"){let S=[];for(let T=g;T<=h;T++)n.assign({[m]:T}),S.push(s.simplify());o=n.mul(...S).simplify()}}let d=[];if(a.length>1)for(let c=0;c<a.length-1;c++)d.length===0?d=qi(vn(l[c],u[c]),vn(l[c+1],u[c+1])):d=qi(d.map(m=>m[0]),vn(l[c+1],u[c+1]));else d=vn(l[0],u[0]).map(c=>[c]);if(i==="evaluate"){let c=[];for(let m of d){let g=a.map((h,E)=>(n.assign(h,m[E]),h));c.push(s.evaluate())}o=n.mul(...c).evaluate()}if(i==="N")for(let c=0;c<a.length;c++){let m=a[c],g=l[c],h=u[c],E=f[c];if(o===null&&E){if(q(n)){let w=n.bignum(1);for(let W=g;W<=h;W++){n.assign({[m]:W});let pe=He(s.N());if(pe===null||pe.isFinite()===!1){o=pe!==null?n.number(pe):void 0;break}w=w.mul(pe)}o===null&&(o=n.number(w))}let S=1,T=n.numericMode,_=n.precision;n.numericMode="machine";for(let w=g;w<=h;w++){n.assign({[m]:w});let W=b(s.N());if(W===null||!Number.isFinite(W)){o=W!==null?n.number(W):void 0;break}S*=W}n.numericMode=T,n.precision=_,o===null&&(o=n.number(S))}if(o===null){n.assign({[m]:1e3});let S=s.N();n.assign({[m]:999});let T=s.N(),_=b(n.div(S,T).N());if(_!==null&&Number.isFinite(_)&&Math.abs(_)>1)o=n.PositiveInfinity;else{let w=1,W=n.numericMode,pe=n.precision;n.numericMode="machine";for(let Re=g;Re<=h;Re++){n.assign({[m]:Re});let Pe=b(s.N());if(Pe===null){o=void 0;break}if(Math.abs(1-Pe)<Number.EPSILON||!Number.isFinite(Pe))break;w*=Pe}o===null&&(o=n.number(w)),n.numericMode=W,n.precision=pe}}}for(let c=0;c<a.length;c++)n.assign(a[c],void 0);return n.popScope(),o??void 0}var ye=class n extends F{constructor(i,t,r,o){o=o?{...o}:{},o.canonical??(o.canonical=!1);super(i,o.metadata);this._result=void 0;this._head=t,this._ops=r,o.canonical&&(this._canonical=this,this.bind()),i._register(this)}get hash(){if(this._hash!==void 0)return this._hash;let i=0;for(let t of this._ops)i=i<<1^t.hash|0;return typeof this._head=="string"?i=i^Te(this._head)|0:i=i^this._head.hash|0,this._hash=i,i}infer(i){let t=this._def;return!t||!t.signature.inferredSignature?!1:(typeof t.signature.result!="function"&&(t.signature.result=Nt(t.signature.result,i)),!0)}bind(){this._def=void 0,this._scope=this.engine.context;let i=this._head;if(typeof i!="string"){i.bind();return}this._def=this.engine.lookupFunction(i);for(let t of this._ops)t.bind()}reset(){}get isExact(){return Zi(this)&&this.op1.isExact}get isCanonical(){return this._canonical===this}set isCanonical(i){this._canonical=i?this:void 0}get isPure(){if(this._isPure!==void 0)return this._isPure;if(!this.isCanonical)return this._isPure=!1,!1;let i=this.functionDefinition?.pure??!1;return i&&(i=this._ops.every(t=>t.isPure)),this._isPure=i,i}get json(){return[typeof this._head=="string"?this._head:this._head.json,...this.ops.map(t=>t.json)]}get scope(){return this._scope}get head(){return this._head}get ops(){return this._ops}get nops(){return this._ops.length}get op1(){return this._ops[0]??this.engine.Nothing}get op2(){return this._ops[1]??this.engine.Nothing}get op3(){return this._ops[2]??this.engine.Nothing}get isValid(){return this._head==="Error"||typeof this._head!="string"&&!this._head.isValid?!1:this._ops.every(i=>i?.isValid)}get canonical(){return this._canonical??(this._canonical=this.isValid?this.engine.function(this._head,this._ops):this),this._canonical}subs(i,t){let r=this._ops.map(o=>o.subs(i,t));return r.every(o=>o.isValid)?this.engine.function(this._head,r,t):this.engine.function(this._head,r,{canonical:!1})}replace(i,t){return Er(this,i,t)}has(i){if(typeof this._head=="string"){if(typeof i=="string"){if(this._head===i)return!0}else if(i.includes(this._head))return!0}for(let t of this._ops)if(t.has(i))return!0;return!1}isSame(i){if(this===i)return!0;if(!(i instanceof n)||this.nops!==i.nops)return!1;if(typeof this.head=="string"){if(this.head!==i.head)return!1}else if(typeof i.head=="string"||!i.head||!this.engine.box(this.head).isSame(this.engine.box(i.head)))return!1;let t=this._ops,r=i._ops;for(let o=0;o<t.length;o++)if(!t[o].isSame(r[o]))return!1;return!0}match(i,t){return Hi(this,i,t)}get complexity(){if(this.isCanonical)return this.functionDefinition?.complexity??bn}get baseDefinition(){return this.functionDefinition}get functionDefinition(){return this._def}isEqual(i){if(this===i)return!0;let t=this.head;if(t==="Equal"||t==="NotEqual"||t==="Unequal")return i.head!==t?!1:!!(this.op1.isEqual(i.op1)&&this.op2.isEqual(i.op2)||this.op1.isEqual(i.op2)&&this.op2.isEqual(i.op1));if(t==="Less")return i.head==="Less"?!!(this.op1.isEqual(i.op1)&&this.op2.isEqual(i.op2)):i.head==="Greater"?!!(this.op1.isEqual(i.op2)&&this.op2.isEqual(i.op1)):!1;if(t==="Greater")return i.head==="Greater"?!!(this.op1.isEqual(i.op1)&&this.op2.isEqual(i.op2)):i.head==="Less"?!!(this.op1.isEqual(i.op2)&&this.op2.isEqual(i.op1)):!1;if(t==="LessEqual")return i.head==="LessEqual"?!!(this.op1.isEqual(i.op1)&&this.op2.isEqual(i.op2)):i.head==="GreaterEqual"?!!(this.op1.isEqual(i.op2)&&this.op2.isEqual(i.op1)):!1;if(t==="GreaterEqual")return i.head==="GreaterEqual"?!!(this.op1.isEqual(i.op1)&&this.op2.isEqual(i.op2)):i.head==="LessEqual"?!!(this.op1.isEqual(i.op2)&&this.op2.isEqual(i.op1)):!1;if(wn(t))return i.head!==this.head?!1:!!(this.op1.isEqual(i.op1)&&this.op2.isEqual(i.op2));let r=bi(this,i);return r===0?!0:r!==void 0?!1:this.engine.add(this,this.engine.neg(i)).simplify().isZero?!0:this.isSame(i)}get isNumber(){return this.domain?.isCompatible("Numbers")}get isInteger(){return this.domain?.isCompatible("Integers")}get isRational(){return this.domain?.isCompatible("RationalNumbers")}get isAlgebraic(){return this.domain?.isCompatible("AlgebraicNumbers")}get isReal(){return this.domain?.isCompatible("RealNumbers")}get isExtendedReal(){return this.domain?.isCompatible("ExtendedRealNumbers")}get isComplex(){return this.domain?.isCompatible("ComplexNumbers")}get isImaginary(){return this.domain?.isCompatible("ImaginaryNumbers")}get domain(){if(this._result!==void 0)return this._result;if(!this.canonical)return;let i=this.engine,t;if(typeof this._head!="string")t=this._head.domain;else if(this._def){let r=this._def.signature;typeof r.result=="function"?t=r.result(i,this._ops):t=r.result}return t??(t=void 0),this._result=t,t}simplify(i){if(!this.isValid)return this;if(!this.isCanonical){let u=this.canonical;return!u.isCanonical||!u.isValid?this:u.simplify(i)}let t=i?.recursive??!0,r;if(t&&(r=mn(this),r!==null))return r.ops?(r=this.engine._fn(r.head,r.ops.map(u=>u.simplify(i))).simplify({...i,recursive:!1}),Ho(this,r)):r;let o=this.functionDefinition,s=t?mu(this._ops,o?.hold??"none",o?.associative?o.name:"",u=>u.simplify(i)):this._ops;if(typeof this._head!="string")return r=vi(this._head,s),typeof r.head!="string"?r:r.simplify(i);if(o)if(o.inert)r=s[0]?.canonical??this;else{let u=o.signature;u?.simplify&&(r=u.simplify(this.engine,s))}if(r?r=Ho(this.engine.box([this._head,...s]),r):r=this.engine.box([this._head,...s]),r=Ho(this,r),i?.rules===null)return r;let a=i?.rules??this.engine.getRuleSet("standard-simplification"),l=0;do{let u=r.replace(a);if(!u)break;r=u.simplify({rules:null}),l+=1}while(l<this.engine.iterationLimit);return r}evaluate(i){if(!this.isValid)return this;if(i?.numericMode){let a=this.head;if(a==="Integrate"||a==="Limit")return this.engine.box(["N",this],{canonical:!0}).evaluate(i)}if(!this.isCanonical){this.engine.pushScope();let a=this.canonical;return this.engine.popScope(),!a.isCanonical||!a.isValid?this:a.evaluate(i)}let t=this.functionDefinition;if(t?.threadable&&this.ops.some(a=>de(a))){let a=Math.max(...this._ops.map(u=>u.functionDefinition?.size?.(u)??0)),l=[];for(let u=0;u<=a-1;u++){let f=this._ops.map(d=>de(d)?ya(d,u%a+1)??this.engine.Nothing:d);l.push(this.engine._fn(this.head,f).evaluate(i))}return l.length===0?this.engine.box(["Sequence"]):l.length===1?l[0]:this.engine._fn("List",l)}let r=mu(this._ops,t?.hold??"none",t?.associative?t.name:"",a=>a.evaluate(i));if(t?.inert)return r[0]??this;let o;typeof this._head!="string"&&(o=vi(this._head,r));let s=t?.signature;if(!o&&s){let a=i?.numericMode??!1,l=this.engine.swapScope(this.scope);a&&s.N&&(o=s.N(this.engine,r)),!o&&s.evaluate&&(o=s.evaluate(this.engine,r)),this.engine.swapScope(l)}if(o){let a=o.numericValue;a!==null&&(!le(this.engine)&&a instanceof pu.Complex?o=this.engine.NaN:!q(this.engine)&&a instanceof N&&(o=this.engine.number(a.toNumber())))}return o??this.engine.box([this._head,...r])}N(i){return this.evaluate({...i,numericMode:!0})}solve(i){let t=pt(i);return t.length!==1?null:Mr(this.simplify(),t[0])}};function _d(n,e,i,t){let r=[];if(e==="Add"||e==="Multiply")r=Ue(n,gt(n,i),{flatten:e});else if(e==="Negate"||e==="Square"||e==="Sqrt"||e==="Exp"||e==="Ln")r=Ue(n,gt(n,i),1);else if(e==="Power")r=Ue(n,gt(n,i),2);else if(e==="Divide")r=Ue(n,gt(n,i));else return null;if(!r.every(o=>o.isValid))return n._fn(e,r,t);if(e==="Add")return $n(n,ne(re(r),"Add"));if(e==="Negate")return xe(r[0]);if(e==="Multiply")return At(n,ne(re(r),"Multiply"));if(e==="Divide")return r.slice(1).reduce((o,s)=>ze(n,o,s),r[0]);if(e==="Exp")return Fn(n,n.E,r[0].canonical);if(e==="Power")return Fn(n,r[0].canonical,r[1].canonical);if(e==="Square")return Fn(n,r[0].canonical,n.number(2));if(e==="Sqrt"){let o=r[0].canonical;return M(o.numericValue)?n._fn("Sqrt",[o],t):Fn(n,o,n.Half)}return e==="Ln"?n._fn("Ln",r,t):null}function hu(n,e,i,t){if(typeof e!="string"&&(n.pushScope(),e=e.evaluate().symbol??e,n.popScope()),typeof e=="string"){let u=_d(n,e,i,t);if(u)return u}else if(!e.isValid)return new ye(n,e,i.map(u=>n.box(u,{canonical:!1})),{metadata:t,canonical:!1});let r=n.lookupFunction(e);if(!r)return new ye(n,e,re(i.map(u=>n.box(u))),{metadata:t,canonical:!0});let o=[];for(let u=0;u<i.length;u++)if(!Cn(r.hold,i.length-1,u))o.push(n.box(i[u]));else{let f=n.box(i[u],{canonical:!1});f.head==="ReleaseHold"?o.push(f.op1.canonical):o.push(f)}let s=r.signature;if(s.canonical){try{let u=s.canonical(n,o);if(u)return u}catch(u){console.error(u)}return new ye(n,e,o,{metadata:t,canonical:!1})}let a=re(o);r.associative&&(a=ne(a,e));let l=Ea(n,a,r.hold,r.threadable,s.params,s.optParams,s.restParam);if(l)return n._fn(e,l,t);if(a.length===1&&a[0].head===e){if(r.involution)return a[0].op1;r.idempotent&&(a=o[0].ops)}return a.length>1&&r.commutative===!0&&(a=[...a].sort(fn)),n._fn(e,a,t)}function mu(n,e,i,t){if(n.length===0)return[];if(n=ne(n,i),e==="all")return n;if(e==="none"){let o=[];for(let s of n){let a=s.head;if(a==="Hold")o.push(s);else{let l=a==="ReleaseHold"?s.op1:s;if(l){let u=t(l);u!==null&&o.push(u)}}}return ne(o,i)}let r=[];for(let o=0;o<n.length;o++)if(n[o].head==="Hold")r.push(n[o]);else{let s;if(n[o].head==="ReleaseHold"?s=n[o].op1:Cn(e,n.length-1,o)?r.push(n[o]):s=n[o],s){let a=t(s);a!==null&&r.push(a)}}return ne(r,i)}function Ho(n,e){if(e==null||n===e)return n;let i=n.engine,t=i.box(e);return n.isSame(t)?n:i.costFunction(t)<=1.2*i.costFunction(n)?t:n}var Qo=he(fe(),1);function Pr(n,e){switch(e){case"float64":case"float32":case"int32":case"uint8":return new Jo(n);case"complex128":case"complex64":return new Yo(n);case"bool":case"string":case"expression":return new Wo(n)}throw new Error(`Unknown dtype ${e}`)}var Jo=class{constructor(e){this.ce=e;this.one=1;this.zero=0;this.nan=NaN}cast(e,i){let t=this.ce;switch(i){case"float64":case"float32":case"int32":case"uint8":return e;case"complex128":case"complex64":return Array.isArray(e)?e.map(r=>t.complex(r)):this.ce.complex(e);case"bool":return Array.isArray(e)?e.map(r=>r!==0):e!==0;case"string":return Array.isArray(e)?e.map(r=>Number(r).toString()):Number(e).toString();case"expression":return Array.isArray(e)?e.map(r=>t.number(r)):t.number(e)}throw new Error(`Cannot cast ${e} to ${i}`)}expression(e){return this.ce.number(e)}isZero(e){return e===0}isOne(e){return e===1}equals(e,i){return e===i}add(e,i){return e+i}addn(...e){return e.reduce((i,t)=>i+t,0)}neg(e){return-e}sub(e,i){return e-i}mul(e,i){return e*i}muln(...e){return e.reduce((i,t)=>i*t,1)}div(e,i){return e/i}pow(e,i){return e**i}conjugate(e){return e}},Wo=class{constructor(e){this.one=e.One,this.zero=e.Zero,this.nan=e.NaN,this.ce=e}cast(e,i){if(Array.isArray(e))return e.map(r=>this.cast(r,i));let t=e.value;switch(i){case"float64":case"float32":return typeof t=="number"?t:void 0;case"int32":return typeof t=="number"?Math.round(t):void 0;case"uint8":if(typeof t!="number")return;let r=Math.round(t);return r>=0&&r<=255?r:void 0;case"complex128":case"complex64":if(typeof t=="number")return this.ce.complex(t);let o=e.numericValue;return o instanceof Qo.default?o:void 0;case"bool":return typeof t=="boolean"?t:void 0;case"string":return typeof t=="string"?t:void 0;case"expression":return e}throw new Error(`Cannot cast ${e} to ${i}`)}expression(e){return e}isZero(e){return e.isZero??!1}isOne(e){return e.isOne??!1}equals(e,i){return e.isEqual(i)}add(e,i){return this.ce.add(e,i)}addn(...e){return this.ce.add(...e)}neg(e){return this.ce.neg(e)}sub(e,i){return this.ce.add(e,this.ce.neg(i))}mul(e,i){return this.ce.mul(e,i)}muln(...e){return this.ce.mul(...e)}div(e,i){return this.ce.div(e,i)}pow(e,i){return this.ce.pow(e,i)}conjugate(e){return this.ce.box(["Conjugate",e])}},Yo=class{constructor(e){this.ce=e,this.one=e.complex(1),this.zero=e.complex(0),this.nan=e.complex(NaN)}cast(e,i){if(Array.isArray(e))return e.map(t=>this.cast(t,i));switch(i){case"float64":return e.im===0?e.re:void 0;case"float32":return e.im===0?e.re:void 0;case"int32":return e.im===0?Math.round(e.re):void 0;case"uint8":if(e.im!==0)return;let t=Math.round(e.re);return t>=0&&t<=255?t:void 0;case"complex128":return e;case"complex64":return e;case"bool":return!(e.im===0&&e.re===0);case"string":return e.toString();case"expression":return this.ce.number(e)}throw new Error(`Cannot cast ${e} to ${i}`)}expression(e){return this.ce.number(e)}isZero(e){return e.isZero()}isOne(e){return e.re===1&&e.im===0}equals(e,i){return e.equals(i)}add(e,i){return e.add(i)}addn(...e){return e.reduce((i,t)=>i.add(t),this.zero)}neg(e){return e.neg()}sub(e,i){return e.sub(i)}mul(e,i){return e.mul(i)}muln(...e){return e.reduce((i,t)=>i.mul(t),this.one)}div(e,i){return e.div(i)}pow(e,i){return e.pow(i)}conjugate(e){return e.conjugate()}};function Fr(n,e){return n===e?n:n==="string"||e==="string"||n==="expression"||e==="expression"?"expression":n==="complex128"||e==="complex128"?"complex128":n==="complex64"||e==="complex64"?"complex64":n==="float64"||e==="float64"?"float64":n==="float32"||e==="float32"?"float32":n==="int32"||e==="int32"?"int32":n==="uint8"||e==="uint8"?"uint8":n==="bool"||e==="bool"?"bool":"expression"}function Xo(n){let e=n.value;if(typeof e=="number")return Number.isInteger(e)?e>=0&&e<=255?"uint8":"int32":"float64";let i=n.numericValue;return i!==null&&i instanceof Qo.default?"complex128":n.string?"string":"expression"}var ti=class n{constructor(e,i){this.ce=e;this.shape=i.shape,this.rank=this.shape.length,this._strides=Sd(this.shape),this.field=Pr(e,i.dtype)}static align(e,i){if(e.dtype===i.dtype)return[e,i];let t=Fr(e.dtype,i.dtype);return e.dtype===t?[e,i.upcast(t)]:[e.upcast(t),i]}static broadcast(e,i,t){if(!(t instanceof n))return i.map1(e,t);let[r,o]=n.align(i,t),s=r.data.map((a,l)=>e(a,o.data[l]));return Sn(r.ce,{dtype:r.dtype,shape:r.shape,data:s})}get expression(){let e=this.shape,i=this.rank,t=this.data,r=this._index.bind(this),o=this.field.expression.bind(this.field),s=a=>{if(a.length===i-1){let l=r(a),u=this.ce._fn("List",t.slice(l,l+e[i-1]).map(f=>o(f)));return u.isCanonical=u.ops.every(f=>f.isCanonical),u}else{let l=[];for(let f=0;f<=e[a.length]-1;f++)l.push(s([...a,f+1]));let u=this.ce._fn("List",l);return u.isCanonical=u.ops.every(f=>f.isCanonical),u}};return s([])}get array(){let e=this.shape,i=this.rank,t=this.data;if(i===1)return t;if(i===2){let[s,a]=e,l=new Array(s);for(let u=0;u<s;u++)l[u]=t.slice(u*a,(u+1)*a);return l}let r=this._index.bind(this),o=s=>{if(s.length===i-1){let a=r(s);return t.slice(a,a+e[i-1])}else{let a=[];for(let l=0;l<e[s.length];l++)a.push(o([...s,l+1]));return a}};return o([])}_index(e){let i=this._strides;return e.reduce((t,r,o)=>t+(r-1)*i[o],0)}get isSquare(){let e=this.shape;return e.length===2&&e[0]===e[1]}get isSymmetric(){if(!this.isSquare)return!1;let e=this.shape[0],i=this.data,t=this.field.equals.bind(this.field);for(let r=0;r<e;r++)for(let o=r+1;o<e;o++)if(!t(i[r*e+o],i[o*e+r]))return!1;return!0}get isSkewSymmetric(){if(!this.isSquare)return!1;let e=this.shape[0],i=this.data,t=this.field.equals.bind(this.field),r=this.field.neg.bind(this.field);for(let o=0;o<e;o++)for(let s=o+1;s<e;s++)if(!t(i[o*e+s],r(i[s*e+o])))return!1;return!0}get isUpperTriangular(){if(!this.isSquare)return!1;let e=this.shape[0],i=this.data,t=this.field.isZero.bind(this.field);for(let r=1;r<e;r++)for(let o=0;o<r;o++)if(t(i[r*e+o]))return!1;return!0}get isLowerTriangular(){if(!this.isSquare)return!1;let e=this.shape[0],i=this.data,t=this.field.isZero.bind(this.field);for(let r=0;r<e-1;r++)for(let o=r+1;o<e;o++)if(!t(i[r*e+o]))return!1;return!0}get isTriangular(){if(!this.isSquare)return!1;let e=this.shape[0],i=this.data,t=this.field.isZero.bind(this.field);for(let r=0;r<e;r++)for(let o=0;o<e;o++)if(r<o&&!t(i[r*e+o])||r>o&&!t(i[r*e+o]))return!1;return!0}get isDiagonal(){if(!this.isSquare)return!1;let e=this.shape[0],i=this.data,t=this.field.isZero.bind(this.field);for(let r=0;r<e;r++)for(let o=0;o<e;o++)if(r===o&&!t(i[r*e+o])||r!==o&&!t(i[r*e+o]))return!1;return!0}get isIdentity(){if(!this.isSquare)return!1;let[e,i]=this.shape,t=this.data,r=this.field.isOne.bind(this.field),o=this.field.isZero.bind(this.field);for(let s=0;s<i;s++)for(let a=0;a<i;a++)if(s===a&&!r(t[s*i+a])||s!==a&&!o(t[s*i+a]))return!1;return!0}get isZero(){let e=this.field.isZero.bind(this.field);return this.data.every(i=>e(i))}at(...e){let i=this.data.length;return this.data[this._index(e)%i]}diagonal(e,i){if(e??(e=1),i??(i=2),e===i||e<=0||e>this.shape.length||this.shape[e-1]!==this.shape[i-1])return;let t=new Array(this.shape[e-1]),r=this.data,o=this.shape[e-1];for(let s=0;s<o;s++)t[s]=r[s*o+s];return t}trace(e,i){if(this.rank!==2)return;let[t,r]=this.shape;if(t!==r)return;let o=this.data,s=new Array(t);for(let a=0;a<t;a++)s[a]=o[a*t+a];return this.field.addn(...s)}reshape(...e){return Sn(this.ce,{dtype:this.dtype,shape:e,data:this.data})}flatten(){return this.data}upcast(e){let i=this.field.cast(this.data,e);if(i===void 0)throw Error(`Cannot cast tensor to ${e}`);return Sn(this.ce,{dtype:e,shape:this.shape,data:i})}transpose(e,i,t){if(this.rank!==2)return;if(e??(e=1),i??(i=2),e===i)return this;if(e<=0||e>2||i<=0||i>2)return;let[r,o]=this.shape,s=this.data;t&&(s=s.map(f=>t(f)));let a=0,l=new Array(r*o),u=o;for(let f=0;f<o;f++)for(let d=0;d<r;d++)l[a++]=s[d*u+f];return Sn(this.ce,{dtype:this.dtype,shape:[o,r],data:l})}conjugateTranspose(e,i){let t=this.field.conjugate.bind(this.field);return this.transpose(e,i,t)}determinant(){if(this.rank!==2)return;let[e,i]=this.shape;if(e!==i)return;if(e===1)return this.data[0];let t=this.field.add.bind(this.field),r=this.field.mul.bind(this.field),o=this.field.neg.bind(this.field);if(e===2){let[h,E,S,T]=this.data;return t(r(h,T),o(r(E,S)))}let s=this.field.addn.bind(this.field),a=this.field.muln.bind(this.field);if(e===3){let[h,E,S,T,_,w,W,pe,Re]=this.data;return s([a(h,_,Re),a(E,w,W),a(S,T,pe),o(a(S,_,W)),o(a(E,T,Re)),o(a(h,w,pe))])}let l=this.shape[0],u=!1,f=this.field.div.bind(this.field),d=this.field.sub.bind(this.field),c=new Array(l).fill(0).map((h,E)=>E),m=[...this.data];for(let h=0;h<l;h++){let E=c[h-1];if(this.at(E,h)===0){let _;for(_=h+1;_<l;_++)if(this.at(c[_],h)!==0){E=c[_],c[_-1]=c[h-1],c[h-1]=E,u=!u;break}if(_===l)return this.at(E,h)}let S=this.at(E,h),T=h===0?1:this.at(c[h-2],h-2);for(let _=h+1;_<l;_++){let w=c[_-1];for(let W=h+1;W<l;W++)m[w][W]=f(d(r(m[w][W],S),r(m[w][h],m[E][W])),T)}}let g=m[c[l-1]][l-1];return u?this.field.neg(g):g}inverse(){if(this.rank!==2)return;let[e,i]=this.shape;if(e!==i)return;if(e===2){let[c,m,g,h]=this.data,E=this.determinant();if(E===void 0||this.field.isZero(E))return;let S=this.field.div.bind(this.field),T=this.field.neg.bind(this.field),_=[S(h,E),T(S(m,E)),T(S(g,E)),S(c,E)];return Sn(this.ce,{dtype:this.dtype,shape:[i,i],data:_})}let t=this.shape[0],r=this.field.div.bind(this.field),o=this.field.sub.bind(this.field),s=this.field.mul.bind(this.field),a=this.array,l=new Array(t).fill(0).map((c,m)=>{let g=new Array(t).fill(0);return g[m]=1,g}),u=a.map((c,m)=>[...c,...l[m]]),f=new Array(t).fill(0).map((c,m)=>m);for(let c=0;c<t;c++){let m=f[c-1];if(this.at(m,c)===0){let E;for(E=c+1;E<t;E++)if(this.at(f[E],c)!==0){m=f[E],f[E-1]=f[c-1],f[c-1]=m;break}if(E===t)return}let g=this.at(m,c),h=c===0?1:this.at(f[c-2],c-2);for(let E=c+1;E<t;E++){let S=f[E-1];for(let T=c+1;T<t*2;T++)u[S][T]=o(u[S][T],s(r(s(u[S][c],u[m][T]),g),h))}}for(let c=t-1;c>=0;c--){let m=u[f[c],c];for(let g=0;g<c;g++){let h=f[g];for(let E=t;E<t*2;E++)u[h][E]=o(u[h][E],s(r(s(u[h][c],u[c][E]),m),m))}for(let g=t;g<t*2;g++)u[c][g]=r(u[c][g],m)}let d=u.map(c=>c.slice(t));return Sn(this.ce,{dtype:this.dtype,shape:[i,i],data:d})}pseudoInverse(){}adjugateMatrix(){}minor(e,i){}map1(e,i){return Sn(this.ce,{dtype:this.dtype,shape:this.shape,data:this.data.map(t=>e(t,i))})}map2(e,i){let t=i.data;return Sn(this.ce,{dtype:this.dtype,shape:this.shape,data:this.data.map((r,o)=>e(r,t[o]))})}add(e){return n.broadcast(this.field.add.bind(this.field),this,e)}subtract(e){return n.broadcast(this.field.sub.bind(this.field),this,e)}multiply(e){return n.broadcast(this.field.mul.bind(this.field),this,e)}divide(e){return n.broadcast(this.field.div.bind(this.field),this,e)}power(e){return n.broadcast(this.field.pow.bind(this.field),this,e)}equals(e){if(this.rank!==e.rank||!this.shape.every((o,s)=>o===e.shape[s]))return!1;let i=this.field.equals.bind(this.field),t=this.field.cast.bind(this.field),r=this.dtype;return this.dtype!==e.dtype?!!this.data.every((o,s)=>i(o,t(e.data[s],r))):this.data.every((o,s)=>i(o,e.data[s]))}};function Sd(n){let e=new Array(n.length);for(let i=n.length-1,t=1;i>=0;i--)e[i]=t,t*=n[i];return e}var Ko=class extends ti{constructor(i,t){super(i,t);this.dtype="float64";this.data=t.data}get isZero(){return this.data.every(i=>i===0)}},es=class extends ti{constructor(i,t){super(i,t);this.dtype="complex128";this.data=t.data}},ns=class extends ti{constructor(i,t){super(i,t);this.dtype="bool";this.data=t.data}},is=class extends ti{constructor(i,t){super(i,t);this.dtype="expression";this.data=t.data}};function Sn(n,e){let i=e.dtype;return i==="float64"||i==="float32"||i==="uint8"||i==="int32"?new Ko(n,e):i==="bool"?new ns(n,e):i==="complex64"||i==="complex128"?new es(n,e):new is(n,e)}var Si=class n extends F{constructor(e,i,t){t=t?{...t}:{},t.canonical??(t.canonical=!0),super(e,t.metadata),i instanceof ti?this._tensor=i:(this._head=i.head??"List",this._ops=t.canonical===!0?oe(i.ops):i.ops,this._expression=e._fn(this._head,this._ops,{canonical:t.canonical})),e._register(this)}get expression(){return this._expression??(this._expression=this._tensor.expression),this._expression}get tensor(){if(this._tensor===void 0){this._head,this._ops;let e=Bd(this._head,this._ops);if(e===void 0)throw new Error("Invalid tensor");this._tensor=Sn(this.engine,e)}return this._tensor}get baseDefinition(){return this.expression.baseDefinition}get functionDefinition(){return this.expression.functionDefinition}bind(){this.expression.bind()}reset(){}get hash(){return Te("BoxedTensor")}get canonical(){return this.isCanonical?this:new n(this.engine,{head:this._head,ops:this._ops},{canonical:!0})}get isCanonical(){return this._tensor?!0:this._expression.isCanonical}set isCanonical(e){this._tensor||(this.expression.isCanonical=e)}get isPure(){return this._tensor?!0:this.expression.isPure}get isValid(){return this._tensor?!0:this.expression.isValid}get complexity(){return 97}get head(){return this._tensor?"List":this._head}get nops(){return this._tensor?this._tensor.shape[0]:this.expression.nops}get ops(){return this.expression.ops}get op1(){if(this._tensor){let e=this._tensor.data;return e.length===0?this.engine.Nothing:this.engine.box(e[0])}return this.expression.op1}get op2(){if(this._tensor){let e=this._tensor.data;return e.length<2?this.engine.Nothing:this.engine.box(e[1])}return this.expression.op2}get op3(){if(this._tensor){let e=this._tensor.data;return e.length<3?this.engine.Nothing:this.engine.box(e[2])}return this.expression.op3}get shape(){return this.tensor.shape}get rank(){return this.tensor.rank}get domain(){return this._tensor?this.engine.domain("Lists"):this.expression.domain}get json(){return this.expression.json}isSame(e){return this===e?!0:e instanceof n?this.tensor.equals(e.tensor):this.expression.isSame(e)}isEqual(e){return this===e?!0:e instanceof n?this.tensor.equals(e.tensor):this.expression.isEqual(e)}match(e,i){return dn(e)||(e=this.engine.box(e,{canonical:!1})),Je(e)?{[We(e)]:this}:this.expression.match(e,i)}evaluate(e){return this._tensor?this:this.expression.evaluate(e)}simplify(e){return this._tensor?this:this.expression.simplify(e)}N(e){return this._tensor?this:this.expression.N(e)}};function qe(n){return n instanceof Si}function ts(n,e){let i,t=[],r=!0,o=(s,a=0)=>{if(s.length!==0){s.length>1&&t[a]!==void 0?r=r&&t[a]===s.length:t[a]=Math.max(t[a]??0,s.length);for(let l of s)if(l.head===n?o(l.ops,a+1):i===void 0?i=Xo(l):i=Fr(i,Xo(l)),!r)return}};if(o(e),!!r)return{shape:t,dtype:i}}function Bd(n,e){let{shape:i,dtype:t}=ts(n,e)??{shape:[],dtype:void 0};if(t===void 0)return;let r=!0,o=[],s=Pr(e[0].engine,"expression"),a=s.cast.bind(s),l=u=>{for(let f of u)if(f.head===n)l(f.ops);else{let d=a(f,t);if(d===void 0){r=!1;return}o.push(d)}};if(l(e),!!r)return{shape:i,data:o,dtype:t}}var ri=class n extends F{constructor(i,t,r){r??(r={});super(i,r.metadata);this._value=new Map;let o=r.canonical??!0;if(t instanceof Map)for(let[s,a]of t)this._value.set(s,i.box(a,{canonical:o}));else for(let s of Object.keys(t))this._value.set(s,i.box(t[s],{canonical:o}));i._register(this)}bind(){for(let[i,t]of this._value)t.bind()}reset(){for(let[i,t]of this._value)t.reset()}get hash(){let i=Te("Dictionary");for(let[t,r]of this._value)i^=Te(t)^r.hash;return i}get complexity(){return 97}get head(){return"Dictionary"}get isPure(){return!1}getKey(i){return this._value.get(i)}hasKey(i){return this._value.has(i)}get keys(){return this._value.keys()}get keysCount(){return this._value.size}has(i){for(let[t,r]of this._value)if(r.has(i))return!0;return!1}get domain(){return this.engine.domain("Dictionaries")}get json(){let i=this.engine,t=[];for(let r of this._value.keys())t.push(i._fn("KeyValuePair",[i.string(r),this._value.get(r)]));return["Dictionary",...t.map(r=>r.json)]}isSame(i){if(this===i)return!0;if(!(i instanceof n)||this._value.size!==i._value.size)return!1;for(let[t,r]of this._value){let o=i.getKey(t);if(!o||!r.isSame(o))return!1}return!0}match(i,t){if(dn(i)||(i=this.engine.box(i,{canonical:!1})),Je(i))return{[We(i)]:this};if(!(i instanceof n)||this._value.size!==i._value.size)return null;let r={};for(let[o,s]of this._value){let a=i.getKey(o);if(!a)return null;let l=s.match(a,t);if(l===null)return null;r={...r,...l}}return r}isEqual(i){if(this===i)return!0;if(!(i instanceof n)||!i.keys||this._value.size!==i._value.size)return!1;for(let[t,r]of this._value){let o=i.getKey(t);if(!o||!r.isEqual(o))return!1}return!0}evaluate(i){return this}get isCanonical(){return this._isCanonical}set isCanonical(i){this._isCanonical=i}get canonical(){return this.isCanonical?this:new n(this.engine,this._value,{canonical:!0})}simplify(i){return this}N(i){return this}replace(i,t){let r=0,o={};for(let s of this.keys){let a=this.getKey(s),l=a.replace(i,t);l!==null&&(r+=1),o[s]=l??a}return r===0?null:new n(this.engine,o)}subs(i,t){let r={};for(let o of this.keys)r[o]=this.getKey(o).subs(i,t);return new n(this.engine,r,t)}};function gu(n,e,i,t,r){if(e.numericValue!==null){if(M(e.numericValue))return Le(e.numericValue)<0?$(n,"Subtract",[i,n.number(ue(e.numericValue))],t,r):null;let o=V(e);if(o!==null&&o<0)return $(n,"Subtract",[i,n.number(-o)],t,r)}return e.head==="Negate"&&i.head!=="Negate"?$(n,"Subtract",[i,e.op1],t,r):null}function Td(n,e,i,t,r){let o=t.exclude;if(e==="Add"&&i.length===2&&!o.includes("Subtract")){let s=gu(n,i[0],i[1],t,r)??gu(n,i[1],i[0],t,r);if(s)return s}if(e==="Divide"&&i.length===2&&o.includes("Divide"))return $(n,"Multiply",[i[0],n._fn("Power",[i[1],n.NegativeOne])],t,r);if(e==="Multiply"&&!o.includes("Negate")&&b(i[0])===-1)return i.length===2?$(n,"Negate",[i[1]],t):$(n,"Negate",[n._fn("Multiply",i.slice(1))],t,r);if(e==="Multiply"&&!o.includes("Divide")){let s=new Ln(n,i,{canonical:!1}).asRationalExpression();if(s.head==="Divide")return $(n,s.head,s.ops,t,r)}if(e==="Power"){if(!o.includes("Exp")&&i[0]?.symbol==="ExponentialE")return $(n,"Exp",[i[1]],t,r);if(i[1]?.numericValue!==null){let s=V(i[1]);if(s===2&&!o.includes("Square"))return $(n,"Square",[i[0]],t,r);if(s!==null&&s<0&&!o.includes("Divide"))return $(n,"Divide",[n.One,s===-1?i[0]:n.pow(i[0],-s)],t,r);let a=i[1].numericValue;if(!o.includes("Sqrt")&&a===.5)return $(n,"Sqrt",[i[0]],t,r);if(!o.includes("Sqrt")&&a===-.5)return $(n,"Divide",[n.One,n._fn("Sqrt",[i[0]])],t,r);if(M(a)){let l=Le(a),u=xn(a);if(l===1){if(!o.includes("Sqrt")&&u===2)return $(n,"Sqrt",[i[0]],t,r);if(!o.includes("Root"))return $(n,"Root",[i[0],n.number(a[1])],t,r)}if(l===-1){if(!o.includes("Sqrt")&&u===2)return $(n,"Divide",[n.One,n._fn("Sqrt",[i[0]])],t,r);if(!o.includes("Root"))return $(n,"Divide",[n.One,n._fn("Root",[i[0],n.number(a[1])])],t,r)}}}}if(e==="Add"&&i.length===2&&!o.includes("Subtract")){if(i[1]?.numericValue!==null){let s=V(i[1]);if(s!==null&&s<0)return $(n,"Subtract",[i[0],n.number(-s)],t,r)}if(i[1]?.head==="Negate")return $(n,"Subtract",[i[0],i[1].op1],t,r)}if(e==="Tuple"){if(i.length===1&&!o.includes("Single"))return $(n,"Single",i,t,r);if(i.length===2&&!o.includes("Pair"))return $(n,"Pair",i,t,r);if(i.length===3&&!o.includes("Triple"))return $(n,"Triple",i,t,r)}return $(n,e,i,t,r)}function $(n,e,i,t,r){let o=t.exclude;if(e==="Negate"&&i.length===1){let u=i[0]?.numericValue;if(u!==null){if(typeof u=="number")return Ji(n,-u,t);if(u instanceof N||u instanceof os.Complex)return Ji(n,u.neg(),t);if(M(u))return Ji(n,ue(u),t)}}if(typeof e=="string"&&o.includes(e)){if(e==="Rational"&&i.length===2)return $(n,"Divide",i,t,r);if(e==="Complex"&&i.length===2)return $(n,"Add",[i[0],n._fn("Multiply",[i[1]??n.symbol("Undefined"),n.I])],t,r);if(e==="Sqrt"&&i.length===1)return $(n,"Power",[i[0],o.includes("Half")?n.number([1,2]):n.Half],t,r);if(e==="Root"&&i.length===2&&i[1]?.numericValue!==null){let u=V(i[1]);if(u===2)return $(n,"Sqrt",[i[0]],t);if(u!==null)return u<0?$(n,"Divide",[n.One,n._fn("Power",[i[0]??n.symbol("Undefined"),n.number([1,-u])])],t,r):$(n,"Power",[i[0],n.number([1,-u])],t,r)}if(e==="Square"&&i.length===1)return $(n,"Power",[i[0],n.number(2)],t,r);if(e==="Exp"&&i.length===1)return $(n,"Power",[n.E,i[0]],t,r);if(e==="Pair"||e=="Single"||e==="Triple")return $(n,"Tuple",i,t,r);if(e==="Subtract"&&i.length===2)return $(n,"Add",[i[0],n._fn("Negate",[i[1]??n.symbol("Undefined")])],t,r);if(e==="Subtract"&&i.length===1)return $(n,"Negate",i,t,r)}let a=[typeof e=="string"?e:Ui(n,e,t),...i.map(u=>u?Ui(n,u,t):"Undefined")],l={...r??{}};return t.metadata.includes("latex")?l.latex=l.latex??n.box({fn:a}).latex:l.latex="",t.metadata.includes("wikidata")||(l.wikidata=""),!l.latex&&!l.wikidata&&t.shorthands.includes("function")?a:l.latex&&l.wikidata?{fn:a,latex:l.latex,wikidata:l.wikidata}:l.latex?{fn:a,latex:l.latex}:l.wikidata?{fn:a,wikidata:l.wikidata}:{fn:a}}function Dd(n,e){return n=n,e.shorthands.includes("string")?`'${n}'`:{str:n}}function rs(n,e,i,t){if(e==="Half"&&i.exclude.includes("Half"))return Ji(n,[1,2],i,t);if(t={...t},i.metadata.includes("latex")?(t.latex=t.latex??n.box({sym:e}).latex,t.latex!==void 0&&(t.latex=t.latex)):t.latex=void 0,i.metadata.includes("wikidata")){if(t.wikidata===void 0){let r=n.lookupSymbol(e)?.wikidata;r!==void 0&&(t.wikidata=r)}}else t.wikidata=void 0;return e=e,t.latex===void 0&&t.wikidata===void 0&&i.shorthands.includes("symbol")?e:t.latex!==void 0&&t.wikidata!==void 0?{sym:e,latex:t.latex,wikidata:t.wikidata}:t.latex!==void 0?{sym:e,latex:t.latex}:t.wikidata!==void 0?{sym:e,wikidata:t.wikidata}:{sym:e}}function xu(n,e){if(!e.repeatingDecimal)return n;let[i,t,r,o]=n.match(/^(.*)\.([0-9]+)([e|E][-+]?[0-9]+)?$/)??[];if(!r)return n.toLowerCase();let s=r[r.length-1];r=r.slice(0,-1);let a=16,l="";for(let u=0;u<r.length-a;u++){l=r.substring(0,u);for(let f=0;f<=a;f++){let d=r.substring(u,u+f+1),c=Math.floor((r.length-l.length)/d.length);if(c<3)break;if((l+d.repeat(c+1)).startsWith(r))return d==="0"?s==="0"?t+"."+l+(o??""):n:t+"."+l+"("+d+")"+(o??"")}}for(r+=s;r.endsWith("0");)r=r.slice(0,-1);return o?`${t}.${r}${o.toLowerCase()}`:`${t}.${r}`}function Id(n,e){let i=n.engine;if(e.shorthands.includes("dictionary")){let r={};for(let o of n.keys)r[o]=Ui(n.engine,n.getKey(o),e);return{dict:r}}let t=[];for(let r of n.keys)t.push(i._fn("KeyValuePair",[i.string(r),n.getKey(r)]));return $(i,"Dictionary",t,e,{latex:n.verbatimLatex})}function Ji(n,e,i,t){t={...t},i.metadata.includes("latex")||(t.latex=void 0);let r=t.latex===void 0&&t.wikidata===void 0&&!i.metadata.includes("latex")&&i.shorthands.includes("number"),o=i.exclude,s="";if(e instanceof N){let l;if(e.isNaN())l="NaN";else if(!e.isFinite())l=e.isPositive()?"PositiveInfinity":"NegativeInfinity";else{if(r&&ir(e))return e.toNumber();if(e.isInteger()&&e.e<e.precision()+4)s=e.toFixed(0);else{let u=i.fractionalDigits,f;if(u==="max"?f=e.toString():u==="auto"?f=e.toPrecision(n.precision):f=e.toDecimalPlaces(u).toString(),s=xu(f,i),r){let d=e.toNumber();if(d.toString()===s)return d}}}return i.metadata.includes("latex")&&(t.latex=t.latex??n.box(l??{num:s}).latex),l?t.latex!==void 0?{sym:l,latex:t.latex}:r?l:{sym:l}:t.latex!==void 0?{num:s,latex:t.latex}:r?s:{num:s}}if(e instanceof os.Complex)return e.isInfinite()?rs(n,"ComplexInfinity",i,t):e.isNaN()?(s="NaN",i.metadata.includes("latex")&&(t.latex=t.latex??n.box({num:s}).latex),t.latex!==void 0?{num:s,latex:t.latex}:{num:s}):$(n,"Complex",[n.number(e.re),n.number(e.im)],i,{...t,wikidata:"Q11567"});if(M(e)){let l=!o.includes("Rational");return r&&i.shorthands.includes("function")&&U(e)?e[0]===1&&e[1]===2&&!o.includes("Half")?rs(n,"Half",i,t):[l?"Rational":"Divide",e[0],e[1]]:$(n,l?"Rational":"Divide",[n.number(e[0]),n.number(e[1])],i,{...t})}let a;return Number.isNaN(e)?a="NaN":Number.isFinite(e)?s=xu(e.toString(),i):a=e>0?"PositiveInfinity":"NegativeInfinity",i.metadata.includes("latex")&&(t.latex=t.latex??n.box({num:s}).latex),a?t.latex!==void 0?{sym:a,latex:t.latex}:r?a:{sym:a}:t.latex!==void 0?{num:s,latex:t.latex}:r&&s===e.toString()?e:{num:s}}function Ui(n,e,i){let t=e.scope?e.wikidata:void 0;return e instanceof ae?Ji(n,e.numericValue,i,{latex:e.verbatimLatex}):e instanceof ye?e.isValid&&e.isCanonical&&i.prettify?Td(n,e.head,e.ops,i,{latex:e.verbatimLatex,wikidata:t}):$(n,e.head,e.ops,i,{latex:e.verbatimLatex,wikidata:t}):e instanceof ri?Id(e,i):e instanceof Si?Ui(n,e.expression,i):e instanceof Ye?Dd(e.string,i):e instanceof Vn?rs(n,e.symbol,i,{latex:e.verbatimLatex,wikidata:t}):e.json}var et=he(fe(),1);function bu(n){return n.head==="Element"?wd(n):n.head==="Equal"?kd(n):_o(n)?Ad(n):"not-a-predicate"}function kd(n){n.head;let e=n.unknowns;if(e.length===0){let r=n.evaluate();return r.symbol==="True"?"tautology":r.symbol==="False"?"contradiction":(n.canonical.evaluate(),"not-a-predicate")}let i=n.engine,t=n.op1.symbol;if(t&&!Md(i,t)&&!n.op2.has(t)){let r=n.op2.evaluate();if(!r.isValid)return"not-a-predicate";let o=i.lookupSymbol(t);return o?o.domain&&!r.domain?.isCompatible(o.domain)?"contradiction":(o.value=r,"ok"):(i.defineSymbol(t,{value:r,domain:r.domain}),"ok")}if(e.length===1){let r=e[0],o=Mr(n,r);o.length===0&&i.assumptions.set(i.box(["Equal",i.add(n.op1.canonical,i.neg(n.op2.canonical)).simplify(),0]),!0);let s=o.length===1?o[0]:i.box(["List",...o]),a=i.lookupSymbol(r);return a?a.domain&&!o.every(l=>!l.domain||s.domain?.isCompatible(l.domain))?"contradiction":(a.value=s,"ok"):(i.defineSymbol(r,{value:s,domain:s.domain}),"ok")}return i.assumptions.set(n,!0),"ok"}function Ad(n){let e=n.engine;if(n.op1.symbol&&!ss(e,n.op1.symbol))return n.op2.evaluate().isZero?n.head==="Less"?e.defineSymbol(n.op1.symbol,{domain:e.domain("NegativeNumbers")}):n.head==="LessEqual"?e.defineSymbol(n.op1.symbol,{domain:e.domain("NonPositiveNumbers")}):n.head==="Greater"?e.defineSymbol(n.op1.symbol,{domain:e.domain("PositiveNumbers")}):n.head==="GreaterEqual"&&e.defineSymbol(n.op1.symbol,{domain:e.domain("NonNegativeNumbers")}):(e.defineSymbol(n.op1.symbol,{domain:e.domain("ExtendedRealNumbers")}),e.assumptions.set(n,!0)),"ok";let i="",t,r;if(n.head==="Less"?(t=n.op1,r=n.op2,i="<"):n.head==="LessEqual"?(t=n.op1,r=n.op2,i="<="):n.head==="Greater"?(t=n.op2,r=n.op1,i="<"):n.head==="GreaterEqual"&&(t=n.op2,r=n.op1,i="<="),!i)return"internal-error";let o=e.add(t.canonical,e.neg(r.canonical)).simplify(),s=e.box([i==="<"?"Less":"LessEqual",o,0]).evaluate();if(s.symbol==="True")return"tautology";if(s.symbol==="False")return"contradiction";let a=s.unknowns;return a.length===0?"not-a-predicate":(a.length===1&&(e.lookupSymbol(a[0])||e.defineSymbol(a[0],{domain:"ExtendedRealNumbers"})),s.head==="Less"||s.head,e.assumptions.set(s,!0),"ok")}function wd(n){n.head;let e=n.engine,i=Cd(n.op1);if(i.length===1){let r=e.domain(n.op2.evaluate().json);return r.isValid?(e.declare(i[0],r),"ok"):"not-a-predicate"}if(n.op1.symbol&&ss(e,n.op1.symbol)){let r=e.domain(n.op2.evaluate().json);if(!r.isValid)return"not-a-predicate";e.context?.ids?.has(n.op1.symbol)||e.declare(n.op1.symbol,r);let o=e.lookupSymbol(n.op1.symbol);if(o)return o.domain&&!r.isCompatible(o.domain)?"contradiction":(o.domain=r,"ok");let s=e.lookupFunction(n.op1.symbol);return s?r.isCompatible(vr(e,s.signature))?"ok":"contradiction":"not-a-predicate"}if(i.length>0)return e.assumptions.set(n,!0),"ok";let t=n.evaluate();return t.symbol==="True"?"tautology":t.symbol==="False"?"contradiction":"not-a-predicate"}function ss(n,e){return(n.lookupSymbol(e)??n.lookupFunction(e))!==void 0}function Cd(n){return n.symbols.filter(e=>!ss(n.engine,e))}function Md(n,e){return n.lookupFunction(e)?!1:n.lookupSymbol(e)?.value!==void 0}var Lr=he(fe(),1);function Ct(n){return n[Math.floor(Math.random()*n.length)]}function yu(n,e){if(n==="Add"||n==="Multiply"){let i=[],t=1+Math.floor(Math.random()*12);for(;t>0;)i.push(Bn(e+1)),t-=1;return[n,...i]}return n==="Divide"||n==="Power"?[n,Bn(e+1),Bn(e+1)]:n==="Root"?[n,Bn(e+1),Bn(10)]:n==="trig"?Od():[n,Bn(e+1)]}function Od(){return[Ct(["Cos","Sin","Tan","Sinh","Arccos","Arsinh"]),Ct(["Pi","-1","0","1",["Divide","Pi",-5],["Multiply",-2,["Divide","Pi",11]],["Multiply","Half","Pi"],["Multiply",5,"Pi"],["Multiply",12,"Pi"],["Divide","Pi",5],["Divide","Pi",9],["Multiply",5,["Divide","Pi",9]],["Multiply",2,["Divide","Pi",11]],["Multiply",2,["Divide","Pi",3]]])]}function Bn(n){if(n??(n=1),n===1){let e=Ct([["Sqrt",["Multiply",6,["Sum",["Divide",1,["Power","n",2]],["Triple",["Hold","n"],1,"PositiveInfinity"]]]],"Add","Add","Add","Add","Add","Multiply","Multiply","Multiply","Multiply","Divide","Divide","Divide","Root","Sqrt","Subtract","Negate","trig"]);return typeof e=="string"?yu(e,1):e}if(n===2){let e=Math.random();if(e>.75)return Bn(1);if(e>.5)return Bn(3);let i=Ct(["Multiply","Multiply","Add","Power","trig","Ln","Exp"]);return yu(i,2)}return Ct([-12345e-9,-2,-2,-2,-3,-5,-6,-12,-1654e-60,0,0,12345e-8,1654e-60,1,2,2,2,2,3,3,5,5,6,6,1234.5678,5678.1234,10,15,18,30,60,1234e54,"123456789.12345678912345e200","987654321.12345678912345",["Rational",-6,10],["Rational",-12,15],["Rational",-15,12],["Rational",3,5],["Rational",12,15],["Rational",15,12],"ExponentialE",["Sqrt",3],["Sqrt",5],["Sqrt",15],["Sqrt",25],["Complex",-1.1,1.1],["Complex",4,5],"x","x","x","x",["Add","x",1],["Divide","x",3],["Square","x"],["Power","x",3],["Power","x",4],["Subtract","x",1],["Add","x",1],"Pi"])}var Eu=[{Nothing:{domain:"NothingDomain"}},{InvisibleOperator:{complexity:9e3,hold:"all",signature:{restParam:"Anything",result:(n,e)=>e.length===0?n.domain("NothingDomain"):e.length===1?e[0].domain:n.Anything,canonical:as}},Sequence:{hold:"all",signature:{restParam:"Anything",result:(n,e)=>e.length===0?n.domain("NothingDomain"):e.length===1?e[0].domain:n.Anything,canonical:(n,e)=>{let i=re(oe(e));return i.length===0?n._fn("Sequence",[]):i.length===1?i[0]:n._fn("Sequence",i)}}},Delimiter:{complexity:9e3,hold:"all",signature:{params:["Anything"],optParams:["Strings"],result:(n,e)=>e.length===0?n.domain("NothingDomain"):e[0].domain,canonical:(n,e)=>{if(e.length===0)return n._fn("Tuple",[]);let i=e[0];return i.head==="Sequence"?i=n._fn("Sequence",oe(i.ops)):i=i.canonical,i.head==="Sequence"&&i.ops.length===1&&(i=i.ops[0]),e=[i,...e.slice(1)],e.length===1?n._fn("Delimiter",e):e.length>2?n._fn("Delimiter",De(n,e,2)):(e[1].string?.length??0)>3?n._fn("Delimiter",[e[0],n.error("invalid-delimiter",e[1])]):n._fn("Delimiter",[e[0],Ge(n,e[1],"Strings")])},evaluate:(n,e)=>{if(e.length===0)return n.Nothing;let i=e[0];return(i.head==="Sequence"||i.head==="Delimiter")&&(e=re(e[0].ops)),e.length===1?e[0].evaluate():n._fn("Tuple",e.map(t=>t.evaluate()))},N:(n,e)=>{if(e.length===0)return n.Nothing;let i=e[0];return(i.head==="Sequence"||i.head==="Delimiter")&&(e=re(e[0].ops)),e.length===1?e[0].N():n._fn("Tuple",e.map(t=>t.N()))}}},Error:{hold:"all",complexity:500,signature:{domain:["FunctionOf","Anything",["OptArg","Anything"],"Void"],canonical:(n,e)=>n._fn("Error",e)}},ErrorCode:{complexity:500,hold:"all",signature:{domain:["FunctionOf","Strings",["VarArg","Anything"],"Anything"],canonical:(n,e)=>{let i=Ge(n,e[0],n.Strings).string;return i==="incompatible-domain"?n._fn("ErrorCode",[n.string(i),e[1],e[2]]):n._fn("ErrorCode",e)}}},Hold:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],result:(n,e)=>{if(e.length!==1)return n.domain("NothingDomain");let i=e[0];return i.symbol?n.domain("Symbols"):i.string?n.domain("Strings"):i.head==="Numbers"?n.domain("Numbers"):i.domain},canonical:(n,e)=>e.length!==1?null:n.hold(e[0]),evaluate:(n,e)=>e[0]}},HorizontalSpacing:{signature:{domain:"Functions",canonical:(n,e)=>e.length===2?e[0].canonical:n.box(["Sequence"])}},Style:{complexity:9e3,inert:!0,signature:{domain:["FunctionOf","Anything",["OptArg","Dictionaries"],"Anything"]}}},{About:{signature:{domain:"Functions"}},Head:{hold:"all",signature:{domain:"Functions",canonical:(n,e)=>{if(e.length!==1)return null;let i=e[0];return i.head?n.box(i.head):n._fn("Head",oe(e))},evaluate:(n,e)=>{let i=e[0];return typeof i?.head=="string"?n.symbol(i.head):i?.head??n.Nothing}}},Tail:{hold:"all",signature:{domain:"Functions",canonical:(n,e)=>{if(e.length!==1)return null;let i=e[0];return i.ops?n._fn("Sequence",i.ops):n._fn("Tail",oe(e))},evaluate:(n,e)=>{let i=e[0];return i?.ops?n.box(["Sequence",...i.ops]):n.box(["Sequence"])}}},Identity:{signature:{domain:["FunctionOf","Anything","Anything"],result:(n,e)=>e.length!==1?n.domain("NothingDomain"):e[0].domain,evaluate:(n,e)=>e[0]}}},{Apply:{signature:{domain:"Functions",canonical:(n,e)=>e[0].symbol?n.box([e[0].symbol,...e.slice(1)]):n._fn("Apply",e),evaluate:(n,e)=>vi(e[0],e.slice(1))}},Assign:{hold:"all",pure:!1,signature:{domain:["FunctionOf","Anything","Anything","Anything"],canonical:(n,e)=>{if(e.length!==2)return null;let i=e[0];if(!i.symbol)return null;let t=e[1];return n._fn("Assign",[i,t])},evaluate:(n,e)=>{let i=e[0],t=e[1];if(!i.symbol)return n.Nothing;let r=t.evaluate();return n.assign(i.symbol,r),r}}},Assume:{hold:"all",pure:!1,signature:{domain:["FunctionOf","Anything","Anything"],evaluate:(n,e)=>n.string(n.assume(e[0]))}},Declare:{hold:"all",pure:!1,signature:{domain:["FunctionOf","Symbols","Anything"],canonical:(n,e)=>{if(e.length!==2)return null;let i=e[0],t=e[1];return i.symbol?t.symbol?n._fn("Declare",e):n._fn("Declare",[i,n._fn("Hold",[t])]):null},evaluate:(n,e)=>{let i=e[0],t=e[1];if(!i.symbol)return n.Nothing;let r=t.evaluate();if(Nn(r))return n.declare(i.symbol,r),r}}},Domain:{signature:{domain:["FunctionOf","Anything","Domains"],evaluate:(n,e)=>e[0].domain}},Evaluate:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],result:(n,e)=>e.length!==1?n.domain("NothingDomain"):e[0].domain,canonical:(n,e)=>n._fn("Evaluate",De(n,e,1)),evaluate:(n,e)=>e[0].evaluate()}},Function:{complexity:9876,hold:"all",signature:{domain:["FunctionOf","Anything",["VarArg","Symbols"],"Functions"],canonical:(n,e)=>e.length===0?n.box(["Sequence"]):(e.length===1?Vo(e[0]):n._fn("Function",e))??null,evaluate:(n,e)=>{}}},Simplify:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],result:(n,e)=>e.length!==1?n.domain("NothingDomain"):e[0].domain,canonical:(n,e)=>n._fn("Simplify",De(n,e,1)),evaluate:(n,e)=>e[0].simplify()}},CanonicalForm:{complexity:8200,hold:"all",signature:{domain:["FunctionOf","Anything",["VarArg","Symbols"],"Anything"],canonical:(n,e)=>{if(e.length===1)return e[0].canonical;let i=e.slice(1).map(t=>t.symbol??t.string).filter(t=>t!=null);return pn(e[0],i)}}},N:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],result:(n,e)=>e.length!==1?n.domain("NothingDomain"):e[0].domain,canonical:(n,e)=>{if(e.length!==1)return n._fn("N",De(n,e,1));let i=e[0].head;if(i==="N")return e[0].canonical;if(i==="Integrate"){let[t,r,o]=Mn(e[0].op2);if(!t||r===void 0||o===void 0)return null;let s=e[0].op1;return n._fn("NIntegrate",[n.box(["Function",s,t]),n.number(r),n.number(o)])}return i==="Limit"?n._fn("NLimit",e[0].ops):n._fn("N",e)},evaluate:(n,e)=>e[0].N()}},Signatures:{signature:{domain:["FunctionOf","Symbols",["ListOf","Domains"]],canonical:(n,e)=>(e=De(n,e,1),e[0].symbol?n._fn("Signatures",e):n._fn("Signatures",[n.domainError("Symbols",e[0].domain,e[0])])),evaluate:(n,e)=>{let i=e[0].symbol;if(!i)return n.Nothing;let t=n.lookupFunction(i);if(!t)return n.box(["List"]);let r=t.signature,o=[...r.params];return r.optParams.length>0&&o.push(n._fn("OptArg",r.optParams)),r.restParam&&o.push(n._fn("VarArg",[r.restParam])),typeof r.result=="function"?o.push(r.result(n,[])??n.symbol("Undefined")):o.push(r.result),n.box(["List",...o])}}},Subscript:{hold:"last",signature:{domain:["FunctionOf","Anything","Anything","Anything"],result:(n,e)=>{if(e.length!==2)return n.domain("NothingDomain");let i=e[0],t=e[1];if(i.string&&V(t)!==null)return n.domain("Integers");if(i.symbol){let r=i.evaluate()?.head;if(r)return n.lookupFunction(r)?.at?void 0:n.domain("Symbols")}},canonical:(n,e)=>{let i=e[0],t=e[1];if(i.string){let r=V(t);if(r!==null&&r>1&&r<=36){let[o,s]=Ii(i.string,r);return s?n.error(["unexpected-digit",{str:s[0]}],["LatexString",n.string(i.string)]):n.number(o)}}if(i.symbol){let r=i.evaluate()?.head;if(r&&n.lookupFunction(r)?.at)return n._fn("At",[i.canonical,t.canonical]);let o=t.string??t.symbol??V(t)?.toString();if(o)return n.symbol(i.symbol+"_"+o)}return t.head==="Sequence"&&n._fn("Subscript",[i,n._fn("List",t.ops)]),n._fn("Subscript",e)}}},Symbol:{complexity:500,description:"Construct a new symbol with a name formed by concatenating the arguments",threadable:!0,hold:"all",signature:{domain:["FunctionOf",["VarArg","Anything"],"Anything"],canonical:(n,e)=>{if(e.length===0)return n.Nothing;let i=e.map(t=>t.symbol??t.string??V(t)?.toString()??"").join("");return i.length>0?n.symbol(i):n.Nothing}}},Timing:{description:"`Timing(expr)` evaluates `expr` and return a `Pair` of the number of second elapsed for the evaluation, and the value of the evaluation",signature:{domain:["FunctionOf","Values",["OptArg","Integers"],["TupleOf","Values","Numbers"]],evaluate:(n,e)=>{if(e[1].symbol==="Nothing"){let l=globalThis.performance.now(),u=e[0].evaluate(),f=1e3*(globalThis.performance.now()-l);return n.pair(n.number(f),u)}let i=Math.max(3,Math.round(V(e[1])??3)),t=[],r;for(;i>0;){let l=globalThis.performance.now();r=e[0].evaluate(),t.push(1e3*(globalThis.performance.now()-l)),i-=1}let o=Math.max(...t),s=Math.min(...t);t=t.filter(l=>l>s&&l<o);let a=t.reduce((l,u)=>l+u,0);return a===0?n.pair(n.number(o),r):n.pair(n.number(a/t.length),r)}}}},{Wildcard:{signature:{params:["Symbols"],result:"Symbols",canonical:(n,e)=>e.length!==1?n.symbol("_"):n.symbol("_"+e[0].symbol)}},WildcardSequence:{signature:{params:["Symbols"],result:"Symbols",canonical:(n,e)=>e.length!==1?n.symbol("__"):n.symbol("__"+e[0].symbol)}},WildcardOptionalSequence:{signature:{params:["Symbols"],result:"Symbols",canonical:(n,e)=>e.length!==1?n.symbol("___"):n.symbol("___"+e[0].symbol)}}},{LatexString:{inert:!0,signature:{domain:["FunctionOf","Strings","Strings"]}},Latex:{signature:{domain:["FunctionOf",["VarArg","Anything"],"Strings"],evaluate:(n,e)=>n.box(["LatexString",n.string(v(e.map(i=>i.latex)))])}},Parse:{description:"Parse a LaTeX string and evaluate to a corresponding expression",signature:{domain:["FunctionOf","Anything","Anything"],evaluate:(n,e)=>{if(e.length===0)return n.box(["Sequence"]);let i=e[0],t=i.string??i.head==="LatexString"?i.op1.string:"";return n.parse(t)??n.box(["Sequence"])}}}},{RandomExpression:{signature:{domain:"Functions",evaluate:(n,e)=>n.box(Bn())}}}];function as(n,e){if(e.length===0)return null;let i=e[0];if(e.length===1)return i.canonical;if(e.length===2){let t=b(i);if(t!==null&&Number.isInteger(t)){let o=e[1];if(o.head==="Divide"||o.head==="Rational"){let[s,a]=[b(o.op1),b(o.op2)];if(s!==null&&a!==null&&s>0&&s<=1e3&&a>1&&a<=1e3&&Number.isInteger(s)&&Number.isInteger(a)){let l=o.canonical;return t<0&&(l=n.neg(l)),n._fn("Add",[i.canonical,l])}}}if(t!==null&&e[1].symbol==="ImaginaryUnit")return n.number(n.complex(0,t));let r=e[1];if(i.symbol&&r.head==="Delimiter"&&!n.lookupSymbol(i.symbol)){if(r.nops===0)return n.lookupFunction(i.symbol)||n.declare(i.symbol,"Functions"),n.box([i.symbol]);let o=r.op1.head==="Sequence"?r.op1.ops:[r.op1];if(o=re(oe(o)),!n.lookupSymbol(i.symbol))return n.lookupFunction(i.symbol)||n.declare(i.symbol,"Functions"),n.function(i.symbol,o)}}return e=re(oe(e)),e.every(t=>t.isValid&&(!t.domain||t.domain.isNumeric||ur(t)&&!t.string))?(e=ne(e,"Multiply"),e.length===1?e[0]:n._fn("Multiply",e)):n._fn("Tuple",e)}function pn(n,e){if(e===!1)return n;if(e===!0)return n.canonical;typeof e=="string"&&(e=[e]);for(let i of e)switch(i){case"InvisibleOperator":n=ls(n);break;case"Number":n=vu(n);break;case"Multiply":n=Nu(n);break;case"Add":n=_u(n);break;case"Power":n=Wi(n);break;case"Divide":n=Su(n);break;case"Flatten":n=us(n);break;case"Order":n=yo(n,{recursive:!0});break;default:throw Error("Invalid canonical form")}return n}function us(n){if(!n.head||!n.ops||n.nops===0)return n;if(n.head==="Delimiter")return us(n.op1);let e=n.engine,i=n.head==="Add"||n.head==="Multiply";return i||e.lookupFunction(n.head)?.associative&&(i=!0),i&&typeof n.head=="string"?e.function(n.head,ne(n.ops.map(us),n.head)):n}function ls(n){return n.ops?n.head==="InvisibleOperator"?as(n.engine,n.ops.map(ls))??n:n.engine._fn(n.head,n.ops.map(ls)):n}function vu(n){return n.numericValue?n.canonical:n.ops?n.engine._fn(n.head,n.ops.map(vu)):n}function Nu(n){if(!n.ops)return n;let e=n.ops.map(Nu);return n.head==="Multiply"?At(n.engine,e.map(i=>i.canonical)):n.head==="Negate"?At(n.engine,[e[0],n.engine.NegativeOne]):n}function _u(n){if(!n.ops)return n;let e=n.ops.map(_u);return n.head==="Add"?$n(n.engine,e):n.head==="Subtract"?$n(n.engine,[e[0],n.engine.neg(e[1])]):n.engine._fn(n.head,e)}function Wi(n){return n.ops?n.head==="Power"?Fn(n.engine,Wi(n.op1),Wi(n.op2)):n.ops?n.engine._fn(n.head,n.ops.map(Wi)):n:n}function Su(n){return n.head==="Divide"?ze(n.engine,Wi(n.op1),Wi(n.op2)):n.ops?n.engine._fn(n.head,n.ops.map(Su)):n}function qr(n,e,i){if(i=i?{...i}:{},"canonical"in i||(i.canonical=!0),typeof e=="number"||e instanceof N)return new ae(n,e,i);if(Array.isArray(e)&&e.length===2&&e[0]instanceof N&&e[1]instanceof N){if(!e[0].isInteger()||!e[1].isInteger())throw new Error("Array argument to `boxNumber()` should be two integers");e=[R(e[0].toString()),R(e[1].toString())]}if(M(e)){if(e.length!==2)throw new Error("Array argument to `boxNumber()` should be two integers or two bignums");let[r,o]=e;if(typeof r=="bigint"&&typeof o=="bigint")return r===o?o===BigInt(0)?n.NaN:n.One:r===BigInt(0)?n.Zero:o===BigInt(1)?n.number(r,i):o===BigInt(-1)?n.number(-r,i):r===BigInt(1)&&o===BigInt(2)?n.Half:new ae(n,[r,o],i);if(typeof r!="number"||typeof o!="number")throw new Error("Array argument to `boxNumber()` should be two integers or two bignums");if(!isFinite(r)||!isFinite(o))return n.div(n.number(r,i),n.number(o,i));if(!Number.isInteger(r)||!Number.isInteger(o))throw new Error("Array argument to `boxNumber()` should be two integers");return o===r?o===0?n.NaN:n.One:r===0?n.Zero:o===1?n.number(r,i):o===-1?n.number(-r,i):r===1&&o===2?n.Half:new ae(n,[r,o],i)}if(e instanceof Lr.Complex)return e.isNaN()?n.NaN:e.isZero()?n.Zero:e.isInfinite()?n.ComplexInfinity:n.chop(e.im)===0?n.number(e.re,i):new ae(n,e,i);let t="";if(typeof e=="string")t=e;else if(typeof e=="object"&&"num"in e){if(typeof e.num=="number")return n.number(e.num,i);if(typeof e.num!="string")throw new Error("MathJSON `num` property should be a string of digits");t=e.num}if(t){if(t=t.toLowerCase(),/[0-9][nd]$/.test(t)&&(t=t.slice(0,-1)),t=t.replace(/[\u0009-\u000d\u0020\u00a0]/g,""),t==="nan")return n.NaN;if(t==="infinity"||t==="+infinity")return n.PositiveInfinity;if(t==="-infinity")return n.NegativeInfinity;if(t==="0")return n.Zero;if(t==="1")return n.One;if(t==="-1")return n.NegativeOne;if(/\([0-9]+\)/.test(t)){let[r,o,s,a]=t.match(/(.+)\(([0-9]+)\)(.+)?$/)??[];t=o+s.repeat(Math.ceil(n.precision/s.length))+(a??"")}return qr(n,n.bignum(t),i)}return null}function fs(n,e,i){if(e===null)return n.error("missing");if(typeof e=="object"&&e instanceof F)return e;if(e=L(e),typeof e=="string")return Ce(n,e,i);if(Array.isArray(e)){let t=e.map(r=>fs(n,r,i));return new ye(n,t[0],t.slice(1))}if(typeof e=="object"){if("dict"in e)return new ri(n,e.dict);if("fn"in e)return fs(n,e.fn,i);if("str"in e)return new Ye(n,e.str);if("sym"in e)return Ce(n,e.sym,i);if("num"in e)return Ce(n,e.num,i)}return Ce(n,e,i)}function Tu(n,e,i,t){if(t=t?{...t}:{},"canonical"in t||(t.canonical=!0),e==="Hold")return new ye(n,"Hold",[fs(n,i[0],t)],{...t,canonical:!0});if(e==="Error"||e==="ErrorCode")return n._fn(e,i.map(o=>n.box(o,{canonical:!1})),t.metadata);if(e==="String")return i.length===0?new Ye(n,"",t.metadata):new Ye(n,i.map(o=>Bu(o)??"").join(""),t.metadata);if(e==="Symbol"&&i.length>0)return n.symbol(i.map(o=>Bu(o)??"").join(""),t);if(e==="Domain")return n.domain(i[0],t.metadata);if(e==="Number"&&i.length===1)return Ce(n,i[0],t);if(t.canonical===!0||t.canonical==="Number"||Array.isArray(t.canonical)&&t.canonical.includes("Number")){if((e==="Divide"||e==="Rational")&&i.length===2){if(i[0]instanceof F&&i[1]instanceof F){if(n.numericMode==="machine"){let[a,l]=[b(i[0]),b(i[1])];if(a!==null&&Number.isInteger(a)&&l!==null&&Number.isInteger(l))return n.number([a,l],t)}let[o,s]=[mt(i[0]),mt(i[1])];if(o!==null&&s!==null)return n.number([o,s],t)}else{let[o,s]=[fo(i[0]),fo(i[1])];if(o!==null&&s!==null)return n.number([o,s],t)}e="Divide"}if(e==="Complex"){if(i.length===1){let o=Ce(n,i[0],t),s=b(o);return s!==null&&s!==0?n.number(n.complex(0,s),t):n.mul(o,n.I)}if(i.length===2){let o=Ce(n,i[0],t),s=Ce(n,i[1],t),a=b(o),l=b(s);return l!==null&&a!==null?l===0&&a===0?n.Zero:l!==null&&l!==0?n.number(n.complex(a,l),t):o:n.add(o,n.mul(s,n.I))}throw new Error("Expected one or two arguments with Complex expression")}if(e==="Negate"&&i.length===1){let o=i[0];if(typeof o=="number")return n.number(-o,t);if(o instanceof N)return n.number(o.neg(),t);let s=n.box(o,t).numericValue;if(s!==null){if(typeof s=="number")return n.number(-s,t);if(s instanceof N)return n.number(s.neg(),t);if(s instanceof Lr.Complex)return n.number(s.neg());if(M(s))return n.number(ue(s))}}}if(e==="Dictionary"){let o={};for(let s of i){let a=n.box(s,{canonical:t.canonical}),l=a.head;if(l==="KeyValuePair"||l==="Pair"||l==="Tuple"&&a.nops===2){let u=a.op1;if(u.isValid&&u.symbol!=="Nothing"){let f=a.op2,d=u.symbol??u.string;if(!d&&(u.numericValue!==null||u.string)){let c=typeof u.numericValue=="number"?u.numericValue:V(u);c&&Number.isFinite(c)&&Number.isInteger(c)&&(d=c.toString())}d&&(o[d]=f)}}}return new ri(n,o,t)}if(e==="List"&&t.canonical===!0){let o=i.map(l=>Ce(n,l)),{shape:s,dtype:a}=ts("List",o)??{};return a&&s?new Si(n,{head:e,ops:o}):n._fn(e,o)}return t.canonical===!0?hu(n,e,i,t.metadata):pn(new ye(n,e,i.map(o=>Ce(n,o,{canonical:t?.canonical??!0})),{metadata:t.metadata,canonical:!1}),t.canonical??!1)}function Ce(n,e,i){if(e==null)return n._fn("Sequence",[]);if(e instanceof F)return pn(e,i?.canonical??!0);i=i?{...i}:{},"canonical"in i||(i.canonical=!0);let t=i.canonical===!0;if(Array.isArray(e)){if(U(e))return Number.isInteger(e[0])&&Number.isInteger(e[1])?n.number(e):pn(n.function("Divide",e,{canonical:t}),i.canonical);if(z(e))return n.number(e);if(typeof e[0]=="string")return pn(n.function(e[0],e.slice(1),{canonical:t}),i.canonical);Array.isArray(e[0]);let r=e.slice(1).map(s=>Ce(n,s,i)),o=Ce(n,e[0],{canonical:!1});return pn(new ye(n,o,r),i.canonical)}if(typeof e=="number"||e instanceof Lr.Complex||e instanceof N)return n.number(e);if(typeof e=="string")return e.startsWith("'")&&e.endsWith("'")?new Ye(n,e.slice(1,-1)):/^[+-]?[0-9]/.test(e)?n.number(e):Ei(e)?n.domain(e):Ne(e)?n.symbol(e,{canonical:t}):n.error("invalid-identifier",{str:e});if(typeof e=="object"){let r={latex:e.latex,wikidata:e.wikidata};if("dict"in e)return pn(new ri(n,e.dict,{canonical:!0,metadata:r}),i.canonical);if("fn"in e)return typeof e.fn[0]=="string"?pn(n.function(e.fn[0],e.fn.slice(1),{canonical:t}),i.canonical):pn(new ye(n,Ce(n,e.fn[0],i),e.fn.slice(1).map(o=>Ce(n,o,i)),{metadata:r}),i.canonical);if("str"in e)return new Ye(n,e.str,r);if("sym"in e)return n.symbol(e.sym,{canonical:t});if("num"in e)return n.number(e,{canonical:t})}return n.symbol("Undefined")}function Bu(n){if(typeof n=="string")return n;if(n instanceof F)return n.string??n.symbol??n.toString();if(typeof n=="object"){if("str"in n)return n.str;if("fn"in n&&n.fn[0]==="String"&&typeof n.fn[1]=="string")return n.fn[1]}return Array.isArray(n)&&n[0]==="String"&&typeof n[1]=="string"?n[1]:null}var cs=he(fe(),1);var ku=[{Abs:{wikidata:"Q3317982",threadable:!0,idempotent:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","NonNegativeNumbers"],simplify:(n,e)=>ds(n,e[0],"simplify"),evaluate:(n,e)=>ds(n,e[0],"evaluate"),N:(n,e)=>ds(n,e[0],"N")}},Add:{wikidata:"Q32043",associative:!0,commutative:!0,threadable:!0,idempotent:!0,complexity:1300,hold:"all",signature:{domain:"NumericFunctions",result:(n,e)=>nu(n,e.map(i=>i.domain)),simplify:(n,e)=>Ar(n,e.map(i=>i.simplify())),evaluate:(n,e)=>Tt(n,e.map(i=>i.evaluate())),N:(n,e)=>Tt(n,e.map(i=>i.N()),"N")}},Ceil:{description:"Rounds a number up to the next largest integer",complexity:1250,threadable:!0,signature:{domain:["FunctionOf","Numbers","Integers"],evaluate:(n,e)=>ie(e[0],Math.ceil,i=>i.ceil(),i=>i.ceil(0))}},Chop:{associative:!0,threadable:!0,idempotent:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>ie(e[0],i=>n.chop(i),i=>n.chop(i),i=>n.chop(i))}},Divide:{wikidata:"Q1226939",complexity:2500,threadable:!0,signature:{params:["Numbers"],restParam:"Numbers",result:"Numbers",canonical:(n,e)=>{if(e=Ue(n,e),e.length<2)return e[0]??n.error("missing");let i=e[0];if(!i)return n.error("missing");let t=e.slice(1);for(let r of t)i=ze(n,i,r);return i},simplify:(n,e)=>kt(n,e[0],e[1]),evaluate:(n,e)=>Or(n,e[0],e[1]),N:(n,e)=>fu(n,e[0],e[1])}},Exp:{wikidata:"Q168698",threadable:!0,complexity:3500,signature:{params:["Numbers"],result:"Numbers",canonical:(n,e)=>(e=Ue(n,e,1),e.length!==1?n.function("Power",[n.E,...e]):n.pow(n.E,e[0]))}},Factorial:{description:"Factorial Function",wikidata:"Q120976",threadable:!0,complexity:9e3,signature:{params:["Numbers"],result:"Numbers",canonical:(n,e)=>{let i=e[0];return i instanceof ae&&i.isNegative?n.neg(n._fn("Factorial",[n.neg(i)])):n._fn("Factorial",[i])},evaluate:(n,e)=>{let i=V(e[0]);if(i!==null&&i>=0)return q(n)?n.number(mo(n,n.bignum(i))):n.number(Qt(i));let t=e[0].numericValue;if(t!==null&&t instanceof cs.Complex)return n.number(t.add(1));let r=b(e[0]);if(r!==null)return n.number(Ai(1+r))}}},Factorial2:{description:"Double Factorial Function",complexity:9e3,threadable:!0,signature:{params:["Numbers"],result:"Numbers",evaluate:(n,e)=>{let i=V(e[0]);if(i!==null)return q(n)?n.number(ca(n,n.bignum(i))):n.number(Qs(i))}}},Floor:{wikidata:"Q56860783",complexity:1250,threadable:!0,signature:{domain:["FunctionOf","Numbers","ExtendedRealNumbers"],evaluate:(n,e)=>ie(e[0],Math.floor,i=>i.floor(),i=>i.floor(0))}},Gamma:{wikidata:"Q190573",complexity:8e3,threadable:!0,signature:{params:["Numbers"],result:"Numbers",N:(n,e)=>ie(e[0],i=>Ai(i),i=>ho(n,i),i=>i)}},GammaLn:{complexity:8e3,threadable:!0,signature:{params:["Numbers"],result:"Numbers",N:(n,e)=>ie(e[0],i=>rt(i),i=>po(n,i),i=>i)}},Ln:{description:"Natural Logarithm",wikidata:"Q204037",complexity:4e3,threadable:!0,signature:{params:["Numbers"],result:"Numbers",simplify:Iu,evaluate:Iu,N:(n,e)=>ie(e[0],i=>i>=0?Math.log(i):n.complex(i).log(),i=>i.isNeg()?n.complex(i.toNumber()).log():i.ln(),i=>i.log())}},Log:{description:"Log(z, b = 10) = Logarithm of base b",wikidata:"Q11197",complexity:4100,threadable:!0,signature:{domain:["FunctionOf","Numbers",["OptArg","Numbers"],"Numbers"],canonical:(n,e)=>{if(e.length===1)return n._fn("Log",[Ge(n,e[0],"Numbers")]);if(e=Ue(n,e,2),e.length!==2)return n._fn("Log",e);let[i,t]=e;return t.numericValue===10?n._fn("Log",[i]):n._fn("Log",[i,t])},N:(n,e)=>e[1]===void 0?ie(e[0],i=>i>=0?Math.log10(i):n.complex(i).log().div(Math.LN10),i=>i.isNeg()?n.complex(i.toNumber()).log().div(Math.LN10):N.log10(i),i=>i.log().div(Math.LN10)):Rn(e[0],e[1],(i,t)=>Math.log(i)/Math.log(t),(i,t)=>i.log(t),(i,t)=>i.log().div(typeof t=="number"?Math.log(t):t.log()))}},Lb:{description:"Base-2 Logarithm",wikidata:"Q581168",complexity:4100,threadable:!0,signature:{params:["Numbers"],result:"Numbers",N:(n,e)=>ie(e[0],i=>i>=0?Math.log2(i):n.complex(i).log().div(Math.LN2),i=>i.isNeg()?N.log10(i):n.complex(i.toNumber()).log().div(Math.LN2),i=>i.log().div(Math.LN2))}},Lg:{description:"Base-10 Logarithm",wikidata:"Q966582",complexity:4100,threadable:!0,signature:{params:["Numbers"],result:"Numbers",N:(n,e)=>ie(e[0],i=>i>=0?Math.log10(i):n.complex(i).log().div(Math.LN10),i=>i.isNeg()?n.complex(i.toNumber()).log().div(Math.LN10):N.log10(i),i=>i.log().div(Math.LN10))}},Mod:{description:"Modulo",wikidata:"Q1799665",complexity:2500,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers","Numbers"],evaluate:(n,e)=>{if(e.length!==2)return;let[i,t]=e,r=i.value,o=t.value;if(typeof r=="number"&&typeof o=="number")return n.number((r%o+o)%o)}}},Multiply:{wikidata:"Q40276",associative:!0,commutative:!0,idempotent:!0,complexity:2100,hold:"all",threadable:!0,signature:{domain:"NumericFunctions",simplify:(n,e)=>du(n,e.map(i=>i.simplify())),evaluate:(n,e)=>{e=e.map(t=>t.evaluate());let i=Un(e);return i.head!=="Multiply"?i.evaluate():wt(n,e)},N:(n,e)=>{e=e.map(t=>t.N());let i=Un(e);return i.head!=="Multiply"?i.N():(e=ne(i.ops,"Multiply"),wt(n,e,"N"))}}},Negate:{description:"Additive Inverse",wikidata:"Q715358",complexity:2e3,threadable:!0,signature:{params:["Numbers"],result:(n,e)=>{if(e.length!==1)return n.domain("NothingDomain");let i=e[0].domain;if(!i?.base)return i;let t={PositiveNumbers:"NegativeNumbers",NonNegativeNumbers:"NonPositiveNumbers",NonPositiveNumbers:"NonNegativeNumbers",NegativeNumbers:"PositiveNumbers",PositiveIntegers:"NegativeIntegers",NonNegativeIntegers:"NonPositiveIntegers",NonPositiveIntegers:"NonNegativeIntegers",NegativeIntegers:"PositiveIntegers"}[i.base];return t?n.domain(t):i},canonical:(n,e)=>(e=Ue(n,e),e.length===0?n.error("missing"):n.neg(e[0])),simplify:(n,e)=>Cr(n,e[0],"simplify"),evaluate:(n,e)=>Cr(n,e[0],"evaluate"),N:(n,e)=>Cr(n,e[0],"N"),sgn:(n,e)=>{let i=e[0].sgn;if(i!=null){if(i===0)return 0;if(i>0)return-1;if(i<0)return 1}}}},PlusMinus:{description:"Plus or Minus",wikidata:"Q120812",complexity:1200,involution:!0,signature:{domain:["FunctionOf","Values","Tuples"],evaluate:(n,e)=>{if(e.length===1)return n.box(["Pair",e[0],n.neg(e[0])])}}},Power:{wikidata:"Q33456",commutative:!1,threadable:!0,complexity:3500,signature:{domain:["FunctionOf","Numbers","Numbers","Numbers"],canonical:(n,e)=>{if(e=Ue(n,e,2),e.length!==2)return n._fn("Power",e);let[i,t]=e;return i instanceof ae&&i.isNegative?n.neg(n.pow(i,t)):n.pow(i,t)},simplify:(n,e)=>Pn(n,e[0],e[1],"simplify"),evaluate:(n,e)=>Pn(n,e[0],e[1],"evaluate"),N:(n,e)=>n.numericMode==="machine"&&typeof e[0].numericValue=="number"&&typeof e[1].numericValue=="number"?n.number(Math.pow(e[0].numericValue,e[1].numericValue)):Pn(n,e[0],e[1],"N")}},Rational:{complexity:2400,signature:{domain:["FunctionOf","Numbers",["OptArg","Numbers"],"RationalNumbers"],canonical:(n,e)=>(e=re(oe(e)),e.length===0?n._fn("Rational",[n.error("missing")]):e.length===1?n._fn("Rational",[Ge(n,e[0],"ExtendedRealNumbers")]):(e=lr(n,e,["Integers","Integers"]),e.length!==2||!e[0].isValid||!e[1].isValid?n._fn("Rational",e):n.div(e[0],e[1]))),simplify:(n,e)=>{if(e.length===2)return kt(n,e[0],e[1])},evaluate:(n,e)=>{if(e.length===2){let[t,r]=[V(e[0]),V(e[1])];return t!==null&&r!==null?n.number([t,r]):void 0}let i=b(e[0].N());if(i!==null)return n.number(xi(i))},N:(n,e)=>e.length===1?e[0]:Rn(e[0],e[1],(i,t)=>i/t,(i,t)=>i.div(t),(i,t)=>i.div(t))}},Root:{complexity:3200,threadable:!0,signature:{params:["Numbers","Numbers"],result:"Numbers",canonical:(n,e)=>{e=Ue(n,e,2);let[i,t]=e;return e.length!==2||!i.isValid||!t.isValid?n._fn("Root",e):n.pow(i,n.inv(t))}}},Round:{complexity:1250,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>ie(e[0],Math.round,i=>i.round(),i=>i.round(0))}},Sign:{complexity:1200,threadable:!0,signature:{domain:["FunctionOf","Numbers","Integers"],simplify:(n,e)=>{let i=e[0].sgn;if(i===0)return n.Zero;if(i===1)return n.One;if(i===-1)return n.NegativeOne},evaluate:(n,e)=>{let i=e[0].sgn;if(i===0)return n.Zero;if(i===1)return n.One;if(i===-1)return n.NegativeOne},N:(n,e)=>{let i=e[0].sgn;if(i===0)return n.Zero;if(i===1)return n.One;if(i===-1)return n.NegativeOne}}},Sqrt:{description:"Square Root",wikidata:"Q134237",complexity:3e3,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],canonical:(n,e)=>(e=re(oe(e)),e.length!==1?n._fn("Sqrt",e):n.pow(e[0],n.Half)),simplify:(n,e)=>zi(n,e[0],"simplify"),evaluate:(n,e)=>zi(n,e[0],"evaluate"),N:(n,e)=>zi(n,e[0],"N")}},Square:{wikidata:"Q3075175",complexity:3100,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],canonical:(n,e)=>(e=re(oe(e)),e.length!==1?n._fn("Square",e):n._fn("Power",[e[0],n.number(2)]).canonical)}},Subtract:{wikidata:"Q40754",complexity:1350,threadable:!0,signature:{params:["Numbers"],restParam:"Numbers",result:"Numbers",canonical:(n,e)=>{e=Ue(n,e);let i=e[0];if(!i)return n.error("missing");let t=e.slice(1);return $n(n,ne([i,...t.map(r=>xe(r))],"Add"))}}}},{e:{domain:"TranscendentalNumbers",constant:!0,holdUntil:"never",value:"ExponentialE"},i:{domain:"ImaginaryNumbers",constant:!0,holdUntil:"never",flags:{imaginary:!0},value:"ImaginaryUnit"},MachineEpsilon:{domain:"RealNumbers",holdUntil:"N",constant:!0,flags:{real:!0},value:{num:Number.EPSILON.toString()}},Half:{domain:"RationalNumbers",constant:!0,holdUntil:"evaluate",value:["Rational",1,2]},ImaginaryUnit:{domain:"ImaginaryNumbers",constant:!0,holdUntil:"evaluate",wikidata:"Q193796",flags:{imaginary:!0},value:["Complex",0,1]},ExponentialE:{domain:"TranscendentalNumbers",flags:{algebraic:!1,real:!0},wikidata:"Q82435",constant:!0,holdUntil:"N",value:n=>q(n)?n._BIGNUM_ONE.exp():Math.exp(1)},GoldenRatio:{domain:"AlgebraicNumbers",wikidata:"Q41690",constant:!0,flags:{algebraic:!0},holdUntil:"simplify",value:["Divide",["Add",1,["Sqrt",5]],2]},CatalanConstant:{domain:"RealNumbers",flags:{algebraic:void 0},wikidata:"Q855282",constant:!0,holdUntil:"N",value:{num:`0.91596559417721901505460351493238411077414937428167
|
|
18
18
|
21342664981196217630197762547694793565129261151062
|
|
19
19
|
48574422619196199579035898803325859059431594737481
|
|
20
20
|
15840699533202877331946051903872747816408786590902
|
|
@@ -44,11 +44,11 @@ var vl=Object.create;var Ts=Object.defineProperty;var Nl=Object.getOwnPropertyDe
|
|
|
44
44
|
792726801324310104765059637039473949576389065729679296010090151251959509222435
|
|
45
45
|
014093498712282479497471956469763185066761290638110518241974448678363808617494
|
|
46
46
|
551698927923018773910729457815543160050021828440960537724342032854783670151773
|
|
47
|
-
943987003023703395183286900015581939880427074115422278197165230110735658339673`}}},{PreIncrement:{signature:{domain:["FunctionOf","Numbers","Numbers"]}},PreDecrement:{signature:{domain:["FunctionOf","Numbers","Numbers"]}}},{GCD:{description:"Greatest Common Divisor",complexity:1200,threadable:!1,signature:{domain:["FunctionOf",["VarArg","Anything"],"Numbers"],evaluate:(n,e)=>Nu(n,e,"GCD")}},LCM:{description:"Least Common Multiple",complexity:1200,threadable:!1,signature:{domain:["FunctionOf",["VarArg","Anything"],"Numbers"],evaluate:(n,e)=>Nu(n,e,"LCM")}},Numerator:{description:"Numerator of an expression",complexity:1200,threadable:!0,hold:"all",signature:{domain:["FunctionOf","Anything","Numbers"],canonical:(n,e)=>{if(e.length===0)return n.box(["Sequence"]);let i=e[0];if(i.head==="Rational"||i.head==="Divide")return i.op1;let t=J(i);return t!==void 0?n.number(t[0]):n._fn("Numerator",re(e))},evaluate:(n,e)=>{if(e.length===0)return n.box(["Sequence"]);let i=e[0];if(i.head==="Rational"||i.head==="Divide")return i.op1.evaluate();let t=J(i.evaluate());return t!==void 0?n.number(t[0]):n._fn("Numerator",e.map(r=>r.evaluate()))}}},Denominator:{description:"Denominator of an expression",complexity:1200,threadable:!0,hold:"all",signature:{domain:["FunctionOf","Anything","Numbers"],canonical:(n,e)=>{if(e.length===0)return n.box(["Sequence"]);let i=e[0];if(i.head==="Rational"||i.head==="Divide")return i.op2;let t=J(i);return t!==void 0?n.number(t[1]):n._fn("Denominator",re(e))},evaluate:(n,e)=>{if(e.length===0)return n.box(["Sequence"]);let i=e[0];if(i.head==="Rational"||i.head==="Divide")return i.op2.evaluate();let t=J(i.evaluate());return t!==void 0?n.number(t[1]):n._fn("Denominator",e.map(r=>r.evaluate()))}}},NumeratorDenominator:{description:"Sequence of Numerator and Denominator of an expression",complexity:1200,threadable:!0,hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],canonical:(n,e)=>{if(e.length===0)return n.box(["Sequence"]);let i=e[0];if(i.head==="Rational"||i.head==="Divide")return n._fn("Sequence",i.ops);let t=J(i.evaluate());return t!==void 0?n._fn("Sequence",[n.number(t[0]),n.number(t[1])]):n._fn("NumeratorDenominator",e.map(r=>r.evaluate()))},evaluate:(n,e)=>{if(e.length===0)return n.box(["Sequence"]);let i=e[0];if(i.head==="Rational"||i.head==="Divide")return n._fn("Sequence",i.ops);let t=J(i);return t!==void 0?n._fn("Sequence",[n.number(t[0]),n.number(t[1])]):n._fn("NumeratorDenominator",re(e))}}}},{Max:{description:"Maximum of two or more numbers",complexity:1200,threadable:!1,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],simplify:(n,e)=>e.length===0?n.NegativeInfinity:e.length===1?e[0]:n.box(["Max",...e]),evaluate:(n,e)=>Rr(n,e,"Max")}},Min:{description:"Minimum of two or more numbers",complexity:1200,threadable:!1,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],simplify:(n,e)=>e.length===0?n.PositiveInfinity:e.length===1?e[0]:n.box(["Min",...e]),evaluate:(n,e)=>Rr(n,e,"Min")}},Supremum:{description:"Like Max, but defined for open sets",complexity:1200,threadable:!1,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],simplify:(n,e)=>e.length===0?n.NegativeInfinity:e.length===1?e[0]:n.box(["Min",...e]),evaluate:(n,e)=>Rr(n,e,"Supremum")}},Infimum:{description:"Like Min, but defined for open sets",complexity:1200,threadable:!1,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],simplify:(n,e)=>e.length===0?n.PositiveInfinity:e.length===1?e[0]:n.box(["Min",...e]),evaluate:(n,e)=>Rr(n,e,"Infimum")}},Product:{wikidata:"Q901718",complexity:1e3,hold:"all",threadable:!1,signature:{domain:["FunctionOf","Anything",["OptArg","Tuples"],"Numbers"],canonical:(n,e)=>au(n,e[0],e[1]),simplify:(n,e)=>Ar(n,e,"simplify"),evaluate:(n,e)=>Ar(n,e,"evaluate"),N:(n,e)=>Ar(n,e,"N")}},Sum:{wikidata:"Q218005",complexity:1e3,hold:"all",threadable:!1,signature:{domain:["FunctionOf",["Union","Collections","Functions"],["OptArg","Tuples"],"Numbers"],canonical:(n,e)=>Xa(n,e[0],e[1]),simplify:(n,e)=>Br(n,e,"simplify"),evaluate:(n,e)=>Br(n,e,"evaluate"),N:(n,e)=>Br(n,e,"N")}}},{BaseForm:{description:"`BaseForm(expr, base=10)`",complexity:9e3,inert:!0,signature:{domain:["FunctionOf","Values",["OptArg","Integers"],"Values"],result:(n,e)=>e[0].domain}},FromDigits:{description:"`FromDigits(s, base=10)` return an integer representation of the string `s` in base `base`.",signature:{domain:["FunctionOf","Strings",["OptArg","Anything"],"Integers"],evaluate:(n,e)=>{let i=e[0]?.string;if(!i)return n.domainError("Strings",e[0]?.domain,e[0]);if(i=i.trim(),i.startsWith("0x"))return n.number(parseInt(i.slice(2),16));if(i.startsWith("0b"))return n.number(parseInt(i.slice(2),2));let t=e[1]??n.Nothing;if(t.symbol==="Nothing")return n.number(Number.parseInt(i,10));let r=b(t);if(r&&(!Number.isInteger(r)||r<2||r>36))return n.error(["unexpected-base",r],t);let[o,s]=Ti(i,t.string??t.symbol??10);return s?n.error(["unexpected-digit",{str:s[0]}],{str:s}):n.number(o)}}},IntegerString:{description:"`IntegerString(n, base=10)` return a string representation of the integer `n` in base `base`.",threadable:!0,signature:{domain:["FunctionOf","Integers",["OptArg","Integers"],"Strings"],evaluate:(n,e)=>{let i=e[0],t=b(i)??NaN;if(Number.isNaN(t)||!Number.isInteger(t))return n.domainError("Integers",i.domain,i);let r=e[1]??n.Nothing;if(r.symbol==="Nothing"){let s=i.numericValue;return typeof s=="number"?n.string(Math.abs(s).toString()):s instanceof N?n.string(s.abs().toString()):n.string(Math.abs(Math.round(b(i)??NaN)).toString())}if(U(r)===null)return n.domainError("Integers",r.domain,r);let o=U(r);return o<2||o>36?n.error(["out-of-range",2,36,o],r):n.string(Math.abs(t).toString(o))}}}}];function ss(n,e,i){if(i!=="simplify"){let t=e.numericValue;if(t!==null){if(typeof t=="number")return n.number(Math.abs(t));if(t instanceof N||t instanceof as.Complex)return n.number(t.abs());if($(t))return n.number(i==="N"?Math.abs(t[0]/t[1]):[Math.abs(t[0]),t[1]]);if(G(t)){let[r,o]=t;return n.number(i==="N"?n.bignum(r).div(n.bignum(o)).abs():[r>0?r:-r,o])}}}if(e.isNonNegative)return e;if(e.isNegative)return n.neg(e)}function Tu(n,e){let i=n.engine,t=e==="Max"||e==="Supremum";if(n.head==="Interval"){let r=t?n.op2:n.op1;return!r.isNumber||r.numericValue===void 0?[void 0,[n]]:[r,[]]}if(n.head==="Range"){if(n.nops===1)n=t?n.op1:i.One;else if(!t)n=n.op1;else{let r=n.nops===2?1:b(n.op3);if(r===null||!isFinite(r))return[void 0,[n]];let[o,s]=[b(n.op1),b(n.op2)];if(o===null||s===null)return[void 0,[n]];let a=Math.floor((s-o)/r);n=i.number(o+r*a)}return[n,[]]}if(n.head==="Linspace")return n.nops===1?n=t?n.op1:i.One:t?n=n.op2:n=n.op1,[n,[]];if(bn(n)){let r,o=[];for(let s of Y(n)){let[a,l]=Tu(s,e);a&&(r?(t&&a.isGreater(r)||!t&&a.isLess(r))&&(r=a):r=a),o.push(...l)}return[r,o]}return!n.isNumber||n.numericValue===void 0?[void 0,[n]]:[n,[]]}function Rr(n,e,i){let t=i==="Max"||i==="Supremum";if(e.length===0)return t?n.NegativeInfinity:n.PositiveInfinity;let r,o=[];for(let s of e){let[a,l]=Tu(s,i);a&&(r?(t&&a.isGreater(r)||!t&&a.isLess(r))&&(r=a):r=a),o.push(...l)}return o.length>0?n.box(r?[i,r,...o]:[i,...o]):r??(t?n.NegativeInfinity:n.PositiveInfinity)}function Nu(n,e,i){let t=i==="LCM"?Zt:Bn,r=i==="LCM"?aa:ao,o=[];if(L(n)){let a=null;for(let l of e)if(a===null)a=je(l),(a===null||!a.isInteger())&&o.push(l);else{let u=je(l);u&&u.isInteger()?a=r(a,u):o.push(l)}return o.length===0?a===null?n.One:n.number(a):a===null?n._fn(i,o):n._fn(i,[n.number(a),...o])}let s=null;for(let a of e)if(s===null)s=b(a),(s===null||!Number.isInteger(s))&&o.push(a);else{let l=b(a);l&&Number.isInteger(l)?s=t(s,l):o.push(a)}return o.length===0?s===null?n.One:n.number(s):s===null?n._fn(i,o):n._fn(i,[n.number(s),...o])}function _u(n,e){let i=e[0];if(i.isZero)return n.NaN;if(i.isOne)return n.Zero;if(i.isNegativeOne&&ae(n))return n.mul(n.Pi,n.I);if(i.symbol==="ExponentialE")return n.One;if(i.head==="Power"&&i.op1.symbol==="ExporentialE")return i.op2;if(i.head==="Power"){let[t,r]=i.ops;return n.mul(r,n.box(["Ln",t]).simplify())}if(i.head==="Multiply"){let[t,r]=i.ops;return n.add(n.box(["Ln",t]).simplify(),n.box(["Ln",r]).simplify())}if(i.head==="Divide"){let[t,r]=i.ops;return n.add(n.box(["Ln",t]).simplify(),n.neg(n.box(["Ln",r]).simplify()))}}var kd={Sin:["Cos","_"],Cos:["Negate",["Sin","_"]],Tan:["Power",["Sec","_"],2],Sec:["Multiply",["Tan","_"],["Sec","_"]],Csc:["Multiply",["Negate",["Cot","_"]],["Csc","_"]],Cot:["Negate",["Power",["Csc","_"],2]],Arcsin:["Power",["Subtract",1,["Power","_",2]],["Negate","Half"]],Arccos:["Negate",["Power",["Subtract",1,["Power","_",2]],["Negate","Half"]]],Arctan:["Power",["Add",1,["Power","_",2]],-1],Arcsec:["Multiply",["Power",["Subtract",1,["Power","_",2]],["Negate","Half"]],["Negate",["Power","_",2]]],Arccsc:["Multiply",["Power",["Subtract",1,["Power","_",2]],["Negate","Half"]],["Negate",["Power","_",2]]],Arccot:["Negate",["Power",["Add",1,["Power","_",2]],-1]],Sinh:["Cosh","_"],Cosh:["Sinh","_"],Tanh:["Power",["Sech","_"],2],Sech:["Multiply",["Tanh","_"],"Sech"],Csch:["Multiply",["Coth","_"],"Csch"],Coth:["Negate",["Power",["Csch","_"],2]],Arcsinh:["Power",["Add",["Power","_",2],1],["Negate","Half"]],Arccosh:["Power",["Subtract",["Power","_",2],1],["Negate","Half"]],Arctanh:["Power",["Subtract",1,["Power","_",2]],-1],Arcsech:["Negate",["Power",["Multiply","2","Subtract",["Power","_",2]],["Negate","Half"]]],Arccsch:["Negate",["Power",["Multiply","2","Add",["Power","_",2]],["Negate","Half"]]],Arccoth:["Negate",["Power",["Subtract",1,["Power","_",2]],-1]],Ln:["Divide",1,"_"],Log:["Power",["Multiply","_",["Ln","10"]],-1],Sqrt:["Multiply",["Power","_",["Negate","Half"]],"Half"],Abs:["Piecewise",["Tuple",["Multiply","_",["Power","_",-1]],["Greater","_",0]]],Erf:["Multiply",["Divide","2",["Sqrt","Pi"]],["Exp",["Negate",["Square","_"]]]],Gamma:["Multiply",["Gamma","_"],["Digamma","_"]],Digamma:["Add",["Multiply",["Digamma","_"],["Gamma","_"]],["Multiply",["Power","_",-1],["Gamma","_"]]],Zeta:["Multiply",["Multiply",-1,["Zeta","_"]],["Digamma","_"]],PolyGamma:["Add",["Multiply",["PolyGamma","_"],["Gamma","_"]],["Multiply",["Power","_",-1],["Gamma","_"]]],Beta:["Multiply",["Add",["Multiply",["Beta","_"],["Digamma","_"]],["Multiply",["Power","_",-1],["Beta","_"]]],["Beta","_"]],Erfc:["Multiply",["Negate",["Erfc","_"]],["Exp",["Negate",["Power","_",2]]],["Power","_",-1]],LambertW:["Multiply",["Power","_",-1],["Multiply",["Add","_",["LambertW","_"]],["Add",["LambertW","_"],1]]],AiryAi:["Multiply",["AiryAi","_"],["AiryBi","_"]],AiryBi:["Multiply",["AiryAi","_"],["AiryBi","_"]],BesselJ:["Multiply",["BesselJ","_"],["BesselY","_"]],BesselY:["Multiply",["BesselJ","_"],["BesselY","_"]],BesselI:["Multiply",["BesselI","_"],["BesselK","_"]],BesselK:["Multiply",["BesselI","_"],["BesselK","_"]],FresnelS:["Multiply",["FresnelS","_"],["FresnelC","_"]],FresnelC:["Multiply",["FresnelS","_"],["FresnelC","_"]],Erfi:["Multiply",["Erfi","_"],["Erf","_"]]};function Ve(n,e){let i=n.engine;if(!(n.string||n.keys)){if(n.numericValue!==null)return n.engine.Zero;if(n.symbol===e)return n.engine.One;if(n.symbol)return n.engine.Zero;if(n.head&&typeof n.head=="string"){if(n.head==="Negate"){let s=Ve(n.op1,e);return s?i.neg(s):i.neg(i._fn("D",[n.op1,i.symbol(e)]))}if(n.head==="Add"){let s=n.ops.map(a=>Ve(a,e));return s.some(a=>a===void 0)?void 0:i.add(...s)}if(n.head==="Multiply"){let s=n.ops.map((a,l)=>{let u=n.ops.slice();u.splice(l,1);let f=i.mul(...u),d=Ve(a,e)??i._fn("D",[a,i.symbol(e)]);return i.mul(d,f)});return s.some(a=>a===void 0)?void 0:i.add(...s)}if(n.head==="Power"){let[s,a]=n.ops;if(s.symbol===e)return i.mul(a,i.pow(s,i.add(a,i.NegativeOne)));let l=s,u=a,f=Ve(l,e)??i._fn("D",[l,i.symbol(e)]),d=Ve(u,e)??i._fn("D",[u,i.symbol(e)]),c=i.box(["Ln",l]).evaluate(),m=i.mul(d,c),g=i.mul(u,f),h=i.div(g,l);return i.mul(n,i.add(m,h))}if(n.head==="Divide"){let[s,a]=n.ops,l=Ve(s,e)??i._fn("D",[s,i.symbol(e)]),u=Ve(a,e)??i._fn("D",[a,i.symbol(e)]);return i.div(i.add(i.mul(l,a),i.neg(i.mul(u,s))),i.pow(a,2))}let t=kd[n.head];if(!t){if(n.nops>1)return;let s=i._fn("Derivative",[i.symbol(n.head),i.One]);if(!s.isValid)return;let a=n.ops[0],l=Ve(a,e)??i._fn("D",[a,i.symbol(e)]);return l.isValid?i.mul(i._fn("Apply",[s,a]),l):void 0}if(n.nops>1)return i._fn("D",[n,i.symbol(e)]);let r=n.ops[0],o=Ve(r,e)??i._fn("D",[r,i.symbol(e)]);return i.mul(bi(i.box(t),[r]),o)}}}var Bu=[{Derivative:{hold:"all",threadable:!1,signature:{domain:["FunctionOf","Functions",["OptArg","Numbers"],"Functions"],canonical:(n,e)=>e[0].functionDefinition?Ve(n._fn(e[0].canonical,[n.symbol("_")]),"_")?.canonical??n._fn("Derivative",e):n._fn("Derivative",e),simplify:(n,e)=>{let i=e[0].simplify();return e[1]?n._fn("Derivative",[i,e[1]]):n._fn("Derivative",[i])},evaluate:(n,e)=>{let i=e[0].evaluate();if(i.functionDefinition)return Ve(n._fn(i,[n.symbol("_")]),"_")?.canonical??void 0;let t=Ve(i,"_");if(t)return t.canonical}}},D:{hold:"all",threadable:!1,signature:{domain:["FunctionOf","Anything","Symbols",["VarArg","Symbols"],"Anything"],canonical:(n,e)=>{let i=e[0];if(!i)return null;n.pushScope();let t=e.slice(1);i.bind(),i=i.canonical;let r=n._fn("D",[i,...t]);return n.popScope(),r},evaluate:(n,e)=>{let i=e[0].canonical,t=n.swapScope(i.scope);i=i.evaluate();let r=e.slice(1);r.length===0&&(i=void 0);for(let o of r){if(!o.symbol){i=void 0;break}if(i=Ve(i,o.symbol),i===void 0)break}return n.swapScope(t),i=i?.canonical,i?.head==="D"?i:i?.evaluate()}}},ND:{hold:"first",threadable:!1,signature:{domain:["FunctionOf","Anything","Numbers","Functions"],N:(n,e)=>{let i=e[1]?.value;if(typeof i!="number")return;let t=Lo(n.box(e[0]));return n.number(Js(t,i))}}},Integrate:{wikidata:"Q80091",hold:"all",threadable:!1,signature:{domain:["FunctionOf","Functions",["OptArg",["Union","Tuples","Symbols"]],"Numbers"],canonical:(n,e)=>{let i=e[1],t=null,r=null,o=null;i&&i.head!=="Tuple"&&i.head!=="Triple"&&i.head!=="Pair"&&i.head!=="Single"?t=i:i&&(t=i.ops?.[0]??null,r=i.ops?.[1]?.canonical??null,o=i.ops?.[2]?.canonical??null),t&&t.head==="Hold"&&(t=t.op1),t&&t.head==="ReleaseHold"&&(t=t.op1.evaluate()),t??(t=n.Nothing),t.symbol||(t=n.domainError("Symbols",t.domain,t)),r&&(r=Le(n,r,n.Numbers)),o&&(o=Le(n,o,n.Numbers)),r&&o?i=n.tuple([t,r,o]):o?i=n.tuple([t,n.NegativeInfinity,o]):r?i=n.tuple([t,r]):i=t;let s=e[0]??n.error("missing");return s=s.canonical,s.head==="Delimiter"&&s.op1.head==="Sequence"&&(s=s.op1.op1),n._fn("Integrate",[s,i])}}},NIntegrate:{hold:"first",threadable:!1,signature:{domain:["FunctionOf","Functions","Numbers","Numbers","Numbers"],params:["Functions","Numbers","Numbers"],restParam:"Numbers",evaluate:(n,e)=>{let i=n.numericMode,t=n.precision;n.numericMode="machine";let r=n.strict;n.strict=!1;let[o,s]=e.slice(1).map(l=>l.value),a;if(typeof o=="number"&&typeof s=="number"){let l=Lo(e[0]);a=n.number(Jt(l,o,s))}return n.numericMode=i,n.precision=t,n.strict=r,a}}}},{Limit:{description:"Limit of a function",complexity:5e3,hold:"all",threadable:!1,signature:{domain:["FunctionOf","Anything","Numbers",["OptArg","Numbers"],"Numbers"],N:(n,e)=>{let[i,t,r]=e,o=b(t.N());if(o===null)return;let s=yi(i);return n.number(si(a=>{let l=s([n.number(a)])?.value;return typeof l=="number"?l:Number.NaN},o,r?b(r)??1:1))}}},NLimit:{description:"Numerical approximation of the limit of a function",complexity:5e3,hold:"all",threadable:!1,signature:{domain:["FunctionOf","Anything","Numbers",["OptArg","Numbers"],"Numbers"],evaluate:(n,e)=>{let[i,t,r]=e,o=b(t.N());if(o===null)return;let s=yi(i);return n.number(si(a=>{let l=s([n.number(a)])?.value;return typeof l=="number"?l:Number.NaN},o,r?b(r)??1:1))}}}}];var Pr=50,Du={List:{complexity:8200,hold:"all",signature:{domain:["FunctionOf",["VarArg","Anything"],"Lists"],canonical:wd},size:n=>n.nops,iterator:(n,e,i)=>{let t=e??1;return i=Math.min(i??n.nops,n.nops),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:n.ops[t++-1],done:!1}):{value:void 0,done:!0}}},at:(n,e)=>{if(typeof e=="number"&&!(e<1||e>n.nops))return n.ops[e-1]},indexOf:(n,e,i)=>{if(i??(i=1),i<0){if(i<-n.nops)return;i=n.nops+i+1;let r=i;for(let o=r;o>=1;o--)if(n.ops[o-1].isEqual(e))return o;return}let t=i;for(let r=t;r<=n.nops;r++)if(n.ops[r-1].isEqual(e))return r}},Set:{complexity:8200,hold:"all",signature:{domain:["FunctionOf",["VarArg","Anything"],"Sets"],canonical:Cd},size:n=>n.nops,iterator:(n,e,i)=>{let t=e??1;return i=Math.min(i??n.nops,n.nops),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:n.ops[t++-1],done:!1}):{value:void 0,done:!0}}}},Range:{complexity:8200,signature:{domain:["FunctionOf","Numbers",["OptArg","Numbers","Numbers"],"Values"]},size:n=>{let[e,i,t]=qr(n);return!isFinite(e)||!isFinite(i)?1/0:1+Math.max(0,Math.floor((i-e)/t))},at:(n,e)=>{if(typeof e!="number")return;let[i,t,r]=qr(n);if(!(e<1||e>1+(t-i)/r))return n.engine.number(i+r*(e-1))},iterator:(n,e,i)=>{let[t,r,o]=qr(n),s=e??1;return i=Math.min(i??r,r),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:n.engine.number(t+o*(s++-1)),done:!1}):{value:void 0,done:!0}}}},Linspace:{complexity:8200,signature:{domain:["FunctionOf","Numbers",["OptArg","Numbers","Numbers"],"Values"]},size:n=>{let e=b(n.op3)??Pr;return Math.max(0,Math.floor(e))},at:(n,e)=>{if(typeof e!="number")return;let i=b(n.op1),t=b(n.op2),r=b(n.op3)??Pr;if(!(i===void 0||t===void 0)&&!(e<1||e>r))return n.engine.number(i+(t-i)*(e-1)/r)},iterator:(n,e,i)=>{let t=b(n.op1),r=b(n.op2),o;r===void 0?(r=t,t=1,o=Pr):o=Math.max(0,b(n.op3)??Pr);let s=e??1;return i=Math.min(i??o,o),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:n.engine.number(t+(r-t)*(s++-1)/o),done:!1}):{value:void 0,done:!0}}}},KeyValuePair:{description:"A key/value pair",complexity:8200,signature:{domain:["FunctionOf","Strings","Anything","Tuples"],canonical:(n,e)=>{let[i,t]=rr(n,e,[n.Strings,"Values"]);return!i.isValid||!t.isValid?n._fn("KeyValuePair",[i,t]):n.tuple([i,t])}},size:n=>1},Single:{description:"A tuple with a single element",complexity:8200,signature:{domain:["FunctionOf","Anything","Tuples"],canonical:(n,e)=>n.tuple(Be(n,e,1))},size:n=>n.nops,at:(n,e)=>{if(!(typeof e!="number"||e!==1))return n.ops[0]}},Pair:{description:"A tuple of two elements",complexity:8200,signature:{domain:["FunctionOf","Anything","Anything","Tuples"],canonical:(n,e)=>n.tuple(Be(n,e,2))},size:n=>n.nops,at:(n,e)=>typeof e=="number"?n.ops[e-1]:void 0},Triple:{description:"A tuple of three elements",complexity:8200,signature:{domain:["FunctionOf","Anything","Anything","Anything","Tuples"],canonical:(n,e)=>n.tuple(Be(n,e,3))},size:n=>n.nops,at:(n,e)=>typeof e=="number"?n.ops[e-1]:void 0},Tuple:{description:"A fixed number of heterogeneous elements",complexity:8200,signature:{domain:["FunctionOf","Anything",["VarArg","Anything"],"Tuples"],canonical:(n,e)=>n.tuple(re(e))},size:n=>n.nops,at:(n,e)=>typeof e=="number"?n.ops[e-1]:void 0},String:{threadable:!0,signature:{domain:["FunctionOf",["OptArg","Anything"],"Strings"],evaluate:(n,e)=>e.length===0?n.string(""):n.string(e.map(i=>i.string??i.toString()).join(""))}},Length:{complexity:8200,signature:{domain:["FunctionOf","Values","Numbers"],evaluate:(n,e)=>{let i=e[0].functionDefinition;if(i?.size)return n.number(i.size(e[0]));let t=e[0].string;return t!==null?n.number(t.length):n.Zero}}},IsEmpty:{complexity:8200,signature:{domain:["FunctionOf","Values","Numbers"],evaluate:(n,e)=>{let i=e[0].functionDefinition,t;if(i?.size)t=i.size(e[0]);else{let r=e[0].string;r!==null&&(t=r.length)}if(t!==void 0)return t===0?n.True:n.False}}},Take:{complexity:8200,signature:{domain:["FunctionOf","Values",["VarArg","Values"],"Values"],evaluate:(n,e)=>{if(e.length<2)return;let i=e[0].string;if(i!==null){let o=e.slice(1).map(s=>Fr(s,i.length));return n.string(Ad(i,o))}let r=e[0].functionDefinition?.size?.(e[0]);return Lr(e[0],e.slice(1).map(o=>Fr(o,r)))}}},Drop:{complexity:8200,signature:{domain:["FunctionOf","Values",["VarArg","Values"],"Values"],evaluate:(n,e)=>{if(e.length<2)return;let i=e[0].string;if(i!==null){let a=Iu(e.slice(1).map(l=>Fr(l,i.length)));return n.string(i.split("").filter((l,u)=>!a.includes(u+1)).join(""))}let t=e[0].functionDefinition,r=t?.size?.(e[0]);if(!r||!t?.at)return n.Nothing;let o=Iu(e.slice(1).map(a=>Fr(a,r))),s=[];for(let a=1;a<=r;a++)if(!o.includes(a)){let l=t.at(e[0],a);l&&s.push(l)}return n.box(["List",...s])}}},At:{complexity:8200,signature:{domain:["FunctionOf","Values","Values","Values"],evaluate:(n,e)=>{let i=e[0],t=i.functionDefinition;if(!t?.at)return;if(e[1].string!==null)return t.at(i,1)??n.Nothing;let o=b(e[1]);if(!(o===null||!Number.isInteger(o)))return t.at(i,o)??n.Nothing}}},First:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0],t=i.functionDefinition;return t?.at?t.at(i,1)??n.Nothing:n.Nothing}}},Second:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0],t=i.functionDefinition;return t?.at?t.at(i,2)??n.Nothing:n.Nothing}}},Last:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0],t=i.functionDefinition;return t?.at?t.at(i,-1)??n.Nothing:n.Nothing}}},Rest:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>Lr(e[0],[[2,-1,1]])}},Most:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>Lr(e[0],[[1,-2,1]])}},Reverse:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>Lr(e[0],[[-1,2,1]])}},Ordering:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Functions"],"Values"],evaluate:(n,e)=>{}}},Sort:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Functions"],"Values"],evaluate:(n,e)=>{}}},Shuffle:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{}}},Map:{complexity:8200,signature:{domain:["FunctionOf","Collections","Functions","Collections"],evaluate:(n,e)=>{}}},Filter:{complexity:8200,signature:{domain:["FunctionOf","Values","Functions","Values"],evaluate:(n,e)=>{}}},Reduce:{complexity:8200,signature:{domain:["FunctionOf","Values","Functions",["OptArg","Values"],"Values"],evaluate:(n,e)=>{}}},Tabulate:{complexity:8200,signature:{domain:["FunctionOf","Functions","Integers",["VarArg","Integers"],"Values"],evaluate:(n,e)=>{}}},Tally:{complexity:8200,signature:{domain:["FunctionOf","Values","Tuples"],evaluate:(n,e)=>{}}},Unique:{complexity:8200,signature:{domain:["FunctionOf","Values","Tuples"],evaluate:(n,e)=>{}}},Zip:{complexity:8200,signature:{domain:["FunctionOf","Values",["VarArg","Values"],"Values"],evaluate:(n,e)=>{}}},RotateLeft:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Integers"],"Values"],evaluate:(n,e)=>{}}},RotateRight:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Integers"],"Values"],evaluate:(n,e)=>{}}},Join:{complexity:8200,signature:{domain:["FunctionOf",["VarArg","Values"],"Values"],evaluate:(n,e)=>{}}},Iterate:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Values"],"Values"],evaluate:(n,e)=>{}}},Repeat:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{}}},Cycle:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{}}},Fill:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{}}}};function qr(n){let e=b(n.op1)??1,i=b(n.op2);if(i===void 0)return[1,e,1];let t=b(n.op3)??1;return[e,i,t]}function Fr(n,e){if(!n)return[0,0,0];let i=b(n);if(i!==null){if(i=Math.round(i),i<0){if(e===void 0)return[0,0,0];i=e+i+1}return[i,i,1]}let t=n.head;if(!t||typeof t!="string"||!/^(Single|Pair|Triple|Tuple|)$/.test(t))return[0,0,0];let[r,o,s]=qr(n);return(r<0||o<0)&&e===void 0?[0,0,0]:(r<0&&(r=e+r+1),o<0&&(o=e+o+1),s=Math.abs(Math.round(s)),s===0?[0,0,0]:(r>o&&(s=-s),[r,o,s]))}function Lr(n,e){let i=n.engine,t=n.functionDefinition;if(!t?.at)return i.Nothing;let r=[];for(let o of e){let[s,a,l]=o;if(l!==0)if(l<0)for(let u=s;u>=a;u+=l){let f=t.at(n,u);f&&r.push(f)}else for(let u=s;u<=a;u+=l){let f=t.at(n,u);f&&r.push(f)}}return i.box(["List",...r])}function Ad(n,e){let i="";for(let t of e){let[r,o,s]=t;if(s===1)i+=n.slice(r-1,o);else if(s<0)for(let a=r;a>=o;a+=s)i+=n[a-1];else for(let a=r;a<=o;a+=s)i+=n[a-1]}return i}function Iu(n){let e=[];for(let i of n){let[t,r,o]=i;if(o!==0)if(o<0)for(let s=t;s>=r;s+=o)e.push(s);else for(let s=t;s<=r;s+=o)e.push(s)}return e}function wd(n,e){let i=e[0];if(e.length===1&&i.head==="Matrix"){let[t,r,o]=i.ops;if(!r||r.string==="..")return o?n._fn("Matrix",[t,n.string("[]"),o]):n._fn("Matrix",[t,r])}return e=e.map(t=>t.head==="Delimiter"?t.op1.head==="Sequence"?n.box(["List",...re(t.op1.ops)]):n.box(["List",t.op1?.canonical??n.Nothing]):t.canonical),n.box(["List",...e])}function Cd(n,e){let i=[],t=r=>i.some(o=>o.isEqual(r));for(let r of e)t(r)||i.push(r);return n.function("Set",i,{canonical:!1})}var ku=[{Block:{hold:"all",signature:{domain:"Functions",canonical:Pd,evaluate:Rd}},If:{hold:"rest",signature:{domain:"Functions",result:(n,e)=>Kn(e[0],e[1]),evaluate:(n,e)=>{let i=e[0];return i&&i.symbol==="True"?e[1]?e[1].evaluate():n.Nothing:e[2]?e[2].evaluate():n.Nothing}}},Loop:{hold:"all",signature:{domain:"Functions",evaluate:(n,e)=>{let i=e[0]??n.Nothing;if(i.symbol==="Nothing")return i;let t=e[1];if(t&&bn(t)){let o,s=yi(i),a=0;for(let l of Y(t)){if(o=s([l])??n.Nothing,o.head==="Break")return o.op1;if(o.head==="Return")return o;if(a++>n.iterationLimit)return n.error("iteration-limit-exceeded")}}let r=0;for(;;){let o=i.evaluate();if(o.head==="Break")return o.op1;if(o.head==="Return")return o;if(r++>n.iterationLimit)return n.error("iteration-limit-exceeded")}}}},Which:{hold:"all",signature:{domain:"Functions",result:(n,e)=>Md(n,e),evaluate:(n,e)=>Od(n,e,"evaluate")}},FixedPoint:{hold:"all",signature:{domain:"Functions"}}}];function Md(n,e){let i=null;for(let t=1;t<=e.length-1;t+=2)i=Kn(i,e[t].domain);return i??n.domain("NothingDomain")}function Od(n,e,i){let t=0;for(;t<e.length-1;){if(e[t].evaluate().symbol==="True")return e[t+1]?i==="N"?e[t+1].N():e[t+1].evaluate():n.symbol("Undefined");t+=2}return n.symbol("Undefined")}function Rd(n,e){if(e.length===0)return n.Nothing;n.resetContext();let i;for(let t of e){let r=t.head;if(r==="Return"){i=t.op1.evaluate();break}if(r==="Break"||r==="Continue"){i=n.box([r,t.op1.evaluate()]);break}i=t.evaluate()}return i??n.Nothing}function Pd(n,e){if(e.length===0)return null;n.pushScope();let i=[],t=[];for(let o of e)o.head==="Declare"?i.push(o):t.push(Au(o));let r=n._fn("Block",[...i,...t]);return n.popScope(),r}function Au(n){return n.head==="Declare"&&n.engine.error("unexpected-declare"),n.ops?n.engine._fn(n.head,n.ops.map(Au)):n}var wu=[{Real:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>{let i=e[0].numericValue;if(i!==null)return n.isComplex(i)?n.number(i.re):e[0]}}},Imaginary:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>{let i=e[0].numericValue;if(i!==null)return n.isComplex(i)?n.number(i.im):n.Zero}}},Argument:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>{let i=e[0].numericValue;if(i===null)return;if(n.isComplex(i))return n.number(i.arg());let t=b(e[0]);if(t!==null)return t>=0?n.Zero:n.Pi}}},AbsArg:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Tuples"],evaluate:(n,e)=>{let i=e[0].numericValue;if(i===null)return;if(n.isComplex(i))return n.tuple([n.number(i.abs()),n.number(i.arg())]);let t=b(e[0]);if(t!==null)return n.tuple([n.number(Math.abs(t)),n.number(t>=0?0:Math.PI)])}}},Conjugate:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>{let i=e[0].numericValue;if(!(i===null||!n.isComplex(i)))return n.number(i.conjugate())}}},ComplexRoots:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers","Lists"],evaluate:(n,e)=>{let i=b(e[0]),t=b(e[1]);if(i===null||t===null||!Number.isInteger(t)||t<=0)return;let r=[],[o,s]=n.isComplex(i)?[i.re,i.im]:[i,0],a=Math.atan2(s,o),l=Math.sqrt(o*o+s*s);for(let u=0;u<t;u++){let f=(a+2*Math.PI*u)/t,d=Math.pow(l,1/t);r.push([d*Math.cos(f),d*Math.sin(f)])}return n.box(["List",...r.map(u=>n.number(u[1]!==0?n.complex(u[0],u[1]):u[0]))])}}}}];var Cu=[{Matrix:{complexity:9e3,hold:"all",signature:{params:["Lists"],optParams:["Strings","Strings"],result:"Lists",canonical:Fd,evaluate:(n,e)=>e[0].evaluate(),N:(n,e)=>e[0].N()}},Vector:{complexity:9e3,hold:"all",signature:{restParam:"Anything",result:"Lists",canonical:(n,e)=>n._fn("Matrix",[n.box(["List",...e.map(i=>n.box(["List",i.canonical]))])])}}},{Shape:{complexity:8200,signature:{domain:["FunctionOf","Values","Tuples"],evaluate:(n,e)=>{let i=e[0];return qe(i)?n.tuple(i.tensor.shape):n.tuple([])}}},Rank:{complexity:8200,signature:{domain:["FunctionOf","Values","Numbers"],evaluate:(n,e)=>{let i=e[0];return qe(i)?n.number(i.tensor.rank):n.Zero}}},Reshape:{complexity:8200,signature:{domain:["FunctionOf","Values","Tuples","Values"],evaluate:(n,e)=>{let i=e[0],t=e[1].ops?.map(r=>r.value)??[];if(!qe(i)&&ue(i)&&(i=n.box(["List",...Y(i)])),qe(i))return i.tensor.reshape(...t).expression}}},Flatten:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0];if(qe(i))return n.box(["List",...i.tensor.flatten().map(t=>n.box(t))]);if(ue(i))return n.box(["List",...Y(i)])}}},Transpose:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Numbers","Numbers"],"Values"],evaluate:(n,e)=>{let i=e[0],t=1,r=2;if(e.length===3&&(t=e[1].value,r=e[2].value,t>0&&r>0),t!==r&&(!qe(i)&&ue(i)&&(i=n.box(["List",...Y(i)])),qe(i)))return t===1&&r===2?i.tensor.transpose()?.expression:i.tensor.transpose(t,r)?.expression}}},ConjugateTranspose:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0],t=1,r=2;if(e.length===3&&(t=e[1].value,r=e[2].value,t>0&&r>0),t!==r&&qe(i))return i.tensor.conjugateTranspose(t,r)?.expression}}},Determinant:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0];if(qe(i))return i.tensor.determinant()}}},Inverse:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0];if(qe(i))return i.tensor.inverse()?.expression}}},PseudoInverse:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0];if(qe(i))return i.tensor.pseudoInverse()?.expression}}},AdjugateMatrix:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0];if(qe(i))return i.tensor.adjugateMatrix()?.expression}}},Trace:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0];if(qe(i))return i.tensor.trace()}}}}];function Fd(n,e,i="Matrix"){if(e.length===0)return n._fn(i,[]);let t=e[0].head==="Vector"?e[0].canonical.ops[0]:e[0].canonical,r=e[1]?.canonical,o=e[2]?.canonical;return e.length>3?n._fn(i,Be(n,e,3)):o?n._fn(i,[t,r,o]):r?n._fn(i,[t,r]):n._fn(i,[t])}var Lu={True:{wikidata:"Q16751793",domain:"Booleans",constant:!0},False:{wikidata:"Q5432619",domain:"Booleans",constant:!0},And:{wikidata:"Q191081",threadable:!0,associative:!0,commutative:!0,idempotent:!0,complexity:1e4,signature:{domain:"LogicOperators",simplify:Mu,evaluate:Mu}},Or:{wikidata:"Q1651704",threadable:!0,associative:!0,commutative:!0,idempotent:!0,complexity:1e4,signature:{domain:"LogicOperators",simplify:Ou,evaluate:Ou}},Not:{wikidata:"Q190558",threadable:!0,involution:!0,complexity:10100,signature:{domain:"LogicOperators",simplify:Ru,evaluate:Ru}},Equivalent:{wikidata:"Q220433",threadable:!0,complexity:10200,signature:{domain:"LogicOperators",canonical:(n,e)=>{let i=e[0].symbol,t=e[1].symbol;return i==="True"&&t==="True"||i==="False"&&t==="False"?n.True:i==="True"&&t==="False"||i==="False"&&t==="True"?n.False:n._fn("Equivalent",e)},simplify:Pu,evaluate:Pu}},Implies:{wikidata:"Q7881229",threadable:!0,complexity:10200,signature:{domain:"LogicOperators",simplify:Fu,evaluate:Fu}},Exists:{signature:{domain:"Functions"},hold:"all"},ExistsUnique:{signature:{domain:"Functions"},hold:"all"},ForAll:{signature:{domain:"Functions"},hold:"all"}};function Mu(n,e){if(e.length===0)return n.True;let i=[];for(let t of e){if(t.symbol==="False")return n.False;if(t.symbol!=="True"){let r=!1;for(let o of i)if(o.isSame(t))r=!0;else if(t.head==="Not"&&t.op1.isSame(o)||o.head==="Not"&&o.op1.isSame(t))return n.False;r||i.push(t)}}return i.length===0?n.True:i.length===1?i[0]:n._fn("And",i)}function Ou(n,e){if(e.length===0)return n.True;let i=[];for(let t of e){if(t.symbol==="True")return n.True;if(t.symbol!=="False"){let r=!1;for(let o of i)if(o.isSame(t))r=!0;else if(t.head==="Not"&&t.op1.isSame(o)||o.head==="Not"&&o.op1.isSame(t))return n.True;r||i.push(t)}}return i.length===0?n.False:i.length===1?i[0]:n._fn("Or",i)}function Ru(n,e){let i=e[0]?.symbol;if(i==="True")return n.False;if(i==="False")return n.True}function Pu(n,e){let i=e[0].symbol,t=e[1].symbol;if(i==="True"&&t==="True"||i==="False"&&t==="False")return n.True;if(i==="True"&&t==="False"||i==="False"&&t==="True")return n.False}function Fu(n,e){let i=e[0].symbol,t=e[1].symbol;if(i==="True"&&t==="True"||i==="False"&&t==="False"||i==="False"&&t==="True")return n.True;if(i==="True"&&t==="False")return n.False}var qu=[{Expand:{description:"Expand out products and positive integer powers",signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>fn(e[0])??e[0]}},ExpandAll:{description:"Recursively expand out products and positive integer powers",signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>Uo(e[0])??e[0]}},Factor:{description:"Factors an algebraic expression into a product of irreducible factors",signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>Ja(e[0])}},Together:{description:"Combine rational expressions into a single fraction",signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>Ei(e[0])}},Distribute:{description:"Distribute multiplication over addition",signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0].head;if(i==="Multiply")return Vn(e[0].ops)??e[0];if(i==="Negate")return Vn([n.NegativeOne,...e[0].ops])??e[0];if(i==="Divide"&&e[0].ops[0].head==="Multiply"){let t=Vn(e[0].ops),r=e[0].ops[1];if(t)return t.head==="Add"?n.add(...t.ops.map(o=>n.div(o,r))).evaluate():n.div(t,r).evaluate()}return e[0]}}}}];var Vu={Congruent:{commutative:!1,complexity:11e3,numeric:!0,signature:{simplify:(n,e)=>{if(!(e.length<3))return n._fn("Equal",[n.box(["Mod",e[0],e[2]]).simplify(),n.box(["Mod",e[1],e[2]]).simplify()]).simplify()},evaluate:(n,e)=>{if(e.length<3)return;let[i,t,r]=e,o=i.value,s=t.value,a=r.value;if(typeof o=="number"&&typeof s=="number"&&typeof a=="number")return o%a===s%a?n.True:n.False}}},IsSame:{description:"Compare two expressions for structural equality",hold:"all",signature:{domain:"RelationalOperators",evaluate:(n,e)=>{if(e.length!==2)return;let[i,t]=e;return i.isSame(t)===!0?n.True:n.False}}},Equal:{commutative:!0,complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>de(n,"Equal",e),evaluate:(n,e)=>{if(e.length<2)return n.True;let i;for(let t of e)if(!i)i=t;else if(i.isEqual(t)!==!0)return n.False;return n.True}}},NotEqual:{wikidata:"Q28113351",commutative:!0,complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>de(n,"NotEqual",e),evaluate:(n,e)=>{if(e.length<2)return n.False;let i;for(let t of e)if(!i)i=t;else if(i.isEqual(t)===!0)return n.False;return n.True}}},Less:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>de(n,"Less",e),evaluate:(n,e)=>{if(e.length<2)return n.True;let i;for(let t of e){if(!t.isNumber)return;if(!i)i=t;else{let r=n.box(["Subtract",t,i]).N().sgn;if(r==null)return;if(r<=0)return n.False;i=t}}return n.True}}},NotLess:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[de(n,"Less",e)])}},Greater:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>de(n,"Less",[...e].reverse()),evaluate:(n,e)=>{if(e.length<2)return n.True;let i;for(let t of e){if(!t.isNumber)return;if(!i)i=t;else{let r=n.box(["Subtract",t,i]).N().sgn;if(r==null)return;if(r>=0)return n.False;i=t}}return n.True}}},NotGreater:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[n._fn("Greater",e)])}},LessEqual:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>de(n,"LessEqual",e),evaluate:(n,e)=>{if(e.length<2)return n.True;let i;for(let t of e){if(!t.isNumber)return;if(!i)i=t;else{let r=n.box(["Subtract",t,i]).N().sgn;if(r==null)return;if(r<0)return n.False;i=t}}return n.True}}},NotLessNotEqual:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[de(n,"LessEqual",e)])}},GreaterEqual:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>de(n,"LessEqual",[...e].reverse()),evaluate:(n,e)=>{if(e.length<2)return n.True;let i;for(let t of e){if(!t.isNumber)return;if(!i)i=t;else{let r=n.box(["Subtract",t,i]).N().sgn;if(r==null)return;if(r>0)return n.False;i=t}}return n.True}}},NotGreaterNotEqual:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[de(n,"GreaterEqual",e)])}},TildeFullEqual:{description:"Indicate isomorphism, congruence and homotopic equivalence",signature:{domain:"RelationalOperators",canonical:(n,e)=>de(n,"TildeFullEqual",e)}},NotTildeFullEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[de(n,"TildeFullEqual",e)])}},TildeEqual:{description:"Approximately or asymptotically equal",complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>de(n,"TildeEqual",e)}},NotTildeEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[de(n,"TildeEqual",e)])}},Approx:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>de(n,"Approx",e)}},NotApprox:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[de(n,"Approx",e)])}},ApproxEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>de(n,"ApproxEqual",e)}},NotApproxEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[de(n,"ApproxEqual",e)])}},ApproxNotEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>de(n,"ApproxNotEqual",e)}},NotApproxNotEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[de(n,"ApproxNotEqual",e)])}},Precedes:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>de(n,"Precedes",e)}},NotPrecedes:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[de(n,"Precedes",e)])}},Succeeds:{signature:{domain:"RelationalOperators",canonical:(n,e)=>de(n,"Succeeds",e)}},NotSucceeds:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[de(n,"Succeeds",e)])}}};function de(n,e,i){i=ie(te(re(i)),e);let t=[],r=[];for(let o of i)kn(o)?(t.push(o),r.push(o.ops[o.ops.length-1])):r.push(o);return r=r.map(o=>ga(n,o)),t.length===0?n._fn(e,r):n._fn("And",[n._fn(e,r),...t])}var $u={EmptySet:{domain:"Sets",constant:!0,wikidata:"Q226183"},Element:{complexity:11200,hold:"all",signature:{domain:"Predicates",canonical:(n,e)=>(e=Be(n,e,2),e.length===2&&e[0].isValid&&En(e[1])?n._fn("Element",[e[0],n.domain(e[1])]):n._fn("Element",e)),evaluate:(n,e)=>$d(n,e)}},NotElement:{complexity:11200,hold:"all",signature:{domain:"Predicates",canonical:(n,e)=>n.box(["Not",["Element",...e]])}},Subset:{complexity:11200,signature:{domain:"Predicates"}},NotSubset:{complexity:11200,signature:{domain:"Predicates",canonical:(n,e)=>n.box(["Not",["Subset",...e]])}},Superset:{complexity:11200,signature:{domain:"Predicates"}},SupersetEqual:{complexity:11200,signature:{domain:"Predicates"}},NotSuperset:{complexity:11200,signature:{domain:"Predicates",canonical:(n,e)=>n.box(["Not",["Superset",...e]])}},NotSupersetEqual:{complexity:11200,signature:{domain:"Predicates",canonical:(n,e)=>n.box(["Not",["SupersetEqual",...e]])}},SubsetEqual:{complexity:11200,signature:{domain:"Predicates"}},NotSubsetNotEqual:{complexity:11200,signature:{domain:"Predicates",canonical:(n,e)=>n.box(["Not",["SubsetEqual",...e]])}},CartesianProduct:{wikidata:"Q173740",signature:{domain:["FunctionOf","Sets",["VarArg","Sets"],"Sets"]}},Complement:{wikidata:"Q242767",signature:{domain:["FunctionOf","Sets","Sets"]}},Intersection:{wikidata:"Q185837",associative:!0,commutative:!0,involution:!0,signature:{domain:["FunctionOf","Collections",["VarArg","Collections"],"Sets"],canonical:(n,e)=>e.length===0||e.length===1?n.symbol("EmptySet"):n._fn("Intersection",e),evaluate:qd}},Union:{wikidata:"Q185359",associative:!0,commutative:!0,involution:!0,signature:{domain:["FunctionOf","Collections",["VarArg","Collections"],"Sets"],canonical:(n,e)=>e.length===0?n.symbol("EmptySet"):n._fn("Union",e),evaluate:Ld}},SetMinus:{wikidata:"Q18192442",signature:{domain:["FunctionOf","Sets","Values","Sets"],evaluate:Vd}},SymmetricDifference:{wikidata:"Q1147242",signature:{domain:["FunctionOf","Sets",["VarArg","Sets"],"Sets"]}}};function Ld(n,e){let i=[];for(let t of e)if(ue(t))for(let r of Y(t))i.every(o=>!o.isEqual(r))&&i.push(r);else i.every(r=>!r.isEqual(t))&&i.push(t);return i.length===0?n.symbol("EmptySet"):n._fn("Set",i)}function qd(n,e){let i=[...e[0].ops??[]];for(let t of e.slice(1))ue(t)?i=i.filter(r=>[...Y(t)].some(o=>r.isEqual(o))):i=i.filter(r=>r.isEqual(t));return i.length===0?n.symbol("EmptySet"):n._fn("Set",i)}function Vd(n,e){return n.symbol("EmptySet")}function $d(n,e){e.length;let[i,t]=e;if(t.string)return i.string&&t.string.includes(i.string)?n.True:n.False;if(t.keys){if(i.string){for(let r of t.keys)if(r===i.string)return n.True}return n.False}if(t.head==="List"){if(i.head==="List"){let o=!1;for(let s=0;s<1+(t.nops-i.nops);++s){o=!0;for(let a=0;a<i.nops;++a)if(!t.ops[s+a].isEqual(i.ops[a])){o=!1;break}if(o)return n.True}return n.False}let r=i.head==="Hold"?i.op1:i;for(let o of t.ops)if(r.isEqual(o))return n.True;return n.False}return En(t)&&i.domain?i.domain.isCompatible(n.domain(t))?n.True:n.False:n._fn("Element",[i,t])}var Uu=[{Mean:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(n,e)=>{let i=0,t=0;for(let r of Y(e[0])){let o=b(r);if(o===null)return;i+=o,t++}return t===0?n.NaN:n.number(i/t)}}},Median:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(n,e)=>{let i=[];for(let r of Y(e[0])){let o=b(r);if(o===null)return;i.push(o)}if(i.length===0)return n.NaN;i.sort((r,o)=>r-o);let t=Math.floor(i.length/2);return i.length%2===0?n.number((i[t-1]+i[t])/2):n.number(i[t])}}},Variance:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(n,e)=>{let i=0,t=0,r=0;for(let o of Y(e[0])){let s=b(o);if(s===null)return;i+=s,t+=s*s,r++}return r===0?n.NaN:n.number((t-i*i/r)/(r-1))}}},StandardDeviation:{complexity:1200,threadable:!1,description:"Sample Standard Deviation of a collection of numbers.",signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(n,e)=>{let i=0,t=0,r=0;for(let o of Y(e[0])){let s=b(o);if(s===null)return;i+=s,t+=s*s,r++}return r===0?n.NaN:n.number(Math.sqrt((t-i*i/r)/(r-1)))}}},Kurtosis:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(n,e)=>{let i=0,t=0,r=0,o=0;for(let l of Y(e[0])){let u=b(l);if(u===null)return;i+=u,t+=u*u,r+=u*u*u*u,o++}if(o===0)return n.NaN;let s=(t-i*i/o)/(o-1),a=(r-t*t/o)/(o-1);return n.number((a/(s*s)-3)*(o*(o+1))/6)}}},Skewness:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(n,e)=>{let i=0,t=0,r=0,o=0;for(let l of Y(e[0])){let u=b(l);if(u===null)return;i+=u,t+=u*u,r+=u*u*u,o++}if(o===0)return n.NaN;let s=(t-i*i/o)/(o-1),a=(r-t*i/o)/(o-1);return n.number(a/Math.pow(s,3/2)*Math.sqrt(o*1))}}},Mode:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(n,e)=>{let i=[];for(let s of Y(e[0])){let a=b(s);if(a===null)return;i.push(a)}if(i.length===0)return n.NaN;i.sort((s,a)=>s-a);let t={};for(let s of i)t[s]=(t[s]??0)+1;let r=0,o=i[0];for(let s of i){let a=t[s];a>r&&(r=a,o=s)}return n.number(o)}}},Quartiles:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Lists"],evaluate:(n,e)=>{let i=[];for(let s of Y(e[0])){let a=b(s);if(a===null)return;i.push(a)}if(i.length===0)return n.NaN;i.sort((s,a)=>s-a);let t=Math.floor(i.length/2),r=i.slice(0,t),o=i.slice(t+1);return n.box(["List",n.number(i[t]),n.number(r[Math.floor(r.length/2)]),n.number(o[Math.floor(o.length/2)])])}}},InterquartileRange:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(n,e)=>{let i=[];for(let s of Y(e[0])){let a=b(s);if(a===null)return;i.push(a)}if(i.length===0)return n.NaN;i.sort((s,a)=>s-a);let t=Math.floor(i.length/2),r=i.slice(0,t),o=i.slice(t+1);return n.number(o[Math.floor(o.length/2)]-r[Math.floor(r.length/2)])}}},Erf:{complexity:7500,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>{let i=b(e[0]);if(i!==null)return n.number(eo(i))}}},Erfc:{complexity:7500,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>{let i=b(e[0]);if(i!==null)return n.number(1-eo(i))}}},ErfInv:{complexity:7500,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>{let i=b(e[0]);if(i!==null)return n.number(Hs(i))}}}}];var $n=n=>["FunctionOf","Numbers","ExtendedRealNumbers"],Vr=n=>["FunctionOf","Numbers","Numbers"],ti=n=>["FunctionOf","Numbers","Numbers"],Gu=[{Pi:{domain:"TranscendentalNumbers",flags:{algebraic:!1},constant:!0,holdUntil:"N",wikidata:"Q167",value:n=>L(n)?n._BIGNUM_PI:Math.PI}},{Degrees:{signature:{domain:["FunctionOf","Numbers","Numbers"],canonical:(n,e)=>{if(n.angularUnit==="deg")return e[0];if(e=Fe(n,e,1),e.length!==1)return n._fn("Degrees",e);let i=e[0];if(i.numericValue===null||!i.isValid)return n._fn("Degrees",e);let t=b(i);if(t!==null){if(t=t%360,t<0&&(t+=360),Number.isInteger(t)){let r=Ge([t,180]);return r[0]===0?n.Zero:r[0]===1&&r[1]===1?n.Pi:r[0]===1?n.div(n.Pi,n.number(r[1])):n.mul(n.number(r),n.Pi)}return n.mul(n.div(n.number(t),n.number(180)),n.Pi)}return n.div(n.mul(i,n.Pi),n.number(180))},evaluate:(n,e)=>n.angularUnit==="deg"?e[0]:n.mul(e[0],n.div(n.Pi,n.number(180))).evaluate()}},Hypot:{threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers","NonNegativeNumbers"],simplify:(n,e)=>n.box(["Sqrt",["Add",["Square",e[0]],["Square",e[1]]]]).simplify(),evaluate:["Function",["Sqrt",["Add",["Square","_1"],["Square","_2"]]]]}},Sin:{complexity:5e3,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],simplify:(n,e)=>Se(n,"Sin",e[0])?.simplify()??(ae(n)?n.box(["Divide",["Subtract",["Exp",["Multiply","ImaginaryUnit",e[0]]],["Exp",["Multiply","ImaginaryUnit",["Negate",e[0]]]]],["Complex",0,2]]).simplify():void 0),evaluate:(n,e)=>k(n,"evaluate","Sin",e[0]),N:(n,e)=>k(n,"N","Sin",e[0])}}},{Arctan:{wikidata:"Q2257242",complexity:5200,threadable:!0,signature:{domain:$n("Arctan"),simplify:(n,e)=>Se(n,"Arctan",e[0])?.simplify(),evaluate:(n,e)=>k(n,"evaluate","Arctan",e[0]),N:(n,e)=>k(n,"N","Arctan",e[0])}},Arctan2:{wikidata:"Q776598",complexity:5200,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers","Numbers"],N:(n,e)=>Mn(e[0],e[1],Math.atan2,(i,t)=>N.atan2(i,t))}},Cos:{complexity:5050,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],simplify:(n,e)=>Se(n,"Cos",e[0])?.simplify()??n.box(["Sin",["Add",e[0],["Multiply","Half","Pi"]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Cos",e[0]),N:(n,e)=>k(n,"N","Cos",e[0])}},Tan:{complexity:5100,threadable:!0,signature:{domain:Vr("Tan"),simplify:(n,e)=>Se(n,"Tan",e[0])?.simplify()??n.box(["Divide",["Sin",e[0]],["Cos",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Tan",e[0]),N:(n,e)=>k(n,"N","Tan",e[0])}}},{Arcosh:{complexity:6200,threadable:!0,signature:{domain:ti("Arcosh"),simplify:(n,e)=>Se(n,"Arcosh",e[0])?.simplify()??n.box(["Ln",["Add",e[0],["Sqrt",["Subtract",["Square",e[0]],1]]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Arcosh",e[0]),N:(n,e)=>k(n,"N","Arcosh",e[0])}},Arcsin:{complexity:5500,threadable:!0,signature:{domain:ti("Arcsin"),simplify:(n,e)=>Se(n,"Arcsin",e[0])?.simplify()??n.box(["Multiply",2,["Arctan2",e[0],["Add",1,["Sqrt",["Subtract",1,["Square",e[0]]]]]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Arcsin",e[0]),N:(n,e)=>k(n,"N","Arcsin",e[0])}},Arsinh:{complexity:6100,threadable:!0,signature:{domain:ti("Arsinh"),simplify:(n,e)=>Se(n,"Arsinh",e[0])?.simplify()??n.box(["Ln",["Add",e[0],["Sqrt",["Add",["Square",e[0]],1]]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Arsinh",e[0]),N:(n,e)=>k(n,"N","Arsinh",e[0])}},Artanh:{complexity:6300,threadable:!0,signature:{domain:ti("Artanh"),simplify:(n,e)=>Se(n,"Artanh",e[0])?.simplify()??n.box(["Multiply","Half",["Ln",["Divide",["Add",1,e[0]],["Subtract",1,e[0]]]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Artanh",e[0]),N:(n,e)=>k(n,"N","Artanh",e[0])}},Cosh:{complexity:6050,threadable:!0,signature:{domain:ti("Cosh"),simplify:(n,e)=>Se(n,"Cosh",e[0])?.simplify()??n.box(["Multiply","Half",["Add",["Exp",e[0]],["Exp",["Negate",e[0]]]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Cosh",e[0]),N:(n,e)=>k(n,"N","Cosh",e[0])}},Cot:{complexity:5600,threadable:!0,signature:{domain:Vr("Cot"),simplify:(n,e)=>Se(n,"Cot",e[0])?.simplify()??n.box(["Divide",["Cos",e[0]],["Sin",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Cot",e[0]),N:(n,e)=>k(n,"N","Cot",e[0])}},Csc:{description:"Cosecant",complexity:5600,threadable:!0,signature:{domain:Vr("Csc"),simplify:(n,e)=>Se(n,"Csc",e[0])?.simplify()??n.box(["Divide",1,["Sin",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Csc",e[0]),N:(n,e)=>k(n,"N","Csc",e[0])}},Haversine:{wikidata:"Q2528380",threadable:!0,signature:{domain:["FunctionOf","ExtendedRealNumbers","Numbers"],evaluate:["Divide",["Subtract",1,["Cos","_1"]],2]}},InverseHaversine:{threadable:!0,signature:{domain:["FunctionOf","ExtendedRealNumbers","RealNumbers"],evaluate:["Multiply",2,["Arcsin",["Sqrt","_1"]]]}},Sec:{description:"Secant, inverse of cosine",complexity:5500,threadable:!0,signature:{domain:Vr("Sec"),simplify:(n,e)=>Se(n,"Sec",e[0])?.simplify()??n.box(["Divide",1,["Cos",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Sec",e[0]),N:(n,e)=>k(n,"N","Sec",e[0])}},Sinh:{complexity:6e3,threadable:!0,signature:{domain:ti("Sinh"),simplify:(n,e)=>Se(n,"Sinh",e[0])?.simplify()??n.box(["Multiply","Half",["Subtract",["Exp",e[0]],["Exp",["Negate",e[0]]]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Sinh",e[0]),N:(n,e)=>k(n,"N","Sinh",e[0])}}},{Csch:{complexity:6200,threadable:!0,signature:{domain:$n("Csch"),simplify:(n,e)=>Se(n,"Csch",e[0])?.simplify()??n.box(["Divide",1,["Sinh",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Csch",e[0]),N:(n,e)=>k(n,"N","Csch",e[0])}},Sech:{complexity:6200,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],simplify:(n,e)=>Se(n,"Sech",e[0])?.simplify()??n.box(["Divide",1,["Cosh",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Sech",e[0]),N:(n,e)=>k(n,"N","Sech",e[0])}},Tanh:{complexity:6200,threadable:!0,signature:{domain:ti("Tanh"),simplify:(n,e)=>Se(n,"Tanh",e[0])?.simplify()??n.box(["Divide",["Sinh",e[0]],["Cosh",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Tanh",e[0]),N:(n,e)=>k(n,"N","Tanh",e[0])}}},{Arccos:{complexity:5550,threadable:!0,signature:{domain:$n("Arccos"),simplify:(n,e)=>Se(n,"Arccos",e[0])?.simplify()??n.box(["Subtract",["Divide","Pi",2],["Arcsin",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Arccos",e[0]),N:(n,e)=>k(n,"N","Arccos",e[0])}},Arccot:{numeric:!0,threadable:!0,signature:{domain:$n("Arccot"),evaluate:(n,e)=>k(n,"evaluate","Arccot",e[0]),N:(n,e)=>k(n,"N","Arccot",e[0])}},Arcoth:{numeric:!0,threadable:!0,signature:{domain:$n("Arcoth"),evaluate:(n,e)=>k(n,"evaluate","Arcoth",e[0]),N:(n,e)=>k(n,"N","Arcoth",e[0])}},Arcsch:{numeric:!0,threadable:!0,signature:{domain:$n("Arcsch"),evaluate:(n,e)=>k(n,"evaluate","Arcsch",e[0]),N:(n,e)=>k(n,"N","Arcsch",e[0])}},Arcsec:{numeric:!0,threadable:!0,signature:{domain:$n("Arcsec"),evaluate:(n,e)=>k(n,"evaluate","Arcsec",e[0]),N:(n,e)=>k(n,"N","Arcsec",e[0])}},Arsech:{numeric:!0,threadable:!0,signature:{domain:$n("Arsech"),evaluate:(n,e)=>k(n,"evaluate","Arsech",e[0]),N:(n,e)=>k(n,"N","Arsech",e[0])}},Arccsc:{numeric:!0,threadable:!0,signature:{domain:$n("Arccsc"),evaluate:(n,e)=>k(n,"evaluate","Arccsc",e[0]),N:(n,e)=>k(n,"N","Arccsc",e[0])}},Coth:{complexity:6300,threadable:!0,signature:{domain:ti("Coth"),simplify:(n,e)=>Se(n,"Coth",e[0])?.simplify()??n.box(["Divide",1,["Tanh",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Coth",e[0]),N:(n,e)=>k(n,"N","Coth",e[0])}},InverseFunction:{signature:{domain:["FunctionOf","Functions","Functions"],canonical:(n,e)=>(e=Be(n,e,1),us(n,e)??n._fn("InverseFunction",e)),simplify:(n,e)=>us(n,e),evaluate:(n,e)=>us(n,e)}}}],ri=["Sqrt",2],Zi=["Sqrt",3],Hi=["Sqrt",5],$r=["Sqrt",6],Ud=[[[0,1],{Sin:0,Cos:1,Tan:0,Cot:"ComplexInfinity",Sec:1,Csc:"ComplexInfinity"}],[[1,12],{Sin:["Divide",["Subtract",$r,ri],4],Cos:["Divide",["Add",$r,ri],4],Tan:["Subtract",2,Zi],Cot:["Add",2,Zi],Sec:["Subtract",$r,ri],Csc:["Add",$r,ri]}],[[1,10],{Sin:["Divide",["Subtract",Hi,1],4],Cos:["Divide",["Sqrt",["Add",10,["Multiply",2,Hi]]],4],Tan:["Divide",["Sqrt",["Subtract",25,["Multiply",10,Hi]]],5],Cot:["Sqrt",["Add",5,["Multiply",2,Hi]]],Sec:["Divide",["Sqrt",["Subtract",50,["Multiply",10,Hi]]],5],Csc:["Add",1,Hi]}],[[1,8],{Sin:"$\\frac{\\sqrt{2-\\sqrt2}}{2}$",Cos:"$\\frac{\\sqrt {2+{\\sqrt {2}}}}{2}$",Tan:"$\\sqrt{2} - 1$",Cot:"$\\sqrt{2} + 1$",Sec:"$\\sqrt{ 4 - 2\\sqrt{2}}$",Csc:"$\\sqrt{ 4 + 2\\sqrt{2}}$"}],[[1,6],{Sin:"$\\frac{1}{2}$",Cos:"$\\frac{\\sqrt{3}}{2}$",Tan:"$\\frac{\\sqrt{3}}{3}$",Cot:"$\\sqrt{3}$",Sec:"$\\frac{2\\sqrt{3}}{3}$",Csc:2}],[[1,5],{Sin:"$\\frac{\\sqrt{10- 2\\sqrt{5}}} {4}$",Cos:"$\\frac{1+ \\sqrt{5}} {4}$",Tan:"$\\sqrt{5-2\\sqrt5}$",Cot:"$\\frac{\\sqrt{25+10\\sqrt5}} {5}$",Sec:"$\\sqrt{5} - 1$",Csc:"$\\frac{\\sqrt{50+10\\sqrt{5}}} {5}$"}],[[1,4],{Sin:["Divide",ri,2],Cos:["Divide",ri,2],Tan:1,Cot:1,Sec:ri,Csc:ri}],[[3,10],{Sin:"$\\frac{1+ \\sqrt5} {4}$",Cos:"$\\frac{\\sqrt{10- 2\\sqrt5}} {4}$",Tan:"$\\frac{\\sqrt{25+10\\sqrt5}} {5}$",Cot:"$\\sqrt{5-2\\sqrt5}$",Sec:"$\\frac{\\sqrt{50+10\\sqrt5}} {5}$",Csc:"$\\sqrt5-1$"}],[[1,3],{Sin:["Divide",Zi,2],Cos:"Half",Tan:Zi,Cot:["Divide",Zi,3],Sec:2,Csc:["Divide",["Multiply",2,Zi],3]}],[[3,8],{Sin:"$\\frac{ \\sqrt{2 + \\sqrt{2}} } {2}$",Cos:"$\\frac{ \\sqrt{2 - \\sqrt{2}} } {2}$",Tan:"$\\sqrt{2} + 1$",Cot:"$\\sqrt{2} - 1$",Sec:"$\\sqrt{ 4 + 2 \\sqrt{2} }$",Csc:"$\\sqrt{ 4 - 2 \\sqrt{2} }$"}],[[2,5],{Sin:"$\\frac{\\sqrt{10+ 2\\sqrt{5}}} {4}$",Cos:"$\\frac{\\sqrt{5}-1} {4}$",Tan:"$\\sqrt{5+2\\sqrt{5}}$",Cot:"$\\frac{\\sqrt{25-10\\sqrt{5}}} {5}$",Sec:"$1 + \\sqrt{5}$",Csc:"$\\frac{\\sqrt{50-10\\sqrt{5}}} {5}$"}],[[5,12],{Sin:"$\\frac{\\sqrt{6} + \\sqrt{2}} {4}$",Cos:"$\\frac{ \\sqrt{6} - \\sqrt{2}} {4}$",Tan:"$2+\\sqrt{3}$",Cot:"$2-\\sqrt{3}$",Sec:"$\\sqrt{6}+\\sqrt{2}$",Csc:"$\\sqrt{6} - \\sqrt{2}$"}],[[1,2],{Sin:1,Cos:0,Tan:"ComplexInfinity",Cot:0,Sec:"ComplexInfinity",Csc:1}]],Gd={Sin:[[1,"Sin"],[1,"Cos"],[-1,"Sin"],[-1,"Cos"]],Cos:[[1,"Cos"],[-1,"Sin"],[-1,"Cos"],[1,"Sin"]],Sec:[[1,"Sec"],[-1,"Csc"],[-1,"Sec"],[1,"Csc"]],Csc:[[1,"Csc"],[1,"Sec"],[-1,"Csc"],[-1,"Sec"]],Tan:[[1,"Tan"],[-1,"Cot"],[1,"Tan"],[-1,"Cot"]],Cot:[[1,"Cot"],[-1,"Tan"],[1,"Cot"],[-1,"Tan"]]};function Se(n,e,i){if(!i)return;i=ju(i);let t=b(i.N());if(t===null)return;let r=n.cache("constructible-trigonometric-values",()=>Ud.map(([l,u])=>[l,Object.fromEntries(Object.entries(u).map(([f,d])=>[f,n.parse(hi(d))??n.box(d)]))]),l=>{for(let[u,f]of l)for(let d of Object.values(f))d.reset();return l});if(jd(e))return zd(n,e,i,r);let o=zu(e)==-1?Math.sign(t):1;t=Math.abs(t%(2*Math.PI));let s=Math.floor(t*2/Math.PI);t=t%(Math.PI/2);let a;[a,e]=Gd[e]?.[s]??[1,e];for(let[[l,u],f]of r){let d=f[e];if(d&&n.chop(t-Math.PI*l/u)===0)return d.symbol==="ComplexInfinity"?d:o*a<0?fe(d):d}}function zd(n,e,i,t){if(!i)return;let r=b(i.N());if(r===null)return;let o=ls(e),s=n.cache("constructible-inverse-trigonometric-values-"+e,()=>{let l=[];for(let[[u,f],d]of t){let c=d[o];if(c===void 0)continue;let m=b(c.N());m!==null&&l.push([[c,m],[u,f]])}return l},l=>{for(let[[u,f],[d,c]]of l)u.reset();return l}),a=0;r<0&&(a=zu(o)==-1?-1:1,r=-r,i=fe(i));for(let[[l,u],[f,d]]of s)if(n.chop(r-u)===0){let c=n.box(["Divide",["Multiply",f,"Pi"],d]);return a==-1?c=fe(c):a==1&&(c=n.box(["Subtract","Pi",c])),c}}function zu(n){return n!=="Cos"&&n!=="Sec"?-1:1}function jd(n){return!!(n.startsWith("Ar")&&ls(n))}function ls(n){return{Sin:"Arcsin",Cos:"Arccos",Tan:"Arctan",Sec:"Arcsec",Csc:" Arccsc",Sinh:"Arsinh",Cosh:"Arcosh",Tanh:"Artanh",Sech:"Arcsech",Csch:"Arcsch",Arcosh:"Cosh",Arccos:"Cos",Arccsc:"Csc",Arcsch:"Csch",Arcsec:"Sec",Arcsin:"Sin",Arsinh:"Sinh",Arctan:"Tan",Artanh:"Tanh"}[n]}function us(n,e){if(e.length!==1||!e[0].isValid)return;let i=e[0],t=i.symbol;if(typeof t!="string")return;if(t==="InverseFunction")return i.op1;let r=ls(t);return r?n.symbol(r):void 0}function k(n,e,i,t){if(!t)return;let r=Se(n,i,t)?.evaluate({numericMode:e==="N"});if(r)return r;if(!(e==="evaluate"&&t.isExact))switch(i){case"Arccos":return Xe(ee(t,Math.acos,o=>o.acos(),o=>o.acos()));case"Arccot":return Xe(ee(t,o=>Math.atan2(1,o),o=>N.atan2(n._BIGNUM_ONE,o),o=>o.inverse().atan()));case"Arccsc":return Xe(ee(t,o=>Math.asin(1/o),o=>n._BIGNUM_ONE.div(o).asin(),o=>o.inverse().asin()));case"Arcosh":return Xe(ee(t,Math.acosh,o=>o.acosh(),o=>o.acosh()));case"Arcoth":return Xe(ee(t,o=>Math.log((1+o)/(o-1))/2,o=>n._BIGNUM_ONE.add(o).div(o.sub(n._BIGNUM_ONE)).log().div(2),o=>n.complex(1).add(o).div(o.sub(1)).log().div(2)));case"Arcsch":return Xe(ee(t,o=>Math.log(1/o+Math.sqrt(1/(o*o)+1)),o=>n._BIGNUM_ONE.div(o.mul(o)).add(n._BIGNUM_ONE).sqrt().add(n._BIGNUM_ONE.div(o)).log(),o=>o.mul(o).inverse().add(1).sqrt().add(o.inverse()).log()));case"Arcsec":return Xe(ee(t,o=>Math.acos(1/o),o=>n._BIGNUM_ONE.div(o).acos(),o=>o.inverse().acos()));case"Arcsin":return Xe(ee(t,Math.asin,o=>o.asin(),o=>o.asin()));case"Arsech":return Xe(ee(t,o=>Math.log((1+Math.sqrt(1-o*o))/o),o=>n._BIGNUM_ONE.sub(o.mul(o).add(n._BIGNUM_ONE).div(o)).log(),o=>n.complex(1).sub(o.mul(o)).add(1).div(o).log()));case"Arsinh":return Xe(ee(t,Math.asinh,o=>o.asinh(),o=>o.asinh()));case"Arctan":return Xe(ee(t,Math.atan,o=>o.atan(),o=>o.atan()));case"Artanh":return Xe(ee(t,Math.atanh,o=>o.atanh(),o=>o.atanh()));case"Cos":return Qe(t,Math.cos,o=>o.toSignificantDigits(n.precision+4).cos().toSignificantDigits(n.precision),o=>o.cos());case"Cosh":return Qe(t,Math.cosh,o=>o.cosh(),o=>o.cosh());case"Cot":return Qe(t,o=>1/Math.tan(o),o=>n._BIGNUM_ONE.div(o.tan()),o=>o.tan().inverse());case"Coth":return Qe(t,o=>1/Math.tanh(o),o=>n._BIGNUM_ONE.div(o.tanh()),o=>o.tanh().inverse());case"Csc":return Qe(t,o=>1/Math.sin(o),o=>n._BIGNUM_ONE.div(o.sin()),o=>o.sin().inverse());case"Csch":return Qe(t,o=>1/Math.sinh(o),o=>n._BIGNUM_ONE.div(o.sinh()),o=>o.sinh().inverse());case"Sec":return Qe(t,o=>1/Math.cos(o),o=>n._BIGNUM_ONE.div(o.cos()),o=>o.cos().inverse());case"Sech":return Qe(t,o=>1/Math.cosh(o),o=>n._BIGNUM_ONE.div(o.cosh()),o=>o.cosh().inverse());case"Sin":return Qe(t,Math.sin,o=>o.toSignificantDigits(n.precision+4).sin().toSignificantDigits(n.precision),o=>o.sin());case"Sinh":return Qe(t,Math.sinh,o=>o.sinh(),o=>o.sinh());case"Tan":return Qe(t,Math.tan,o=>o.toSignificantDigits(n.precision+4).tan().toSignificantDigits(n.precision),o=>o.tan());case"Tanh":return Qe(t,Math.tanh,o=>o.tanh(),o=>o.tanh())}}function Qe(n,e,i,t){return ee(ju(n),e,i,t)}function ju(n){if(!n)return n;let e=n.engine,i=e.angularUnit;if(i==="rad")return n;let t=b(n.N());return t===null?n:i==="deg"?e.number(t*(Math.PI/180)):i==="grad"?e.number(t*(Math.PI/200)):i==="turn"?e.number(t*(2*Math.PI)):n}function Xe(n){if(!n)return n;let e=n.engine,i=e.angularUnit;if(i==="rad")return n;let t=b(n.N());return t===null?n:i==="deg"?e.number(t*(180/Math.PI)):i==="grad"?e.number(t*(200/Math.PI)):i==="turn"?e.number(t/(2*Math.PI)):n}function fs(n){if(n==="all")return fs(["core","control-structures","logic","collections","relop","numeric","arithmetic","trigonometry","algebra","calculus","polynomials","combinatorics","linear-algebra","statistics","dimensions","units","physics","other"]);typeof n=="string"&&(n=[n]);let e=[];for(let i of n){let t=Zd[i];if(!t)throw Error(`Unknown library category ${i}`);Array.isArray(t)?e.push(...t):e.push(t)}return Object.freeze(e)}var Zd={algebra:[],arithmetic:[...Su,...wu],calculus:Bu,collections:[$u,Du,Ua()],combinatorics:[],"control-structures":ku,core:hu,dimensions:[],domains:[],"linear-algebra":Cu,logic:Lu,numeric:[],other:[],relop:Vu,polynomials:qu,physics:{Mu0:{description:"Vaccum permeability",constant:!0,wikidata:"Q1515261",domain:"RealNumbers",value:125663706212e-17}},statistics:Uu,trigonometry:Gu,units:[]};function Hd(n){if(n=n.normalize(),Ee(n))return n;throw new Error(`Invalid definition name "${n}": ${on(n)}`)}function ds(n,e){var t;if(!n.context)throw Error("No context available");(t=n.context).ids??(t.ids=new Map);let i=n.context.ids;n.strict;for(let[r,o]of Object.entries(e))if(r=Hd(r),cs(o)){let s=Er(n,r,o);if(i.has(r))throw new Error(`Duplicate function definition ${r}:
|
|
47
|
+
943987003023703395183286900015581939880427074115422278197165230110735658339673`}}},{PreIncrement:{signature:{domain:["FunctionOf","Numbers","Numbers"]}},PreDecrement:{signature:{domain:["FunctionOf","Numbers","Numbers"]}}},{GCD:{description:"Greatest Common Divisor",complexity:1200,threadable:!1,signature:{domain:["FunctionOf",["VarArg","Anything"],"Numbers"],evaluate:(n,e)=>Du(n,e,"GCD")}},LCM:{description:"Least Common Multiple",complexity:1200,threadable:!1,signature:{domain:["FunctionOf",["VarArg","Anything"],"Numbers"],evaluate:(n,e)=>Du(n,e,"LCM")}},Numerator:{description:"Numerator of an expression",complexity:1200,threadable:!0,hold:"all",signature:{domain:["FunctionOf","Anything","Numbers"],canonical:(n,e)=>{if(e.length===0)return n.box(["Sequence"]);let i=e[0];if(i.head==="Rational"||i.head==="Divide")return i.op1;let t=J(i);return t!==void 0?n.number(t[0]):n._fn("Numerator",oe(e))},evaluate:(n,e)=>{if(e.length===0)return n.box(["Sequence"]);let i=e[0];if(i.head==="Rational"||i.head==="Divide")return i.op1.evaluate();let t=J(i.evaluate());return t!==void 0?n.number(t[0]):n._fn("Numerator",e.map(r=>r.evaluate()))}}},Denominator:{description:"Denominator of an expression",complexity:1200,threadable:!0,hold:"all",signature:{domain:["FunctionOf","Anything","Numbers"],canonical:(n,e)=>{if(e.length===0)return n.box(["Sequence"]);let i=e[0];if(i.head==="Rational"||i.head==="Divide")return i.op2;let t=J(i);return t!==void 0?n.number(t[1]):n._fn("Denominator",oe(e))},evaluate:(n,e)=>{if(e.length===0)return n.box(["Sequence"]);let i=e[0];if(i.head==="Rational"||i.head==="Divide")return i.op2.evaluate();let t=J(i.evaluate());return t!==void 0?n.number(t[1]):n._fn("Denominator",e.map(r=>r.evaluate()))}}},NumeratorDenominator:{description:"Sequence of Numerator and Denominator of an expression",complexity:1200,threadable:!0,hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],canonical:(n,e)=>{if(e.length===0)return n.box(["Sequence"]);let i=e[0];if(i.head==="Rational"||i.head==="Divide")return n._fn("Sequence",i.ops);let t=J(i.evaluate());return t!==void 0?n._fn("Sequence",[n.number(t[0]),n.number(t[1])]):n._fn("NumeratorDenominator",e.map(r=>r.evaluate()))},evaluate:(n,e)=>{if(e.length===0)return n.box(["Sequence"]);let i=e[0];if(i.head==="Rational"||i.head==="Divide")return n._fn("Sequence",i.ops);let t=J(i);return t!==void 0?n._fn("Sequence",[n.number(t[0]),n.number(t[1])]):n._fn("NumeratorDenominator",oe(e))}}}},{Max:{description:"Maximum of two or more numbers",complexity:1200,threadable:!1,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],simplify:(n,e)=>e.length===0?n.NegativeInfinity:e.length===1?e[0]:n.box(["Max",...e]),evaluate:(n,e)=>Vr(n,e,"Max")}},Min:{description:"Minimum of two or more numbers",complexity:1200,threadable:!1,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],simplify:(n,e)=>e.length===0?n.PositiveInfinity:e.length===1?e[0]:n.box(["Min",...e]),evaluate:(n,e)=>Vr(n,e,"Min")}},Supremum:{description:"Like Max, but defined for open sets",complexity:1200,threadable:!1,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],simplify:(n,e)=>e.length===0?n.NegativeInfinity:e.length===1?e[0]:n.box(["Min",...e]),evaluate:(n,e)=>Vr(n,e,"Supremum")}},Infimum:{description:"Like Min, but defined for open sets",complexity:1200,threadable:!1,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],simplify:(n,e)=>e.length===0?n.PositiveInfinity:e.length===1?e[0]:n.box(["Min",...e]),evaluate:(n,e)=>Vr(n,e,"Infimum")}},Product:{wikidata:"Q901718",complexity:1e3,hold:"all",threadable:!1,signature:{domain:["FunctionOf","Anything",["OptArg","Tuples"],"Numbers"],canonical:(n,e)=>cu(n,e[0],e[1]),simplify:(n,e)=>Rr(n,e,"simplify"),evaluate:(n,e)=>Rr(n,e,"evaluate"),N:(n,e)=>Rr(n,e,"N")}},Sum:{wikidata:"Q218005",complexity:1e3,hold:"all",threadable:!1,signature:{domain:["FunctionOf",["Union","Collections","Functions"],["OptArg","Tuples"],"Numbers"],canonical:(n,e)=>iu(n,e[0],e[1]),simplify:(n,e)=>wr(n,e,"simplify"),evaluate:(n,e)=>wr(n,e,"evaluate"),N:(n,e)=>wr(n,e,"N")}}},{BaseForm:{description:"`BaseForm(expr, base=10)`",complexity:9e3,inert:!0,signature:{domain:["FunctionOf","Values",["OptArg","Integers"],"Values"],result:(n,e)=>e.length!==1?n.domain("NothingDomain"):e[0].domain}},FromDigits:{description:"`FromDigits(s, base=10)` return an integer representation of the string `s` in base `base`.",signature:{domain:["FunctionOf","Strings",["OptArg","Anything"],"Integers"],evaluate:(n,e)=>{let i=e[0]?.string;if(!i)return n.domainError("Strings",e[0]?.domain,e[0]);if(i=i.trim(),i.startsWith("0x"))return n.number(parseInt(i.slice(2),16));if(i.startsWith("0b"))return n.number(parseInt(i.slice(2),2));let t=e[1]??n.Nothing;if(t.symbol==="Nothing")return n.number(Number.parseInt(i,10));let r=b(t);if(r&&(!Number.isInteger(r)||r<2||r>36))return n.error(["unexpected-base",r],t);let[o,s]=Ii(i,t.string??t.symbol??10);return s?n.error(["unexpected-digit",{str:s[0]}],{str:s}):n.number(o)}}},IntegerString:{description:"`IntegerString(n, base=10)` return a string representation of the integer `n` in base `base`.",threadable:!0,signature:{domain:["FunctionOf","Integers",["OptArg","Integers"],"Strings"],evaluate:(n,e)=>{let i=e[0],t=b(i)??NaN;if(Number.isNaN(t)||!Number.isInteger(t))return n.domainError("Integers",i.domain,i);let r=e[1]??n.Nothing;if(r.symbol==="Nothing"){let s=i.numericValue;return typeof s=="number"?n.string(Math.abs(s).toString()):s instanceof N?n.string(s.abs().toString()):n.string(Math.abs(Math.round(b(i)??NaN)).toString())}if(V(r)===null)return n.domainError("Integers",r.domain,r);let o=V(r);return o<2||o>36?n.error(["out-of-range",2,36,o],r):n.string(Math.abs(t).toString(o))}}}}];function ds(n,e,i){if(i!=="simplify"){let t=e.numericValue;if(t!==null){if(typeof t=="number")return n.number(Math.abs(t));if(t instanceof N||t instanceof cs.Complex)return n.number(t.abs());if(U(t))return n.number(i==="N"?Math.abs(t[0]/t[1]):[Math.abs(t[0]),t[1]]);if(z(t)){let[r,o]=t;return n.number(i==="N"?n.bignum(r).div(n.bignum(o)).abs():[r>0?r:-r,o])}}}if(e.isNonNegative)return e;if(e.isNegative)return n.neg(e)}function Au(n,e){let i=n.engine,t=e==="Max"||e==="Supremum";if(n.head==="Interval"){let r=t?n.op2:n.op1;return!r.isNumber||r.numericValue===void 0?[void 0,[n]]:[r,[]]}if(n.head==="Range"){if(n.nops===1)n=t?n.op1:i.One;else if(!t)n=n.op1;else{let r=n.nops===2?1:b(n.op3);if(r===null||!isFinite(r))return[void 0,[n]];let[o,s]=[b(n.op1),b(n.op2)];if(o===null||s===null)return[void 0,[n]];let a=Math.floor((s-o)/r);n=i.number(o+r*a)}return[n,[]]}if(n.head==="Linspace")return n.nops===1?n=t?n.op1:i.One:t?n=n.op2:n=n.op1,[n,[]];if(En(n)){let r,o=[];for(let s of Q(n)){let[a,l]=Au(s,e);a&&(r?(t&&a.isGreater(r)||!t&&a.isLess(r))&&(r=a):r=a),o.push(...l)}return[r,o]}return!n.isNumber||n.numericValue===void 0?[void 0,[n]]:[n,[]]}function Vr(n,e,i){let t=i==="Max"||i==="Supremum";if(e.length===0)return t?n.NegativeInfinity:n.PositiveInfinity;let r,o=[];for(let s of e){let[a,l]=Au(s,i);a&&(r?(t&&a.isGreater(r)||!t&&a.isLess(r))&&(r=a):r=a),o.push(...l)}return o.length>0?n.box(r?[i,r,...o]:[i,...o]):r??(t?n.NegativeInfinity:n.PositiveInfinity)}function Du(n,e,i){let t=i==="LCM"?Yt:In,r=i==="LCM"?da:co,o=[];if(q(n)){let a=null;for(let l of e)if(a===null)a=He(l),(a===null||!a.isInteger())&&o.push(l);else{let u=He(l);u&&u.isInteger()?a=r(a,u):o.push(l)}return o.length===0?a===null?n.One:n.number(a):a===null?n._fn(i,o):n._fn(i,[n.number(a),...o])}let s=null;for(let a of e)if(s===null)s=b(a),(s===null||!Number.isInteger(s))&&o.push(a);else{let l=b(a);l&&Number.isInteger(l)?s=t(s,l):o.push(a)}return o.length===0?s===null?n.One:n.number(s):s===null?n._fn(i,o):n._fn(i,[n.number(s),...o])}function Iu(n,e){let i=e[0];if(i.isZero)return n.NaN;if(i.isOne)return n.Zero;if(i.isNegativeOne&&le(n))return n.mul(n.Pi,n.I);if(i.symbol==="ExponentialE")return n.One;if(i.head==="Power"&&i.op1.symbol==="ExporentialE")return i.op2;if(i.head==="Power"){let[t,r]=i.ops;return n.mul(r,n.box(["Ln",t]).simplify())}if(i.head==="Multiply"){let[t,r]=i.ops;return n.add(n.box(["Ln",t]).simplify(),n.box(["Ln",r]).simplify())}if(i.head==="Divide"){let[t,r]=i.ops;return n.add(n.box(["Ln",t]).simplify(),n.neg(n.box(["Ln",r]).simplify()))}}var Rd={Sin:["Cos","_"],Cos:["Negate",["Sin","_"]],Tan:["Power",["Sec","_"],2],Sec:["Multiply",["Tan","_"],["Sec","_"]],Csc:["Multiply",["Negate",["Cot","_"]],["Csc","_"]],Cot:["Negate",["Power",["Csc","_"],2]],Arcsin:["Power",["Subtract",1,["Power","_",2]],["Negate","Half"]],Arccos:["Negate",["Power",["Subtract",1,["Power","_",2]],["Negate","Half"]]],Arctan:["Power",["Add",1,["Power","_",2]],-1],Arcsec:["Multiply",["Power",["Subtract",1,["Power","_",2]],["Negate","Half"]],["Negate",["Power","_",2]]],Arccsc:["Multiply",["Power",["Subtract",1,["Power","_",2]],["Negate","Half"]],["Negate",["Power","_",2]]],Arccot:["Negate",["Power",["Add",1,["Power","_",2]],-1]],Sinh:["Cosh","_"],Cosh:["Sinh","_"],Tanh:["Power",["Sech","_"],2],Sech:["Multiply",["Tanh","_"],"Sech"],Csch:["Multiply",["Coth","_"],"Csch"],Coth:["Negate",["Power",["Csch","_"],2]],Arcsinh:["Power",["Add",["Power","_",2],1],["Negate","Half"]],Arccosh:["Power",["Subtract",["Power","_",2],1],["Negate","Half"]],Arctanh:["Power",["Subtract",1,["Power","_",2]],-1],Arcsech:["Negate",["Power",["Multiply","2","Subtract",["Power","_",2]],["Negate","Half"]]],Arccsch:["Negate",["Power",["Multiply","2","Add",["Power","_",2]],["Negate","Half"]]],Arccoth:["Negate",["Power",["Subtract",1,["Power","_",2]],-1]],Ln:["Divide",1,"_"],Log:["Power",["Multiply","_",["Ln","10"]],-1],Sqrt:["Multiply",["Power","_",["Negate","Half"]],"Half"],Abs:["Piecewise",["Tuple",["Multiply","_",["Power","_",-1]],["Greater","_",0]]],Erf:["Multiply",["Divide","2",["Sqrt","Pi"]],["Exp",["Negate",["Square","_"]]]],Gamma:["Multiply",["Gamma","_"],["Digamma","_"]],Digamma:["Add",["Multiply",["Digamma","_"],["Gamma","_"]],["Multiply",["Power","_",-1],["Gamma","_"]]],Zeta:["Multiply",["Multiply",-1,["Zeta","_"]],["Digamma","_"]],PolyGamma:["Add",["Multiply",["PolyGamma","_"],["Gamma","_"]],["Multiply",["Power","_",-1],["Gamma","_"]]],Beta:["Multiply",["Add",["Multiply",["Beta","_"],["Digamma","_"]],["Multiply",["Power","_",-1],["Beta","_"]]],["Beta","_"]],Erfc:["Multiply",["Negate",["Erfc","_"]],["Exp",["Negate",["Power","_",2]]],["Power","_",-1]],LambertW:["Multiply",["Power","_",-1],["Multiply",["Add","_",["LambertW","_"]],["Add",["LambertW","_"],1]]],AiryAi:["Multiply",["AiryAi","_"],["AiryBi","_"]],AiryBi:["Multiply",["AiryAi","_"],["AiryBi","_"]],BesselJ:["Multiply",["BesselJ","_"],["BesselY","_"]],BesselY:["Multiply",["BesselJ","_"],["BesselY","_"]],BesselI:["Multiply",["BesselI","_"],["BesselK","_"]],BesselK:["Multiply",["BesselI","_"],["BesselK","_"]],FresnelS:["Multiply",["FresnelS","_"],["FresnelC","_"]],FresnelC:["Multiply",["FresnelS","_"],["FresnelC","_"]],Erfi:["Multiply",["Erfi","_"],["Erf","_"]]};function Ve(n,e){let i=n.engine;if(!(n.string||n.keys)){if(n.numericValue!==null)return n.engine.Zero;if(n.symbol===e)return n.engine.One;if(n.symbol)return n.engine.Zero;if(n.head&&typeof n.head=="string"){if(n.head==="Negate"){let s=Ve(n.op1,e);return s?i.neg(s):i.neg(i._fn("D",[n.op1,i.symbol(e)]))}if(n.head==="Add"){let s=n.ops.map(a=>Ve(a,e));return s.some(a=>a===void 0)?void 0:i.add(...s)}if(n.head==="Multiply"){let s=n.ops.map((a,l)=>{let u=n.ops.slice();u.splice(l,1);let f=i.mul(...u),d=Ve(a,e)??i._fn("D",[a,i.symbol(e)]);return i.mul(d,f)});return s.some(a=>a===void 0)?void 0:i.add(...s)}if(n.head==="Power"){let[s,a]=n.ops;if(s.symbol===e)return i.mul(a,i.pow(s,i.add(a,i.NegativeOne)));let l=s,u=a,f=Ve(l,e)??i._fn("D",[l,i.symbol(e)]),d=Ve(u,e)??i._fn("D",[u,i.symbol(e)]),c=i.box(["Ln",l]).evaluate(),m=i.mul(d,c),g=i.mul(u,f),h=i.div(g,l);return i.mul(n,i.add(m,h))}if(n.head==="Divide"){let[s,a]=n.ops,l=Ve(s,e)??i._fn("D",[s,i.symbol(e)]),u=Ve(a,e)??i._fn("D",[a,i.symbol(e)]);return i.div(i.add(i.mul(l,a),i.neg(i.mul(u,s))),i.pow(a,2))}let t=Rd[n.head];if(!t){if(n.nops>1)return;let s=i._fn("Derivative",[i.symbol(n.head),i.One]);if(!s.isValid)return;let a=n.ops[0],l=Ve(a,e)??i._fn("D",[a,i.symbol(e)]);return l.isValid?i.mul(i._fn("Apply",[s,a]),l):void 0}if(n.nops>1)return i._fn("D",[n,i.symbol(e)]);let r=n.ops[0],o=Ve(r,e)??i._fn("D",[r,i.symbol(e)]);return i.mul(vi(i.box(t),[r]),o)}}}var wu=[{Derivative:{hold:"all",threadable:!1,signature:{domain:["FunctionOf","Functions",["OptArg","Numbers"],"Functions"],canonical:(n,e)=>e[0].functionDefinition?Ve(n._fn(e[0].canonical,[n.symbol("_")]),"_")?.canonical??n._fn("Derivative",e):n._fn("Derivative",e),simplify:(n,e)=>{let i=e[0].simplify();return e[1]?n._fn("Derivative",[i,e[1]]):n._fn("Derivative",[i])},evaluate:(n,e)=>{let i=e[0].evaluate();if(i.functionDefinition)return Ve(n._fn(i,[n.symbol("_")]),"_")?.canonical??void 0;let t=Ve(i,"_");if(t)return t.canonical}}},D:{hold:"all",threadable:!1,signature:{domain:["FunctionOf","Anything","Symbols",["VarArg","Symbols"],"Anything"],canonical:(n,e)=>{let i=e[0];if(!i)return null;n.pushScope();let t=e.slice(1);i.bind(),i=i.canonical;let r=n._fn("D",[i,...t]);return n.popScope(),r},evaluate:(n,e)=>{let i=e[0].canonical,t=n.swapScope(i.scope);i=i.evaluate();let r=e.slice(1);r.length===0&&(i=void 0);for(let o of r){if(!o.symbol){i=void 0;break}if(i=Ve(i,o.symbol),i===void 0)break}return n.swapScope(t),i=i?.canonical,i?.head==="D"?i:i?.evaluate()}}},ND:{hold:"first",threadable:!1,signature:{domain:["FunctionOf","Anything","Numbers","Functions"],N:(n,e)=>{let i=e[1]?.value;if(typeof i!="number")return;let t=Uo(n.box(e[0]));return n.number(Ks(t,i))}}},Integrate:{wikidata:"Q80091",hold:"all",threadable:!1,signature:{domain:["FunctionOf","Functions",["OptArg",["Union","Tuples","Symbols"]],"Numbers"],canonical:(n,e)=>{let i=e[1],t=null,r=null,o=null;i&&i.head!=="Tuple"&&i.head!=="Triple"&&i.head!=="Pair"&&i.head!=="Single"?t=i:i&&(t=i.ops?.[0]??null,r=i.ops?.[1]?.canonical??null,o=i.ops?.[2]?.canonical??null),t&&t.head==="Hold"&&(t=t.op1),t&&t.head==="ReleaseHold"&&(t=t.op1.evaluate()),t??(t=n.Nothing),t.symbol||(t=n.domainError("Symbols",t.domain,t)),r&&(r=Ge(n,r,n.Numbers)),o&&(o=Ge(n,o,n.Numbers)),r&&o?i=n.tuple([t,r,o]):o?i=n.tuple([t,n.NegativeInfinity,o]):r?i=n.tuple([t,r]):i=t;let s=e[0]??n.error("missing");return s=s.canonical,s.head==="Delimiter"&&s.op1.head==="Sequence"&&(s=s.op1.op1),n._fn("Integrate",[s,i])}}},NIntegrate:{hold:"first",threadable:!1,signature:{domain:["FunctionOf","Functions","Numbers","Numbers","Numbers"],params:["Functions","Numbers","Numbers"],restParam:"Numbers",evaluate:(n,e)=>{let i=n.numericMode,t=n.precision;n.numericMode="machine";let r=n.strict;n.strict=!1;let[o,s]=e.slice(1).map(l=>l.value),a;if(typeof o=="number"&&typeof s=="number"){let l=Uo(e[0]);a=n.number(Xt(l,o,s))}return n.numericMode=i,n.precision=t,n.strict=r,a}}}},{Limit:{description:"Limit of a function",complexity:5e3,hold:"all",threadable:!1,signature:{domain:["FunctionOf","Anything","Numbers",["OptArg","Numbers"],"Numbers"],N:(n,e)=>{let[i,t,r]=e,o=b(t.N());if(o===null)return;let s=Ni(i);return n.number(ui(a=>{let l=s([n.number(a)])?.value;return typeof l=="number"?l:Number.NaN},o,r?b(r)??1:1))}}},NLimit:{description:"Numerical approximation of the limit of a function",complexity:5e3,hold:"all",threadable:!1,signature:{domain:["FunctionOf","Anything","Numbers",["OptArg","Numbers"],"Numbers"],evaluate:(n,e)=>{let[i,t,r]=e,o=b(t.N());if(o===null)return;let s=Ni(i);return n.number(ui(a=>{let l=s([n.number(a)])?.value;return typeof l=="number"?l:Number.NaN},o,r?b(r)??1:1))}}}}];var $r=50,Mu={List:{complexity:8200,hold:"all",signature:{domain:["FunctionOf",["VarArg","Anything"],"Lists"],canonical:Fd},size:n=>n.nops,iterator:(n,e,i)=>{let t=e??1;return i=Math.min(i??n.nops,n.nops),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:n.ops[t++-1],done:!1}):{value:void 0,done:!0}}},at:(n,e)=>{if(typeof e=="number"&&!(e<1||e>n.nops))return n.ops[e-1]},indexOf:(n,e,i)=>{if(i??(i=1),i<0){if(i<-n.nops)return;i=n.nops+i+1;let r=i;for(let o=r;o>=1;o--)if(n.ops[o-1].isEqual(e))return o;return}let t=i;for(let r=t;r<=n.nops;r++)if(n.ops[r-1].isEqual(e))return r}},Set:{complexity:8200,hold:"all",signature:{domain:["FunctionOf",["VarArg","Anything"],"Sets"],canonical:Ld},size:n=>n.nops,iterator:(n,e,i)=>{let t=e??1;return i=Math.min(i??n.nops,n.nops),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:n.ops[t++-1],done:!1}):{value:void 0,done:!0}}}},Range:{complexity:8200,signature:{domain:["FunctionOf","Numbers",["OptArg","Numbers","Numbers"],"Values"]},size:n=>{let[e,i,t]=zr(n);return!isFinite(e)||!isFinite(i)?1/0:1+Math.max(0,Math.floor((i-e)/t))},at:(n,e)=>{if(typeof e!="number")return;let[i,t,r]=zr(n);if(!(e<1||e>1+(t-i)/r))return n.engine.number(i+r*(e-1))},iterator:(n,e,i)=>{let[t,r,o]=zr(n),s=e??1;return i=Math.min(i??r,r),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:n.engine.number(t+o*(s++-1)),done:!1}):{value:void 0,done:!0}}}},Linspace:{complexity:8200,signature:{domain:["FunctionOf","Numbers",["OptArg","Numbers","Numbers"],"Values"]},size:n=>{let e=b(n.op3)??$r;return Math.max(0,Math.floor(e))},at:(n,e)=>{if(typeof e!="number")return;let i=b(n.op1),t=b(n.op2),r=b(n.op3)??$r;if(!(i===void 0||t===void 0)&&!(e<1||e>r))return n.engine.number(i+(t-i)*(e-1)/r)},iterator:(n,e,i)=>{let t=b(n.op1),r=b(n.op2),o;r===void 0?(r=t,t=1,o=$r):o=Math.max(0,b(n.op3)??$r);let s=e??1;return i=Math.min(i??o,o),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:n.engine.number(t+(r-t)*(s++-1)/o),done:!1}):{value:void 0,done:!0}}}},KeyValuePair:{description:"A key/value pair",complexity:8200,signature:{domain:["FunctionOf","Strings","Anything","Tuples"],canonical:(n,e)=>{let[i,t]=lr(n,e,[n.Strings,"Values"]);return!i.isValid||!t.isValid?n._fn("KeyValuePair",[i,t]):n.tuple([i,t])}},size:n=>1},Single:{description:"A tuple with a single element",complexity:8200,signature:{domain:["FunctionOf","Anything","Tuples"],canonical:(n,e)=>n.tuple(De(n,e,1))},size:n=>n.nops,at:(n,e)=>{if(!(typeof e!="number"||e!==1))return n.ops[0]}},Pair:{description:"A tuple of two elements",complexity:8200,signature:{domain:["FunctionOf","Anything","Anything","Tuples"],canonical:(n,e)=>n.tuple(De(n,e,2))},size:n=>n.nops,at:(n,e)=>typeof e=="number"?n.ops[e-1]:void 0},Triple:{description:"A tuple of three elements",complexity:8200,signature:{domain:["FunctionOf","Anything","Anything","Anything","Tuples"],canonical:(n,e)=>n.tuple(De(n,e,3))},size:n=>n.nops,at:(n,e)=>typeof e=="number"?n.ops[e-1]:void 0},Tuple:{description:"A fixed number of heterogeneous elements",complexity:8200,signature:{domain:["FunctionOf","Anything",["VarArg","Anything"],"Tuples"],canonical:(n,e)=>n.tuple(oe(e))},size:n=>n.nops,at:(n,e)=>typeof e=="number"?n.ops[e-1]:void 0},String:{threadable:!0,signature:{domain:["FunctionOf",["OptArg","Anything"],"Strings"],evaluate:(n,e)=>e.length===0?n.string(""):n.string(e.map(i=>i.string??i.toString()).join(""))}},Length:{complexity:8200,signature:{domain:["FunctionOf","Values","Numbers"],evaluate:(n,e)=>{let i=e[0].functionDefinition;if(i?.size)return n.number(i.size(e[0]));let t=e[0].string;return t!==null?n.number(t.length):n.Zero}}},IsEmpty:{complexity:8200,signature:{domain:["FunctionOf","Values","Numbers"],evaluate:(n,e)=>{let i=e[0].functionDefinition,t;if(i?.size)t=i.size(e[0]);else{let r=e[0].string;r!==null&&(t=r.length)}if(t!==void 0)return t===0?n.True:n.False}}},Take:{complexity:8200,signature:{domain:["FunctionOf","Values",["VarArg","Values"],"Values"],evaluate:(n,e)=>{if(e.length<2)return;let i=e[0].string;if(i!==null){let o=e.slice(1).map(s=>Ur(s,i.length));return n.string(Pd(i,o))}let r=e[0].functionDefinition?.size?.(e[0]);return Gr(e[0],e.slice(1).map(o=>Ur(o,r)))}}},Drop:{complexity:8200,signature:{domain:["FunctionOf","Values",["VarArg","Values"],"Values"],evaluate:(n,e)=>{if(e.length<2)return;let i=e[0].string;if(i!==null){let a=Cu(e.slice(1).map(l=>Ur(l,i.length)));return n.string(i.split("").filter((l,u)=>!a.includes(u+1)).join(""))}let t=e[0].functionDefinition,r=t?.size?.(e[0]);if(!r||!t?.at)return n.Nothing;let o=Cu(e.slice(1).map(a=>Ur(a,r))),s=[];for(let a=1;a<=r;a++)if(!o.includes(a)){let l=t.at(e[0],a);l&&s.push(l)}return n.box(["List",...s])}}},At:{complexity:8200,signature:{domain:["FunctionOf","Values","Values","Values"],evaluate:(n,e)=>{let i=e[0],t=i.functionDefinition;if(!t?.at)return;if(e[1].string!==null)return t.at(i,1)??n.Nothing;let o=b(e[1]);if(!(o===null||!Number.isInteger(o)))return t.at(i,o)??n.Nothing}}},First:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0],t=i.functionDefinition;return t?.at?t.at(i,1)??n.Nothing:n.Nothing}}},Second:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0],t=i.functionDefinition;return t?.at?t.at(i,2)??n.Nothing:n.Nothing}}},Last:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0],t=i.functionDefinition;return t?.at?t.at(i,-1)??n.Nothing:n.Nothing}}},Rest:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>Gr(e[0],[[2,-1,1]])}},Most:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>Gr(e[0],[[1,-2,1]])}},Reverse:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>Gr(e[0],[[-1,2,1]])}},Ordering:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Functions"],"Values"],evaluate:(n,e)=>{}}},Sort:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Functions"],"Values"],evaluate:(n,e)=>{}}},Shuffle:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{}}},Map:{complexity:8200,signature:{domain:["FunctionOf","Collections","Functions","Collections"],evaluate:(n,e)=>{}}},Filter:{complexity:8200,signature:{domain:["FunctionOf","Values","Functions","Values"],evaluate:(n,e)=>{}}},Reduce:{complexity:8200,signature:{domain:["FunctionOf","Values","Functions",["OptArg","Values"],"Values"],evaluate:(n,e)=>{}}},Tabulate:{complexity:8200,signature:{domain:["FunctionOf","Functions","Integers",["VarArg","Integers"],"Values"],evaluate:(n,e)=>{}}},Tally:{complexity:8200,signature:{domain:["FunctionOf","Values","Tuples"],evaluate:(n,e)=>{}}},Unique:{complexity:8200,signature:{domain:["FunctionOf","Values","Tuples"],evaluate:(n,e)=>{}}},Zip:{complexity:8200,signature:{domain:["FunctionOf","Values",["VarArg","Values"],"Values"],evaluate:(n,e)=>{}}},RotateLeft:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Integers"],"Values"],evaluate:(n,e)=>{}}},RotateRight:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Integers"],"Values"],evaluate:(n,e)=>{}}},Join:{complexity:8200,signature:{domain:["FunctionOf",["VarArg","Values"],"Values"],evaluate:(n,e)=>{}}},Iterate:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Values"],"Values"],evaluate:(n,e)=>{}}},Repeat:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{}}},Cycle:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{}}},Fill:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{}}}};function zr(n){let e=b(n.op1)??1,i=b(n.op2);if(i===void 0)return[1,e,1];let t=b(n.op3)??1;return[e,i,t]}function Ur(n,e){if(!n)return[0,0,0];let i=b(n);if(i!==null){if(i=Math.round(i),i<0){if(e===void 0)return[0,0,0];i=e+i+1}return[i,i,1]}let t=n.head;if(!t||typeof t!="string"||!/^(Single|Pair|Triple|Tuple|)$/.test(t))return[0,0,0];let[r,o,s]=zr(n);return(r<0||o<0)&&e===void 0?[0,0,0]:(r<0&&(r=e+r+1),o<0&&(o=e+o+1),s=Math.abs(Math.round(s)),s===0?[0,0,0]:(r>o&&(s=-s),[r,o,s]))}function Gr(n,e){let i=n.engine,t=n.functionDefinition;if(!t?.at)return i.Nothing;let r=[];for(let o of e){let[s,a,l]=o;if(l!==0)if(l<0)for(let u=s;u>=a;u+=l){let f=t.at(n,u);f&&r.push(f)}else for(let u=s;u<=a;u+=l){let f=t.at(n,u);f&&r.push(f)}}return i.box(["List",...r])}function Pd(n,e){let i="";for(let t of e){let[r,o,s]=t;if(s===1)i+=n.slice(r-1,o);else if(s<0)for(let a=r;a>=o;a+=s)i+=n[a-1];else for(let a=r;a<=o;a+=s)i+=n[a-1]}return i}function Cu(n){let e=[];for(let i of n){let[t,r,o]=i;if(o!==0)if(o<0)for(let s=t;s>=r;s+=o)e.push(s);else for(let s=t;s<=r;s+=o)e.push(s)}return e}function Fd(n,e){let i=e[0];if(e.length===1&&i.head==="Matrix"){let[t,r,o]=i.ops;if(!r||r.string==="..")return o?n._fn("Matrix",[t,n.string("[]"),o]):n._fn("Matrix",[t,r])}return e=e.map(t=>t.head==="Delimiter"?t.op1.head==="Sequence"?n.box(["List",...oe(t.op1.ops)]):n.box(["List",t.op1?.canonical??n.Nothing]):t.canonical),n.box(["List",...e])}function Ld(n,e){let i=[],t=r=>i.some(o=>o.isEqual(r));for(let r of e)t(r)||i.push(r);return n.function("Set",i,{canonical:!1})}var Ou=[{Block:{hold:"all",signature:{domain:"Functions",canonical:Ud,evaluate:$d}},If:{hold:"rest",signature:{domain:"Functions",result:(n,e)=>e.length!==2?n.domain("NothingDomain"):ni(e[0],e[1]),evaluate:(n,e)=>{let i=e[0];return i&&i.symbol==="True"?e[1]?e[1].evaluate():n.Nothing:e[2]?e[2].evaluate():n.Nothing}}},Loop:{hold:"all",signature:{domain:"Functions",evaluate:(n,e)=>{let i=e[0]??n.Nothing;if(i.symbol==="Nothing")return i;let t=e[1];if(t&&En(t)){let o,s=Ni(i),a=0;for(let l of Q(t)){if(o=s([l])??n.Nothing,o.head==="Break")return o.op1;if(o.head==="Return")return o;if(a++>n.iterationLimit)return n.error("iteration-limit-exceeded")}}let r=0;for(;;){let o=i.evaluate();if(o.head==="Break")return o.op1;if(o.head==="Return")return o;if(r++>n.iterationLimit)return n.error("iteration-limit-exceeded")}}}},Which:{hold:"all",signature:{domain:"Functions",result:(n,e)=>qd(n,e),evaluate:(n,e)=>Vd(n,e,"evaluate")}},FixedPoint:{hold:"all",signature:{domain:"Functions"}}}];function qd(n,e){let i=null;for(let t=1;t<=e.length-1;t+=2)i=ni(i,e[t].domain);return i??n.domain("NothingDomain")}function Vd(n,e,i){let t=0;for(;t<e.length-1;){if(e[t].evaluate().symbol==="True")return e[t+1]?i==="N"?e[t+1].N():e[t+1].evaluate():n.symbol("Undefined");t+=2}return n.symbol("Undefined")}function $d(n,e){if(e.length===0)return n.Nothing;n.resetContext();let i;for(let t of e){let r=t.head;if(r==="Return"){i=t.op1.evaluate();break}if(r==="Break"||r==="Continue"){i=n.box([r,t.op1.evaluate()]);break}i=t.evaluate()}return i??n.Nothing}function Ud(n,e){if(e.length===0)return null;n.pushScope();let i=[],t=[];for(let o of e)o.head==="Declare"?i.push(o):t.push(Ru(o));let r=n._fn("Block",[...i,...t]);return n.popScope(),r}function Ru(n){return n.head==="Declare"&&n.engine.error("unexpected-declare"),n.ops?n.engine._fn(n.head,n.ops.map(Ru)):n}var Pu=[{Real:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>{let i=e[0].numericValue;if(i!==null)return n.isComplex(i)?n.number(i.re):e[0]}}},Imaginary:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>{let i=e[0].numericValue;if(i!==null)return n.isComplex(i)?n.number(i.im):n.Zero}}},Argument:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>{let i=e[0].numericValue;if(i===null)return;if(n.isComplex(i))return n.number(i.arg());let t=b(e[0]);if(t!==null)return t>=0?n.Zero:n.Pi}}},AbsArg:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Tuples"],evaluate:(n,e)=>{let i=e[0].numericValue;if(i===null)return;if(n.isComplex(i))return n.tuple([n.number(i.abs()),n.number(i.arg())]);let t=b(e[0]);if(t!==null)return n.tuple([n.number(Math.abs(t)),n.number(t>=0?0:Math.PI)])}}},Conjugate:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>{let i=e[0].numericValue;if(!(i===null||!n.isComplex(i)))return n.number(i.conjugate())}}},ComplexRoots:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers","Lists"],evaluate:(n,e)=>{let i=b(e[0]),t=b(e[1]);if(i===null||t===null||!Number.isInteger(t)||t<=0)return;let r=[],[o,s]=n.isComplex(i)?[i.re,i.im]:[i,0],a=Math.atan2(s,o),l=Math.sqrt(o*o+s*s);for(let u=0;u<t;u++){let f=(a+2*Math.PI*u)/t,d=Math.pow(l,1/t);r.push([d*Math.cos(f),d*Math.sin(f)])}return n.box(["List",...r.map(u=>n.number(u[1]!==0?n.complex(u[0],u[1]):u[0]))])}}}}];var Fu=[{Matrix:{complexity:9e3,hold:"all",signature:{params:["Lists"],optParams:["Strings","Strings"],result:"Lists",canonical:Gd,evaluate:(n,e)=>e[0].evaluate(),N:(n,e)=>e[0].N()}},Vector:{complexity:9e3,hold:"all",signature:{restParam:"Anything",result:"Lists",canonical:(n,e)=>n._fn("Matrix",[n.box(["List",...e.map(i=>n.box(["List",i.canonical]))])])}}},{Shape:{complexity:8200,signature:{domain:["FunctionOf","Values","Tuples"],evaluate:(n,e)=>{let i=e[0];return qe(i)?n.tuple(i.tensor.shape):n.tuple([])}}},Rank:{complexity:8200,signature:{domain:["FunctionOf","Values","Numbers"],evaluate:(n,e)=>{let i=e[0];return qe(i)?n.number(i.tensor.rank):n.Zero}}},Reshape:{complexity:8200,signature:{domain:["FunctionOf","Values","Tuples","Values"],evaluate:(n,e)=>{let i=e[0],t=e[1].ops?.map(r=>r.value)??[];if(!qe(i)&&de(i)&&(i=n.box(["List",...Q(i)])),qe(i))return i.tensor.reshape(...t).expression}}},Flatten:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0];if(qe(i))return n.box(["List",...i.tensor.flatten().map(t=>n.box(t))]);if(de(i))return n.box(["List",...Q(i)])}}},Transpose:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Numbers","Numbers"],"Values"],evaluate:(n,e)=>{let i=e[0],t=1,r=2;if(e.length===3&&(t=e[1].value,r=e[2].value,t>0&&r>0),t!==r&&(!qe(i)&&de(i)&&(i=n.box(["List",...Q(i)])),qe(i)))return t===1&&r===2?i.tensor.transpose()?.expression:i.tensor.transpose(t,r)?.expression}}},ConjugateTranspose:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0],t=1,r=2;if(e.length===3&&(t=e[1].value,r=e[2].value,t>0&&r>0),t!==r&&qe(i))return i.tensor.conjugateTranspose(t,r)?.expression}}},Determinant:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0];if(qe(i))return i.tensor.determinant()}}},Inverse:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0];if(qe(i))return i.tensor.inverse()?.expression}}},PseudoInverse:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0];if(qe(i))return i.tensor.pseudoInverse()?.expression}}},AdjugateMatrix:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0];if(qe(i))return i.tensor.adjugateMatrix()?.expression}}},Trace:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0];if(qe(i))return i.tensor.trace()}}}}];function Gd(n,e,i="Matrix"){if(e.length===0)return n._fn(i,[]);let t=e[0].head==="Vector"?e[0].canonical.ops[0]:e[0].canonical,r=e[1]?.canonical,o=e[2]?.canonical;return e.length>3?n._fn(i,De(n,e,3)):o?n._fn(i,[t,r,o]):r?n._fn(i,[t,r]):n._fn(i,[t])}var Gu={True:{wikidata:"Q16751793",domain:"Booleans",constant:!0},False:{wikidata:"Q5432619",domain:"Booleans",constant:!0},And:{wikidata:"Q191081",threadable:!0,associative:!0,commutative:!0,idempotent:!0,complexity:1e4,signature:{domain:"LogicOperators",simplify:Lu,evaluate:Lu}},Or:{wikidata:"Q1651704",threadable:!0,associative:!0,commutative:!0,idempotent:!0,complexity:1e4,signature:{domain:"LogicOperators",simplify:qu,evaluate:qu}},Not:{wikidata:"Q190558",threadable:!0,involution:!0,complexity:10100,signature:{domain:"LogicOperators",simplify:Vu,evaluate:Vu}},Equivalent:{wikidata:"Q220433",threadable:!0,complexity:10200,signature:{domain:"LogicOperators",canonical:(n,e)=>{let i=e[0].symbol,t=e[1].symbol;return i==="True"&&t==="True"||i==="False"&&t==="False"?n.True:i==="True"&&t==="False"||i==="False"&&t==="True"?n.False:n._fn("Equivalent",e)},simplify:$u,evaluate:$u}},Implies:{wikidata:"Q7881229",threadable:!0,complexity:10200,signature:{domain:"LogicOperators",simplify:Uu,evaluate:Uu}},Exists:{signature:{domain:"Functions"},hold:"all"},ExistsUnique:{signature:{domain:"Functions"},hold:"all"},ForAll:{signature:{domain:"Functions"},hold:"all"}};function Lu(n,e){if(e.length===0)return n.True;let i=[];for(let t of e){if(t.symbol==="False")return n.False;if(t.symbol!=="True"){let r=!1;for(let o of i)if(o.isSame(t))r=!0;else if(t.head==="Not"&&t.op1.isSame(o)||o.head==="Not"&&o.op1.isSame(t))return n.False;r||i.push(t)}}return i.length===0?n.True:i.length===1?i[0]:n._fn("And",i)}function qu(n,e){if(e.length===0)return n.True;let i=[];for(let t of e){if(t.symbol==="True")return n.True;if(t.symbol!=="False"){let r=!1;for(let o of i)if(o.isSame(t))r=!0;else if(t.head==="Not"&&t.op1.isSame(o)||o.head==="Not"&&o.op1.isSame(t))return n.True;r||i.push(t)}}return i.length===0?n.False:i.length===1?i[0]:n._fn("Or",i)}function Vu(n,e){let i=e[0]?.symbol;if(i==="True")return n.False;if(i==="False")return n.True}function $u(n,e){let i=e[0].symbol,t=e[1].symbol;if(i==="True"&&t==="True"||i==="False"&&t==="False")return n.True;if(i==="True"&&t==="False"||i==="False"&&t==="True")return n.False}function Uu(n,e){let i=e[0].symbol,t=e[1].symbol;if(i==="True"&&t==="True"||i==="False"&&t==="False"||i==="False"&&t==="True")return n.True;if(i==="True"&&t==="False")return n.False}var zu=[{Expand:{description:"Expand out products and positive integer powers",signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>mn(e[0])??e[0]}},ExpandAll:{description:"Recursively expand out products and positive integer powers",signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>jo(e[0])??e[0]}},Factor:{description:"Factors an algebraic expression into a product of irreducible factors",signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>Xa(e[0])}},Together:{description:"Combine rational expressions into a single fraction",signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>_i(e[0])}},Distribute:{description:"Distribute multiplication over addition",signature:{domain:["FunctionOf","Values","Values"],evaluate:(n,e)=>{let i=e[0].head;if(i==="Multiply")return Un(e[0].ops)??e[0];if(i==="Negate")return Un([n.NegativeOne,...e[0].ops])??e[0];if(i==="Divide"&&e[0].ops[0].head==="Multiply"){let t=Un(e[0].ops),r=e[0].ops[1];if(t)return t.head==="Add"?n.add(...t.ops.map(o=>n.div(o,r))).evaluate():n.div(t,r).evaluate()}return e[0]}}}}];var Zu={Congruent:{commutative:!1,complexity:11e3,numeric:!0,signature:{simplify:(n,e)=>{if(!(e.length<3))return n._fn("Equal",[n.box(["Mod",e[0],e[2]]).simplify(),n.box(["Mod",e[1],e[2]]).simplify()]).simplify()},evaluate:(n,e)=>{if(e.length<3)return;let[i,t,r]=e,o=i.value,s=t.value,a=r.value;if(typeof o=="number"&&typeof s=="number"&&typeof a=="number")return o%a===s%a?n.True:n.False}}},IsSame:{description:"Compare two expressions for structural equality",hold:"all",signature:{domain:"RelationalOperators",evaluate:(n,e)=>{if(e.length!==2)return;let[i,t]=e;return i.isSame(t)===!0?n.True:n.False}}},Equal:{commutative:!0,complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>me(n,"Equal",e),evaluate:(n,e)=>{if(e.length<2)return n.True;let i;for(let t of e)if(!i)i=t;else if(i.isEqual(t)!==!0)return n.False;return n.True}}},NotEqual:{wikidata:"Q28113351",commutative:!0,complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>me(n,"NotEqual",e),evaluate:(n,e)=>{if(e.length<2)return n.False;let i;for(let t of e)if(!i)i=t;else if(i.isEqual(t)===!0)return n.False;return n.True}}},Less:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>me(n,"Less",e),evaluate:(n,e)=>{if(e.length<2)return n.True;let i;for(let t of e){if(!t.isNumber)return;if(!i)i=t;else{let r=n.box(["Subtract",t,i]).N().sgn;if(r==null)return;if(r<=0)return n.False;i=t}}return n.True}}},NotLess:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[me(n,"Less",e)])}},Greater:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>me(n,"Less",[...e].reverse()),evaluate:(n,e)=>{if(e.length<2)return n.True;let i;for(let t of e){if(!t.isNumber)return;if(!i)i=t;else{let r=n.box(["Subtract",t,i]).N().sgn;if(r==null)return;if(r>=0)return n.False;i=t}}return n.True}}},NotGreater:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[n._fn("Greater",e)])}},LessEqual:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>me(n,"LessEqual",e),evaluate:(n,e)=>{if(e.length<2)return n.True;let i;for(let t of e){if(!t.isNumber)return;if(!i)i=t;else{let r=n.box(["Subtract",t,i]).N().sgn;if(r==null)return;if(r<0)return n.False;i=t}}return n.True}}},NotLessNotEqual:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[me(n,"LessEqual",e)])}},GreaterEqual:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>me(n,"LessEqual",[...e].reverse()),evaluate:(n,e)=>{if(e.length<2)return n.True;let i;for(let t of e){if(!t.isNumber)return;if(!i)i=t;else{let r=n.box(["Subtract",t,i]).N().sgn;if(r==null)return;if(r>0)return n.False;i=t}}return n.True}}},NotGreaterNotEqual:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[me(n,"GreaterEqual",e)])}},TildeFullEqual:{description:"Indicate isomorphism, congruence and homotopic equivalence",signature:{domain:"RelationalOperators",canonical:(n,e)=>me(n,"TildeFullEqual",e)}},NotTildeFullEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[me(n,"TildeFullEqual",e)])}},TildeEqual:{description:"Approximately or asymptotically equal",complexity:11e3,signature:{domain:"RelationalOperators",canonical:(n,e)=>me(n,"TildeEqual",e)}},NotTildeEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[me(n,"TildeEqual",e)])}},Approx:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>me(n,"Approx",e)}},NotApprox:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[me(n,"Approx",e)])}},ApproxEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>me(n,"ApproxEqual",e)}},NotApproxEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[me(n,"ApproxEqual",e)])}},ApproxNotEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>me(n,"ApproxNotEqual",e)}},NotApproxNotEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[me(n,"ApproxNotEqual",e)])}},Precedes:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>me(n,"Precedes",e)}},NotPrecedes:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[me(n,"Precedes",e)])}},Succeeds:{signature:{domain:"RelationalOperators",canonical:(n,e)=>me(n,"Succeeds",e)}},NotSucceeds:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(n,e)=>n._fn("Not",[me(n,"Succeeds",e)])}}};function me(n,e,i){i=ne(re(oe(i)),e);let t=[],r=[];for(let o of i)wn(o)?(t.push(o),r.push(o.ops[o.ops.length-1])):r.push(o);return t.length===0?n._fn(e,r):n._fn("And",[n._fn(e,r),...t])}var ju={EmptySet:{domain:"Sets",constant:!0,wikidata:"Q226183"},Element:{complexity:11200,hold:"all",signature:{domain:"Predicates",canonical:(n,e)=>(e=De(n,e,2),e.length===2&&e[0].isValid&&Nn(e[1])?n._fn("Element",[e[0],n.domain(e[1])]):n._fn("Element",e)),evaluate:(n,e)=>Hd(n,e)}},NotElement:{complexity:11200,hold:"all",signature:{domain:"Predicates",canonical:(n,e)=>n.box(["Not",["Element",...e]])}},Subset:{complexity:11200,signature:{domain:"Predicates"}},NotSubset:{complexity:11200,signature:{domain:"Predicates",canonical:(n,e)=>n.box(["Not",["Subset",...e]])}},Superset:{complexity:11200,signature:{domain:"Predicates"}},SupersetEqual:{complexity:11200,signature:{domain:"Predicates"}},NotSuperset:{complexity:11200,signature:{domain:"Predicates",canonical:(n,e)=>n.box(["Not",["Superset",...e]])}},NotSupersetEqual:{complexity:11200,signature:{domain:"Predicates",canonical:(n,e)=>n.box(["Not",["SupersetEqual",...e]])}},SubsetEqual:{complexity:11200,signature:{domain:"Predicates"}},NotSubsetNotEqual:{complexity:11200,signature:{domain:"Predicates",canonical:(n,e)=>n.box(["Not",["SubsetEqual",...e]])}},CartesianProduct:{wikidata:"Q173740",signature:{domain:["FunctionOf","Sets",["VarArg","Sets"],"Sets"]}},Complement:{wikidata:"Q242767",signature:{domain:["FunctionOf","Sets","Sets"]}},Intersection:{wikidata:"Q185837",associative:!0,commutative:!0,involution:!0,signature:{domain:["FunctionOf","Collections",["VarArg","Collections"],"Sets"],canonical:(n,e)=>e.length===0||e.length===1?n.symbol("EmptySet"):n._fn("Intersection",e),evaluate:Zd}},Union:{wikidata:"Q185359",associative:!0,commutative:!0,involution:!0,signature:{domain:["FunctionOf","Collections",["VarArg","Collections"],"Sets"],canonical:(n,e)=>e.length===0?n.symbol("EmptySet"):n._fn("Union",e),evaluate:zd}},SetMinus:{wikidata:"Q18192442",signature:{domain:["FunctionOf","Sets","Values","Sets"],evaluate:jd}},SymmetricDifference:{wikidata:"Q1147242",signature:{domain:["FunctionOf","Sets",["VarArg","Sets"],"Sets"]}}};function zd(n,e){let i=[];for(let t of e)if(de(t))for(let r of Q(t))i.every(o=>!o.isEqual(r))&&i.push(r);else i.every(r=>!r.isEqual(t))&&i.push(t);return i.length===0?n.symbol("EmptySet"):n._fn("Set",i)}function Zd(n,e){let i=[...e[0].ops??[]];for(let t of e.slice(1))de(t)?i=i.filter(r=>[...Q(t)].some(o=>r.isEqual(o))):i=i.filter(r=>r.isEqual(t));return i.length===0?n.symbol("EmptySet"):n._fn("Set",i)}function jd(n,e){return n.symbol("EmptySet")}function Hd(n,e){e.length;let[i,t]=e;if(t.string)return i.string&&t.string.includes(i.string)?n.True:n.False;if(t.keys){if(i.string){for(let r of t.keys)if(r===i.string)return n.True}return n.False}if(t.head==="List"){if(i.head==="List"){let o=!1;for(let s=0;s<1+(t.nops-i.nops);++s){o=!0;for(let a=0;a<i.nops;++a)if(!t.ops[s+a].isEqual(i.ops[a])){o=!1;break}if(o)return n.True}return n.False}let r=i.head==="Hold"?i.op1:i;for(let o of t.ops)if(r.isEqual(o))return n.True;return n.False}return Nn(t)&&i.domain?i.domain.isCompatible(n.domain(t))?n.True:n.False:n._fn("Element",[i,t])}var Hu=[{Mean:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(n,e)=>{let i=0,t=0;for(let r of Q(e[0])){let o=b(r);if(o===null)return;i+=o,t++}return t===0?n.NaN:n.number(i/t)}}},Median:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(n,e)=>{let i=[];for(let r of Q(e[0])){let o=b(r);if(o===null)return;i.push(o)}if(i.length===0)return n.NaN;i.sort((r,o)=>r-o);let t=Math.floor(i.length/2);return i.length%2===0?n.number((i[t-1]+i[t])/2):n.number(i[t])}}},Variance:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(n,e)=>{let i=0,t=0,r=0;for(let o of Q(e[0])){let s=b(o);if(s===null)return;i+=s,t+=s*s,r++}return r===0?n.NaN:n.number((t-i*i/r)/(r-1))}}},StandardDeviation:{complexity:1200,threadable:!1,description:"Sample Standard Deviation of a collection of numbers.",signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(n,e)=>{let i=0,t=0,r=0;for(let o of Q(e[0])){let s=b(o);if(s===null)return;i+=s,t+=s*s,r++}return r===0?n.NaN:n.number(Math.sqrt((t-i*i/r)/(r-1)))}}},Kurtosis:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(n,e)=>{let i=0,t=0,r=0,o=0;for(let l of Q(e[0])){let u=b(l);if(u===null)return;i+=u,t+=u*u,r+=u*u*u*u,o++}if(o===0)return n.NaN;let s=(t-i*i/o)/(o-1),a=(r-t*t/o)/(o-1);return n.number((a/(s*s)-3)*(o*(o+1))/6)}}},Skewness:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(n,e)=>{let i=0,t=0,r=0,o=0;for(let l of Q(e[0])){let u=b(l);if(u===null)return;i+=u,t+=u*u,r+=u*u*u,o++}if(o===0)return n.NaN;let s=(t-i*i/o)/(o-1),a=(r-t*i/o)/(o-1);return n.number(a/Math.pow(s,3/2)*Math.sqrt(o*1))}}},Mode:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(n,e)=>{let i=[];for(let s of Q(e[0])){let a=b(s);if(a===null)return;i.push(a)}if(i.length===0)return n.NaN;i.sort((s,a)=>s-a);let t={};for(let s of i)t[s]=(t[s]??0)+1;let r=0,o=i[0];for(let s of i){let a=t[s];a>r&&(r=a,o=s)}return n.number(o)}}},Quartiles:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Lists"],evaluate:(n,e)=>{let i=[];for(let s of Q(e[0])){let a=b(s);if(a===null)return;i.push(a)}if(i.length===0)return n.NaN;i.sort((s,a)=>s-a);let t=Math.floor(i.length/2),r=i.slice(0,t),o=i.slice(t+1);return n.box(["List",n.number(i[t]),n.number(r[Math.floor(r.length/2)]),n.number(o[Math.floor(o.length/2)])])}}},InterquartileRange:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(n,e)=>{let i=[];for(let s of Q(e[0])){let a=b(s);if(a===null)return;i.push(a)}if(i.length===0)return n.NaN;i.sort((s,a)=>s-a);let t=Math.floor(i.length/2),r=i.slice(0,t),o=i.slice(t+1);return n.number(o[Math.floor(o.length/2)]-r[Math.floor(r.length/2)])}}},Erf:{complexity:7500,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>{let i=b(e[0]);if(i!==null)return n.number(oo(i))}}},Erfc:{complexity:7500,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>{let i=b(e[0]);if(i!==null)return n.number(1-oo(i))}}},ErfInv:{complexity:7500,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(n,e)=>{let i=b(e[0]);if(i!==null)return n.number(Xs(i))}}}}];var Gn=n=>["FunctionOf","Numbers","ExtendedRealNumbers"],Zr=n=>["FunctionOf","Numbers","Numbers"],oi=n=>["FunctionOf","Numbers","Numbers"],Ju=[{Pi:{domain:"TranscendentalNumbers",flags:{algebraic:!1},constant:!0,holdUntil:"N",wikidata:"Q167",value:n=>q(n)?n._BIGNUM_PI:Math.PI}},{Degrees:{signature:{domain:["FunctionOf","Numbers","Numbers"],canonical:(n,e)=>{if(n.angularUnit==="deg")return e[0];if(e.length!==1)return n._fn("Degrees",e);let i=e[0];if(i.numericValue===null||!i.isValid)return n._fn("Degrees",e);let t=b(i);if(t!==null){if(t=t%360,t<0&&(t+=360),Number.isInteger(t)){let r=Ze([t,180]);return r[0]===0?n.Zero:r[0]===1&&r[1]===1?n.Pi:r[0]===1?n.div(n.Pi,n.number(r[1])):n.mul(n.number(r),n.Pi)}return n.mul(n.div(n.number(t),n.number(180)),n.Pi)}return n.div(n.mul(i,n.Pi),n.number(180))},evaluate:(n,e)=>n.angularUnit==="deg"?e[0]:n.mul(e[0],n.div(n.Pi,n.number(180))).evaluate()}},Hypot:{threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers","NonNegativeNumbers"],simplify:(n,e)=>n.box(["Sqrt",["Add",["Square",e[0]],["Square",e[1]]]]).simplify(),evaluate:["Function",["Sqrt",["Add",["Square","_1"],["Square","_2"]]]]}},Sin:{complexity:5e3,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],simplify:(n,e)=>Be(n,"Sin",e[0])?.simplify()??(le(n)?n.box(["Divide",["Subtract",["Exp",["Multiply","ImaginaryUnit",e[0]]],["Exp",["Multiply","ImaginaryUnit",["Negate",e[0]]]]],["Complex",0,2]]).simplify():void 0),evaluate:(n,e)=>k(n,"evaluate","Sin",e[0]),N:(n,e)=>k(n,"N","Sin",e[0])}}},{Arctan:{wikidata:"Q2257242",complexity:5200,threadable:!0,signature:{domain:Gn("Arctan"),simplify:(n,e)=>Be(n,"Arctan",e[0])?.simplify(),evaluate:(n,e)=>k(n,"evaluate","Arctan",e[0]),N:(n,e)=>k(n,"N","Arctan",e[0])}},Arctan2:{wikidata:"Q776598",complexity:5200,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers","Numbers"],N:(n,e)=>Rn(e[0],e[1],Math.atan2,(i,t)=>N.atan2(i,t))}},Cos:{complexity:5050,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],simplify:(n,e)=>Be(n,"Cos",e[0])?.simplify()??n.box(["Sin",["Add",e[0],["Multiply","Half","Pi"]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Cos",e[0]),N:(n,e)=>k(n,"N","Cos",e[0])}},Tan:{complexity:5100,threadable:!0,signature:{domain:Zr("Tan"),simplify:(n,e)=>Be(n,"Tan",e[0])?.simplify()??n.box(["Divide",["Sin",e[0]],["Cos",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Tan",e[0]),N:(n,e)=>k(n,"N","Tan",e[0])}}},{Arcosh:{complexity:6200,threadable:!0,signature:{domain:oi("Arcosh"),simplify:(n,e)=>Be(n,"Arcosh",e[0])?.simplify()??n.box(["Ln",["Add",e[0],["Sqrt",["Subtract",["Square",e[0]],1]]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Arcosh",e[0]),N:(n,e)=>k(n,"N","Arcosh",e[0])}},Arcsin:{complexity:5500,threadable:!0,signature:{domain:oi("Arcsin"),simplify:(n,e)=>Be(n,"Arcsin",e[0])?.simplify()??n.box(["Multiply",2,["Arctan2",e[0],["Add",1,["Sqrt",["Subtract",1,["Square",e[0]]]]]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Arcsin",e[0]),N:(n,e)=>k(n,"N","Arcsin",e[0])}},Arsinh:{complexity:6100,threadable:!0,signature:{domain:oi("Arsinh"),simplify:(n,e)=>Be(n,"Arsinh",e[0])?.simplify()??n.box(["Ln",["Add",e[0],["Sqrt",["Add",["Square",e[0]],1]]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Arsinh",e[0]),N:(n,e)=>k(n,"N","Arsinh",e[0])}},Artanh:{complexity:6300,threadable:!0,signature:{domain:oi("Artanh"),simplify:(n,e)=>Be(n,"Artanh",e[0])?.simplify()??n.box(["Multiply","Half",["Ln",["Divide",["Add",1,e[0]],["Subtract",1,e[0]]]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Artanh",e[0]),N:(n,e)=>k(n,"N","Artanh",e[0])}},Cosh:{complexity:6050,threadable:!0,signature:{domain:oi("Cosh"),simplify:(n,e)=>Be(n,"Cosh",e[0])?.simplify()??n.box(["Multiply","Half",["Add",["Exp",e[0]],["Exp",["Negate",e[0]]]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Cosh",e[0]),N:(n,e)=>k(n,"N","Cosh",e[0])}},Cot:{complexity:5600,threadable:!0,signature:{domain:Zr("Cot"),simplify:(n,e)=>Be(n,"Cot",e[0])?.simplify()??n.box(["Divide",["Cos",e[0]],["Sin",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Cot",e[0]),N:(n,e)=>k(n,"N","Cot",e[0])}},Csc:{description:"Cosecant",complexity:5600,threadable:!0,signature:{domain:Zr("Csc"),simplify:(n,e)=>Be(n,"Csc",e[0])?.simplify()??n.box(["Divide",1,["Sin",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Csc",e[0]),N:(n,e)=>k(n,"N","Csc",e[0])}},Haversine:{wikidata:"Q2528380",threadable:!0,signature:{domain:["FunctionOf","ExtendedRealNumbers","Numbers"],evaluate:["Divide",["Subtract",1,["Cos","_1"]],2]}},InverseHaversine:{threadable:!0,signature:{domain:["FunctionOf","ExtendedRealNumbers","RealNumbers"],evaluate:["Multiply",2,["Arcsin",["Sqrt","_1"]]]}},Sec:{description:"Secant, inverse of cosine",complexity:5500,threadable:!0,signature:{domain:Zr("Sec"),simplify:(n,e)=>Be(n,"Sec",e[0])?.simplify()??n.box(["Divide",1,["Cos",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Sec",e[0]),N:(n,e)=>k(n,"N","Sec",e[0])}},Sinh:{complexity:6e3,threadable:!0,signature:{domain:oi("Sinh"),simplify:(n,e)=>Be(n,"Sinh",e[0])?.simplify()??n.box(["Multiply","Half",["Subtract",["Exp",e[0]],["Exp",["Negate",e[0]]]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Sinh",e[0]),N:(n,e)=>k(n,"N","Sinh",e[0])}}},{Csch:{complexity:6200,threadable:!0,signature:{domain:Gn("Csch"),simplify:(n,e)=>Be(n,"Csch",e[0])?.simplify()??n.box(["Divide",1,["Sinh",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Csch",e[0]),N:(n,e)=>k(n,"N","Csch",e[0])}},Sech:{complexity:6200,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],simplify:(n,e)=>Be(n,"Sech",e[0])?.simplify()??n.box(["Divide",1,["Cosh",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Sech",e[0]),N:(n,e)=>k(n,"N","Sech",e[0])}},Tanh:{complexity:6200,threadable:!0,signature:{domain:oi("Tanh"),simplify:(n,e)=>Be(n,"Tanh",e[0])?.simplify()??n.box(["Divide",["Sinh",e[0]],["Cosh",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Tanh",e[0]),N:(n,e)=>k(n,"N","Tanh",e[0])}}},{Arccos:{complexity:5550,threadable:!0,signature:{domain:Gn("Arccos"),simplify:(n,e)=>Be(n,"Arccos",e[0])?.simplify()??n.box(["Subtract",["Divide","Pi",2],["Arcsin",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Arccos",e[0]),N:(n,e)=>k(n,"N","Arccos",e[0])}},Arccot:{numeric:!0,threadable:!0,signature:{domain:Gn("Arccot"),evaluate:(n,e)=>k(n,"evaluate","Arccot",e[0]),N:(n,e)=>k(n,"N","Arccot",e[0])}},Arcoth:{numeric:!0,threadable:!0,signature:{domain:Gn("Arcoth"),evaluate:(n,e)=>k(n,"evaluate","Arcoth",e[0]),N:(n,e)=>k(n,"N","Arcoth",e[0])}},Arcsch:{numeric:!0,threadable:!0,signature:{domain:Gn("Arcsch"),evaluate:(n,e)=>k(n,"evaluate","Arcsch",e[0]),N:(n,e)=>k(n,"N","Arcsch",e[0])}},Arcsec:{numeric:!0,threadable:!0,signature:{domain:Gn("Arcsec"),evaluate:(n,e)=>k(n,"evaluate","Arcsec",e[0]),N:(n,e)=>k(n,"N","Arcsec",e[0])}},Arsech:{numeric:!0,threadable:!0,signature:{domain:Gn("Arsech"),evaluate:(n,e)=>k(n,"evaluate","Arsech",e[0]),N:(n,e)=>k(n,"N","Arsech",e[0])}},Arccsc:{numeric:!0,threadable:!0,signature:{domain:Gn("Arccsc"),evaluate:(n,e)=>k(n,"evaluate","Arccsc",e[0]),N:(n,e)=>k(n,"N","Arccsc",e[0])}},Coth:{complexity:6300,threadable:!0,signature:{domain:oi("Coth"),simplify:(n,e)=>Be(n,"Coth",e[0])?.simplify()??n.box(["Divide",1,["Tanh",e[0]]]).simplify(),evaluate:(n,e)=>k(n,"evaluate","Coth",e[0]),N:(n,e)=>k(n,"N","Coth",e[0])}},InverseFunction:{signature:{domain:["FunctionOf","Functions","Functions"],canonical:(n,e)=>(e=De(n,e,1),ms(n,e)??n._fn("InverseFunction",e)),simplify:(n,e)=>ms(n,e),evaluate:(n,e)=>ms(n,e)}}}],si=["Sqrt",2],Yi=["Sqrt",3],Qi=["Sqrt",5],jr=["Sqrt",6],Jd=[[[0,1],{Sin:0,Cos:1,Tan:0,Cot:"ComplexInfinity",Sec:1,Csc:"ComplexInfinity"}],[[1,12],{Sin:["Divide",["Subtract",jr,si],4],Cos:["Divide",["Add",jr,si],4],Tan:["Subtract",2,Yi],Cot:["Add",2,Yi],Sec:["Subtract",jr,si],Csc:["Add",jr,si]}],[[1,10],{Sin:["Divide",["Subtract",Qi,1],4],Cos:["Divide",["Sqrt",["Add",10,["Multiply",2,Qi]]],4],Tan:["Divide",["Sqrt",["Subtract",25,["Multiply",10,Qi]]],5],Cot:["Sqrt",["Add",5,["Multiply",2,Qi]]],Sec:["Divide",["Sqrt",["Subtract",50,["Multiply",10,Qi]]],5],Csc:["Add",1,Qi]}],[[1,8],{Sin:"$\\frac{\\sqrt{2-\\sqrt2}}{2}$",Cos:"$\\frac{\\sqrt {2+{\\sqrt {2}}}}{2}$",Tan:"$\\sqrt{2} - 1$",Cot:"$\\sqrt{2} + 1$",Sec:"$\\sqrt{ 4 - 2\\sqrt{2}}$",Csc:"$\\sqrt{ 4 + 2\\sqrt{2}}$"}],[[1,6],{Sin:"$\\frac{1}{2}$",Cos:"$\\frac{\\sqrt{3}}{2}$",Tan:"$\\frac{\\sqrt{3}}{3}$",Cot:"$\\sqrt{3}$",Sec:"$\\frac{2\\sqrt{3}}{3}$",Csc:2}],[[1,5],{Sin:"$\\frac{\\sqrt{10- 2\\sqrt{5}}} {4}$",Cos:"$\\frac{1+ \\sqrt{5}} {4}$",Tan:"$\\sqrt{5-2\\sqrt5}$",Cot:"$\\frac{\\sqrt{25+10\\sqrt5}} {5}$",Sec:"$\\sqrt{5} - 1$",Csc:"$\\frac{\\sqrt{50+10\\sqrt{5}}} {5}$"}],[[1,4],{Sin:["Divide",si,2],Cos:["Divide",si,2],Tan:1,Cot:1,Sec:si,Csc:si}],[[3,10],{Sin:"$\\frac{1+ \\sqrt5} {4}$",Cos:"$\\frac{\\sqrt{10- 2\\sqrt5}} {4}$",Tan:"$\\frac{\\sqrt{25+10\\sqrt5}} {5}$",Cot:"$\\sqrt{5-2\\sqrt5}$",Sec:"$\\frac{\\sqrt{50+10\\sqrt5}} {5}$",Csc:"$\\sqrt5-1$"}],[[1,3],{Sin:["Divide",Yi,2],Cos:"Half",Tan:Yi,Cot:["Divide",Yi,3],Sec:2,Csc:["Divide",["Multiply",2,Yi],3]}],[[3,8],{Sin:"$\\frac{ \\sqrt{2 + \\sqrt{2}} } {2}$",Cos:"$\\frac{ \\sqrt{2 - \\sqrt{2}} } {2}$",Tan:"$\\sqrt{2} + 1$",Cot:"$\\sqrt{2} - 1$",Sec:"$\\sqrt{ 4 + 2 \\sqrt{2} }$",Csc:"$\\sqrt{ 4 - 2 \\sqrt{2} }$"}],[[2,5],{Sin:"$\\frac{\\sqrt{10+ 2\\sqrt{5}}} {4}$",Cos:"$\\frac{\\sqrt{5}-1} {4}$",Tan:"$\\sqrt{5+2\\sqrt{5}}$",Cot:"$\\frac{\\sqrt{25-10\\sqrt{5}}} {5}$",Sec:"$1 + \\sqrt{5}$",Csc:"$\\frac{\\sqrt{50-10\\sqrt{5}}} {5}$"}],[[5,12],{Sin:"$\\frac{\\sqrt{6} + \\sqrt{2}} {4}$",Cos:"$\\frac{ \\sqrt{6} - \\sqrt{2}} {4}$",Tan:"$2+\\sqrt{3}$",Cot:"$2-\\sqrt{3}$",Sec:"$\\sqrt{6}+\\sqrt{2}$",Csc:"$\\sqrt{6} - \\sqrt{2}$"}],[[1,2],{Sin:1,Cos:0,Tan:"ComplexInfinity",Cot:0,Sec:"ComplexInfinity",Csc:1}]],Wd={Sin:[[1,"Sin"],[1,"Cos"],[-1,"Sin"],[-1,"Cos"]],Cos:[[1,"Cos"],[-1,"Sin"],[-1,"Cos"],[1,"Sin"]],Sec:[[1,"Sec"],[-1,"Csc"],[-1,"Sec"],[1,"Csc"]],Csc:[[1,"Csc"],[1,"Sec"],[-1,"Csc"],[-1,"Sec"]],Tan:[[1,"Tan"],[-1,"Cot"],[1,"Tan"],[-1,"Cot"]],Cot:[[1,"Cot"],[-1,"Tan"],[1,"Cot"],[-1,"Tan"]]};function Be(n,e,i){if(!i)return;i=Yu(i);let t=b(i.N());if(t===null)return;let r=n.cache("constructible-trigonometric-values",()=>Jd.map(([l,u])=>[l,Object.fromEntries(Object.entries(u).map(([f,d])=>[f,n.parse(yi(d))??n.box(d)]))]),l=>{for(let[u,f]of l)for(let d of Object.values(f))d.reset();return l});if(Qd(e))return Yd(n,e,i,r);let o=Wu(e)==-1?Math.sign(t):1;t=Math.abs(t%(2*Math.PI));let s=Math.floor(t*2/Math.PI);t=t%(Math.PI/2);let a;[a,e]=Wd[e]?.[s]??[1,e];for(let[[l,u],f]of r){let d=f[e];if(d&&n.chop(t-Math.PI*l/u)===0)return d.symbol==="ComplexInfinity"?d:o*a<0?xe(d):d}}function Yd(n,e,i,t){if(!i)return;let r=b(i.N());if(r===null)return;let o=ps(e),s=n.cache("constructible-inverse-trigonometric-values-"+e,()=>{let l=[];for(let[[u,f],d]of t){let c=d[o];if(c===void 0)continue;let m=b(c.N());m!==null&&l.push([[c,m],[u,f]])}return l},l=>{for(let[[u,f],[d,c]]of l)u.reset();return l}),a=0;r<0&&(a=Wu(o)==-1?-1:1,r=-r,i=xe(i));for(let[[l,u],[f,d]]of s)if(n.chop(r-u)===0){let c=n.box(["Divide",["Multiply",f,"Pi"],d]);return a==-1?c=xe(c):a==1&&(c=n.box(["Subtract","Pi",c])),c}}function Wu(n){return n!=="Cos"&&n!=="Sec"?-1:1}function Qd(n){return!!(n.startsWith("Ar")&&ps(n))}function ps(n){return{Sin:"Arcsin",Cos:"Arccos",Tan:"Arctan",Sec:"Arcsec",Csc:" Arccsc",Sinh:"Arsinh",Cosh:"Arcosh",Tanh:"Artanh",Sech:"Arcsech",Csch:"Arcsch",Arcosh:"Cosh",Arccos:"Cos",Arccsc:"Csc",Arcsch:"Csch",Arcsec:"Sec",Arcsin:"Sin",Arsinh:"Sinh",Arctan:"Tan",Artanh:"Tanh"}[n]}function ms(n,e){if(e.length!==1||!e[0].isValid)return;let i=e[0],t=i.symbol;if(typeof t!="string")return;if(t==="InverseFunction")return i.op1;let r=ps(t);return r?n.symbol(r):void 0}function k(n,e,i,t){if(!t)return;let r=Be(n,i,t)?.evaluate({numericMode:e==="N"});if(r)return r;if(!(e==="evaluate"&&t.isExact))switch(i){case"Arccos":return en(ie(t,Math.acos,o=>o.acos(),o=>o.acos()));case"Arccot":return en(ie(t,o=>Math.atan2(1,o),o=>N.atan2(n._BIGNUM_ONE,o),o=>o.inverse().atan()));case"Arccsc":return en(ie(t,o=>Math.asin(1/o),o=>n._BIGNUM_ONE.div(o).asin(),o=>o.inverse().asin()));case"Arcosh":return en(ie(t,Math.acosh,o=>o.acosh(),o=>o.acosh()));case"Arcoth":return en(ie(t,o=>Math.log((1+o)/(o-1))/2,o=>n._BIGNUM_ONE.add(o).div(o.sub(n._BIGNUM_ONE)).log().div(2),o=>n.complex(1).add(o).div(o.sub(1)).log().div(2)));case"Arcsch":return en(ie(t,o=>Math.log(1/o+Math.sqrt(1/(o*o)+1)),o=>n._BIGNUM_ONE.div(o.mul(o)).add(n._BIGNUM_ONE).sqrt().add(n._BIGNUM_ONE.div(o)).log(),o=>o.mul(o).inverse().add(1).sqrt().add(o.inverse()).log()));case"Arcsec":return en(ie(t,o=>Math.acos(1/o),o=>n._BIGNUM_ONE.div(o).acos(),o=>o.inverse().acos()));case"Arcsin":return en(ie(t,Math.asin,o=>o.asin(),o=>o.asin()));case"Arsech":return en(ie(t,o=>Math.log((1+Math.sqrt(1-o*o))/o),o=>n._BIGNUM_ONE.sub(o.mul(o).add(n._BIGNUM_ONE).div(o)).log(),o=>n.complex(1).sub(o.mul(o)).add(1).div(o).log()));case"Arsinh":return en(ie(t,Math.asinh,o=>o.asinh(),o=>o.asinh()));case"Arctan":return en(ie(t,Math.atan,o=>o.atan(),o=>o.atan()));case"Artanh":return en(ie(t,Math.atanh,o=>o.atanh(),o=>o.atanh()));case"Cos":return Ke(t,Math.cos,o=>o.toSignificantDigits(n.precision+4).cos().toSignificantDigits(n.precision),o=>o.cos());case"Cosh":return Ke(t,Math.cosh,o=>o.cosh(),o=>o.cosh());case"Cot":return Ke(t,o=>1/Math.tan(o),o=>n._BIGNUM_ONE.div(o.tan()),o=>o.tan().inverse());case"Coth":return Ke(t,o=>1/Math.tanh(o),o=>n._BIGNUM_ONE.div(o.tanh()),o=>o.tanh().inverse());case"Csc":return Ke(t,o=>1/Math.sin(o),o=>n._BIGNUM_ONE.div(o.sin()),o=>o.sin().inverse());case"Csch":return Ke(t,o=>1/Math.sinh(o),o=>n._BIGNUM_ONE.div(o.sinh()),o=>o.sinh().inverse());case"Sec":return Ke(t,o=>1/Math.cos(o),o=>n._BIGNUM_ONE.div(o.cos()),o=>o.cos().inverse());case"Sech":return Ke(t,o=>1/Math.cosh(o),o=>n._BIGNUM_ONE.div(o.cosh()),o=>o.cosh().inverse());case"Sin":return Ke(t,Math.sin,o=>o.toSignificantDigits(n.precision+4).sin().toSignificantDigits(n.precision),o=>o.sin());case"Sinh":return Ke(t,Math.sinh,o=>o.sinh(),o=>o.sinh());case"Tan":return Ke(t,Math.tan,o=>o.toSignificantDigits(n.precision+4).tan().toSignificantDigits(n.precision),o=>o.tan());case"Tanh":return Ke(t,Math.tanh,o=>o.tanh(),o=>o.tanh())}}function Ke(n,e,i,t){return ie(Yu(n),e,i,t)}function Yu(n){if(!n)return n;let e=n.engine,i=e.angularUnit;if(i==="rad")return n;let t=b(n.N());return t===null?n:i==="deg"?e.number(t*(Math.PI/180)):i==="grad"?e.number(t*(Math.PI/200)):i==="turn"?e.number(t*(2*Math.PI)):n}function en(n){if(!n)return n;let e=n.engine,i=e.angularUnit;if(i==="rad")return n;let t=b(n.N());return t===null?n:i==="deg"?e.number(t*(180/Math.PI)):i==="grad"?e.number(t*(200/Math.PI)):i==="turn"?e.number(t/(2*Math.PI)):n}function hs(n){if(n==="all")return hs(["core","control-structures","logic","collections","relop","numeric","arithmetic","trigonometry","algebra","calculus","polynomials","combinatorics","linear-algebra","statistics","dimensions","units","physics","other"]);typeof n=="string"&&(n=[n]);let e=[];for(let i of n){let t=Xd[i];if(!t)throw Error(`Unknown library category ${i}`);Array.isArray(t)?e.push(...t):e.push(t)}return Object.freeze(e)}var Xd={algebra:[],arithmetic:[...ku,...Pu],calculus:wu,collections:[ju,Mu,ja()],combinatorics:[],"control-structures":Ou,core:Eu,dimensions:[],domains:[],"linear-algebra":Fu,logic:Gu,numeric:[],other:[],relop:Zu,polynomials:zu,physics:{Mu0:{description:"Vaccum permeability",constant:!0,wikidata:"Q1515261",domain:"RealNumbers",value:125663706212e-17}},statistics:Hu,trigonometry:Ju,units:[]};function Kd(n){if(n=n.normalize(),Ne(n))return n;throw new Error(`Invalid definition name "${n}": ${an(n)}`)}function gs(n,e){var t;if(!n.context)throw Error("No context available");(t=n.context).ids??(t.ids=new Map);let i=n.context.ids;n.strict;for(let[r,o]of Object.entries(e))if(r=Kd(r),xs(o)){let s=Br(n,r,o);if(i.has(r))throw new Error(`Duplicate function definition ${r}:
|
|
48
48
|
${JSON.stringify(i.get(r))}
|
|
49
|
-
${JSON.stringify(o)}`);i.set(r,s)}else if(Ur(o)){let s=new le(n,r,o);if(n.strict&&o.wikidata){for(let[a,l]of i)if(l.wikidata===o.wikidata)throw new Error(`Duplicate entries with wikidata "${o.wikidata}": "${r}" and "${l.name}"`)}if(i.has(r))throw new Error(`Duplicate symbol definition "${r}"`);i.set(r,s)}else{let s=new le(n,r,{value:n.box(o)});i.set(r,s)}}function Ur(n){return n==null||typeof n!="object"||n instanceof P?!1:"domain"in n||"value"in n||"constant"in n}function cs(n){return n==null||typeof n!="object"||n instanceof P?!1:"signature"in n||"complexity"in n}var Zu=he(me(),1);function Ni(n){return Number.isInteger(n)&&n!==0?Math.floor(Math.log2(Math.abs(n))/Math.log2(10))+(n>0?1:2):2}function ms(n){if(n.symbol)return 1;let e=n.numericValue;if(e!==null){if(n.isZero)return 1;if(n.isInteger)return Ni(b(n));if(V(e))return $(e)?Ni(e[0])+Ni(e[1])+1:Ni(Number(e[0]))+Ni(Number(e[1]))+1;if(e instanceof Zu.Complex)return Ni(e.re)+Ni(e.im)+1;if(n.isNumber)return 2}let i=n.head,t=2;return typeof i=="string"?["Add","Divide"].includes(i)?t=3:["Subtract","Negate"].includes(i)?t=4:["Square","Sqrt","Multiply","Root"].includes(i)?t=5:["Power"].includes(i)?t=6:["Ln","Exp","Log"].includes(i)?t=7:["Arcsin","Arccos","Arctan","Arcsec"," Arccsc","Arsinh","Arcosh","Artanh","Arcsech","Arcsch","Cosh","Cos","Csc","Csch","Sec","Sech","Sin","Sinh","Tan","Tanh"].includes(i)?t=9:t=10:t=ms(i),t+(n.ops?.reduce((r,o)=>r+ms(o),0)??0)}var ps=ms;var Ji=class n{constructor(e){e?e instanceof n?this._items=new Map(e._items):this._items=new Map(e):this._items=new Map}has(e){for(let i of this._items.keys())if(i.isSame(e))return!0;return!1}get(e){for(let[i,t]of this._items)if(i.isSame(e))return t}clear(){this._items.clear()}set(e,i){for(let t of this._items.keys())if(t.isSame(e)){this._items.set(t,i);return}this._items.set(e,i)}delete(e){this._items.delete(e)}[Symbol.iterator](){return this._items.entries()}entries(){return this._items.entries()}};var kt="\x1B[0m";var Hu="\x1B[33m";var Ju="\x1B[36;1m",hs="\x1B[101;97m";var Wu=[{name:"To",latexTrigger:["\\to"],kind:"infix",precedence:270},{latexTrigger:["\\rightarrow"],kind:"infix",precedence:270,parse:"To"}];function Jd(n){if(x(n)!=="Multiply")return[[],[]];let e=[],i=[],t=T(n)??[];for(let r of t)if(x(r)==="Power"){let o=p(r,1),s=p(r,2);if(x(s)==="Negate"){let a=p(s,1);o&&a&&i.push(["Power",o,a])}else{let a=M(s)??NaN;a===-1?o&&i.push(o):a<0?o&&i.push(["Power",o,-a]):e.push(r)}}else if(x(r)==="Rational"&&j(r)===2||x(r)==="Divide"){let o=p(r,1),s=p(r,2);M(o)!==1&&e.push(o),M(s)!==1&&i.push(s)}else{let o=Ai(r);o!==null?(o[0]!==1&&e.push(o[0]),i.push(o[1])):e.push(r)}return[e,i]}function Wd(n){let e=n.parseOptionalGroup(),i=n.parseGroup()??n.parseToken();return i===null||oe(i)?e!==null?["Root",fi,F(e)]:["Sqrt",fi]:e!==null?["Root",i,e]:["Sqrt",i]}function At(n,e,i,t){return i===null?"\\sqrt{}":(t=t??2,e==="solidus"?n.wrapShort(i)+"^{1\\/"+n.serialize(t)+"}":e==="quotient"?n.wrapShort(i)+"^{\\frac{1}{"+n.serialize(t)+"}}":M(t)===2?"\\sqrt{"+n.serialize(i)+"}":"\\sqrt["+n.serialize(t)+"]{"+n.serialize(i)+"}")}function Yd(n,e){n.level-=1;let i=x(e),t="",r=p(e,1);if(i==="Negate")t="-"+n.wrap(r,276);else if(i==="Subtract"){t=n.wrap(r,275);let o=p(e,2);if(o!==null){let s=n.wrap(o,275);s[0]==="-"?t+="+"+s.slice(1):s[0]==="+"?t+="-"+s.slice(1):t=t+"-"+s}}else if(i==="Add"){if(n.options.prettify&&j(e)===2&&n.options.invisiblePlus!=="+"){let[s,a]=[p(e,1),p(e,2)],[l,u]=[s,a],f=M(l),d=Ai(u);if((f===null||d===null)&&([l,u]=[a,s],f=M(l),d=Ai(u)),f!==null&&d!==null&&isFinite(f)&&Number.isInteger(f)&&f>=0&&f<=1e3&&isFinite(d[0])&&isFinite(d[1])&&d[0]>0&&d[0]<=100&&d[1]<=100)return t=v([n.serialize(l),n.options.invisiblePlus,n.serialize(u)]),n.level+=1,t}if(n.options.prettify&&j(e)===2){let[s,a]=wt(r),[l,u]=wt(p(e,2));if(a<0&&u>0)return t=n.wrap(l,275)+"-"+n.wrap(s,275),n.level+=1,t}t=n.serialize(r);let o=j(e)+1;for(let s=2;s<o;s++)if(r=p(e,s),n.options.prettify){let[a,l]=wt(r),u=n.wrap(a,275);l>0?u.startsWith("+")||u.startsWith("-")?t+=u:t+="+"+u:u.startsWith("+")?t+="-"+u.slice(1):u.startsWith("-")?t+="+"+u.slice(1):t+="-"+u}else{let a=n.wrap(r,275);a[0]==="-"||a[0]==="+"?t+=a:t+="+"+a}}return n.level+=1,t}function nl(n,e){if(e===null)return"";n.level-=1;let i="";if(n.options.prettify===!0){let[l,u]=Jd(e);u.length>0&&(u.length===1&&u[0]===1?l.length===0?i="1":l.length===1?i=n.serialize(l[0]):i=nl(n,["Multiply",...l]):i=n.serialize(["Divide",l.length===1?l[0]:["Multiply",...l],u.length===1?u[0]:["Multiply",...u]]))}if(i)return n.level+=1,i;let t=!1,r=null,o=j(e)+1,s=T(e)??[];n.options.prettify===!0&&s.length===2&&pn(s[1])&&!pn(s[0])&&(s=[s[1],s[0]]);let a=!1;for(let l=1;l<o;l++){if(r=s[l-1],r===null)continue;let u;if(pn(r)){u=n.serialize(r),u==="-1"&&!i?(i="",t=!t):(u[0]==="-"&&(u=u.slice(1),t=!t),i=i?v([i,n.options.multiply,u]):u),a=!0;continue}if(x(r)==="Power"){let f=Ai(p(r,2));if(f){let[d,c]=f;if(d===1&&c!==null){i+=At(n,n.rootStyle(r,n.level),p(r,1),c),a=!1;continue}}}if(x(r)==="Power"&&!isNaN(M(p(r,1))??NaN)){u=n.serialize(r),i=i?v([i,n.options.multiply,u]):u,a=!0;continue}if(x(r)==="Negate"&&(r=p(r,1),t=!t),u=n.wrap(r,390),!i)i=u;else{let f=x(r);a&&(f==="Divide"||f==="Rational")?i=v([i,n.options.multiply,u]):n.options.invisibleMultiply?i=v([i,n.options.invisibleMultiply,u]):i=v([i,u])}a=!1}return n.level+=1,t?"-"+i:i}function Qd(n){let e=n.parseGroup(),i=null;if(e===null?(e=n.parseToken(),i=n.parseToken()):i=n.parseGroup(),e=F(e),i=F(i),x(e)==="PartialDerivative"&&(x(i)==="PartialDerivative"||x(i)==="Multiply"&&x(p(i,1))==="PartialDerivative")){let t=p(e,3)??null,r=p(e,1);r===null&&(r=F(n.parseExpression()));let o=[];if(x(i)==="Multiply"){for(let s of T(i)??[])if(x(s)==="PartialDerivative"){let a=p(s,2);a&&o.push(a)}}else{let s=p(i,2);s&&o.push(s)}return o.length>1&&(o=["List",...o]),["PartialDerivative",r,...o,t===null?1:t]}return["Divide",e,i]}function Qu(n,e){if(e===null)return"";let i=F(p(e,1)),t=F(p(e,2)),r=n.options.prettify?n.fractionStyle(e,n.level):"quotient";if(r==="inline-solidus"||r==="nice-solidus"){let l=n.wrapShort(i),u=n.wrapShort(t);return r==="inline-solidus"?`${l}\\/${u}`:`{}^{${l}}\\!\\!/\\!{}_{${u}}`}else{if(r==="reciprocal")return M(i)===1?n.wrap(t)+"^{-1}":n.wrap(i)+n.wrap(t)+"^{-1}";if(r==="factor")return M(t)===1?n.wrap(i):"\\frac{1}{"+n.serialize(t)+"}"+n.wrapString(n.serialize(i),n.groupStyle(e,1))}let o="\\frac";r==="block-quotient"?o="\\dfrac":r==="inline-quotient"&&(o="\\tfrac");let s=n.serialize(i),a=n.serialize(t);return`${o}{${s}}{${a}}`}function gs(n,e){if(!e)return"";let i=x(e),t=F(p(e,1));if(i==="Sqrt")return At(n,n.rootStyle(e,n.level-1),t,2);let r=F(p(e,2));if(i==="Root")return At(n,n.rootStyle(e,n.level-1),t,r);if(n.options.prettify){let o=M(r)??1;if(o===-1)return n.serialize(["Divide","1",t]);if(o<0)return n.serialize(["Divide","1",["Power",t,-o]]);if(x(r)==="Divide"||x(r)==="Rational"){if(M(p(r,1))===1){let s=n.rootStyle(e,n.level);return At(n,s,t,p(r,2))}if(M(p(r,2))===2)return`${n.serialize(["Sqrt",t])}${Oi("^",n.serialize(p(r,1)))}`}else if(x(r)==="Power"&&M(p(r,2))===-1){let s=n.rootStyle(e,n.level);return At(n,s,t,p(r,1))}}return n.wrapShort(t)+Oi("^",n.serialize(r))}var il=[{name:"CatalanConstant",identifierTrigger:"G"},{name:"GoldenRatio",latexTrigger:"\\varphi"},{name:"EulerGamma",latexTrigger:"\\gamma"},{name:"Degrees",latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(n,e)=>["Degrees",e],serialize:(n,e)=>v([n.serialize(p(e,1)),"\\degree"])},{latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(n,e)=>["Degrees",e]},{latexTrigger:["^","<{>","\\circ","<}>"],kind:"postfix",parse:(n,e)=>["Degrees",e]},{latexTrigger:["^","\\circ"],kind:"postfix",parse:(n,e)=>["Degrees",e]},{latexTrigger:["\xB0"],kind:"postfix",precedence:880,parse:(n,e)=>["Degrees",e]},{latexTrigger:["\\ang"],parse:n=>{let e=n.parseGroup();return e===null?["Degrees"]:["Degrees",e]}},{latexTrigger:["\\infty"],parse:"PositiveInfinity"},{name:"PositiveInfinity",serialize:n=>n.options.positiveInfinity},{name:"NegativeInfinity",serialize:n=>n.options.negativeInfinity},{name:"ComplexInfinity",latexTrigger:["\\tilde","\\infty"],serialize:"\\tilde\\infty"},{latexTrigger:["\\tilde","<{>","\\infty","<}>"],parse:"ComplexInfinity"},{name:"Pi",kind:"symbol",latexTrigger:["\\pi"]},{latexTrigger:["\u03C0"],parse:"Pi"},{name:"ExponentialE",latexTrigger:["\\exponentialE"],parse:"ExponentialE",serialize:"\\exponentialE"},{latexTrigger:"\\operatorname{e}",parse:"ExponentialE"},{latexTrigger:"\\mathrm{e}",parse:"ExponentialE"},{kind:"function",identifierTrigger:"exp",parse:"Exp"},{latexTrigger:"\\exp",parse:"Exp"},{name:"ImaginaryUnit",latexTrigger:["\\imaginaryI"]},{latexTrigger:"\\operatorname{i}",parse:"ImaginaryUnit"},{latexTrigger:"\\mathrm{i}",parse:"ImaginaryUnit"},{name:"Abs",kind:"matchfix",openTrigger:"|",closeTrigger:"|",parse:(n,e)=>oe(e)?null:["Abs",e]},{kind:"matchfix",openTrigger:["\\vert"],closeTrigger:["\\vert"],parse:(n,e)=>oe(e)?null:["Abs",e]},{identifierTrigger:"abs",kind:"function",parse:"Abs"},{name:"Add",latexTrigger:["+"],kind:"infix",associativity:"any",precedence:275,parse:(n,e,i)=>{if(i&&275<i.minPrec)return null;let t=n.parseExpression({...i,minPrec:275});return t===null?null:wi("Add",e,t)},serialize:Yd},{kind:"prefix",latexTrigger:["+"],precedence:275,parse:(n,e)=>e&&275<e.minPrec?null:n.parseExpression({...e,minPrec:400})},{name:"Ceil",kind:"matchfix",openTrigger:"\\lceil",closeTrigger:"\\rceil",parse:(n,e)=>oe(e)?null:["Ceil",e]},{kind:"matchfix",openTrigger:["\u2308"],closeTrigger:["\u2309"],parse:(n,e)=>oe(e)?null:["Ceil",e]},{identifierTrigger:"ceil",kind:"function",parse:"Ceil"},{name:"Chop",identifierTrigger:"chop",kind:"function",parse:"Chop"},{name:"Complex",precedence:274,serialize:(n,e)=>{let i=n.serialize(p(e,1)),t=M(p(e,2));if(t===0)return i;let r=t===1?"\\imaginaryI":t===-1?"-\\imaginaryI":v([n.serialize(p(e,2)),"\\imaginaryI"]);return M(p(e,1))===0?r:t!==null&&t<0?v([i,r]):v([i,"+",r])}},{name:"Divide",latexTrigger:"\\frac",precedence:600,parse:Qd,serialize:Qu},{kind:"infix",latexTrigger:"\\over",associativity:"none",precedence:600,parse:"Divide"},{latexTrigger:["\\/"],kind:"infix",associativity:"left",precedence:600,parse:"Divide"},{latexTrigger:["/"],kind:"infix",associativity:"left",precedence:600,parse:"Divide"},{latexTrigger:["\\div"],kind:"infix",associativity:"left",precedence:600,parse:"Divide"},{name:"Exp",serialize:(n,e)=>{let i=p(e,1);return C(i)||M(i)!==null?v(["\\exponentialE^{",n.serialize(i),"}"]):v(["\\exp",n.wrap(F(i))])}},{name:"Factorial",latexTrigger:["!"],kind:"postfix",precedence:810},{name:"Factorial2",latexTrigger:["!","!"],kind:"postfix",precedence:810},{name:"Floor",kind:"matchfix",openTrigger:"\\lfloor",closeTrigger:"\\rfloor",parse:(n,e)=>oe(e)?null:["Floor",e]},{kind:"matchfix",openTrigger:["\u230A"],closeTrigger:["\u230B"],parse:(n,e)=>oe(e)?null:["Floor",e]},{identifierTrigger:"floor",kind:"function",parse:"Floor"},{latexTrigger:["\\Gamma"],parse:"Gamma"},{name:"GCD",identifierTrigger:"gcd",kind:"function"},{identifierTrigger:"GCD",kind:"function",parse:"GCD"},{name:"Half",serialize:"\\frac12"},{name:"Lg",latexTrigger:["\\lg"],serialize:(n,e)=>"\\log_{10}"+n.wrapArguments(e),parse:n=>{let e=n.parseArguments("implicit");return e===null?"Lg":["Log",...e,10]}},{name:"Lb",latexTrigger:"\\lb",parse:n=>{let e=n.parseArguments("implicit");return e===null?"Log":["Log",e[0],2]}},{name:"Ln",latexTrigger:["\\ln"],parse:n=>el("Ln",n),serialize:(n,e)=>"\\ln"+n.wrapArguments(e)},{name:"Log",latexTrigger:["\\log"],parse:n=>el("Log",n),serialize:(n,e)=>{let i=rn(e);return i?v(["\\log_{",n.serialize(i),"}",n.wrap(De(e))]):"\\log"+n.wrapArguments(e)}},{name:"LCM",identifierTrigger:"lcm",kind:"function"},{identifierTrigger:"LCM",kind:"function",parse:"LCM"},{identifierTrigger:"max",kind:"function",parse:"Max"},{identifierTrigger:"min",kind:"function",parse:"Min"},{name:"Max",latexTrigger:"\\max",kind:"function"},{name:"Min",latexTrigger:"\\min",kind:"function"},{name:"Supremum",latexTrigger:"\\sup",kind:"function"},{name:"Infimum",latexTrigger:"\\inf",kind:"function"},{name:"Limit",latexTrigger:"\\lim",kind:"expression",parse:n=>{if(!n.match("_"))return null;let e=n.parseGroup();if(x(e)!=="To")return null;let i=n.parseArguments("implicit");return i?["Limit",["Function",i[0],p(e,1)],p(e,2)]:null},serialize:(n,e)=>{let i=p(e,1),t=p(i,2),r=p(e,2);return v(["\\lim_{",n.serialize(t),"\\to",n.serialize(r),"}",n.serialize(p(i,1))])}},{name:"MinusPlus",latexTrigger:["\\mp"],kind:"infix",associativity:"any",precedence:270},{name:"Multiply",latexTrigger:["\\times"],kind:"infix",associativity:"any",precedence:390,serialize:nl},{latexTrigger:["\\cdot"],kind:"infix",associativity:"any",precedence:390,parse:(n,e,i)=>{let t=n.parseExpression({...i,minPrec:392});return t===null?["Multiply",e,fi]:wi("Multiply",e,t)}},{latexTrigger:["*"],kind:"infix",associativity:"any",precedence:390,parse:(n,e,i)=>{let t=n.parseExpression({...i,minPrec:392});return t===null?["Multiply",e,fi]:wi("Multiply",e,t)}},{name:"Mod",latexTrigger:"\\bmod",kind:"infix",precedence:600,serialize:(n,e)=>{if(j(e)!==2)return"";let i=n.serialize(p(e,1)),t=n.serialize(p(e,2));return v([i,"\\bmod",t])}},{latexTrigger:"\\mod",kind:"infix",precedence:600,parse:"Mod"},{latexTrigger:"\\pmod",kind:"prefix",precedence:245,parse:n=>{let e=n.parseGroup()??n.parseToken();return["Mod",F(e)]}},{name:"Congruent",serialize:(n,e)=>{let i=n.serialize(p(e,1)),t=n.serialize(p(e,2));if(p(e,3)===null)return v([i,"\\equiv",t]);let r=n.serialize(p(e,3));return v([i,"\\equiv",t,"\\pmod{",r,"}"])}},{name:"Negate",latexTrigger:["-"],kind:"prefix",precedence:277,parse:(n,e)=>{if(/\d/.test(n.peek))return null;let i=n.index;if(n.parseNumber()!==null)return n.index=i,null;let t=n.parseExpression({...e,minPrec:278});return["Negate",F(t)]}},{kind:"matchfix",openTrigger:"||",closeTrigger:"||",parse:(n,e)=>oe(e)?null:["Norm",e]},{name:"Norm",kind:"matchfix",openTrigger:["\\left","\\Vert"],closeTrigger:["\\right","\\Vert"],parse:(n,e)=>oe(e)?null:["Norm",e]},{name:"PlusMinus",latexTrigger:["\\pm"],kind:"infix",associativity:"any",precedence:270,serialize:(n,e)=>{let i=p(e,1);if(i===null)return"\\pm";if(j(e)===1)return v(["\\pm",n.serialize(i)]);let t=p(e,2);return v([n.serialize(i),"\\pm",n.serialize(t)])}},{latexTrigger:["\\pm"],kind:"prefix",precedence:270,parse:(n,e)=>{let i=n.parseExpression({...e,minPrec:400});return["PlusMinus",F(i)]}},{latexTrigger:["\\plusmn"],kind:"infix",associativity:"any",precedence:270,parse:(n,e,i)=>{let t=n.parseExpression({...i,minPrec:400});return["PlusMinus",e,F(t)]}},{latexTrigger:["\\plusmn"],kind:"prefix",precedence:270,parse:(n,e)=>{let i=n.parseExpression({...e,minPrec:400});return["PlusMinus",F(i)]}},{name:"Power",latexTrigger:["^"],kind:"infix",serialize:gs},{latexTrigger:"\\prod",precedence:390,name:"Product",parse:Xu("Product",390),serialize:Ku("\\prod")},{name:"Rational",precedence:600,serialize:(n,e)=>e&&j(e)===1?"\\operatorname{Rational}"+n.wrapArguments(e):Qu(n,e)},{name:"Root",serialize:gs},{name:"Round",identifierTrigger:"round",kind:"function"},{name:"Square",precedence:720,serialize:(n,e)=>n.wrapShort(p(e,1))+"^2"},{latexTrigger:["\\sum"],precedence:275,name:"Sum",parse:Xu("Sum",275),serialize:Ku("\\sum")},{name:"Sign",identifierTrigger:"sgn",kind:"function"},{name:"Sqrt",latexTrigger:["\\sqrt"],parse:Wd,serialize:gs},{name:"Subtract",latexTrigger:["-"],kind:"infix",associativity:"left",precedence:277,parse:(n,e,i)=>{n.index-=1;let t=n.parseExpression({...i,minPrec:278});return["Add",e,F(t)]},serialize:(n,e)=>{let i=n.wrap(p(e,1),277),t=n.wrap(p(e,2),278);return v([i,"-",t])}}];function Xu(n,e){return i=>{i.skipSpace();let t=null,r=null;for(;!(r&&t)&&(i.peek==="_"||i.peek==="^");)i.match("_")?r=i.parseGroup()??i.parseToken():i.match("^")&&(t=i.parseGroup()??i.parseToken()),i.skipSpace();(r==="Nothing"||oe(r))&&(r=null),(t==="Nothing"||oe(t))&&(t=null);let o=null,s=null;x(r)==="Equal"?(o=p(r,1),s=p(r,2)):o=r,i.pushSymbolTable(),o&&i.addSymbol(C(o),"symbol");let a=i.parseExpression({minPrec:e+1});return i.popSymbolTable(),a?t?[n,a,["Tuple",o??"Nothing",s??1,t]]:s?[n,a,["Tuple",o??"Nothing",s]]:o?[n,a,["Tuple",o]]:[n,a]:[n]}}function Ku(n){return(e,i)=>{if(!p(i,1))return n;let t=p(i,2),r=x(t);r!=="Tuple"&&r!=="Triple"&&r!=="Pair"&&r!=="Single"&&(t=null);let o=p(t,1);o&&x(o)==="Hold"&&(o=p(o,1));let s=p(i,1);if(!t)return p(i,2)?v([n,"_{",e.serialize(p(i,2)),"}",e.serialize(s)]):v([n,e.serialize(s)]);let a=p(t,2),l=[];o&&C(o)!=="Nothing"&&a?l=[e.serialize(o),"=",e.serialize(a)]:o&&C(o)!=="Nothing"?l=[e.serialize(o)]:a&&(l=[e.serialize(a)]),l.length>0&&(l=["_{",...l,"}"]);let u=[];return p(t,3)&&(u=["^{",e.serialize(p(t,3)),"}"]),v([n,...u,...l,e.serialize(s)])}}function el(n,e){let i=null;e.match("_")&&(i=e.parseGroup()??e.nextToken());let t=e.parseArguments("implicit");return t===null&&i===null?[n]:t===null?[n,i]:i===null?[n,...t]:i===10?["Log",t[0]]:i===2?["Lb",...t]:["Log",t[0],i]}function wt(n){let e=1,i=n;do if(n=i,In(n)==="Negate")e*=-1,i=p(n,1);else if(In(n)==="Multiply"){let[t,r]=wt(p(n,1));r<0&&(e*=-1,t===1?i=["Multiply",...T(n).slice(1)]:i=["Multiply",t,...T(n).slice(1)])}else if(In(n)==="Divide"||In(n)==="Rational"){let[t,r]=wt(p(n,1));r<0&&(e*=-1,i=[In(n),t,p(n,2)])}else{let t=M(n);t!==null&&t<0&&(e*=-1,i=-t)}while(i!==n);return[n,e]}var rl=[{name:"Matrix",serialize:(n,e)=>{let i=T(p(e,1))??[];return tl(n,i,z(p(e,2)),z(p(e,3)))}},{name:"Vector",serialize:(n,e)=>{let i=T(e)??[];return tl(n,i.map(t=>["List",t]),z(p(e,2)),z(p(e,3)))}},{kind:"environment",identifierTrigger:"pmatrix",parse:n=>{let e=Gn(n),[i,t]=Un(n);return e?[i,t,{str:"()"},{str:e}]:[i,t]}},{kind:"environment",identifierTrigger:"bmatrix",parse:n=>{let e=Gn(n),[i,t]=Un(n);return e?[i,t,{str:"[]"},{str:e}]:[i,t,{str:"[]"}]}},{kind:"environment",identifierTrigger:"Bmatrix",parse:n=>{let e=Gn(n),[i,t]=Un(n);return e?[i,t,{str:"{}"},{str:e}]:[i,t,{str:"{}"}]}},{kind:"environment",identifierTrigger:"vmatrix",parse:n=>{let e=Gn(n),[i,t]=Un(n);return e?[i,t,{str:"||"},{str:e}]:[i,t,{str:"||"}]}},{kind:"environment",identifierTrigger:"Vmatrix",parse:n=>{let e=Gn(n),[i,t]=Un(n);return e?[i,t,{str:"\u2016\u2016"},{str:e}]:[i,t,{str:"\u2016\u2016"}]}},{kind:"environment",identifierTrigger:"smallmatrix",parse:n=>{let e=Gn(n),[i,t]=Un(n);return e?[i,t,{str:"()"},{str:e}]:[i,t]}},{kind:"environment",identifierTrigger:"array",parse:n=>{let e=Gn(n,!1),[i,t]=Un(n);return e?[i,t,{str:".."},{str:e}]:[i,t,{str:".."}]}},{kind:"environment",identifierTrigger:"matrix",parse:n=>{let e=Gn(n),[i,t]=Un(n);return e?[i,t,{str:".."},{str:e}]:[i,t,{str:".."}]}},{kind:"environment",identifierTrigger:"matrix*",parse:n=>{let e=Gn(n),[i,t]=Un(n);return e?[i,t,{str:".."},{str:e}]:[i,t,{str:".."}]}},{name:"ConjugateTranspose",kind:"postfix",latexTrigger:["^","\\star"]},{kind:"postfix",latexTrigger:["^","\\H"],parse:"ConjugateTranspose"},{kind:"postfix",latexTrigger:["^","\\dagger"],parse:(n,e)=>["ConjugateTranspose",e]},{kind:"postfix",latexTrigger:["^","\\ast"],parse:(n,e)=>["ConjugateTranspose",e]},{kind:"postfix",latexTrigger:["^","\\top"],parse:(n,e)=>["Transpose",e]},{kind:"postfix",latexTrigger:["^","\\intercal"],parse:(n,e)=>["Transpose",e]},{name:"Transpose",kind:"postfix",latexTrigger:["^","T"]},{name:"PseudoInverse",kind:"postfix",latexTrigger:["^","+"]},{name:"Trace",kind:"function",identifierTrigger:"tr"},{name:"Determinant",kind:"function",identifierTrigger:"det"}];function Un(n){let e=n.parseTabular();return e?["Matrix",["List",...e.map(i=>["List",...i])]]:["",null]}function Gn(n,e=!0){let i=n.parseStringGroup(e)?.trim();if(!i)return"";let t="";for(let r of i)r==="c"&&(t+="="),r==="l"&&(t+="<"),r==="r"&&(t+=">"),r==="|"&&(t+="|"),r===":"&&(t+=":");return t}function tl(n,e,i,t){i??(i="()");let[r,o]=["",""];typeof i=="string"&&i.length===2&&([r,o]=i);let s="";if(t)for(let f of t)f==="<"?s+="l":f===">"?s+="r":f==="="?s+="c":f==="|"?s+="|":f===":"&&(s+=":");let a=[];for(let f of e??[]){let d=[];for(let c of T(f)??[])d.push(n.serialize(c));a.push(d.join(" & "))}let l=a.join(`\\\\
|
|
50
|
-
`),u=s.length>0?`[${s}]`:"";return r==="("&&o===")"?v(["\\begin{pmatrix}",u,l,"\\end{pmatrix}"]):r==="["&&o==="]"?v(["\\begin{bmatrix}",u,l,"\\end{bmatrix}"]):r==="{"&&o==="}"?v(["\\begin{Bmatrix}",u,l,"\\end{Bmatrix}"]):r==="|"&&o==="|"?v(["\\begin{vmatrix}",u,l,"\\end{vmatrix}"]):r==="\u2016"&&o==="\u2016"?v(["\\begin{Vmatrix}",u,l,"\\end{Vmatrix}"]):r==="{"&&o==="."?v(["\\begin{dcases}",u,l,"\\end{dcases}"]):r==="."&&o==="}"?v(["\\begin{rcases}",u,l,"\\end{rcases}"]):s||r!=="."||o!=="."?v(["\\left",Fi[r]??r,"\\begin{array}",`{${s}}`,l,"\\end{array}","\\right",Fi[o]??o]):v(["\\begin{matrix}",l,"\\end{matrix}"])}var ol=[{name:"True",kind:"symbol",latexTrigger:["\\top"]},{kind:"symbol",latexTrigger:"\\mathrm{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\operatorname{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\mathsf{T}",parse:"True"},{name:"False",kind:"symbol",latexTrigger:["\\bot"]},{kind:"symbol",latexTrigger:"\\operatorname{False}",parse:"False"},{kind:"symbol",latexTrigger:"\\mathsf{F}",parse:"False"},{name:"And",kind:"infix",latexTrigger:["\\land"],precedence:317},{kind:"infix",latexTrigger:["\\wedge"],parse:"And",precedence:317},{kind:"infix",latexTrigger:"\\&",parse:"And",precedence:317},{kind:"infix",latexTrigger:"\\operatorname{and}",parse:"And",precedence:317},{name:"Or",kind:"infix",latexTrigger:["\\lor"],precedence:310},{kind:"infix",latexTrigger:["\\vee"],parse:"Or",precedence:310},{kind:"infix",latexTrigger:"\\parallel",parse:"Or",precedence:310},{kind:"infix",latexTrigger:"\\operatorname{or}",parse:"Or",precedence:310},{name:"Xor",kind:"infix",latexTrigger:["\\veebar"],precedence:315},{name:"Not",kind:"prefix",latexTrigger:["\\lnot"],precedence:880},{kind:"prefix",latexTrigger:["\\neg"],parse:"Not",precedence:880},{name:"Nand",kind:"infix",latexTrigger:["\\barwedge"],precedence:315},{name:"Nor",kind:"infix",latexTrigger:["\u22BD"],precedence:315},{kind:"function",identifierTrigger:"and",parse:"And"},{kind:"function",identifierTrigger:"or",parse:"Or"},{kind:"function",identifierTrigger:"not",parse:"Not"},{name:"Implies",kind:"infix",precedence:220,associativity:"right",latexTrigger:["\\implies"],serialize:"\\implies"},{latexTrigger:["\\Rightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{name:"Equivalent",latexTrigger:["\\iff"],kind:"infix",associativity:"right",precedence:219},{latexTrigger:["\\Leftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\equiv"],kind:"infix",associativity:"right",precedence:219,parse:(n,e,i)=>{let t=n.parseExpression({...i,minPrec:219}),r=n.index,o=n.parseExpression({...i,minPrec:219});return o&&x(o)==="Mod"?["Congruent",e,t,F(p(o,1))]:(n.index=r,["Equivalent",e,F(t)])}},{name:"Proves",kind:"infix",latexTrigger:["\\vdash"],precedence:220,associativity:"right",serialize:"\\vdash"},{name:"Entails",kind:"infix",latexTrigger:["\\vDash"],precedence:220,associativity:"right",serialize:"\\vDash"},{name:"Satisfies",kind:"infix",latexTrigger:["\\models"],precedence:220,associativity:"right",serialize:"\\models"},{name:"ForAll",kind:"prefix",latexTrigger:["\\forall"],precedence:200,serialize:"\\forall",parse:xs("ForAll")},{name:"Exists",kind:"prefix",latexTrigger:["\\exists"],precedence:200,serialize:"\\exists",parse:xs("Exists")},{name:"ExistsUnique",kind:"prefix",latexTrigger:["\\exists","!"],precedence:200,serialize:"\\exists!",parse:xs("ExistsUnique")}];function xs(n){return(e,i)=>{let t=e.index,r=e.parseSymbol(i);if(r){if(e.skipSpace(),e.match(",")||e.match("\\mid")||e.match(".")){let s=e.parseExpression(i);return[n,r,F(s)]}if(e.match("(")){let s=e.parseExpression(i);return e.match(")")?[n,r,F(s)]:(e.index=t,null)}}e.index=t;let o=e.parseExpression(i);if(!o)return e.index=t,null;if(e.skipSpace(),e.matchAny([",","\\mid",":","\\colon"])){let s=e.parseExpression(i);return[n,o,F(s)]}if(e.match("(")){let s=e.parseExpression(i);return e.match(")")?[n,o,F(s)]:(e.index=t,null)}return e.index=t,null}}function $e(n){return e=>{let i=e.parseGroup();return i===null?[n]:[n,i]}}var sl=[{name:"Overscript",latexTrigger:["\\overset"],kind:"infix",precedence:700},{name:"Underscript",latexTrigger:["\\underset"],kind:"infix",precedence:700},{name:"Increment",latexTrigger:["+","+"],kind:"postfix",precedence:880,parse:(n,e)=>C(e)===null?null:["Decrement",e]},{name:"Decrement",latexTrigger:["-","-"],kind:"postfix",precedence:880,parse:(n,e)=>C(e)===null?null:["Decrement",e]},{name:"PreIncrement",latexTrigger:["+","+"],kind:"prefix",precedence:880,parse:(n,e)=>{if(e&&275<e.minPrec)return null;let i=n.parseExpression(e);return C(i)===null?null:["PreIncrement",i]}},{name:"PreDecrement",latexTrigger:["-","-"],kind:"prefix",precedence:880,parse:(n,e)=>{if(e&&275<e.minPrec)return null;let i=n.parseExpression(e);return C(i)===null?null:["PreDecrement",i]}},{name:"Ring",latexTrigger:["\\circ"],kind:"infix",precedence:265},{name:"StringJoin",latexTrigger:["\\lt","\\gt"],kind:"infix",precedence:780},{name:"Starstar",latexTrigger:["\\star","\\star"],kind:"infix",precedence:780},{name:"PartialDerivative",latexTrigger:["\\partial"],kind:"prefix",parse:n=>{let e=!1,i="Nothing",t="Nothing";for(;!e;)n.skipSpace(),n.match("_")?t=n.parseGroup()??n.parseToken():n.match("^")?i=n.parseGroup()??n.parseToken():e=!0;let r=Wt(t);if(r&&(t=["List",...r]),t===null||i===null)return null;let o=n.parseGroup()??"Nothing";if(o!=="Nothing"&&!oe(o)){let s=n.parseArguments()??["Nothing"];o=[o,...s]}return["PartialDerivative",o,t,i]},serialize:(n,e)=>{let i="\\partial",t=p(e,1),r=p(e,2),o=p(e,3);return r!==null&&r!=="Nothing"&&(x(r)==="List"?i+="_{"+n.serialize(["Sequence",...T(r)??[]])+"}":i+="_{"+n.serialize(r)+"}"),o!==null&&o!=="Nothing"&&(i+="^{"+n.serialize(o)+"}"),t!==null&&t!=="Nothing"&&(i+=n.serialize(t)),i},precedence:740},{name:"OverBar",latexTrigger:["\\overline"],parse:$e("OverBar")},{name:"UnderBar",latexTrigger:["\\underline"],parse:$e("UnderBar")},{name:"OverVector",latexTrigger:["\\vec"],parse:$e("OverVector")},{name:"OverTilde",latexTrigger:["\\tilde"],parse:$e("OverTilde")},{name:"OverHat",latexTrigger:["\\hat"],parse:$e("OverHat")},{name:"OverRightArrow",latexTrigger:["\\overrightarrow"],parse:$e("OverRightArrow")},{name:"OverLeftArrow",latexTrigger:["\\overleftarrow"],parse:$e("OverLeftArrow")},{name:"OverRightDoubleArrow",latexTrigger:["\\Overrightarrow"],parse:$e("OverRightDoubleArrow")},{name:"OverLeftHarpoon",latexTrigger:["\\overleftharpoon"],parse:$e("OverLeftHarpoon")},{name:"OverRightHarpoon",latexTrigger:["\\overrightharpoon"],parse:$e("OverRightHarpoon")},{name:"OverLeftRightArrow",latexTrigger:["\\overleftrightarrow"],parse:$e("OverLeftRightArrow")},{name:"OverBrace",latexTrigger:["\\overbrace"],parse:$e("OverBrace")},{name:"OverLineSegment",latexTrigger:["\\overlinesegment"],parse:$e("OverLineSegment")},{name:"OverGroup",latexTrigger:["\\overgroup"],parse:$e("OverGroup")},{latexTrigger:["\\displaystyle"],parse:()=>["Sequence"]},{latexTrigger:["\\textstyle"],parse:()=>["Sequence"]},{latexTrigger:["\\scriptstyle"],parse:()=>["Sequence"]},{latexTrigger:["\\scriptscriptstyle"],parse:()=>["Sequence"]},{latexTrigger:["\\tiny"],parse:()=>["Sequence"]},{latexTrigger:["\\scriptsize"],parse:()=>["Sequence"]},{latexTrigger:["\\footnotesize"],parse:()=>["Sequence"]},{latexTrigger:["\\small"],parse:()=>["Sequence"]},{latexTrigger:["\\normalsize"],parse:()=>["Sequence"]},{latexTrigger:["\\large"],parse:()=>["Sequence"]},{latexTrigger:["\\Large"],parse:()=>["Sequence"]},{latexTrigger:["\\LARGE"],parse:()=>["Sequence"]},{latexTrigger:["\\huge"],parse:()=>["Sequence"]},{latexTrigger:["\\Huge"],parse:()=>["Sequence"]},{name:"Style",serialize:(n,e)=>{let i=n.serialize(p(e,1)),t=ci(p(e,2));if(t===null)return i;z(t.display)==="block"?i=v(["{\\displaystyle",i,"}"]):z(t.display)==="inline"?i=v(["{\\textstyle",i,"}"]):z(t.display)==="script"?i=v(["{\\scriptstyle",i,"}"]):z(t.display)==="scriptscript"&&(i=v(["{\\scriptscriptstyle",i,"}"]));let r=M(t.size);return r!==null&&r>=1&&r<=10&&(i=v(["{",{1:"\\tiny",2:"\\scriptsize",3:"\\footnotesize",4:"\\small",5:"\\normalsize",6:"\\large",7:"\\Large",8:"\\LARGE",9:"\\huge",10:"\\Huge"}[r],i,"}"])),i}},{latexTrigger:["\\!"],parse:()=>["HorizontalSpacing",-3]},{latexTrigger:["\\ "],parse:()=>["HorizontalSpacing",6]},{latexTrigger:["\\:"],parse:()=>["HorizontalSpacing",4]},{latexTrigger:["\\enskip"],parse:()=>["HorizontalSpacing",9]},{latexTrigger:["\\quad"],parse:()=>["HorizontalSpacing",18]},{latexTrigger:["\\qquad"],parse:()=>["HorizontalSpacing",36]},{latexTrigger:["\\,"],parse:()=>["HorizontalSpacing",3]},{latexTrigger:["\\;"],parse:()=>["HorizontalSpacing",5]},{latexTrigger:["\\enspace"],parse:()=>["HorizontalSpacing",9]},{name:"HorizontalSpacing",serialize:(n,e)=>{if(p(e,2))return n.serialize(p(e,1));let i=M(p(e,1));return i===null?"":{"-3":"\\!",6:"\\ ",3:"\\,",4:"\\:",5:"\\;",9:"\\enspace",18:"\\quad",36:"\\qquad"}[i]??""}}];function H(n){return(e,i)=>{let t={"\\arcsin":"Arcsin","\\arccos":"Arccos","\\arctan":"Arctan","\\arctg":"Arctan","\\arcctg":"Arctan","\\arcsec":"Arcsec","\\arccsc":" Arccsc","\\arsinh":"Arsinh","\\arcosh":"Arcosh","\\artanh":"Artanh","\\arcsech":"Arcsech","\\arccsch":"Arcsch","\\ch":"Cosh","\\cos":"Cos","\\cosec":"Csc","\\cosh":"Csch","\\cot":"Cot","\\cotg":"Cot","\\coth":"Coth","\\csc":"Csc","\\csch":"Csch","\\ctg":"Cot","\\cth":"Coth","\\sec":"Sec","\\sech":"Sech","\\sin":"Sin","\\sinh":"Sinh","\\sh":"Sinh","\\tan":"Tan","\\tanh":"Tanh","\\tg":"Tan","\\th":"Tanh"},r=t[n??""]??n??"";if(e.atTerminator(i))return r;let o=r;do{let u=e.parsePostfixOperator(o,i);if(u===null)break;o=u}while(!0);let s=null;e.match("^")&&(s=e.parseGroup()??e.parseToken());let a=e.parseArguments("implicit",{minPrec:390,condition:u=>t[u.peek]||(i?.condition?.(u)??!1)}),l=a===null?o:typeof o=="string"?[o,...a]:["Apply",o,...a];return s===null?l:["Power",l,s]}}var al=[{name:"Arcsin",latexTrigger:["\\arcsin"],parse:H("Arcsin")},{name:"Arccos",latexTrigger:["\\arccos"],parse:H("Arccos")},{name:"Arctan",latexTrigger:["\\arctan"],parse:H("Arctan")},{latexTrigger:["\\arctg"],parse:H("Arctan")},{name:"Arccot",latexTrigger:["\\arcctg"],parse:H("Arccot")},{name:"Arcsec",latexTrigger:"arcsec",parse:H("Arcsec")},{name:"Arccsc",latexTrigger:["\\arccsc"],parse:H("Arccsc")},{name:"Arsinh",latexTrigger:["\\arsinh"],parse:H("Arsinh")},{name:"Arcosh",latexTrigger:["\\arcosh"],parse:H("Arcosh")},{name:"Artanh",latexTrigger:["\\artanh"],parse:H("Artanh")},{name:"Arsech",latexTrigger:["\\arsech"],parse:H("Arsech")},{name:"Arcsch",latexTrigger:["\\arcsch"],parse:H("Arcsch")},{latexTrigger:["\\ch"],parse:H("Cosh")},{name:"Cosec",latexTrigger:["\\cosec"],parse:H("Cosec")},{name:"Cosh",latexTrigger:["\\cosh"],parse:H("Cosh")},{name:"Cot",latexTrigger:["\\cot"],parse:H("Cot")},{latexTrigger:["\\cotg"],parse:H("Cot")},{name:"Coth",latexTrigger:["\\coth"],parse:H("Coth")},{name:"Csc",latexTrigger:["\\csc"],parse:H("Csc")},{name:"Csch",latexTrigger:["\\csch"],parse:H("Csch")},{latexTrigger:["\\ctg"],parse:H("Cot")},{latexTrigger:["\\cth"],parse:H("Cotanh")},{name:"Sec",latexTrigger:["\\sec"],parse:H("Sec")},{name:"Sech",latexTrigger:["\\sech"],parse:H("Sech")},{name:"Sinh",latexTrigger:["\\sinh"],parse:H("Sinh")},{latexTrigger:["\\sh"],parse:H("Sinh")},{name:"Tan",latexTrigger:["\\tan"],parse:H("Tan")},{latexTrigger:["\\tg"],parse:H("Tan")},{name:"Tanh",latexTrigger:["\\tanh"],parse:H("Tanh")},{latexTrigger:["\\th"],parse:H("Tanh")},{name:"Cos",latexTrigger:["\\cos"],parse:H("Cos")},{name:"Sin",latexTrigger:["\\sin"],parse:H("Sin")}];var ll=[{name:"AlgebraicNumbers",latexTrigger:"\\bar\\Q"},{name:"ComplexNumbers",latexTrigger:["\\C"]},{latexTrigger:"\\mathbb{C}",parse:"ComplexNumbers"},{name:"ImaginaryNumbers",latexTrigger:["\\imaginaryI","\\R"]},{name:"ExtendedComplexNumbers",latexTrigger:["\\bar","\\C"]},{name:"EmptySet",latexTrigger:["\\emptyset"]},{latexTrigger:["\\varnothing"],parse:"EmptySet"},{name:"Integers",latexTrigger:["\\Z"]},{latexTrigger:"\\mathbb{Z}",parse:"Integers"},{name:"RationalNumbers",latexTrigger:["\\Q"]},{name:"RealNumbers",latexTrigger:["\\R"]},{latexTrigger:"\\mathbb{R}",parse:"RealNumbers"},{name:"ExtendedRealNumbers",latexTrigger:["\\bar","\\R"]},{name:"TranscendentalNumberss",latexTrigger:"\\R-\\bar\\Q"},{latexTrigger:"\\R\\backslash\\bar\\Q",parse:"TranscendentalNumbers"},{name:"NegativeNumbers",latexTrigger:"\\R^-"},{latexTrigger:"\\R^{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R_-",parse:"NegativeNumbers"},{latexTrigger:"\\R_{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt}",parse:"NegativeNumbers"},{name:"PositiveNumbers",latexTrigger:"\\R^+"},{latexTrigger:"\\R^{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R_+",parse:"PositiveNumbers"},{latexTrigger:"\\R_{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt}",parse:"PositiveNumbers"},{name:"NonPositiveNumbers",latexTrigger:"\\R^{0-}"},{latexTrigger:"\\R^{-0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{\\leq}",parse:"NonPositiveNumbers"},{name:"NegativeIntegers",latexTrigger:"\\Z^-"},{latexTrigger:"\\Z^-",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z_-",parse:"NegativeIntegers"},{latexTrigger:"\\Z_{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{\\lt}",parse:"NegativeIntegers"},{name:"PositiveIntegers",latexTrigger:"\\Z^+"},{latexTrigger:"\\Z^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_+",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\N^+",parse:"PositiveIntegers"},{latexTrigger:"\\N^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\N^*",parse:"PositiveIntegers"},{latexTrigger:"\\N^{*}",parse:"PositiveIntegers"},{latexTrigger:"\\N^\\star",parse:"PositiveIntegers"},{latexTrigger:"\\N^{\\star}",parse:"PositiveIntegers"},{latexTrigger:"\\N_1",parse:"PositiveIntegers"},{latexTrigger:"\\N_{1}",parse:"PositiveIntegers"},{name:"NonNegativeIntegers",latexTrigger:["\\N"]},{latexTrigger:"\\Z^{+0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{0+}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_0",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_{0}",parse:"NonNegativeIntegers"},{latexTrigger:["^","\\complement"],kind:"postfix",parse:(n,e)=>["Complement",e]},{name:"Complement",latexTrigger:["^","<{>","\\complement","<}>"],kind:"postfix"},{name:"Intersection",latexTrigger:["\\cap"],kind:"infix",precedence:350},{name:"Interval",serialize:ul},{name:"Multiple",serialize:ul},{name:"Union",latexTrigger:["\\cup"],kind:"infix",precedence:350},{name:"Set",kind:"matchfix",openTrigger:"{",closeTrigger:"}",parse:(n,e)=>e===null||oe(e)?"EmptySet":(x(e)=="Delimiter"&&z(p(e,2))===","&&(e=p(e,1)),x(e)!=="Sequence"?["Set",e]:["Set",...T(e)??[]]),serialize:(n,e)=>v(["\\lbrace",(T(e)??[]).map(i=>n.serialize(i)).join(", "),"\\rbrace"])},{name:"SetMinus",latexTrigger:["\\setminus"],kind:"infix",precedence:650},{name:"SymmetricDifference",latexTrigger:["\\triangle"],kind:"infix",precedence:245},{latexTrigger:["\\ni"],kind:"infix",associativity:"none",precedence:160,parse:(n,e,i)=>{let t=n.parseExpression(i);return t===null?null:["Element",t,e]}},{name:"Element",latexTrigger:["\\in"],kind:"infix",precedence:240},{name:"NotElement",latexTrigger:["\\notin"],kind:"infix",precedence:240},{name:"NotSubset",latexTrigger:["\\nsubset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSuperset",latexTrigger:["\\nsupset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSubsetNotEqual",latexTrigger:["\\nsubseteq"],kind:"infix",associativity:"none",precedence:240},{name:"NotSupersetNotEqual",latexTrigger:["\\nsupseteq"],kind:"infix",associativity:"none",precedence:240},{name:"SquareSubset",latexTrigger:["\\sqsubset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSubsetEqual",latexTrigger:["\\sqsubseteq"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSuperset",latexTrigger:["\\sqsupset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSupersetEqual",latexTrigger:["\\sqsupseteq"],kind:"infix",associativity:"none",precedence:265},{name:"Subset",latexTrigger:["\\subset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\subsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{latexTrigger:["\\varsubsetneqq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{name:"SubsetEqual",latexTrigger:["\\subseteq"],kind:"infix",associativity:"none",precedence:240},{name:"Superset",latexTrigger:["\\supset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\supsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{latexTrigger:["\\varsupsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{name:"SupersetEqual",latexTrigger:["\\supseteq"],kind:"infix",associativity:"none",precedence:240}];function ul(n,e){if(e===null)return"";let i=x(e);if(i===null)return"";if(i==="Set")return j(e)===0?"\\emptyset":j(e)===2&&x(p(e,2))==="Condition"?v(["\\left\\lbrace",n.serialize(p(e,1)),"\\middle\\mid",n.serialize(p(e,2)),"\\right\\rbrace"]):v(["\\left\\lbrace",...(T(e)??[]).map(r=>n.serialize(r)+" ,"),"\\right\\rbrace"]);if(i==="Range")return v(["\\mathopen\\lbrack",n.serialize(p(e,1)),", ",n.serialize(p(e,2)),"\\mathclose\\rbrack"]);if(i==="Interval"){let r=p(e,1),o=p(e,2),s=!1,a=!1;return x(r)==="Open"&&(r=p(r,1),s=!0),x(o)==="Open"&&(o=p(o,1),a=!0),v([`\\mathopen${s?"\\rbrack":"\\lbrack"}`,n.serialize(r),", ",n.serialize(o),`\\mathclose${a?"\\lbrack":"\\rbrack"}`])}let t=n.numericSetStyle(e,n.level);return""}function Wi(n,e=1){return i=>{i.skipSpace();let t=null,r=null;for(;!(r!==null&&t!==null)&&(i.peek==="_"||i.peek==="^");)i.match("_")?r=i.parseGroup()??i.parseToken():i.match("^")&&(t=i.parseGroup()??i.parseToken()),i.skipSpace();(r==="Nothing"||oe(r))&&(r=null),(t==="Nothing"||oe(t))&&(t=null);let[o,s]=Kd(i,e);if(o&&!s){if(x(o)==="Add"||x(o)==="Subtract"){let a=[],l=[];for(let u of T(o)??[])if(s)l.push(u);else{let f;[f,s]=Sn(u),a.push(f??u)}if(s!==null&&l.length>0)return["Add",fl(i,n,["Add",...a],[{index:s,sub:r,sup:t}]),...l]}else if(x(o)==="Divide"){let a;[a,s]=Sn(p(o,1)),a!==null&&s!==null&&(o=["Divide",a,p(o,2)])}}return fl(i,n,o,[{index:s,sub:r,sup:t}])}}function fl(n,e,i,t){if(i&&t.length===0)return[e,i];i??(i="Nothing"),n.pushSymbolTable();for(let r of t)r.index&&n.addSymbol(r.index,"symbol");return n.popSymbolTable(),[e,i,...t.map(r=>Xd(r))]}function Xd(n){let e=n.index?["Hold",n.index]:"Nothing";return n.sup!==null?["Tuple",e,n.sub??"Nothing",n.sup]:n.sub!==null?["Tuple",e,n.sub]:e}function Kd(n,e=1){let i=n.index,t=!1,r=n.parseExpression({minPrec:266,condition:()=>((n.matchAll(["\\mathrm","<{>","d","<}>"])||n.matchAll(["\\operatorname","<{>","d","<}>"]))&&(t=!0),t)});if(t||(n.index=i,r=n.parseExpression({minPrec:266,condition:()=>(n.match("d")&&(t=!0),t)})),r&&!t)return Sn(r);let o=ec(n,e);return[r,o[0]??null]}function ec(n,e=1){n.skipSpace();let i=[],t=C(n.parseSymbol());return t===null?[]:(i.push(t),i)}function Sn(n){let e=x(n),i=p(n,1);if(!i)return[n,null];if(e==="Sequence"&&j(n)===1)return Sn(i);if(e==="Multiply"||e==="InvisibleOperator"){let t=T(n);if(t&&t.length>1){let r=C(t[t.length-2]);if(r==="d"||r==="d_upright")return t.length===2?[null,C(t[1])]:t.length===3?[t[0],C(t[2])]:[["Multiply",...t.slice(0,-2)],C(t[t.length-1])];let[o,s]=Sn(t[t.length-1]);if(o)return[["Multiply",...t.slice(0,-1),o],s]}}else if(e==="Delimiter"){let[t,r]=Sn(i);if(r)return t?[["Delimiter",["Sequence",t],...T(n).slice(1)],r]:[null,r]}else if(e==="Add"){let t=T(n);if(t&&t.length>0){let[r,o]=Sn(t[t.length-1]);if(o){if(r)return[["Add",...t.slice(0,-1),r],o];if(t.length>2)return[["Add",...t.slice(0,-1)],o];if(t.length>2)return[t[0],o]}}}else if(e==="Negate"){let[t,r]=Sn(i);if(r)return[t?["Negate",t]:null,r]}else if(e==="Divide"){let[t,r]=Sn(i);if(r)return[["Divide",t??1,p(n,2)],r]}else{let t=T(n);if(t?.length===1){let[r,o]=Sn(t[0]);if(o)return[[x(n),r],o]}}return[n,null]}function dl(n){return(e,i)=>{if(!p(i,1))return n;let t=p(i,2),r=x(t),o=null;r==="Tuple"||r==="Triple"||r==="Pair"||r==="Single"?o=p(t,1):r==="Hold"?o=p(t,1):(o=p(t,1)??"x",t=null),x(o)==="Hold"&&(o=p(o,1));let s=o!==null?C(o):null,a=p(i,1);if(x(a)==="Lambda"&&p(a,1)&&(a=nt(p(a,1),{_:s??"x",_1:s??"x"})),!t)return!s||s==="Nothing"?v([n,"\\!",e.serialize(a)]):v([n,"\\!",e.serialize(a),"\\,\\operatorname{d}",e.serialize(s)]);let l=p(t,2)?C(p(t,2)):null,u=t&&l!=="Nothing"?e.serialize(p(t,2)):"";u.length>0&&(u=`_{${u}}`);let f="",d=p(t,3)?C(p(t,3)):null;return p(t,3)&&d!=="Nothing"&&(f=`^{${e.serialize(p(t,3))}}`),v([n,f,u,"\\!",e.serialize(a),...s&&C(s)!=="Nothing"?["\\,\\operatorname{d}",e.serialize(s)]:[]])}}var cl=[{kind:"expression",name:"Integrate",latexTrigger:["\\int"],parse:Wi("Integrate"),serialize:dl("\\int")},{kind:"expression",latexTrigger:["\\iint"],parse:Wi("Integrate",2)},{kind:"expression",latexTrigger:["\\iiint"],parse:Wi("Integrate",3)},{kind:"expression",name:"CircularIntegrate",latexTrigger:["\\oint"],parse:Wi("CircularIntegrate"),serialize:dl("\\oint")},{kind:"expression",latexTrigger:["\\oiint"],parse:Wi("CircularIntegrate",2)},{kind:"expression",latexTrigger:["\\oiiint"],parse:Wi("CircularIntegrate",3)}];var ml=[{name:"Real",kind:"function",latexTrigger:["\\Re"]},{name:"Imaginary",kind:"function",latexTrigger:["\\Im"]},{name:"Argument",kind:"function",latexTrigger:["\\arg"]},{name:"Conjugate",latexTrigger:["^","\\star"],kind:"postfix"}];var pl=[{name:"Mean",kind:"function",identifierTrigger:"mean"},{name:"Median",kind:"function",identifierTrigger:"median"},{name:"StandarDeviation",kind:"function",identifierTrigger:"stddev"},{latexTrigger:["\\bar"],kind:"expression",parse:(n,e)=>{let i=n.parseGroup()??n.parseToken();return!i||!C(i)?null:["Mean",i]}}];var hl={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","|":"\\vert","||":"\\Vert","\\lceil":"\\lceil","\\lfloor":"\\lfloor","\\rceil":"\\rceil","\\rfloor":"\\rfloor"};function gl(n,e,i){let t=nc(e,i);if(t===null)return;let r="kind"in e?e.kind:"expression",o=t.latexTrigger;typeof o=="string"&&(n.lookahead=Math.max(n.lookahead,Kt(o)));let s=ge(o??"");if(s.length===2&&/[_^]/.test(s[0])&&s[1]!=="<{>"&&r!=="function"&&r!=="environment"&&r!=="matchfix"){let a=e.parse;!a&&e.name&&(r==="postfix"||r==="prefix"?a=(l,u)=>[e.name,u]:a=e.name),gl(n,{...e,kind:r,name:void 0,serialize:void 0,parse:a,latexTrigger:[s[0],"<{>",s[1],"<}>"]},i)}n.defs.push(t),t.name!==void 0&&(n.ids.has(t.name)&&i({severity:"warning",message:["invalid-dictionary-entry",t.name,"Duplicate definition. The name (MathJSON identifier) must be unique, but triggers can be shared by multiple definitions."]}),n.ids.set(t.name,t))}function bs(n,e){let i={lookahead:1,ids:new Map,defs:[]};for(let t of n)gl(i,t,e);return i}function nc(n,e){if(!rc(n,e))return null;let i={kind:"kind"in n?n.kind:"expression"},t=null;"latexTrigger"in n&&(typeof n.latexTrigger=="string"?t=ge(n.latexTrigger):t=n.latexTrigger);let r=null;"identifierTrigger"in n&&(r=n.identifierTrigger),t!==null&&(i.latexTrigger=xn(t)),r!==null&&(i.identifierTrigger=r),n.name&&(i.name=n.name,i.serialize=ic(n,t,r)),i.kind==="matchfix"&<(n)&&(i.openTrigger=n.openTrigger,i.closeTrigger=n.closeTrigger),i.kind==="symbol"&&ma(n)&&(i.precedence=n.precedence??1e4),i.kind==="expression"&&ca(n)&&(i.precedence=n.precedence??1e4),(i.kind==="prefix"||i.kind==="postfix")&&(er(n)||bo(n))&&(t&&(t[0]==="^"||t[0]==="_")?(i.precedence=720,n.precedence):i.precedence=n.precedence??1e4),i.kind==="infix"&&xo(n)&&(!t||t[0]!=="^"&&t[0]!=="_"||!n.associativity||n.associativity,i.associativity=n.associativity??"none",i.precedence=n.precedence??1e4);let o=tc(n,t,r);return o&&(i.parse=o),i}function ic(n,e,i){if(typeof n.serialize=="function")return n.serialize;let t=n.kind??"expression";if(t==="environment"){let s=n.identifierTrigger??n.name??"unknown";return(a,l)=>v([`\\begin{${s}}`,a.serialize(p(l,1)),`\\end{${s}}`])}if(lt(n)){let s=typeof n.openTrigger=="string"?hl[n.openTrigger]:xn(n.openTrigger),a=typeof n.closeTrigger=="string"?hl[n.closeTrigger]:xn(n.closeTrigger);return(l,u)=>v([s,l.serialize(p(u,1)),a])}let r=n.serialize;if(r===void 0&&e&&(r=xn(e)),r)return t==="postfix"?(s,a)=>v([s.serialize(p(a,1)),r]):t==="prefix"?(s,a)=>v([r,s.serialize(p(a,1))]):t==="infix"?(s,a)=>{let l=j(a);if(l===0)return"";let u=n.precedence??1e4;return v(T(a).flatMap((f,d)=>{let c=s.wrap(f,u+1);return d<l-1?[c,r]:[c]}))}:(s,a)=>x(a)?v([r,s.wrapArguments(a)]):r;let o=i??n.name??"unknown";return t==="postfix"?(s,a)=>v([s.serialize(p(a,1)),s.serializeSymbol(o)]):t==="prefix"?(s,a)=>v([s.serializeSymbol(o),s.serialize(p(a,1))]):t==="infix"?(s,a)=>v([s.serialize(p(a,1)),s.serializeSymbol(o),s.serialize(p(a,2))]):(s,a)=>x(a)?v([s.serializeSymbol(o),s.wrapArguments(a)]):s.serializeSymbol(o)}function tc(n,e,i){if("parse"in n&&typeof n.parse=="function")return n.parse;let t="kind"in n?n.kind:"expression";if(t==="environment"){let r=n.parse??n.name??i;if(r)return(o,s)=>{let a=o.parseTabular();return a===null?null:[r,["List",a.map(l=>["List",...l])]]}}if(t==="function"){let r=n.parse??n.name??i;if(r)return(o,s)=>{let a=o.parseArguments("enclosure",s);return a===null?r:[r,...a]}}if(t==="symbol"){let r=n.parse??n.name??i;if(r)return(o,s)=>r}if(t==="prefix"){let r=n.parse??n.name??i;if(r){let o=n.precedence??1e4;return(s,a)=>{let l=s.parseExpression({...a??[],minPrec:o});return l===null?null:[r,l]}}}if(t==="postfix"){let r=n.parse??n.name;if(r)return(o,s)=>s===null?null:[r,s]}if(t==="infix"){if(/[_^]/.test(e?.[0]??"")){let o=n.name??n.parse;return(s,a)=>[o,F(p(a,1)),F(p(a,2))]}let r=n.parse??n.name??i;if(r){let o=n.precedence??1e4,s=n.associativity??"none";return s==="none"?(a,l,u)=>{if(l===null)return null;let f=F(a.parseExpression({...u,minPrec:o}));return[r,l,f]}:s==="left"?(a,l,u)=>{if(l===null)return null;let f=F(a.parseExpression({...u,minPrec:o+1}));return typeof r!="string"?[r,l,f]:[r,l,f]}:s==="right"?(a,l,u)=>{if(l===null)return null;let f=F(a.parseExpression({...u,minPrec:o}));return typeof r!="string"?[r,l,f]:[r,l,f]}:(a,l,u)=>{if(l===null)return null;let f=F(a.parseExpression({...u,minPrec:o}));return typeof r!="string"?[r,l,f]:wi(r,l,f)}}}if(t==="matchfix"){let r=n.parse??n.name;if(r)return(o,s)=>s===null||oe(s)?null:[r,s]}if(t==="expression"){let r=n.parse??n.name??i;if(r)return()=>r}if("parse"in n){let r=n.parse;return()=>r}}function rc(n,e){let i=n.name??n.latexTrigger??n.identifierTrigger??n.openTrigger;if(!i)try{i=JSON.stringify(n)}catch{i="???"}if(Array.isArray(i)&&(i=xn(i)),"trigger"in n&&e({severity:"warning",message:["invalid-dictionary-entry",i,"The 'trigger' property is deprecated. Use 'latexTrigger' or 'identifierTrigger' instead"]}),"kind"in n&&!["expression","symbol","function","infix","postfix","prefix","matchfix","environment"].includes(n.kind)&&e({severity:"warning",message:["invalid-dictionary-entry",i,"The 'kind' property must be one of 'expression', 'symbol', 'function', 'infix', 'postfix', 'prefix', 'matchfix', 'environment'"]}),n.serialize!==void 0&&!n.name)return e({severity:"warning",message:["invalid-dictionary-entry",i,"A 'name' property must be provided if a 'serialize' handler is provided"]}),!1;if("identifierTrigger"in n&&(!("kind"in n)||n.kind!=="environment")&&(typeof n.identifierTrigger!="string"||!Ee(n.identifierTrigger))&&e({severity:"warning",message:["invalid-dictionary-entry",i,"The 'identifierTrigger' property must be a valid identifier"]}),"name"in n&&(typeof n.name!="string"?n.name!==void 0&&e({severity:"warning",message:["invalid-dictionary-entry",i,"The 'name' property must be a string"]}):Ee(n.name)||e({severity:"warning",message:["invalid-dictionary-entry",n.name,"The 'name' property must be a valid identifier"]})),lt(n)){if("latexTrigger"in n||"identifierTrigger"in er)return e({severity:"warning",message:["invalid-dictionary-entry",i,"'matchfix' operators use a 'openTrigger' and 'closeTrigger' instead of a 'latexTrigger' or 'identifierTrigger'. "]}),!1;if(!n.openTrigger||!n.closeTrigger)return e({severity:"warning",message:["invalid-dictionary-entry",i,"Expected `openTrigger` and a `closeTrigger` for matchfix operator"]}),!1;if(typeof n.openTrigger!=typeof n.closeTrigger)return e({severity:"warning",message:["invalid-dictionary-entry",i,"Expected `openTrigger` and `closeTrigger` to both be strings or array of LatexToken"]}),!1}if(xo(n)||bo(n)||er(n)){if(Array.isArray(n.latexTrigger)&&(n.latexTrigger[0]==="_"||n.latexTrigger[0]==="^")||typeof n.latexTrigger=="string"&&(n.latexTrigger.startsWith("^")||n.latexTrigger.startsWith("_"))){if(n.precedence!==void 0||n.associativity!==void 0)return e({severity:"warning",message:["invalid-dictionary-entry",i,'Unexpected "precedence" or "associativity" for superscript/subscript operator']}),!1}else if(n.precedence===void 0)return e({severity:"warning",message:["invalid-dictionary-entry",i,`Expected a "precedence" for ${n.kind} operator`]}),!1}else if(n.associativity!==void 0)return e({severity:"warning",message:["invalid-dictionary-entry",i,'Unexpected "associativity" operator']}),!1;return!lt(n)&&!pa(n)&&!n.latexTrigger&&!n.identifierTrigger&&!n.name?(e({severity:"warning",message:["invalid-dictionary-entry",i,"Expected a 'name', a 'latexTrigger' or a 'identifierTrigger'"]}),!1):n.parse===void 0&&n.name===void 0?(e({severity:"warning",message:["invalid-dictionary-entry",i,"Expected a 'parse' or 'name'"]}),!1):!0}var Ct={algebra:Wu,arithmetic:il,calculus:cl,complex:ml,core:Oa,"linear-algebra":rl,logic:ol,relop:nr,other:sl,physics:[{name:"mu0",kind:"symbol",latexTrigger:"\\mu_0"}],sets:ll,statistics:pl,symbols:Ma,trigonometry:al};function xl(n="all"){if(n==="all"){let e=[];for(let i of Object.keys(Ct))Ct[i]&&e.push(...Ct[i]);return e}return Ct[n]?Object.freeze([...Ct[n]]):[]}var oc={"\\mathord":"","\\mathop":"","\\mathbin":"","\\mathrel":"","\\mathopen":"","\\mathclose":"","\\mathpunct":"","\\mathinner":"","\\operatorname":"","\\mathrm":"_upright","\\mathit":"_italic","\\mathbf":"_bold","\\mathscr":"_script","\\mathcal":"_calligraphic","\\mathfrak":"_fraktur","\\mathsf":"_sansserif","\\mathtt":"_monospace","\\mathbb":"_doublestruck"},sc={"\\mathring":"_ring","\\hat":"_hat","\\tilde":"_tilde","\\vec":"_vec","\\overline":"_bar","\\underline":"_underbar","\\dot":"_dot","\\ddot":"_ddot","\\dddot":"_dddot","\\ddddot":"_ddddot","\\acute":"_acute","\\grave":"_grave","\\breve":"_breve","\\check":"_check"};function bl(n,e){if(n.atEnd)return null;let i=n.peek,t={"\\_":"_","\\#":"hash"}[i];if(!t&&!e.toplevel&&(t={"+":"plus","-":"minus","\\plusmn":"pm","\\pm":"pm","\\ast":"ast","\\dag":"dag","\\ddag":"ddag","\\bot":"bottom","\\top":"top","\\bullet":"bullet","\\cir":"circle","\\diamond":"diamond","\\times":"times","\\square":"square","\\star":"star"}[i]),t)return n.nextToken(),t;let r=ln.findIndex(o=>o[1]===i);return r>=0?(n.nextToken(),ln[r][0]):n.matchChar()??n.nextToken()}function Gr(n){let e=ys(n),i=n.index,t=sc[n.peek]??null;if(t){if(n.nextToken(),!n.match("<{>"))return n.index=i,null;let s=Gr(n);if(s===null||!n.match("<}>"))return n.index=i,null;e=`${s}${t}`}if(e===null){for(e="";!n.atEnd;){let s=n.peek;if(s==="<}>"||s==="_"||s==="^")break;let a=bl(n,{toplevel:!1});if(a===null)return n.index=i,null;e+=a}for(;!n.atEnd&&/\d/.test(n.peek);)e+=n.nextToken()}for(;!n.atEnd;)if(n.match("\\degree"))e+="_deg";else if(n.matchAll(["^","\\prime"]))e+="_prime";else if(n.matchAll(["^","<{>","\\prime","<}>"]))e+="_prime";else if(n.matchAll(["^","<{>","\\doubleprime","<}>"]))e+="_dprime";else if(n.matchAll(["^","<{>","\\prime","\\prime","<}>"]))e+="_dprime";else break;let r=[],o=[];for(;!n.atEnd;)if(n.match("_")){let s=n.match("<{>"),a=Gr(n);if(s&&!n.match("<}>")||a===null)return n.index=i,null;o.push(a)}else if(n.match("^")){let s=n.match("<{>"),a=Gr(n);if(s&&!n.match("<}>")||a===null)return n.index=i,null;r.push(a)}else break;return r.length>0&&(e+="__"+r.join("")),o.length>0&&(e+="_"+o.join("")),e}function ys(n){let e=n.index,i=oc[n.peek]??null;if(i===null)return null;if(n.nextToken(),n.match("<{>")){let t="",r={0:"zero",1:"one",2:"two",3:"three",4:"four",5:"five",6:"six",7:"seven",8:"eight",9:"nine"}[n.peek]??"";return r&&(t=r,n.nextToken()),t+=Gr(n),t===null||!n.match("<}>")?(n.index=e,null):i==="_upright"&&t.length>1?t:t+i}return n.index=e,null}function Es(n){let e=n.index,i=ys(n);return i===null||Ee(i)?(n.index=e,null):n.error(["invalid-identifier",{str:on(i)}],e)}function Mt(n){if(/^[a-zA-Z]$/.test(n.peek)||/^\p{XIDS}$/u.test(n.peek))return n.nextToken();let e=n.index,i=ys(n);if(!i){for(i="";!n.atEnd&&ki.test(i+n.peek);)i+=n.nextToken();i||(i=null)}return i??(i=bl(n,{toplevel:!0})),i&&(i=i.normalize(),Ee(i))?i:(n.index=e,null)}var ac={"(":["\\lparen","("],")":["\\rparen",")"],"[":["\\lbrack","\\[","["],"]":["\\rbrack","\\]","]"],"<":["<","\\langle"],">":[">","\\rangle"],"{":["\\{","\\lbrace"],"}":["\\}","\\rbrace"],":":[":","\\colon"],"|":["|","\\|","\\lvert","\\rvert"],"||":["||","\\Vert","\\lVert","\\rVert"],"\\lfloor":["\\lfloor"],"\\rfloor":["\\rfloor"],"\\lceil":["\\lceil"],"\\rceil":["\\rceil"],"\\ulcorner":["\\ulcorner"],"\\urcorner":["\\urcorner"],"\\llcorner":["\\llcorner"],"\\lrcorner":["\\lrcorner"],"\\lgroup":["\\lgroup"],"\\rgroup":["\\rgroup"],"\\lmoustache":["\\lmoustache"],"\\rmoustache":["\\rmoustache"]},vs={"\\left":"\\right","\\bigl":"\\bigr","\\Bigl":"\\Bigr","\\biggl":"\\biggr","\\Biggl":"\\Biggr","\\big":"\\big","\\Big":"\\Big","\\bigg":"\\bigg","\\Bigg":"\\Bigg"},Ns={"(":")","[":"]","|":"|","\\{":"\\}","\\[":"\\]","\\lbrace":"\\rbrace","\\lparen":"\\rparen","\\langle":"\\rangle","\\lfloor":"\\rfloor","\\lceil":"\\rceil","\\vert":"\\vert","\\lvert":"\\rvert","\\Vert":"\\Vert","\\lVert":"\\rVert","\\lbrack":"\\rbrack","\\ulcorner":"\\urcorner","\\llcorner":"\\lrcorner","\\lgroup":"\\rgroup","\\lmoustache":"\\rmoustache"},_s=class{constructor(e,i,t){this._index=0;this.symbolTable={parent:null,ids:{}};this._boundaries=[];this._lastPeek="";this._peekCounter=0;this._tokens=e,this.options=t,this._dictionary=i,this._positiveInfinityTokens=ge(this.options.positiveInfinity),this._negativeInfinityTokens=ge(this.options.negativeInfinity),this._notANumberTokens=ge(this.options.notANumber),this._decimalSeparatorTokens=ge(this.options.decimalSeparator),this._wholeDigitGroupSeparatorTokens=[],this._fractionalDigitGroupSeparatorTokens=[],this.options.digitGroupSeparator&&(typeof this.options.digitGroupSeparator=="string"?(this._wholeDigitGroupSeparatorTokens=ge(this.options.digitGroupSeparator),this._fractionalDigitGroupSeparatorTokens=this._wholeDigitGroupSeparatorTokens):Array.isArray(this.options.digitGroupSeparator)&&(this._wholeDigitGroupSeparatorTokens=ge(this.options.digitGroupSeparator[0]),this._fractionalDigitGroupSeparatorTokens=ge(this.options.digitGroupSeparator[1]))),this._exponentProductTokens=ge(this.options.exponentProduct),this._beginExponentMarkerTokens=ge(this.options.beginExponentMarker),this._endExponentMarkerTokens=ge(this.options.endExponentMarker),this._truncationMarkerTokens=ge(this.options.truncationMarker),this._imaginaryUnitTokens=ge(this.options.imaginaryUnit)}pushSymbolTable(){this.symbolTable={parent:this.symbolTable,ids:{}}}popSymbolTable(){this.symbolTable=this.symbolTable.parent??this.symbolTable}addSymbol(e,i){if(e in this.symbolTable.ids&&this.symbolTable.ids[e]!==i)throw new Error(`Symbol ${e} already declared as a different type`);this.symbolTable.ids[e]=i}get index(){return this._index}set index(e){this._index=e,this._lastPeek="",this._peekCounter=0}getIdentifierType(e){let i=this.symbolTable;for(;i;){if(e in i.ids)return i.ids[e];i=i.parent}return this.options.getIdentifierType?this.options.getIdentifierType(e):"unknown"}get peek(){let e=this._tokens[this.index];if(e===this._lastPeek?this._peekCounter+=1:this._peekCounter=0,this._peekCounter>=1024){let i=`Infinite loop detected while parsing "${this.latex(0)}" at "${this._lastPeek}" (index ${this.index})`;throw console.error(i),new Error(i)}return this._lastPeek=e,e}nextToken(){return this._tokens[this.index++]}get atEnd(){return this.index>=this._tokens.length}atTerminator(e){return this.atBoundary||((e?.condition&&e.condition(this))??!1)}get atBoundary(){if(this.atEnd)return!0;let e=this.index;for(let i of this._boundaries)if(this.matchAll(i.tokens))return this.index=e,!0;return!1}addBoundary(e){this._boundaries.push({index:this.index,tokens:e})}removeBoundary(){this._boundaries.pop()}matchBoundary(){let e=this._boundaries[this._boundaries.length-1],i=e&&this.matchAll(e.tokens);return i&&this._boundaries.pop(),i}boundaryError(e){let i=this._boundaries[this._boundaries.length-1];return this._boundaries.pop(),this.error(e,i.index)}latex(e,i){return xn(this._tokens.slice(e,i))}latexAhead(e){return this.latex(this.index,this.index+e)}lookAhead(){let e=Math.min(this._dictionary.lookahead,this._tokens.length-this.index);if(e<=0)return[];let i=[];for(;e>0;)i.push([e,this.latexAhead(e--)]);return i}peekDefinitions(e){if(this.atEnd)return[];let i=[],t=[...this.getDefs(e)];for(let r of t)r.latexTrigger===""&&i.push([r,0]);for(let[r,o]of this.lookAhead())for(let s of t)s.latexTrigger===o&&i.push([s,r]);for(let r of t)if(r.identifierTrigger){let o=uc(this,r.identifierTrigger);o>0&&i.push([r,o])}return i}skipSpaceTokens(){for(;this.match("<space>"););}skipSpace(){if(!this.atEnd&&this.peek==="<{>"){let i=this.index;for(this.nextToken();this.match("<space>"););if(this.nextToken()==="<}>")return this.skipSpace(),!0;this.index=i}if(!this.options.skipSpace)return!1;let e=!1;for(;this.match("<space>");)e=!0;return e&&this.skipSpace(),e}skipVisualSpace(){this.options.skipSpace&&(this.skipSpace(),["\\!","\\,","\\:","\\;","\\enskip","\\enspace","\\space","\\quad","\\qquad"].includes(this.peek)&&(this.nextToken(),this.skipVisualSpace()),this.skipSpace())}match(e){return this._tokens[this.index]!==e?!1:(this.index++,!0)}matchAll(e){if(e.length===0)return!1;let i,t=0;do i=this._tokens[this.index+t]===e[t++];while(i&&t<e.length);return i&&(this.index+=t),i}matchAny(e){return e.includes(this._tokens[this.index])?this._tokens[this.index++]:""}matchChar(){let e=this.index,i=0;for(;this.match("^");)i+=1;if(i<2&&(this.index=e),i>=2){let t="",r=0;for(;r!=i;){let o=this.matchAny(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]);if(!o)break;t+=o,r+=1}if(t.length===i)return String.fromCodePoint(Number.parseInt(t,16))}else if(this.match("\\char")){let t=Math.floor(this.matchLatexNumber()??Number.NaN);return(!Number.isFinite(t)||t<0||t>1114111)&&(t=10067),String.fromCodePoint(t)}else if(this.match("\\unicode"))if(this.skipSpaceTokens(),this.match("<{>")){let t=this.matchLatexNumber();if(this.match("<}>")&&t!==null&&t>=0&&t<=1114111)return String.fromCodePoint(t)}else{let t=this.matchLatexNumber();if(t!==null&&t>=0&&t<=1114111)return String.fromCodePoint(t)}return this.index=e,null}matchDelimiter(e,i){if(this.peek==="[")return!1;if(Array.isArray(e))return Array.isArray(i),this.matchAll(e)?(this.addBoundary(i),!0):!1;Array.isArray(i);let t=this.index,r=vs[this.peek];return r&&this.nextToken(),e==="||"&&this.matchAll(["|","|"])?(this.addBoundary(["|","|"]),!0):(ac[e]??[e]).includes(this.peek)?(e=this.nextToken(),i=Ns[e]??i,this.addBoundary(r?[r,i]:[i]),!0):(this.index=t,!1)}parseGroup(){let e=this.index;if(this.skipSpaceTokens(),this.match("<{>")){this.addBoundary(["<}>"]);let i=this.parseExpression();if(this.skipSpace(),this.matchBoundary())return i??["Sequence"];for(;!this.matchBoundary()&&!this.atEnd;)this.nextToken();if(x(i)==="Error")return i;let t=this.error("expected-closing-delimiter",e);return i?["InvisibleOperator",i,t]:t}return this.index=e,null}parseOptionalGroup(){let e=this.index;if(this.skipSpaceTokens(),this.match("[")){this.addBoundary(["]"]);let i=this.parseExpression();return this.skipSpace(),this.matchBoundary()?i:this.boundaryError("expected-closing-delimiter")}return this.index=e,null}parseToken(){if(this.skipSpace(),[...'!"#$%&(),/;:?@[]\\`|~'.split(""),"\\left","\\bigl"].includes(this.peek))return null;if(/^[0-9]$/.test(this.peek))return parseInt(this.nextToken());let i=this.parseGenericExpression()??this.parseSymbol();return i||null}parseTabular(){let e=[],i=[],t=null;for(;!this.atBoundary;)if(this.skipSpace(),this.match("&"))i.push(t??"Nothing"),t=null;else if(this.match("\\\\")||this.match("\\cr"))this.skipSpace(),this.parseOptionalGroup(),t!==null&&i.push(t),e.push(i),i=[],t=null;else{let r=[],o=this.peek;for(;o!=="&"&&o!=="\\\\"&&o!=="\\cr"&&!this.atBoundary;)t=this.parseExpression({minPrec:0,condition:s=>{let a=s.peek;return a==="&"||a==="\\\\"||a==="\\cr"}}),t?r.push(t):(r.push(["Error",["'unexpected-token'",o]]),this.nextToken()),this.skipSpace(),o=this.peek;r.length>1?t=["Sequence",...r]:t=r[0]??"Nothing"}return t!==null&&i.push(t),i.length>0&&e.push(i),e}parseStringGroupContent(){let e=this.index,i="",t=0;for(;!this.atBoundary||t>0;){let r=this.nextToken();if(r==="<$>"||r==="<$$>")return this.index=e,"";r==="<{>"?(t+=1,i+="\\{"):r==="<}>"?(t-=1,i+="\\}"):r==="<space>"?i+=" ":(r[0],i+=r)}return i}parseStringGroup(e){e===void 0&&(e=!1);let i=this.index;for(;this.match("<space>"););if(this.match(e?"[":"<{>")){this.addBoundary([e?"]":"<}>"]);let t=this.parseStringGroupContent();if(this.matchBoundary())return t;this.removeBoundary()}return this.index=i,null}parseEnvironment(e){let i=this.index;if(!this.match("\\begin"))return null;let t=this.parseStringGroup()?.trim();if(!t)return this.error("expected-environment-name",i);this.addBoundary(["\\end","<{>",...t.split(""),"<}>"]);for(let r of this.getDefs("environment"))if(r.identifierTrigger===t){let o=r.parse(this,e);return this.skipSpace(),this.matchBoundary()?o!==null?this.decorate(o,i):(this.index=i,null):this.boundaryError("unbalanced-environment")}return this.parseTabular(),this.skipSpace(),this.matchBoundary()?this.error(["unknown-environment",{str:t}],i):this.boundaryError("unbalanced-environment")}parseOptionalSign(){let e=!!this.matchAny(["-","\u2212"]);for(;this.matchAny(["+","\uFE62"])||this.skipSpace();)this.matchAny(["-","\u2212"])&&(e=!e);return e?"-":"+"}parseDecimalDigits(e="whole"){let i=[],t=!1;for(;!t;){for(;/^[0-9]$/.test(this.peek);)i.push(this.nextToken()),this.skipVisualSpace();t=!0;let r=e==="whole"?this._wholeDigitGroupSeparatorTokens:this._fractionalDigitGroupSeparatorTokens;if(e!=="none"&&r.length>0){let o=this.index;this.skipVisualSpace(),this.matchAll(r)&&(this.skipVisualSpace(),/^[0-9]$/.test(this.peek)?t=!1:this.index=o)}}return i.join("")}parseSignedInteger(e){let i=this.index,t=this.parseOptionalSign(),r=this.parseDecimalDigits(e);return r?t==="-"?"-"+r:r:(this.index=i,"")}parseExponent(){let e=this.index;if(this.skipVisualSpace(),this.matchAny(["e","E"])){let i=this.parseSignedInteger("none");if(i)return i}if(this.index=e,this.match("\\times")&&(this.skipVisualSpace(),this.matchAll(["1","0"])&&(this.skipVisualSpace(),this.match("^")))){if(this.skipVisualSpace(),/^[0-9]$/.test(this.peek))return this.nextToken();if(this.match("<{>")){this.skipVisualSpace();let i=this.parseSignedInteger("whole");if(this.skipVisualSpace(),i&&this.match("<}>"))return i}}if(this.index=e,this.skipVisualSpace(),this.match("\\%"))return"-2";if(this.index=e,this.matchAll(this._exponentProductTokens)&&(this.skipVisualSpace(),this.matchAll(this._beginExponentMarkerTokens))){this.skipVisualSpace();let i=this.parseSignedInteger("none");if(this.skipVisualSpace(),i&&this.matchAll(this._endExponentMarkerTokens))return i}return this.index=e,""}parseRepeatingDecimal(){let e=this.index,i=this.options.repeatingDecimal,t="";if((i==="auto"||i==="parentheses")&&this.match("("))return t=this.parseDecimalDigits("fraction"),t&&this.match(")")?`(${t})`:(this.index=e,"");if(this.index=e,(i==="auto"||i==="parentheses")&&this.matchAll(["\\left","("]))return t=this.parseDecimalDigits("fraction"),t&&this.matchAll(["\\right",")"])?`(${t})`:(this.index=e,"");if(this.index=e,(i==="auto"||i==="vinculum")&&this.matchAll(["\\overline","<{>"]))return t=this.parseDecimalDigits("fraction"),t&&this.match("<}>")?`(${t})`:(this.index=e,"");if(this.index=e,(i==="auto"||i==="arc")&&(this.matchAll(["\\wideparen","<{>"])||this.matchAll(["\\overarc","<{>"])))return t=this.parseDecimalDigits("fraction"),t&&this.match("<}>")?`(${t})`:(this.index=e,"");if(this.index=e,i==="auto"||i==="dots"){let r=yl(this);if(r!==null){if(t=this.parseDecimalDigits("fraction"),!t)return`(${r})`;let o=yl(this);if(o!==null)return`(${r}${t}${o})`}}return this.index=e,""}parseNumber(){if(this.options.parseNumbers===!1||this.options.parseNumbers==="never")return null;let e=this.index;this.skipVisualSpace();let i=1;for(;this.peek==="-"||this.peek==="+";)this.match("-")?i=-i:this.match("+"),this.skipVisualSpace();let t="",r="",o=!1;if(this.match(".")||this.matchAll(this._decimalSeparatorTokens)){let f=this.peek;(/^[\d]$/.test(f)||fc(this))&&(o=!0,t="0")}else t=this.parseDecimalDigits("whole");if(!t)return this.index=e,null;let s=this.index,a=!1;(o||this.match(".")||this.matchAll(this._decimalSeparatorTokens))&&(r=this.parseDecimalDigits("fraction"),a=!0);let l=!1;if(a){let f=this.parseRepeatingDecimal();f&&(r+=f,l=!0),this.match("\\ldots")||this.matchAll(this._truncationMarkerTokens)}if(a&&!r)return this.index=s,{num:i<0?"-"+t:t};let u=this.parseExponent();if(!l&&this.options.parseNumbers==="rational"){let f=parseInt(t,10);if(!r)return u?["Multiply",i*f,["Power",10,u]]:i*f;let d=parseInt(r,10),c=r.length,m=f*Math.pow(10,c)+d,g=Math.pow(10,c);return u?["Multiply",["Rational",i*m,g],["Power",10,u]]:["Rational",i*m,g]}return{num:(i<0?"-":"")+t+(a?"."+r:"")+(u?"e"+u:"")}}matchLatexNumber(e=!0){let i=!1,t=this.peek;for(;t==="<space>"||t==="+"||t==="-";)t==="-"&&(i=!i),this.nextToken(),t=this.peek;let r=10,o=["0","1","2","3","4","5","6","7","8","9"];if(this.match("'"))r=8,o=["0","1","2","3","4","5","6","7"],e=!0;else if(this.match('"')||this.match("x"))r=16,o=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"],e=!0;else if(this.match("`"))return t=this.nextToken(),t?t.startsWith("\\")&&t.length===2?(i?-1:1)*(t.codePointAt(1)??0):(i?-1:1)*(t.codePointAt(0)??0):null;let s="";for(;o.includes(this.peek);)s+=this.nextToken();if(!e&&this.match("."))for(s+=".";o.includes(this.peek);)s+=this.nextToken();let a=e?Number.parseInt(s,r):Number.parseFloat(s);return Number.isNaN(a)?null:i?-a:a}parsePrefixOperator(e){e||(e={minPrec:0}),e.minPrec||(e={...e,minPrec:0});let i=this.index;for(let[t,r]of this.peekDefinitions("prefix")){this.index=i+r;let o=t.parse(this,{...e,minPrec:t.precedence+1});if(o)return o}return this.index=i,null}parseInfixOperator(e,i){i??(i={minPrec:0}),i.minPrec,i.minPrec===void 0&&(i={...i,minPrec:0});let t=this.index;for(let[r,o]of this.peekDefinitions("infix"))if(r.precedence>=i.minPrec){this.index=t+o;let s=r.parse(this,e,i);if(s)return s}return this.index=t,null}parseArguments(e="enclosure",i){if(this.atTerminator(i))return null;let t=this.index,r=this.parseEnclosure();if(e==="enclosure")return r===null?null:Wt(r)??[];if(e==="implicit"){if(x(r)==="Delimiter"){if(x(De(r))==="Sequence"){let s=De(De(r));return s?[s]:[]}return De(r)?[De(r)]:[]}if(r!==null)return[r];let o=this.parseExpression({...i,minPrec:390});return o===null?null:[o]}return this.index=t,null}parseEnclosure(){let e=this.getDefs("matchfix"),i=this.index;for(let t of e){if(this.index=i,!this.matchDelimiter(t.openTrigger,t.closeTrigger))continue;let r=this.index;this.skipSpace();let o=this.parseExpression();if(this.skipSpace(),!this.matchBoundary()){let a=this._boundaries[this._boundaries.length-1].tokens;if(this.removeBoundary(),this.index=r,this.skipSpace(),o=this.parseExpression(),this.skipSpace(),!this.matchAll(a)){if(!this.atEnd)continue;return this.index=i,null}}let s=t.parse(this,o??["Sequence"]);if(s!==null)return s}return this.index=i,null}parseGenericExpression(e){if(this.atTerminator(e))return null;let i=this.index,t=null,r=this.peekDefinitions("expression")??[];for(let[o,s]of r)if(this.index=i+s,typeof o.parse=="function"){if(t=o.parse(this,e),t!==null)return t}else return o.name;return this.index=i,null}parseFunction(e){if(this.atTerminator(e))return null;let i=this.index,t=null;for(let[o,s]of this.peekDefinitions("function"))if(this.index=i+s,typeof o.parse=="function"){if(t=o.parse(this,e),t!==null)return t}else{t=o.name;break}if(t===null&&(this.index=i,t=Mt(this),!this.isFunctionHead(t)))return this.index=i,null;do{let o=this.parsePostfixOperator(t,e);if(o===null)break;t=o}while(!0);let r=this.parseArguments("enclosure",e);return r===null?t:typeof t=="string"?[t,...r]:["Apply",t,...r]}parseSymbol(e){if(this.atTerminator(e))return null;let i=this.index;for(let[o,s]of this.peekDefinitions("symbol"))if(this.index=i+s,typeof o.parse=="function"){let a=o.parse(this,e);if(a)return a}else return o.name;this.index=i;let t=Mt(this);return t===null?null:this.getIdentifierType(t)==="symbol"?t:(this.index=i,null)}parseSupsub(e){if(this.atEnd)return e;let i=this.index;this.skipSpace();let t=[],r=[],o=i;for(;this.peek==="_"||this.peek==="^";){if(this.match("_"))if(o=this.index,this.match("_")||this.match("^"))r.push(this.error("syntax-error",o));else{let a=this.parseGroup()??this.parseToken()??this.parseStringGroup();if(a===null)return this.error("missing",i);r.push(a)}else if(this.match("^"))if(o=this.index,this.match("_")||this.match("^"))t.push(this.error("syntax-error",o));else{let a=this.parseGroup()??this.parseToken();if(a===null)return this.error("missing",i);t.push(a)}o=this.index,this.skipSpace()}if(t.length===0&&r.length===0)return this.index=i,e;let s=e;if(r.length>0){let a=[...this.getDefs("infix")].filter(l=>l.latexTrigger==="_");if(a){let l=["Subscript",s,r.length===1?r[0]:["List",...r]];for(let u of a)if(typeof u.parse=="function"?s=u.parse(this,l,{minPrec:0}):s=l,s)break}}if(t.length>0){let a=[...this.getDefs("infix")].filter(l=>l.latexTrigger==="^");if(a){let l=t.filter(u=>!(x(u)==="Sequence"&&j(u)===0));if(l.length!==0){let u=l.length===1?l[0]:["List",...l],f=["Superscript",s,u];for(let d of a)if(typeof d.parse=="function"?s=d.parse(this,f,{minPrec:0}):s=f,s)break}}}return s===null&&(this.index=i),s}parsePostfixOperator(e,i){if(e===null||this.atEnd)return null;let t=this.index;for(let[r,o]of this.peekDefinitions("postfix")){this.index=t+o;let s=r.parse(this,e,i);if(s!==null)return s}return this.index=t,null}parseSyntaxError(){let e=this.index;if(this.peek==="^")return this.index+=1,["Superscript",this.error("missing",e),F(this.parseGroup())];let i=this.peekDefinitions("operator");if(i.length>0){if(i=this.peekDefinitions("postfix"),i.length>0){let[a,l]=i[0];if(this.index+=l,typeof a.parse=="function"){let u=a.parse(this,this.error("missing",e));if(u)return u}return a.name?[a.name,this.error("missing",e)]:this.error("unexpected-operator",e)}if(i=this.peekDefinitions("prefix"),i.length>0){let[a,l]=i[0];if(this.index+=l,typeof a.parse=="function"){let u=a.parse(this,{minPrec:0});if(u)return u}return a.name?[a.name,this.parseExpression()??this.error("missing",e)]:this.error("unexpected-operator",e)}if(i=this.peekDefinitions("infix"),i.length>0){let[a,l]=i[0];this.index+=l;let u=a.parse(this,this.error("missing",e),{minPrec:0});return u||this.error("unexpected-operator",e)}}let t=this.index,r=Es(this);if(r)return r;if(r=Mt(this),r)return this.error(["unexpected-identifier",{str:r}],t);let o=this.peek;if(!o)return this.error("syntax-error",e);if(o[0]!=="\\")return this.error(["unexpected-token",{str:xn(o)}],e);if(lc(this))return this.error("unexpected-delimiter",e);let s=this.nextToken();if(this.skipSpaceTokens(),s==="\\end"){let a=this.parseStringGroup();return a===null?this.error("expected-environment-name",e):this.error(["unbalanced-environment",{str:a}],e)}for(;this.match("[");){let a=0;for(;!this.atEnd&&a===0&&this.peek!=="]";)this.peek==="["&&(a+=1),this.peek==="]"&&(a-=1),this.nextToken();this.match("]")}for(;this.match("<{>");){let a=0;for(;!this.atEnd&&a===0&&this.peek!=="<}>";)this.peek==="<{>"&&(a+=1),this.peek==="<}>"&&(a-=1),this.nextToken();this.match("<}>")}return this.error(["unexpected-command",{str:xn(s)}],e)}parsePrimary(e){if(this.atBoundary||this.atTerminator(e))return null;let i=null,t=this.index;if(this.match("<}>"))return this.error("unexpected-closing-delimiter",t);if(i??(i=this.parseGroup()),i??(i=this.parseNumber()),i??(i=this.parseEnclosure()),i??(i=this.parseEnvironment(e)),i===null&&this.matchAll(this._positiveInfinityTokens)&&(i="PositiveInfinity"),i===null&&this.matchAll(this._negativeInfinityTokens)&&(i="NegativeInfinity"),i===null&&this.matchAll(this._notANumberTokens)&&(i="NaN"),i??(i=this.parseGenericExpression(e)??this.parseFunction(e)??this.parseSymbol(e)??Es(this)),i!==null){i=this.decorate(i,t);let r=null,o=this.index;do{if(r=this.parsePostfixOperator(i,e),i=r??i,this.index===o&&r!==null){this.index;break}o=this.index}while(r!==null)}return i!==null&&(i=this.parseSupsub(i)),i===null&&(i=this.options.parseUnexpectedToken?.(null,this)??null),this.decorate(i,t)}parseExpression(e){this.skipSpace();let i=this.index;if(this.atBoundary)return this.index=i,null;e??(e={minPrec:0}),e.minPrec,e.minPrec===void 0&&(e={...e,minPrec:0});let t=this.parsePrefixOperator({...e,minPrec:0});if(t===null&&(t=this.parsePrimary(e),x(t)==="Sequence"&&j(t)===0&&(t=null)),t){let r=!1;for(;!r&&!this.atTerminator(e);){this.skipSpace();let o=this.parseInfixOperator(t,e);if(o===null&&this.peekDefinitions("operator").length===0){let s=this.parseExpression({...e,minPrec:390});s!==null?x(t)==="InvisibleOperator"?x(s)==="InvisibleOperator"?o=["InvisibleOperator",...T(t),...T(s)]:o=["InvisibleOperator",...T(t),s]:x(s)==="InvisibleOperator"?o=["InvisibleOperator",t,...T(s)]:o=["InvisibleOperator",t,s]:o===null&&(o=this.options.parseUnexpectedToken?.(t,this)??null)}o!==null?t=o:r=!0}}return this.decorate(t,i)}decorate(e,i){if(e===null)return null;if(!this.options.preserveLatex)return e;let t=this.latex(i,this.index);return Array.isArray(e)?e={latex:t,fn:e}:typeof e=="number"?e={latex:t,num:Number(e).toString()}:typeof e=="string"?e={latex:t,sym:e}:typeof e=="object"&&e!==null&&(e.latex=t),e}error(e,i){let t;typeof e=="string"?(e.startsWith("'"),t={str:e}):(e[0].startsWith("'"),t=["ErrorCode",{str:e[0]},...e.slice(1)]);let r=this.latex(i,this.index);return r?["Error",t,["LatexString",{str:r}]]:["Error",t]}isFunctionHead(e){if(e===null)return!1;let i=C(e);return i?this.getIdentifierType(i)==="function":!1}*getDefs(e){if(e==="operator")for(let i of this._dictionary.defs)/^prefix|infix|postfix/.test(i.kind)&&(yield i);else for(let i of this._dictionary.defs)i.kind===e&&(yield i)}};function uc(n,e){let i=n.index,t=Mt(n)?.trim();if(t===null)return 0;let r=t!==e?0:n.index-i;return n.index=i,r}function lc(n){let e=n.peek;return Object.values(Ns).includes(e)||Ns[e]?(n.nextToken(),!0):vs[e]||Object.values(vs).includes(e)?(n.nextToken(),n.nextToken(),!0):!1}function yl(n){let e=n.index;if(n.matchAll(["\\overset","<{>"])&&(n.match(".")||n.match("\\cdots"))&&n.matchAll(["<}>","<{>"])){let i=n.nextToken();if(i&&/^\d$/.test(i)&&n.match("<}>"))return i}return n.index=e,null}function fc(n){let e=n.peek;return e==="\\overline"||e==="\\overset"||e==="\\wideparent"||e==="\\overarc"||e==="("||e==="\\left"}function El(n,e,i){let t=new _s(ge(n),e,i),r=t.parseExpression();if(!t.atEnd){let o=t.parseSyntaxError();r=r?["Sequence",r,o]:o}return r??(r=["Sequence"]),i.preserveLatex&&(Array.isArray(r)?r={latex:n,fn:r}:typeof r=="number"?r={latex:n,num:Number(r).toString()}:typeof r=="string"&&r.startsWith("'")&&r.endsWith("'")?r={latex:n,str:r.slice(1,-1)}:typeof r=="string"?r={latex:n,sym:r}:typeof r=="object"&&r!==null&&(r.latex=n)),r}var Ot=class n{constructor(e){this.decimalSeparator=".";this._cache={};this._commonSymbols={True:null,False:null,All:null,Nothing:null,None:null,Undefined:null,Pi:null,ImaginaryUnit:null,ExponentialE:null};this._commonNumbers={"-5":null,"-4":null,"-3":null,"-2":null,2:null,3:null,4:null,5:null,6:null,7:null,8:null,9:null,10:null,11:null,12:null,36:null};this._commonDomains={Anything:null,Void:null,NothingDomain:null,Booleans:null,Strings:null,Domains:null,Symbols:null,Integers:null,RationalNumbers:null,AlgebraicNumbers:null,RealNumbers:null,ExtendedRealNumbers:null,ImaginaryNumbers:null,ComplexNumbers:null,ExtendedComplexNumbers:null,Numbers:null,PositiveIntegers:null,TranscendentalNumbers:null,PositiveNumbers:null,Functions:null,NumericFunctions:null,RealFunctions:null,LogicOperators:null,Predicates:null};if(e!==void 0&&typeof e!="object")throw Error("Unexpected argument");this.strict=!0,this._stats={highwaterMark:0,symbols:new Set,expressions:new Set},this._numericMode=e?.numericMode??"auto",this._precision=Math.max(e?.numericPrecision??100,Math.floor(ai)),this._bignum=N.clone({precision:this._precision}),this.tolerance=e?.tolerance??Bi,this._angularUnit="rad",this.Zero=new se(this,0),this.One=new se(this,1),this.Half=new se(this,[1,2]),this.NegativeOne=new se(this,-1),this.NaN=new se(this,Number.NaN),this.PositiveInfinity=new se(this,Number.POSITIVE_INFINITY),this.NegativeInfinity=new se(this,Number.NEGATIVE_INFINITY),this.I=new se(this,Yi.Complex.I),this.ComplexInfinity=new se(this,Yi.Complex.INFINITY),this.reset(),this.context={assumptions:new Ji,timeLimit:2,memoryLimit:1,recursionLimit:1024,iterationLimit:Number.POSITIVE_INFINITY};for(let t of n.getStandardLibrary("domains"))ds(this,t);for(let t of Object.keys(this._commonDomains))this._commonDomains[t]&&!this._commonDomains[t].symbolDefinition?this._commonDomains[t].bind():this._commonDomains[t]=new Fn(this,xr[t]??t);this.Anything=this._commonDomains.Anything,this.Void=this._commonDomains.Void,this.Strings=this._commonDomains.Strings,this.Booleans=this._commonDomains.Booleans,this.Numbers=this._commonDomains.Numbers;let i=e?.ids??n.getStandardLibrary();for(let t of i)ds(this,t);for(let t of Object.keys(this._commonSymbols)){let r=new Ln(this,t,{canonical:!0});r.bind(),this._commonSymbols[t]=r}this.True=this._commonSymbols.True,this.False=this._commonSymbols.False,this.Pi=this._commonSymbols.Pi,this.E=this._commonSymbols.ExponentialE,this.Nothing=this._commonSymbols.Nothing,this.pushScope()}static getStandardLibrary(e="all"){return fs(e)}get latexDictionary(){return this._latexDictionaryInput??n.getLatexDictionary()}set latexDictionary(e){this._latexDictionaryInput=e,this._indexedLatexDictionary=bs(e,i=>{throw Error(typeof i.message=="string"?i.message:i.message.join(","))})}get indexedLatexDictionary(){return this._indexedLatexDictionary??(this._indexedLatexDictionary=bs(this.latexDictionary,e=>console.error(e))),this._indexedLatexDictionary}reset(){this._bignum,this._BIGNUM_NEGATIVE_ONE=this.bignum(-1),this._BIGNUM_NAN=this.bignum(NaN),this._BIGNUM_ZERO=this.bignum(0),this._BIGNUM_ONE=this.bignum(1),this._BIGNUM_TWO=this.bignum(2),this._BIGNUM_HALF=this._BIGNUM_ONE.div(this._BIGNUM_TWO),this._BIGNUM_PI=this._BIGNUM_NEGATIVE_ONE.acos();let e=this._stats.symbols.values(),i=this._stats.expressions.values();this._stats.symbols=new Set,this._stats.expressions=new Set;for(let r of e)r.reset();for(let r of i)r.reset();for(let r of Object.values(this._commonDomains))r?.reset();for(let r of Object.values(this._commonSymbols))r?.reset();let t=this.context;for(;t;){if(t.ids)for(let[r,o]of t.ids)o.reset();t=t.parentScope??null}for(let r of Object.keys(this._cache))this._cache[r].value&&(this._cache[r].purge?this._cache[r].value=this._cache[r].purge(this._cache[r].value):delete this._cache[r])}_register(e){this._stats.highwaterMark+=1}_unregister(e){}get stats(){let e=this._stats.expressions;return this._stats.expressions=null,this._stats.expressions=e,{...this._stats}}get precision(){return this._numericMode==="machine"||this._numericMode==="complex"?Math.floor(ai):this._precision}set precision(e){e==="machine"&&(e=Math.floor(ai));let i=this._precision;if(e!==i){if(typeof e!="number"||e<=0)throw Error('Expected "machine" or a positive number');this._precision=Math.max(e,Math.floor(ai)),this._numericMode!=="auto"&&this._numericMode!=="bignum"&&this._precision>Math.floor(ai)&&(this._numericMode="auto"),this._bignum=this._bignum.config({precision:this._precision}),this.reset()}}get numericMode(){return this._numericMode}set numericMode(e){if(e!==this._numericMode){if(typeof e!="string")throw Error("Expected a string");this._numericMode=e,(e==="complex"||e==="machine")&&(this._precision=Math.floor(ai)),this.reset()}}get angularUnit(){return this._angularUnit}set angularUnit(e){if(e!==this._angularUnit){if(typeof e!="string")throw Error("Expected a string");this._angularUnit=e,this.reset()}}get timeLimit(){let e=this.context;for(;e;){if(e.timeLimit!==void 0)return e.timeLimit;e=e.parentScope??null}return 2}get iterationLimit(){let e=this.context;for(;e;){if(e.iterationLimit!==void 0)return e.iterationLimit;e=e.parentScope??null}return 1024}get recursionLimit(){let e=this.context;for(;e;){if(e.recursionLimit!==void 0)return e.recursionLimit;e=e.parentScope??null}return 1024}get tolerance(){return this._tolerance}set tolerance(e){typeof e=="number"&&Number.isFinite(e)?this._tolerance=Math.max(e,0):this._tolerance=Bi,this._bignumTolerance=this.bignum(this._tolerance)}chop(e){return typeof e=="number"&&Math.abs(e)<=this._tolerance||e instanceof N&&e.abs().lte(this._bignumTolerance)||e instanceof Yi.Complex&&Math.abs(e.re)<=this._tolerance&&Math.abs(e.im)<=this._tolerance?0:e}bignum(e){if(typeof e=="bigint")return new this._bignum(e.toString());try{return new this._bignum(e)}catch(i){console.error(i)}return this._BIGNUM_NAN}complex(e,i){return e instanceof N&&(e=e.toNumber()),i instanceof N&&(i=i.toNumber()),new Yi.Complex(e,i)}isBignum(e){return e instanceof N}isComplex(e){return e instanceof Yi.Complex}static getLatexDictionary(e="all"){return xl(e)}get costFunction(){return this._cost??ps}set costFunction(e){typeof e!="function"&&(this._cost=ps),this._cost=e}lookupSymbol(e,i,t){if(!this.strict){for(t??(t=this.context??void 0);t;){let o=t.ids?.get(e);if(o&&o instanceof le)return o;t=t.parentScope}return}if(typeof e!="string")throw Error("Expected a string");if(e.length===0||!this.context)return;let r=t??this.context;if(i)for(t=r;t;){if(t.ids){for(let[o,s]of t.ids)if(s instanceof le&&s.wikidata===i)return s}t=t.parentScope}for(t=r;t;){let o=t.ids?.get(e);if(o instanceof le)return o;t=t.parentScope}}lookupFunction(e,i){if(typeof e=="string"&&this.context)for(i??(i=this.context);i;){let t=i.ids?.get(e);if(t instanceof Ye)return t;i=i.parentScope}}defineSymbol(e,i){if(!this.context)throw Error("Symbol cannot be defined: no scope available");if(e.length===0||!Ee(e))throw Error(`Invalid identifier "${e}": ${on(e)}}`);return this._defineSymbol(e,i)}_defineSymbol(e,i){var r;(r=this.context).ids??(r.ids=new Map);let t=new le(this,e,i);return t.name&&this.context.ids.set(t.name,t),t}defineFunction(e,i){if(!this.context)throw Error("Function cannot be defined: no scope available");if(e.length===0||!Ee(e))throw Error(`Invalid identifier "${e}": ${on(e)}}`);return this._defineFunction(e,i)}_defineFunction(e,i){var r;(r=this.context).ids??(r.ids=new Map);let t=Er(this,e,i);return t.name&&this.context.ids.set(t.name,t),t}pushScope(e){if(this.context===null)throw Error("No parent scope available");return this.context={timeLimit:this.context.timeLimit,memoryLimit:this.context.memoryLimit,recursionLimit:this.context.recursionLimit,iterationLimit:this.context.iterationLimit,...e??{},parentScope:this.context,assumptions:new Ji(this.context.assumptions)},this}popScope(){if(!this.context)throw Error("No scope available");return this.context=this.context.parentScope??null,this.context,this.context,this}swapScope(e){let i=this.context;return this.context=e,this.context,this.context,i}resetContext(){if(this.context){for(let[e,i]of this.context.ids??[])if(i instanceof le)i.constant||(i.value=void 0);else if(i instanceof Ye){let t=i.signature;i.signature={...t,evaluate:void 0,N:void 0,simplify:void 0,canonical:void 0}}}}_printScope(e,i,t=0){if(e??(e={details:!1,maxDepth:1}),i??(i=this.context),!i||e.maxDepth&&t>e.maxDepth)return null;let r=`${Hu}[undefined]${kt}`;if(t===0?console.group("current scope - level 0"):console.groupCollapsed(i.parentScope?`scope - level ${t}`:`root scope - level ${t}`),i.ids){let o=0;for(let[s,a]of i.ids){let l=`${Ju}${s}${kt}`;try{if(a instanceof le){let u=a.value?.isValid?a.value.toString():a.value?`${hs}${a.value.toString()}${kt}`:r;console.info(`${l}: ${a.domain?.toString()??r} = ${u}`)}else a instanceof Ye&&(typeof a.signature.evaluate=="function"?console.info(`${l}(): ${e.details?a.signature.evaluate.toString():"[native-code]"}`):a.signature.evaluate===void 0?console.info(`${l}(): ${r}`):console.info(`${l}(): ${a.toString()}`));o===11&&console.groupCollapsed(`... and ${i.ids.size-o} more`),o+=1}catch(u){console.info(`${l}: ${hs}${u.message}${kt}`)}}o>=11&&console.groupEnd()}if(i.assumptions){let o=[...i.assumptions.entries()].map(([s,a])=>`${s}: ${a}`);if(o.length>0){console.groupCollapsed(`${o.length} assumptions)`);for(let s of o)console.info(s);console.groupEnd()}}return i.parentScope&&this._printScope(e,i.parentScope,t+1),console.groupEnd(),this.context}declare(e,i){if(typeof e!="string"||i===void 0){for(let[s,a]of Object.entries(e))this.declare(s,a);return this}let[t,r]=qo(e);if(r!==void 0)throw Error(`Unexpected arguments with ${e}. Use 'ce.assign()' instead to assign a value, or a use a function definition with 'ce.declare()'.`);if(t==="Nothing")return this;if(this.context?.ids?.get(t)){let s=this.context.ids.get(t);if(s instanceof le&&s.inferredDomain)return Ur(i)?s.update(i):(s.domain=this.domain(i),s.inferredDomain=!1),this;throw Error(`Symbol "${t}" has already been declared in the current scope`)}let o=i;if(!o)throw Error(`Expected a definition for ${t}`);if(Ur(o))return this.defineSymbol(t,o),this;if(cs(o))return this.defineFunction(t,o),this;{let s=this.domain(o);if(s.isValid)if(s.isFunction)this.defineFunction(t,{signature:ht(s)});else{if(r)throw Error(`Unexpected arguments with domain for "${t}"`);this.defineSymbol(t,{domain:s})}else throw Error(`Invalid argument for "${t}": use a domain, a FunctionDefinition or a SymbolDefinition`)}return this}assign(e,i){if(typeof e=="object"){for(let[l,u]of Object.entries(e))this.assign(l,u);return this}let[t,r]=qo(e);if(t==="Nothing")return this;let o=i;if(typeof o=="boolean"&&(o=o?this.True:this.False),typeof o=="string"){let l=o.trim();l.startsWith("$")&&l.endsWith("$")?o=this.parse(l.slice(1,-1),{canonical:!1}):l.startsWith("$$")&&l.endsWith("$$")?o=this.parse(l.slice(2,-2),{canonical:!1}):o=this.string(o)}let s=this.lookupSymbol(t);if(s){if(s.constant)throw Error(`Cannot assign a value to the constant "${t}"`);if(!s.inferredDomain&&Ss(o))throw Error(`Cannot assign a function to symbol "${t}"`);let l=s.scope;if(l?.ids?.delete(s.name),!r&&!Ss(o))return o==null?s.value=void 0:s.value=this.box(o),l?.ids?.set(s.name,s),this}let a=this.lookupFunction(t);if(a){let l=a.scope;if(l?.ids?.delete(a.name),o==null)return this;if(typeof o=="function"){let d=this.swapScope(l);return this.defineFunction(t,{signature:{evaluate:o}}),this.swapScope(d),this}if(r&&Ss(o))throw Error(`Unexpected arguments for "${t}"`);let u=r?this.box(["Function",o,...r]):this.box(o),f=this.swapScope(l);return this.defineFunction(t,{signature:{evaluate:u}}),this.swapScope(f),this}if(o==null)return this.declare(t,{inferred:!0,domain:this.Anything}),this;if(typeof o=="function")return this.defineFunction(t,{signature:{evaluate:o}}),this;if(o instanceof P&&o.domain?.base==="Functions")return this.defineFunction(t,{signature:{evaluate:o}}),this;if(Array.isArray(o)||o instanceof P||r){let l=this.box(o,{canonical:!1});if(l.head==="Function")return l=this.box(["Function",...l.ops,...(r??[]).map(f=>this.symbol(f))]),this.defineFunction(t,{signature:{evaluate:l}}),this;let u=[...l.unknowns].sort();if(u.length===0){let f=l.evaluate();return this.defineSymbol(t,{value:f}),this}if(u.some(f=>/\_[\d]+/.test(f)))return l=this.box(["Function",l]),this.defineFunction(t,{signature:{evaluate:l}}),this;if(r&&r.length>0)return this.pushScope(),l=this.box(["Function",l,...r]),this.popScope(),this.defineFunction(t,{signature:{evaluate:l}}),this;this.pushScope(),o=l.evaluate(),this.popScope()}return this.defineSymbol(t,{value:o}),this}_assign(e,i){let t=this.lookupSymbol(e);if(t)return t.value=this.box(i).evaluate(),this;let r=this.lookupFunction(e);if(r){let o=r.signature;return r.signature={...o,N:void 0,simplify:void 0,canonical:void 0,evaluate:i},this}return`${e}`,this}get assumptions(){if(!this.context)throw Error("No scope available");return this.context.assumptions?this.context.assumptions:(this.context.assumptions=new Ji,this.context.assumptions)}shouldContinueExecution(){return this.deadline===void 0||this.deadline>=Date.now()}checkContinueExecution(){if(!this.shouldContinueExecution())throw new Error("timeout")}cache(e,i,t){if(this._cache[e]===void 0)try{this._cache[e]={build:i,purge:t,value:i()}}catch(r){console.error(`Fatal error building cache "${e}":
|
|
51
|
-
${r.toString()}`)}return this._cache[e]?.value}box(e,i){return
|
|
49
|
+
${JSON.stringify(o)}`);i.set(r,s)}else if(Hr(o)){let s=new ce(n,r,o);if(n.strict&&o.wikidata){for(let[a,l]of i)if(l.wikidata===o.wikidata)throw new Error(`Duplicate entries with wikidata "${o.wikidata}": "${r}" and "${l.name}"`)}if(i.has(r))throw new Error(`Duplicate symbol definition "${r}"`);i.set(r,s)}else{let s=new ce(n,r,{value:n.box(o)});i.set(r,s)}}function Hr(n){return n==null||typeof n!="object"||n instanceof F?!1:"domain"in n||"value"in n||"constant"in n}function xs(n){return n==null||typeof n!="object"||n instanceof F?!1:"signature"in n||"complexity"in n}var Qu=he(fe(),1);function Bi(n){return Number.isInteger(n)&&n!==0?Math.floor(Math.log2(Math.abs(n))/Math.log2(10))+(n>0?1:2):2}function bs(n){if(n.symbol)return 1;let e=n.numericValue;if(e!==null){if(n.isZero)return 1;if(n.isInteger)return Bi(b(n));if(M(e))return U(e)?Bi(e[0])+Bi(e[1])+1:Bi(Number(e[0]))+Bi(Number(e[1]))+1;if(e instanceof Qu.Complex)return Bi(e.re)+Bi(e.im)+1;if(n.isNumber)return 2}let i=n.head,t=2;return typeof i=="string"?["Add","Divide"].includes(i)?t=3:["Subtract","Negate"].includes(i)?t=4:["Square","Sqrt","Multiply","Root"].includes(i)?t=5:["Power"].includes(i)?t=6:["Ln","Exp","Log"].includes(i)?t=7:["Arcsin","Arccos","Arctan","Arcsec"," Arccsc","Arsinh","Arcosh","Artanh","Arcsech","Arcsch","Cosh","Cos","Csc","Csch","Sec","Sech","Sin","Sinh","Tan","Tanh"].includes(i)?t=9:t=10:t=bs(i),t+(n.ops?.reduce((r,o)=>r+bs(o),0)??0)}var ys=bs;var Xi=class n{constructor(e){e?e instanceof n?this._items=new Map(e._items):this._items=new Map(e):this._items=new Map}has(e){for(let i of this._items.keys())if(i.isSame(e))return!0;return!1}get(e){for(let[i,t]of this._items)if(i.isSame(e))return t}clear(){this._items.clear()}set(e,i){for(let t of this._items.keys())if(t.isSame(e)){this._items.set(t,i);return}this._items.set(e,i)}delete(e){this._items.delete(e)}[Symbol.iterator](){return this._items.entries()}entries(){return this._items.entries()}};var Mt="\x1B[0m";var Xu="\x1B[33m";var Ku="\x1B[36;1m",Es="\x1B[101;97m";var el=[{name:"To",latexTrigger:["\\to"],kind:"infix",precedence:270},{latexTrigger:["\\rightarrow"],kind:"infix",precedence:270,parse:"To"}];function ec(n){if(x(n)!=="Multiply")return[[],[]];let e=[],i=[],t=B(n)??[];for(let r of t)if(x(r)==="Power"){let o=p(r,1),s=p(r,2);if(x(s)==="Negate"){let a=p(s,1);o&&a&&i.push(["Power",o,a])}else{let a=O(s)??NaN;a===-1?o&&i.push(o):a<0?o&&i.push(["Power",o,-a]):e.push(r)}}else if(x(r)==="Rational"&&j(r)===2||x(r)==="Divide"){let o=p(r,1),s=p(r,2);O(o)!==1&&e.push(o),O(s)!==1&&i.push(s)}else{let o=Mi(r);o!==null?(o[0]!==1&&e.push(o[0]),i.push(o[1])):e.push(r)}return[e,i]}function nc(n){let e=n.parseOptionalGroup(),i=n.parseGroup()??n.parseToken();return i===null||se(i)?e!==null?["Root",ci,L(e)]:["Sqrt",ci]:e!==null?["Root",i,e]:["Sqrt",i]}function Ot(n,e,i,t){return i===null?"\\sqrt{}":(t=t??2,e==="solidus"?n.wrapShort(i)+"^{1\\/"+n.serialize(t)+"}":e==="quotient"?n.wrapShort(i)+"^{\\frac{1}{"+n.serialize(t)+"}}":O(t)===2?"\\sqrt{"+n.serialize(i)+"}":"\\sqrt["+n.serialize(t)+"]{"+n.serialize(i)+"}")}function ic(n,e){n.level-=1;let i=x(e),t="",r=p(e,1);if(i==="Negate")t="-"+n.wrap(r,276);else if(i==="Subtract"){t=n.wrap(r,275);let o=p(e,2);if(o!==null){let s=n.wrap(o,275);s[0]==="-"?t+="+"+s.slice(1):s[0]==="+"?t+="-"+s.slice(1):t=t+"-"+s}}else if(i==="Add"){if(n.options.prettify&&j(e)===2&&n.options.invisiblePlus!=="+"){let[s,a]=[p(e,1),p(e,2)],[l,u]=[s,a],f=O(l),d=Mi(u);if((f===null||d===null)&&([l,u]=[a,s],f=O(l),d=Mi(u)),f!==null&&d!==null&&isFinite(f)&&Number.isInteger(f)&&f>=0&&f<=1e3&&isFinite(d[0])&&isFinite(d[1])&&d[0]>0&&d[0]<=100&&d[1]<=100)return t=v([n.serialize(l),n.options.invisiblePlus,n.serialize(u)]),n.level+=1,t}if(n.options.prettify&&j(e)===2){let[s,a]=Rt(r),[l,u]=Rt(p(e,2));if(a<0&&u>0)return t=n.wrap(l,275)+"-"+n.wrap(s,275),n.level+=1,t}t=n.serialize(r);let o=j(e)+1;for(let s=2;s<o;s++)if(r=p(e,s),n.options.prettify){let[a,l]=Rt(r),u=n.wrap(a,275);l>0?u.startsWith("+")||u.startsWith("-")?t+=u:t+="+"+u:u.startsWith("+")?t+="-"+u.slice(1):u.startsWith("-")?t+="+"+u.slice(1):t+="-"+u}else{let a=n.wrap(r,275);a[0]==="-"||a[0]==="+"?t+=a:t+="+"+a}}return n.level+=1,t}function sl(n,e){if(e===null)return"";n.level-=1;let i="";if(n.options.prettify===!0){let[l,u]=ec(e);u.length>0&&(u.length===1&&u[0]===1?l.length===0?i="1":l.length===1?i=n.serialize(l[0]):i=sl(n,["Multiply",...l]):i=n.serialize(["Divide",l.length===1?l[0]:["Multiply",...l],u.length===1?u[0]:["Multiply",...u]]))}if(i)return n.level+=1,i;let t=!1,r=null,o=j(e)+1,s=B(e)??[];n.options.prettify===!0&&s.length===2&&gn(s[1])&&!gn(s[0])&&(s=[s[1],s[0]]);let a=!1;for(let l=1;l<o;l++){if(r=s[l-1],r===null)continue;let u;if(gn(r)){u=n.serialize(r),u==="-1"&&!i?(i="",t=!t):(u[0]==="-"&&(u=u.slice(1),t=!t),i=i?v([i,n.options.multiply,u]):u),a=!0;continue}if(x(r)==="Power"){let f=Mi(p(r,2));if(f){let[d,c]=f;if(d===1&&c!==null){i+=Ot(n,n.rootStyle(r,n.level),p(r,1),c),a=!1;continue}}}if(x(r)==="Power"&&!isNaN(O(p(r,1))??NaN)){u=n.serialize(r),i=i?v([i,n.options.multiply,u]):u,a=!0;continue}if(x(r)==="Negate"&&(r=p(r,1),t=!t),u=n.wrap(r,390),!i)i=u;else{let f=x(r);a&&(f==="Divide"||f==="Rational")?i=v([i,n.options.multiply,u]):n.options.invisibleMultiply?i=v([i,n.options.invisibleMultiply,u]):i=v([i,u])}a=!1}return n.level+=1,t?"-"+i:i}function tc(n){let e=n.parseGroup(),i=null;if(e===null?(e=n.parseToken(),i=n.parseToken()):i=n.parseGroup(),e=L(e),i=L(i),x(e)==="PartialDerivative"&&(x(i)==="PartialDerivative"||x(i)==="Multiply"&&x(p(i,1))==="PartialDerivative")){let t=p(e,3)??null,r=p(e,1);r===null&&(r=L(n.parseExpression()));let o=[];if(x(i)==="Multiply"){for(let s of B(i)??[])if(x(s)==="PartialDerivative"){let a=p(s,2);a&&o.push(a)}}else{let s=p(i,2);s&&o.push(s)}return o.length>1&&(o=["List",...o]),["PartialDerivative",r,...o,t===null?1:t]}return["Divide",e,i]}function il(n,e){if(e===null)return"";let i=L(p(e,1)),t=L(p(e,2)),r=n.options.prettify?n.fractionStyle(e,n.level):"quotient";if(r==="inline-solidus"||r==="nice-solidus"){let l=n.wrapShort(i),u=n.wrapShort(t);return r==="inline-solidus"?`${l}\\/${u}`:`{}^{${l}}\\!\\!/\\!{}_{${u}}`}else{if(r==="reciprocal")return O(i)===1?n.wrap(t)+"^{-1}":n.wrap(i)+n.wrap(t)+"^{-1}";if(r==="factor")return O(t)===1?n.wrap(i):"\\frac{1}{"+n.serialize(t)+"}"+n.wrapString(n.serialize(i),n.groupStyle(e,1))}let o="\\frac";r==="block-quotient"?o="\\dfrac":r==="inline-quotient"&&(o="\\tfrac");let s=n.serialize(i),a=n.serialize(t);return`${o}{${s}}{${a}}`}function vs(n,e){if(!e)return"";let i=x(e),t=L(p(e,1));if(i==="Sqrt")return Ot(n,n.rootStyle(e,n.level-1),t,2);let r=L(p(e,2));if(i==="Root")return Ot(n,n.rootStyle(e,n.level-1),t,r);if(n.options.prettify){let o=O(r)??1;if(o===-1)return n.serialize(["Divide","1",t]);if(o<0)return n.serialize(["Divide","1",["Power",t,-o]]);if(x(r)==="Divide"||x(r)==="Rational"){if(O(p(r,1))===1){let s=n.rootStyle(e,n.level);return Ot(n,s,t,p(r,2))}if(O(p(r,2))===2)return`${n.serialize(["Sqrt",t])}${Li("^",n.serialize(p(r,1)))}`}else if(x(r)==="Power"&&O(p(r,2))===-1){let s=n.rootStyle(e,n.level);return Ot(n,s,t,p(r,1))}}return n.wrapShort(t)+Li("^",n.serialize(r))}var al=[{name:"CatalanConstant",identifierTrigger:"G"},{name:"GoldenRatio",latexTrigger:"\\varphi"},{name:"EulerGamma",latexTrigger:"\\gamma"},{name:"Degrees",latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(n,e)=>["Degrees",e],serialize:(n,e)=>v([n.serialize(p(e,1)),"\\degree"])},{latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(n,e)=>["Degrees",e]},{latexTrigger:["^","<{>","\\circ","<}>"],kind:"postfix",parse:(n,e)=>["Degrees",e]},{latexTrigger:["^","\\circ"],kind:"postfix",parse:(n,e)=>["Degrees",e]},{latexTrigger:["\xB0"],kind:"postfix",precedence:880,parse:(n,e)=>["Degrees",e]},{latexTrigger:["\\ang"],parse:n=>{let e=n.parseGroup();return e===null?["Degrees"]:["Degrees",e]}},{latexTrigger:["\\infty"],parse:"PositiveInfinity"},{name:"PositiveInfinity",serialize:n=>n.options.positiveInfinity},{name:"NegativeInfinity",serialize:n=>n.options.negativeInfinity},{name:"ComplexInfinity",latexTrigger:["\\tilde","\\infty"],serialize:"\\tilde\\infty"},{latexTrigger:["\\tilde","<{>","\\infty","<}>"],parse:"ComplexInfinity"},{name:"Pi",kind:"symbol",latexTrigger:["\\pi"]},{latexTrigger:["\u03C0"],parse:"Pi"},{name:"ExponentialE",latexTrigger:["\\exponentialE"],parse:"ExponentialE",serialize:"\\exponentialE"},{latexTrigger:"\\operatorname{e}",parse:"ExponentialE"},{latexTrigger:"\\mathrm{e}",parse:"ExponentialE"},{kind:"function",identifierTrigger:"exp",parse:"Exp"},{latexTrigger:"\\exp",parse:"Exp"},{name:"ImaginaryUnit",latexTrigger:["\\imaginaryI"]},{latexTrigger:"\\operatorname{i}",parse:"ImaginaryUnit"},{latexTrigger:"\\mathrm{i}",parse:"ImaginaryUnit"},{name:"Abs",kind:"matchfix",openTrigger:"|",closeTrigger:"|",parse:(n,e)=>se(e)?null:["Abs",e]},{kind:"matchfix",openTrigger:["\\vert"],closeTrigger:["\\vert"],parse:(n,e)=>se(e)?null:["Abs",e]},{identifierTrigger:"abs",kind:"function",parse:"Abs"},{name:"Add",latexTrigger:["+"],kind:"infix",associativity:"any",precedence:275,parse:(n,e,i)=>{if(i&&275<i.minPrec)return null;let t=n.parseExpression({...i,minPrec:275});return t===null?null:Oi("Add",e,t)},serialize:ic},{kind:"prefix",latexTrigger:["+"],precedence:275,parse:(n,e)=>e&&275<e.minPrec?null:n.parseExpression({...e,minPrec:400})},{name:"Ceil",kind:"matchfix",openTrigger:"\\lceil",closeTrigger:"\\rceil",parse:(n,e)=>se(e)?null:["Ceil",e]},{kind:"matchfix",openTrigger:["\u2308"],closeTrigger:["\u2309"],parse:(n,e)=>se(e)?null:["Ceil",e]},{identifierTrigger:"ceil",kind:"function",parse:"Ceil"},{name:"Chop",identifierTrigger:"chop",kind:"function",parse:"Chop"},{name:"Complex",precedence:274,serialize:(n,e)=>{let i=n.serialize(p(e,1)),t=O(p(e,2));if(t===0)return i;let r=t===1?"\\imaginaryI":t===-1?"-\\imaginaryI":v([n.serialize(p(e,2)),"\\imaginaryI"]);return O(p(e,1))===0?r:t!==null&&t<0?v([i,r]):v([i,"+",r])}},{name:"Divide",latexTrigger:"\\frac",precedence:600,parse:tc,serialize:il},{kind:"infix",latexTrigger:"\\over",associativity:"none",precedence:600,parse:"Divide"},{latexTrigger:["\\/"],kind:"infix",associativity:"left",precedence:600,parse:"Divide"},{latexTrigger:["/"],kind:"infix",associativity:"left",precedence:600,parse:"Divide"},{latexTrigger:["\\div"],kind:"infix",associativity:"left",precedence:600,parse:"Divide"},{name:"Exp",serialize:(n,e)=>{let i=p(e,1);return C(i)||O(i)!==null?v(["\\exponentialE^{",n.serialize(i),"}"]):v(["\\exp",n.wrap(L(i))])}},{name:"Factorial",latexTrigger:["!"],kind:"postfix",precedence:810},{name:"Factorial2",latexTrigger:["!","!"],kind:"postfix",precedence:810},{name:"Floor",kind:"matchfix",openTrigger:"\\lfloor",closeTrigger:"\\rfloor",parse:(n,e)=>se(e)?null:["Floor",e]},{kind:"matchfix",openTrigger:["\u230A"],closeTrigger:["\u230B"],parse:(n,e)=>se(e)?null:["Floor",e]},{identifierTrigger:"floor",kind:"function",parse:"Floor"},{latexTrigger:["\\Gamma"],parse:"Gamma"},{name:"GCD",identifierTrigger:"gcd",kind:"function"},{identifierTrigger:"GCD",kind:"function",parse:"GCD"},{name:"Half",serialize:"\\frac12"},{name:"Lg",latexTrigger:["\\lg"],serialize:(n,e)=>"\\log_{10}"+n.wrapArguments(e),parse:n=>{let e=n.parseArguments("implicit");return e===null?"Lg":["Log",...e,10]}},{name:"Lb",latexTrigger:"\\lb",parse:n=>{let e=n.parseArguments("implicit");return e===null?"Log":["Log",e[0],2]}},{name:"Ln",latexTrigger:["\\ln"],parse:n=>ol("Ln",n),serialize:(n,e)=>"\\ln"+n.wrapArguments(e)},{name:"Log",latexTrigger:["\\log"],parse:n=>ol("Log",n),serialize:(n,e)=>{let i=sn(e);return i?v(["\\log_{",n.serialize(i),"}",n.wrap(ke(e))]):"\\log"+n.wrapArguments(e)}},{name:"LCM",identifierTrigger:"lcm",kind:"function"},{identifierTrigger:"LCM",kind:"function",parse:"LCM"},{identifierTrigger:"max",kind:"function",parse:"Max"},{identifierTrigger:"min",kind:"function",parse:"Min"},{name:"Max",latexTrigger:"\\max",kind:"function"},{name:"Min",latexTrigger:"\\min",kind:"function"},{name:"Supremum",latexTrigger:"\\sup",kind:"function"},{name:"Infimum",latexTrigger:"\\inf",kind:"function"},{name:"Limit",latexTrigger:"\\lim",kind:"expression",parse:n=>{if(!n.match("_"))return null;let e=n.parseGroup();if(x(e)!=="To")return null;let i=n.parseArguments("implicit");return i?["Limit",["Function",i[0],p(e,1)],p(e,2)]:null},serialize:(n,e)=>{let i=p(e,1),t=p(i,2),r=p(e,2);return v(["\\lim_{",n.serialize(t),"\\to",n.serialize(r),"}",n.serialize(p(i,1))])}},{name:"MinusPlus",latexTrigger:["\\mp"],kind:"infix",associativity:"any",precedence:270},{name:"Multiply",latexTrigger:["\\times"],kind:"infix",associativity:"any",precedence:390,serialize:sl},{latexTrigger:["\\cdot"],kind:"infix",associativity:"any",precedence:390,parse:(n,e,i)=>{let t=n.parseExpression({...i,minPrec:392});return t===null?["Multiply",e,ci]:Oi("Multiply",e,t)}},{latexTrigger:["*"],kind:"infix",associativity:"any",precedence:390,parse:(n,e,i)=>{let t=n.parseExpression({...i,minPrec:392});return t===null?["Multiply",e,ci]:Oi("Multiply",e,t)}},{name:"Mod",latexTrigger:"\\bmod",kind:"infix",precedence:600,serialize:(n,e)=>{if(j(e)!==2)return"";let i=n.serialize(p(e,1)),t=n.serialize(p(e,2));return v([i,"\\bmod",t])}},{latexTrigger:"\\mod",kind:"infix",precedence:600,parse:"Mod"},{latexTrigger:"\\pmod",kind:"prefix",precedence:245,parse:n=>{let e=n.parseGroup()??n.parseToken();return["Mod",L(e)]}},{name:"Congruent",serialize:(n,e)=>{let i=n.serialize(p(e,1)),t=n.serialize(p(e,2));if(p(e,3)===null)return v([i,"\\equiv",t]);let r=n.serialize(p(e,3));return v([i,"\\equiv",t,"\\pmod{",r,"}"])}},{name:"Negate",latexTrigger:["-"],kind:"prefix",precedence:277,parse:(n,e)=>{if(/\d/.test(n.peek))return null;let i=n.index;if(n.parseNumber()!==null)return n.index=i,null;let t=n.parseExpression({...e,minPrec:278});return["Negate",L(t)]}},{kind:"matchfix",openTrigger:"||",closeTrigger:"||",parse:(n,e)=>se(e)?null:["Norm",e]},{name:"Norm",kind:"matchfix",openTrigger:["\\left","\\Vert"],closeTrigger:["\\right","\\Vert"],parse:(n,e)=>se(e)?null:["Norm",e]},{name:"PlusMinus",latexTrigger:["\\pm"],kind:"infix",associativity:"any",precedence:270,serialize:(n,e)=>{let i=p(e,1);if(i===null)return"\\pm";if(j(e)===1)return v(["\\pm",n.serialize(i)]);let t=p(e,2);return v([n.serialize(i),"\\pm",n.serialize(t)])}},{latexTrigger:["\\pm"],kind:"prefix",precedence:270,parse:(n,e)=>{let i=n.parseExpression({...e,minPrec:400});return["PlusMinus",L(i)]}},{latexTrigger:["\\plusmn"],kind:"infix",associativity:"any",precedence:270,parse:(n,e,i)=>{let t=n.parseExpression({...i,minPrec:400});return["PlusMinus",e,L(t)]}},{latexTrigger:["\\plusmn"],kind:"prefix",precedence:270,parse:(n,e)=>{let i=n.parseExpression({...e,minPrec:400});return["PlusMinus",L(i)]}},{name:"Power",latexTrigger:["^"],kind:"infix",serialize:vs},{latexTrigger:"\\prod",precedence:390,name:"Product",parse:tl("Product",390),serialize:rl("\\prod")},{name:"Rational",precedence:600,serialize:(n,e)=>e&&j(e)===1?"\\operatorname{Rational}"+n.wrapArguments(e):il(n,e)},{name:"Root",serialize:vs},{name:"Round",identifierTrigger:"round",kind:"function"},{name:"Square",precedence:720,serialize:(n,e)=>n.wrapShort(p(e,1))+"^2"},{latexTrigger:["\\sum"],precedence:275,name:"Sum",parse:tl("Sum",275),serialize:rl("\\sum")},{name:"Sign",identifierTrigger:"sgn",kind:"function"},{name:"Sqrt",latexTrigger:["\\sqrt"],parse:nc,serialize:vs},{name:"Subtract",latexTrigger:["-"],kind:"infix",associativity:"left",precedence:277,parse:(n,e,i)=>{n.index-=1;let t=n.parseExpression({...i,minPrec:278});return["Add",e,L(t)]},serialize:(n,e)=>{let i=n.wrap(p(e,1),277),t=n.wrap(p(e,2),278);return v([i,"-",t])}}];function tl(n,e){return i=>{i.skipSpace();let t=null,r=null;for(;!(r&&t)&&(i.peek==="_"||i.peek==="^");)i.match("_")?r=i.parseGroup()??i.parseToken():i.match("^")&&(t=i.parseGroup()??i.parseToken()),i.skipSpace();(r==="Nothing"||se(r))&&(r=null),(t==="Nothing"||se(t))&&(t=null);let o=null,s=null;x(r)==="Equal"?(o=p(r,1),s=p(r,2)):o=r,i.pushSymbolTable(),o&&i.addSymbol(C(o),"symbol");let a=i.parseExpression({minPrec:e+1});return i.popSymbolTable(),a?t?[n,a,["Tuple",o??"Nothing",s??1,t]]:s?[n,a,["Tuple",o??"Nothing",s]]:o?[n,a,["Tuple",o]]:[n,a]:[n]}}function rl(n){return(e,i)=>{if(!p(i,1))return n;let t=p(i,2),r=x(t);r!=="Tuple"&&r!=="Triple"&&r!=="Pair"&&r!=="Single"&&(t=null);let o=p(t,1);o&&x(o)==="Hold"&&(o=p(o,1));let s=p(i,1);if(!t)return p(i,2)?v([n,"_{",e.serialize(p(i,2)),"}",e.serialize(s)]):v([n,e.serialize(s)]);let a=p(t,2),l=[];o&&C(o)!=="Nothing"&&a?l=[e.serialize(o),"=",e.serialize(a)]:o&&C(o)!=="Nothing"?l=[e.serialize(o)]:a&&(l=[e.serialize(a)]),l.length>0&&(l=["_{",...l,"}"]);let u=[];return p(t,3)&&(u=["^{",e.serialize(p(t,3)),"}"]),v([n,...u,...l,e.serialize(s)])}}function ol(n,e){let i=null;e.match("_")&&(i=e.parseGroup()??e.nextToken());let t=e.parseArguments("implicit");return t===null&&i===null?[n]:t===null?[n,i]:i===null?[n,...t]:i===10?["Log",t[0]]:i===2?["Lb",...t]:["Log",t[0],i]}function Rt(n){let e=1,i=n;do if(n=i,kn(n)==="Negate")e*=-1,i=p(n,1);else if(kn(n)==="Multiply"){let[t,r]=Rt(p(n,1));r<0&&(e*=-1,t===1?i=["Multiply",...B(n).slice(1)]:i=["Multiply",t,...B(n).slice(1)])}else if(kn(n)==="Divide"||kn(n)==="Rational"){let[t,r]=Rt(p(n,1));r<0&&(e*=-1,i=[kn(n),t,p(n,2)])}else{let t=O(n);t!==null&&t<0&&(e*=-1,i=-t)}while(i!==n);return[n,e]}var ll=[{name:"Matrix",serialize:(n,e)=>{let i=B(p(e,1))??[];return ul(n,i,Z(p(e,2)),Z(p(e,3)))}},{name:"Vector",serialize:(n,e)=>{let i=B(e)??[];return ul(n,i.map(t=>["List",t]),Z(p(e,2)),Z(p(e,3)))}},{kind:"environment",identifierTrigger:"pmatrix",parse:n=>{let e=Zn(n),[i,t]=zn(n);return e?[i,t,{str:"()"},{str:e}]:[i,t]}},{kind:"environment",identifierTrigger:"bmatrix",parse:n=>{let e=Zn(n),[i,t]=zn(n);return e?[i,t,{str:"[]"},{str:e}]:[i,t,{str:"[]"}]}},{kind:"environment",identifierTrigger:"Bmatrix",parse:n=>{let e=Zn(n),[i,t]=zn(n);return e?[i,t,{str:"{}"},{str:e}]:[i,t,{str:"{}"}]}},{kind:"environment",identifierTrigger:"vmatrix",parse:n=>{let e=Zn(n),[i,t]=zn(n);return e?[i,t,{str:"||"},{str:e}]:[i,t,{str:"||"}]}},{kind:"environment",identifierTrigger:"Vmatrix",parse:n=>{let e=Zn(n),[i,t]=zn(n);return e?[i,t,{str:"\u2016\u2016"},{str:e}]:[i,t,{str:"\u2016\u2016"}]}},{kind:"environment",identifierTrigger:"smallmatrix",parse:n=>{let e=Zn(n),[i,t]=zn(n);return e?[i,t,{str:"()"},{str:e}]:[i,t]}},{kind:"environment",identifierTrigger:"array",parse:n=>{let e=Zn(n,!1),[i,t]=zn(n);return e?[i,t,{str:".."},{str:e}]:[i,t,{str:".."}]}},{kind:"environment",identifierTrigger:"matrix",parse:n=>{let e=Zn(n),[i,t]=zn(n);return e?[i,t,{str:".."},{str:e}]:[i,t,{str:".."}]}},{kind:"environment",identifierTrigger:"matrix*",parse:n=>{let e=Zn(n),[i,t]=zn(n);return e?[i,t,{str:".."},{str:e}]:[i,t,{str:".."}]}},{name:"ConjugateTranspose",kind:"postfix",latexTrigger:["^","\\star"]},{kind:"postfix",latexTrigger:["^","\\H"],parse:"ConjugateTranspose"},{kind:"postfix",latexTrigger:["^","\\dagger"],parse:(n,e)=>["ConjugateTranspose",e]},{kind:"postfix",latexTrigger:["^","\\ast"],parse:(n,e)=>["ConjugateTranspose",e]},{kind:"postfix",latexTrigger:["^","\\top"],parse:(n,e)=>["Transpose",e]},{kind:"postfix",latexTrigger:["^","\\intercal"],parse:(n,e)=>["Transpose",e]},{name:"Transpose",kind:"postfix",latexTrigger:["^","T"]},{name:"PseudoInverse",kind:"postfix",latexTrigger:["^","+"]},{name:"Trace",kind:"function",identifierTrigger:"tr"},{name:"Determinant",kind:"function",identifierTrigger:"det"}];function zn(n){let e=n.parseTabular();return e?["Matrix",["List",...e.map(i=>["List",...i])]]:["",null]}function Zn(n,e=!0){let i=n.parseStringGroup(e)?.trim();if(!i)return"";let t="";for(let r of i)r==="c"&&(t+="="),r==="l"&&(t+="<"),r==="r"&&(t+=">"),r==="|"&&(t+="|"),r===":"&&(t+=":");return t}function ul(n,e,i,t){i??(i="()");let[r,o]=["",""];typeof i=="string"&&i.length===2&&([r,o]=i);let s="";if(t)for(let f of t)f==="<"?s+="l":f===">"?s+="r":f==="="?s+="c":f==="|"?s+="|":f===":"&&(s+=":");let a=[];for(let f of e??[]){let d=[];for(let c of B(f)??[])d.push(n.serialize(c));a.push(d.join(" & "))}let l=a.join(`\\\\
|
|
50
|
+
`),u=s.length>0?`[${s}]`:"";return r==="("&&o===")"?v(["\\begin{pmatrix}",u,l,"\\end{pmatrix}"]):r==="["&&o==="]"?v(["\\begin{bmatrix}",u,l,"\\end{bmatrix}"]):r==="{"&&o==="}"?v(["\\begin{Bmatrix}",u,l,"\\end{Bmatrix}"]):r==="|"&&o==="|"?v(["\\begin{vmatrix}",u,l,"\\end{vmatrix}"]):r==="\u2016"&&o==="\u2016"?v(["\\begin{Vmatrix}",u,l,"\\end{Vmatrix}"]):r==="{"&&o==="."?v(["\\begin{dcases}",u,l,"\\end{dcases}"]):r==="."&&o==="}"?v(["\\begin{rcases}",u,l,"\\end{rcases}"]):s||r!=="."||o!=="."?v(["\\left",$i[r]??r,"\\begin{array}",`{${s}}`,l,"\\end{array}","\\right",$i[o]??o]):v(["\\begin{matrix}",l,"\\end{matrix}"])}var fl=[{name:"True",kind:"symbol",latexTrigger:["\\top"]},{kind:"symbol",latexTrigger:"\\mathrm{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\operatorname{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\mathsf{T}",parse:"True"},{name:"False",kind:"symbol",latexTrigger:["\\bot"]},{kind:"symbol",latexTrigger:"\\operatorname{False}",parse:"False"},{kind:"symbol",latexTrigger:"\\mathsf{F}",parse:"False"},{name:"And",kind:"infix",latexTrigger:["\\land"],precedence:317},{kind:"infix",latexTrigger:["\\wedge"],parse:"And",precedence:317},{kind:"infix",latexTrigger:"\\&",parse:"And",precedence:317},{kind:"infix",latexTrigger:"\\operatorname{and}",parse:"And",precedence:317},{name:"Or",kind:"infix",latexTrigger:["\\lor"],precedence:310},{kind:"infix",latexTrigger:["\\vee"],parse:"Or",precedence:310},{kind:"infix",latexTrigger:"\\parallel",parse:"Or",precedence:310},{kind:"infix",latexTrigger:"\\operatorname{or}",parse:"Or",precedence:310},{name:"Xor",kind:"infix",latexTrigger:["\\veebar"],precedence:315},{name:"Not",kind:"prefix",latexTrigger:["\\lnot"],precedence:880},{kind:"prefix",latexTrigger:["\\neg"],parse:"Not",precedence:880},{name:"Nand",kind:"infix",latexTrigger:["\\barwedge"],precedence:315},{name:"Nor",kind:"infix",latexTrigger:["\u22BD"],precedence:315},{kind:"function",identifierTrigger:"and",parse:"And"},{kind:"function",identifierTrigger:"or",parse:"Or"},{kind:"function",identifierTrigger:"not",parse:"Not"},{name:"Implies",kind:"infix",precedence:220,associativity:"right",latexTrigger:["\\implies"],serialize:"\\implies"},{latexTrigger:["\\Rightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{name:"Equivalent",latexTrigger:["\\iff"],kind:"infix",associativity:"right",precedence:219},{latexTrigger:["\\Leftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\equiv"],kind:"infix",associativity:"right",precedence:219,parse:(n,e,i)=>{let t=n.parseExpression({...i,minPrec:219}),r=n.index,o=n.parseExpression({...i,minPrec:219});return o&&x(o)==="Mod"?["Congruent",e,t,L(p(o,1))]:(n.index=r,["Equivalent",e,L(t)])}},{name:"Proves",kind:"infix",latexTrigger:["\\vdash"],precedence:220,associativity:"right",serialize:"\\vdash"},{name:"Entails",kind:"infix",latexTrigger:["\\vDash"],precedence:220,associativity:"right",serialize:"\\vDash"},{name:"Satisfies",kind:"infix",latexTrigger:["\\models"],precedence:220,associativity:"right",serialize:"\\models"},{name:"ForAll",kind:"prefix",latexTrigger:["\\forall"],precedence:200,serialize:"\\forall",parse:Ns("ForAll")},{name:"Exists",kind:"prefix",latexTrigger:["\\exists"],precedence:200,serialize:"\\exists",parse:Ns("Exists")},{name:"ExistsUnique",kind:"prefix",latexTrigger:["\\exists","!"],precedence:200,serialize:"\\exists!",parse:Ns("ExistsUnique")}];function Ns(n){return(e,i)=>{let t=e.index,r=e.parseSymbol(i);if(r){if(e.skipSpace(),e.match(",")||e.match("\\mid")||e.match(".")){let s=e.parseExpression(i);return[n,r,L(s)]}if(e.match("(")){let s=e.parseExpression(i);return e.match(")")?[n,r,L(s)]:(e.index=t,null)}}e.index=t;let o=e.parseExpression(i);if(!o)return e.index=t,null;if(e.skipSpace(),e.matchAny([",","\\mid",":","\\colon"])){let s=e.parseExpression(i);return[n,o,L(s)]}if(e.match("(")){let s=e.parseExpression(i);return e.match(")")?[n,o,L(s)]:(e.index=t,null)}return e.index=t,null}}function $e(n){return e=>{let i=e.parseGroup();return i===null?[n]:[n,i]}}var dl=[{name:"Overscript",latexTrigger:["\\overset"],kind:"infix",precedence:700},{name:"Underscript",latexTrigger:["\\underset"],kind:"infix",precedence:700},{name:"Increment",latexTrigger:["+","+"],kind:"postfix",precedence:880,parse:(n,e)=>C(e)===null?null:["Decrement",e]},{name:"Decrement",latexTrigger:["-","-"],kind:"postfix",precedence:880,parse:(n,e)=>C(e)===null?null:["Decrement",e]},{name:"PreIncrement",latexTrigger:["+","+"],kind:"prefix",precedence:880,parse:(n,e)=>{if(e&&275<e.minPrec)return null;let i=n.parseExpression(e);return C(i)===null?null:["PreIncrement",i]}},{name:"PreDecrement",latexTrigger:["-","-"],kind:"prefix",precedence:880,parse:(n,e)=>{if(e&&275<e.minPrec)return null;let i=n.parseExpression(e);return C(i)===null?null:["PreDecrement",i]}},{name:"Ring",latexTrigger:["\\circ"],kind:"infix",precedence:265},{name:"StringJoin",latexTrigger:["\\lt","\\gt"],kind:"infix",precedence:780},{name:"Starstar",latexTrigger:["\\star","\\star"],kind:"infix",precedence:780},{name:"PartialDerivative",latexTrigger:["\\partial"],kind:"prefix",parse:n=>{let e=!1,i="Nothing",t="Nothing";for(;!e;)n.skipSpace(),n.match("_")?t=n.parseGroup()??n.parseToken():n.match("^")?i=n.parseGroup()??n.parseToken():e=!0;let r=Kt(t);if(r&&(t=["List",...r]),t===null||i===null)return null;let o=n.parseGroup()??"Nothing";if(o!=="Nothing"&&!se(o)){let s=n.parseArguments()??["Nothing"];o=[o,...s]}return["PartialDerivative",o,t,i]},serialize:(n,e)=>{let i="\\partial",t=p(e,1),r=p(e,2),o=p(e,3);return r!==null&&r!=="Nothing"&&(x(r)==="List"?i+="_{"+n.serialize(["Sequence",...B(r)??[]])+"}":i+="_{"+n.serialize(r)+"}"),o!==null&&o!=="Nothing"&&(i+="^{"+n.serialize(o)+"}"),t!==null&&t!=="Nothing"&&(i+=n.serialize(t)),i},precedence:740},{name:"OverBar",latexTrigger:["\\overline"],parse:$e("OverBar")},{name:"UnderBar",latexTrigger:["\\underline"],parse:$e("UnderBar")},{name:"OverVector",latexTrigger:["\\vec"],parse:$e("OverVector")},{name:"OverTilde",latexTrigger:["\\tilde"],parse:$e("OverTilde")},{name:"OverHat",latexTrigger:["\\hat"],parse:$e("OverHat")},{name:"OverRightArrow",latexTrigger:["\\overrightarrow"],parse:$e("OverRightArrow")},{name:"OverLeftArrow",latexTrigger:["\\overleftarrow"],parse:$e("OverLeftArrow")},{name:"OverRightDoubleArrow",latexTrigger:["\\Overrightarrow"],parse:$e("OverRightDoubleArrow")},{name:"OverLeftHarpoon",latexTrigger:["\\overleftharpoon"],parse:$e("OverLeftHarpoon")},{name:"OverRightHarpoon",latexTrigger:["\\overrightharpoon"],parse:$e("OverRightHarpoon")},{name:"OverLeftRightArrow",latexTrigger:["\\overleftrightarrow"],parse:$e("OverLeftRightArrow")},{name:"OverBrace",latexTrigger:["\\overbrace"],parse:$e("OverBrace")},{name:"OverLineSegment",latexTrigger:["\\overlinesegment"],parse:$e("OverLineSegment")},{name:"OverGroup",latexTrigger:["\\overgroup"],parse:$e("OverGroup")},{latexTrigger:["\\displaystyle"],parse:()=>["Sequence"]},{latexTrigger:["\\textstyle"],parse:()=>["Sequence"]},{latexTrigger:["\\scriptstyle"],parse:()=>["Sequence"]},{latexTrigger:["\\scriptscriptstyle"],parse:()=>["Sequence"]},{latexTrigger:["\\tiny"],parse:()=>["Sequence"]},{latexTrigger:["\\scriptsize"],parse:()=>["Sequence"]},{latexTrigger:["\\footnotesize"],parse:()=>["Sequence"]},{latexTrigger:["\\small"],parse:()=>["Sequence"]},{latexTrigger:["\\normalsize"],parse:()=>["Sequence"]},{latexTrigger:["\\large"],parse:()=>["Sequence"]},{latexTrigger:["\\Large"],parse:()=>["Sequence"]},{latexTrigger:["\\LARGE"],parse:()=>["Sequence"]},{latexTrigger:["\\huge"],parse:()=>["Sequence"]},{latexTrigger:["\\Huge"],parse:()=>["Sequence"]},{name:"Style",serialize:(n,e)=>{let i=n.serialize(p(e,1)),t=pi(p(e,2));if(t===null)return i;Z(t.display)==="block"?i=v(["{\\displaystyle",i,"}"]):Z(t.display)==="inline"?i=v(["{\\textstyle",i,"}"]):Z(t.display)==="script"?i=v(["{\\scriptstyle",i,"}"]):Z(t.display)==="scriptscript"&&(i=v(["{\\scriptscriptstyle",i,"}"]));let r=O(t.size);return r!==null&&r>=1&&r<=10&&(i=v(["{",{1:"\\tiny",2:"\\scriptsize",3:"\\footnotesize",4:"\\small",5:"\\normalsize",6:"\\large",7:"\\Large",8:"\\LARGE",9:"\\huge",10:"\\Huge"}[r],i,"}"])),i}},{latexTrigger:["\\!"],parse:()=>["HorizontalSpacing",-3]},{latexTrigger:["\\ "],parse:()=>["HorizontalSpacing",6]},{latexTrigger:["\\:"],parse:()=>["HorizontalSpacing",4]},{latexTrigger:["\\enskip"],parse:()=>["HorizontalSpacing",9]},{latexTrigger:["\\quad"],parse:()=>["HorizontalSpacing",18]},{latexTrigger:["\\qquad"],parse:()=>["HorizontalSpacing",36]},{latexTrigger:["\\,"],parse:()=>["HorizontalSpacing",3]},{latexTrigger:["\\;"],parse:()=>["HorizontalSpacing",5]},{latexTrigger:["\\enspace"],parse:()=>["HorizontalSpacing",9]},{name:"HorizontalSpacing",serialize:(n,e)=>{if(p(e,2))return n.serialize(p(e,1));let i=O(p(e,1));return i===null?"":{"-3":"\\!",6:"\\ ",3:"\\,",4:"\\:",5:"\\;",9:"\\enspace",18:"\\quad",36:"\\qquad"}[i]??""}}];function Y(n){return(e,i)=>{let t={"\\arcsin":"Arcsin","\\arccos":"Arccos","\\arctan":"Arctan","\\arctg":"Arctan","\\arcctg":"Arctan","\\arcsec":"Arcsec","\\arccsc":" Arccsc","\\arsinh":"Arsinh","\\arcosh":"Arcosh","\\artanh":"Artanh","\\arcsech":"Arcsech","\\arccsch":"Arcsch","\\ch":"Cosh","\\cos":"Cos","\\cosec":"Csc","\\cosh":"Csch","\\cot":"Cot","\\cotg":"Cot","\\coth":"Coth","\\csc":"Csc","\\csch":"Csch","\\ctg":"Cot","\\cth":"Coth","\\sec":"Sec","\\sech":"Sech","\\sin":"Sin","\\sinh":"Sinh","\\sh":"Sinh","\\tan":"Tan","\\tanh":"Tanh","\\tg":"Tan","\\th":"Tanh"},r=t[n??""]??n??"";if(e.atTerminator(i))return r;let o=r;do{let u=e.parsePostfixOperator(o,i);if(u===null)break;o=u}while(!0);let s=null;e.match("^")&&(s=e.parseGroup()??e.parseToken());let a=e.parseArguments("implicit",{minPrec:390,condition:u=>t[u.peek]||(i?.condition?.(u)??!1)}),l=a===null?o:typeof o=="string"?[o,...a]:["Apply",o,...a];return s===null?l:["Power",l,s]}}var cl=[{name:"Arcsin",latexTrigger:["\\arcsin"],parse:Y("Arcsin")},{name:"Arccos",latexTrigger:["\\arccos"],parse:Y("Arccos")},{name:"Arctan",latexTrigger:["\\arctan"],parse:Y("Arctan")},{latexTrigger:["\\arctg"],parse:Y("Arctan")},{name:"Arccot",latexTrigger:["\\arcctg"],parse:Y("Arccot")},{name:"Arcsec",latexTrigger:"arcsec",parse:Y("Arcsec")},{name:"Arccsc",latexTrigger:["\\arccsc"],parse:Y("Arccsc")},{name:"Arsinh",latexTrigger:["\\arsinh"],parse:Y("Arsinh")},{name:"Arcosh",latexTrigger:["\\arcosh"],parse:Y("Arcosh")},{name:"Artanh",latexTrigger:["\\artanh"],parse:Y("Artanh")},{name:"Arsech",latexTrigger:["\\arsech"],parse:Y("Arsech")},{name:"Arcsch",latexTrigger:["\\arcsch"],parse:Y("Arcsch")},{latexTrigger:["\\ch"],parse:Y("Cosh")},{name:"Cosec",latexTrigger:["\\cosec"],parse:Y("Cosec")},{name:"Cosh",latexTrigger:["\\cosh"],parse:Y("Cosh")},{name:"Cot",latexTrigger:["\\cot"],parse:Y("Cot")},{latexTrigger:["\\cotg"],parse:Y("Cot")},{name:"Coth",latexTrigger:["\\coth"],parse:Y("Coth")},{name:"Csc",latexTrigger:["\\csc"],parse:Y("Csc")},{name:"Csch",latexTrigger:["\\csch"],parse:Y("Csch")},{latexTrigger:["\\ctg"],parse:Y("Cot")},{latexTrigger:["\\cth"],parse:Y("Cotanh")},{name:"Sec",latexTrigger:["\\sec"],parse:Y("Sec")},{name:"Sech",latexTrigger:["\\sech"],parse:Y("Sech")},{name:"Sinh",latexTrigger:["\\sinh"],parse:Y("Sinh")},{latexTrigger:["\\sh"],parse:Y("Sinh")},{name:"Tan",latexTrigger:["\\tan"],parse:Y("Tan")},{latexTrigger:["\\tg"],parse:Y("Tan")},{name:"Tanh",latexTrigger:["\\tanh"],parse:Y("Tanh")},{latexTrigger:["\\th"],parse:Y("Tanh")},{name:"Cos",latexTrigger:["\\cos"],parse:Y("Cos")},{name:"Sin",latexTrigger:["\\sin"],parse:Y("Sin")}];var pl=[{name:"AlgebraicNumbers",latexTrigger:"\\bar\\Q"},{name:"ComplexNumbers",latexTrigger:["\\C"]},{latexTrigger:"\\mathbb{C}",parse:"ComplexNumbers"},{name:"ImaginaryNumbers",latexTrigger:["\\imaginaryI","\\R"]},{name:"ExtendedComplexNumbers",latexTrigger:["\\bar","\\C"]},{name:"EmptySet",latexTrigger:["\\emptyset"]},{latexTrigger:["\\varnothing"],parse:"EmptySet"},{name:"Integers",latexTrigger:["\\Z"]},{latexTrigger:"\\mathbb{Z}",parse:"Integers"},{name:"RationalNumbers",latexTrigger:["\\Q"]},{name:"RealNumbers",latexTrigger:["\\R"]},{latexTrigger:"\\mathbb{R}",parse:"RealNumbers"},{name:"ExtendedRealNumbers",latexTrigger:["\\bar","\\R"]},{name:"TranscendentalNumberss",latexTrigger:"\\R-\\bar\\Q"},{latexTrigger:"\\R\\backslash\\bar\\Q",parse:"TranscendentalNumbers"},{name:"NegativeNumbers",latexTrigger:"\\R^-"},{latexTrigger:"\\R^{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R_-",parse:"NegativeNumbers"},{latexTrigger:"\\R_{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt}",parse:"NegativeNumbers"},{name:"PositiveNumbers",latexTrigger:"\\R^+"},{latexTrigger:"\\R^{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R_+",parse:"PositiveNumbers"},{latexTrigger:"\\R_{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt}",parse:"PositiveNumbers"},{name:"NonPositiveNumbers",latexTrigger:"\\R^{0-}"},{latexTrigger:"\\R^{-0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{\\leq}",parse:"NonPositiveNumbers"},{name:"NegativeIntegers",latexTrigger:"\\Z^-"},{latexTrigger:"\\Z^-",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z_-",parse:"NegativeIntegers"},{latexTrigger:"\\Z_{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{\\lt}",parse:"NegativeIntegers"},{name:"PositiveIntegers",latexTrigger:"\\Z^+"},{latexTrigger:"\\Z^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_+",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\N^+",parse:"PositiveIntegers"},{latexTrigger:"\\N^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\N^*",parse:"PositiveIntegers"},{latexTrigger:"\\N^{*}",parse:"PositiveIntegers"},{latexTrigger:"\\N^\\star",parse:"PositiveIntegers"},{latexTrigger:"\\N^{\\star}",parse:"PositiveIntegers"},{latexTrigger:"\\N_1",parse:"PositiveIntegers"},{latexTrigger:"\\N_{1}",parse:"PositiveIntegers"},{name:"NonNegativeIntegers",latexTrigger:["\\N"]},{latexTrigger:"\\Z^{+0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{0+}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_0",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_{0}",parse:"NonNegativeIntegers"},{latexTrigger:["^","\\complement"],kind:"postfix",parse:(n,e)=>["Complement",e]},{name:"Complement",latexTrigger:["^","<{>","\\complement","<}>"],kind:"postfix"},{name:"Intersection",latexTrigger:["\\cap"],kind:"infix",precedence:350},{name:"Interval",serialize:ml},{name:"Multiple",serialize:ml},{name:"Union",latexTrigger:["\\cup"],kind:"infix",precedence:350},{name:"Set",kind:"matchfix",openTrigger:"{",closeTrigger:"}",parse:(n,e)=>e===null||se(e)?"EmptySet":(x(e)=="Delimiter"&&Z(p(e,2))===","&&(e=p(e,1)),x(e)!=="Sequence"?["Set",e]:["Set",...B(e)??[]]),serialize:(n,e)=>v(["\\lbrace",(B(e)??[]).map(i=>n.serialize(i)).join(", "),"\\rbrace"])},{name:"SetMinus",latexTrigger:["\\setminus"],kind:"infix",precedence:650},{name:"SymmetricDifference",latexTrigger:["\\triangle"],kind:"infix",precedence:245},{latexTrigger:["\\ni"],kind:"infix",associativity:"none",precedence:160,parse:(n,e,i)=>{let t=n.parseExpression(i);return t===null?null:["Element",t,e]}},{name:"Element",latexTrigger:["\\in"],kind:"infix",precedence:240},{name:"NotElement",latexTrigger:["\\notin"],kind:"infix",precedence:240},{name:"NotSubset",latexTrigger:["\\nsubset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSuperset",latexTrigger:["\\nsupset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSubsetNotEqual",latexTrigger:["\\nsubseteq"],kind:"infix",associativity:"none",precedence:240},{name:"NotSupersetNotEqual",latexTrigger:["\\nsupseteq"],kind:"infix",associativity:"none",precedence:240},{name:"SquareSubset",latexTrigger:["\\sqsubset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSubsetEqual",latexTrigger:["\\sqsubseteq"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSuperset",latexTrigger:["\\sqsupset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSupersetEqual",latexTrigger:["\\sqsupseteq"],kind:"infix",associativity:"none",precedence:265},{name:"Subset",latexTrigger:["\\subset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\subsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{latexTrigger:["\\varsubsetneqq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{name:"SubsetEqual",latexTrigger:["\\subseteq"],kind:"infix",associativity:"none",precedence:240},{name:"Superset",latexTrigger:["\\supset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\supsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{latexTrigger:["\\varsupsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{name:"SupersetEqual",latexTrigger:["\\supseteq"],kind:"infix",associativity:"none",precedence:240}];function ml(n,e){if(e===null)return"";let i=x(e);if(i===null)return"";if(i==="Set")return j(e)===0?"\\emptyset":j(e)===2&&x(p(e,2))==="Condition"?v(["\\left\\lbrace",n.serialize(p(e,1)),"\\middle\\mid",n.serialize(p(e,2)),"\\right\\rbrace"]):v(["\\left\\lbrace",...(B(e)??[]).map(r=>n.serialize(r)+" ,"),"\\right\\rbrace"]);if(i==="Range")return v(["\\mathopen\\lbrack",n.serialize(p(e,1)),", ",n.serialize(p(e,2)),"\\mathclose\\rbrack"]);if(i==="Interval"){let r=p(e,1),o=p(e,2),s=!1,a=!1;return x(r)==="Open"&&(r=p(r,1),s=!0),x(o)==="Open"&&(o=p(o,1),a=!0),v([`\\mathopen${s?"\\rbrack":"\\lbrack"}`,n.serialize(r),", ",n.serialize(o),`\\mathclose${a?"\\lbrack":"\\rbrack"}`])}let t=n.numericSetStyle(e,n.level);return""}function Ki(n,e=1){return i=>{i.skipSpace();let t=null,r=null;for(;!(r!==null&&t!==null)&&(i.peek==="_"||i.peek==="^");)i.match("_")?r=i.parseGroup()??i.parseToken():i.match("^")&&(t=i.parseGroup()??i.parseToken()),i.skipSpace();(r==="Nothing"||se(r))&&(r=null),(t==="Nothing"||se(t))&&(t=null);let[o,s]=oc(i,e);if(o&&!s){if(x(o)==="Add"||x(o)==="Subtract"){let a=[],l=[];for(let u of B(o)??[])if(s)l.push(u);else{let f;[f,s]=Tn(u),a.push(f??u)}if(s!==null&&l.length>0)return["Add",hl(i,n,["Add",...a],[{index:s,sub:r,sup:t}]),...l]}else if(x(o)==="Divide"){let a;[a,s]=Tn(p(o,1)),a!==null&&s!==null&&(o=["Divide",a,p(o,2)])}}return hl(i,n,o,[{index:s,sub:r,sup:t}])}}function hl(n,e,i,t){if(i&&t.length===0)return[e,i];i??(i="Nothing"),n.pushSymbolTable();for(let r of t)r.index&&n.addSymbol(r.index,"symbol");return n.popSymbolTable(),[e,i,...t.map(r=>rc(r))]}function rc(n){let e=n.index?["Hold",n.index]:"Nothing";return n.sup!==null?["Tuple",e,n.sub??"Nothing",n.sup]:n.sub!==null?["Tuple",e,n.sub]:e}function oc(n,e=1){let i=n.index,t=!1,r=n.parseExpression({minPrec:266,condition:()=>((n.matchAll(["\\mathrm","<{>","d","<}>"])||n.matchAll(["\\operatorname","<{>","d","<}>"]))&&(t=!0),t)});if(t||(n.index=i,r=n.parseExpression({minPrec:266,condition:()=>(n.match("d")&&(t=!0),t)})),r&&!t)return Tn(r);let o=sc(n,e);return[r,o[0]??null]}function sc(n,e=1){n.skipSpace();let i=[],t=C(n.parseSymbol());return t===null?[]:(i.push(t),i)}function Tn(n){let e=x(n),i=p(n,1);if(!i)return[n,null];if(e==="Sequence"&&j(n)===1)return Tn(i);if(e==="Multiply"||e==="InvisibleOperator"){let t=B(n);if(t&&t.length>1){let r=C(t[t.length-2]);if(r==="d"||r==="d_upright")return t.length===2?[null,C(t[1])]:t.length===3?[t[0],C(t[2])]:[["Multiply",...t.slice(0,-2)],C(t[t.length-1])];let[o,s]=Tn(t[t.length-1]);if(o)return[["Multiply",...t.slice(0,-1),o],s]}}else if(e==="Delimiter"){let[t,r]=Tn(i);if(r)return t?[["Delimiter",["Sequence",t],...B(n).slice(1)],r]:[null,r]}else if(e==="Add"){let t=B(n);if(t&&t.length>0){let[r,o]=Tn(t[t.length-1]);if(o){if(r)return[["Add",...t.slice(0,-1),r],o];if(t.length>2)return[["Add",...t.slice(0,-1)],o];if(t.length>2)return[t[0],o]}}}else if(e==="Negate"){let[t,r]=Tn(i);if(r)return[t?["Negate",t]:null,r]}else if(e==="Divide"){let[t,r]=Tn(i);if(r)return[["Divide",t??1,p(n,2)],r]}else{let t=B(n);if(t?.length===1){let[r,o]=Tn(t[0]);if(o)return[[x(n),r],o]}}return[n,null]}function gl(n){return(e,i)=>{if(!p(i,1))return n;let t=p(i,2),r=x(t),o=null;r==="Tuple"||r==="Triple"||r==="Pair"||r==="Single"?o=p(t,1):r==="Hold"?o=p(t,1):(o=p(t,1)??"x",t=null),x(o)==="Hold"&&(o=p(o,1));let s=o!==null?C(o):null,a=p(i,1);if(x(a)==="Lambda"&&p(a,1)&&(a=ot(p(a,1),{_:s??"x",_1:s??"x"})),!t)return!s||s==="Nothing"?v([n,"\\!",e.serialize(a)]):v([n,"\\!",e.serialize(a),"\\,\\operatorname{d}",e.serialize(s)]);let l=p(t,2)?C(p(t,2)):null,u=t&&l!=="Nothing"?e.serialize(p(t,2)):"";u.length>0&&(u=`_{${u}}`);let f="",d=p(t,3)?C(p(t,3)):null;return p(t,3)&&d!=="Nothing"&&(f=`^{${e.serialize(p(t,3))}}`),v([n,f,u,"\\!",e.serialize(a),...s&&C(s)!=="Nothing"?["\\,\\operatorname{d}",e.serialize(s)]:[]])}}var xl=[{kind:"expression",name:"Integrate",latexTrigger:["\\int"],parse:Ki("Integrate"),serialize:gl("\\int")},{kind:"expression",latexTrigger:["\\iint"],parse:Ki("Integrate",2)},{kind:"expression",latexTrigger:["\\iiint"],parse:Ki("Integrate",3)},{kind:"expression",name:"CircularIntegrate",latexTrigger:["\\oint"],parse:Ki("CircularIntegrate"),serialize:gl("\\oint")},{kind:"expression",latexTrigger:["\\oiint"],parse:Ki("CircularIntegrate",2)},{kind:"expression",latexTrigger:["\\oiiint"],parse:Ki("CircularIntegrate",3)}];var bl=[{name:"Real",kind:"function",latexTrigger:["\\Re"]},{name:"Imaginary",kind:"function",latexTrigger:["\\Im"]},{name:"Argument",kind:"function",latexTrigger:["\\arg"]},{name:"Conjugate",latexTrigger:["^","\\star"],kind:"postfix"}];var yl=[{name:"Mean",kind:"function",identifierTrigger:"mean"},{name:"Median",kind:"function",identifierTrigger:"median"},{name:"StandarDeviation",kind:"function",identifierTrigger:"stddev"},{latexTrigger:["\\bar"],kind:"expression",parse:(n,e)=>{let i=n.parseGroup()??n.parseToken();return!i||!C(i)?null:["Mean",i]}}];var El={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","|":"\\vert","||":"\\Vert","\\lceil":"\\lceil","\\lfloor":"\\lfloor","\\rceil":"\\rceil","\\rfloor":"\\rfloor"};function vl(n,e,i){let t=ac(e,i);if(t===null)return;let r="kind"in e?e.kind:"expression",o=t.latexTrigger;typeof o=="string"&&(n.lookahead=Math.max(n.lookahead,rr(o)));let s=be(o??"");if(s.length===2&&/[_^]/.test(s[0])&&s[1]!=="<{>"&&r!=="function"&&r!=="environment"&&r!=="matchfix"){let a=e.parse;!a&&e.name&&(r==="postfix"||r==="prefix"?a=(l,u)=>[e.name,u]:a=e.name),vl(n,{...e,kind:r,name:void 0,serialize:void 0,parse:a,latexTrigger:[s[0],"<{>",s[1],"<}>"]},i)}n.defs.push(t),t.name!==void 0&&(n.ids.has(t.name)&&i({severity:"warning",message:["invalid-dictionary-entry",t.name,"Duplicate definition. The name (MathJSON identifier) must be unique, but triggers can be shared by multiple definitions."]}),n.ids.set(t.name,t))}function _s(n,e){let i={lookahead:1,ids:new Map,defs:[]};for(let t of n)vl(i,t,e);return i}function ac(n,e){if(!fc(n,e))return null;let i={kind:"kind"in n?n.kind:"expression"},t=null;"latexTrigger"in n&&(typeof n.latexTrigger=="string"?t=be(n.latexTrigger):t=n.latexTrigger);let r=null;"identifierTrigger"in n&&(r=n.identifierTrigger),t!==null&&(i.latexTrigger=yn(t)),r!==null&&(i.identifierTrigger=r),n.name&&(i.name=n.name,i.serialize=uc(n,t,r)),i.kind==="matchfix"&&ct(n)&&(i.openTrigger=n.openTrigger,i.closeTrigger=n.closeTrigger),i.kind==="symbol"&&xa(n)&&(i.precedence=n.precedence??1e4),i.kind==="expression"&&ga(n)&&(i.precedence=n.precedence??1e4),(i.kind==="prefix"||i.kind==="postfix")&&(or(n)||No(n))&&(t&&(t[0]==="^"||t[0]==="_")?(i.precedence=720,n.precedence):i.precedence=n.precedence??1e4),i.kind==="infix"&&vo(n)&&(!t||t[0]!=="^"&&t[0]!=="_"||!n.associativity||n.associativity,i.associativity=n.associativity??"none",i.precedence=n.precedence??1e4);let o=lc(n,t,r);return o&&(i.parse=o),i}function uc(n,e,i){if(typeof n.serialize=="function")return n.serialize;let t=n.kind??"expression";if(t==="environment"){let s=n.identifierTrigger??n.name??"unknown";return(a,l)=>v([`\\begin{${s}}`,a.serialize(p(l,1)),`\\end{${s}}`])}if(ct(n)){let s=typeof n.openTrigger=="string"?El[n.openTrigger]:yn(n.openTrigger),a=typeof n.closeTrigger=="string"?El[n.closeTrigger]:yn(n.closeTrigger);return(l,u)=>v([s,l.serialize(p(u,1)),a])}let r=n.serialize;if(r===void 0&&e&&(r=yn(e)),r)return t==="postfix"?(s,a)=>v([s.serialize(p(a,1)),r]):t==="prefix"?(s,a)=>v([r,s.serialize(p(a,1))]):t==="infix"?(s,a)=>{let l=j(a);if(l===0)return"";let u=n.precedence??1e4;return v(B(a).flatMap((f,d)=>{let c=s.wrap(f,u+1);return d<l-1?[c,r]:[c]}))}:(s,a)=>x(a)?v([r,s.wrapArguments(a)]):r;let o=i??n.name??"unknown";return t==="postfix"?(s,a)=>v([s.serialize(p(a,1)),s.serializeSymbol(o)]):t==="prefix"?(s,a)=>v([s.serializeSymbol(o),s.serialize(p(a,1))]):t==="infix"?(s,a)=>v([s.serialize(p(a,1)),s.serializeSymbol(o),s.serialize(p(a,2))]):(s,a)=>x(a)?v([s.serializeSymbol(o),s.wrapArguments(a)]):s.serializeSymbol(o)}function lc(n,e,i){if("parse"in n&&typeof n.parse=="function")return n.parse;let t="kind"in n?n.kind:"expression";if(t==="environment"){let r=n.parse??n.name??i;if(r)return(o,s)=>{let a=o.parseTabular();return a===null?null:[r,["List",a.map(l=>["List",...l])]]}}if(t==="function"){let r=n.parse??n.name??i;if(r)return(o,s)=>{let a=o.parseArguments("enclosure",s);return a===null?r:[r,...a]}}if(t==="symbol"){let r=n.parse??n.name??i;if(r)return(o,s)=>r}if(t==="prefix"){let r=n.parse??n.name??i;if(r){let o=n.precedence??1e4;return(s,a)=>{let l=s.parseExpression({...a??[],minPrec:o});return l===null?null:[r,l]}}}if(t==="postfix"){let r=n.parse??n.name;if(r)return(o,s)=>s===null?null:[r,s]}if(t==="infix"){if(/[_^]/.test(e?.[0]??"")){let o=n.name??n.parse;return(s,a)=>[o,L(p(a,1)),L(p(a,2))]}let r=n.parse??n.name??i;if(r){let o=n.precedence??1e4,s=n.associativity??"none";return s==="none"?(a,l,u)=>{if(l===null)return null;let f=L(a.parseExpression({...u,minPrec:o}));return[r,l,f]}:s==="left"?(a,l,u)=>{if(l===null)return null;let f=L(a.parseExpression({...u,minPrec:o+1}));return typeof r!="string"?[r,l,f]:[r,l,f]}:s==="right"?(a,l,u)=>{if(l===null)return null;let f=L(a.parseExpression({...u,minPrec:o}));return typeof r!="string"?[r,l,f]:[r,l,f]}:(a,l,u)=>{if(l===null)return null;let f=L(a.parseExpression({...u,minPrec:o}));return typeof r!="string"?[r,l,f]:Oi(r,l,f)}}}if(t==="matchfix"){let r=n.parse??n.name;if(r)return(o,s)=>s===null||se(s)?null:[r,s]}if(t==="expression"){let r=n.parse??n.name??i;if(r)return()=>r}if("parse"in n){let r=n.parse;return()=>r}}function fc(n,e){let i=n.name??n.latexTrigger??n.identifierTrigger??n.openTrigger;if(!i)try{i=JSON.stringify(n)}catch{i="???"}if(Array.isArray(i)&&(i=yn(i)),"trigger"in n&&e({severity:"warning",message:["invalid-dictionary-entry",i,"The 'trigger' property is deprecated. Use 'latexTrigger' or 'identifierTrigger' instead"]}),"kind"in n&&!["expression","symbol","function","infix","postfix","prefix","matchfix","environment"].includes(n.kind)&&e({severity:"warning",message:["invalid-dictionary-entry",i,"The 'kind' property must be one of 'expression', 'symbol', 'function', 'infix', 'postfix', 'prefix', 'matchfix', 'environment'"]}),n.serialize!==void 0&&!n.name)return e({severity:"warning",message:["invalid-dictionary-entry",i,"A 'name' property must be provided if a 'serialize' handler is provided"]}),!1;if("identifierTrigger"in n&&(!("kind"in n)||n.kind!=="environment")&&(typeof n.identifierTrigger!="string"||!Ne(n.identifierTrigger))&&e({severity:"warning",message:["invalid-dictionary-entry",i,"The 'identifierTrigger' property must be a valid identifier"]}),"name"in n&&(typeof n.name!="string"?n.name!==void 0&&e({severity:"warning",message:["invalid-dictionary-entry",i,"The 'name' property must be a string"]}):Ne(n.name)||e({severity:"warning",message:["invalid-dictionary-entry",n.name,"The 'name' property must be a valid identifier"]})),ct(n)){if("latexTrigger"in n||"identifierTrigger"in or)return e({severity:"warning",message:["invalid-dictionary-entry",i,"'matchfix' operators use a 'openTrigger' and 'closeTrigger' instead of a 'latexTrigger' or 'identifierTrigger'. "]}),!1;if(!n.openTrigger||!n.closeTrigger)return e({severity:"warning",message:["invalid-dictionary-entry",i,"Expected `openTrigger` and a `closeTrigger` for matchfix operator"]}),!1;if(typeof n.openTrigger!=typeof n.closeTrigger)return e({severity:"warning",message:["invalid-dictionary-entry",i,"Expected `openTrigger` and `closeTrigger` to both be strings or array of LatexToken"]}),!1}if(vo(n)||No(n)||or(n)){if(Array.isArray(n.latexTrigger)&&(n.latexTrigger[0]==="_"||n.latexTrigger[0]==="^")||typeof n.latexTrigger=="string"&&(n.latexTrigger.startsWith("^")||n.latexTrigger.startsWith("_"))){if(n.precedence!==void 0||n.associativity!==void 0)return e({severity:"warning",message:["invalid-dictionary-entry",i,'Unexpected "precedence" or "associativity" for superscript/subscript operator']}),!1}else if(n.precedence===void 0)return e({severity:"warning",message:["invalid-dictionary-entry",i,`Expected a "precedence" for ${n.kind} operator`]}),!1}else if(n.associativity!==void 0)return e({severity:"warning",message:["invalid-dictionary-entry",i,'Unexpected "associativity" operator']}),!1;return!ct(n)&&!ba(n)&&!n.latexTrigger&&!n.identifierTrigger&&!n.name?(e({severity:"warning",message:["invalid-dictionary-entry",i,"Expected a 'name', a 'latexTrigger' or a 'identifierTrigger'"]}),!1):n.parse===void 0&&n.name===void 0?(e({severity:"warning",message:["invalid-dictionary-entry",i,"Expected a 'parse' or 'name'"]}),!1):!0}var Pt={algebra:el,arithmetic:al,calculus:xl,complex:bl,core:Fa,"linear-algebra":ll,logic:fl,relop:sr,other:dl,physics:[{name:"mu0",kind:"symbol",latexTrigger:"\\mu_0"}],sets:pl,statistics:yl,symbols:Pa,trigonometry:cl};function Nl(n="all"){if(n==="all"){let e=[];for(let i of Object.keys(Pt))Pt[i]&&e.push(...Pt[i]);return e}return Pt[n]?Object.freeze([...Pt[n]]):[]}var dc={"\\mathord":"","\\mathop":"","\\mathbin":"","\\mathrel":"","\\mathopen":"","\\mathclose":"","\\mathpunct":"","\\mathinner":"","\\operatorname":"","\\mathrm":"_upright","\\mathit":"_italic","\\mathbf":"_bold","\\mathscr":"_script","\\mathcal":"_calligraphic","\\mathfrak":"_fraktur","\\mathsf":"_sansserif","\\mathtt":"_monospace","\\mathbb":"_doublestruck"},cc={"\\mathring":"_ring","\\hat":"_hat","\\tilde":"_tilde","\\vec":"_vec","\\overline":"_bar","\\underline":"_underbar","\\dot":"_dot","\\ddot":"_ddot","\\dddot":"_dddot","\\ddddot":"_ddddot","\\acute":"_acute","\\grave":"_grave","\\breve":"_breve","\\check":"_check"};function _l(n,e){if(n.atEnd)return null;let i=n.peek,t={"\\_":"_","\\#":"hash"}[i];if(!t&&!e.toplevel&&(t={"+":"plus","-":"minus","\\plusmn":"pm","\\pm":"pm","\\ast":"ast","\\dag":"dag","\\ddag":"ddag","\\bot":"bottom","\\top":"top","\\bullet":"bullet","\\cir":"circle","\\diamond":"diamond","\\times":"times","\\square":"square","\\star":"star"}[i]),t)return n.nextToken(),t;let r=cn.findIndex(o=>o[1]===i);return r>=0?(n.nextToken(),cn[r][0]):n.matchChar()??n.nextToken()}function Jr(n){let e=Ss(n),i=n.index,t=cc[n.peek]??null;if(t){if(n.nextToken(),!n.match("<{>"))return n.index=i,null;let s=Jr(n);if(s===null||!n.match("<}>"))return n.index=i,null;e=`${s}${t}`}if(e===null){for(e="";!n.atEnd;){let s=n.peek;if(s==="<}>"||s==="_"||s==="^")break;let a=_l(n,{toplevel:!1});if(a===null)return n.index=i,null;e+=a}for(;!n.atEnd&&/\d/.test(n.peek);)e+=n.nextToken()}for(;!n.atEnd;)if(n.match("\\degree"))e+="_deg";else if(n.matchAll(["^","\\prime"]))e+="_prime";else if(n.matchAll(["^","<{>","\\prime","<}>"]))e+="_prime";else if(n.matchAll(["^","<{>","\\doubleprime","<}>"]))e+="_dprime";else if(n.matchAll(["^","<{>","\\prime","\\prime","<}>"]))e+="_dprime";else break;let r=[],o=[];for(;!n.atEnd;)if(n.match("_")){let s=n.match("<{>"),a=Jr(n);if(s&&!n.match("<}>")||a===null)return n.index=i,null;o.push(a)}else if(n.match("^")){let s=n.match("<{>"),a=Jr(n);if(s&&!n.match("<}>")||a===null)return n.index=i,null;r.push(a)}else break;return r.length>0&&(e+="__"+r.join("")),o.length>0&&(e+="_"+o.join("")),e}function Ss(n){let e=n.index,i=dc[n.peek]??null;if(i===null)return null;if(n.nextToken(),n.match("<{>")){let t="",r={0:"zero",1:"one",2:"two",3:"three",4:"four",5:"five",6:"six",7:"seven",8:"eight",9:"nine"}[n.peek]??"";return r&&(t=r,n.nextToken()),t+=Jr(n),t===null||!n.match("<}>")?(n.index=e,null):i==="_upright"&&t.length>1?t:t+i}return n.index=e,null}function Bs(n){let e=n.index,i=Ss(n);return i===null||Ne(i)?(n.index=e,null):n.error(["invalid-identifier",{str:an(i)}],e)}function Ft(n){if(/^[a-zA-Z]$/.test(n.peek)||/^\p{XIDS}$/u.test(n.peek))return n.nextToken();let e=n.index,i=Ss(n);if(!i){for(i="";!n.atEnd&&Ci.test(i+n.peek);)i+=n.nextToken();i||(i=null)}return i??(i=_l(n,{toplevel:!0})),i&&(i=i.normalize(),Ne(i))?i:(n.index=e,null)}var mc={"(":["\\lparen","("],")":["\\rparen",")"],"[":["\\lbrack","\\[","["],"]":["\\rbrack","\\]","]"],"<":["<","\\langle"],">":[">","\\rangle"],"{":["\\{","\\lbrace"],"}":["\\}","\\rbrace"],":":[":","\\colon"],"|":["|","\\|","\\lvert","\\rvert"],"||":["||","\\Vert","\\lVert","\\rVert"],"\\lfloor":["\\lfloor"],"\\rfloor":["\\rfloor"],"\\lceil":["\\lceil"],"\\rceil":["\\rceil"],"\\ulcorner":["\\ulcorner"],"\\urcorner":["\\urcorner"],"\\llcorner":["\\llcorner"],"\\lrcorner":["\\lrcorner"],"\\lgroup":["\\lgroup"],"\\rgroup":["\\rgroup"],"\\lmoustache":["\\lmoustache"],"\\rmoustache":["\\rmoustache"]},Ts={"\\left":"\\right","\\bigl":"\\bigr","\\Bigl":"\\Bigr","\\biggl":"\\biggr","\\Biggl":"\\Biggr","\\big":"\\big","\\Big":"\\Big","\\bigg":"\\bigg","\\Bigg":"\\Bigg"},Ds={"(":")","[":"]","|":"|","\\{":"\\}","\\[":"\\]","\\lbrace":"\\rbrace","\\lparen":"\\rparen","\\langle":"\\rangle","\\lfloor":"\\rfloor","\\lceil":"\\rceil","\\vert":"\\vert","\\lvert":"\\rvert","\\Vert":"\\Vert","\\lVert":"\\rVert","\\lbrack":"\\rbrack","\\ulcorner":"\\urcorner","\\llcorner":"\\lrcorner","\\lgroup":"\\rgroup","\\lmoustache":"\\rmoustache"},Is=class{constructor(e,i,t){this._index=0;this.symbolTable={parent:null,ids:{}};this._boundaries=[];this._lastPeek="";this._peekCounter=0;this._tokens=e,this.options=t,this._dictionary=i,this._positiveInfinityTokens=be(this.options.positiveInfinity),this._negativeInfinityTokens=be(this.options.negativeInfinity),this._notANumberTokens=be(this.options.notANumber),this._decimalSeparatorTokens=be(this.options.decimalSeparator),this._wholeDigitGroupSeparatorTokens=[],this._fractionalDigitGroupSeparatorTokens=[],this.options.digitGroupSeparator&&(typeof this.options.digitGroupSeparator=="string"?(this._wholeDigitGroupSeparatorTokens=be(this.options.digitGroupSeparator),this._fractionalDigitGroupSeparatorTokens=this._wholeDigitGroupSeparatorTokens):Array.isArray(this.options.digitGroupSeparator)&&(this._wholeDigitGroupSeparatorTokens=be(this.options.digitGroupSeparator[0]),this._fractionalDigitGroupSeparatorTokens=be(this.options.digitGroupSeparator[1]))),this._exponentProductTokens=be(this.options.exponentProduct),this._beginExponentMarkerTokens=be(this.options.beginExponentMarker),this._endExponentMarkerTokens=be(this.options.endExponentMarker),this._truncationMarkerTokens=be(this.options.truncationMarker),this._imaginaryUnitTokens=be(this.options.imaginaryUnit)}pushSymbolTable(){this.symbolTable={parent:this.symbolTable,ids:{}}}popSymbolTable(){this.symbolTable=this.symbolTable.parent??this.symbolTable}addSymbol(e,i){if(e in this.symbolTable.ids&&this.symbolTable.ids[e]!==i)throw new Error(`Symbol ${e} already declared as a different type`);this.symbolTable.ids[e]=i}get index(){return this._index}set index(e){this._index=e,this._lastPeek="",this._peekCounter=0}getIdentifierType(e){let i=this.symbolTable;for(;i;){if(e in i.ids)return i.ids[e];i=i.parent}return this.options.getIdentifierType?this.options.getIdentifierType(e):"unknown"}get peek(){let e=this._tokens[this.index];if(e===this._lastPeek?this._peekCounter+=1:this._peekCounter=0,this._peekCounter>=1024){let i=`Infinite loop detected while parsing "${this.latex(0)}" at "${this._lastPeek}" (index ${this.index})`;throw console.error(i),new Error(i)}return this._lastPeek=e,e}nextToken(){return this._tokens[this.index++]}get atEnd(){return this.index>=this._tokens.length}atTerminator(e){return this.atBoundary||((e?.condition&&e.condition(this))??!1)}get atBoundary(){if(this.atEnd)return!0;let e=this.index;for(let i of this._boundaries)if(this.matchAll(i.tokens))return this.index=e,!0;return!1}addBoundary(e){this._boundaries.push({index:this.index,tokens:e})}removeBoundary(){this._boundaries.pop()}matchBoundary(){let e=this._boundaries[this._boundaries.length-1],i=e&&this.matchAll(e.tokens);return i&&this._boundaries.pop(),i}boundaryError(e){let i=this._boundaries[this._boundaries.length-1];return this._boundaries.pop(),this.error(e,i.index)}latex(e,i){return yn(this._tokens.slice(e,i))}latexAhead(e){return this.latex(this.index,this.index+e)}lookAhead(){let e=Math.min(this._dictionary.lookahead,this._tokens.length-this.index);if(e<=0)return[];let i=[];for(;e>0;)i.push([e,this.latexAhead(e--)]);return i}peekDefinitions(e){if(this.atEnd)return[];let i=[],t=[...this.getDefs(e)];for(let r of t)r.latexTrigger===""&&i.push([r,0]);for(let[r,o]of this.lookAhead())for(let s of t)s.latexTrigger===o&&i.push([s,r]);for(let r of t)if(r.identifierTrigger){let o=pc(this,r.identifierTrigger);o>0&&i.push([r,o])}return i}skipSpaceTokens(){for(;this.match("<space>"););}skipSpace(){if(!this.atEnd&&this.peek==="<{>"){let i=this.index;for(this.nextToken();this.match("<space>"););if(this.nextToken()==="<}>")return this.skipSpace(),!0;this.index=i}if(!this.options.skipSpace)return!1;let e=!1;for(;this.match("<space>");)e=!0;return e&&this.skipSpace(),e}skipVisualSpace(){this.options.skipSpace&&(this.skipSpace(),["\\!","\\,","\\:","\\;","\\enskip","\\enspace","\\space","\\quad","\\qquad"].includes(this.peek)&&(this.nextToken(),this.skipVisualSpace()),this.skipSpace())}match(e){return this._tokens[this.index]!==e?!1:(this.index++,!0)}matchAll(e){if(e.length===0)return!1;let i,t=0;do i=this._tokens[this.index+t]===e[t++];while(i&&t<e.length);return i&&(this.index+=t),i}matchAny(e){return e.includes(this._tokens[this.index])?this._tokens[this.index++]:""}matchChar(){let e=this.index,i=0;for(;this.match("^");)i+=1;if(i<2&&(this.index=e),i>=2){let t="",r=0;for(;r!=i;){let o=this.matchAny(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]);if(!o)break;t+=o,r+=1}if(t.length===i)return String.fromCodePoint(Number.parseInt(t,16))}else if(this.match("\\char")){let t=Math.floor(this.matchLatexNumber()??Number.NaN);return(!Number.isFinite(t)||t<0||t>1114111)&&(t=10067),String.fromCodePoint(t)}else if(this.match("\\unicode"))if(this.skipSpaceTokens(),this.match("<{>")){let t=this.matchLatexNumber();if(this.match("<}>")&&t!==null&&t>=0&&t<=1114111)return String.fromCodePoint(t)}else{let t=this.matchLatexNumber();if(t!==null&&t>=0&&t<=1114111)return String.fromCodePoint(t)}return this.index=e,null}matchDelimiter(e,i){if(this.peek==="[")return!1;if(Array.isArray(e))return Array.isArray(i),this.matchAll(e)?(this.addBoundary(i),!0):!1;Array.isArray(i);let t=this.index,r=Ts[this.peek];return r&&this.nextToken(),e==="||"&&this.matchAll(["|","|"])?(this.addBoundary(["|","|"]),!0):(mc[e]??[e]).includes(this.peek)?(e=this.nextToken(),i=Ds[e]??i,this.addBoundary(r?[r,i]:[i]),!0):(this.index=t,!1)}parseGroup(){let e=this.index;if(this.skipSpaceTokens(),this.match("<{>")){this.addBoundary(["<}>"]);let i=this.parseExpression();if(this.skipSpace(),this.matchBoundary())return i??["Sequence"];for(;!this.matchBoundary()&&!this.atEnd;)this.nextToken();if(x(i)==="Error")return i;let t=this.error("expected-closing-delimiter",e);return i?["InvisibleOperator",i,t]:t}return this.index=e,null}parseOptionalGroup(){let e=this.index;if(this.skipSpaceTokens(),this.match("[")){this.addBoundary(["]"]);let i=this.parseExpression();return this.skipSpace(),this.matchBoundary()?i:this.boundaryError("expected-closing-delimiter")}return this.index=e,null}parseToken(){if(this.skipSpace(),[...'!"#$%&(),/;:?@[]\\`|~'.split(""),"\\left","\\bigl"].includes(this.peek))return null;if(/^[0-9]$/.test(this.peek))return parseInt(this.nextToken());let i=this.parseGenericExpression()??this.parseSymbol();return i||null}parseTabular(){let e=[],i=[],t=null;for(;!this.atBoundary;)if(this.skipSpace(),this.match("&"))i.push(t??"Nothing"),t=null;else if(this.match("\\\\")||this.match("\\cr"))this.skipSpace(),this.parseOptionalGroup(),t!==null&&i.push(t),e.push(i),i=[],t=null;else{let r=[],o=this.peek;for(;o!=="&"&&o!=="\\\\"&&o!=="\\cr"&&!this.atBoundary;)t=this.parseExpression({minPrec:0,condition:s=>{let a=s.peek;return a==="&"||a==="\\\\"||a==="\\cr"}}),t?r.push(t):(r.push(["Error",["'unexpected-token'",o]]),this.nextToken()),this.skipSpace(),o=this.peek;r.length>1?t=["Sequence",...r]:t=r[0]??"Nothing"}return t!==null&&i.push(t),i.length>0&&e.push(i),e}parseStringGroupContent(){let e=this.index,i="",t=0;for(;!this.atBoundary||t>0;){let r=this.nextToken();if(r==="<$>"||r==="<$$>")return this.index=e,"";r==="<{>"?(t+=1,i+="\\{"):r==="<}>"?(t-=1,i+="\\}"):r==="<space>"?i+=" ":(r[0],i+=r)}return i}parseStringGroup(e){e===void 0&&(e=!1);let i=this.index;for(;this.match("<space>"););if(this.match(e?"[":"<{>")){this.addBoundary([e?"]":"<}>"]);let t=this.parseStringGroupContent();if(this.matchBoundary())return t;this.removeBoundary()}return this.index=i,null}parseEnvironment(e){let i=this.index;if(!this.match("\\begin"))return null;let t=this.parseStringGroup()?.trim();if(!t)return this.error("expected-environment-name",i);this.addBoundary(["\\end","<{>",...t.split(""),"<}>"]);for(let r of this.getDefs("environment"))if(r.identifierTrigger===t){let o=r.parse(this,e);return this.skipSpace(),this.matchBoundary()?o!==null?this.decorate(o,i):(this.index=i,null):this.boundaryError("unbalanced-environment")}return this.parseTabular(),this.skipSpace(),this.matchBoundary()?this.error(["unknown-environment",{str:t}],i):this.boundaryError("unbalanced-environment")}parseOptionalSign(){let e=!!this.matchAny(["-","\u2212"]);for(;this.matchAny(["+","\uFE62"])||this.skipSpace();)this.matchAny(["-","\u2212"])&&(e=!e);return e?"-":"+"}parseDecimalDigits(e="whole"){let i=[],t=!1;for(;!t;){for(;/^[0-9]$/.test(this.peek);)i.push(this.nextToken()),this.skipVisualSpace();t=!0;let r=e==="whole"?this._wholeDigitGroupSeparatorTokens:this._fractionalDigitGroupSeparatorTokens;if(e!=="none"&&r.length>0){let o=this.index;this.skipVisualSpace(),this.matchAll(r)&&(this.skipVisualSpace(),/^[0-9]$/.test(this.peek)?t=!1:this.index=o)}}return i.join("")}parseSignedInteger(e){let i=this.index,t=this.parseOptionalSign(),r=this.parseDecimalDigits(e);return r?t==="-"?"-"+r:r:(this.index=i,"")}parseExponent(){let e=this.index;if(this.skipVisualSpace(),this.matchAny(["e","E"])){let i=this.parseSignedInteger("none");if(i)return i}if(this.index=e,this.match("\\times")&&(this.skipVisualSpace(),this.matchAll(["1","0"])&&(this.skipVisualSpace(),this.match("^")))){if(this.skipVisualSpace(),/^[0-9]$/.test(this.peek))return this.nextToken();if(this.match("<{>")){this.skipVisualSpace();let i=this.parseSignedInteger("whole");if(this.skipVisualSpace(),i&&this.match("<}>"))return i}}if(this.index=e,this.skipVisualSpace(),this.match("\\%"))return"-2";if(this.index=e,this.matchAll(this._exponentProductTokens)&&(this.skipVisualSpace(),this.matchAll(this._beginExponentMarkerTokens))){this.skipVisualSpace();let i=this.parseSignedInteger("none");if(this.skipVisualSpace(),i&&this.matchAll(this._endExponentMarkerTokens))return i}return this.index=e,""}parseRepeatingDecimal(){let e=this.index,i=this.options.repeatingDecimal,t="";if((i==="auto"||i==="parentheses")&&this.match("("))return t=this.parseDecimalDigits("fraction"),t&&this.match(")")?`(${t})`:(this.index=e,"");if(this.index=e,(i==="auto"||i==="parentheses")&&this.matchAll(["\\left","("]))return t=this.parseDecimalDigits("fraction"),t&&this.matchAll(["\\right",")"])?`(${t})`:(this.index=e,"");if(this.index=e,(i==="auto"||i==="vinculum")&&this.matchAll(["\\overline","<{>"]))return t=this.parseDecimalDigits("fraction"),t&&this.match("<}>")?`(${t})`:(this.index=e,"");if(this.index=e,(i==="auto"||i==="arc")&&(this.matchAll(["\\wideparen","<{>"])||this.matchAll(["\\overarc","<{>"])))return t=this.parseDecimalDigits("fraction"),t&&this.match("<}>")?`(${t})`:(this.index=e,"");if(this.index=e,i==="auto"||i==="dots"){let r=Sl(this);if(r!==null){if(t=this.parseDecimalDigits("fraction"),!t)return`(${r})`;let o=Sl(this);if(o!==null)return`(${r}${t}${o})`}}return this.index=e,""}parseNumber(){if(this.options.parseNumbers===!1||this.options.parseNumbers==="never")return null;let e=this.index;this.skipVisualSpace();let i=1;for(;this.peek==="-"||this.peek==="+";)this.match("-")?i=-i:this.match("+"),this.skipVisualSpace();let t="",r="",o=!1;if(this.match(".")||this.matchAll(this._decimalSeparatorTokens)){let f=this.peek;(/^[\d]$/.test(f)||gc(this))&&(o=!0,t="0")}else t=this.parseDecimalDigits("whole");if(!t)return this.index=e,null;let s=this.index,a=!1;(o||this.match(".")||this.matchAll(this._decimalSeparatorTokens))&&(r=this.parseDecimalDigits("fraction"),a=!0);let l=!1;if(a){let f=this.parseRepeatingDecimal();f&&(r+=f,l=!0),this.match("\\ldots")||this.matchAll(this._truncationMarkerTokens)}if(a&&!r)return this.index=s,{num:i<0?"-"+t:t};let u=this.parseExponent();if(!l&&this.options.parseNumbers==="rational"){let f=parseInt(t,10);if(!r)return u?["Multiply",i*f,["Power",10,u]]:i*f;let d=parseInt(r,10),c=r.length,m=f*Math.pow(10,c)+d,g=Math.pow(10,c);return u?["Multiply",["Rational",i*m,g],["Power",10,u]]:["Rational",i*m,g]}return{num:(i<0?"-":"")+t+(a?"."+r:"")+(u?"e"+u:"")}}matchLatexNumber(e=!0){let i=!1,t=this.peek;for(;t==="<space>"||t==="+"||t==="-";)t==="-"&&(i=!i),this.nextToken(),t=this.peek;let r=10,o=["0","1","2","3","4","5","6","7","8","9"];if(this.match("'"))r=8,o=["0","1","2","3","4","5","6","7"],e=!0;else if(this.match('"')||this.match("x"))r=16,o=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"],e=!0;else if(this.match("`"))return t=this.nextToken(),t?t.startsWith("\\")&&t.length===2?(i?-1:1)*(t.codePointAt(1)??0):(i?-1:1)*(t.codePointAt(0)??0):null;let s="";for(;o.includes(this.peek);)s+=this.nextToken();if(!e&&this.match("."))for(s+=".";o.includes(this.peek);)s+=this.nextToken();let a=e?Number.parseInt(s,r):Number.parseFloat(s);return Number.isNaN(a)?null:i?-a:a}parsePrefixOperator(e){e||(e={minPrec:0}),e.minPrec||(e={...e,minPrec:0});let i=this.index;for(let[t,r]of this.peekDefinitions("prefix")){this.index=i+r;let o=t.parse(this,{...e,minPrec:t.precedence+1});if(o)return o}return this.index=i,null}parseInfixOperator(e,i){i??(i={minPrec:0}),i.minPrec,i.minPrec===void 0&&(i={...i,minPrec:0});let t=this.index;for(let[r,o]of this.peekDefinitions("infix"))if(r.precedence>=i.minPrec){this.index=t+o;let s=r.parse(this,e,i);if(s)return s}return this.index=t,null}parseArguments(e="enclosure",i){if(this.atTerminator(i))return null;let t=this.index,r=this.parseEnclosure();if(e==="enclosure")return r===null?null:Kt(r)??[];if(e==="implicit"){if(x(r)==="Delimiter"){if(x(ke(r))==="Sequence"){let s=ke(ke(r));return s?[s]:[]}return ke(r)?[ke(r)]:[]}if(r!==null)return[r];let o=this.parseExpression({...i,minPrec:390});return o===null?null:[o]}return this.index=t,null}parseEnclosure(){let e=this.getDefs("matchfix"),i=this.index;for(let t of e){if(this.index=i,!this.matchDelimiter(t.openTrigger,t.closeTrigger))continue;let r=this.index;this.skipSpace();let o=this.parseExpression();if(this.skipSpace(),!this.matchBoundary()){let a=this._boundaries[this._boundaries.length-1].tokens;if(this.removeBoundary(),this.index=r,this.skipSpace(),o=this.parseExpression(),this.skipSpace(),!this.matchAll(a)){if(!this.atEnd)continue;return this.index=i,null}}let s=t.parse(this,o??["Sequence"]);if(s!==null)return s}return this.index=i,null}parseGenericExpression(e){if(this.atTerminator(e))return null;let i=this.index,t=null,r=this.peekDefinitions("expression")??[];for(let[o,s]of r)if(this.index=i+s,typeof o.parse=="function"){if(t=o.parse(this,e),t!==null)return t}else return o.name;return this.index=i,null}parseFunction(e){if(this.atTerminator(e))return null;let i=this.index,t=null;for(let[o,s]of this.peekDefinitions("function"))if(this.index=i+s,typeof o.parse=="function"){if(t=o.parse(this,e),t!==null)return t}else{t=o.name;break}if(t===null&&(this.index=i,t=Ft(this),!this.isFunctionHead(t)))return this.index=i,null;do{let o=this.parsePostfixOperator(t,e);if(o===null)break;t=o}while(!0);let r=this.parseArguments("enclosure",e);return r===null?t:typeof t=="string"?[t,...r]:["Apply",t,...r]}parseSymbol(e){if(this.atTerminator(e))return null;let i=this.index;for(let[o,s]of this.peekDefinitions("symbol"))if(this.index=i+s,typeof o.parse=="function"){let a=o.parse(this,e);if(a)return a}else return o.name;this.index=i;let t=Ft(this);return t===null?null:this.getIdentifierType(t)==="symbol"?t:(this.index=i,null)}parseSupsub(e){if(this.atEnd)return e;let i=this.index;this.skipSpace();let t=[],r=[],o=i;for(;this.peek==="_"||this.peek==="^";){if(this.match("_"))if(o=this.index,this.match("_")||this.match("^"))r.push(this.error("syntax-error",o));else{let a=this.parseGroup()??this.parseToken()??this.parseStringGroup();if(a===null)return this.error("missing",i);r.push(a)}else if(this.match("^"))if(o=this.index,this.match("_")||this.match("^"))t.push(this.error("syntax-error",o));else{let a=this.parseGroup()??this.parseToken();if(a===null)return this.error("missing",i);t.push(a)}o=this.index,this.skipSpace()}if(t.length===0&&r.length===0)return this.index=i,e;let s=e;if(r.length>0){let a=[...this.getDefs("infix")].filter(l=>l.latexTrigger==="_");if(a){let l=["Subscript",s,r.length===1?r[0]:["List",...r]];for(let u of a)if(typeof u.parse=="function"?s=u.parse(this,l,{minPrec:0}):s=l,s)break}}if(t.length>0){let a=[...this.getDefs("infix")].filter(l=>l.latexTrigger==="^");if(a){let l=t.filter(u=>!(x(u)==="Sequence"&&j(u)===0));if(l.length!==0){let u=l.length===1?l[0]:["List",...l],f=["Superscript",s,u];for(let d of a)if(typeof d.parse=="function"?s=d.parse(this,f,{minPrec:0}):s=f,s)break}}}return s===null&&(this.index=i),s}parsePostfixOperator(e,i){if(e===null||this.atEnd)return null;let t=this.index;for(let[r,o]of this.peekDefinitions("postfix")){this.index=t+o;let s=r.parse(this,e,i);if(s!==null)return s}return this.index=t,null}parseSyntaxError(){let e=this.index;if(this.peek==="^")return this.index+=1,["Superscript",this.error("missing",e),L(this.parseGroup())];let i=this.peekDefinitions("operator");if(i.length>0){if(i=this.peekDefinitions("postfix"),i.length>0){let[a,l]=i[0];if(this.index+=l,typeof a.parse=="function"){let u=a.parse(this,this.error("missing",e));if(u)return u}return a.name?[a.name,this.error("missing",e)]:this.error("unexpected-operator",e)}if(i=this.peekDefinitions("prefix"),i.length>0){let[a,l]=i[0];if(this.index+=l,typeof a.parse=="function"){let u=a.parse(this,{minPrec:0});if(u)return u}return a.name?[a.name,this.parseExpression()??this.error("missing",e)]:this.error("unexpected-operator",e)}if(i=this.peekDefinitions("infix"),i.length>0){let[a,l]=i[0];this.index+=l;let u=a.parse(this,this.error("missing",e),{minPrec:0});return u||this.error("unexpected-operator",e)}}let t=this.index,r=Bs(this);if(r)return r;if(r=Ft(this),r)return this.error(["unexpected-identifier",{str:r}],t);let o=this.peek;if(!o)return this.error("syntax-error",e);if(o[0]!=="\\")return this.error(["unexpected-token",{str:yn(o)}],e);if(hc(this))return this.error("unexpected-delimiter",e);let s=this.nextToken();if(this.skipSpaceTokens(),s==="\\end"){let a=this.parseStringGroup();return a===null?this.error("expected-environment-name",e):this.error(["unbalanced-environment",{str:a}],e)}for(;this.match("[");){let a=0;for(;!this.atEnd&&a===0&&this.peek!=="]";)this.peek==="["&&(a+=1),this.peek==="]"&&(a-=1),this.nextToken();this.match("]")}for(;this.match("<{>");){let a=0;for(;!this.atEnd&&a===0&&this.peek!=="<}>";)this.peek==="<{>"&&(a+=1),this.peek==="<}>"&&(a-=1),this.nextToken();this.match("<}>")}return this.error(["unexpected-command",{str:yn(s)}],e)}parsePrimary(e){if(this.atBoundary||this.atTerminator(e))return null;let i=null,t=this.index;if(this.match("<}>"))return this.error("unexpected-closing-delimiter",t);if(i??(i=this.parseGroup()),i??(i=this.parseNumber()),i??(i=this.parseEnclosure()),i??(i=this.parseEnvironment(e)),i===null&&this.matchAll(this._positiveInfinityTokens)&&(i="PositiveInfinity"),i===null&&this.matchAll(this._negativeInfinityTokens)&&(i="NegativeInfinity"),i===null&&this.matchAll(this._notANumberTokens)&&(i="NaN"),i??(i=this.parseGenericExpression(e)??this.parseFunction(e)??this.parseSymbol(e)??Bs(this)),i!==null){i=this.decorate(i,t);let r=null,o=this.index;do{if(r=this.parsePostfixOperator(i,e),i=r??i,this.index===o&&r!==null){this.index;break}o=this.index}while(r!==null)}return i!==null&&(i=this.parseSupsub(i)),i===null&&(i=this.options.parseUnexpectedToken?.(null,this)??null),this.decorate(i,t)}parseExpression(e){this.skipSpace();let i=this.index;if(this.atBoundary)return this.index=i,null;e??(e={minPrec:0}),e.minPrec,e.minPrec===void 0&&(e={...e,minPrec:0});let t=this.parsePrefixOperator({...e,minPrec:0});if(t===null&&(t=this.parsePrimary(e),x(t)==="Sequence"&&j(t)===0&&(t=null)),t){let r=!1;for(;!r&&!this.atTerminator(e);){this.skipSpace();let o=this.parseInfixOperator(t,e);if(o===null&&this.peekDefinitions("operator").length===0){let s=this.parseExpression({...e,minPrec:390});s!==null?x(t)==="InvisibleOperator"?x(s)==="InvisibleOperator"?o=["InvisibleOperator",...B(t),...B(s)]:o=["InvisibleOperator",...B(t),s]:x(s)==="InvisibleOperator"?o=["InvisibleOperator",t,...B(s)]:o=["InvisibleOperator",t,s]:o===null&&(o=this.options.parseUnexpectedToken?.(t,this)??null)}o!==null?t=o:r=!0}}return this.decorate(t,i)}decorate(e,i){if(e===null)return null;if(!this.options.preserveLatex)return e;let t=this.latex(i,this.index);return Array.isArray(e)?e={latex:t,fn:e}:typeof e=="number"?e={latex:t,num:Number(e).toString()}:typeof e=="string"?e={latex:t,sym:e}:typeof e=="object"&&e!==null&&(e.latex=t),e}error(e,i){let t;typeof e=="string"?(e.startsWith("'"),t={str:e}):(e[0].startsWith("'"),t=["ErrorCode",{str:e[0]},...e.slice(1)]);let r=this.latex(i,this.index);return r?["Error",t,["LatexString",{str:r}]]:["Error",t]}isFunctionHead(e){if(e===null)return!1;let i=C(e);return i?this.getIdentifierType(i)==="function":!1}*getDefs(e){if(e==="operator")for(let i of this._dictionary.defs)/^prefix|infix|postfix/.test(i.kind)&&(yield i);else for(let i of this._dictionary.defs)i.kind===e&&(yield i)}};function pc(n,e){let i=n.index,t=Ft(n)?.trim();if(t===null)return 0;let r=t!==e?0:n.index-i;return n.index=i,r}function hc(n){let e=n.peek;return Object.values(Ds).includes(e)||Ds[e]?(n.nextToken(),!0):Ts[e]||Object.values(Ts).includes(e)?(n.nextToken(),n.nextToken(),!0):!1}function Sl(n){let e=n.index;if(n.matchAll(["\\overset","<{>"])&&(n.match(".")||n.match("\\cdots"))&&n.matchAll(["<}>","<{>"])){let i=n.nextToken();if(i&&/^\d$/.test(i)&&n.match("<}>"))return i}return n.index=e,null}function gc(n){let e=n.peek;return e==="\\overline"||e==="\\overset"||e==="\\wideparent"||e==="\\overarc"||e==="("||e==="\\left"}function Bl(n,e,i){let t=new Is(be(n),e,i),r=t.parseExpression();if(!t.atEnd){let o=t.parseSyntaxError();r=r?["Sequence",r,o]:o}return r??(r=["Sequence"]),i.preserveLatex&&(Array.isArray(r)?r={latex:n,fn:r}:typeof r=="number"?r={latex:n,num:Number(r).toString()}:typeof r=="string"&&r.startsWith("'")&&r.endsWith("'")?r={latex:n,str:r.slice(1,-1)}:typeof r=="string"?r={latex:n,sym:r}:typeof r=="object"&&r!==null&&(r.latex=n)),r}var Tl=["\\frac{x}{x} -> 1","\\frac{x^n}{x^m} -> x^{n-m}","x^n * x^m -> x^{n+m}","x^a * x^b -> x^{a+b}","x^n^m -> x^{n * m}","\\log(xy) -> \\log(x) + \\log(y)","\\log(x^n) -> n \\log(x)","\\log(\\frac{x}{y}) -> \\log(x) - \\log(y)","\\log(\\exp(x) * y) -> x + \\log(y)","\\log(\\exp(x) / y) -> x - \\log(y)","\\log(\\exp(x)^y) -> y * x","\\log(\\exp(x)) -> x","\\exp(x) * \\exp(y) -> \\exp(x + y)","\\exp(x)^n -> \\exp(n x)","\\exp(\\log(x)) -> x","\\exp(\\log(x) + y) -> x * \\exp(y)","\\exp(\\log(x) - y) -> x / \\exp(y)","\\exp(\\log(x) * y) -> x^y","\\exp(\\log(x) / y) -> x^(1/y)","\\exp(\\log(x) * \\log(y)) -> x^\\log(y)","\\exp(\\log(x) / \\log(y)) -> x^{1/\\log(y)}","\\sin(-x) -> -\\sin(x)","\\cos(-x) -> \\cos(x)","\\tan(-x) -> -\\tan(x)","\\cot(-x) -> -\\cot(x)","\\sec(-x) -> \\sec(x)","\\csc(-x) -> -\\csc(x)","\\sin(\\pi - x) -> \\sin(x)","\\cos(\\pi - x) -> -\\cos(x)","\\tan(\\pi - x) -> -\\tan(x)","\\cot(\\pi - x) -> -\\cot(x)","\\sec(\\pi - x) -> -\\sec(x)","\\csc(\\pi - x) -> \\csc(x)","\\sin(\\pi + x) -> -\\sin(x)","\\cos(\\pi + x) -> -\\cos(x)","\\tan(\\pi + x) -> \\tan(x)","\\cot(\\pi + x) -> -\\cot(x)","\\sec(\\pi + x) -> -\\sec(x)","\\csc(\\pi + x) -> \\csc(x)","\\sin(\\frac{\\pi}{2} - x) -> \\cos(x)","\\cos(\\frac{\\pi}{2} - x) -> \\sin(x)","\\tan(\\frac{\\pi}{2} - x) -> \\cot(x)","\\cot(\\frac{\\pi}{2} - x) -> \\tan(x)","\\sec(\\frac{\\pi}{2} - x) -> \\csc(x)","\\csc(\\frac{\\pi}{2} - x) -> \\sec(x)","\\sin(x) * \\cos(x) -> \\frac{1}{2} \\sin(2x)","\\sin(x) * \\sin(y) -> \\frac{1}{2} (\\cos(x-y) - \\cos(x+y))","\\cos(x) * \\cos(y) -> \\frac{1}{2} (\\cos(x-y) + \\cos(x+y))","\\tan(x) * \\cot(x) -> 1","\\sin(x)^2 -> \\frac{1 - \\cos(2x)}{2}","\\cos(x)^2 -> \\frac{1 + \\cos(2x)}{2}"];var Lt=class n{constructor(e){this.decimalSeparator=".";this._cache={};this._commonSymbols={True:null,False:null,All:null,Nothing:null,None:null,Undefined:null,Pi:null,ImaginaryUnit:null,ExponentialE:null};this._commonNumbers={"-5":null,"-4":null,"-3":null,"-2":null,2:null,3:null,4:null,5:null,6:null,7:null,8:null,9:null,10:null,11:null,12:null,36:null};this._commonDomains={Anything:null,Void:null,NothingDomain:null,Booleans:null,Strings:null,Domains:null,Symbols:null,Integers:null,RationalNumbers:null,AlgebraicNumbers:null,RealNumbers:null,ExtendedRealNumbers:null,ImaginaryNumbers:null,ComplexNumbers:null,ExtendedComplexNumbers:null,Numbers:null,PositiveIntegers:null,TranscendentalNumbers:null,PositiveNumbers:null,Functions:null,NumericFunctions:null,RealFunctions:null,LogicOperators:null,Predicates:null};if(e!==void 0&&typeof e!="object")throw Error("Unexpected argument");this.strict=!0,this._stats={highwaterMark:0,symbols:new Set,expressions:new Set},this._numericMode=e?.numericMode??"auto",this._precision=Math.max(e?.numericPrecision??100,Math.floor(li)),this._bignum=N.clone({precision:this._precision}),this.tolerance=e?.tolerance??ki,this._angularUnit="rad",this.Zero=new ae(this,0),this.One=new ae(this,1),this.Half=new ae(this,[1,2]),this.NegativeOne=new ae(this,-1),this.NaN=new ae(this,Number.NaN),this.PositiveInfinity=new ae(this,Number.POSITIVE_INFINITY),this.NegativeInfinity=new ae(this,Number.NEGATIVE_INFINITY),this.I=new ae(this,et.Complex.I),this.ComplexInfinity=new ae(this,et.Complex.INFINITY),this.reset(),this.context={assumptions:new Xi,timeLimit:2,memoryLimit:1,recursionLimit:1024,iterationLimit:Number.POSITIVE_INFINITY};for(let t of n.getStandardLibrary("domains"))gs(this,t);for(let t of Object.keys(this._commonDomains))this._commonDomains[t]&&!this._commonDomains[t].symbolDefinition?this._commonDomains[t].bind():this._commonDomains[t]=new qn(this,Nr[t]??t);this.Anything=this._commonDomains.Anything,this.Void=this._commonDomains.Void,this.Strings=this._commonDomains.Strings,this.Booleans=this._commonDomains.Booleans,this.Numbers=this._commonDomains.Numbers;let i=e?.ids??n.getStandardLibrary();for(let t of i)gs(this,t);for(let t of Object.keys(this._commonSymbols)){let r=new Vn(this,t,{canonical:!0});r.bind(),this._commonSymbols[t]=r}this.True=this._commonSymbols.True,this.False=this._commonSymbols.False,this.Pi=this._commonSymbols.Pi,this.E=this._commonSymbols.ExponentialE,this.Nothing=this._commonSymbols.Nothing,this.pushScope()}static getStandardLibrary(e="all"){return hs(e)}get latexDictionary(){return this._latexDictionaryInput??n.getLatexDictionary()}set latexDictionary(e){this._latexDictionaryInput=e,this._indexedLatexDictionary=_s(e,i=>{throw Error(typeof i.message=="string"?i.message:i.message.join(","))})}get indexedLatexDictionary(){return this._indexedLatexDictionary??(this._indexedLatexDictionary=_s(this.latexDictionary,e=>console.error(e))),this._indexedLatexDictionary}reset(){this._bignum,this._BIGNUM_NEGATIVE_ONE=this.bignum(-1),this._BIGNUM_NAN=this.bignum(NaN),this._BIGNUM_ZERO=this.bignum(0),this._BIGNUM_ONE=this.bignum(1),this._BIGNUM_TWO=this.bignum(2),this._BIGNUM_HALF=this._BIGNUM_ONE.div(this._BIGNUM_TWO),this._BIGNUM_PI=this._BIGNUM_NEGATIVE_ONE.acos();let e=this._stats.symbols.values(),i=this._stats.expressions.values();this._stats.symbols=new Set,this._stats.expressions=new Set;for(let r of e)r.reset();for(let r of i)r.reset();for(let r of Object.values(this._commonDomains))r?.reset();for(let r of Object.values(this._commonSymbols))r?.reset();let t=this.context;for(;t;){if(t.ids)for(let[r,o]of t.ids)o.reset();t=t.parentScope??null}for(let r of Object.keys(this._cache))this._cache[r].value&&(this._cache[r].purge?this._cache[r].value=this._cache[r].purge(this._cache[r].value):delete this._cache[r])}_register(e){this._stats.highwaterMark+=1}_unregister(e){}get stats(){let e=this._stats.expressions;return this._stats.expressions=null,this._stats.expressions=e,{...this._stats}}get precision(){return this._numericMode==="machine"||this._numericMode==="complex"?Math.floor(li):this._precision}set precision(e){e==="machine"&&(e=Math.floor(li));let i=this._precision;if(e!==i){if(typeof e!="number"||e<=0)throw Error('Expected "machine" or a positive number');this._precision=Math.max(e,Math.floor(li)),this._numericMode!=="auto"&&this._numericMode!=="bignum"&&this._precision>Math.floor(li)&&(this._numericMode="auto"),this._bignum=this._bignum.config({precision:this._precision}),this.reset()}}get numericMode(){return this._numericMode}set numericMode(e){if(e!==this._numericMode){if(typeof e!="string")throw Error("Expected a string");this._numericMode=e,(e==="complex"||e==="machine")&&(this._precision=Math.floor(li)),this.reset()}}get angularUnit(){return this._angularUnit}set angularUnit(e){if(e!==this._angularUnit){if(typeof e!="string")throw Error("Expected a string");this._angularUnit=e,this.reset()}}get timeLimit(){let e=this.context;for(;e;){if(e.timeLimit!==void 0)return e.timeLimit;e=e.parentScope??null}return 2}get iterationLimit(){let e=this.context;for(;e;){if(e.iterationLimit!==void 0)return e.iterationLimit;e=e.parentScope??null}return 1024}get recursionLimit(){let e=this.context;for(;e;){if(e.recursionLimit!==void 0)return e.recursionLimit;e=e.parentScope??null}return 1024}get tolerance(){return this._tolerance}set tolerance(e){typeof e=="number"&&Number.isFinite(e)?this._tolerance=Math.max(e,0):this._tolerance=ki,this._bignumTolerance=this.bignum(this._tolerance)}chop(e){return typeof e=="number"&&Math.abs(e)<=this._tolerance||e instanceof N&&e.abs().lte(this._bignumTolerance)||e instanceof et.Complex&&Math.abs(e.re)<=this._tolerance&&Math.abs(e.im)<=this._tolerance?0:e}bignum(e){if(typeof e=="bigint")return new this._bignum(e.toString());try{return new this._bignum(e)}catch(i){console.error(i)}return this._BIGNUM_NAN}complex(e,i){return e instanceof N&&(e=e.toNumber()),i instanceof N&&(i=i.toNumber()),new et.Complex(e,i)}isBignum(e){return e instanceof N}isComplex(e){return e instanceof et.Complex}static getLatexDictionary(e="all"){return Nl(e)}get costFunction(){return this._cost??ys}set costFunction(e){typeof e!="function"&&(this._cost=ys),this._cost=e}lookupSymbol(e,i,t){if(!this.strict){for(t??(t=this.context??void 0);t;){let o=t.ids?.get(e);if(o&&o instanceof ce)return o;t=t.parentScope}return}if(typeof e!="string")throw Error("Expected a string");if(e.length===0||!this.context)return;let r=t??this.context;if(i)for(t=r;t;){if(t.ids){for(let[o,s]of t.ids)if(s instanceof ce&&s.wikidata===i)return s}t=t.parentScope}for(t=r;t;){let o=t.ids?.get(e);if(o instanceof ce)return o;t=t.parentScope}}lookupFunction(e,i){if(typeof e=="string"&&this.context)for(i??(i=this.context);i;){let t=i.ids?.get(e);if(t instanceof Xe)return t;i=i.parentScope}}defineSymbol(e,i){if(!this.context)throw Error("Symbol cannot be defined: no scope available");if(e.length===0||!Ne(e))throw Error(`Invalid identifier "${e}": ${an(e)}}`);return this._defineSymbol(e,i)}_defineSymbol(e,i){var r;(r=this.context).ids??(r.ids=new Map);let t=new ce(this,e,i);return t.name&&this.context.ids.set(t.name,t),t}defineFunction(e,i){if(!this.context)throw Error("Function cannot be defined: no scope available");if(e.length===0||!Ne(e))throw Error(`Invalid identifier "${e}": ${an(e)}}`);return this._defineFunction(e,i)}_defineFunction(e,i){var r;(r=this.context).ids??(r.ids=new Map);let t=Br(this,e,i);return t.name&&this.context.ids.set(t.name,t),t}pushScope(e){if(this.context===null)throw Error("No parent scope available");return this.context={timeLimit:this.context.timeLimit,memoryLimit:this.context.memoryLimit,recursionLimit:this.context.recursionLimit,iterationLimit:this.context.iterationLimit,...e??{},parentScope:this.context,assumptions:new Xi(this.context.assumptions)},this}popScope(){if(!this.context)throw Error("No scope available");return this.context=this.context.parentScope??null,this.context,this.context,this}swapScope(e){let i=this.context;return this.context=e,this.context,this.context,i}resetContext(){if(this.context){for(let[e,i]of this.context.ids??[])if(i instanceof ce)i.constant||(i.value=void 0);else if(i instanceof Xe){let t=i.signature;i.signature={...t,evaluate:void 0,N:void 0,simplify:void 0,canonical:void 0}}}}_printScope(e,i,t=0){if(e??(e={details:!1,maxDepth:1}),i??(i=this.context),!i||e.maxDepth&&t>e.maxDepth)return null;let r=`${Xu}[undefined]${Mt}`;if(t===0?console.group("current scope - level 0"):console.groupCollapsed(i.parentScope?`scope - level ${t}`:`root scope - level ${t}`),i.ids){let o=0;for(let[s,a]of i.ids){let l=`${Ku}${s}${Mt}`;try{if(a instanceof ce){let u=a.value?.isValid?a.value.toString():a.value?`${Es}${a.value.toString()}${Mt}`:r;console.info(`${l}: ${a.domain?.toString()??r} = ${u}`)}else a instanceof Xe&&(typeof a.signature.evaluate=="function"?console.info(`${l}(): ${e.details?a.signature.evaluate.toString():"[native-code]"}`):a.signature.evaluate===void 0?console.info(`${l}(): ${r}`):console.info(`${l}(): ${a.toString()}`));o===11&&console.groupCollapsed(`... and ${i.ids.size-o} more`),o+=1}catch(u){console.info(`${l}: ${Es}${u.message}${Mt}`)}}o>=11&&console.groupEnd()}if(i.assumptions){let o=[...i.assumptions.entries()].map(([s,a])=>`${s}: ${a}`);if(o.length>0){console.groupCollapsed(`${o.length} assumptions)`);for(let s of o)console.info(s);console.groupEnd()}}return i.parentScope&&this._printScope(e,i.parentScope,t+1),console.groupEnd(),this.context}declare(e,i){if(typeof e!="string"||i===void 0){for(let[s,a]of Object.entries(e))this.declare(s,a);return this}let[t,r]=Go(e);if(r!==void 0)throw Error(`Unexpected arguments with ${e}. Use 'ce.assign()' instead to assign a value, or a use a function definition with 'ce.declare()'.`);if(t==="Nothing")return this;if(this.context?.ids?.get(t)){let s=this.context.ids.get(t);if(s instanceof ce&&s.inferredDomain)return Hr(i)?s.update(i):(s.domain=this.domain(i),s.inferredDomain=!1),this;throw Error(`Symbol "${t}" has already been declared in the current scope`)}let o=i;if(!o)throw Error(`Expected a definition for ${t}`);if(Hr(o))return this.defineSymbol(t,o),this;if(xs(o))return this.defineFunction(t,o),this;{let s=this.domain(o);if(s.isValid)if(s.isFunction)this.defineFunction(t,{signature:Et(s)});else{if(r)throw Error(`Unexpected arguments with domain for "${t}"`);this.defineSymbol(t,{domain:s})}else throw Error(`Invalid argument for "${t}": use a domain, a FunctionDefinition or a SymbolDefinition`)}return this}assign(e,i){if(typeof e=="object"){for(let[l,u]of Object.entries(e))this.assign(l,u);return this}let[t,r]=Go(e);if(t==="Nothing")return this;let o=i;if(typeof o=="boolean"&&(o=o?this.True:this.False),typeof o=="string"){let l=o.trim();l.startsWith("$")&&l.endsWith("$")?o=this.parse(l.slice(1,-1),{canonical:!1}):l.startsWith("$$")&&l.endsWith("$$")?o=this.parse(l.slice(2,-2),{canonical:!1}):o=this.string(o)}let s=this.lookupSymbol(t);if(s){if(s.constant)throw Error(`Cannot assign a value to the constant "${t}"`);if(!s.inferredDomain&&ks(o))throw Error(`Cannot assign a function to symbol "${t}"`);let l=s.scope;if(l?.ids?.delete(s.name),!r&&!ks(o))return o==null?s.value=void 0:s.value=this.box(o),l?.ids?.set(s.name,s),this}let a=this.lookupFunction(t);if(a){let l=a.scope;if(l?.ids?.delete(a.name),o==null)return this;if(typeof o=="function"){let d=this.swapScope(l);return this.defineFunction(t,{signature:{evaluate:o}}),this.swapScope(d),this}if(r&&ks(o))throw Error(`Unexpected arguments for "${t}"`);let u=r?this.box(["Function",o,...r]):this.box(o),f=this.swapScope(l);return this.defineFunction(t,{signature:{evaluate:u}}),this.swapScope(f),this}if(o==null)return this.declare(t,{inferred:!0,domain:this.Anything}),this;if(typeof o=="function")return this.defineFunction(t,{signature:{evaluate:o}}),this;if(o instanceof F&&o.domain?.base==="Functions")return this.defineFunction(t,{signature:{evaluate:o}}),this;if(Array.isArray(o)||o instanceof F||r){let l=this.box(o,{canonical:!1});if(l.head==="Function")return l=this.box(["Function",...l.ops,...(r??[]).map(f=>this.symbol(f))]),this.defineFunction(t,{signature:{evaluate:l}}),this;let u=[...l.unknowns].sort();if(u.length===0){let f=l.evaluate();return this.defineSymbol(t,{value:f}),this}if(u.some(f=>/\_[\d]+/.test(f)))return l=this.box(["Function",l]),this.defineFunction(t,{signature:{evaluate:l}}),this;if(r&&r.length>0)return this.pushScope(),l=this.box(["Function",l,...r]),this.popScope(),this.defineFunction(t,{signature:{evaluate:l}}),this;this.pushScope(),o=l.evaluate(),this.popScope()}return this.defineSymbol(t,{value:o}),this}_assign(e,i){let t=this.lookupSymbol(e);if(t)return t.value=this.box(i).evaluate(),this;let r=this.lookupFunction(e);if(r){let o=r.signature;return r.signature={...o,N:void 0,simplify:void 0,canonical:void 0,evaluate:i},this}return`${e}`,this}get assumptions(){if(!this.context)throw Error("No scope available");return this.context.assumptions?this.context.assumptions:(this.context.assumptions=new Xi,this.context.assumptions)}shouldContinueExecution(){return this.deadline===void 0||this.deadline>=Date.now()}checkContinueExecution(){if(!this.shouldContinueExecution())throw new Error("timeout")}cache(e,i,t){if(this._cache[e]===void 0)try{this._cache[e]={build:i,purge:t,value:i()}}catch(r){console.error(`Fatal error building cache "${e}":
|
|
51
|
+
${r.toString()}`)}return this._cache[e]?.value}box(e,i){return Ce(this,e,i)}function(e,i,t){return Tu(this,e,i,t)}error(e,i){i instanceof F?i=i.json:i&&Array.isArray(i)&&i[0]==="LatexString"&&((i[1]===void 0||!i[1])&&(i=""),typeof i[1]=="object"&&"str"in i[1]&&!i[1].str&&(i=""));let t;return typeof e=="string"&&(t=this.string(e)),!t&&typeof e!="string"&&(t=new ye(this,"ErrorCode",[this.string(e[0]),...e.slice(1).map(r=>this.box(r,{canonical:!1}))])),i?new ye(this,"Error",[t,this.box(i,{canonical:!1})],{canonical:!1}):new ye(this,"Error",[t],{canonical:!1})}domainError(e,i,t){let r=Nn(e)?this.domain(e):this.symbol(e),o=i||this.symbol("Undefined");return this.error(["incompatible-domain",r,o],t)}hold(e){return this._fn("Hold",[this.box(e,{canonical:!1})])}add(...e){return Tt(this,ne(re(e),"Add"))}neg(e){return Dt(e.canonical)}mul(...e){let i=ne(re(e),"Multiply");return wt(this,i)}div(e,i){return Or(this,e.canonical,i.canonical)}sqrt(e){return zi(this,e,"evaluate")??this._fn("Power",[e,this.Half])}pow(e,i){return(typeof i=="number"||M(i))&&(i=this.number(i)),Fn(this,e,i)}inv(e){if(e.isOne)return this.One;if(e.isNegativeOne)return this.NegativeOne;if(e.isInfinity)return this.Zero;let i=e.numericValue;if(i!==null)return M(i)?this.number(un(i)):typeof i=="number"&&Number.isInteger(i)?this.number([1,i]):i instanceof N&&i.isInteger()?this.number([BigInt(1),R(i)]):this._fn("Divide",[this.One,e]);if(e.head==="Sqrt")return this._fn("Sqrt",[this.inv(e.op1)]);if(e.head==="Divide")return this._fn("Divide",[e.op1,e.op2]);let t=this.NegativeOne;if(e.head==="Power"){if(e.op2.isNegativeOne)return e.op1;t=xe(e.op2),e=e.op1}return t.isNegativeOne?this._fn("Divide",[this.One,e]):this._fn("Power",[e,t])}pair(e,i,t){return new ye(this,"Tuple",[e.canonical,i.canonical],{metadata:t,canonical:!0})}tuple(e,i){return new ye(this,"Tuple",oe(e.map(t=>typeof t=="number"?this.number(t):t.canonical)),{metadata:i,canonical:!0})}array(e,i){return this.Nothing}string(e,i){return new Ye(this,e,i)}symbol(e,i){if(i=i?{...i}:{},"canonical"in i||(i.canonical=!0),e=e.normalize(),e==="NaN")return this.NaN;if(e==="Infinity"||e==="+Infinity"||e==="PositiveInfinity")return this.PositiveInfinity;if(e==="-Infinity"||e==="NegativeInfinity")return this.NegativeInfinity;if(e==="Half")return this.Half;if(this.strict&&!Ne(e)){let r=i?.metadata?.latex,o=`'${e}'`;return this.error(["invalid-identifier",{str:an(e)}],r?["LatexString",`'${r}'`]:o)}if(i?.metadata?.latex!==void 0&&i.canonical!==!0)return new Vn(this,e,i);let t=this._commonSymbols[e];return t&&(!i?.metadata?.wikidata||!t.wikidata||t.wikidata===i.metadata.wikidata)?t:i.canonical===!0?Wa(this,e):new Vn(this,e,i)}domain(e,i){if(e instanceof qn)return e;if(typeof e=="string"){let r=this._commonDomains[e];if(r)return r}if(!this.strict){if(typeof e=="string"){let r=Nr[e];if(r)return this.domain(r)}return new qn(this,e,i)}if(Array.isArray(e)&&e[0]==="Domain"&&(e=e[1]),typeof e=="string"){let r=Nr[e];if(r)return this.domain(r);if(!Ei(e))throw Error("Expected a domain literal, got "+e);return new qn(this,e,i)}if(!Array.isArray(e)||e.length===0)throw Error("Expected a valid domain");let t=e[0];if(!ji.includes(t))throw Error("Expected a domain constructor, got "+t);return new qn(this,e,i)}number(e,i){if(i=i?{...i}:{},"canonical"in i||(i.canonical=!0),i.canonical==="Number"&&(i.canonical=!0),Array.isArray(i.canonical)&&i.canonical.includes("Number")&&(i.canonical=!0),i.metadata===void 0){if(typeof e=="bigint"){if(e===BigInt(1))return this.One;if(e===BigInt(0))return this.Zero;if(e===BigInt(-1))return this.NegativeOne}if(typeof e=="number"){let t=e;if(t===1)return this.One;if(t===0)return this.Zero;if(t===-1)return this.NegativeOne;if(Number.isInteger(t)&&this._commonNumbers[t]!==void 0)return this._commonNumbers[t]===null&&(this._commonNumbers[t]=qr(this,e)??this.NaN),this._commonNumbers[t];if(Number.isNaN(t))return this.NaN;if(!Number.isFinite(t))return t<0?this.NegativeInfinity:this.PositiveInfinity}}return typeof e=="bigint"&&(e=this.bignum(e)),qr(this,e,{metadata:i.metadata,canonical:i.canonical===!0})??this.NaN}rules(e){return bt(this,e)}getRuleSet(e){if(e??(e="standard-simplification"),e==="standard-simplification")return this.cache("standard-simplification-rules",()=>bt(this,Tl));if(e==="solve-univariate")return this.cache("univariate-roots-rules",()=>bt(this,uu));if(e==="harmonization")return this.cache("harmonization-rules",()=>bt(this,lu))}_fn(e,i,t){let r=t?.canonical??!0;return new ye(this,e,i,{...t,canonical:r})}parse(e,i){if(e==null)return null;if(typeof e!="string")throw Error("ce.parse(): expected a LaTeX string");let t={imaginaryUnit:"\\imaginaryI",positiveInfinity:"\\infty",negativeInfinity:"-\\infty",notANumber:"\\operatorname{NaN}",decimalSeparator:this.decimalSeparator,digitGroup:3,digitGroupSeparator:"\\,",exponentProduct:"\\cdot",beginExponentMarker:"10^{",endExponentMarker:"}",truncationMarker:"\\ldots",repeatingDecimal:"auto",skipSpace:!0,parseNumbers:"auto",getIdentifierType:o=>this.lookupFunction(o)?"function":"symbol",parseUnexpectedToken:(o,s)=>null,preserveLatex:!1},r=Bl(yi(e)??e,this.indexedLatexDictionary,{...t,...i});if(!r)throw Error("Failed to parse LaTeX string");return this.box(r,{canonical:i?.canonical??!0})}ask(e){let i=this.box(e,{canonical:!1}),t=[];for(let[r,o]of this.assumptions){let s=i.match(r,{numericTolerance:this._tolerance});s!==null&&o===!0&&t.push(s)}return t}verify(e){return!1}assume(e){try{return bu(this.box(e,{canonical:!1}))}catch(i){return console.error(i.toString()),"internal-error"}}forget(e){if(!this.context)throw Error("No scope available");if(e===void 0){if(this.context.ids)for(let i of this.context.ids.keys())this.forget(i);this.assumptions.clear();return}if(Array.isArray(e)){for(let i of e)this.forget(i);return}if(typeof e=="string"){if(this.context.ids){let i=this.context.ids.get(e);if(i instanceof ce)i.value=void 0;else if(i instanceof Xe){let t=i.signature;i.signature={...t,evaluate:void 0,N:void 0,simplify:void 0,canonical:void 0}}}for(let[i,t]of this.assumptions)i.symbols.includes(e)&&this.assumptions.delete(i)}}};function ks(n){return typeof n=="function"||n instanceof F&&n.domain?.base==="Functions"}var qE="0.25.1";globalThis[Symbol.for("io.cortexjs.compute-engine")]={ComputeEngine:Lt.prototype.constructor,version:"0.25.1"};export{Lt as ComputeEngine,qE as version};
|
|
52
52
|
/*! Bundled license information:
|
|
53
53
|
|
|
54
54
|
complex.js/complex.js:
|