@cortex-js/compute-engine 0.18.1 → 0.19.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 +2947 -2472
- package/dist/compute-engine.js +2947 -2472
- package/dist/compute-engine.min.esm.js +16 -16
- package/dist/compute-engine.min.js +16 -16
- package/dist/math-json.esm.js +2 -2
- package/dist/math-json.js +2 -2
- package/dist/math-json.min.esm.js +2 -2
- 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 +7 -5
- 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 +3 -6
- 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 +3 -17
- package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -2
- 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 +9 -3
- package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/serialize.d.ts +2 -2
- package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/validate.d.ts +4 -2
- package/dist/types/compute-engine/collection-utils.d.ts +46 -0
- package/dist/types/compute-engine/compile.d.ts +2 -2
- package/dist/types/compute-engine/compute-engine.d.ts +6 -1
- package/dist/types/compute-engine/cost-function.d.ts +1 -1
- package/dist/types/compute-engine/domain-utils.d.ts +13 -2
- package/dist/types/compute-engine/function-utils.d.ts +1 -22
- 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-inequalities.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-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 +5 -5
- package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse-identifier.d.ts +2 -2
- package/dist/types/compute-engine/latex-syntax/parse.d.ts +22 -46
- package/dist/types/compute-engine/latex-syntax/public.d.ts +8 -8
- package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +2 -2
- package/dist/types/compute-engine/latex-syntax/serializer.d.ts +2 -2
- package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
- package/dist/types/compute-engine/library/arithmetic-add.d.ts +2 -2
- package/dist/types/compute-engine/library/arithmetic-divide.d.ts +1 -1
- 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 +2 -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 +29 -2
- 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 +6 -5
- 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/public.d.ts +37 -30
- 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/sum.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/utils.d.ts +1 -1
- 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 +1 -1
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
/** CortexJS Compute Engine 0.
|
|
1
|
+
/** CortexJS Compute Engine 0.19.1 */
|
|
2
2
|
(function(global,factory){typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'],factory):(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ComputeEngine = {}));})(this, (function (exports) { 'use strict';
|
|
3
|
-
var ComputeEngine=(()=>{var
|
|
4
|
-
`||(I==="+"?p++:I==="-"?x++:I==="i"||I==="I"?(p+x===0&&o(),c[h+1]!==" "&&!isNaN(c[h+1])?(d.im+=parseFloat((x%2?"-":"")+c[h+1]),h++):d.im+=parseFloat((x%2?"-":"")+"1"),p=x=0):((p+x===0||isNaN(I))&&o(),c[h+1]==="i"||c[h+1]==="I"?(d.im+=parseFloat((x%2?"-":"")+I),h++):d.re+=parseFloat((x%2?"-":"")+I),p=x=0))}p+x>0&&o();break;case"number":d.im=0,d.re=l;break;default:o()}return isNaN(d.re)||isNaN(d.im),d};function u(l,f){if(!(this instanceof u))return new u(l,f);var d=a(l,f);this.re=d.re,this.im=d.im}u.prototype={re:0,im:0,sign:function(){var l=this.abs();return new u(this.re/l,this.im/l)},add:function(l,f){var d=new u(l,f);return this.isInfinite()&&d.isInfinite()?u.NAN:this.isInfinite()||d.isInfinite()?u.INFINITY:new u(this.re+d.re,this.im+d.im)},sub:function(l,f){var d=new u(l,f);return this.isInfinite()&&d.isInfinite()?u.NAN:this.isInfinite()||d.isInfinite()?u.INFINITY:new u(this.re-d.re,this.im-d.im)},mul:function(l,f){var d=new u(l,f);return this.isInfinite()&&d.isZero()||this.isZero()&&d.isInfinite()?u.NAN:this.isInfinite()||d.isInfinite()?u.INFINITY:d.im===0&&this.im===0?new u(this.re*d.re,0):new u(this.re*d.re-this.im*d.im,this.re*d.im+this.im*d.re)},div:function(l,f){var d=new u(l,f);if(this.isZero()&&d.isZero()||this.isInfinite()&&d.isInfinite())return u.NAN;if(this.isInfinite()||d.isZero())return u.INFINITY;if(this.isZero()||d.isInfinite())return u.ZERO;l=this.re,f=this.im;var c=d.re,p=d.im,x,h;return p===0?new u(l/c,f/c):Math.abs(c)<Math.abs(p)?(h=c/p,x=c*h+p,new u((l*h+f)/x,(f*h-l)/x)):(h=p/c,x=p*h+c,new u((l+f*h)/x,(f-l*h)/x))},pow:function(l,f){var d=new u(l,f);if(l=this.re,f=this.im,d.isZero())return u.ONE;if(d.im===0){if(f===0&&l>0)return new u(Math.pow(l,d.re),0);if(l===0)switch((d.re%4+4)%4){case 0:return new u(Math.pow(f,d.re),0);case 1:return new u(0,Math.pow(f,d.re));case 2:return new u(-Math.pow(f,d.re),0);case 3:return new u(0,-Math.pow(f,d.re))}}if(l===0&&f===0&&d.re>0&&d.im>=0)return u.ZERO;var c=Math.atan2(f,l),p=s(l,f);return l=Math.exp(d.re*p-d.im*c),f=d.im*p+d.re*c,new u(l*Math.cos(f),l*Math.sin(f))},sqrt:function(){var l=this.re,f=this.im,d=this.abs(),c,p;if(l>=0){if(f===0)return new u(Math.sqrt(l),0);c=.5*Math.sqrt(2*(d+l))}else c=Math.abs(f)/Math.sqrt(2*(d-l));return l<=0?p=.5*Math.sqrt(2*(d-l)):p=Math.abs(f)/Math.sqrt(2*(d+l)),new u(c,f<0?-p:p)},exp:function(){var l=Math.exp(this.re);return this.im,new u(l*Math.cos(this.im),l*Math.sin(this.im))},expm1:function(){var l=this.re,f=this.im;return new u(Math.expm1(l)*Math.cos(f)+t(f),Math.exp(l)*Math.sin(f))},log:function(){var l=this.re,f=this.im;return f===0&&l>0,new u(s(l,f),Math.atan2(f,l))},abs:function(){return r(this.re,this.im)},arg:function(){return Math.atan2(this.im,this.re)},sin:function(){var l=this.re,f=this.im;return new u(Math.sin(l)*n(f),Math.cos(l)*i(f))},cos:function(){var l=this.re,f=this.im;return new u(Math.cos(l)*n(f),-Math.sin(l)*i(f))},tan:function(){var l=2*this.re,f=2*this.im,d=Math.cos(l)+n(f);return new u(Math.sin(l)/d,i(f)/d)},cot:function(){var l=2*this.re,f=2*this.im,d=Math.cos(l)-n(f);return new u(-Math.sin(l)/d,i(f)/d)},sec:function(){var l=this.re,f=this.im,d=.5*n(2*f)+.5*Math.cos(2*l);return new u(Math.cos(l)*n(f)/d,Math.sin(l)*i(f)/d)},csc:function(){var l=this.re,f=this.im,d=.5*n(2*f)-.5*Math.cos(2*l);return new u(Math.sin(l)*n(f)/d,-Math.cos(l)*i(f)/d)},asin:function(){var l=this.re,f=this.im,d=new u(f*f-l*l+1,-2*l*f).sqrt(),c=new u(d.re-f,d.im+l).log();return new u(c.im,-c.re)},acos:function(){var l=this.re,f=this.im,d=new u(f*f-l*l+1,-2*l*f).sqrt(),c=new u(d.re-f,d.im+l).log();return new u(Math.PI/2-c.im,c.re)},atan:function(){var l=this.re,f=this.im;if(l===0){if(f===1)return new u(0,1/0);if(f===-1)return new u(0,-1/0)}var d=l*l+(1-f)*(1-f),c=new u((1-f*f-l*l)/d,-2*l/d).log();return new u(-.5*c.im,.5*c.re)},acot:function(){var l=this.re,f=this.im;if(f===0)return new u(Math.atan2(1,l),0);var d=l*l+f*f;return d!==0?new u(l/d,-f/d).atan():new u(l!==0?l/0:0,f!==0?-f/0:0).atan()},asec:function(){var l=this.re,f=this.im;if(l===0&&f===0)return new u(0,1/0);var d=l*l+f*f;return d!==0?new u(l/d,-f/d).acos():new u(l!==0?l/0:0,f!==0?-f/0:0).acos()},acsc:function(){var l=this.re,f=this.im;if(l===0&&f===0)return new u(Math.PI/2,1/0);var d=l*l+f*f;return d!==0?new u(l/d,-f/d).asin():new u(l!==0?l/0:0,f!==0?-f/0:0).asin()},sinh:function(){var l=this.re,f=this.im;return new u(i(l)*Math.cos(f),n(l)*Math.sin(f))},cosh:function(){var l=this.re,f=this.im;return new u(n(l)*Math.cos(f),i(l)*Math.sin(f))},tanh:function(){var l=2*this.re,f=2*this.im,d=n(l)+Math.cos(f);return new u(i(l)/d,Math.sin(f)/d)},coth:function(){var l=2*this.re,f=2*this.im,d=n(l)-Math.cos(f);return new u(i(l)/d,-Math.sin(f)/d)},csch:function(){var l=this.re,f=this.im,d=Math.cos(2*f)-n(2*l);return new u(-2*i(l)*Math.cos(f)/d,2*n(l)*Math.sin(f)/d)},sech:function(){var l=this.re,f=this.im,d=Math.cos(2*f)+n(2*l);return new u(2*n(l)*Math.cos(f)/d,-2*i(l)*Math.sin(f)/d)},asinh:function(){var l=this.im;this.im=-this.re,this.re=l;var f=this.asin();return this.re=-this.im,this.im=l,l=f.re,f.re=-f.im,f.im=l,f},acosh:function(){var l=this.acos();if(l.im<=0){var f=l.re;l.re=-l.im,l.im=f}else{var f=l.im;l.im=-l.re,l.re=f}return l},atanh:function(){var l=this.re,f=this.im,d=l>1&&f===0,c=1-l,p=1+l,x=c*c+f*f,h=x!==0?new u((p*c-f*f)/x,(f*c+p*f)/x):new u(l!==-1?l/0:0,f!==0?f/0:0),I=h.re;return h.re=s(h.re,h.im)/2,h.im=Math.atan2(h.im,I)/2,d&&(h.im=-h.im),h},acoth:function(){var l=this.re,f=this.im;if(l===0&&f===0)return new u(0,Math.PI/2);var d=l*l+f*f;return d!==0?new u(l/d,-f/d).atanh():new u(l!==0?l/0:0,f!==0?-f/0:0).atanh()},acsch:function(){var l=this.re,f=this.im;if(f===0)return new u(l!==0?Math.log(l+Math.sqrt(l*l+1)):1/0,0);var d=l*l+f*f;return d!==0?new u(l/d,-f/d).asinh():new u(l!==0?l/0:0,f!==0?-f/0:0).asinh()},asech:function(){var l=this.re,f=this.im;if(this.isZero())return u.INFINITY;var d=l*l+f*f;return d!==0?new u(l/d,-f/d).acosh():new u(l!==0?l/0:0,f!==0?-f/0:0).acosh()},inverse:function(){if(this.isZero())return u.INFINITY;if(this.isInfinite())return u.ZERO;var l=this.re,f=this.im,d=l*l+f*f;return new u(l/d,-f/d)},conjugate:function(){return new u(this.re,-this.im)},neg:function(){return new u(-this.re,-this.im)},ceil:function(l){return l=Math.pow(10,l||0),new u(Math.ceil(this.re*l)/l,Math.ceil(this.im*l)/l)},floor:function(l){return l=Math.pow(10,l||0),new u(Math.floor(this.re*l)/l,Math.floor(this.im*l)/l)},round:function(l){return l=Math.pow(10,l||0),new u(Math.round(this.re*l)/l,Math.round(this.im*l)/l)},equals:function(l,f){var d=new u(l,f);return Math.abs(d.re-this.re)<=u.EPSILON&&Math.abs(d.im-this.im)<=u.EPSILON},clone:function(){return new u(this.re,this.im)},toString:function(){var l=this.re,f=this.im,d="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(l)<u.EPSILON&&(l=0),Math.abs(f)<u.EPSILON&&(f=0),f===0?d+l:(l!==0?(d+=l,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())}},u.ZERO=new u(0,0),u.ONE=new u(1,0),u.I=new u(0,1),u.PI=new u(Math.PI,0),u.E=new u(Math.E,0),u.INFINITY=new u(1/0,1/0),u.NAN=new u(NaN,NaN),u.EPSILON=1e-15,typeof define=="function"&&define.amd?define([],function(){return u}):typeof Kt=="object"?(Object.defineProperty(u,"__esModule",{value:!0}),u.default=u,u.Complex=u,co.exports=u):e.Complex=u})(Kt)});var vf={};za(vf,{ADDITION_PRECEDENCE:()=>Za,ARROW_PRECEDENCE:()=>Ha,ASSIGNMENT_PRECEDENCE:()=>ja,COMPARISON_PRECEDENCE:()=>Ga,ComputeEngine:()=>di,DIVISION_PRECEDENCE:()=>Wa,EXPONENTIATION_PRECEDENCE:()=>Ya,MULTIPLICATION_PRECEDENCE:()=>Ja,POSTFIX_PRECEDENCE:()=>Qa,isEnvironmentEntry:()=>Xt,isExpressionEntry:()=>Xa,isFunctionEntry:()=>Ka,isInfixEntry:()=>Wi,isMatchfixEntry:()=>qn,isPostfixEntry:()=>Yi,isPrefixEntry:()=>mi,isSymbolEntry:()=>Qt,version:()=>Nf});var Ga=245,ja=260,Ha=270,Za=275,Ja=390,Wa=600,Ya=700,Qa=810;function Xa(e){return!("kind"in e)||e.kind==="expression"}function Qt(e){return"kind"in e&&e.kind==="symbol"}function Ka(e){return"kind"in e&&e.kind==="function"}function qn(e){return"kind"in e&&e.kind==="matchfix"}function Wi(e){return"kind"in e&&e.kind==="infix"}function mi(e){return"kind"in e&&e.kind==="prefix"}function Yi(e){return"kind"in e&&e.kind==="postfix"}function Xt(e){return"kind"in e&&e.kind==="environment"}var Rn=se(te());var Vn=9e15,pn=1e9,er="0123456789abcdef",Xi="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Ki="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",nr={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Vn,maxE:Vn,crypto:!1},ho,Ke,B=!0,nt="[DecimalError] ",mn=nt+"Invalid argument: ",xo=nt+"Precision limit exceeded",bo=nt+"crypto unavailable",yo="[object Decimal]",he=Math.floor,ae=Math.pow,eu=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,nu=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,iu=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Eo=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Le=1e7,_=7,tu=9007199254740991,ru=Xi.length-1,ir=Ki.length-1,g={toStringTag:yo};g.absoluteValue=g.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),v(e)};g.ceil=function(){return v(new this.constructor(this),this.e+1,2)};g.clampedTo=g.clamp=function(e,n){var i,t=this,r=t.constructor;if(e=new r(e),n=new r(n),!e.s||!n.s)return new r(NaN);if(e.gt(n))throw Error(mn+n);return i=t.cmp(e),i<0?e:t.cmp(n)>0?n:new r(t)};g.comparedTo=g.cmp=function(e){var n,i,t,r,o=this,s=o.d,a=(e=new o.constructor(e)).d,u=o.s,l=e.s;if(!s||!a)return!u||!l?NaN:u!==l?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-l:0;if(u!==l)return u;if(o.e!==e.e)return o.e>e.e^u<0?1:-1;for(t=s.length,r=a.length,n=0,i=t<r?t:r;n<i;++n)if(s[n]!==a[n])return s[n]>a[n]^u<0?1:-1;return t===r?0:t>r^u<0?1:-1};g.cosine=g.cos=function(){var e,n,i=this,t=i.constructor;return i.d?i.d[0]?(e=t.precision,n=t.rounding,t.precision=e+Math.max(i.e,i.sd())+_,t.rounding=1,i=ou(t,Io(t,i)),t.precision=e,t.rounding=n,v(Ke==2||Ke==3?i.neg():i,e,n,!0)):new t(1):new t(NaN)};g.cubeRoot=g.cbrt=function(){var e,n,i,t,r,o,s,a,u,l,f=this,d=f.constructor;if(!f.isFinite()||f.isZero())return new d(f);for(B=!1,o=f.s*ae(f.s*f,1/3),!o||Math.abs(o)==1/0?(i=pe(f.d),e=f.e,(o=(e-i.length+1)%3)&&(i+=o==1||o==-2?"0":"00"),o=ae(i,1/3),e=he((e+1)/3)-(e%3==(e<0?-1:2)),o==1/0?i="5e"+e:(i=o.toExponential(),i=i.slice(0,i.indexOf("e")+1)+e),t=new d(i),t.s=f.s):t=new d(o.toString()),s=(e=d.precision)+3;;)if(a=t,u=a.times(a).times(a),l=u.plus(f),t=G(l.plus(f).times(a),l.plus(u),s+2,1),pe(a.d).slice(0,s)===(i=pe(t.d)).slice(0,s))if(i=i.slice(s-3,s+1),i=="9999"||!r&&i=="4999"){if(!r&&(v(a,e+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")&&(v(t,e+1,1),n=!t.times(t).times(t).eq(f));break}return B=!0,v(t,e,d.rounding,n)};g.decimalPlaces=g.dp=function(){var e,n=this.d,i=NaN;if(n){if(e=n.length-1,i=(e-he(this.e/_))*_,e=n[e],e)for(;e%10==0;e/=10)i--;i<0&&(i=0)}return i};g.dividedBy=g.div=function(e){return G(this,new this.constructor(e))};g.dividedToIntegerBy=g.divToInt=function(e){var n=this,i=n.constructor;return v(G(n,new i(e),0,1,1),i.precision,i.rounding)};g.equals=g.eq=function(e){return this.cmp(e)===0};g.floor=function(){return v(new this.constructor(this),this.e+1,3)};g.greaterThan=g.gt=function(e){return this.cmp(e)>0};g.greaterThanOrEqualTo=g.gte=function(e){var n=this.cmp(e);return n==1||n===0};g.hyperbolicCosine=g.cosh=function(){var e,n,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?(e=Math.ceil(r/3),n=(1/tt(4,e)).toString()):(e=16,n="2.3283064365386962890625e-10"),o=$n(s,1,o.times(n),new s(1),!0);for(var u,l=e,f=new s(8);l--;)u=o.times(o),o=a.minus(u.times(f.minus(u.times(f))));return v(o,s.precision=i,s.rounding=t,!0)};g.hyperbolicSine=g.sinh=function(){var e,n,i,t,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(n=o.precision,i=o.rounding,o.precision=n+Math.max(r.e,r.sd())+4,o.rounding=1,t=r.d.length,t<3)r=$n(o,2,r,r,!0);else{e=1.4*Math.sqrt(t),e=e>16?16:e|0,r=r.times(1/tt(5,e)),r=$n(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),l=new o(20);e--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(l))))}return o.precision=n,o.rounding=i,v(r,n,i,!0)};g.hyperbolicTangent=g.tanh=function(){var e,n,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(e=t.precision,n=t.rounding,t.precision=e+7,t.rounding=1,G(i.sinh(),i.cosh(),t.precision=e,t.rounding=n)):new t(i.s)};g.inverseCosine=g.acos=function(){var e,n=this,i=n.constructor,t=n.abs().cmp(1),r=i.precision,o=i.rounding;return t!==-1?t===0?n.isNeg()?Pe(i,r,o):new i(0):new i(NaN):n.isZero()?Pe(i,r+4,o).times(.5):(i.precision=r+6,i.rounding=1,n=n.asin(),e=Pe(i,r+4,o).times(.5),i.precision=r,i.rounding=o,e.minus(n))};g.inverseHyperbolicCosine=g.acosh=function(){var e,n,i=this,t=i.constructor;return i.lte(1)?new t(i.eq(1)?0:NaN):i.isFinite()?(e=t.precision,n=t.rounding,t.precision=e+Math.max(Math.abs(i.e),i.sd())+4,t.rounding=1,B=!1,i=i.times(i).minus(1).sqrt().plus(i),B=!0,t.precision=e,t.rounding=n,i.ln()):new t(i)};g.inverseHyperbolicSine=g.asinh=function(){var e,n,i=this,t=i.constructor;return!i.isFinite()||i.isZero()?new t(i):(e=t.precision,n=t.rounding,t.precision=e+2*Math.max(Math.abs(i.e),i.sd())+6,t.rounding=1,B=!1,i=i.times(i).plus(1).sqrt().plus(i),B=!0,t.precision=e,t.rounding=n,i.ln())};g.inverseHyperbolicTangent=g.atanh=function(){var e,n,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):(e=o.precision,n=o.rounding,t=r.sd(),Math.max(t,e)<2*-r.e-1?v(new o(r),e,n,!0):(o.precision=i=t-r.e,r=G(r.plus(1),new o(1).minus(r),i+e,1),o.precision=e+4,o.rounding=1,r=r.ln(),o.precision=e,o.rounding=n,r.times(.5))):new o(NaN)};g.inverseSine=g.asin=function(){var e,n,i,t,r=this,o=r.constructor;return r.isZero()?new o(r):(n=r.abs().cmp(1),i=o.precision,t=o.rounding,n!==-1?n===0?(e=Pe(o,i+4,t).times(.5),e.s=r.s,e):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)))};g.inverseTangent=g.atan=function(){var e,n,i,t,r,o,s,a,u,l=this,f=l.constructor,d=f.precision,c=f.rounding;if(l.isFinite()){if(l.isZero())return new f(l);if(l.abs().eq(1)&&d+4<=ir)return s=Pe(f,d+4,c).times(.25),s.s=l.s,s}else{if(!l.s)return new f(NaN);if(d+4<=ir)return s=Pe(f,d+4,c).times(.5),s.s=l.s,s}for(f.precision=a=d+10,f.rounding=1,i=Math.min(28,a/_+2|0),e=i;e;--e)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(B=!1,n=Math.ceil(a/_),t=1,u=l.times(l),s=new f(l),r=l;e!==-1;)if(r=r.times(u),o=s.minus(r.div(t+=2)),r=r.times(u),s=o.plus(r.div(t+=2)),s.d[n]!==void 0)for(e=n;s.d[e]===o.d[e]&&e--;);return i&&(s=s.times(2<<i-1)),B=!0,v(s,f.precision=d,f.rounding=c,!0)};g.isFinite=function(){return!!this.d};g.isInteger=g.isInt=function(){return!!this.d&&he(this.e/_)>this.d.length-2};g.isNaN=function(){return!this.s};g.isNegative=g.isNeg=function(){return this.s<0};g.isPositive=g.isPos=function(){return this.s>0};g.isZero=function(){return!!this.d&&this.d[0]===0};g.lessThan=g.lt=function(e){return this.cmp(e)<0};g.lessThanOrEqualTo=g.lte=function(e){return this.cmp(e)<1};g.logarithm=g.log=function(e){var n,i,t,r,o,s,a,u,l=this,f=l.constructor,d=f.precision,c=f.rounding,p=5;if(e==null)e=new f(10),n=!0;else{if(e=new f(e),i=e.d,e.s<0||!i||!i[0]||e.eq(1))return new f(NaN);n=e.eq(10)}if(i=l.d,l.s<0||!i||!i[0]||l.eq(1))return new f(i&&!i[0]?-1/0:l.s!=1?NaN:i?0:1/0);if(n)if(i.length>1)o=!0;else{for(r=i[0];r%10===0;)r/=10;o=r!==1}if(B=!1,a=d+p,s=cn(l,a),t=n?et(f,a+10):cn(e,a),u=G(s,t,a,1),pi(u.d,r=d,c))do if(a+=10,s=cn(l,a),t=n?et(f,a+10):cn(e,a),u=G(s,t,a,1),!o){+pe(u.d).slice(r+1,r+15)+1==1e14&&(u=v(u,d+1,0));break}while(pi(u.d,r+=10,c));return B=!0,v(u,d,c)};g.minus=g.sub=function(e){var n,i,t,r,o,s,a,u,l,f,d,c,p=this,x=p.constructor;if(e=new x(e),!p.d||!e.d)return!p.s||!e.s?e=new x(NaN):p.d?e.s=-e.s:e=new x(e.d||p.s!==e.s?p:NaN),e;if(p.s!=e.s)return e.s=-e.s,p.plus(e);if(l=p.d,c=e.d,a=x.precision,u=x.rounding,!l[0]||!c[0]){if(c[0])e.s=-e.s;else if(l[0])e=new x(p);else return new x(u===3?-0:0);return B?v(e,a,u):e}if(i=he(e.e/_),f=he(p.e/_),l=l.slice(),o=f-i,o){for(d=o<0,d?(n=l,o=-o,s=c.length):(n=c,i=f,s=l.length),t=Math.max(Math.ceil(a/_),s)+2,o>t&&(o=t,n.length=1),n.reverse(),t=o;t--;)n.push(0);n.reverse()}else{for(t=l.length,s=c.length,d=t<s,d&&(s=t),t=0;t<s;t++)if(l[t]!=c[t]){d=l[t]<c[t];break}o=0}for(d&&(n=l,l=c,c=n,e.s=-e.s),s=l.length,t=c.length-s;t>0;--t)l[s++]=0;for(t=c.length;t>o;){if(l[--t]<c[t]){for(r=t;r&&l[--r]===0;)l[r]=Le-1;--l[r],l[t]+=Le}l[t]-=c[t]}for(;l[--s]===0;)l.pop();for(;l[0]===0;l.shift())--i;return l[0]?(e.d=l,e.e=it(l,i),B?v(e,a,u):e):new x(u===3?-0:0)};g.modulo=g.mod=function(e){var n,i=this,t=i.constructor;return e=new t(e),!i.d||!e.s||e.d&&!e.d[0]?new t(NaN):!e.d||i.d&&!i.d[0]?v(new t(i),t.precision,t.rounding):(B=!1,t.modulo==9?(n=G(i,e.abs(),0,3,1),n.s*=e.s):n=G(i,e,0,t.modulo,1),n=n.times(e),B=!0,i.minus(n))};g.naturalExponential=g.exp=function(){return tr(this)};g.naturalLogarithm=g.ln=function(){return cn(this)};g.negated=g.neg=function(){var e=new this.constructor(this);return e.s=-e.s,v(e)};g.plus=g.add=function(e){var n,i,t,r,o,s,a,u,l,f,d=this,c=d.constructor;if(e=new c(e),!d.d||!e.d)return!d.s||!e.s?e=new c(NaN):d.d||(e=new c(e.d||d.s===e.s?d:NaN)),e;if(d.s!=e.s)return e.s=-e.s,d.minus(e);if(l=d.d,f=e.d,a=c.precision,u=c.rounding,!l[0]||!f[0])return f[0]||(e=new c(d)),B?v(e,a,u):e;if(o=he(d.e/_),t=he(e.e/_),l=l.slice(),r=o-t,r){for(r<0?(i=l,r=-r,s=f.length):(i=f,t=o,s=l.length),o=Math.ceil(a/_),s=o>s?o+1:s+1,r>s&&(r=s,i.length=1),i.reverse();r--;)i.push(0);i.reverse()}for(s=l.length,r=f.length,s-r<0&&(r=s,i=f,f=l,l=i),n=0;r;)n=(l[--r]=l[r]+f[r]+n)/Le|0,l[r]%=Le;for(n&&(l.unshift(n),++t),s=l.length;l[--s]==0;)l.pop();return e.d=l,e.e=it(l,t),B?v(e,a,u):e};g.precision=g.sd=function(e){var n,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(mn+e);return i.d?(n=No(i.d),e&&i.e+1>n&&(n=i.e+1)):n=NaN,n};g.round=function(){var e=this,n=e.constructor;return v(new n(e),e.e+1,n.rounding)};g.sine=g.sin=function(){var e,n,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(e=t.precision,n=t.rounding,t.precision=e+Math.max(i.e,i.sd())+_,t.rounding=1,i=au(t,Io(t,i)),t.precision=e,t.rounding=n,v(Ke>2?i.neg():i,e,n,!0)):new t(NaN)};g.squareRoot=g.sqrt=function(){var e,n,i,t,r,o,s=this,a=s.d,u=s.e,l=s.s,f=s.constructor;if(l!==1||!a||!a[0])return new f(!l||l<0&&(!a||a[0])?NaN:a?s:1/0);for(B=!1,l=Math.sqrt(+s),l==0||l==1/0?(n=pe(a),(n.length+u)%2==0&&(n+="0"),l=Math.sqrt(n),u=he((u+1)/2)-(u<0||u%2),l==1/0?n="5e"+u:(n=l.toExponential(),n=n.slice(0,n.indexOf("e")+1)+u),t=new f(n)):t=new f(l.toString()),i=(u=f.precision)+3;;)if(o=t,t=o.plus(G(s,o,i+2,1)).times(.5),pe(o.d).slice(0,i)===(n=pe(t.d)).slice(0,i))if(n=n.slice(i-3,i+1),n=="9999"||!r&&n=="4999"){if(!r&&(v(o,u+1,0),o.times(o).eq(s))){t=o;break}i+=4,r=1}else{(!+n||!+n.slice(1)&&n.charAt(0)=="5")&&(v(t,u+1,1),e=!t.times(t).eq(s));break}return B=!0,v(t,u,f.rounding,e)};g.tangent=g.tan=function(){var e,n,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(e=t.precision,n=t.rounding,t.precision=e+10,t.rounding=1,i=i.sin(),i.s=1,i=G(i,new t(1).minus(i.times(i)).sqrt(),e+10,0),t.precision=e,t.rounding=n,v(Ke==2||Ke==4?i.neg():i,e,n,!0)):new t(NaN)};g.times=g.mul=function(e){var n,i,t,r,o,s,a,u,l,f=this,d=f.constructor,c=f.d,p=(e=new d(e)).d;if(e.s*=f.s,!c||!c[0]||!p||!p[0])return new d(!e.s||c&&!c[0]&&!p||p&&!p[0]&&!c?NaN:!c||!p?e.s/0:e.s*0);for(i=he(f.e/_)+he(e.e/_),u=c.length,l=p.length,u<l&&(o=c,c=p,p=o,s=u,u=l,l=s),o=[],s=u+l,t=s;t--;)o.push(0);for(t=l;--t>=0;){for(n=0,r=u+t;r>t;)a=o[r]+p[t]*c[r-t-1]+n,o[r--]=a%Le|0,n=a/Le|0;o[r]=(o[r]+n)%Le|0}for(;!o[--s];)o.pop();return n?++i:o.shift(),e.d=o,e.e=it(o,i),B?v(e,d.precision,d.rounding):e};g.toBinary=function(e,n){return or(this,2,e,n)};g.toDecimalPlaces=g.toDP=function(e,n){var i=this,t=i.constructor;return i=new t(i),e===void 0?i:(_e(e,0,pn),n===void 0?n=t.rounding:_e(n,0,8),v(i,e+i.e+1,n))};g.toExponential=function(e,n){var i,t=this,r=t.constructor;return e===void 0?i=He(t,!0):(_e(e,0,pn),n===void 0?n=r.rounding:_e(n,0,8),t=v(new r(t),e+1,n),i=He(t,!0,e+1)),t.isNeg()&&!t.isZero()?"-"+i:i};g.toFixed=function(e,n){var i,t,r=this,o=r.constructor;return e===void 0?i=He(r):(_e(e,0,pn),n===void 0?n=o.rounding:_e(n,0,8),t=v(new o(r),e+r.e+1,n),i=He(t,!1,e+t.e+1)),r.isNeg()&&!r.isZero()?"-"+i:i};g.toFraction=function(e){var n,i,t,r,o,s,a,u,l,f,d,c,p=this,x=p.d,h=p.constructor;if(!x)return new h(p);if(l=i=new h(1),t=u=new h(0),n=new h(t),o=n.e=No(x)-p.e-1,s=o%_,n.d[0]=ae(10,s<0?_+s:s),e==null)e=o>0?n:l;else{if(a=new h(e),!a.isInt()||a.lt(l))throw Error(mn+a);e=a.gt(n)?o>0?n:l:a}for(B=!1,a=new h(pe(x)),f=h.precision,h.precision=o=x.length*_*2;d=G(a,n,0,1,1),r=i.plus(d.times(t)),r.cmp(e)!=1;)i=t,t=r,r=l,l=u.plus(d.times(r)),u=r,r=n,n=a.minus(d.times(r)),a=r;return r=G(e.minus(i),t,0,1,1),u=u.plus(r.times(l)),i=i.plus(r.times(t)),u.s=l.s=p.s,c=G(l,t,o,1).minus(p).abs().cmp(G(u,i,o,1).minus(p).abs())<1?[l,t]:[u,i],h.precision=f,B=!0,c};g.toHexadecimal=g.toHex=function(e,n){return or(this,16,e,n)};g.toNearest=function(e,n){var i=this,t=i.constructor;if(i=new t(i),e==null){if(!i.d)return i;e=new t(1),n=t.rounding}else{if(e=new t(e),n===void 0?n=t.rounding:_e(n,0,8),!i.d)return e.s?i:e;if(!e.d)return e.s&&(e.s=i.s),e}return e.d[0]?(B=!1,i=G(i,e,0,n,1).times(e),B=!0,v(i)):(e.s=i.s,i=e),i};g.toNumber=function(){return+this};g.toOctal=function(e,n){return or(this,8,e,n)};g.toPower=g.pow=function(e){var n,i,t,r,o,s,a=this,u=a.constructor,l=+(e=new u(e));if(!a.d||!e.d||!a.d[0]||!e.d[0])return new u(ae(+a,l));if(a=new u(a),a.eq(1))return a;if(t=u.precision,o=u.rounding,e.eq(1))return v(a,t,o);if(n=he(e.e/_),n>=e.d.length-1&&(i=l<0?-l:l)<=tu)return r=vo(u,a,i,t),e.s<0?new u(1).div(r):v(r,t,o);if(s=a.s,s<0){if(n<e.d.length-1)return new u(NaN);if(e.d[n]&1||(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return i=ae(+a,l),n=i==0||!isFinite(i)?he(l*(Math.log("0."+pe(a.d))/Math.LN10+a.e+1)):new u(i+"").e,n>u.maxE+1||n<u.minE-1?new u(n>0?s/0:0):(B=!1,u.rounding=a.s=1,i=Math.min(12,(n+"").length),r=tr(e.times(cn(a,t+i)),t),r.d&&(r=v(r,t+5,1),pi(r.d,t,o)&&(n=t+10,r=v(tr(e.times(cn(a,n+i)),n),n+5,1),+pe(r.d).slice(t+1,t+15)+1==1e14&&(r=v(r,t+1,0)))),r.s=s,B=!0,u.rounding=o,v(r,t,o))};g.toPrecision=function(e,n){var i,t=this,r=t.constructor;return e===void 0?i=He(t,t.e<=r.toExpNeg||t.e>=r.toExpPos):(_e(e,1,pn),n===void 0?n=r.rounding:_e(n,0,8),t=v(new r(t),e,n),i=He(t,e<=t.e||t.e<=r.toExpNeg,e)),t.isNeg()&&!t.isZero()?"-"+i:i};g.toSignificantDigits=g.toSD=function(e,n){var i=this,t=i.constructor;return e===void 0?(e=t.precision,n=t.rounding):(_e(e,1,pn),n===void 0?n=t.rounding:_e(n,0,8)),v(new t(i),e,n)};g.toString=function(){var e=this,n=e.constructor,i=He(e,e.e<=n.toExpNeg||e.e>=n.toExpPos);return e.isNeg()&&!e.isZero()?"-"+i:i};g.truncated=g.trunc=function(){return v(new this.constructor(this),this.e+1,1)};g.valueOf=g.toJSON=function(){var e=this,n=e.constructor,i=He(e,e.e<=n.toExpNeg||e.e>=n.toExpPos);return e.isNeg()?"-"+i:i};function pe(e){var n,i,t,r=e.length-1,o="",s=e[0];if(r>0){for(o+=s,n=1;n<r;n++)t=e[n]+"",i=_-t.length,i&&(o+=dn(i)),o+=t;s=e[n],t=s+"",i=_-t.length,i&&(o+=dn(i))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function _e(e,n,i){if(e!==~~e||e<n||e>i)throw Error(mn+e)}function pi(e,n,i,t){var r,o,s,a;for(o=e[0];o>=10;o/=10)--n;return--n<0?(n+=_,r=0):(r=Math.ceil((n+1)/_),n%=_),o=ae(10,_-n),a=e[r]%o|0,t==null?n<3?(n==0?a=a/100|0:n==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)&&(e[r+1]/o/100|0)==ae(10,n-2)-1||(a==o/2||a==0)&&(e[r+1]/o/100|0)==0:n<4?(n==0?a=a/1e3|0:n==1?a=a/100|0:n==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)&&(e[r+1]/o/1e3|0)==ae(10,n-3)-1,s}function Qi(e,n,i){for(var t,r=[0],o,s=0,a=e.length;s<a;){for(o=r.length;o--;)r[o]*=n;for(r[0]+=er.indexOf(e.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 ou(e,n){var i,t,r;if(n.isZero())return n;t=n.d.length,t<32?(i=Math.ceil(t/3),r=(1/tt(4,i)).toString()):(i=16,r="2.3283064365386962890625e-10"),e.precision+=i,n=$n(e,1,n.times(r),new e(1));for(var o=i;o--;){var s=n.times(n);n=s.times(s).minus(s).times(8).plus(1)}return e.precision-=i,n}var G=function(){function e(t,r,o){var s,a=0,u=t.length;for(t=t.slice();u--;)s=t[u]*r+a,t[u]=s%o|0,a=s/o|0;return a&&t.unshift(a),t}function n(t,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(t[a]!=r[a]){u=t[a]>r[a]?1:-1;break}return u}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,u){var l,f,d,c,p,x,h,I,C,V,z,ie,Gi,Xe,Jt,ji,ci,Wt,Ce,Hi,Zi=t.constructor,Yt=t.s==r.s?1:-1,ge=t.d,H=r.d;if(!ge||!ge[0]||!H||!H[0])return new Zi(!t.s||!r.s||(ge?H&&ge[0]==H[0]:!H)?NaN:ge&&ge[0]==0||!H?Yt*0:Yt/0);for(u?(p=1,f=t.e-r.e):(u=Le,p=_,f=he(t.e/p)-he(r.e/p)),Ce=H.length,ci=ge.length,C=new Zi(Yt),V=C.d=[],d=0;H[d]==(ge[d]||0);d++);if(H[d]>(ge[d]||0)&&f--,o==null?(Xe=o=Zi.precision,s=Zi.rounding):a?Xe=o+(t.e-r.e)+1:Xe=o,Xe<0)V.push(1),x=!0;else{if(Xe=Xe/p+2|0,d=0,Ce==1){for(c=0,H=H[0],Xe++;(d<ci||c)&&Xe--;d++)Jt=c*u+(ge[d]||0),V[d]=Jt/H|0,c=Jt%H|0;x=c||d<ci}else{for(c=u/(H[0]+1)|0,c>1&&(H=e(H,c,u),ge=e(ge,c,u),Ce=H.length,ci=ge.length),ji=Ce,z=ge.slice(0,Ce),ie=z.length;ie<Ce;)z[ie++]=0;Hi=H.slice(),Hi.unshift(0),Wt=H[0],H[1]>=u/2&&++Wt;do c=0,l=n(H,z,Ce,ie),l<0?(Gi=z[0],Ce!=ie&&(Gi=Gi*u+(z[1]||0)),c=Gi/Wt|0,c>1?(c>=u&&(c=u-1),h=e(H,c,u),I=h.length,ie=z.length,l=n(h,z,I,ie),l==1&&(c--,i(h,Ce<I?Hi:H,I,u))):(c==0&&(l=c=1),h=H.slice()),I=h.length,I<ie&&h.unshift(0),i(z,h,ie,u),l==-1&&(ie=z.length,l=n(H,z,Ce,ie),l<1&&(c++,i(z,Ce<ie?Hi:H,ie,u))),ie=z.length):l===0&&(c++,z=[0]),V[d++]=c,l&&z[0]?z[ie++]=ge[ji]||0:(z=[ge[ji]],ie=1);while((ji++<ci||z[0]!==void 0)&&Xe--);x=z[0]!==void 0}V[0]||V.shift()}if(p==1)C.e=f,ho=x;else{for(d=1,c=V[0];c>=10;c/=10)d++;C.e=d+f*p-1,v(C,a?o+C.e+1:o,s,x)}return C}}();function v(e,n,i,t){var r,o,s,a,u,l,f,d,c,p=e.constructor;e:if(n!=null){if(d=e.d,!d)return e;for(r=1,a=d[0];a>=10;a/=10)r++;if(o=n-r,o<0)o+=_,s=n,f=d[c=0],u=f/ae(10,r-s-1)%10|0;else if(c=Math.ceil((o+1)/_),a=d.length,c>=a)if(t){for(;a++<=c;)d.push(0);f=u=0,r=1,o%=_,s=o-_+1}else break e;else{for(f=a=d[c],r=1;a>=10;a/=10)r++;o%=_,s=o-_+r,u=s<0?0:f/ae(10,r-s-1)%10|0}if(t=t||n<0||d[c+1]!==void 0||(s<0?f:f%ae(10,r-s-1)),l=i<4?(u||t)&&(i==0||i==(e.s<0?3:2)):u>5||u==5&&(i==4||t||i==6&&(o>0?s>0?f/ae(10,r-s):0:d[c-1])%10&1||i==(e.s<0?8:7)),n<1||!d[0])return d.length=0,l?(n-=e.e+1,d[0]=ae(10,(_-n%_)%_),e.e=-n||0):d[0]=e.e=0,e;if(o==0?(d.length=c,a=1,c--):(d.length=c+1,a=ae(10,_-o),d[c]=s>0?(f/ae(10,r-s)%ae(10,s)|0)*a:0),l)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&&(e.e++,d[0]==Le&&(d[0]=1));break}else{if(d[c]+=a,d[c]!=Le)break;d[c--]=0,a=1}for(o=d.length;d[--o]===0;)d.pop()}return B&&(e.e>p.maxE?(e.d=null,e.e=NaN):e.e<p.minE&&(e.e=0,e.d=[0])),e}function He(e,n,i){if(!e.isFinite())return So(e);var t,r=e.e,o=pe(e.d),s=o.length;return n?(i&&(t=i-s)>0?o=o.charAt(0)+"."+o.slice(1)+dn(t):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(e.e<0?"e":"e+")+e.e):r<0?(o="0."+dn(-r-1)+o,i&&(t=i-s)>0&&(o+=dn(t))):r>=s?(o+=dn(r+1-s),i&&(t=i-r-1)>0&&(o=o+"."+dn(t))):((t=r+1)<s&&(o=o.slice(0,t)+"."+o.slice(t)),i&&(t=i-s)>0&&(r+1===s&&(o+="."),o+=dn(t))),o}function it(e,n){var i=e[0];for(n*=_;i>=10;i/=10)n++;return n}function et(e,n,i){if(n>ru)throw B=!0,i&&(e.precision=i),Error(xo);return v(new e(Xi),n,1,!0)}function Pe(e,n,i){if(n>ir)throw Error(xo);return v(new e(Ki),n,i,!0)}function No(e){var n=e.length-1,i=n*_+1;if(n=e[n],n){for(;n%10==0;n/=10)i--;for(n=e[0];n>=10;n/=10)i++}return i}function dn(e){for(var n="";e--;)n+="0";return n}function vo(e,n,i,t){var r,o=new e(1),s=Math.ceil(t/_+4);for(B=!1;;){if(i%2&&(o=o.times(n),po(o.d,s)&&(r=!0)),i=he(i/2),i===0){i=o.d.length-1,r&&o.d[i]===0&&++o.d[i];break}n=n.times(n),po(n.d,s)}return B=!0,o}function mo(e){return e.d[e.d.length-1]&1}function _o(e,n,i){for(var t,r=new e(n[0]),o=0;++o<n.length;)if(t=new e(n[o]),t.s)r[i](t)&&(r=t);else{r=t;break}return r}function tr(e,n){var i,t,r,o,s,a,u,l=0,f=0,d=0,c=e.constructor,p=c.rounding,x=c.precision;if(!e.d||!e.d[0]||e.e>17)return new c(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:0/0);for(n==null?(B=!1,u=x):u=n,a=new c(.03125);e.e>-2;)e=e.times(a),d+=5;for(t=Math.log(ae(2,d))/Math.LN10*2+5|0,u+=t,i=o=s=new c(1),c.precision=u;;){if(o=v(o.times(e),u,1),i=i.times(++f),a=s.plus(G(o,i,u,1)),pe(a.d).slice(0,u)===pe(s.d).slice(0,u)){for(r=d;r--;)s=v(s.times(s),u,1);if(n==null)if(l<3&&pi(s.d,u-t,p,l))c.precision=u+=10,i=o=a=new c(1),f=0,l++;else return v(s,c.precision=x,p,B=!0);else return c.precision=x,s}s=a}}function cn(e,n){var i,t,r,o,s,a,u,l,f,d,c,p=1,x=10,h=e,I=h.d,C=h.constructor,V=C.rounding,z=C.precision;if(h.s<0||!I||!I[0]||!h.e&&I[0]==1&&I.length==1)return new C(I&&!I[0]?-1/0:h.s!=1?NaN:I?0:h);if(n==null?(B=!1,f=z):f=n,C.precision=f+=x,i=pe(I),t=i.charAt(0),Math.abs(o=h.e)<15e14){for(;t<7&&t!=1||t==1&&i.charAt(1)>3;)h=h.times(e),i=pe(h.d),t=i.charAt(0),p++;o=h.e,t>1?(h=new C("0."+i),o++):h=new C(t+"."+i.slice(1))}else return l=et(C,f+2,z).times(o+""),h=cn(new C(t+"."+i.slice(1)),f-x).plus(l),C.precision=z,n==null?v(h,z,V,B=!0):h;for(d=h,u=s=h=G(h.minus(1),h.plus(1),f,1),c=v(h.times(h),f,1),r=3;;){if(s=v(s.times(c),f,1),l=u.plus(G(s,new C(r),f,1)),pe(l.d).slice(0,f)===pe(u.d).slice(0,f))if(u=u.times(2),o!==0&&(u=u.plus(et(C,f+2,z).times(o+""))),u=G(u,new C(p),f,1),n==null)if(pi(u.d,f-x,V,a))C.precision=f+=x,l=s=h=G(d.minus(1),d.plus(1),f,1),c=v(h.times(h),f,1),r=a=1;else return v(u,C.precision=z,V,B=!0);else return C.precision=z,u;u=l,r+=2}}function So(e){return String(e.s*e.s/0)}function rr(e,n){var i,t,r;for((i=n.indexOf("."))>-1&&(n=n.replace(".","")),(t=n.search(/e/i))>0?(i<0&&(i=t),i+=+n.slice(t+1),n=n.substring(0,t)):i<0&&(i=n.length),t=0;n.charCodeAt(t)===48;t++);for(r=n.length;n.charCodeAt(r-1)===48;--r);if(n=n.slice(t,r),n){if(r-=t,e.e=i=i-t-1,e.d=[],t=(i+1)%_,i<0&&(t+=_),t<r){for(t&&e.d.push(+n.slice(0,t)),r-=_;t<r;)e.d.push(+n.slice(t,t+=_));n=n.slice(t),t=_-n.length}else t-=r;for(;t--;)n+="0";e.d.push(+n),B&&(e.e>e.constructor.maxE?(e.d=null,e.e=NaN):e.e<e.constructor.minE&&(e.e=0,e.d=[0]))}else e.e=0,e.d=[0];return e}function su(e,n){var i,t,r,o,s,a,u,l,f;if(n.indexOf("_")>-1){if(n=n.replace(/(\d)_(?=\d)/g,"$1"),Eo.test(n))return rr(e,n)}else if(n==="Infinity"||n==="NaN")return+n||(e.s=NaN),e.e=NaN,e.d=null,e;if(nu.test(n))i=16,n=n.toLowerCase();else if(eu.test(n))i=2;else if(iu.test(n))i=8;else throw Error(mn+n);for(o=n.search(/p/i),o>0?(u=+n.slice(o+1),n=n.substring(2,o)):n=n.slice(2),o=n.indexOf("."),s=o>=0,t=e.constructor,s&&(n=n.replace(".",""),a=n.length,o=a-o,r=vo(t,new t(i),o,o*2)),l=Qi(n,i,Le),f=l.length-1,o=f;l[o]===0;--o)l.pop();return o<0?new t(e.s*0):(e.e=it(l,f),e.d=l,B=!1,s&&(e=G(e,r,a*4)),u&&(e=e.times(Math.abs(u)<54?ae(2,u):E.pow(2,u))),B=!0,e)}function au(e,n){var i,t=n.d.length;if(t<3)return n.isZero()?n:$n(e,2,n,n);i=1.4*Math.sqrt(t),i=i>16?16:i|0,n=n.times(1/tt(5,i)),n=$n(e,2,n,n);for(var r,o=new e(5),s=new e(16),a=new e(20);i--;)r=n.times(n),n=n.times(o.plus(r.times(s.times(r).minus(a))));return n}function $n(e,n,i,t,r){var o,s,a,u,l=1,f=e.precision,d=Math.ceil(f/_);for(B=!1,u=i.times(i),a=new e(t);;){if(s=G(a.times(u),new e(n++*n++),f,1),a=r?t.plus(s):t.minus(s),t=G(s.times(u),new e(n++*n++),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,l++}return B=!0,s.d.length=d+1,s}function tt(e,n){for(var i=e;--n;)i*=e;return i}function Io(e,n){var i,t=n.s<0,r=Pe(e,e.precision,1),o=r.times(.5);if(n=n.abs(),n.lte(o))return Ke=t?4:1,n;if(i=n.divToInt(r),i.isZero())Ke=t?3:2;else{if(n=n.minus(i.times(r)),n.lte(o))return Ke=mo(i)?t?2:3:t?4:1,n;Ke=mo(i)?t?1:4:t?3:2}return n.minus(r).abs()}function or(e,n,i,t){var r,o,s,a,u,l,f,d,c,p=e.constructor,x=i!==void 0;if(x?(_e(i,1,pn),t===void 0?t=p.rounding:_e(t,0,8)):(i=p.precision,t=p.rounding),!e.isFinite())f=So(e);else{for(f=He(e),s=f.indexOf("."),x?(r=2,n==16?i=i*4-3:n==8&&(i=i*3-2)):r=n,s>=0&&(f=f.replace(".",""),c=new p(1),c.e=f.length-s,c.d=Qi(He(c),10,r),c.e=c.d.length),d=Qi(f,10,r),o=u=d.length;d[--u]==0;)d.pop();if(!d[0])f=x?"0p+0":"0";else{if(s<0?o--:(e=new p(e),e.d=d,e.e=o,e=G(e,c,i,t,0,r),d=e.d,o=e.e,l=ho),s=d[i],a=r/2,l=l||d[i+1]!==void 0,l=t<4?(s!==void 0||l)&&(t===0||t===(e.s<0?3:2)):s>a||s===a&&(t===4||l||t===6&&d[i-1]&1||t===(e.s<0?8:7)),d.length=i,l)for(;++d[--i]>r-1;)d[i]=0,i||(++o,d.unshift(1));for(u=d.length;!d[u-1];--u);for(s=0,f="";s<u;s++)f+=er.charAt(d[s]);if(x){if(u>1)if(n==16||n==8){for(s=n==16?4:3,--u;u%s;u++)f+="0";for(d=Qi(f,r,n),u=d.length;!d[u-1];--u);for(s=1,f="1.";s<u;s++)f+=er.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>u)for(o-=u;o--;)f+="0";else o<u&&(f=f.slice(0,o)+"."+f.slice(o))}f=(n==16?"0x":n==2?"0b":n==8?"0o":"")+f}return e.s<0?"-"+f:f}function po(e,n){if(e.length>n)return e.length=n,!0}function uu(e){return new this(e).abs()}function lu(e){return new this(e).acos()}function fu(e){return new this(e).acosh()}function du(e,n){return new this(e).plus(n)}function cu(e){return new this(e).asin()}function mu(e){return new this(e).asinh()}function pu(e){return new this(e).atan()}function gu(e){return new this(e).atanh()}function hu(e,n){e=new this(e),n=new this(n);var i,t=this.precision,r=this.rounding,o=t+4;return!e.s||!n.s?i=new this(NaN):!e.d&&!n.d?(i=Pe(this,o,1).times(n.s>0?.25:.75),i.s=e.s):!n.d||e.isZero()?(i=n.s<0?Pe(this,t,r):new this(0),i.s=e.s):!e.d||n.isZero()?(i=Pe(this,o,1).times(.5),i.s=e.s):n.s<0?(this.precision=o,this.rounding=1,i=this.atan(G(e,n,o,1)),n=Pe(this,o,1),this.precision=t,this.rounding=r,i=e.s<0?i.minus(n):i.plus(n)):i=this.atan(G(e,n,o,1)),i}function xu(e){return new this(e).cbrt()}function bu(e){return v(e=new this(e),e.e+1,2)}function yu(e,n,i){return new this(e).clamp(n,i)}function Eu(e){if(!e||typeof e!="object")throw Error(nt+"Object expected");var n,i,t,r=e.defaults===!0,o=["precision",1,pn,"rounding",0,8,"toExpNeg",-Vn,0,"toExpPos",0,Vn,"maxE",0,Vn,"minE",-Vn,0,"modulo",0,9];for(n=0;n<o.length;n+=3)if(i=o[n],r&&(this[i]=nr[i]),(t=e[i])!==void 0)if(he(t)===t&&t>=o[n+1]&&t<=o[n+2])this[i]=t;else throw Error(mn+i+": "+t);if(i="crypto",r&&(this[i]=nr[i]),(t=e[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(bo);else this[i]=!1;else throw Error(mn+i+": "+t);return this}function Nu(e){return new this(e).cos()}function vu(e){return new this(e).cosh()}function Bo(e){var n,i,t;function r(o){var s,a,u,l=this;if(!(l instanceof r))return new r(o);if(l.constructor=r,go(o)){l.s=o.s,B?!o.d||o.e>r.maxE?(l.e=NaN,l.d=null):o.e<r.minE?(l.e=0,l.d=[0]):(l.e=o.e,l.d=o.d.slice()):(l.e=o.e,l.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){l.s=1/o<0?-1:1,l.e=0,l.d=[0];return}if(o<0?(o=-o,l.s=-1):l.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;B?s>r.maxE?(l.e=NaN,l.d=null):s<r.minE?(l.e=0,l.d=[0]):(l.e=s,l.d=[o]):(l.e=s,l.d=[o]);return}else if(o*0!==0){o||(l.s=NaN),l.e=NaN,l.d=null;return}return rr(l,o.toString())}else if(u!=="string")throw Error(mn+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),l.s=-1):(a===43&&(o=o.slice(1)),l.s=1),Eo.test(o)?rr(l,o):su(l,o)}if(r.prototype=g,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=Eu,r.clone=Bo,r.isDecimal=go,r.abs=uu,r.acos=lu,r.acosh=fu,r.add=du,r.asin=cu,r.asinh=mu,r.atan=pu,r.atanh=gu,r.atan2=hu,r.cbrt=xu,r.ceil=bu,r.clamp=yu,r.cos=Nu,r.cosh=vu,r.div=_u,r.exp=Su,r.floor=Iu,r.hypot=Bu,r.ln=Du,r.log=ku,r.log10=wu,r.log2=Tu,r.max=Mu,r.min=Au,r.mod=Ou,r.mul=Cu,r.pow=Pu,r.random=Lu,r.round=Fu,r.sign=Ru,r.sin=qu,r.sinh=Vu,r.sqrt=$u,r.sub=zu,r.sum=Uu,r.tan=Gu,r.tanh=ju,r.trunc=Hu,e===void 0&&(e={}),e&&e.defaults!==!0)for(t=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],n=0;n<t.length;)e.hasOwnProperty(i=t[n++])||(e[i]=this[i]);return r.config(e),r}function _u(e,n){return new this(e).div(n)}function Su(e){return new this(e).exp()}function Iu(e){return v(e=new this(e),e.e+1,3)}function Bu(){var e,n,i=new this(0);for(B=!1,e=0;e<arguments.length;)if(n=new this(arguments[e++]),n.d)i.d&&(i=i.plus(n.times(n)));else{if(n.s)return B=!0,new this(1/0);i=n}return B=!0,i.sqrt()}function go(e){return e instanceof E||e&&e.toStringTag===yo||!1}function Du(e){return new this(e).ln()}function ku(e,n){return new this(e).log(n)}function Tu(e){return new this(e).log(2)}function wu(e){return new this(e).log(10)}function Mu(){return _o(this,arguments,"lt")}function Au(){return _o(this,arguments,"gt")}function Ou(e,n){return new this(e).mod(n)}function Cu(e,n){return new this(e).mul(n)}function Pu(e,n){return new this(e).pow(n)}function Lu(e){var n,i,t,r,o=0,s=new this(1),a=[];if(e===void 0?e=this.precision:_e(e,1,pn),t=Math.ceil(e/_),this.crypto)if(crypto.getRandomValues)for(n=crypto.getRandomValues(new Uint32Array(t));o<t;)r=n[o],r>=429e7?n[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(n=crypto.randomBytes(t*=4);o<t;)r=n[o]+(n[o+1]<<8)+(n[o+2]<<16)+((n[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(n,o):(a.push(r%1e7),o+=4);o=t/4}else throw Error(bo);else for(;o<t;)a[o++]=Math.random()*1e7|0;for(t=a[--o],e%=_,t&&e&&(r=ae(10,_-e),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-=_)a.shift();for(t=1,r=a[0];r>=10;r/=10)t++;t<_&&(i-=_-t)}return s.e=i,s.d=a,s}function Fu(e){return v(e=new this(e),e.e+1,this.rounding)}function Ru(e){return e=new this(e),e.d?e.d[0]?e.s:0*e.s:e.s||NaN}function qu(e){return new this(e).sin()}function Vu(e){return new this(e).sinh()}function $u(e){return new this(e).sqrt()}function zu(e,n){return new this(e).sub(n)}function Uu(){var e=0,n=arguments,i=new this(n[e]);for(B=!1;i.s&&++e<n.length;)i=i.plus(n[e]);return B=!0,v(i,this.precision,this.rounding)}function Gu(e){return new this(e).tan()}function ju(e){return new this(e).tanh()}function Hu(e){return v(e=new this(e),e.e+1,1)}g[Symbol.for("nodejs.util.inspect.custom")]=g.toString;g[Symbol.toStringTag]="Decimal";var E=g.constructor=Bo(nr);Xi=new E(Xi);Ki=new E(Ki);var sr=E;function Zu(e){let n=[];for(let i=0;i<e.length;i++){let t=e.charCodeAt(i);if(t>=55296&&t<=56319){let r=e.charCodeAt(i+1);if(r>=56320&&r<=57343){let o=t-55296,s=r-56320;t=2**16+o*2**10+s,i++}}n.push(t)}return n}var rt=8205,Do=[127462,127487];function ko(e){return e===rt||e===65038||e===65039||e>=127995&&e<=127995+5||e>=129456&&e<=129456+4||e>=917536&&e<=917536+96}function Ju(e){return e>=Do[0]&&e<=Do[1]}function To(e){if(/^[\u0020-\u00FF]*$/.test(e))return e;let n=[],i=Zu(e),t=0;for(;t<i.length;){let r=i[t++],o=i[t];if(o===rt){let s=t-1;for(t+=2;i[t]===rt;)t+=2;n.push(String.fromCodePoint(...i.slice(s,2*t-s+1)))}else if(ko(o)){let s=t-1;for(;ko(i[t]);)t+=i[t]===rt?2:1;n.push(String.fromCodePoint(...i.slice(s,2*t-s-1)))}else Ju(r)?(t+=1,n.push(String.fromCodePoint(...i.slice(t-2,2)))):n.push(String.fromCodePoint(r))}return n}var ar=class{constructor(n){this.obeyspaces=!1;n=n.replace(/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/g,""),this.s=To(n),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(n){let i;return typeof this.s=="string"?i=n.exec(this.s.slice(this.pos)):i=n.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 n=this.get();if(n==="\\"){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(n==="{")return"<{>";if(n==="}")return"<}>";if(n==="^"){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 n}else if(n==="#"){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(n==="$")return this.peek()==="$"?(this.get(),"<$$>"):"<$>"}return n}};function Wu(e,n){let i=e.next();if(!i)return[];let t=[];if(i!=="\\relax"){if(i==="\\noexpand")i=e.next(),i&&t.push(i);else if(i==="\\obeyspaces")e.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=e.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(;e.peek()==="<space>";)e.next();let r="",o=!1,s=[];do{if(s.length===0)if(/^#[0-9?]$/.test(e.peek())){let a=e.get().slice(1);s=R(n?.[a]??n?.["?"]??"\\placeholder{}",n),i=s[0]}else i=e.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(R(n?.[r]??n?.["?"]??"\\placeholder{}",n))}else t.push(i)}return t}function R(e,n){let i=e.toString().split(/\r?\n/),t="",r="";for(let a of i){t+=r,r=" ";let u=a.match(/((?:\\%)|[^%])*/);u!==null&&(t+=u[0])}let o=new ar(t),s=[];do s.push(...Wu(o,n));while(!o.end());return s}function ot(e){return R(e,[]).length}function N(e){let n="",i="";for(let t of e)t&&(/[a-zA-Z*]/.test(t[0])&&(i+=n),/\\[a-zA-Z]+\*?$/.test(t)?n=" ":n="",i+=t);return i}function Se(e){let n=[];if(Array.isArray(e))for(let t of e)Array.isArray(t)?n=[...n,...t]:n.push(t);else n=[e];return N(n.map(t=>({"<space>":" ","<$$>":"$$","<$>":"$","<{>":"{","<}>":"}"})[t]??t))}var wo=[{name:"To",latexTrigger:["\\to"],kind:"infix",precedence:270},{latexTrigger:["\\rightarrow"],kind:"infix",precedence:270,parse:"To"}];var zn=["Error","'missing'"];function Sn(e){return e===null?!1:!!(typeof e=="number"||Un(e)||typeof e=="string"&&/^[+-]?[0-9\.]/.test(e))}function Un(e){return e!==null&&typeof e=="object"&&"num"in e}function hi(e){return e!==null&&typeof e=="object"&&"sym"in e}function Yu(e){return e!==null&&typeof e=="object"&&"str"in e}function xi(e){return e!==null&&typeof e=="object"&&"fn"in e}var ur;function Co(e){if(!ur){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("")}]*$`;ur=new RegExp(i,"u")}return ur.test(e)}function ue(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)||Gn.test(e)?!0:Co(e)?/^[\p{XIDS}_]\p{XIDC}*$/u.test(e):!1}var Qu="\\u{FE0F}",Xu="\\u{20E3}",Ku="\\u{200D}",el="\\p{RI}\\p{RI}",nl="(?:[\\u{E0020}-\\u{E007E}]+\\u{E007F})",Mo=`(?:\\p{EMod}|${Qu}${Xu}?|${nl})`,il="(?:(?=\\P{XIDC})\\p{Emoji})",Ao=`(?:${il}${Mo}*|\\p{Emoji}${Mo}+|${el})`,Po=`(?:${Ao})(${Ku}${Ao})*`,tl=new RegExp(`(?:${Po})+`,"u"),Gn=new RegExp(`^(?:${Po})+$`,"u");function qe(e){return typeof e!="string"?"not-a-string":e===""?"empty-string":e.normalize()!==e?"expected-nfc":/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/.test(e)?"unexpected-bidi-marker":Gn.test(e)?"valid":/\p{XIDC}/u.test(e)&&tl.test(e)?"unexpected-mixed-emoji":Co(e)?ue(e)?"valid":ue(e[0])?"invalid-char":"invalid-first-char":"unexpected-script"}function J(e){return e==null?null:typeof e=="object"&&"str"in e?e.str:typeof e!="string"||e.length<2||e[0]!=="'"||e[e.length-1]!=="'"?null:e.substring(1,e.length-1)}function fr(e){if(e==null||J(e)!==null)return null;let n=y(e);return n!==null?[n,...(w(e)??[]).map(i=>fr(i)).filter(i=>i!==null)]:e}function y(e){return e==null?null:Array.isArray(e)?typeof e[0]=="string"&&!ue(e[0])?(console.error(`Invalid identifier "${e[0]}": ${qe(e[0])}`),null):e[0]:xi(e)?e.fn[0]:null}function Lo(e){let n=y(e);return typeof n=="string"?n:""}function w(e){return e==null?null:Array.isArray(e)?e.slice(1):xi(e)?e.fn.slice(1):null}function m(e,n){return e==null?null:Array.isArray(e)?e[n]??null:xi(e)?e.fn[n]??null:null}function Fe(e){return m(e,1)}function Re(e){return m(e,2)}function Q(e){return e==null?0:Array.isArray(e)?Math.max(0,e.length-1):xi(e)?Math.max(0,e.fn.length-1):0}function L(e){if(e==null||typeof e=="string"&&(/^[+\-\.0-9]/.test(e)||e.length>=2&&e[0]==="'"&&e[e.length-1]==="'"))return null;let n=hi(e)?e.sym:e;return typeof n!="string"?null:n}function Fo(e){if(e===null)return!1;let n=y(e);return!n||typeof n!="string"?!1:/^(List|Sequence|Tuple|Single|Pair|Triple)$/.test(n)}function Oo(e){let n=y(e);if(n==="KeyValuePair"||n==="Tuple"||n==="Pair"){let i=J(Fe(e));return i?[i,Re(e)??"Nothing"]:null}return null}function en(e){if(e===null)return null;if(typeof e=="object"&&"dict"in e)return e.dict;let n=Oo(e);if(n)return{[n[0]]:n[1]};if(y(e)==="Dictionary"){let t={};for(let r=1;r<Q(e);r++){let o=Oo(m(e,r));o&&(t[o[0]]=o[1])}return t}return null}function rl(e){if(e=e.toLowerCase().replace(/[nd]$/g,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,""),e==="nan")return NaN;if(e==="+infinity")return 1/0;if(e==="-infinity")return-1/0;if(/\([0-9]+\)/.test(e)){let[n,i,t,r]=e.match(/(.+)\(([0-9]+)\)(.*)$/)??[];e=i+t.repeat(Math.ceil(16/t.length))+(r??"")}return parseFloat(e)}function T(e){return e==null?null:typeof e=="number"?e:typeof e=="string"?rl(e):Un(e)?T(e.num):null}function jn(e){if(e==null)return null;if(L(e)==="Half")return[1,2];let n=y(e);if(!n)return null;let i=null,t=null;if(n==="Negate"){let r=jn(Fe(e));if(r)return[-r[0],r[1]]}if((n==="Rational"||n==="Divide")&&(i=T(Fe(e))??NaN,t=T(Re(e))??NaN),n==="Power"){let r=T(Re(e));r===1?(i=T(Fe(e)),t=1):r===-1&&(i=1,t=T(Fe(e)))}return n==="Multiply"&&y(Re(e))==="Power"&&T(Re(Re(e)))===-1&&(i=T(Fe(e)),t=T(Fe(Re(e)))),i===null||t===null?null:Number.isInteger(i)&&Number.isInteger(t)?[i,t]:null}function gi(e,n){let i=y(e);if(i!==null)return[gi(i,n),...(w(e)??[]).map(o=>gi(o,n))];let t=en(e);if(t!==null){let o=Object.keys(t),s={};for(let a of o)s[a]=gi(t[a],n);return{dict:s}}let r=L(e);return r&&n[r]?n[r]:e}function st(e,n){let i=null;if(Array.isArray(e)&&(i=e),xi(e)&&(i=e.fn),i===null)return[];let t=1,r=[];for(;t<i.length;)r.push(n(i[t])),t+=1;return r}function Ve(e,n,i,t="both"){if(t==="non")return[e,n,i];let r=y(n),o=y(i);return t==="left"?r===e?[e,...w(n)??[],i]:[e,n,i]:t==="right"?o===e?[e,n,...w(i)??[]]:[e,n,i]:r===e&&o===e?[e,...w(n)??[],...w(i)??[]]:r===e?[e,...w(n)??[],i]:o===e?[e,n,...w(i)??[]]:[e,n,i]}function Hn(e){if(e===null)return null;let n=y(e);if(n==="Delimiter"){if(e=m(e,1),e===null)return[];if(y(e)!=="Sequence")return[e]}return n=y(e),n!=="Sequence"?null:w(e)??[]}function W(e){return e!==null&&y(e)==="Sequence"&&Q(e)===0}function j(e){return e===null||W(e)?zn:e}function lr(e){return e[0]==="Square"?lr(e.slice(1))+2:e.reduce((n,i)=>n+bi(i),0)}function bi(e){if(e===null)return 0;if(typeof e=="number"||typeof e=="string"||Sn(e)||hi(e)||Yu(e))return 1;if(Array.isArray(e))return lr(e);if("fn"in e)return lr(e.fn);let n=en(e);if(n){let i=Object.keys(n);return 1+i.length+i.reduce((t,r)=>t+bi(n[r]),0)}return 0}function Ro(e,n){return"paren"}function qo(e,n){return"paren"}function gn(e,n){return n>2?"solidus":"radical"}function at(e,n){if(n>3)return"inline-solidus";if(y(e)==="Divide"){let[i,t]=[bi(Fe(e)),bi(Re(e))];if(t<=2&&i>5)return"factor";if(i<=2&&t>5)return"reciprocal"}return"quotient"}function Vo(e,n){return"boolean"}function $o(e,n){return"solidus"}function zo(e,n){return"compact"}function ol(e){if(y(e)!=="Multiply")return[[],[]];let n=[],i=[],t=w(e)??[];for(let r of t)if(y(r)==="Power"){let o=m(r,1),s=m(r,2);if(y(s)==="Negate"){let a=m(s,1);o&&a&&i.push(["Power",o,a])}else{let a=T(s)??NaN;a===-1?o&&i.push(o):a<0?o&&i.push(["Power",o,-a]):n.push(r)}}else if(y(r)==="Rational"&&Q(r)===2){let o=m(r,1),s=m(r,2);T(o)!==1&&n.push(o),T(s)!==1&&i.push(s)}else{let o=jn(r);o!==null?(o[0]!==1&&n.push(o[0]),i.push(o[1])):n.push(r)}return[n,i]}function sl(e){let n=e.parseOptionalGroup(),i=e.parseGroup()??e.parseToken();return i===null||W(i)?n!==null?["Root",zn,j(n)]:["Sqrt",zn]:n!==null?["Root",i,n]:["Sqrt",i]}function yi(e,n,i,t){return i===null?"\\sqrt{}":(t=t??2,n==="solidus"?e.wrapShort(i)+"^{1\\/"+e.serialize(t)+"}":n==="quotient"?e.wrapShort(i)+"^{\\frac{1}{"+e.serialize(t)+"}}":T(t)===2?"\\sqrt{"+e.serialize(i)+"}":"\\sqrt["+e.serialize(t)+"]{"+e.serialize(i)+"}")}function al(e,n){e.level-=1;let i=y(n),t="",r=m(n,1);if(i==="Negate")t="-"+e.wrap(r,276);else if(i==="Add"){if(e.canonical&&Q(n)===2&&e.options.invisiblePlus!=="+"){let[a,u]=[m(n,1),m(n,2)],[l,f]=[a,u],d=T(l),c=jn(f);if((d===null||c===null)&&([l,f]=[u,a],d=T(l),c=jn(f)),d!==null&&c!==null&&isFinite(d)&&Number.isInteger(d)&&d>=0&&d<=1e3&&isFinite(c[0])&&isFinite(c[1])&&c[0]>0&&c[0]<=100&&c[1]<=100)return t=N([e.serialize(l),e.options.invisiblePlus,e.serialize(f)]),e.level+=1,t}let o=T(r)??NaN;t=e.serialize(r);let s=Q(n)+1;for(let a=2;a<s;a++)if(r=m(n,a),o=T(r)??NaN,o<0)t+=e.serialize(r);else if(y(r)==="Negate")t+=e.wrap(r,275);else{let u=e.wrap(r,275);u[0]==="-"||u[0]==="+"?t+=u:t+="+"+u}}else if(i==="Subtract"){t=e.wrap(r,275);let o=m(n,2);if(o!==null){let s=e.wrap(o,275);s[0]==="-"?t+="+"+s.slice(1):s[0]==="+"?t+="-"+s.slice(1):t=t+"-"+s}}return e.level+=1,t}function Zo(e,n){if(n===null)return"";e.level-=1;let i="";if(e.canonical===!0){let[a,u]=ol(n);u.length>0&&(u.length===1&&u[0]===1?a.length===0?i="1":a.length===1?i=e.serialize(a[0]):i=Zo(e,["Multiply",...a]):i=e.serialize(["Divide",a.length===1?a[0]:["Multiply",...a],u.length===1?u[0]:["Multiply",...u]]))}if(i)return e.level+=1,i;let t=!1,r=null,o=Q(n)+1,s=!1;for(let a=1;a<o;a++){if(r=m(n,a),r===null)continue;let u;if(Sn(r)){u=e.serialize(r),u==="-1"&&!i?(i="",t=!t):(u[0]==="-"&&(u=u.slice(1),t=!t),i=i?N([i,e.options.multiply,u]):u),s=!0;continue}if(y(r)==="Power"){let l=jn(m(r,2));if(l){let[f,d]=l;if(f===1&&d!==null){i+=yi(e,gn(r,e.level),m(r,1),d),s=!1;continue}}}if(y(r)==="Power"&&!isNaN(T(m(r,1))??NaN)){u=e.serialize(r),i=i?N([i,e.options.multiply,u]):u,s=!0;continue}if(y(r)==="Negate"&&(r=m(r,1),t=!t),u=e.wrap(r,390),!i)i=u;else{let l=y(r);s&&(l==="Divide"||l==="Rational")?i=N([i,e.options.multiply,u]):e.options.invisibleMultiply?i=N([i,e.options.invisibleMultiply,u]):i=N([i,u])}s=!1}return e.level+=1,t?"-"+i:i}function ul(e){let n=e.parseGroup(),i=null;if(n===null?(n=e.parseToken(),i=e.parseToken()):i=e.parseGroup(),n=j(n),i=j(i),y(n)==="PartialDerivative"&&(y(i)==="PartialDerivative"||y(i)==="Multiply"&&y(m(i,1))==="PartialDerivative")){let t=m(n,3)??null,r=m(n,1);r===null&&(r=j(e.parseExpression()));let o=[];if(y(i)==="Multiply"){for(let s of w(i)??[])if(y(s)==="PartialDerivative"){let a=m(s,2);a&&o.push(a)}}else{let s=m(i,2);s&&o.push(s)}return o.length>1&&(o=["List",...o]),["PartialDerivative",r,...o,t===null?1:t]}return["Divide",n,i]}function Uo(e,n){if(n===null)return"";let i=j(m(n,1)),t=j(m(n,2)),r=e.canonical?at(n,e.level):"quotient";if(r==="inline-solidus"||r==="nice-solidus"){let a=e.wrapShort(i),u=e.wrapShort(t);return r==="inline-solidus"?`${a}\\/${u}`:`{}^{${a}}\\!\\!/\\!{}_{${u}}`}else{if(r==="reciprocal")return T(i)===1?e.wrap(t)+"^{-1}":e.wrap(i)+e.wrap(t)+"^{-1}";if(r==="factor")return T(t)===1?e.wrap(i):"\\frac{1}{"+e.serialize(t)+"}{"+e.wrap(i)+"}"}let o=e.serialize(i),s=e.serialize(t);return`\\frac{${o}}{${s}}`}function dr(e,n){let i=y(n),t=j(m(n,1));if(i==="Sqrt")return yi(e,gn(n,e.level-1),t,2);let r=j(m(n,2));if(i==="Root")return yi(e,gn(n,e.level-1),t,r);if(e.canonical){let o=T(r)??1;if(o===-1)return e.serialize(["Divide","1",t]);if(o<0)return e.serialize(["Divide","1",["Power",t,-o]]);if(y(r)==="Divide"||y(r)==="Rational"){if(T(m(r,1))===1){let s=gn(n,e.level);return yi(e,s,t,m(r,2))}if(T(m(r,2))===2)return`${e.serialize(["Sqrt",t])}^{${e.serialize(m(r,1))}}`}else if(y(r)==="Power"&&T(m(r,2))===-1){let s=gn(n,e.level);return yi(e,s,t,m(r,1))}}return e.wrapShort(t)+"^{"+e.serialize(r)+"}"}var Jo=[{name:"CatalanConstant",serialize:"G"},{name:"GoldenRatio",serialize:"\\varphi"},{name:"EulerGamma",serialize:"\\gamma"},{name:"Degrees",latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>["Degrees",n],serialize:(e,n)=>N([e.serialize(m(n,1)),"\\degree"])},{latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>["Degrees",n]},{latexTrigger:["^","<{>","\\circ","<}>"],kind:"postfix",parse:(e,n)=>["Degrees",n]},{latexTrigger:["^","\\circ"],kind:"postfix",parse:(e,n)=>["Degrees",n]},{latexTrigger:["\xB0"],kind:"postfix",precedence:880,parse:(e,n)=>["Degrees",n]},{latexTrigger:["\\ang"],parse:e=>{let n=e.parseGroup();return n===null?["Degrees"]:["Degrees",n]}},{latexTrigger:["\\infty"],parse:{num:"+Infinity"}},{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:(e,n)=>W(n)?null:["Abs",n]},{identifierTrigger:"abs",kind:"function",parse:"Abs"},{name:"Add",latexTrigger:["+"],kind:"infix",associativity:"both",precedence:275,parse:(e,n,i)=>{if(i&&275<i.minPrec)return null;let t=e.parseExpression({...i,minPrec:275});return t===null?null:Ve("Add",n,t)},serialize:al},{kind:"prefix",latexTrigger:["+"],precedence:275,parse:(e,n)=>n&&275<n.minPrec?null:e.parseExpression({...n,minPrec:400})},{name:"Ceil",kind:"matchfix",openTrigger:"\\lceil",closeTrigger:"\\rceil",parse:(e,n)=>W(n)?null:["Ceil",n]},{kind:"matchfix",openTrigger:["\u2308"],closeTrigger:["\u2309"],parse:(e,n)=>W(n)?null:["Ceil",n]},{identifierTrigger:"ceil",kind:"function",parse:"Ceil"},{name:"Chop",identifierTrigger:"chop",kind:"function",parse:"Chop"},{name:"Complex",precedence:274,serialize:(e,n)=>{let i=T(m(n,1)),t=T(m(n,2));if(t===0)return e.serialize(m(n,1));let r=t===1?"\\imaginaryI":t===-1?"-\\imaginaryI":N([e.serialize(m(n,2)),"\\imaginaryI"]);return i===0?r:t!==null&&t<0?N([e.serialize(m(n,1)),r]):N([e.serialize(m(n,1)),"+",r])}},{name:"Divide",latexTrigger:"\\frac",precedence:660,parse:ul,serialize:Uo},{kind:"infix",latexTrigger:"\\over",precedence:660,parse:"Divide"},{latexTrigger:["\\/"],kind:"infix",associativity:"non",precedence:660,parse:"Divide"},{latexTrigger:["/"],kind:"infix",associativity:"non",precedence:660,parse:"Divide"},{latexTrigger:["\\div"],kind:"infix",associativity:"non",precedence:660,parse:"Divide"},{name:"Exp",serialize:(e,n)=>{let i=m(n,1);return L(i)||T(i)!==null?N(["\\exponentialE^{",e.serialize(i)]):N(["\\exp",e.wrap(j(i))])}},{name:"Factorial",latexTrigger:["!"],kind:"postfix",precedence:810},{name:"Factorial2",latexTrigger:["!","!"],kind:"postfix",precedence:810},{name:"Floor",kind:"matchfix",openTrigger:"\\lfloor",closeTrigger:"\\rfloor",parse:(e,n)=>W(n)?null:["Floor",n]},{kind:"matchfix",openTrigger:["\u230A"],closeTrigger:["\u230B"],parse:(e,n)=>W(n)?null:["Floor",n]},{identifierTrigger:"floor",kind:"function",parse:"Floor"},{latexTrigger:["\\Gamma"],parse:"Gamma"},{name:"Gcd",identifierTrigger:"gcd",kind:"function"},{name:"Half",serialize:"\\frac12"},{name:"Lg",latexTrigger:["\\lg"],serialize:(e,n)=>"\\log_{10}"+e.wrapArguments(n),parse:e=>{let n=e.parseArguments("implicit");return n===null?"Lg":["Log",...n,10]}},{name:"Lb",latexTrigger:"\\lb",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Log":["Log",...n,2]}},{name:"Ln",latexTrigger:["\\ln"],serialize:(e,n)=>"\\ln"+e.wrapArguments(n),parse:e=>Ho("Ln",e)},{name:"Log",latexTrigger:["\\log"],parse:e=>Ho("Log",e),serialize:(e,n)=>{let i=Re(n);return i?N(["\\log_{",i.toString(),"}",e.wrap(Fe(n))]):"\\log"+e.wrapArguments(n)}},{name:"Lcm",identifierTrigger:"lcm",kind:"function"},{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:e=>{if(!e.match("_"))return;let n=e.parseGroup();if(y(n)!=="To")return;let i=e.parseArguments("implicit");if(i)return["Limit",["Function",i[0],m(n,1)],m(n,2)]},serialize:(e,n)=>{let i=m(n,1),t=m(i,2),r=m(n,2);return N(["\\lim_{",e.serialize(t),"\\to",e.serialize(r),"}",e.serialize(m(i,1))])}},{name:"MinusPlus",latexTrigger:["\\mp"],kind:"infix",associativity:"both",precedence:270},{name:"Multiply",latexTrigger:["\\times"],kind:"infix",associativity:"both",precedence:390,serialize:Zo},{latexTrigger:["\\cdot"],kind:"infix",associativity:"both",precedence:390,parse:(e,n,i)=>{let t=e.parseExpression({...i,minPrec:392});return t===null?["Multiply",n,zn]:Ve("Multiply",n,t)}},{latexTrigger:["*"],kind:"infix",associativity:"both",precedence:390,parse:(e,n,i)=>{let t=e.parseExpression({...i,minPrec:392});return t===null?["Multiply",n,zn]:Ve("Multiply",n,t)}},{name:"Negate",latexTrigger:["-"],kind:"prefix",parse:(e,n)=>{let i=e.parseExpression({...n,minPrec:400});return["Negate",j(i)]},precedence:275},{kind:"matchfix",openTrigger:"||",closeTrigger:"||",parse:(e,n)=>W(n)?null:["Norm",n]},{name:"Norm",kind:"matchfix",openTrigger:["\\left","\\Vert"],closeTrigger:["\\right","\\Vert"],parse:(e,n)=>W(n)?null:["Norm",n]},{name:"PlusMinus",latexTrigger:["\\pm"],kind:"infix",associativity:"both",precedence:270,serialize:(e,n)=>{let i=m(n,1);if(i===null)return"\\pm";if(Q(n)===1)return N(["\\pm",e.serialize(i)]);let t=m(n,2);return N([e.serialize(i),"\\pm",e.serialize(t)])}},{latexTrigger:["\\pm"],kind:"prefix",precedence:270,parse:(e,n)=>{let i=e.parseExpression({...n,minPrec:400});return["PlusMinus",j(i)]}},{latexTrigger:["\\plusmn"],kind:"infix",associativity:"both",precedence:270,parse:(e,n,i)=>{let t=e.parseExpression({...i,minPrec:400});return["PlusMinus",n,j(t)]}},{latexTrigger:["\\plusmn"],kind:"prefix",precedence:270,parse:(e,n)=>{let i=e.parseExpression({...n,minPrec:400});return["PlusMinus",j(i)]}},{name:"Power",latexTrigger:["^"],kind:"infix",serialize:dr},{latexTrigger:"\\prod",precedence:390,name:"Product",parse:Go("Product",390),serialize:jo("\\prod")},{name:"Rational",precedence:660,serialize:(e,n)=>n&&Q(n)===1?"\\operatorname{Rational}"+e.wrapArguments(n):Uo(e,n)},{name:"Root",serialize:dr},{name:"Round",identifierTrigger:"round",kind:"function"},{name:"Square",precedence:720,serialize:(e,n)=>e.wrapShort(m(n,1))+"^2"},{latexTrigger:["\\sum"],precedence:275,name:"Sum",parse:Go("Sum",275),serialize:jo("\\sum")},{name:"Sign",identifierTrigger:"sgn",kind:"function"},{name:"Sqrt",latexTrigger:["\\sqrt"],parse:sl,serialize:dr},{name:"Subtract",latexTrigger:["-"],kind:"infix",associativity:"both",precedence:275,parse:(e,n,i)=>{let t=e.parseExpression({...i,minPrec:277});return["Subtract",n,j(t)]}}];function Go(e,n){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"||W(r))&&(r=null),(t==="Nothing"||W(t))&&(t=null);let o=null,s=null;y(r)==="Equal"?(o=m(r,1),s=m(r,2)):o=r;let a=i.parseExpression({minPrec:n+1});return a?t?[e,a,["Tuple",o??"Nothing",s??1,t]]:s?[e,a,["Tuple",o??"Nothing",s]]:o?[e,a,["Tuple",o]]:[e,a]:[e]}}function jo(e){return(n,i)=>{if(!m(i,1))return e;let t=m(i,2),r=y(t);r!=="Tuple"&&r!=="Triple"&&r!=="Pair"&&r!=="Single"&&(t=null);let o=m(t,1);o&&y(o)==="Hold"&&(o=m(o,1));let s=m(i,1);if(!t)return m(i,2)?N([e,"_{",n.serialize(m(i,2)),"}",n.serialize(s)]):N([e,"_n",n.serialize(s)]);let a=m(t,2),u=[];o&&L(o)!=="Nothing"&&a?u=[n.serialize(o),"=",n.serialize(a)]:o&&L(o)!=="Nothing"?u=[n.serialize(o)]:a&&(u=[n.serialize(a)]),u.length>0&&(u=["_{",...u,"}"]);let l=[];return m(t,3)&&(l=["^{",n.serialize(m(t,3)),"}"]),N([e,...l,...u,n.serialize(s)])}}function Ho(e,n){let i=null,t=null;n.match("_")&&(i=n.parseStringGroup()?.trim()??n.nextToken(),t=Number.parseFloat(i??"10"));let r=n.parseArguments("implicit");return r===null?e:t===10?["Log",r[0]]:t===2?["Lb",...r]:i===null?[e,...r]:["Log",...r,i]}function Wo(e,n,i,t,r){if(n.minPrec>=t)return null;let o=[i],s=!1;for(;!s;){for(s=!0,e.skipSpace();e.match(r);)o.push("Nothing"),e.skipSpace();if(e.atTerminator(n))o.push("Nothing");else{let a=e.parseExpression({...n,minPrec:t});o.push(a??"Nothing"),s=a===null}s||(e.skipSpace(),s=!e.match(r))}return o}function cr(e=""){return(n,i)=>(w(i)??[]).map(t=>n.serialize(t)).join(e)}var Qo=[{latexTrigger:["\\placeholder"],kind:"symbol",parse:e=>{for(;e.match("<space>"););if(e.match("["))for(;!e.match("]")&&!e.atBoundary;)e.nextToken();for(;e.match("<space>"););if(e.match("<{>"))for(;!e.match("<}>")&&!e.atBoundary;)e.nextToken();return"Nothing"}},{name:"Function",latexTrigger:["\\mapsto"],kind:"infix",precedence:270,parse:(e,n)=>{let i=[];if(y(n)==="Delimiter"&&(n=m(n,1)??"Nothing"),y(n)==="Sequence")for(let r of w(n)??[])if(L(r))i.push(L(r));else return null;else if(L(n))i=[L(n)];else return null;let t=e.parseExpression({minPrec:270})??"Nothing";return y(t)==="Delimiter"&&(t=m(t,1)??"Nothing"),y(t)==="Sequence"&&(t=["Block",...w(t)??[]]),["Function",t,...i]},serialize:(e,n)=>{let i=w(n);return i===null||i.length<1?"()\\mapsto()":i.length===1?N(["()","\\mapsto",e.serialize(m(n,1))]):i.length===2?N([e.serialize(m(n,2)),"\\mapsto",e.serialize(m(n,1))]):N([e.wrapString((w(n)?.slice(1)??[]).map(t=>e.serialize(t)).join(", "),"paren"),"\\mapsto",e.serialize(m(n,1))])}},{name:"Apply",kind:"function",identifierTrigger:"apply",serialize:(e,n)=>{if(typeof m(n,1)=="string"){let t=n.slice(1);return e.serialize(t)}return e.serializeFunction(w(n))}},{latexTrigger:"\\lhd",kind:"infix",precedence:20,parse:"Apply"},{latexTrigger:"\\rhd",kind:"infix",precedence:20,parse:(e,n)=>["Apply",e.parseExpression({minPrec:21})??"Nothing",n]},{name:"Assign",latexTrigger:"\\coloneqq",kind:"infix",associativity:"right",precedence:260,serialize:(e,n)=>N([e.serialize(m(n,1)),"\\coloneqq",e.serialize(m(n,2))])},{latexTrigger:[":","="],kind:"infix",associativity:"right",precedence:260,parse:"Assign"},{latexTrigger:"\\colonequals",kind:"infix",associativity:"right",precedence:260,parse:"Assign"},{name:"BaseForm",serialize:(e,n)=>{let i=T(m(n,2))??NaN;if(isFinite(i)&&i>=2&&i<=36){let t=T(m(n,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}("+e.serialize(m(n,1))+", "+e.serialize(m(n,2))+")"}},{name:"Delimiter",serialize:(e,n)=>{let i=Q(n);if(i===0)return"";let t=e.options.groupStyle(n,e.level+1),r=m(n,1),o=y(r),s={List:"[],",Sequence:""}[typeof o=="string"?o:""]??"(),",a=s[0]??"",u=s[1]??"",l=s[2]??"";if(i>1){let d=J(m(n,2))??"";a=d[0]??s[0],u=d[1]??s[1],l=d[2]??s[2]}let f=Fo(r)?cr(l)(e,r):e.serialize(r);return e.wrapString(f,t,a+u)}},{name:"Domain",serialize:(e,n)=>y(n)==="Error"?e.serialize(n):`\\mathbf{${e.serialize(m(n,1))}}`},{latexTrigger:["\\mathtip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\texttip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\error"],parse:e=>["Error",e.parseGroup()]},{name:"Error",serialize:(e,n)=>{let i=m(n,1);if(J(i)==="missing")return`\\error{${e.options.missingSymbol??"\\placeholder{}"}}`;let t=fl(e,n)||"\\blacksquare",r=y(i)==="ErrorCode"?J(m(i,1)):J(i);return r==="incompatible-domain"?L(m(i,3))==="Undefined"?`\\mathtip{\\error{${t}}}{\\notin ${e.serialize(m(i,2))}}`:`\\mathtip{\\error{${t}}}{\\in ${e.serialize(m(i,3))}\\notin ${e.serialize(m(i,2))}}`:typeof r=="string"?`\\error{${t}}`:`\\error{${t}}`}},{name:"ErrorCode",serialize:(e,n)=>{let i=J(m(n,1));return i==="missing"?e.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:(e,n)=>`\\texttt{${Xo(J(m(n,1)))}}`},{name:"Latex",serialize:(e,n)=>n===null?"":N(st(n,i=>J(i)??e.serialize(i)))},{name:"LatexString",serialize:(e,n)=>n===null?"":N(st(n,i=>e.serialize(i)))},{name:"LatexTokens",serialize:ll},{name:"List",kind:"matchfix",openTrigger:"\\lbrack",closeTrigger:"\\rbrack",parse:mr,serialize:(e,n)=>N(["\\lbrack",cr(", ")(e,n),"\\rbrack"])},{kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:mr},{kind:"matchfix",openTrigger:"\\[",closeTrigger:"\\]",parse:mr},{kind:"matchfix",openTrigger:"(",closeTrigger:")",parse:Yo},{kind:"matchfix",openTrigger:"\\lparen",closeTrigger:"\\rparen",parse:Yo},{latexTrigger:[","],kind:"infix",precedence:20,parse:(e,n,i)=>{let t=Wo(e,i,n,20,",");return t===null?null:["Sequence",...t]}},{name:"Sequence",serialize:cr("")},{latexTrigger:[";"],kind:"infix",precedence:19,parse:(e,n,i)=>{let t=Wo(e,i,n,19,";");return t===null?null:["Sequence",...t.map(r=>y(r)==="Sequence"?["List",...w(r)??[]]:r)]}},{name:"String",latexTrigger:["\\text"],parse:e=>pr(e),serialize:(e,n)=>{let i=w(n);return i===null||i.length===0?"\\text{}":N(["\\text{",i.map(t=>e.serialize(t)).join(""),"}"])}},{name:"Subscript",latexTrigger:["_"],kind:"infix",serialize:(e,n)=>Q(n)===2?e.serialize(m(n,1))+"_{"+e.serialize(m(n,2))+"}":"_{"+e.serialize(m(n,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:(e,n)=>["Superstar",n]},{latexTrigger:["_","*"],kind:"postfix",parse:(e,n)=>["Substar",n]},{name:"Substar",latexTrigger:["_","\\star"],kind:"postfix"},{name:"Superdagger",latexTrigger:["^","\\dagger"],kind:"postfix"},{latexTrigger:["^","\\dag"],kind:"postfix",parse:(e,n)=>["Superdagger",n]},{name:"Prime",latexTrigger:["^","\\prime"],kind:"postfix",parse:(e,n)=>nn(e,n,1),serialize:(e,n)=>{let i=T(m(n,2))??1,t=e.serialize(m(n,1));return i===1?t+"^\\prime":i===2?t+"^\\doubleprime":i===3?t+"^\\tripleprime":t+"^{("+e.serialize(m(n,2))+")}"}},{latexTrigger:"^{\\prime\\prime}",kind:"postfix",parse:(e,n)=>nn(e,n,2)},{latexTrigger:"^{\\prime\\prime\\prime}",kind:"postfix",parse:(e,n)=>nn(e,n,3)},{latexTrigger:["^","\\doubleprime"],kind:"postfix",parse:(e,n)=>nn(e,n,2)},{latexTrigger:["^","\\tripleprime"],kind:"postfix",parse:(e,n)=>nn(e,n,3)},{latexTrigger:"'",kind:"postfix",precedence:810,parse:(e,n)=>nn(e,n,1)},{latexTrigger:"\\prime",kind:"postfix",precedence:810,parse:(e,n)=>nn(e,n,1)},{latexTrigger:"\\doubleprime",kind:"postfix",precedence:810,parse:(e,n)=>nn(e,n,2)},{latexTrigger:"\\tripleprime",kind:"postfix",precedence:810,parse:(e,n)=>nn(e,n,3)},{latexTrigger:["^","<{>","("],kind:"postfix",parse:(e,n)=>{if(!e.computeEngine?.box(n)?.domain?.isFunction)return null;let i=e.index;e.addBoundary([")"]);let t=e.parseExpression();return!e.matchBoundary()||!e.match("<}>")?(e.index=i,null):["Derivative",n,t]}},{name:"InverseFunction",latexTrigger:"^{-1",kind:"postfix",parse:(e,n)=>{if(!e.computeEngine?.box(n)?.domain?.isFunction)return null;let i=0,t=e.index;for(;!e.atEnd&&!e.match("<}>");)if(e.match("'"))i++;else if(e.match("\\prime"))i++;else if(e.match("\\doubleprime"))i+=2;else if(e.match("\\tripleprime"))i+=3;else return e.index=t,null;return i===1?["Derivative",["InverseFunction",n]]:i>0?["Derivative",["InverseFunction",n],i]:["InverseFunction",n]},serialize:(e,n)=>e.serialize(m(n,1))+"^{-1}"},{name:"Derivative",serialize:(e,n)=>{let i=T(m(n,2))??1,t=e.serialize(m(n,1));return i===1?t+"^{\\prime}":i===2?t+"^{\\doubleprime}":i===3?t+"^{\\tripleprime}":t+"^{("+e.serialize(m(n,2))+")}"}},{kind:"environment",name:"Which",identifierTrigger:"cases",parse:e=>{let n=e.parseTabular();if(!n)return["Which"];let i=["Which"];for(let t of n)if(t.length===1)i.push("True"),i.push(t[0]);else if(t.length===2){let r=J(t[1]);i.push(r?"True":fr(t[1])??"True"),i.push(t[0])}return i},serialize:(e,n)=>{let i=[],t=w(n);if(t)for(let r=0;r<=t.length-2;r+=2){let o=[];o.push(e.serialize(t[r+1])),o.push(e.serialize(t[r])),i.push(o.join("&"))}return N(["\\begin{cases}",i.join("\\\\"),"\\end{cases}"])}}];function pr(e,n){if(!e.match("<{>"))return"''";let i=[],t="",r=null;for(;!e.atEnd&&!e.match("<}>");)if(e.peek==="<{>")i.push(pr(e));else if(e.match("\\textbf")&&e.match("<{>"))i.push(pr(e,{"font-weight":"bold"}));else if(e.match("\\color")){let s=e.parseStringGroup();s!==null&&(r!==null&&t?i.push(["Style",t,{dict:r}]):t&&i.push(["String",t]),t="",r={color:s})}else if(e.match("<space>"))t+=" ";else if(e.match("<$>")){let s=e.index,a=e.parseExpression()??["Sequence"];e.skipSpace(),e.match("<$>")?i.push(a):(t+="$",e.index=s)}else if(e.match("<$$>")){let s=e.index,a=e.parseExpression()??["Sequence"];e.skipSpace(),e.match("<$$>")?i.push(a):(t+="$$",e.index=s)}else t+=e.matchChar()??e.nextToken();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=>J(s)!==null)?o="'"+i.map(s=>J(s)).join()+"'":o=["String",...i],n?["Style",o,{dict:n}]:o}function ll(e,n){return n===null?"":N(st(n,i=>{let t=J(i);return t===null?e.serialize(i):t==="<{>"?"{":t==="<}>"?"}":t==="<$>"?"$":t==="<$$>"?"$$":t==="<space>"?" ":t}))}function Xo(e){return e===null?"":e.replace(/[{}\[\]\\:\-\$%]/g,n=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "})[n]??"\\"+n)}function fl(e,n){let i=m(n,2);return i?y(i)==="LatexString"?`\\texttt{${Xo(J(m(i,1))??"")}}`:y(i)==="Hold"?e.serialize(m(i,1)):e.serialize(i):""}function nn(e,n,i){let t=y(n);if(t==="Derivative"||t==="Prime"){let r=T(m(n,2))??1;return[t,j(m(n,1)),r+i]}return e.computeEngine?.box(n)?.domain?.isFunction?i===1?["Derivative",n]:["Derivative",n,i]:i===1?["Prime",j(n)]:["Prime",j(n),i]}function Yo(e,n){return n===null||W(n)?["Sequence"]:y(n)==="Sequence"?Q(n)===0?["Delimiter"]:["Delimiter",["Sequence",...w(n)??[]]]:["Delimiter",n]}function mr(e,n){return n===null||W(n)?["List"]:y(n)!=="Sequence"&&y(n)!=="List"?["List",n]:["List",...w(n)??[]]}var Ko=[{latexTrigger:["\\not","<"],kind:"infix",associativity:"right",precedence:246,parse:"NotLess"},{name:"NotLess",latexTrigger:["\\nless"],kind:"infix",associativity:"right",precedence:246},{latexTrigger:["<"],kind:"infix",associativity:"right",precedence:245,parse:"Less"},{name:"Less",latexTrigger:["\\lt"],kind:"infix",associativity:"right",precedence:245},{latexTrigger:["<","="],kind:"infix",associativity:"right",precedence:241,parse:"LessEqual"},{name:"LessEqual",latexTrigger:["\\le"],kind:"infix",associativity:"right",precedence:241},{latexTrigger:["\\leq"],kind:"infix",associativity:"right",precedence:241,parse:"LessEqual"},{latexTrigger:["\\leqslant"],kind:"infix",associativity:"right",precedence:265,parse:"LessEqual"},{name:"LessNotEqual",latexTrigger:["\\lneqq"],kind:"infix",associativity:"right",precedence:260},{name:"NotLessNotEqual",latexTrigger:["\\nleqq"],kind:"infix",associativity:"right",precedence:260},{name:"LessOverEqual",latexTrigger:["\\leqq"],kind:"infix",associativity:"right",precedence:265},{name:"GreaterOverEqual",latexTrigger:["\\geqq"],kind:"infix",associativity:"right",precedence:265,parse:"GreaterEqual"},{name:"Equal",latexTrigger:["="],kind:"infix",associativity:"right",precedence:260},{latexTrigger:["*","="],kind:"infix",associativity:"right",precedence:260,parse:"StarEqual"},{name:"StarEqual",latexTrigger:["\\star","="],kind:"infix",associativity:"right",precedence:260},{name:"PlusEqual",latexTrigger:["+","="],kind:"infix",associativity:"right",precedence:260},{name:"MinusEqual",latexTrigger:["-","="],kind:"infix",associativity:"right",precedence:260},{name:"SlashEqual",latexTrigger:["/","="],kind:"infix",associativity:"right",precedence:260},{name:"EqualEqual",latexTrigger:["=","="],kind:"infix",associativity:"right",precedence:260},{name:"EqualEqualEqual",latexTrigger:["=","=","="],kind:"infix",associativity:"right",precedence:265},{name:"TildeFullEqual",latexTrigger:["\\cong"],kind:"infix",associativity:"right",precedence:260},{name:"NotTildeFullEqual",latexTrigger:["\\ncong"],kind:"infix",associativity:"right",precedence:260},{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:260},{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:260},{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:265,parse:"GreaterEqual"},{name:"GreaterNotEqual",latexTrigger:["\\gneqq"],kind:"infix",associativity:"right",precedence:260},{name:"NotGreaterNotEqual",latexTrigger:["\\ngeqq"],kind:"infix",associativity:"right",precedence:260},{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:260},{name:"TriangleEqual",latexTrigger:["\\triangleq"],kind:"infix",associativity:"right",precedence:260},{name:"DotEqual",latexTrigger:["\\doteq"],kind:"infix",associativity:"right",precedence:265},{name:"DotEqualDot",latexTrigger:["\\doteqdot"],kind:"infix",associativity:"right",precedence:265},{name:"FallingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:265},{name:"RisingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:265},{name:"QuestionEqual",latexTrigger:["\\questeq"],kind:"infix",associativity:"right",precedence:260},{name:"MuchLess",latexTrigger:["\\ll"],kind:"infix",associativity:"right",precedence:260},{name:"MuchGreater",latexTrigger:["\\gg"],kind:"infix",associativity:"right",precedence:260},{name:"Precedes",latexTrigger:["\\prec"],kind:"infix",associativity:"right",precedence:260},{name:"Succeeds",latexTrigger:["\\succ"],kind:"infix",associativity:"right",precedence:260},{name:"PrecedesEqual",latexTrigger:["\\preccurlyeq"],kind:"infix",associativity:"right",precedence:260},{name:"SucceedsEqual",latexTrigger:["\\curlyeqprec"],kind:"infix",associativity:"right",precedence:260},{name:"NotPrecedes",latexTrigger:["\\nprec"],kind:"infix",associativity:"right",precedence:260},{name:"NotSucceeds",latexTrigger:["\\nsucc"],kind:"infix",associativity:"right",precedence:260},{name:"Between",latexTrigger:["\\between"],kind:"infix",associativity:"right",precedence:265}];var es=[{name:"True",kind:"symbol",latexTrigger:["\\top"]},{kind:"symbol",latexTrigger:"\\mathrm{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\operator{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\mathsf{T}",parse:"True"},{name:"False",kind:"symbol",latexTrigger:["\\bot"]},{kind:"symbol",latexTrigger:"\\operator{False}",parse:"True"},{kind:"symbol",latexTrigger:"\\mathsf{F}",parse:"True"},{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},{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:"Equivalent"},{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"}];function Ie(e){return n=>{let i=n.parseGroup();return i===null?[e]:[e,i]}}var ns=[{name:"Overscript",latexTrigger:["\\overset"],kind:"infix",precedence:700},{name:"Underscript",latexTrigger:["\\underset"],kind:"infix",precedence:700},{name:"Increment",latexTrigger:["+","+"],kind:"postfix",precedence:880},{name:"Decrement",latexTrigger:["-","-"],kind:"postfix",precedence:880},{name:"PreIncrement",latexTrigger:["+","+"],kind:"prefix",precedence:880},{name:"PreDecrement",latexTrigger:["-","-"],kind:"prefix",precedence:880},{name:"Ring",latexTrigger:["\\circ"],kind:"infix",precedence:265},{name:"Transpose",latexTrigger:["^","T"],kind:"postfix"},{name:"ConjugateTranspose",latexTrigger:["^","H"],kind:"postfix"},{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:e=>{let n=!1,i="Nothing",t="Nothing";for(;!n;)e.skipSpace(),e.match("_")?t=e.parseGroup()??e.parseToken():e.match("^")?i=e.parseGroup()??e.parseToken():n=!0;let r=Hn(t);if(r&&(t=["List",...r]),t===null||i===null)return null;let o=e.parseGroup()??"Nothing";if(o!=="Nothing"&&!W(o)){let s=e.parseArguments()??["Nothing"];o=[o,...s]}return["PartialDerivative",o,t,i]},serialize:(e,n)=>{let i="\\partial",t=m(n,1),r=m(n,2),o=m(n,3);return r!==null&&r!=="Nothing"&&(y(r)==="List"?i+="_{"+e.serialize(["Sequence",...w(r)??[]])+"}":i+="_{"+e.serialize(r)+"}"),o!==null&&o!=="Nothing"&&(i+="^{"+e.serialize(o)+"}"),t!==null&&t!=="Nothing"&&(i+=e.serialize(t)),i},precedence:740},{name:"OverBar",latexTrigger:["\\overline"],parse:Ie("OverBar")},{name:"UnderBar",latexTrigger:["\\underline"],parse:Ie("UnderBar")},{name:"OverVector",latexTrigger:["\\vec"],parse:Ie("OverVector")},{name:"OverTilde",latexTrigger:["\\tilde"],parse:Ie("OverTilde")},{name:"OverHat",latexTrigger:["\\hat"],parse:Ie("OverHat")},{name:"OverRightArrow",latexTrigger:["\\overrightarrow"],parse:Ie("OverRightArrow")},{name:"OverLeftArrow",latexTrigger:["\\overleftarrow"],parse:Ie("OverLeftArrow")},{name:"OverRightDoubleArrow",latexTrigger:["\\Overrightarrow"],parse:Ie("OverRightDoubleArrow")},{name:"OverLeftHarpoon",latexTrigger:["\\overleftharpoon"],parse:Ie("OverLeftHarpoon")},{name:"OverRightHarpoon",latexTrigger:["\\overrightharpoon"],parse:Ie("OverRightHarpoon")},{name:"OverLeftRightArrow",latexTrigger:["\\overleftrightarrow"],parse:Ie("OverLeftRightArrow")},{name:"OverBrace",latexTrigger:["\\overbrace"],parse:Ie("OverBrace")},{name:"OverLineSegment",latexTrigger:["\\overlinesegment"],parse:Ie("OverLineSegment")},{name:"OverGroup",latexTrigger:["\\overgroup"],parse:Ie("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:(e,n)=>{let i=e.serialize(m(n,1)),t=en(m(n,2));if(t===null)return i;J(t.display)==="block"?i=N(["{\\displaystyle",i,"}"]):J(t.display)==="inline"?i=N(["{\\textstyle",i,"}"]):J(t.display)==="script"?i=N(["{\\scriptstyle",i,"}"]):J(t.display)==="scriptscript"&&(i=N(["{\\scriptscriptstyle",i,"}"]));let r=T(t.size);return r!==null&&r>=1&&r<=10&&(i=N(["{",{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:(e,n)=>{if(m(n,2))return e.serialize(m(n,1));let i=T(m(n,1));return i===null?"":{"-3":"\\!",6:"\\ ",3:"\\,",4:"\\:",5:"\\;",9:"\\enspace",18:"\\quad",36:"\\qquad"}[i]??""}}];function $(e){return(n,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","\\ctg":"Cot","\\cth":"Coth","\\sec":"Sec","\\sin":"Sin","\\sinh":"Sinh","\\sh":"Sinh","\\tan":"Tan","\\tanh":"Tanh","\\tg":"Tan","\\th":"Tanh"}[e??""]??e??"";if(n.atTerminator(i))return t;let r=t;do{let u=n.parsePostfixOperator(r,i);if(u===null)break;r=u}while(!0);let o=null;n.match("^")&&(o=n.parseGroup()??n.parseToken());let s=n.parseArguments("implicit",i),a=s===null?r:typeof r=="string"?[r,...s]:["Apply",r,...s];return o===null?a:["Power",a,o]}}var is=[{name:"Arcsin",latexTrigger:["\\arcsin"],parse:$("Arcsin")},{name:"Arccos",latexTrigger:["\\arccos"],parse:$("Arccos")},{name:"Arctan",latexTrigger:["\\arctan"],parse:$("Arctan")},{latexTrigger:["\\arctg"],parse:$("Arctan")},{name:"Arccot",latexTrigger:["\\arcctg"],parse:$("Arccot")},{name:"Arcsec",latexTrigger:"arcsec",parse:$("Arcsec")},{name:"Arccsc",latexTrigger:["\\arccsc"],parse:$("Arccsc")},{name:"Arsinh",latexTrigger:["\\arsinh"],parse:$("Arsinh")},{name:"Arcosh",latexTrigger:["\\arcosh"],parse:$("Arcosh")},{name:"Artanh",latexTrigger:["\\artanh"],parse:$("Artanh")},{name:"Arsech",latexTrigger:["\\arsech"],parse:$("Arsech")},{name:"Arcsch",latexTrigger:["\\arcsch"],parse:$("Arcsch")},{latexTrigger:["\\ch"],parse:$("Cosh")},{name:"Cosec",latexTrigger:["\\cosec"],parse:$("Cosec")},{name:"Cosh",latexTrigger:["\\cosh"],parse:$("Cosh")},{name:"Cot",latexTrigger:["\\cot"],parse:$("Cot")},{latexTrigger:["\\cotg"],parse:$("Cot")},{name:"Coth",latexTrigger:["\\coth"],parse:$("Coth")},{name:"Csc",latexTrigger:["\\csc"],parse:$("Csc")},{latexTrigger:["\\ctg"],parse:$("Cot")},{latexTrigger:["\\cth"],parse:$("Cotanh")},{name:"Sec",latexTrigger:["\\sec"],parse:$("Sec")},{name:"Sinh",latexTrigger:["\\sinh"],parse:$("Sinh")},{latexTrigger:["\\sh"],parse:$("Sinh")},{name:"Tan",latexTrigger:["\\tan"],parse:$("Tan")},{latexTrigger:["\\tg"],parse:$("Tan")},{name:"Tanh",latexTrigger:["\\tanh"],parse:$("Tanh")},{latexTrigger:["\\th"],parse:$("Tanh")},{name:"Cos",latexTrigger:["\\cos"],parse:$("Cos")},{name:"Sin",latexTrigger:["\\sin"],parse:$("Sin")}];var ts=[{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"},{name:"CartesianProduct",latexTrigger:["\\times"],kind:"infix",associativity:"right",precedence:390,parse:(e,n,i)=>{if(390<i.minPrec)return null;let t=e.computeEngine;if(!t||!t.box(n).domain.isCompatible("Sets"))return null;let r=e.index,o=e.parseExpression({...i,minPrec:390});return o===null||t.box(n).domain.isCompatible("Sets")!==!0?(e.index=r,null):["CartesianProduct",n,o]}},{latexTrigger:["^","\\complement"],kind:"postfix",parse:(e,n)=>["Complement",n]},{name:"Complement",latexTrigger:["^","<{>","\\complement","<}>"],kind:"postfix"},{name:"Intersection",latexTrigger:["\\cap"],kind:"infix",precedence:350},{name:"Interval",serialize:gr},{name:"Multiple",serialize:gr},{name:"Union",latexTrigger:["\\cup"],kind:"infix",precedence:350},{name:"Range",serialize:gr},{name:"SetMinus",latexTrigger:["\\setminus"],kind:"infix",precedence:650},{name:"SymmetricDifference",latexTrigger:["\\triangle"],kind:"infix",precedence:260},{latexTrigger:["\\ni"],kind:"infix",associativity:"right",precedence:160,parse:(e,n,i)=>{let t=e.parseExpression(i);return t===null?null:["Element",t,n]}},{name:"Element",latexTrigger:["\\in"],kind:"infix",precedence:240},{name:"NotElement",latexTrigger:["\\notin"],kind:"infix",precedence:240},{name:"NotSubset",latexTrigger:["\\nsubset"],kind:"infix",associativity:"right",precedence:240},{name:"NotSuperset",latexTrigger:["\\nsupset"],kind:"infix",associativity:"right",precedence:240},{name:"NotSubsetNotEqual",latexTrigger:["\\nsubseteq"],kind:"infix",associativity:"right",precedence:240},{name:"NotSupersetNotEqual",latexTrigger:["\\nsupseteq"],kind:"infix",associativity:"right",precedence:240},{name:"SquareSubset",latexTrigger:["\\sqsubset"],kind:"infix",associativity:"right",precedence:265},{name:"SquareSubsetEqual",latexTrigger:["\\sqsubseteq"],kind:"infix",associativity:"right",precedence:265},{name:"SquareSuperset",latexTrigger:["\\sqsupset"],kind:"infix",associativity:"right",precedence:265},{name:"SquareSupersetEqual",latexTrigger:["\\sqsupseteq"],kind:"infix",associativity:"right",precedence:265},{name:"Subset",latexTrigger:["\\subset"],kind:"infix",associativity:"right",precedence:240},{latexTrigger:["\\subsetneq"],kind:"infix",associativity:"right",precedence:240,parse:"Subset"},{latexTrigger:["\\varsubsetneqq"],kind:"infix",associativity:"right",precedence:240,parse:"Subset"},{name:"SubsetEqual",latexTrigger:["\\subseteq"],kind:"infix",precedence:240},{name:"Superset",latexTrigger:["\\supset"],kind:"infix",associativity:"right",precedence:240},{latexTrigger:["\\supsetneq"],kind:"infix",associativity:"right",precedence:240,parse:"Superset"},{latexTrigger:["\\varsupsetneq"],kind:"infix",associativity:"right",precedence:240,parse:"Superset"},{name:"SupersetEqual",latexTrigger:["\\supseteq"],kind:"infix",associativity:"right",precedence:240}];function gr(e,n){if(n===null)return"";let i=y(n);if(i===null)return"";if(i==="Set")return Q(n)===0?"\\emptyset":Q(n)===2&&y(m(n,2))==="Condition"?N(["\\left\\lbrace",e.serialize(m(n,1)),"\\middle\\mid",e.serialize(m(n,2)),"\\right\\rbrace"]):N(["\\left\\lbrace",...(w(n)??[]).map(r=>e.serialize(r)+" ,"),"\\right\\rbrace"]);if(i==="Range")return N(["\\mathopen\\lbrack",e.serialize(m(n,1)),", ",e.serialize(m(n,2)),"\\mathclose\\rbrack"]);if(i==="Interval"){let r=m(n,1),o=m(n,2),s=!1,a=!1;return y(r)==="Open"&&(r=m(r,1),s=!0),y(o)==="Open"&&(o=m(o,1),a=!0),N([`\\mathopen${s?"\\rbrack":"\\lbrack"}`,e.serialize(r),", ",e.serialize(o),`\\mathclose${a?"\\lbrack":"\\rbrack"}`])}let t=e.numericSetStyle(n,e.level);return""}function Zn(e,n=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"||W(r))&&(r=null),(t==="Nothing"||W(t))&&(t=null);let[o,s]=cl(i,n);if(o&&!s){if(y(o)==="Add"||y(o)==="Subtract"){let a=[],u=[];for(let l of w(o)??[])if(s)u.push(l);else{let f;[f,s]=tn(l),a.push(f??l)}if(s!==null&&u.length>0)return["Add",rs(i,e,["Add",...a],[{index:s,sub:r,sup:t}]),...u]}else if(y(o)==="Divide"){let a;[a,s]=tn(m(o,1)),a!==null&&s!==null&&(o=["Divide",a,m(o,2)])}}return rs(i,e,o,[{index:s,sub:r,sup:t}])}}function rs(e,n,i,t){if(i&&t.length===0)return[n,i];if(i??(i="Nothing"),e.computeEngine){let r=e.computeEngine,o=!1,s={};for(let a of t)a.index&&(o=!0,s[a.index]={domain:"ExtendedRealNumbers"});o&&r.pushScope().declare(s),i=r.box(i).json,o&&r.popScope()}return[n,i,...t.map(r=>dl(r))]}function dl(e){let n=e.index?["Hold",e.index]:"Nothing";return e.sup!==null?["Tuple",n,e.sub??"Nothing",e.sup]:e.sub!==null?["Tuple",n,e.sub]:n}function cl(e,n=1){let i=e.index,t=!1,r=e.parseExpression({minPrec:266,condition:()=>((e.matchAll(["\\mathrm","<{>","d","<}>"])||e.matchAll(["\\operatorname","<{>","d","<}>"]))&&(t=!0),t)});if(t||(e.index=i,r=e.parseExpression({minPrec:266,condition:()=>(e.match("d")&&(t=!0),t)})),r&&!t)return tn(r);let o=ml(e,n);return[r,o[0]??null]}function ml(e,n=1){e.skipSpace();let i=[],t=L(e.parseSymbol());return t===null?[]:(i.push(t),i)}function tn(e){let n=y(e),i=m(e,1);if(!i)return[e,null];if(n==="Multiply"){let t=w(e);if(t&&t.length>1){let r=L(t[t.length-2]);if(r==="d"||r==="d_upright")return t.length===2?[null,L(t[1])]:t.length===3?[t[0],L(t[2])]:[["Multiply",...t.slice(0,-2)],L(t[t.length-1])];let[o,s]=tn(t[t.length-1]);if(o)return[["Multiply",...t.slice(0,-1),o],s]}}else if(n==="Delimiter"){let[t,r]=tn(i);if(r)return t?[["Delimiter",t,...w(e).slice(1)],r]:[null,r]}else if(n==="Add"){let t=w(e);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(n==="Negate"){let[t,r]=tn(i);if(r)return[t?["Negate",t]:null,r]}else if(n==="Divide"){let[t,r]=tn(i);if(r)return[["Divide",t??1,m(e,2)],r]}else{let t=w(e);if(t?.length===1){let[r,o]=tn(t[0]);if(o)return[[y(e),r],o]}}return[e,null]}function os(e){return(n,i)=>{if(!m(i,1))return e;let t=m(i,2),r=y(t),o=null;r==="Tuple"||r==="Triple"||r==="Pair"||r==="Single"?o=m(t,1):r==="Hold"?o=m(t,1):(o=m(t,1)??"x",t=null),y(o)==="Hold"&&(o=m(o,1));let s=o!==null?L(o):null,a=m(i,1);if(y(a)==="Lambda"&&m(a,1)&&(a=gi(m(a,1),{_:s??"x",_1:s??"x"})),!t)return!s||s==="Nothing"?N([e,"\\!",n.serialize(a)]):N([e,"\\!",n.serialize(a),"\\,\\operatorname{d}",n.serialize(s)]);let u=m(t,2)?L(m(t,2)):null,l=t&&u!=="Nothing"?n.serialize(m(t,2)):"";l.length>0&&(l=`_{${l}}`);let f="",d=m(t,3)?L(m(t,3)):null;return m(t,3)&&d!=="Nothing"&&(f=`^{${n.serialize(m(t,3))}}`),N([e,f,l,"\\!",n.serialize(a),...s&&L(s)!=="Nothing"?["\\,\\operatorname{d}",n.serialize(s)]:[]])}}var ss=[{kind:"expression",name:"Integrate",latexTrigger:["\\int"],parse:Zn("Integrate"),serialize:os("\\int")},{kind:"expression",latexTrigger:["\\iint"],parse:Zn("Integrate",2)},{kind:"expression",latexTrigger:["\\iiint"],parse:Zn("Integrate",3)},{kind:"expression",name:"CircularIntegrate",latexTrigger:["\\oint"],parse:Zn("CircularIntegrate"),serialize:os("\\oint")},{kind:"expression",latexTrigger:["\\oiint"],parse:Zn("CircularIntegrate",2)},{kind:"expression",latexTrigger:["\\oiiint"],parse:Zn("CircularIntegrate",3)}];var $e=[["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]],as=[...$e.map(([e,n,i])=>({kind:"symbol",name:e,latexTrigger:[n],parse:e})),...$e.map(([e,n,i])=>({kind:"symbol",latexTrigger:[String.fromCodePoint(i)],parse:e}))];var us=[{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 ls=[{name:"Mean",kind:"function",identifierTrigger:"mean"},{name:"Median",kind:"function",identifierTrigger:"median"},{name:"StandarDeviation",kind:"function",identifierTrigger:"stddev"},{latexTrigger:["\\bar"],kind:"expression",parse:(e,n)=>{let i=e.parseGroup()??e.parseToken();return!i||!L(i)?null:["Mean",i]}}];var fs={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","|":"\\vert","||":"\\Vert","\\lceil":"\\lceil","\\lfloor":"\\lfloor","\\rceil":"\\rceil","\\rfloor":"\\rfloor"};function ds(e,n,i){let t=pl(n,i);if(t===null)return;let r="kind"in n?n.kind:"expression",o=t.latexTrigger;typeof o=="string"&&(e.lookahead=Math.max(e.lookahead,ot(o)));let s=R(o??"",[]);if(s.length===2&&/[_^]/.test(s[0])&&s[1]!=="<{>"&&r!=="function"&&r!=="environment"&&r!=="matchfix"){let a=n.parse;!a&&n.name&&(r==="postfix"||r==="prefix"?a=(u,l)=>[n.name,l]:a=n.name),ds(e,{...n,kind:r,name:void 0,serialize:void 0,parse:a,latexTrigger:[s[0],"<{>",s[1],"<}>"]},i)}e.defs.push(t),t.name!==void 0&&(e.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."]}),e.ids.set(t.name,t))}function hr(e,n){let i={lookahead:1,ids:new Map,defs:[]};for(let t of e)ds(i,t,n);return i}function pl(e,n){if(!xl(e,n))return null;let i={kind:"kind"in e?e.kind:"expression"},t=null;"latexTrigger"in e&&(typeof e.latexTrigger=="string"?t=R(e.latexTrigger,[]):t=e.latexTrigger);let r=null;"identifierTrigger"in e&&(r=e.identifierTrigger),t!==null&&(i.latexTrigger=Se(t)),r!==null&&(i.identifierTrigger=r),e.name&&(i.name=e.name,i.serialize=gl(e,t,r)),i.kind==="matchfix"&&qn(e)&&(i.openDelimiter=e.openTrigger,i.closeDelimiter=e.closeTrigger),i.kind==="symbol"&&Qt(e)&&(i.precedence=e.precedence??1e4),(i.kind==="prefix"||i.kind==="postfix")&&(mi(e)||Yi(e))&&(t&&(t[0]==="^"||t[0]==="_")?(i.precedence=720,e.precedence):i.precedence=e.precedence??1e4),i.kind==="infix"&&Wi(e)&&(!t||t[0]!=="^"&&t[0]!=="_"||!e.associativity||e.associativity,i.associativity=e.associativity??"non",i.precedence=e.precedence??1e4);let o=hl(e,t,r);return o&&(i.parse=o),i}function gl(e,n,i){if(typeof e.serialize=="function")return e.serialize;let t=e.kind??"expression";if(t==="environment"){let s=e.identifierTrigger??e.name??"unknown";return(a,u)=>N([`\\begin{${s}}`,a.serialize(m(u,1)),`\\end{${s}}`])}if(qn(e)){let s=typeof e.openTrigger=="string"?fs[e.openTrigger]:Se(e.openDelimiter),a=typeof e.closeTrigger=="string"?fs[e.closeTrigger]:Se(e.closeDelimiter);return(u,l)=>N([s,u.serialize(m(l,1)),a])}let r=e.serialize;if(r===void 0&&n&&(r=Se(n)),r)return t==="postfix"?(s,a)=>N([s.serialize(m(a,1)),r]):t==="prefix"?(s,a)=>N([r,s.serialize(m(a,1))]):t==="infix"?(s,a)=>N((w(a)??[]).flatMap((u,l)=>l<Q(a)-1?[s.serialize(u),r]:[s.serialize(u)])):(s,a)=>y(a)?N([r,s.wrapArguments(a)]):r;let o=i??e.name??"unknown";return t==="postfix"?(s,a)=>N([s.serialize(m(a,1)),s.serializeSymbol(o)]):t==="prefix"?(s,a)=>N([s.serializeSymbol(o),s.serialize(m(a,1))]):t==="infix"?(s,a)=>N([s.serialize(m(a,1)),s.serializeSymbol(o),s.serialize(m(a,2))]):(s,a)=>y(a)?N([s.serializeSymbol(o),s.wrapArguments(a)]):s.serializeSymbol(o)}function hl(e,n,i){if("parse"in e&&typeof e.parse=="function")return e.parse;let t="kind"in e?e.kind:"expression";if(t==="environment"){let r=e.parse??e.name??i;if(r)return(o,s)=>{let a=o.parseTabular();return a===null?null:[r,["List",a.map(u=>["List",...u])]]}}if(t==="function"){let r=e.parse??e.name??i;if(r)return(o,s)=>{let a=o.parseArguments("enclosure",s);return a===null?r:[r,...a]}}if(t==="symbol"){let r=e.parse??e.name??i;if(r)return(o,s)=>r}if(t==="prefix"){let r=e.parse??e.name??i;if(r){let o=e.precedence??1e4;return(s,a)=>{let u=s.parseExpression({...a??[],minPrec:o});return u===null?null:[r,u]}}}if(t==="postfix"){let r=e.parse??e.name;if(r)return(o,s)=>s===null?null:[r,s]}if(t==="infix"){if(/[_^]/.test(n?.[0]??"")){let a=e.name??e.parse;return(u,l)=>[a,j(m(l,1)),j(m(l,2))]}let r=e.parse??e.name??i,o=e.precedence??1e4,s=e.associativity??"non";if(r)return(a,u,l)=>{if(u===null||o<l.minPrec)return null;let f=j(a.parseExpression({...l,minPrec:o}));return typeof r=="string"?Ve(r,u,f,s):[r,u,f]}}if(t==="matchfix"){let r=e.parse??e.name;if(r)return(o,s)=>s===null||W(s)?null:[r,s]}if(t==="expression"){let r=e.parse??e.name??i;if(r)return()=>r}if("parse"in e){let r=e.parse;return()=>r}}function xl(e,n){let i=e.name??e.latexTrigger??e.identifierTrigger??e.openDelimiter;if(!i)try{i=JSON.stringify(e)}catch{i="???"}if(Array.isArray(i)&&(i=Se(i)),"trigger"in e&&n({severity:"warning",message:["invalid-dictionary-entry",i,"The 'trigger' property is deprecated. Use 'latexTrigger' or 'identifierTrigger' instead"]}),"kind"in e&&!["expression","symbol","function","infix","postfix","prefix","matchfix","environment"].includes(e.kind)&&n({severity:"warning",message:["invalid-dictionary-entry",i,"The 'kind' property must be one of 'expression', 'symbol', 'function', 'infix', 'postfix', 'prefix', 'matchfix', 'environment'"]}),e.serialize!==void 0&&!e.name)return n({severity:"warning",message:["invalid-dictionary-entry",i,"A 'name' property must be provided if a 'serialize' handler is provided"]}),!1;if("identifierTrigger"in e&&(typeof e.identifierTrigger!="string"||!ue(e.identifierTrigger))&&n({severity:"warning",message:["invalid-dictionary-entry",i,"The 'identifierTrigger' property must be a valid identifier"]}),"name"in e&&(typeof e.name!="string"?e.name!==void 0&&n({severity:"warning",message:["invalid-dictionary-entry",i,"The 'name' property must be a string"]}):ue(e.name)||n({severity:"warning",message:["invalid-dictionary-entry",e.name,"The 'name' property must be a valid identifier"]})),qn(e)){if("latexTrigger"in e||"identifierTrigger"in mi)return n({severity:"warning",message:["invalid-dictionary-entry",i,"'matchfix' operators use a 'openDelimiter' and 'closeDelimiter' instead of a 'latexTrigger' or 'identifierTrigger'. "]}),!1;if(!e.openTrigger||!e.closeTrigger)return n({severity:"warning",message:["invalid-dictionary-entry",i,"Expected `openDelimiter` and a `closeDelimiter` for matchfix operator"]}),!1;if(typeof e.openTrigger!=typeof e.closeTrigger)return n({severity:"warning",message:["invalid-dictionary-entry",i,"Expected `openDelimiter` and `closeDelimiter` to both be strings or array of LatexToken"]}),!1}if(Wi(e)||Yi(e)||mi(e)){if(Array.isArray(e.latexTrigger)&&(e.latexTrigger[0]==="_"||e.latexTrigger[0]==="^")||typeof e.latexTrigger=="string"&&(e.latexTrigger.startsWith("^")||e.latexTrigger.startsWith("_"))){if(e.precedence!==void 0||e.associativity!==void 0)return n({severity:"warning",message:["invalid-dictionary-entry",i,'Unexpected "precedence" or "associativity" for superscript/subscript operator']}),!1}else if(e.precedence===void 0)return n({severity:"warning",message:["invalid-dictionary-entry",i,`Expected a "precedence" for ${e.kind} operator`]}),!1}else if(e.associativity!==void 0)return n({severity:"warning",message:["invalid-dictionary-entry",i,'Unexpected "associativity" operator']}),!1;return!qn(e)&&!Xt(e)&&!e.latexTrigger&&!e.identifierTrigger&&!e.name?(n({severity:"warning",message:["invalid-dictionary-entry",i,"Expected a 'name', a 'latexTrigger' or a 'identifierTrigger'"]}),!1):e.parse===void 0&&e.name===void 0?(n({severity:"warning",message:["invalid-dictionary-entry",i,"Expected a 'parse' or 'name'"]}),!1):!0}var Jn={algebra:wo,arithmetic:Jo,calculus:ss,complex:us,core:Qo,logic:es,relop:Ko,other:ns,physics:[{name:"mu0",kind:"symbol",latexTrigger:"\\mu_0"}],sets:ts,statistics:ls,symbols:as,trigonometry:is};var bl={"\\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"},yl={"\\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 cs(e,n){if(e.atEnd)return null;let i=e.peek,t={"\\_":"_","\\#":"hash"}[i];if(!t&&!n.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 e.nextToken(),t;let r=$e.findIndex(o=>o[1]===i);return r>=0?(e.nextToken(),$e[r][0]):e.matchChar()??e.nextToken()}function ut(e){let n=xr(e),i=e.index,t=yl[e.peek]??null;if(t){if(e.nextToken(),!e.match("<{>"))return e.index=i,null;let s=ut(e);if(s===null||!e.match("<}>"))return e.index=i,null;n=`${s}${t}`}if(n===null){for(n="";!e.atEnd;){let s=e.peek;if(s==="<}>"||s==="_"||s==="^")break;let a=cs(e,{toplevel:!1});if(a===null)return e.index=i,null;n+=a}for(;!e.atEnd&&/\d/.test(e.peek);)n+=e.nextToken()}for(;!e.atEnd;)if(e.match("\\degree"))n+="_deg";else if(e.matchAll(["^","\\prime"]))n+="_prime";else if(e.matchAll(["^","<{>","\\prime","<}>"]))n+="_prime";else if(e.matchAll(["^","<{>","\\doubleprime","<}>"]))n+="_dprime";else if(e.matchAll(["^","<{>","\\prime","\\prime","<}>"]))n+="_dprime";else break;let r=[],o=[];for(;!e.atEnd;)if(e.match("_")){let s=e.match("<{>"),a=ut(e);if(s&&!e.match("<}>")||a===null)return e.index=i,null;o.push(a)}else if(e.match("^")){let s=e.match("<{>"),a=ut(e);if(s&&!e.match("<}>")||a===null)return e.index=i,null;r.push(a)}else break;return r.length>0&&(n+="__"+r.join("")),o.length>0&&(n+="_"+o.join("")),n}function xr(e){let n=e.index,i=bl[e.peek]??null;if(i===null)return null;if(e.nextToken(),e.match("<{>")){let t="",r={0:"zero",1:"one",2:"two",3:"three",4:"four",5:"five",6:"six",7:"seven",8:"eight",9:"nine"}[e.peek]??"";return r&&(t=r,e.nextToken()),t+=ut(e),t===null||!e.match("<}>")?(e.index=n,null):i==="_upright"&&t.length>1?t:t+i}return e.index=n,null}function ms(e){let n=e.index,i=xr(e);return i===null||ue(i)?(e.index=n,null):e.error(["invalid-identifier",{str:qe(i)}],n)}function Wn(e){if(/^[a-zA-Z]$/.test(e.peek)||/^\p{XIDS}$/u.test(e.peek))return e.nextToken();let n=e.index,i=xr(e);if(!i){for(i="";!e.atEnd&&Gn.test(i+e.peek);)i+=e.nextToken();i||(i=null)}return i??(i=cs(e,{toplevel:!0})),i&&(i=i.normalize(),ue(i))?i:(e.index=n,null)}var El={"(":["\\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"]};var lt={"\\left":"\\right","\\bigl":"\\bigr","\\Bigl":"\\Bigr","\\biggl":"\\biggr","\\Biggl":"\\Biggr","\\big":"\\big","\\Big":"\\Big","\\bigg":"\\bigg","\\Bigg":"\\Bigg"};var ft={"(":")","[":"]","\\{":"\\}","\\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"},br={precision:6,positiveInfinity:"\\infty",negativeInfinity:"-\\infty",notANumber:"\\operatorname{NaN}",decimalMarker:".",groupSeparator:"\\,",exponentProduct:"\\cdot",beginExponentMarker:"10^{",endExponentMarker:"}",notation:"auto",truncationMarker:"\\ldots",beginRepeatingDigits:"\\overline{",endRepeatingDigits:"}",imaginaryUnit:"\\imaginaryI",avoidExponentsInRange:[-7,20]},yr={applyInvisibleOperator:"auto",skipSpace:!0,parseArgumentsOfUnknownLatexCommands:!0,parseNumbers:"auto",parseUnknownIdentifier:(e,n)=>n.computeEngine?.lookupFunction(e)!==void 0?"function":"symbol",preserveLatex:!1},dt=class{constructor(n,i,t,r){this.index=0;this._boundaries=[];this._lastPeek="";this._peekCounter=0;this._tokens=n,this.options={...br,...yr,...i},this._dictionary=t,this.computeEngine=r,this._positiveInfinityTokens=R(this.options.positiveInfinity,[]),this._negativeInfinityTokens=R(this.options.negativeInfinity,[]),this._notANumberTokens=R(this.options.notANumber,[]),this._decimalMarkerTokens=R(this.options.decimalMarker,[]),this._groupSeparatorTokens=R(this.options.groupSeparator,[]),this._exponentProductTokens=R(this.options.exponentProduct,[]),this._beginExponentMarkerTokens=R(this.options.beginExponentMarker,[]),this._endExponentMarkerTokens=R(this.options.endExponentMarker,[]),this._truncationMarkerTokens=R(this.options.truncationMarker,[]),this._beginRepeatingDigitsTokens=R(this.options.beginRepeatingDigits,[]),this._endRepeatingDigitsTokens=R(this.options.endRepeatingDigits,[]),this._imaginaryNumberTokens=R(this.options.imaginaryUnit,[])}updateOptions(n){for(let[i,t]of Object.entries(n))if(i in this.options)this.options[i]=t,typeof t=="string"&&(i==="positiveInfinity"&&(this._positiveInfinityTokens=R(t,[])),i==="negativeInfinity"&&(this._negativeInfinityTokens=R(t,[])),i==="notANumber"&&(this._notANumberTokens=R(t,[])),i==="decimalMarker"&&(this._decimalMarkerTokens=R(t,[])),i==="groupSeparator"&&(this._groupSeparatorTokens=R(t,[])),i==="exponentProduct"&&(this._exponentProductTokens=R(t,[])),i==="beginExponentMarker"&&(this._beginExponentMarkerTokens=R(t,[])),i==="endExponentMarker"&&(this._endExponentMarkerTokens=R(t,[])),i==="truncationMarker"&&(this._truncationMarkerTokens=R(t,[])),i==="beginRepeatingDigits"&&(this._beginRepeatingDigitsTokens=R(t,[])),i==="endRepeatingDigits"&&(this._endRepeatingDigitsTokens=R(t,[])),i==="imaginaryNumber"&&(this._imaginaryNumberTokens=R(t,[])));else throw Error(`Unexpected option "${i}"`)}get atEnd(){return this.index>=this._tokens.length}get peek(){let n=this._tokens[this.index];if(n===this._lastPeek?this._peekCounter+=1:this._peekCounter=0,this._peekCounter>=1024)throw console.error(`Infinite loop detected while parsing "${this.latex(0)}" at "${this._lastPeek}" (index ${this.index})`),new Error(`Infinite loop detected while parsing "${this.latex(0)}" at ${this._lastPeek} (index ${this.index})`);return this._lastPeek=n,n}nextToken(){return this._tokens[this.index++]}atTerminator(n){return this.atBoundary||((n?.condition&&n.condition(this))??!1)}get atBoundary(){if(this.atEnd)return!0;let n=this.index;for(let i of this._boundaries)if(this.matchAll(i.tokens))return this.index=n,!0;return!1}addBoundary(n){this._boundaries.push({index:this.index,tokens:n})}removeBoundary(){this._boundaries.pop()}matchBoundary(){let n=this._boundaries[this._boundaries.length-1],i=n&&this.matchAll(n.tokens);return i&&this._boundaries.pop(),i}boundaryError(n){let i=this._boundaries[this._boundaries.length-1];return this._boundaries.pop(),this.error(n,i.index)}latex(n,i){return Se(this._tokens.slice(n,i))}latexAhead(n){return this.latex(this.index,this.index+n)}lookAhead(){let n=Math.min(this._dictionary.lookahead,this._tokens.length-this.index);if(n<=0)return[];let i=[];for(;n>0;)i.push([n,this.latexAhead(n--)]);return i}peekDefinitions(n){if(this.atEnd)return[];let i=[],t=[...this.getDefs(n)];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=Nl(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 n=!1;for(;this.match("<space>");)n=!0;return n&&this.skipSpace(),n}skipVisualSpace(){this.options.skipSpace&&(this.skipSpace(),["\\!","\\,","\\:","\\;","\\enskip","\\enspace","\\space","\\quad","\\qquad"].includes(this.peek)&&(this.nextToken(),this.skipVisualSpace()),this.skipSpace())}match(n){return this._tokens[this.index]===n?(this.index++,!0):!1}matchAll(n){if(Array.isArray(n),n.length===0)return!1;let i=!0,t=0;do i=this._tokens[this.index+t]===n[t++];while(i&&t<n.length);return i&&(this.index+=t),i}matchAny(n){return n.includes(this._tokens[this.index])?this._tokens[this.index++]:""}matchChar(){let n=this.index,i=0;for(;this.match("^");)i+=1;if(i<2&&(this.index=n),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=n,null}matchDelimiter(n,i){if(this.peek==="[")return!1;if(Array.isArray(n))return Array.isArray(i),this.matchAll(n)?(this.addBoundary(i),!0):!1;let t=this.index,r=lt[this.peek];return r&&this.nextToken(),n==="||"&&this.matchAll(["|","|"])?(this.addBoundary(["|","|"]),!0):this.match(n)?(this.addBoundary(r?[r,i]:[i]),!0):(this.index=t,!1)}parseGroup(){let n=this.index;if(this.skipSpaceTokens(),this.match("<{>")){this.addBoundary(["<}>"]);let i=this.parseExpression();if(this.skipSpace(),this.matchBoundary())return i??["Sequence"];let t=this.index;for(;!this.matchBoundary()&&!this.atEnd;)this.nextToken();let r=this.error("syntax-error",t);return i?["Sequence",i,r]:r}return this.index=n,null}parseToken(){if([...'!"#$%&(),/;:?@[]\\`|~'.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}parseOptionalGroup(){let n=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=n,null}parseTabular(){let n=[],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),n.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&&n.push(i),n}parseStringGroup(){let n=this.index;for(;this.match("<space>"););if(this.match("<{>")){this.addBoundary(["<}>"]);let i=this.parseStringGroupContent();if(this.matchBoundary())return i;this.removeBoundary()}return this.index=n,null}parseEnvironment(n){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,n);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 n=!!this.matchAny(["-","\u2212"]);for(;this.matchAny(["+","\uFE62"])||this.skipSpace();)this.matchAny(["-","\u2212"])&&(n=!n);return n?"-":"+"}parseDecimalDigits(n){n??(n={}),n.withGrouping??(n.withGrouping=!1);let i=[],t=!1;for(;!t;){for(;/^[0-9]$/.test(this.peek);)i.push(this.nextToken()),this.skipVisualSpace();if(t=!0,n.withGrouping&&this.options.groupSeparator){let r=this.index;this.skipVisualSpace(),this.matchAll(this._groupSeparatorTokens)&&(this.skipVisualSpace(),/^[0-9]$/.test(this.peek)?t=!1:this.index=r)}}return i.join("")}parseSignedInteger(n){n??(n={}),n.withGrouping??(n.withGrouping=!1);let i=this.index,t=this.parseOptionalSign(),r=this.parseDecimalDigits(n);return r?t==="-"?"-"+r:r:(this.index=i,"")}parseExponent(){let n=this.index;if(this.matchAny(["e","E"])){let i=this.parseSignedInteger({withGrouping:!1});if(i)return i}if(this.index=n,this.match("\\times")&&(this.skipSpaceTokens(),this.match("1")&&this.match("0")&&this.match("^"))){if(/^[0-9]$/.test(this.peek))return this.nextToken();if(this.match("<{>")){this.skipSpaceTokens();let i=this.parseSignedInteger();if(this.skipSpaceTokens(),this.match("<}>")&&i)return i}}if(this.index=n,this.skipSpaceTokens(),this.match("\\%"))return"-2";if(this.index=n,this.matchAll(this._exponentProductTokens)&&(this.skipSpaceTokens(),this.matchAll(this._beginExponentMarkerTokens))){this.skipSpaceTokens();let i=this.parseSignedInteger();if(this.skipSpaceTokens(),this.matchAll(this._endExponentMarkerTokens)&&i)return i}return this.index=n,""}parseRepeatingDecimal(){let n=this.index,i="";return this.match("(")?(i=this.parseDecimalDigits(),i&&this.match(")")?"("+i+")":(this.index=n,"")):(this.index=n,this.matchAll(["\\left","("])?(i=this.parseDecimalDigits(),i&&this.matchAll(["\\right",")"])?"("+i+")":(this.index=n,"")):(this.index=n,this.matchAll(["\\overline","<{>"])?(i=this.parseDecimalDigits(),i&&this.match("<}>")?"("+i+")":(this.index=n,"")):(this.index=n,this.matchAll(this._beginRepeatingDigitsTokens)?(i=this.parseDecimalDigits(),i&&this.matchAll(this._endRepeatingDigitsTokens)?"("+i+")":(this.index=n,"")):(this.index=n,""))))}parseNumber(){if(this.options.parseNumbers===!1||this.options.parseNumbers==="never")return null;let n=this.index;this.skipVisualSpace(),this.match("+");let i="",t="",r=!1;if(this.match(".")||this.matchAll(this._decimalMarkerTokens)){let u=this.peek;(u==="\\overline"||u===this._beginRepeatingDigitsTokens[0]||/[0-9\(]/.test(u))&&(r=!0,i="0")}else i=this.parseDecimalDigits({withGrouping:!0});if(!i)return this.index=n,null;let o=!0;r||this.match(".")||this.matchAll(this._decimalMarkerTokens)?t=this.parseDecimalDigits({withGrouping:!0}):o=!1;let s=!1;if(o){let u=this.parseRepeatingDecimal();u?(t+=u,s=!0):this.match("\\ldots")||this.matchAll(this._truncationMarkerTokens)}this.skipVisualSpace();let a=this.parseExponent();if(!s&&this.options.parseNumbers==="rational"){let u=parseInt(i,10);if(!t)return a?["Multiply",u,["Power",10,a]]:u;let l=parseInt(t,10),f=t.length,d=u*Math.pow(10,f)+l,c=Math.pow(10,f);return a?["Multiply",["Rational",d,c],["Power",10,a]]:["Rational",d,c]}return{num:i+(o?"."+t:"")+(a?"e"+a:"")}}matchLatexNumber(n=!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"],n=!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"],n=!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(!n&&this.match("."))for(s+=".";o.includes(this.peek);)s+=this.nextToken();let a=n?Number.parseInt(s,r):Number.parseFloat(s);return Number.isNaN(a)?null:i?-a:a}parsePrefixOperator(n){n||(n={minPrec:0}),n.minPrec||(n={...n,minPrec:0});let i=this.index;for(let[t,r]of this.peekDefinitions("prefix")){this.index=i+r;let o=t.parse(this,n);if(o)return o}return this.index=i,null}parseInfixOperator(n,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,n,i);if(s)return s}return this.index=t,null}parseArguments(n="enclosure",i){if(this.atTerminator(i))return null;let t=this.index,r=this.parseEnclosure();if(n==="enclosure")return r===null?null:Hn(r)??[];if(n==="implicit"){if(y(r)==="Delimiter")return Hn(r)??[];if(r!==null)return[r];let o=this.parseExpression({...i,minPrec:390});return o===null?null:[o]}return this.index=t,null}matchOpenDelimiter(n,i){let t=this.index,r=lt[this.peek];r&&this.nextToken();let o=El[n]??[n],s=r?[r]:[];return o.includes("||")&&this.matchAll(["|","|"])?(s.push("|"),s.push("|"),s):o.includes(this.peek)?(ft[n]===i?s.push(ft[this.peek]):s.push(i),this.nextToken(),s):(this.index=t,null)}matchEnclosureOpen(){let n=this.getDefs("matchfix"),i=this.index;for(let t of n){if(this.index=i,Array.isArray(t.openDelimiter)){if(this.matchAll(t.openDelimiter))return Se(t.closeDelimiter);continue}let r=this.matchOpenDelimiter(t.openDelimiter,t.closeDelimiter);if(r!==null)return Se(r)}return this.index=i,null}matchEnclosureClose(){let n=this.getDefs("matchfix"),i=this.index;for(let t of n){if(this.index=i,Array.isArray(t.closeDelimiter)){if(this.matchAll(t.closeDelimiter))return Se(t.openDelimiter);continue}this.index=i;let r=this.peek,o=Object.keys(lt).find(u=>lt[u]===r);o&&this.nextToken();let s=[];r=this.peek;let a=Object.keys(ft).find(u=>ft[u]===r);if(a&&(s=[a]),o&&(s=[o,...s]),s.length>0)return this.nextToken(),Se(s)}return this.index=i,null}parseEnclosure(){let n=this.getDefs("matchfix"),i=this.index;for(let t of n){if(this.index=i,!this.matchDelimiter(t.openDelimiter,t.closeDelimiter))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(n){if(this.atTerminator(n))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,n),t!==null)return t}else return o.name;return this.index=i,null}parseFunction(n){if(this.atTerminator(n))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,n),t!==null)return t}else{t=o.name;break}if(t===null&&(this.index=i,t=Wn(this),!this.isFunctionHead(t)))return this.index=i,null;do{let o=this.parsePostfixOperator(t,n);if(o===null)break;t=o}while(!0);let r=this.parseArguments("enclosure",n);return r===null?t:typeof t=="string"?[t,...r]:["Apply",t,...r]}parseSymbol(n){if(this.atTerminator(n))return null;let i=this.index;for(let[r,o]of this.peekDefinitions("symbol"))if(this.index=i+o,typeof r.parse=="function"){let s=r.parse(this,n);if(s)return s}else return r.name;this.index=i;let t=Wn(this);return t===null?null:this.options.parseUnknownIdentifier?.(t,this)==="symbol"?t:(this.index=i,null)}parseSupsub(n){if(this.atEnd)return n;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,n;let s=n;if(r.length>0){let a=[...this.getDefs("infix")].filter(u=>u.latexTrigger==="_");if(a){let u=["Subscript",s,r.length===1?r[0]:["List",...r]];for(let l of a)if(typeof l.parse=="function"?s=l.parse(this,u,{minPrec:0}):s=u,s)break}}if(t.length>0){let a=[...this.getDefs("infix")].filter(u=>u.latexTrigger==="^");if(a){let u=t.filter(l=>y(l)!=="Sequence");if(u.length!==0){let l=u.length===1?u[0]:["List",...u],f=["Superscript",s,l];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(n,i){if(n===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,n,i);if(s!==null)return s}return this.index=t,null}parseStringGroupContent(){let n=this.index,i="",t=0;for(;!this.atBoundary||t>0;){let r=this.nextToken();if(r==="<$>"||r==="<$$>")return this.index=n,"";r==="<{>"?(t+=1,i+="\\{"):r==="<}>"?(t-=1,i+="\\}"):r==="<space>"?i+=" ":(r[0],i+=r)}return i}applyInvisibleOperator(n,i){if(i===null||this.options.applyInvisibleOperator===null||y(i)==="Error"||L(i)==="Nothing"||W(i)||this.atTerminator(n)||this.peekDefinitions("operator").length>0)return null;if(this.isFunctionHead(i)){let s=this.parseArguments("enclosure",{...n,minPrec:0});return s===null?null:[i,...s]}let t=this.index,r=this.parseExpression({...n,minPrec:390});if(r===null||L(r)==="Nothing"||W(r))return this.index=t,null;if(y(r)==="Error")return Ve("Sequence",i,r);if(typeof this.options.applyInvisibleOperator=="function")return this.options.applyInvisibleOperator(this,i,r);if(this.isFunctionHead(i)){let s=Hn(r);return s?[i,...s]:i}let o=T(i);if(o!==null&&Number.isInteger(o)){let s=y(r);if(s==="Divide"||s==="Rational"){let[a,u]=[T(m(r,1)),T(m(r,2))];if(a!==null&&u!==null&&a>0&&a<=1e3&&u>1&&u<=1e3&&Number.isInteger(a)&&Number.isInteger(u))return["Add",i,r]}}if(y(r)==="Delimiter"){if(y(m(r,1))==="Sequence")return[i,...w(m(r,1))??[]];if(!m(r,1)||L(m(r,1))==="Nothing")return Ve("Sequence",i,this.error("expected-expression",t))}return y(r)==="Sequence"||y(i)==="Sequence"||J(i)!==null||J(r)!==null||en(i)!==null||en(r)!==null?Ve("Sequence",i,r):Ve("Multiply",i,r)}parseUnexpectedLatexCommand(){let n=this.index,i=this.peekDefinitions("operator");if(i.length>0){if(i=this.peekDefinitions("postfix"),i.length>0){let[a,u]=i[0];if(this.index+=u,typeof a.parse=="function"){let l=a.parse(this,this.error("missing",n));if(l)return l}return a.name?[a.name,this.error("missing",n)]:this.error("unexpected-operator",n)}if(i=this.peekDefinitions("prefix"),i.length>0){let[a,u]=i[0];if(this.index+=u,typeof a.parse=="function"){let l=a.parse(this,{minPrec:0});if(l)return l}return a.name?[a.name,this.parseExpression()??this.error("missing",n)]:this.error("unexpected-operator",n)}if(i=this.peekDefinitions("infix"),i.length>0){let[a,u]=i[0];if(this.peek==="^")return this.index+=1,["Superscript",this.error("missing",n),j(this.parseGroup())];if(this.index+=u,typeof a.parse=="function"){let l=a.parse(this,this.error("missing",n),{minPrec:0});if(l)return l}return a.name?[a.name,this.error("missing",n),this.parseExpression()??this.error("missing",n)]:this.error("unexpected-operator",n)}}let t=this.peek;if(!t||t[0]!=="\\")return null;if(this.nextToken(),this.skipSpaceTokens(),t==="\\end"){let a=this.parseStringGroup();return a===null?this.error("expected-environment-name",n):this.error(["unbalanced-environment",{str:a}],n)}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("]")}let r=this.index;this.index=n;let o=this.matchEnclosureOpen();if(o)return this.error(["expected-close-delimiter",{str:o}],r);let s=this.matchEnclosureClose();if(s)return this.error(["expected-open-delimiter",{str:s}],n);for(this.index=r;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:t}],n)}parsePrimary(n){if(this.atBoundary||this.atTerminator(n))return null;let i=null,t=this.index;if(this.match("<}>"))return this.error("unexpected-closing-delimiter",t);if(this.match("<{>")){if(i=this.parseExpression({minPrec:0,condition:r=>r.peek==="<}>"}),i===null)return this.error("expected-expression",t);if(!this.match("<}>"))return this.decorate(["Sequence",i,this.error("expected-closing-delimiter",t)],t)}if(i??(i=this.parseNumber()),i??(i=this.parseEnclosure()),i??(i=this.parseEnvironment(n)),i===null&&this.matchAll(this._positiveInfinityTokens)&&(i={num:"+Infinity"}),i===null&&this.matchAll(this._negativeInfinityTokens)&&(i={num:"-Infinity"}),i===null&&this.matchAll(this._notANumberTokens)&&(i={num:"NaN"}),i??(i=this.parseGenericExpression(n)??this.parseFunction(n)??this.parseSymbol(n)??ms(this)),i!==null){i=this.decorate(i,t);let r=null,o=this.index;do{if(r=this.parsePostfixOperator(i,n),i=r??i,this.index===o&&r!==null){this.index;break}o=this.index}while(r!==null)}return i!==null&&(i=this.parseSupsub(i)),this.decorate(i,t)}parseExpression(n){let i=this.index;if(this.skipSpace(),this.atBoundary)return this.index=i,null;n??(n={minPrec:0}),n.minPrec,n.minPrec===void 0&&(n={...n,minPrec:0});let t=this.parsePrefixOperator({...n,minPrec:0});if(t===null&&(t=this.parsePrimary(n),y(t)==="Sequence"&&Q(t)===0&&(t=null)),t){let r=!1;for(;!r&&!this.atTerminator(n);){this.skipSpace();let o=this.parseInfixOperator(t,n);o===null&&(o=this.applyInvisibleOperator(n,t)),o!==null?t=o:r=!0}}return t??(t=this.parseUnexpectedLatexCommand()),this.decorate(t,i)}decorate(n,i){if(n===null)return null;if(!this.options.preserveLatex)return n;let t=this.latex(i,this.index);return Array.isArray(n)?n={latex:t,fn:n}:typeof n=="number"?n={latex:t,num:Number(n).toString()}:typeof n=="string"?n={latex:t,sym:n}:typeof n=="object"&&n!==null&&(n.latex=t),n}error(n,i){let t;typeof n=="string"?(n.startsWith("'"),t={str:n}):(n[0].startsWith("'"),t=["ErrorCode",{str:n[0]},...n.slice(1)]);let r=this.latex(i,this.index);return r?["Error",t,["LatexString",{str:r}]]:["Error",t]}isFunctionHead(n){if(n===null)return!1;let i=L(n);return i?this.computeEngine?.lookupFunction(i)!==void 0||this.options.parseUnknownIdentifier?.(i,this)==="function":!1}*getDefs(n){if(n==="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===n&&(yield i)}};function Nl(e,n){let i=e.index,t=Wn(e)?.trim();if(t===null)return 0;let r=t!==n?0:e.index-i;return e.index=i,r}function ps(e,n){let i=e.length,t=e;if(n.beginRepeatingDigits&&n.endRepeatingDigits){e=e.slice(0,-1);for(let o=0;o<e.length-16;o++){let s=e.substring(0,o);for(let a=0;a<17;a++){let u=e.substring(o,o+a+1),l=Math.floor((e.length-s.length)/u.length);if(l<=3)break;if((s+u.repeat(l+1)).startsWith(e))return u==="0"?s.replace(/(\d{3})/g,"$1"+n.groupSeparator):s.replace(/(\d{3})/g,"$1"+n.groupSeparator)+n.beginRepeatingDigits+u+n.endRepeatingDigits}}}let r=i>n.precision-1;return e=t,r&&(e=e.substring(0,n.precision-1)),n.groupSeparator&&(e=e.replace(/(\d{3})/g,"$1"+n.groupSeparator),e.endsWith(n.groupSeparator)&&(e=e.slice(0,-n.groupSeparator.length))),r?e+n.truncationMarker:e}function gs(e,n){return e?n.beginExponentMarker?n.beginExponentMarker+e+(n.endExponentMarker??""):"10^{"+e+"}":""}function hs(e,n){if(e===null)return"";let i;if(typeof e=="number"||typeof e=="string")i=e;else if(typeof e=="object"&&"num"in e)i=e.num;else return"";if(typeof i=="number"){if(i===1/0)return n.positiveInfinity;if(i===-1/0)return n.negativeInfinity;if(Number.isNaN(i))return n.notANumber;let o;return n.notation==="engineering"?o=ct(i.toExponential(),n,3):n.notation==="scientific"&&(o=ct(i.toExponential(),n)),o??Er(i.toString(),n)}if(i=i.toLowerCase().replace(/[\u0009-\u000d\u0020\u00a0]/g,""),i==="infinity"||i==="+infinity")return n.positiveInfinity;if(i==="-infinity")return n.negativeInfinity;if(i==="nan")return n.notANumber;if(!/^[-+\.]?[0-9]/.test(i))return"";if(i=i.replace(/[nd]$/,""),/\([0-9]+\)/.test(i)){let[o,s,a,u]=i.match(/(.+)\(([0-9]+)\)(.*)$/)??[];i=s+a.repeat(Math.ceil(n.precision/a.length))+u}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 n.notation==="engineering"?r=ct(i,n,3):n.notation==="scientific"&&(r=ct(i,n)),t+(r??Er(i,n))}function ct(e,n,i=1){let t=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/);if(!t){let f="";if(e[0]==="-"?(f="-",e=e.substring(1)):e[0]==="+"&&(e=e.substring(1)),e.indexOf(".")<0)e.length===1?e=f+e+"e+0":e=f+e[0]+"."+e.slice(1)+"e+"+(e.length-1).toString();else{let[d,c,p]=e.match(/^(.*)\.(.*)$/);for(p||(p="");c.startsWith("0");)c=c.substring(1);c?e=f+c[0]+"."+c.slice(1)+p+"e+"+(c.length-1).toString():e=f+"0."+p+"e+0"}t=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/)}if(!t)return Er(e,n);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,p]=o.match(/^(.*)\.(.*)$/)??["",o,""];o=c+(p+"00000000000000000").slice(0,Math.abs(f))+"."+p.slice(Math.abs(f))}let s=n.avoidExponentsInRange;if(s&&r>=s[0]&&r<=s[1])return;let a="",u=o;t=u.match(/^(.*)\.(.*)$/),t&&(u=t[1],a=t[2]);let l=r!==0?gs(Number(r).toString(),n):"";return n.groupSeparator&&(u=u.replace(/\B(?=(\d{3})+(?!\d))/g,n.groupSeparator),a=ps(a,n)),a&&(a=n.decimalMarker+a),l?u==="1"&&!a?l:u+a+n.exponentProduct+l:u+a}function Er(e,n){let i=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/i),t;i?.[1]&&i[2]&&(t=gs(i[2],n));let r=i?.[1]??e,o="";return i=(t?i[1]:e).match(/^(.*)\.(.*)$/),i?.[1]&&i[2]&&(r=i[1],o=i[2]),n.groupSeparator&&(r=r.replace(/\B(?=(\d{3})+(?!\d))/g,n.groupSeparator),o=ps(o,n)),o&&(o=n.decimalMarker+o),t?r==="1"&&!o?t:r+o+n.exponentProduct+t:r+o}var vr={deg:e=>`${e}\\degree`,prime:e=>`${e}^{\\prime}`,dprime:e=>`${e}^{\\doubleprime}`,ring:e=>`\\mathring{${e}}`,hat:e=>`\\hat{${e}}`,tilde:e=>`\\tilde{${e}}`,vec:e=>`\\vec{${e}}`,bar:e=>`\\overline{${e}}`,underbar:e=>`\\underline{${e}}`,dot:e=>`\\dot{${e}}`,ddot:e=>`\\ddot{${e}}`,tdot:e=>`\\dddot{${e}}`,qdot:e=>`\\ddddot{${e}}`,acute:e=>`\\acute{${e}}`,grave:e=>`\\grave{${e}}`,breve:e=>`\\breve{${e}}`,check:e=>`\\check{${e}}`},_r={upright:e=>`\\mathrm{${e}}`,italic:e=>`\\mathit{${e}}`,bold:e=>`\\mathbf{${e}}`,script:e=>`\\mathscr{${e}}`,fraktur:e=>`\\mathfrak{${e}}`,doublestruck:e=>`\\mathbb{${e}}`,blackboard:e=>`\\mathbb{${e}}`,calligraphic:e=>`\\mathcal{${e}}`,gothic:e=>`\\mathfrak{${e}}`,sansserif:e=>`\\mathsf{${e}}`,monospace:e=>`\\mathtt{${e}}`},mt=class{constructor(n,i,t){this.level=-1;this.options=n,n.invisibleMultiply&&(!/#1/.test(n.invisibleMultiply)||!/#2/.test(n.invisibleMultiply))&&t([{severity:"warning",message:["expected-argument","invisibleMultiply"]}]),this.onError=t,this.dictionary=i,this.canonical=void 0}updateOptions(n){for(let i of Object.keys(this.options))i in n&&(this.options[i]=n[i])}wrap(n,i){if(n===null)return"";if(i===void 0)return this.wrapString(this.serialize(n),this.options.groupStyle(n,this.level+1));if(typeof n=="number"||Un(n)||typeof n=="string"||hi(n))return this.serialize(n);let t=y(n);if(typeof t=="string"&&t!=="Delimiter"&&t!=="Subscript"){let r=this.dictionary.ids.get(t);if(r&&(r.kind==="symbol"||r.kind==="prefix"||r.kind==="infix"||r.kind==="postfix")&&r.precedence<i)return this.wrapString(this.serialize(n),this.options.applyFunctionStyle(n,this.level))}return this.serialize(n)}wrapShort(n){if(n===null)return"";let i=this.serialize(n);if(L(n)!==null||y(n)==="Delimiter"&&Q(n)===1||Sn(n)&&!/^(-|\.)/.test(i))return i;let r=y(n);return r!=="Add"&&r!=="Negate"&&r!=="Subtract"&&r!=="PlusMinus"&&r!=="Multiply"?i:this.wrapString(i,this.options.groupStyle(n,this.level+1))}wrapString(n,i,t){if(i==="none")return n;t===void 0&&(t="()");let r=t?.[0]??".",o=t?.[1]??".";return(r==="."||o===".")&&i==="paren"&&(i="leftright"),i==="leftright"?`\\left${r}${n}\\right${o}}`:i==="big"?`${r==="."?"":`\\Bigl${r}`}${n}${o==="."?"":`\\Bigr${o}`})`:r+n+o}wrapArguments(n){return this.wrapString((w(n)??[]).map(i=>this.serialize(i)).join(", "),this.options.applyFunctionStyle(n,this.level))}serializeSymbol(n,i){return typeof n=="string"||hi(n),i?.kind==="function"?Nr(L(n)??"")??"":i?.serialize?.(this,n)??Nr(L(n))??""}serializeFunction(n,i){if(i?.serialize)return i.serialize(this,n);let t=y(n);if(typeof t=="string")return Nr(t,"auto")+this.wrapArguments(n);if(y(t)==="InverseFunction"||y(t)==="Derivative")return this.serializeFunction(t,this.dictionary.ids.get(y(t)))+this.wrapArguments(n);let r=w(n)??[];if(r.length===1)return N([this.serialize(r[0]),"\\rhd",this.wrapString(this.serialize(t),this.options.applyFunctionStyle(n,this.level))]);let o=this.options.applyFunctionStyle(n,this.level);return N(["\\operatorname{apply}",this.wrapString(this.serialize(t)+", "+this.serialize(["List",...r]),o)])}serializeDictionary(n){return`\\left\\lbrack\\begin{array}{lll}${Object.keys(n).map(i=>`\\textbf{${i}} & \\rightarrow & ${this.serialize(n[i])}`).join("\\\\")}\\end{array}\\right\\rbrack`}serialize(n,i){if(n==null)return"";i??(i={}),i={...i},"canonical"in i||(i.canonical=!0);let t=this.canonical;this.canonical===void 0&&(this.canonical=i.canonical),this.level+=1;try{let r=(()=>{let o=hs(n,this.options);if(o)return o;let s=J(n);if(s!==null)return`\\text{${s}}`;let a=en(n);if(a!==null)return this.serializeDictionary(a);let u=L(n);if(u!==null)return this.serializeSymbol(n,this.dictionary.ids.get(u));let l=Lo(n);if(l)return this.serializeFunction(n,this.dictionary.ids.get(l));if(y(n)!==null)return this.serializeFunction(n);this.onError([{severity:"warning",message:["syntax-error",n?JSON.stringify(n):"undefined"]}])})();return this.level-=1,this.canonical=t,r??""}catch{}return this.level-=1,this.canonical=t,""}applyFunctionStyle(n,i){return this.options.applyFunctionStyle(n,i)}groupStyle(n,i){return this.options.groupStyle(n,i)}rootStyle(n,i){return this.options.rootStyle(n,i)}fractionStyle(n,i){return this.options.fractionStyle(n,i)}logicStyle(n,i){return this.options.logicStyle(n,i)}powerStyle(n,i){return this.options.powerStyle(n,i)}numericSetStyle(n,i){return this.options.numericSetStyle(n,i)}};function vl(e){let n=e.match(/^([^_]+)/)?.[1]??"",i=$e.findIndex(s=>n===s[0]);if(i>=0)return[$e[i][1],e.substring($e[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=>e.startsWith(s)),i>=0){let s=Object.keys(t)[i];return[t[s],e.substring(s.length)]}let r=e.codePointAt(0);if(i=$e.findIndex(s=>s[2]===r),i>=0)return[$e[i][1],e.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=>n===s),i>=0){let s=Object.keys(o)[i];return[o[s],e.substring(s.length)]}return[n,e.substring(n.length)]}function _l(e){let[n,i]=vl(e),t=[];for(;i.length>0;){let o=i.match(/^_([a-zA-Z]+)(.*)/);if(!o||!vr[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||!_r[o[1]])break;r.push(o[1]),i=o[2]}return[n,t,r,i]}function pt(e,n=!0,i="auto"){let[t,r,o,s]=_l(e);for(let a of r)vr[a]&&(t=vr[a](t));if(n){let a=[],u=[],l=t.match(/^([^\d].*?)(\d+)$/);for(l&&(u.push(l[2]),t=l[1]);s.length>0;)if(s.startsWith("__")){let[f,d]=pt(s.substring(2),!1,"none");a.push(f),s=d}else if(s.startsWith("_")){let[f,d]=pt(s.substring(1),!1,"none");u.push(f),s=d}else break;a.length>0&&(t=`${t}^{${a.join(",")}}`),u.length>0&&(t=`${t}_{${u.join(",")}}`)}for(let a of o)_r[a]&&(t=_r[a](t));if(o.length===0&&i!=="none")switch(i){case"auto":ot(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 Nr(e,n="auto"){if(e===null)return null;if(Gn.test(e))return e;let i=e.match(/^(_+)(.*)/);if(i){let[o,s]=pt(i[2],!0,"none");return`\\operatorname{${"\\_".repeat(i[1].length)+o+s}}`}let[t,r]=pt(e,!0,n);return r.length>0?`\\operatorname{${e}}`:t}var Sl={invisibleMultiply:"",invisiblePlus:"",multiply:"\\times",missingSymbol:"\\blacksquare",applyFunctionStyle:Ro,groupStyle:qo,rootStyle:gn,fractionStyle:at,logicStyle:Vo,powerStyle:$o,numericSetStyle:zo},Ei=class e{constructor(n){let i=r=>{if(typeof window<"u")for(let o of r)console.warn(o.message)};this.onError=n.onError??i,this.computeEngine=n.computeEngine;let t={...n};delete t.dictionary,delete t.onError,this.options={...br,...yr,...Sl,...t},this._dictionaryInput=n.dictionary??e.getDictionary(),this._dictionary=hr(this._dictionaryInput,r=>this.onError([r]))}get dictionary(){return this._dictionaryInput}set dictionary(n){this._dictionaryInput=n,this._dictionary=hr(n,i=>this.onError([i]))}updateOptions(n){for(let i of Object.keys(this.options))i in n&&(this.options[i]=n[i]);this.serializer.updateOptions(n)}static getDictionary(n="all"){if(n==="all"){let i=[];for(let t of Object.keys(Jn))Jn[t]&&i.push(...Jn[t]);return i}return Jn[n]?Object.freeze([...Jn[n]]):[]}parse(n){let i=new dt(R(n,[]),this.options,this._dictionary,this.computeEngine),t=i.parseExpression();if(!i.atEnd){let r=i.peekDefinitions("infix");if(r.length>0){let c=i.index,[p,x]=r[0];i.index+=x;let h=p.parse(i,t??i.error("missing",c),{minPrec:0});if(h)return h;if(p.name)return[p.name,t??i.error("missing",c),i.error("missing",c)];i.index=c}let o=i.index,s=Wn(i);if(s){let c=i.error(["unexpected-identifier",s],o);return t?["Sequence",t,c]:c}let a=i.peek,u=i.matchEnclosureOpen();if(u){i.parseExpression(),i.match(u);let c=i.error(["unexpected-open-delimiter",{str:a}],o);return t?["Sequence",t,c]:c}if(a=i.matchEnclosureClose(),a){let c=i.error(["expected-open-delimiter",{str:a}],o);return t?["Sequence",t,c]:c}let l=i.index,f=i.nextToken();for(;!i.atEnd;)i.nextToken();if(!f)return i.error("syntax-error",l);let d=i.error([f.length>1&&f.startsWith("\\")?"unexpected-command":"unexpected-token",{str:Se([f])}],l);t=t?["Sequence",t,d]:d}return t??(t=["Sequence"]),this.options.preserveLatex&&(Array.isArray(t)?t={latex:n,fn:t}:typeof t=="number"?t={latex:n,num:Number(t).toString()}:typeof t=="string"?t={latex:n,sym:t}:typeof t=="object"&&t!==null&&(t.latex=n)),t??["Sequence"]}serialize(n,i){return this.serializer.serialize(n,i)}get serializer(){return this._serializer?this._serializer:(this._serializer=new mt(this.options,this._dictionary,this.onError),this._serializer)}};var Ds=se(te());var gt=se(te());function Sr(e,n,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:u=1e6,breaktol:l=2}=i;if(!isFinite(n))return Sr(I=>e(1/I),1/n,{rtol:a,atol:s,maxeval:u,contract:Math.abs(t)>1?1/t:t,step:1/r,power:o});let f=r,d=Math.pow(1/t,o),c=e(n+f),p=[c],x=1/0,h=1;for(;h<u;){h+=1,f*=t,p.push(e(n+f));let I=d,C=1/0;for(let V=p.length-2;V>=0;V--){let z=p[V];p[V]=p[V+1]+(p[V+1]-p[V])/(I-1);let ie=Math.abs(p[V]-z);C=Math.min(C,ie),ie<x&&(c=p[V],x=ie),I*=d}if(C>l*x||!isFinite(C)||x<=Math.max(a*Math.abs(c),s))break}return[c,x]}var ys=53,Bn=Math.log10(Math.pow(2,ys)),Il=7,oc=Math.pow(2,-(ys-Il)),Ni=Math.pow(10,-10),Yn=1e6,Ir=1e6,ht=200;var Br=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]),Es=7919;function Dr(e){if(Number.isInteger(e)&&e>=0&&e<Number.MAX_SAFE_INTEGER,e<=3)return{[e]:1};let n={},i=0;for(;e%2===0;)i+=1,e/=2;for(i>0&&(n[2]=i),i=0;e%3===0;)i+=1,e/=3;i>0&&(n[3]=i);let t=!1;for(;!t;){if(e===1)return n;let r=Math.sqrt(e);t=!0;for(let o=6;o<=r+6;o+=6){if(e%(o-1)===0){n[o-1]=(n[o-1]??0)+1,e/=o-1,t=!1;break}if(e%(o+1)===0){n[o+1]=(n[o+1]??0)+1,e/=o+1,t=!1;break}}}return n[e]!==void 0?n[e]+=1:n[e]=1,n}function rn(e,n){if(e>=Number.MAX_SAFE_INTEGER)return[1,e];Number.isInteger(e)&&e>0&&e<Number.MAX_SAFE_INTEGER;let i=Dr(e),t=1,r=1;for(let o of Object.keys(i)){let s=parseInt(o);t=t*Math.pow(s,Math.floor(i[o]/n)),r=r*Math.pow(s,i[o]%n)}return[t,r]}function vi(e,n){if(e===0)return n;if(n===0||e===n)return e;if(!Number.isInteger(e)||!Number.isInteger(n))return NaN;for(;n!==0;)[e,n]=[n,e%n];return e<0?-e:e}function Ns(e,n){return e*n/vi(e,n)}function xt(e){if(!Number.isInteger(e)||e<0)return NaN;let n=1;for(let i=2;i<=e;i++)n=n*i;return n}function vs(e){if(!Number.isInteger(e)||e<0)return NaN;if(e<0)return NaN;if(e<=1)return 1;let n=e;for(;e>2;)e-=2,n*=e;return n}var xs=7,bs=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23];function _i(e){if(e<0)return NaN;let n=Math.PI,i=e*e*e;return e*Math.log(e)-e-.5*Math.log(e)+.5*Math.log(2*n)+1/(12*e)-1/(360*i)+1/(1260*i*e*e)}function Qn(e){if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*Qn(1-e));if(e>100)return Math.exp(_i(e));e-=1;let n=bs[0];for(let t=1;t<xs+2;t++)n+=bs[t]/(e+t);let i=e+xs+.5;return Math.sqrt(2*Math.PI)*Math.pow(i,e+.5)*Math.exp(-i)*n}function bt(e,n=10){let i=0;for(let t=0;t<e.length;t++){let r={" ":-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}[e[t]];if(r!==-1){if(r===void 0)return[i,e.substring(t)];if(r>=n)return[i,e.substring(t)];i=i*n+r}}return[i,""]}function b(e){let n=e.numericValue;if(n===null)return null;if(typeof n=="number")return n;if(n instanceof E)return n.toNumber();if(Array.isArray(n)){let[i,t]=n;return typeof i=="number"&&typeof t=="number"?i/t:Number(i)/Number(t)}return!(n instanceof gt.Complex)||n.im,null}function Dn(e){let n=e.numericValue;if(n===null)return null;if(n instanceof E)return n;if(typeof n=="number")return e.engine.bignum(n);if(Array.isArray(n)){let[i,t]=n;return typeof i=="number"&&typeof t=="number"?e.engine.bignum(i/t):e.engine.bignum(i).div(t.toString())}return!(n instanceof gt.Complex)||n.im,null}function k(e){let n=e.numericValue;if(n===null)return null;if(typeof n=="number")return Number.isInteger(n)&&n>=-Yn&&n<=Yn?n:null;if(n instanceof E){if(n.isInteger()){let t=n.toNumber();if(t>=-Yn&&t<=Yn)return t}return null}if(e.isCanonical)return null;let i=n;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>=-Yn&&o<=Yn?o:null}return null}function kn(e,n){return typeof e=="number"&&Math.abs(e)<=n||e instanceof E&&e.abs().lte(n)||e instanceof gt.Complex&&Math.abs(e.re)<=n&&Math.abs(e.im)<=n?0:e}function kr(e){let n=.254829592,i=-.284496736,t=1.421413741,r=-1.453152027,o=1.061405429,s=.3275911,a=e<0?-1:1;e=Math.abs(e);let u=1/(1+s*e),l=((((o*u+r)*u+t)*u+i)*u+n)*u;return a*(1-l*Math.exp(-e*e))}function _s(e){let n=Math.PI,i=n*n,t=i*n,r=e*e,o=e*r,s=o*r,a=s*r;return Math.sqrt(n)/2*(e+n/12*o+7*i/480*s+127*t/40320*a+4369*i*i/5806080*a*r+34807*t*i/182476800*a*r*r)}function Ss(e,n,i=.1){return(e(n-4*i)/280-4*e(n-3*i)/105+e(n-2*i)/5-4*e(n-i)/5+4*e(n+i)/5-e(n+2*i)/5+4*e(n+3*i)/105-e(n+4*i)/280)/i}function Is(e,n,i,t=1e5){let r=0;if(n===-1/0&&i===1/0)for(let o=0;o<t;o++){let s=Math.random(),a=Math.tan(Math.PI*(s-.5)),u=Math.PI*(1+a*a);r+=e(a)/u}else if(n===-1/0)for(let o=0;o<t;o++){let s=Math.random(),a=i-Math.log(1-s),u=1/(1-s);r+=e(a)/u}else if(i===1/0)for(let o=0;o<t;o++){let s=Math.random(),a=n+Math.log(s),u=1/s;r+=e(a)/u}else for(let o=0;o<t;o++)r+=e(n+Math.random()*(i-n));return r/t*(i-n)}function In(e,n,i=1){if(i===0){let o=In(e,n,-1),s=In(e,n,1);return o===void 0||s===void 0?NaN:Math.abs(o-s)>1e-5?NaN:(o+s)/2}let[t,r]=Sr(e,n,{step:i>0?1:-1});return t}function D(e){if(typeof e=="bigint")return e;if(e instanceof sr)return D(e.toString());let n=e.toString(),i=n.match(/([^\.]+)(?:\.([0-9]+))?e(.+)$/);return i&&(n=i[1]+(i[2]??"")+"0".repeat(parseInt(i[3])-(i[2]?i[2].length:0))),BigInt(n)}function Bs(e,n){for(;n!==BigInt(0);)[e,n]=[n,e%n];return e<0?-e:e}var Bl=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];function Dl(e){if(e<Number.MAX_SAFE_INTEGER){let f=Dr(Number(e)),d=new Map;for(let c of Object.keys(f))d.set(D(c),f[c]);return d}let n=e,i=new Map,t=0,r=0,o=0,s=BigInt(10);for(;n%s===BigInt(0);)t+=1,o+=1,n=n/s;for(s=BigInt(5);n%s===BigInt(0);)o+=1,n=n/s;for(s=BigInt(3);n%s===BigInt(0);)r+=1,n=n/s;for(s=BigInt(2);n%s===BigInt(0);)t+=1,n=n/s;t>0&&i.set("2",t),r>0&&i.set("3",r),o>0&&i.set("5",o),s=BigInt(7);let a="",u=0;for(;s*s<n;)n%s===BigInt(0)?(a||(a=s.toString()),i.set(a,(i.get(a)??0)+1),n=n/s):(s=s+Bl[u],a="",u=u<7?u+1:0);n!==BigInt(1)&&i.set(n.toString(),(i.get(n.toString())??0)+1);let l=new Map;for(let[f,d]of i)l.set(D(f),d);return l}function yt(e,n){let i=Dl(e),t=BigInt(1),r=BigInt(1),o=D(n);for(let[s,a]of i){let u=D(a);t=t*s**(u/o),r=r*s**(u%o)}return[t,r]}function Xn(e){return typeof e=="string"?e.startsWith("$")&&e.endsWith("$"):!1}function Kn(e){return typeof e=="string"&&e.startsWith("$")&&e.endsWith("$")?e.slice(1,-1):null}function Nt(e){if(e.symbol==="ImaginaryUnit")return 1;let n=e.numericValue;if(n!==null&&n instanceof Ds.Complex&&n.re===0)return n.im;if(e.head==="Negate"){let i=Nt(e.op1);return i===null?null:-i}if(e.head==="Multiply"&&e.nops===2){if(e.op1.symbol==="ImaginaryUnit")return b(e.op2);if(e.op2.symbol==="ImaginaryUnit")return b(e.op1)}return 0}function Si(e,n){if(e.symbol){n.add(e.symbol);return}if(e.head&&typeof e.head!="string"&&Si(e.head,n),e.ops)for(let i of e.ops)Si(i,n);if(e.keys)for(let i of e.keys)Si(e.getKey(i),n)}function Ii(e,n){if(e.symbol){let i=e.engine.lookupSymbol(e.symbol);if(i&&i.value!==void 0)return;let t=e.engine.lookupFunction(e.symbol);if(t&&(t.signature.evaluate||t.signature.N))return;n.add(e.symbol);return}if(e.head&&typeof e.head!="string"&&Ii(e.head,n),e.ops)for(let i of e.ops)Ii(i,n);if(e.keys)for(let i of e.keys)Ii(e.getKey(i),n)}function Bi(e,n){if(e.head,e.symbol){let i=e.engine.lookupSymbol(e.symbol);if(i&&i.value!==void 0)return;let t=e.engine.lookupFunction(e.symbol);if(t&&(t.signature.evaluate||t.signature.N))return;n.add(e.symbol);return}if(e.head&&typeof e.head!="string"&&Bi(e.head,n),e.ops)for(let i of e.ops)Bi(i,n);if(e.keys)for(let i of e.keys)Bi(e.getKey(i),n)}function Et(e,n){let i=!n||e.head===n?[e]:[];if(e.ops)for(let t of e.ops)i.push(...Et(t,n));else if(e.keys)for(let t of e.keys)i.push(...Et(e.getKey(t),n));return i}function O(e){return e.numericMode==="bignum"||e.numericMode==="auto"}function Z(e){return e.numericMode==="auto"||e.numericMode==="complex"}function de(e){let n=0;for(let i=0;i<e.length;i++)n=Math.imul(31,n)+e.charCodeAt(i)|0;return Math.abs(n)}function Tr(e,n){if(n==null)return null;if(typeof n=="number")return Number.isInteger(n)?D(n):null;if(Sn(n)){let t=(Un(n)?n.num.toString():n).toLowerCase().replace(/[nd]$/g,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,"");if(/\([0-9]+\)/.test(t)){let[r,o,s,a]=t.match(/(.+)\(([0-9]+)\)(.*)$/)??[];t=o+s.repeat(Math.ceil(e.precision/s.length))+(a??"")}return t==="nan"||t==="infinity"||t==="+infinity"||t==="-infinity"||t.includes(".")?null:D(t)}return null}function Di(e){let n=e.numericValue;return n===null?null:typeof n=="number"&&Number.isInteger(n)?D(n):n instanceof E&&n.isInteger()?D(n):null}function wr(e,n,i){let t=[];for(let r of n){let o=ks(r,e,i);o!==null&&t.push(o)}return t}function ei(e,n){let i=new Set;for(let[t,r,o]of n){let s,a=Kn(o?.condition);if(a){let u=e.pattern(a);s=l=>u.subs(l).value?.symbol==="True"}else s=o?.condition;i.add([e.pattern(t),e.pattern(r),o?.priority??0,s])}return i}function ks([e,n,i,t],r,o,s){let a=e.match(r,{substitution:o,...s});return a===null||typeof t=="function"&&!t(a)?null:n.subs(a,{canonical:!0})}function vt(e,n,i){let t=i?.iterationLimit??1,r=0,o=i?.once??!1,s=!1,a=!1;try{for(;!s&&r<t;){s=!0;for(let u of n){let l=ks(u,e,{},i);if(l!==null&&l!==e){if(o)return l;s=!1,a=!0,e=l}}r+=1}}catch(u){console.error(u)}return a?e:null}function Ts(e){let n=e.match(/^(__?_?[a-zA-Z0-9]+)/);return n===null?"":n[1]}var Ar=se(te());function Ti(e){if(e.head==="Power"&&e.op2.numericValue!==null){let n=k(e.op2);return n!==null&&n>0?n:1}if(e.head==="Multiply"){let n=1;for(let i of e.ops){let t=Ti(i);t>1&&(n=n+t)}return n}return 1}function Mr(e){if(e.head==="Power"&&e.op2.numericValue!==null){let n=k(e.op2);return n!==null&&n>0?n:1}if(e.head==="Multiply"){let n=1;for(let i of e.ops)n=Math.max(n,Ti(i));return n}return 1}function ki(e){return e.symbol?e.symbol:e.ops?(typeof e.head=="string"?e.head:ki(e.head))+'"'+e.ops.map(i=>ki(i)).filter(i=>i.length>0).join('"'):""}var Ze=1e5;function _t(e,n){return n.sort((i,t)=>{let r=ki(i),o=ki(t);if(!r&&!o)return Tn(i,t);if(!r)return 1;if(!o||r<o)return-1;if(r>o)return 1;let s=Ti(i),a=Ti(t);if(s!==a)return a-s;let u=Mr(i),l=Mr(t);return u!==l?u-l:Tn(i,t)})}function Tn(e,n){if(e===n||e.numericValue!==null&&e.numericValue===n.numericValue)return 0;let i=b(e);if(i!==null){let t=b(n);return t!==null?i-t:-1}if(e.numericValue instanceof Ar.Complex)return n.numericValue instanceof Ar.Complex?e.numericValue.re===n.numericValue.re?Math.abs(e.numericValue.im)===Math.abs(n.numericValue.im)?e.numericValue.im-n.numericValue.im:Math.abs(e.numericValue.im)-Math.abs(n.numericValue.im):e.numericValue.re-n.numericValue.re:n.numericValue!==null?1:-1;if(e.numericValue)return n.numericValue?1:-1;if(e.head==="Sqrt"&&e.op1.numericValue)return n.head==="Sqrt"&&n.op1.numericValue?Tn(e.op1,n.op1):-1;if(e.symbol)return n.symbol?e.symbol===n.symbol?0:e.symbol>n.symbol?1:-1:n.numericValue!==null?1:-1;if(e.ops){if(n.ops){let t=e.functionDefinition?.complexity??Ze,r=n.functionDefinition?.complexity??Ze;return t===r?typeof e.head=="string"&&typeof n.head=="string"?e.head===n.head?ni(e)-ni(n):e.head<n.head?1:-1:ni(e)-ni(n):t-r}return n.numericValue!==null||n.symbol?1:-1}if(e.string)return n.string?e.string.length!==n.string.length?n.string.length-e.string.length:n.string<e.string?-1:e.string>n.string?1:0:n.keys?-1:1;if(e.keys&&n.keys){if(e.keysCount!==n.keysCount)return n.keysCount-e.keysCount;let t=0,r=0;for(let o of n.keys)t+=n.getKey(o).complexity??Ze;for(let o of e.keys)r+=e.getKey(o).complexity??Ze;return r-t}return(e.complexity??Ze)-(n.complexity??Ze)}function ni(e){return e.keys!==null?1+e.keysCount:e.ops?(typeof e.head=="string"?1:ni(e.head))+[...e.ops].reduce((n,i)=>n+ni(i),0):1}function K(e,n){if(!n||e.every(t=>!t.ops||t.head!==n))return e;let i=[];for(let t of e)!t.ops||t.head!==n?i.push(t):i.push(...K(t.ops,n));return i.length,e.length,i.length===e.length?e:i}function xe(e){if(e.every(i=>i.head!=="Sequence"))return e;let n=[];for(let i of e)i.isValid&&i.head==="Sequence"?i.ops&&n.push(...i.ops):n.push(i);return n}var on=se(te());function q(e){return e!==null&&Array.isArray(e)}function P(e){return e!==null&&Array.isArray(e)&&typeof e[0]=="number"}function U(e){return e!==null&&Array.isArray(e)&&typeof e[0]=="bigint"}function Be(e){return e[0]==0}function ee(e){return e[0]===e[1]}function St(e){return e[0]===-e[1]}function Ee(e){return Number(e[0])}function we(e){return Number(e[1])}function Or(e){return e[0]<0}function ce(e){return[-e[0],e[1]]}function sn(e){return e[0]<0?[-e[1],-e[0]]:[e[1],e[0]]}function re(e){let n=e.numericValue;if(n!==null){if(Array.isArray(n))return n;if(typeof n=="number"&&Number.isInteger(n))return[n,1];if(n instanceof E&&n.isInteger())return[D(n),BigInt(1)]}}function ws(e){return[Number(e[0]),Number(e[1])]}function Mn(e,n){if(Array.isArray(n)||n.numericValue!==null&&n instanceof on.Complex,typeof e[0]=="number"&&!Number.isFinite(e[0]))return e;let i=Array.isArray(n)?n:n.numericValue;if(i===null)return e;if(Array.isArray(i)){if(U(i))return e=[D(e[0]),D(e[1])],[i[1]*e[0]+i[0]*e[1],i[1]*e[1]];if(!Number.isFinite(i[0]))return i;if(U(e)){let t=[D(i[0]),D(i[1])];return[t[1]*e[0]+t[0]*e[1],t[1]*e[1]]}return[i[1]*e[0]+i[0]*e[1],i[1]*e[1]]}return i instanceof E?i.isNaN()?[Number.NaN,1]:i.isFinite()?(i.isInteger(),P(e)&&(e=[D(e[0]),D(e[1])]),[e[0]+e[1]*D(i.toString()),e[1]]):[i.isNegative()?-1/0:1/0,1]:i instanceof on.Complex?[Number.NaN,1]:(!Number.isFinite(i)||Number.isInteger(i),Number.isFinite(i)?P(e)?[e[0]+e[1]*i,e[1]]:[e[0]+e[1]*D(i),e[1]]:[i,1])}function ne(e,n){if(Array.isArray(n)||n.numericValue!==null&&n instanceof on.Complex,Array.isArray(n))return P(e)&&P(n)?[e[0]*n[0],e[1]*n[1]]:(P(e)&&(e=[D(e[0]),D(e[1])]),P(n)&&(n=[D(n[0]),D(n[1])]),[e[0]*n[0],e[1]*n[1]]);let i=n.numericValue;return i!==null&&typeof i=="number"?(Number.isInteger(i),P(e)?[e[0]*i,e[1]]:[e[0]*D(i),e[1]]):i instanceof E?(i.isInteger(),P(e)?[D(i.toString())*D(e[0]),D(e[1])]:[D(i.toString())*e[0],e[1]]):Array.isArray(i)?U(i)?[i[0]*D(e[0]),i[1]*D(e[1])]:P(e)?[e[0]*i[0],e[1]*i[1]]:[e[0]*D(i[0]),e[1]*D(i[1])]:e}function kl(e,n){if(Number.isInteger(n),n===0)return[1,1];if(n<0&&(e=sn(e),n=-n),n===1)return e;if(P(e))return[Math.pow(e[0],n),Math.pow(e[1],n)];let i=D(n);return[e[0]**i,e[1]**i]}function wn(e){if(P(e)){if(e[0]===1||e[1]===1)return e;if(e[1]<0&&(e=[-e[0],-e[1]]),!Number.isFinite(e[1]))return[0,1];let i=vi(e[0],e[1]);return i<=1?e:[e[0]/i,e[1]/i]}if(e[0]===BigInt(1)||e[1]===BigInt(1))return e;e[1]<0&&(e=[-e[0],-e[1]]);let n=Bs(e[0],e[1]);return n<=1?e:[e[0]/n,e[1]/n]}function Ms(e){if(!Number.isFinite(e)||e%1===0)return e;let i=1e-15,t=Math.floor(e),r=1,o=0,s=t,a=1;for(;e-t>i*a*a;){e=1/(e-t),t=Math.floor(e);let u=r;r=s;let l=o;o=a,s=u+t*r,a=l+t*o}return[s,a]}function ze(e){e.isCanonical;let n=e.engine;if(e.head==="Multiply"){let t=[],r=[1,1];for(let o of e.ops){let s=o.numericValue;s!==null&&(typeof s=="number"&&Number.isInteger(s)||s instanceof E&&s.isInteger()||q(s))?r=ne(r,o):t.push(o)}return r=wn(r),ee(r)?[[1,1],e]:t.length===0?[r,n.One]:t.length===1?[r,t[0]]:[r,n.mul(t)]}if(e.head==="Divide"){let[t,r]=ze(e.op1),[o,s]=ze(e.op2),a=wn(ne(t,sn(o)));return s.isOne?[a,r]:[a,n.div(r,s)]}if(e.head==="Power"){if(e.op2.numericValue===null)return[[1,1],e];let[t,r]=ze(e.op1);if(ee(t))return[[1,1],e];let o=e.op2,s=k(o);if(s===-1)return[sn(t),n.inv(r)];if(s!==null)return[kl(t,s),n.pow(r,o)];if(o.numericValue!==null&&Array.isArray(o.numericValue)){let[a,u]=ws(o.numericValue),[l,f]=ws(t);if(l>0&&Math.abs(a)===1){let[d,c]=rn(l,u),[p,x]=rn(f,u);return d===1&&p===1?[[1,1],e]:[a===1?[d,p]:[p,d],n.pow(n.mul([n.number([c,x]),r]),o)]}}return[[1,1],e]}if(e.head,e.head==="Negate"){let[t,r]=ze(e.op1);return[ce(t),r]}let i=e.numericValue;if(i!==null){if(i instanceof E){if(i.isInteger())return[[D(i.toString()),BigInt(1)],n.One];if(i.isNegative())return[[-1,1],n.number(i.neg())]}if(typeof i=="number"){if(Number.isInteger(i))return[[i,1],n.One];if(i<0)return[[-1,1],n.number(-i)]}if(q(i))return[i,n.One];if(i instanceof on.Complex&&i.re<0)return[[-1,1],n.number(n.complex(-i.re,-i.im))]}return[[1,1],e]}function Ue(e,n,i){if(e===n)return 0;let t=e.N(),r=n.N(),o=t.numericValue,s=r.numericValue;if(o===null||s===null){let l=e.sgn,f=n.sgn;return typeof l!="number"||typeof f!="number"?void 0:l===0&&f===0?0:l<0&&f>0?-1:l>0&&f<0?1:void 0}if(i??(i=e.engine.tolerance),o instanceof on.Complex&&s instanceof on.Complex)return kn(o.re-s.re,i)===0&&kn(o.im-s.im,i)===0?0:void 0;if(o instanceof on.Complex||s instanceof on.Complex||q(o)||q(s))return;if(typeof o=="number"&&typeof s=="number")return kn(s-o,i)===0?0:o<s?-1:1;let a=e.engine,u=a.bignum(s).sub(a.bignum(o));return kn(u,i)===0?0:u.isPos()?1:-1}var As=se(te());var wi=class{constructor(n,i,t){this._isCanonical=!0;this._imaginary=0;this._posInfinityCount=0;this._negInfinityCount=0;this._naNCount=0;this._terms=[];if(t??(t={}),"canonical"in t?this._isCanonical=t.canonical:this._isCanonical=!0,this.engine=n,this._rational=O(n)?[BigInt(0),BigInt(1)]:[0,1],this._bignum=n._BIGNUM_ZERO,this._number=0,i)for(let r of i)this.addTerm(r)}get isEmpty(){return this._isCanonical?this._terms.length===0&&Be(this._rational)&&this._imaginary===0&&this._number===0&&this._bignum.isZero()&&this._negInfinityCount===0&&this._posInfinityCount===0&&this._naNCount===0:this._terms.length===0}addTerm(n,i){if(n.isNothing)return;if(n.isNaN||n.isImaginary&&!Z(this.engine)){this._naNCount+=1;return}if(this._isCanonical&&n.numericValue!==null){if(n.isInfinity){n.isPositive?this._posInfinityCount+=1:this._negInfinityCount+=1;return}let o=re(n);if(o){this._rational=Mn(this._rational,i===void 0?o:ne(o,i));return}let s=n.numericValue;if(s!==null&&typeof s=="number"){Number.isInteger(s),O(this.engine)?this._bignum=this._bignum.add(s):this._number+=s;return}if(s!==null&&s instanceof E){s.isInteger(),this._bignum=this._bignum.add(s);return}if(s!==null&&s instanceof As.Complex){let a=s.re,u=s.im;if(Number.isInteger(a)?(this._rational=Mn(this._rational,ne([a,1],i??[1,1])),a=0):(O(this.engine)?this._bignum=this._bignum.add(a):this._number+=a,a=0),Number.isInteger(u)&&(i===void 0?this._imaginary+=u:P(i)?this._imaginary+=u*i[0]/i[1]:this._imaginary+=this.engine.bignum(i[0]).mul(u).div(this.engine.bignum(i[1])).toNumber(),u=0),a===0&&u===0)return;n=this.engine.number(this.engine.complex(a,u))}}let t;if([t,n]=ze(n),Be(t))return;if(i!==void 0&&(t=ne(t,i)),n.head==="Negate"){this.addTerm(n.op1,ce(t));return}if(n.head==="Add"){for(let o of n.ops)this.addTerm(o,t);return}let r=!1;if(n.numericValue===null){if(this._terms.length>500){let o=n.hash;for(let s=0;s<this._terms.length;s++)if(this._terms[s].term.numericValue===null&&o===this._terms[s].term.hash&&n.isSame(this._terms[s].term)){this._terms[s].coef=Mn(this._terms[s].coef,t),r=!0;break}}else for(let o=0;o<this._terms.length;o++)if(this._terms[o].term.numericValue===null&&n.isSame(this._terms[o].term)){this._terms[o].coef=Mn(this._terms[o].coef,t),r=!0;break}}r||this._terms.push({term:n,coef:t})}toString(){let n=this.terms("expression");return n.length===0?"0":n.map(i=>i.toString()).join("\\n")}terms(n){let i=this.engine;if(this._naNCount>0)return[i.NaN];if(this._imaginary!==0&&!Z(i))return[i.NaN];if(this._posInfinityCount>0&&this._negInfinityCount>0)return[i.NaN];if(this._posInfinityCount>0)return[i.PositiveInfinity];if(this._negInfinityCount>0)return[i.NegativeInfinity];let t=[];for(let{coef:r,term:o}of this._terms)Be(r)||(ee(r)?t.push(o):St(r)?t.push(i.neg(o)):we(r)===1?t.push(i.mul([i.number(r[0]),o])):Ee(r)===1?t.push(i.div(o,i.number(r[1]))):t.push(i.mul([i.number(r),o])));if(n==="numeric")if(O(this.engine)){let r=this._bignum.add(this._number);Be(this._rational)||(r=r.add(i.bignum(this._rational[0]).div(i.bignum(this._rational[1])))),this._imaginary!==0?t.push(i.number(i.complex(r.toNumber(),this._imaginary))):r.isZero()||t.push(i.number(r))}else{let r=this._bignum.toNumber()+this._number;Be(this._rational)||(r+=Ee(this._rational)/we(this._rational)),this._imaginary!==0?t.push(i.number(i.complex(r,this._imaginary))):r!==0&&t.push(i.number(r))}else{if(Be(this._rational)||t.push(i.number(this._rational)),this._imaginary!==0){if(!Z(i))return[i.NaN];t.push(i.number(i.complex(0,this._imaginary)))}if(O(this.engine)){let r=this._bignum.add(this._number);r.isZero()||t.push(i.number(r))}else this._bignum.isZero()||t.push(i.number(this._bignum)),this._number!==0&&t.push(i.number(this._number))}return K(t,"Add")}asExpression(n){let i=this.engine,t=this.terms(n);return t.length===0?i.Zero:t.length===1?t[0]:i._fn("Add",_t(i,t))}};var ii=["InvalidDomain","DictionaryOf","FunctionOf","ListOf","TupleOf","Intersection","Union","OptArg","VarArg"],It={Functions:["FunctionOf",["VarArg","Anything"],"Anything"],NumericFunctions:["FunctionOf","Numbers",["VarArg","Numbers"],"Numbers"],RealFunctions:["FunctionOf","ExtendedRealNumbers",["VarArg","ExtendedRealNumbers"],"ExtendedRealNumbers"],LogicOperators:["FunctionOf","Booleans",["OptArg","Booleans"],"Booleans"],Predicates:["FunctionOf","Anything",["VarArg","Anything"],"Booleans"],RelationalOperators:["FunctionOf","Anything","Anything","Booleans"]},hn={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"},Mi;function An(e){return e?hn[e]!==void 0:!1}function Me(e){if(Mi||(Mi={},Me("Void")),Mi[e])return Array.from(Mi[e]);let n=[];if(typeof e!="string"||!hn[e]){if(!Array.isArray(e))throw Error(`Unknown domain literal ${e}`);if(!ii.includes(e[0]))throw Error(`Unknown domain constructor ${e[0]}`);return e[0]==="FunctionOf"?Me("Functions"):e[0]==="TupleOf"?Me("Tuples"):e[0]==="ListOf"?Me("Lists"):e[0]==="DictionaryOf"?Me("Dictionaries"):e[0]==="OptArg"||e[0]==="VarArg"?Me(e[1]):e[0]==="Literal"?["Anything"]:e[0]==="Union"?["Anything"]:e[0]==="Intersection"?["Anything"]:["Anything"]}if(typeof hn[e]=="string")n=[hn[e],...Me(hn[e])];else if(Array.isArray(hn[e]))for(let i of hn[e])n.push(i),n.push(...Me(i));return Mi[e]=new Set(n),n}function Os(){let e={};for(let n of Object.keys(hn))e[n]={domain:"Domains",value:["Domain",n]};e.InvalidDomain={signature:{domain:["FunctionOf","Domains","Domains"],canonical:(n,i)=>n.domain(["InvalidDomain",i[0]])}};for(let n of["DictionaryOf","FunctionOf","ListOf","TupleOf"])e[n]={signature:{domain:["FunctionOf",["VarArg","Domains"],"Domains"],canonical:(i,t)=>i.domain([n,...t])}};for(let n of["OptArg","VarArg"])e[n]={signature:{domain:["FunctionOf","Domains","Domains"],canonical:(i,t)=>i.domain([n,t[0]])}};return e}var Ps=se(te());function ti(e){let n=1,i=n+Ir,t="Nothing",r=!0;if(e.head==="Tuple"||e.head==="Triple"||e.head==="Pair"||e.head==="Single"){if(t=(e.op1.head==="Hold"?e.op1.op1.symbol:e.op1.symbol)??"Nothing",n=k(e.op2)??1,Number.isFinite(n)||(r=!1),e.op3.isNothing||e.op3.isInfinity)r=!1;else{let o=k(e.op3);o===null?r=!1:(i=o,Number.isFinite(i)||(r=!1))}!r&&Number.isFinite(n)&&(i=n+Ir)}return[t,n,i,r]}var Tl={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]},wl={Abs:"Math.abs",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",Lcm:"_SYS.lcm",Limit:(e,n)=>`_SYS.limit(${n(e[0])}, ${n(e[1])})`,Ln:"Math.log",Log:"Math.log10",LogGamma:"_SYS.lngamma",Lb:"Math.log2",Max:"Math.max",Min:"Math.min",Power:(e,n)=>{let i=e[0];if(i===null)throw new Error("Power: no argument");let t=b(e[1]);return t===.5?`Math.sqrt(${n(i)})`:t===1/3?`Math.cbrt(${n(i)})`:t===1?n(i):t===-1?`1 / (${n(i)})`:t===-.5?`1 / Math.sqrt(${n(i)})`:`Math.pow(${n(i)}, ${n(e[1])})`},Root:(e,n)=>{let i=e[0];if(i===null)throw new Error("Root: no argument");let t=e[1];return t===null?`Math.sqrt(${n(i)})`:`Math.pow(${n(i)}, 1 / (${n(t)}))`},Random:"Math.random",Round:"Math.round",Square:(e,n)=>{let i=e[0];if(i===null)throw new Error("Square: no argument");return`Math.pow(${n(i)}, 2)`},Sgn:"Math.sign",Sin:"Math.sin",Sinh:"Math.sinh",Sqrt:"Math.sqrt",Tan:"Math.tan",Tanh:"Math.tanh"},Cr=class extends Function{constructor(i){super("_SYS","_",`return ${i}`);this.sys={factorial:xt,gamma:Qn,lngamma:_i,gcd:vi,lcm:Ns,chop:kn,limit:In};return new Proxy(this,{apply:(t,r,o)=>super.apply(r,[this.sys,...o]),get:(t,r)=>r==="toString"?()=>i:t[r]})}};function Ml(e,n){let i=be(e,n);try{return new Cr(i)}catch(t){console.error(`${t}
|
|
5
|
-
${
|
|
6
|
-
${i}`)}}function
|
|
7
|
-
`)}${
|
|
3
|
+
var ComputeEngine=(()=>{var Wa=Object.create;var et=Object.defineProperty;var Ya=Object.getOwnPropertyDescriptor;var Qa=Object.getOwnPropertyNames;var Xa=Object.getPrototypeOf,Ka=Object.prototype.hasOwnProperty;var eu=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),nu=(e,n)=>{for(var i in n)et(e,i,{get:n[i],enumerable:!0})},vo=(e,n,i,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of Qa(n))!Ka.call(e,r)&&r!==i&&et(e,r,{get:()=>n[r],enumerable:!(t=Ya(n,r))||t.enumerable});return e};var le=(e,n,i)=>(i=e!=null?Wa(Xa(e)):{},vo(n||!e||!e.__esModule?et(i,"default",{value:e,enumerable:!0}):i,e)),iu=e=>vo(et({},"__esModule",{value:!0}),e);var ae=eu((fr,_o)=>{(function(e){"use strict";var n=Math.cosh||function(l){return Math.abs(l)<1e-9?1-l:(Math.exp(l)+Math.exp(-l))*.5},i=Math.sinh||function(l){return Math.abs(l)<1e-9?l:(Math.exp(l)-Math.exp(-l))*.5},t=function(l){var f=Math.PI/4;if(-f>l||l>f)return Math.cos(l)-1;var d=l*l;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(l,f){var d=Math.abs(l),c=Math.abs(f);return d<3e3&&c<3e3?Math.sqrt(d*d+c*c):(d<c?(d=c,c=l/f):c=f/l,d*Math.sqrt(1+c*c))},o=function(){throw SyntaxError("Invalid Param")};function s(l,f){var d=Math.abs(l),c=Math.abs(f);return l===0?Math.log(c):f===0?Math.log(d):d<3e3&&c<3e3?Math.log(l*l+f*f)*.5:(l=l/2,f=f/2,.5*Math.log(l*l+f*f)+Math.LN2)}var a=function(l,f){var d={re:0,im:0};if(l==null)d.re=d.im=0;else if(f!==void 0)d.re=l,d.im=f;else switch(typeof l){case"object":if("im"in l&&"re"in l)d.re=l.re,d.im=l.im;else if("abs"in l&&"arg"in l){if(!Number.isFinite(l.abs)&&Number.isFinite(l.arg))return u.INFINITY;d.re=l.abs*Math.cos(l.arg),d.im=l.abs*Math.sin(l.arg)}else if("r"in l&&"phi"in l){if(!Number.isFinite(l.r)&&Number.isFinite(l.phi))return u.INFINITY;d.re=l.r*Math.cos(l.phi),d.im=l.r*Math.sin(l.phi)}else l.length===2?(d.re=l[0],d.im=l[1]):o();break;case"string":d.im=d.re=0;var c=l.match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),p=1,g=0;c===null&&o();for(var b=0;b<c.length;b++){var _=c[b];_===" "||_===" "||_===`
|
|
4
|
+
`||(_==="+"?p++:_==="-"?g++:_==="i"||_==="I"?(p+g===0&&o(),c[b+1]!==" "&&!isNaN(c[b+1])?(d.im+=parseFloat((g%2?"-":"")+c[b+1]),b++):d.im+=parseFloat((g%2?"-":"")+"1"),p=g=0):((p+g===0||isNaN(_))&&o(),c[b+1]==="i"||c[b+1]==="I"?(d.im+=parseFloat((g%2?"-":"")+_),b++):d.re+=parseFloat((g%2?"-":"")+_),p=g=0))}p+g>0&&o();break;case"number":d.im=0,d.re=l;break;default:o()}return isNaN(d.re)||isNaN(d.im),d};function u(l,f){if(!(this instanceof u))return new u(l,f);var d=a(l,f);this.re=d.re,this.im=d.im}u.prototype={re:0,im:0,sign:function(){var l=this.abs();return new u(this.re/l,this.im/l)},add:function(l,f){var d=new u(l,f);return this.isInfinite()&&d.isInfinite()?u.NAN:this.isInfinite()||d.isInfinite()?u.INFINITY:new u(this.re+d.re,this.im+d.im)},sub:function(l,f){var d=new u(l,f);return this.isInfinite()&&d.isInfinite()?u.NAN:this.isInfinite()||d.isInfinite()?u.INFINITY:new u(this.re-d.re,this.im-d.im)},mul:function(l,f){var d=new u(l,f);return this.isInfinite()&&d.isZero()||this.isZero()&&d.isInfinite()?u.NAN:this.isInfinite()||d.isInfinite()?u.INFINITY:d.im===0&&this.im===0?new u(this.re*d.re,0):new u(this.re*d.re-this.im*d.im,this.re*d.im+this.im*d.re)},div:function(l,f){var d=new u(l,f);if(this.isZero()&&d.isZero()||this.isInfinite()&&d.isInfinite())return u.NAN;if(this.isInfinite()||d.isZero())return u.INFINITY;if(this.isZero()||d.isInfinite())return u.ZERO;l=this.re,f=this.im;var c=d.re,p=d.im,g,b;return p===0?new u(l/c,f/c):Math.abs(c)<Math.abs(p)?(b=c/p,g=c*b+p,new u((l*b+f)/g,(f*b-l)/g)):(b=p/c,g=p*b+c,new u((l+f*b)/g,(f-l*b)/g))},pow:function(l,f){var d=new u(l,f);if(l=this.re,f=this.im,d.isZero())return u.ONE;if(d.im===0){if(f===0&&l>0)return new u(Math.pow(l,d.re),0);if(l===0)switch((d.re%4+4)%4){case 0:return new u(Math.pow(f,d.re),0);case 1:return new u(0,Math.pow(f,d.re));case 2:return new u(-Math.pow(f,d.re),0);case 3:return new u(0,-Math.pow(f,d.re))}}if(l===0&&f===0&&d.re>0&&d.im>=0)return u.ZERO;var c=Math.atan2(f,l),p=s(l,f);return l=Math.exp(d.re*p-d.im*c),f=d.im*p+d.re*c,new u(l*Math.cos(f),l*Math.sin(f))},sqrt:function(){var l=this.re,f=this.im,d=this.abs(),c,p;if(l>=0){if(f===0)return new u(Math.sqrt(l),0);c=.5*Math.sqrt(2*(d+l))}else c=Math.abs(f)/Math.sqrt(2*(d-l));return l<=0?p=.5*Math.sqrt(2*(d-l)):p=Math.abs(f)/Math.sqrt(2*(d+l)),new u(c,f<0?-p:p)},exp:function(){var l=Math.exp(this.re);return this.im,new u(l*Math.cos(this.im),l*Math.sin(this.im))},expm1:function(){var l=this.re,f=this.im;return new u(Math.expm1(l)*Math.cos(f)+t(f),Math.exp(l)*Math.sin(f))},log:function(){var l=this.re,f=this.im;return f===0&&l>0,new u(s(l,f),Math.atan2(f,l))},abs:function(){return r(this.re,this.im)},arg:function(){return Math.atan2(this.im,this.re)},sin:function(){var l=this.re,f=this.im;return new u(Math.sin(l)*n(f),Math.cos(l)*i(f))},cos:function(){var l=this.re,f=this.im;return new u(Math.cos(l)*n(f),-Math.sin(l)*i(f))},tan:function(){var l=2*this.re,f=2*this.im,d=Math.cos(l)+n(f);return new u(Math.sin(l)/d,i(f)/d)},cot:function(){var l=2*this.re,f=2*this.im,d=Math.cos(l)-n(f);return new u(-Math.sin(l)/d,i(f)/d)},sec:function(){var l=this.re,f=this.im,d=.5*n(2*f)+.5*Math.cos(2*l);return new u(Math.cos(l)*n(f)/d,Math.sin(l)*i(f)/d)},csc:function(){var l=this.re,f=this.im,d=.5*n(2*f)-.5*Math.cos(2*l);return new u(Math.sin(l)*n(f)/d,-Math.cos(l)*i(f)/d)},asin:function(){var l=this.re,f=this.im,d=new u(f*f-l*l+1,-2*l*f).sqrt(),c=new u(d.re-f,d.im+l).log();return new u(c.im,-c.re)},acos:function(){var l=this.re,f=this.im,d=new u(f*f-l*l+1,-2*l*f).sqrt(),c=new u(d.re-f,d.im+l).log();return new u(Math.PI/2-c.im,c.re)},atan:function(){var l=this.re,f=this.im;if(l===0){if(f===1)return new u(0,1/0);if(f===-1)return new u(0,-1/0)}var d=l*l+(1-f)*(1-f),c=new u((1-f*f-l*l)/d,-2*l/d).log();return new u(-.5*c.im,.5*c.re)},acot:function(){var l=this.re,f=this.im;if(f===0)return new u(Math.atan2(1,l),0);var d=l*l+f*f;return d!==0?new u(l/d,-f/d).atan():new u(l!==0?l/0:0,f!==0?-f/0:0).atan()},asec:function(){var l=this.re,f=this.im;if(l===0&&f===0)return new u(0,1/0);var d=l*l+f*f;return d!==0?new u(l/d,-f/d).acos():new u(l!==0?l/0:0,f!==0?-f/0:0).acos()},acsc:function(){var l=this.re,f=this.im;if(l===0&&f===0)return new u(Math.PI/2,1/0);var d=l*l+f*f;return d!==0?new u(l/d,-f/d).asin():new u(l!==0?l/0:0,f!==0?-f/0:0).asin()},sinh:function(){var l=this.re,f=this.im;return new u(i(l)*Math.cos(f),n(l)*Math.sin(f))},cosh:function(){var l=this.re,f=this.im;return new u(n(l)*Math.cos(f),i(l)*Math.sin(f))},tanh:function(){var l=2*this.re,f=2*this.im,d=n(l)+Math.cos(f);return new u(i(l)/d,Math.sin(f)/d)},coth:function(){var l=2*this.re,f=2*this.im,d=n(l)-Math.cos(f);return new u(i(l)/d,-Math.sin(f)/d)},csch:function(){var l=this.re,f=this.im,d=Math.cos(2*f)-n(2*l);return new u(-2*i(l)*Math.cos(f)/d,2*n(l)*Math.sin(f)/d)},sech:function(){var l=this.re,f=this.im,d=Math.cos(2*f)+n(2*l);return new u(2*n(l)*Math.cos(f)/d,-2*i(l)*Math.sin(f)/d)},asinh:function(){var l=this.im;this.im=-this.re,this.re=l;var f=this.asin();return this.re=-this.im,this.im=l,l=f.re,f.re=-f.im,f.im=l,f},acosh:function(){var l=this.acos();if(l.im<=0){var f=l.re;l.re=-l.im,l.im=f}else{var f=l.im;l.im=-l.re,l.re=f}return l},atanh:function(){var l=this.re,f=this.im,d=l>1&&f===0,c=1-l,p=1+l,g=c*c+f*f,b=g!==0?new u((p*c-f*f)/g,(f*c+p*f)/g):new u(l!==-1?l/0:0,f!==0?f/0:0),_=b.re;return b.re=s(b.re,b.im)/2,b.im=Math.atan2(b.im,_)/2,d&&(b.im=-b.im),b},acoth:function(){var l=this.re,f=this.im;if(l===0&&f===0)return new u(0,Math.PI/2);var d=l*l+f*f;return d!==0?new u(l/d,-f/d).atanh():new u(l!==0?l/0:0,f!==0?-f/0:0).atanh()},acsch:function(){var l=this.re,f=this.im;if(f===0)return new u(l!==0?Math.log(l+Math.sqrt(l*l+1)):1/0,0);var d=l*l+f*f;return d!==0?new u(l/d,-f/d).asinh():new u(l!==0?l/0:0,f!==0?-f/0:0).asinh()},asech:function(){var l=this.re,f=this.im;if(this.isZero())return u.INFINITY;var d=l*l+f*f;return d!==0?new u(l/d,-f/d).acosh():new u(l!==0?l/0:0,f!==0?-f/0:0).acosh()},inverse:function(){if(this.isZero())return u.INFINITY;if(this.isInfinite())return u.ZERO;var l=this.re,f=this.im,d=l*l+f*f;return new u(l/d,-f/d)},conjugate:function(){return new u(this.re,-this.im)},neg:function(){return new u(-this.re,-this.im)},ceil:function(l){return l=Math.pow(10,l||0),new u(Math.ceil(this.re*l)/l,Math.ceil(this.im*l)/l)},floor:function(l){return l=Math.pow(10,l||0),new u(Math.floor(this.re*l)/l,Math.floor(this.im*l)/l)},round:function(l){return l=Math.pow(10,l||0),new u(Math.round(this.re*l)/l,Math.round(this.im*l)/l)},equals:function(l,f){var d=new u(l,f);return Math.abs(d.re-this.re)<=u.EPSILON&&Math.abs(d.im-this.im)<=u.EPSILON},clone:function(){return new u(this.re,this.im)},toString:function(){var l=this.re,f=this.im,d="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(l)<u.EPSILON&&(l=0),Math.abs(f)<u.EPSILON&&(f=0),f===0?d+l:(l!==0?(d+=l,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())}},u.ZERO=new u(0,0),u.ONE=new u(1,0),u.I=new u(0,1),u.PI=new u(Math.PI,0),u.E=new u(Math.E,0),u.INFINITY=new u(1/0,1/0),u.NAN=new u(NaN,NaN),u.EPSILON=1e-15,typeof define=="function"&&define.amd?define([],function(){return u}):typeof fr=="object"?(Object.defineProperty(u,"__esModule",{value:!0}),u.default=u,u.Complex=u,_o.exports=u):e.Complex=u})(fr)});var qf={};nu(qf,{ADDITION_PRECEDENCE:()=>nt,ARROW_PRECEDENCE:()=>ou,ASSIGNMENT_PRECEDENCE:()=>ru,COMPARISON_PRECEDENCE:()=>tu,ComputeEngine:()=>pi,DIVISION_PRECEDENCE:()=>au,EXPONENTIATION_PRECEDENCE:()=>uu,MULTIPLICATION_PRECEDENCE:()=>su,POSTFIX_PRECEDENCE:()=>lu,isEnvironmentEntry:()=>lr,isExpressionEntry:()=>fu,isFunctionEntry:()=>du,isInfixEntry:()=>it,isMatchfixEntry:()=>$n,isPostfixEntry:()=>tt,isPrefixEntry:()=>hi,isSymbolEntry:()=>ur,version:()=>Rf});var tu=245,ru=260,ou=270,nt=275,su=390,au=600,uu=700,lu=810;function fu(e){return!("kind"in e)||e.kind==="expression"}function ur(e){return"kind"in e&&e.kind==="symbol"}function du(e){return"kind"in e&&e.kind==="function"}function $n(e){return"kind"in e&&e.kind==="matchfix"}function it(e){return"kind"in e&&e.kind==="infix"}function hi(e){return"kind"in e&&e.kind==="prefix"}function tt(e){return"kind"in e&&e.kind==="postfix"}function lr(e){return"kind"in e&&e.kind==="environment"}var Vn=le(ae());var zn=9e15,xn=1e9,dr="0123456789abcdef",ot="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",st="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",cr={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-zn,maxE:zn,crypto:!1},Do,en,D=!0,ut="[DecimalError] ",hn=ut+"Invalid argument: ",To=ut+"Precision limit exceeded",ko=ut+"crypto unavailable",wo="[object Decimal]",Ee=Math.floor,fe=Math.pow,cu=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,mu=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,pu=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Mo=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Re=1e7,S=7,gu=9007199254740991,hu=ot.length-1,mr=st.length-1,h={toStringTag:wo};h.absoluteValue=h.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),v(e)};h.ceil=function(){return v(new this.constructor(this),this.e+1,2)};h.clampedTo=h.clamp=function(e,n){var i,t=this,r=t.constructor;if(e=new r(e),n=new r(n),!e.s||!n.s)return new r(NaN);if(e.gt(n))throw Error(hn+n);return i=t.cmp(e),i<0?e:t.cmp(n)>0?n:new r(t)};h.comparedTo=h.cmp=function(e){var n,i,t,r,o=this,s=o.d,a=(e=new o.constructor(e)).d,u=o.s,l=e.s;if(!s||!a)return!u||!l?NaN:u!==l?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-l:0;if(u!==l)return u;if(o.e!==e.e)return o.e>e.e^u<0?1:-1;for(t=s.length,r=a.length,n=0,i=t<r?t:r;n<i;++n)if(s[n]!==a[n])return s[n]>a[n]^u<0?1:-1;return t===r?0:t>r^u<0?1:-1};h.cosine=h.cos=function(){var e,n,i=this,t=i.constructor;return i.d?i.d[0]?(e=t.precision,n=t.rounding,t.precision=e+Math.max(i.e,i.sd())+S,t.rounding=1,i=xu(t,Lo(t,i)),t.precision=e,t.rounding=n,v(en==2||en==3?i.neg():i,e,n,!0)):new t(1):new t(NaN)};h.cubeRoot=h.cbrt=function(){var e,n,i,t,r,o,s,a,u,l,f=this,d=f.constructor;if(!f.isFinite()||f.isZero())return new d(f);for(D=!1,o=f.s*fe(f.s*f,1/3),!o||Math.abs(o)==1/0?(i=be(f.d),e=f.e,(o=(e-i.length+1)%3)&&(i+=o==1||o==-2?"0":"00"),o=fe(i,1/3),e=Ee((e+1)/3)-(e%3==(e<0?-1:2)),o==1/0?i="5e"+e:(i=o.toExponential(),i=i.slice(0,i.indexOf("e")+1)+e),t=new d(i),t.s=f.s):t=new d(o.toString()),s=(e=d.precision)+3;;)if(a=t,u=a.times(a).times(a),l=u.plus(f),t=G(l.plus(f).times(a),l.plus(u),s+2,1),be(a.d).slice(0,s)===(i=be(t.d)).slice(0,s))if(i=i.slice(s-3,s+1),i=="9999"||!r&&i=="4999"){if(!r&&(v(a,e+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")&&(v(t,e+1,1),n=!t.times(t).times(t).eq(f));break}return D=!0,v(t,e,d.rounding,n)};h.decimalPlaces=h.dp=function(){var e,n=this.d,i=NaN;if(n){if(e=n.length-1,i=(e-Ee(this.e/S))*S,e=n[e],e)for(;e%10==0;e/=10)i--;i<0&&(i=0)}return i};h.dividedBy=h.div=function(e){return G(this,new this.constructor(e))};h.dividedToIntegerBy=h.divToInt=function(e){var n=this,i=n.constructor;return v(G(n,new i(e),0,1,1),i.precision,i.rounding)};h.equals=h.eq=function(e){return this.cmp(e)===0};h.floor=function(){return v(new this.constructor(this),this.e+1,3)};h.greaterThan=h.gt=function(e){return this.cmp(e)>0};h.greaterThanOrEqualTo=h.gte=function(e){var n=this.cmp(e);return n==1||n===0};h.hyperbolicCosine=h.cosh=function(){var e,n,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?(e=Math.ceil(r/3),n=(1/ft(4,e)).toString()):(e=16,n="2.3283064365386962890625e-10"),o=Un(s,1,o.times(n),new s(1),!0);for(var u,l=e,f=new s(8);l--;)u=o.times(o),o=a.minus(u.times(f.minus(u.times(f))));return v(o,s.precision=i,s.rounding=t,!0)};h.hyperbolicSine=h.sinh=function(){var e,n,i,t,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(n=o.precision,i=o.rounding,o.precision=n+Math.max(r.e,r.sd())+4,o.rounding=1,t=r.d.length,t<3)r=Un(o,2,r,r,!0);else{e=1.4*Math.sqrt(t),e=e>16?16:e|0,r=r.times(1/ft(5,e)),r=Un(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),l=new o(20);e--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(l))))}return o.precision=n,o.rounding=i,v(r,n,i,!0)};h.hyperbolicTangent=h.tanh=function(){var e,n,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(e=t.precision,n=t.rounding,t.precision=e+7,t.rounding=1,G(i.sinh(),i.cosh(),t.precision=e,t.rounding=n)):new t(i.s)};h.inverseCosine=h.acos=function(){var e,n=this,i=n.constructor,t=n.abs().cmp(1),r=i.precision,o=i.rounding;return t!==-1?t===0?n.isNeg()?Fe(i,r,o):new i(0):new i(NaN):n.isZero()?Fe(i,r+4,o).times(.5):(i.precision=r+6,i.rounding=1,n=n.asin(),e=Fe(i,r+4,o).times(.5),i.precision=r,i.rounding=o,e.minus(n))};h.inverseHyperbolicCosine=h.acosh=function(){var e,n,i=this,t=i.constructor;return i.lte(1)?new t(i.eq(1)?0:NaN):i.isFinite()?(e=t.precision,n=t.rounding,t.precision=e+Math.max(Math.abs(i.e),i.sd())+4,t.rounding=1,D=!1,i=i.times(i).minus(1).sqrt().plus(i),D=!0,t.precision=e,t.rounding=n,i.ln()):new t(i)};h.inverseHyperbolicSine=h.asinh=function(){var e,n,i=this,t=i.constructor;return!i.isFinite()||i.isZero()?new t(i):(e=t.precision,n=t.rounding,t.precision=e+2*Math.max(Math.abs(i.e),i.sd())+6,t.rounding=1,D=!1,i=i.times(i).plus(1).sqrt().plus(i),D=!0,t.precision=e,t.rounding=n,i.ln())};h.inverseHyperbolicTangent=h.atanh=function(){var e,n,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):(e=o.precision,n=o.rounding,t=r.sd(),Math.max(t,e)<2*-r.e-1?v(new o(r),e,n,!0):(o.precision=i=t-r.e,r=G(r.plus(1),new o(1).minus(r),i+e,1),o.precision=e+4,o.rounding=1,r=r.ln(),o.precision=e,o.rounding=n,r.times(.5))):new o(NaN)};h.inverseSine=h.asin=function(){var e,n,i,t,r=this,o=r.constructor;return r.isZero()?new o(r):(n=r.abs().cmp(1),i=o.precision,t=o.rounding,n!==-1?n===0?(e=Fe(o,i+4,t).times(.5),e.s=r.s,e):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)))};h.inverseTangent=h.atan=function(){var e,n,i,t,r,o,s,a,u,l=this,f=l.constructor,d=f.precision,c=f.rounding;if(l.isFinite()){if(l.isZero())return new f(l);if(l.abs().eq(1)&&d+4<=mr)return s=Fe(f,d+4,c).times(.25),s.s=l.s,s}else{if(!l.s)return new f(NaN);if(d+4<=mr)return s=Fe(f,d+4,c).times(.5),s.s=l.s,s}for(f.precision=a=d+10,f.rounding=1,i=Math.min(28,a/S+2|0),e=i;e;--e)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(D=!1,n=Math.ceil(a/S),t=1,u=l.times(l),s=new f(l),r=l;e!==-1;)if(r=r.times(u),o=s.minus(r.div(t+=2)),r=r.times(u),s=o.plus(r.div(t+=2)),s.d[n]!==void 0)for(e=n;s.d[e]===o.d[e]&&e--;);return i&&(s=s.times(2<<i-1)),D=!0,v(s,f.precision=d,f.rounding=c,!0)};h.isFinite=function(){return!!this.d};h.isInteger=h.isInt=function(){return!!this.d&&Ee(this.e/S)>this.d.length-2};h.isNaN=function(){return!this.s};h.isNegative=h.isNeg=function(){return this.s<0};h.isPositive=h.isPos=function(){return this.s>0};h.isZero=function(){return!!this.d&&this.d[0]===0};h.lessThan=h.lt=function(e){return this.cmp(e)<0};h.lessThanOrEqualTo=h.lte=function(e){return this.cmp(e)<1};h.logarithm=h.log=function(e){var n,i,t,r,o,s,a,u,l=this,f=l.constructor,d=f.precision,c=f.rounding,p=5;if(e==null)e=new f(10),n=!0;else{if(e=new f(e),i=e.d,e.s<0||!i||!i[0]||e.eq(1))return new f(NaN);n=e.eq(10)}if(i=l.d,l.s<0||!i||!i[0]||l.eq(1))return new f(i&&!i[0]?-1/0:l.s!=1?NaN:i?0:1/0);if(n)if(i.length>1)o=!0;else{for(r=i[0];r%10===0;)r/=10;o=r!==1}if(D=!1,a=d+p,s=gn(l,a),t=n?at(f,a+10):gn(e,a),u=G(s,t,a,1),xi(u.d,r=d,c))do if(a+=10,s=gn(l,a),t=n?at(f,a+10):gn(e,a),u=G(s,t,a,1),!o){+be(u.d).slice(r+1,r+15)+1==1e14&&(u=v(u,d+1,0));break}while(xi(u.d,r+=10,c));return D=!0,v(u,d,c)};h.minus=h.sub=function(e){var n,i,t,r,o,s,a,u,l,f,d,c,p=this,g=p.constructor;if(e=new g(e),!p.d||!e.d)return!p.s||!e.s?e=new g(NaN):p.d?e.s=-e.s:e=new g(e.d||p.s!==e.s?p:NaN),e;if(p.s!=e.s)return e.s=-e.s,p.plus(e);if(l=p.d,c=e.d,a=g.precision,u=g.rounding,!l[0]||!c[0]){if(c[0])e.s=-e.s;else if(l[0])e=new g(p);else return new g(u===3?-0:0);return D?v(e,a,u):e}if(i=Ee(e.e/S),f=Ee(p.e/S),l=l.slice(),o=f-i,o){for(d=o<0,d?(n=l,o=-o,s=c.length):(n=c,i=f,s=l.length),t=Math.max(Math.ceil(a/S),s)+2,o>t&&(o=t,n.length=1),n.reverse(),t=o;t--;)n.push(0);n.reverse()}else{for(t=l.length,s=c.length,d=t<s,d&&(s=t),t=0;t<s;t++)if(l[t]!=c[t]){d=l[t]<c[t];break}o=0}for(d&&(n=l,l=c,c=n,e.s=-e.s),s=l.length,t=c.length-s;t>0;--t)l[s++]=0;for(t=c.length;t>o;){if(l[--t]<c[t]){for(r=t;r&&l[--r]===0;)l[r]=Re-1;--l[r],l[t]+=Re}l[t]-=c[t]}for(;l[--s]===0;)l.pop();for(;l[0]===0;l.shift())--i;return l[0]?(e.d=l,e.e=lt(l,i),D?v(e,a,u):e):new g(u===3?-0:0)};h.modulo=h.mod=function(e){var n,i=this,t=i.constructor;return e=new t(e),!i.d||!e.s||e.d&&!e.d[0]?new t(NaN):!e.d||i.d&&!i.d[0]?v(new t(i),t.precision,t.rounding):(D=!1,t.modulo==9?(n=G(i,e.abs(),0,3,1),n.s*=e.s):n=G(i,e,0,t.modulo,1),n=n.times(e),D=!0,i.minus(n))};h.naturalExponential=h.exp=function(){return pr(this)};h.naturalLogarithm=h.ln=function(){return gn(this)};h.negated=h.neg=function(){var e=new this.constructor(this);return e.s=-e.s,v(e)};h.plus=h.add=function(e){var n,i,t,r,o,s,a,u,l,f,d=this,c=d.constructor;if(e=new c(e),!d.d||!e.d)return!d.s||!e.s?e=new c(NaN):d.d||(e=new c(e.d||d.s===e.s?d:NaN)),e;if(d.s!=e.s)return e.s=-e.s,d.minus(e);if(l=d.d,f=e.d,a=c.precision,u=c.rounding,!l[0]||!f[0])return f[0]||(e=new c(d)),D?v(e,a,u):e;if(o=Ee(d.e/S),t=Ee(e.e/S),l=l.slice(),r=o-t,r){for(r<0?(i=l,r=-r,s=f.length):(i=f,t=o,s=l.length),o=Math.ceil(a/S),s=o>s?o+1:s+1,r>s&&(r=s,i.length=1),i.reverse();r--;)i.push(0);i.reverse()}for(s=l.length,r=f.length,s-r<0&&(r=s,i=f,f=l,l=i),n=0;r;)n=(l[--r]=l[r]+f[r]+n)/Re|0,l[r]%=Re;for(n&&(l.unshift(n),++t),s=l.length;l[--s]==0;)l.pop();return e.d=l,e.e=lt(l,t),D?v(e,a,u):e};h.precision=h.sd=function(e){var n,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(hn+e);return i.d?(n=Co(i.d),e&&i.e+1>n&&(n=i.e+1)):n=NaN,n};h.round=function(){var e=this,n=e.constructor;return v(new n(e),e.e+1,n.rounding)};h.sine=h.sin=function(){var e,n,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(e=t.precision,n=t.rounding,t.precision=e+Math.max(i.e,i.sd())+S,t.rounding=1,i=yu(t,Lo(t,i)),t.precision=e,t.rounding=n,v(en>2?i.neg():i,e,n,!0)):new t(NaN)};h.squareRoot=h.sqrt=function(){var e,n,i,t,r,o,s=this,a=s.d,u=s.e,l=s.s,f=s.constructor;if(l!==1||!a||!a[0])return new f(!l||l<0&&(!a||a[0])?NaN:a?s:1/0);for(D=!1,l=Math.sqrt(+s),l==0||l==1/0?(n=be(a),(n.length+u)%2==0&&(n+="0"),l=Math.sqrt(n),u=Ee((u+1)/2)-(u<0||u%2),l==1/0?n="5e"+u:(n=l.toExponential(),n=n.slice(0,n.indexOf("e")+1)+u),t=new f(n)):t=new f(l.toString()),i=(u=f.precision)+3;;)if(o=t,t=o.plus(G(s,o,i+2,1)).times(.5),be(o.d).slice(0,i)===(n=be(t.d)).slice(0,i))if(n=n.slice(i-3,i+1),n=="9999"||!r&&n=="4999"){if(!r&&(v(o,u+1,0),o.times(o).eq(s))){t=o;break}i+=4,r=1}else{(!+n||!+n.slice(1)&&n.charAt(0)=="5")&&(v(t,u+1,1),e=!t.times(t).eq(s));break}return D=!0,v(t,u,f.rounding,e)};h.tangent=h.tan=function(){var e,n,i=this,t=i.constructor;return i.isFinite()?i.isZero()?new t(i):(e=t.precision,n=t.rounding,t.precision=e+10,t.rounding=1,i=i.sin(),i.s=1,i=G(i,new t(1).minus(i.times(i)).sqrt(),e+10,0),t.precision=e,t.rounding=n,v(en==2||en==4?i.neg():i,e,n,!0)):new t(NaN)};h.times=h.mul=function(e){var n,i,t,r,o,s,a,u,l,f=this,d=f.constructor,c=f.d,p=(e=new d(e)).d;if(e.s*=f.s,!c||!c[0]||!p||!p[0])return new d(!e.s||c&&!c[0]&&!p||p&&!p[0]&&!c?NaN:!c||!p?e.s/0:e.s*0);for(i=Ee(f.e/S)+Ee(e.e/S),u=c.length,l=p.length,u<l&&(o=c,c=p,p=o,s=u,u=l,l=s),o=[],s=u+l,t=s;t--;)o.push(0);for(t=l;--t>=0;){for(n=0,r=u+t;r>t;)a=o[r]+p[t]*c[r-t-1]+n,o[r--]=a%Re|0,n=a/Re|0;o[r]=(o[r]+n)%Re|0}for(;!o[--s];)o.pop();return n?++i:o.shift(),e.d=o,e.e=lt(o,i),D?v(e,d.precision,d.rounding):e};h.toBinary=function(e,n){return hr(this,2,e,n)};h.toDecimalPlaces=h.toDP=function(e,n){var i=this,t=i.constructor;return i=new t(i),e===void 0?i:(Ie(e,0,xn),n===void 0?n=t.rounding:Ie(n,0,8),v(i,e+i.e+1,n))};h.toExponential=function(e,n){var i,t=this,r=t.constructor;return e===void 0?i=He(t,!0):(Ie(e,0,xn),n===void 0?n=r.rounding:Ie(n,0,8),t=v(new r(t),e+1,n),i=He(t,!0,e+1)),t.isNeg()&&!t.isZero()?"-"+i:i};h.toFixed=function(e,n){var i,t,r=this,o=r.constructor;return e===void 0?i=He(r):(Ie(e,0,xn),n===void 0?n=o.rounding:Ie(n,0,8),t=v(new o(r),e+r.e+1,n),i=He(t,!1,e+t.e+1)),r.isNeg()&&!r.isZero()?"-"+i:i};h.toFraction=function(e){var n,i,t,r,o,s,a,u,l,f,d,c,p=this,g=p.d,b=p.constructor;if(!g)return new b(p);if(l=i=new b(1),t=u=new b(0),n=new b(t),o=n.e=Co(g)-p.e-1,s=o%S,n.d[0]=fe(10,s<0?S+s:s),e==null)e=o>0?n:l;else{if(a=new b(e),!a.isInt()||a.lt(l))throw Error(hn+a);e=a.gt(n)?o>0?n:l:a}for(D=!1,a=new b(be(g)),f=b.precision,b.precision=o=g.length*S*2;d=G(a,n,0,1,1),r=i.plus(d.times(t)),r.cmp(e)!=1;)i=t,t=r,r=l,l=u.plus(d.times(r)),u=r,r=n,n=a.minus(d.times(r)),a=r;return r=G(e.minus(i),t,0,1,1),u=u.plus(r.times(l)),i=i.plus(r.times(t)),u.s=l.s=p.s,c=G(l,t,o,1).minus(p).abs().cmp(G(u,i,o,1).minus(p).abs())<1?[l,t]:[u,i],b.precision=f,D=!0,c};h.toHexadecimal=h.toHex=function(e,n){return hr(this,16,e,n)};h.toNearest=function(e,n){var i=this,t=i.constructor;if(i=new t(i),e==null){if(!i.d)return i;e=new t(1),n=t.rounding}else{if(e=new t(e),n===void 0?n=t.rounding:Ie(n,0,8),!i.d)return e.s?i:e;if(!e.d)return e.s&&(e.s=i.s),e}return e.d[0]?(D=!1,i=G(i,e,0,n,1).times(e),D=!0,v(i)):(e.s=i.s,i=e),i};h.toNumber=function(){return+this};h.toOctal=function(e,n){return hr(this,8,e,n)};h.toPower=h.pow=function(e){var n,i,t,r,o,s,a=this,u=a.constructor,l=+(e=new u(e));if(!a.d||!e.d||!a.d[0]||!e.d[0])return new u(fe(+a,l));if(a=new u(a),a.eq(1))return a;if(t=u.precision,o=u.rounding,e.eq(1))return v(a,t,o);if(n=Ee(e.e/S),n>=e.d.length-1&&(i=l<0?-l:l)<=gu)return r=Ao(u,a,i,t),e.s<0?new u(1).div(r):v(r,t,o);if(s=a.s,s<0){if(n<e.d.length-1)return new u(NaN);if(e.d[n]&1||(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return i=fe(+a,l),n=i==0||!isFinite(i)?Ee(l*(Math.log("0."+be(a.d))/Math.LN10+a.e+1)):new u(i+"").e,n>u.maxE+1||n<u.minE-1?new u(n>0?s/0:0):(D=!1,u.rounding=a.s=1,i=Math.min(12,(n+"").length),r=pr(e.times(gn(a,t+i)),t),r.d&&(r=v(r,t+5,1),xi(r.d,t,o)&&(n=t+10,r=v(pr(e.times(gn(a,n+i)),n),n+5,1),+be(r.d).slice(t+1,t+15)+1==1e14&&(r=v(r,t+1,0)))),r.s=s,D=!0,u.rounding=o,v(r,t,o))};h.toPrecision=function(e,n){var i,t=this,r=t.constructor;return e===void 0?i=He(t,t.e<=r.toExpNeg||t.e>=r.toExpPos):(Ie(e,1,xn),n===void 0?n=r.rounding:Ie(n,0,8),t=v(new r(t),e,n),i=He(t,e<=t.e||t.e<=r.toExpNeg,e)),t.isNeg()&&!t.isZero()?"-"+i:i};h.toSignificantDigits=h.toSD=function(e,n){var i=this,t=i.constructor;return e===void 0?(e=t.precision,n=t.rounding):(Ie(e,1,xn),n===void 0?n=t.rounding:Ie(n,0,8)),v(new t(i),e,n)};h.toString=function(){var e=this,n=e.constructor,i=He(e,e.e<=n.toExpNeg||e.e>=n.toExpPos);return e.isNeg()&&!e.isZero()?"-"+i:i};h.truncated=h.trunc=function(){return v(new this.constructor(this),this.e+1,1)};h.valueOf=h.toJSON=function(){var e=this,n=e.constructor,i=He(e,e.e<=n.toExpNeg||e.e>=n.toExpPos);return e.isNeg()?"-"+i:i};function be(e){var n,i,t,r=e.length-1,o="",s=e[0];if(r>0){for(o+=s,n=1;n<r;n++)t=e[n]+"",i=S-t.length,i&&(o+=pn(i)),o+=t;s=e[n],t=s+"",i=S-t.length,i&&(o+=pn(i))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ie(e,n,i){if(e!==~~e||e<n||e>i)throw Error(hn+e)}function xi(e,n,i,t){var r,o,s,a;for(o=e[0];o>=10;o/=10)--n;return--n<0?(n+=S,r=0):(r=Math.ceil((n+1)/S),n%=S),o=fe(10,S-n),a=e[r]%o|0,t==null?n<3?(n==0?a=a/100|0:n==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)&&(e[r+1]/o/100|0)==fe(10,n-2)-1||(a==o/2||a==0)&&(e[r+1]/o/100|0)==0:n<4?(n==0?a=a/1e3|0:n==1?a=a/100|0:n==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)&&(e[r+1]/o/1e3|0)==fe(10,n-3)-1,s}function rt(e,n,i){for(var t,r=[0],o,s=0,a=e.length;s<a;){for(o=r.length;o--;)r[o]*=n;for(r[0]+=dr.indexOf(e.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 xu(e,n){var i,t,r;if(n.isZero())return n;t=n.d.length,t<32?(i=Math.ceil(t/3),r=(1/ft(4,i)).toString()):(i=16,r="2.3283064365386962890625e-10"),e.precision+=i,n=Un(e,1,n.times(r),new e(1));for(var o=i;o--;){var s=n.times(n);n=s.times(s).minus(s).times(8).plus(1)}return e.precision-=i,n}var G=function(){function e(t,r,o){var s,a=0,u=t.length;for(t=t.slice();u--;)s=t[u]*r+a,t[u]=s%o|0,a=s/o|0;return a&&t.unshift(a),t}function n(t,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(t[a]!=r[a]){u=t[a]>r[a]?1:-1;break}return u}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,u){var l,f,d,c,p,g,b,_,M,$,F,se,Yi,Ke,or,Qi,gi,sr,Le,Xi,Ki=t.constructor,ar=t.s==r.s?1:-1,ye=t.d,J=r.d;if(!ye||!ye[0]||!J||!J[0])return new Ki(!t.s||!r.s||(ye?J&&ye[0]==J[0]:!J)?NaN:ye&&ye[0]==0||!J?ar*0:ar/0);for(u?(p=1,f=t.e-r.e):(u=Re,p=S,f=Ee(t.e/p)-Ee(r.e/p)),Le=J.length,gi=ye.length,M=new Ki(ar),$=M.d=[],d=0;J[d]==(ye[d]||0);d++);if(J[d]>(ye[d]||0)&&f--,o==null?(Ke=o=Ki.precision,s=Ki.rounding):a?Ke=o+(t.e-r.e)+1:Ke=o,Ke<0)$.push(1),g=!0;else{if(Ke=Ke/p+2|0,d=0,Le==1){for(c=0,J=J[0],Ke++;(d<gi||c)&&Ke--;d++)or=c*u+(ye[d]||0),$[d]=or/J|0,c=or%J|0;g=c||d<gi}else{for(c=u/(J[0]+1)|0,c>1&&(J=e(J,c,u),ye=e(ye,c,u),Le=J.length,gi=ye.length),Qi=Le,F=ye.slice(0,Le),se=F.length;se<Le;)F[se++]=0;Xi=J.slice(),Xi.unshift(0),sr=J[0],J[1]>=u/2&&++sr;do c=0,l=n(J,F,Le,se),l<0?(Yi=F[0],Le!=se&&(Yi=Yi*u+(F[1]||0)),c=Yi/sr|0,c>1?(c>=u&&(c=u-1),b=e(J,c,u),_=b.length,se=F.length,l=n(b,F,_,se),l==1&&(c--,i(b,Le<_?Xi:J,_,u))):(c==0&&(l=c=1),b=J.slice()),_=b.length,_<se&&b.unshift(0),i(F,b,se,u),l==-1&&(se=F.length,l=n(J,F,Le,se),l<1&&(c++,i(F,Le<se?Xi:J,se,u))),se=F.length):l===0&&(c++,F=[0]),$[d++]=c,l&&F[0]?F[se++]=ye[Qi]||0:(F=[ye[Qi]],se=1);while((Qi++<gi||F[0]!==void 0)&&Ke--);g=F[0]!==void 0}$[0]||$.shift()}if(p==1)M.e=f,Do=g;else{for(d=1,c=$[0];c>=10;c/=10)d++;M.e=d+f*p-1,v(M,a?o+M.e+1:o,s,g)}return M}}();function v(e,n,i,t){var r,o,s,a,u,l,f,d,c,p=e.constructor;e:if(n!=null){if(d=e.d,!d)return e;for(r=1,a=d[0];a>=10;a/=10)r++;if(o=n-r,o<0)o+=S,s=n,f=d[c=0],u=f/fe(10,r-s-1)%10|0;else if(c=Math.ceil((o+1)/S),a=d.length,c>=a)if(t){for(;a++<=c;)d.push(0);f=u=0,r=1,o%=S,s=o-S+1}else break e;else{for(f=a=d[c],r=1;a>=10;a/=10)r++;o%=S,s=o-S+r,u=s<0?0:f/fe(10,r-s-1)%10|0}if(t=t||n<0||d[c+1]!==void 0||(s<0?f:f%fe(10,r-s-1)),l=i<4?(u||t)&&(i==0||i==(e.s<0?3:2)):u>5||u==5&&(i==4||t||i==6&&(o>0?s>0?f/fe(10,r-s):0:d[c-1])%10&1||i==(e.s<0?8:7)),n<1||!d[0])return d.length=0,l?(n-=e.e+1,d[0]=fe(10,(S-n%S)%S),e.e=-n||0):d[0]=e.e=0,e;if(o==0?(d.length=c,a=1,c--):(d.length=c+1,a=fe(10,S-o),d[c]=s>0?(f/fe(10,r-s)%fe(10,s)|0)*a:0),l)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&&(e.e++,d[0]==Re&&(d[0]=1));break}else{if(d[c]+=a,d[c]!=Re)break;d[c--]=0,a=1}for(o=d.length;d[--o]===0;)d.pop()}return D&&(e.e>p.maxE?(e.d=null,e.e=NaN):e.e<p.minE&&(e.e=0,e.d=[0])),e}function He(e,n,i){if(!e.isFinite())return Po(e);var t,r=e.e,o=be(e.d),s=o.length;return n?(i&&(t=i-s)>0?o=o.charAt(0)+"."+o.slice(1)+pn(t):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(e.e<0?"e":"e+")+e.e):r<0?(o="0."+pn(-r-1)+o,i&&(t=i-s)>0&&(o+=pn(t))):r>=s?(o+=pn(r+1-s),i&&(t=i-r-1)>0&&(o=o+"."+pn(t))):((t=r+1)<s&&(o=o.slice(0,t)+"."+o.slice(t)),i&&(t=i-s)>0&&(r+1===s&&(o+="."),o+=pn(t))),o}function lt(e,n){var i=e[0];for(n*=S;i>=10;i/=10)n++;return n}function at(e,n,i){if(n>hu)throw D=!0,i&&(e.precision=i),Error(To);return v(new e(ot),n,1,!0)}function Fe(e,n,i){if(n>mr)throw Error(To);return v(new e(st),n,i,!0)}function Co(e){var n=e.length-1,i=n*S+1;if(n=e[n],n){for(;n%10==0;n/=10)i--;for(n=e[0];n>=10;n/=10)i++}return i}function pn(e){for(var n="";e--;)n+="0";return n}function Ao(e,n,i,t){var r,o=new e(1),s=Math.ceil(t/S+4);for(D=!1;;){if(i%2&&(o=o.times(n),Io(o.d,s)&&(r=!0)),i=Ee(i/2),i===0){i=o.d.length-1,r&&o.d[i]===0&&++o.d[i];break}n=n.times(n),Io(n.d,s)}return D=!0,o}function So(e){return e.d[e.d.length-1]&1}function Oo(e,n,i){for(var t,r=new e(n[0]),o=0;++o<n.length;)if(t=new e(n[o]),t.s)r[i](t)&&(r=t);else{r=t;break}return r}function pr(e,n){var i,t,r,o,s,a,u,l=0,f=0,d=0,c=e.constructor,p=c.rounding,g=c.precision;if(!e.d||!e.d[0]||e.e>17)return new c(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:0/0);for(n==null?(D=!1,u=g):u=n,a=new c(.03125);e.e>-2;)e=e.times(a),d+=5;for(t=Math.log(fe(2,d))/Math.LN10*2+5|0,u+=t,i=o=s=new c(1),c.precision=u;;){if(o=v(o.times(e),u,1),i=i.times(++f),a=s.plus(G(o,i,u,1)),be(a.d).slice(0,u)===be(s.d).slice(0,u)){for(r=d;r--;)s=v(s.times(s),u,1);if(n==null)if(l<3&&xi(s.d,u-t,p,l))c.precision=u+=10,i=o=a=new c(1),f=0,l++;else return v(s,c.precision=g,p,D=!0);else return c.precision=g,s}s=a}}function gn(e,n){var i,t,r,o,s,a,u,l,f,d,c,p=1,g=10,b=e,_=b.d,M=b.constructor,$=M.rounding,F=M.precision;if(b.s<0||!_||!_[0]||!b.e&&_[0]==1&&_.length==1)return new M(_&&!_[0]?-1/0:b.s!=1?NaN:_?0:b);if(n==null?(D=!1,f=F):f=n,M.precision=f+=g,i=be(_),t=i.charAt(0),Math.abs(o=b.e)<15e14){for(;t<7&&t!=1||t==1&&i.charAt(1)>3;)b=b.times(e),i=be(b.d),t=i.charAt(0),p++;o=b.e,t>1?(b=new M("0."+i),o++):b=new M(t+"."+i.slice(1))}else return l=at(M,f+2,F).times(o+""),b=gn(new M(t+"."+i.slice(1)),f-g).plus(l),M.precision=F,n==null?v(b,F,$,D=!0):b;for(d=b,u=s=b=G(b.minus(1),b.plus(1),f,1),c=v(b.times(b),f,1),r=3;;){if(s=v(s.times(c),f,1),l=u.plus(G(s,new M(r),f,1)),be(l.d).slice(0,f)===be(u.d).slice(0,f))if(u=u.times(2),o!==0&&(u=u.plus(at(M,f+2,F).times(o+""))),u=G(u,new M(p),f,1),n==null)if(xi(u.d,f-g,$,a))M.precision=f+=g,l=s=b=G(d.minus(1),d.plus(1),f,1),c=v(b.times(b),f,1),r=a=1;else return v(u,M.precision=F,$,D=!0);else return M.precision=F,u;u=l,r+=2}}function Po(e){return String(e.s*e.s/0)}function gr(e,n){var i,t,r;for((i=n.indexOf("."))>-1&&(n=n.replace(".","")),(t=n.search(/e/i))>0?(i<0&&(i=t),i+=+n.slice(t+1),n=n.substring(0,t)):i<0&&(i=n.length),t=0;n.charCodeAt(t)===48;t++);for(r=n.length;n.charCodeAt(r-1)===48;--r);if(n=n.slice(t,r),n){if(r-=t,e.e=i=i-t-1,e.d=[],t=(i+1)%S,i<0&&(t+=S),t<r){for(t&&e.d.push(+n.slice(0,t)),r-=S;t<r;)e.d.push(+n.slice(t,t+=S));n=n.slice(t),t=S-n.length}else t-=r;for(;t--;)n+="0";e.d.push(+n),D&&(e.e>e.constructor.maxE?(e.d=null,e.e=NaN):e.e<e.constructor.minE&&(e.e=0,e.d=[0]))}else e.e=0,e.d=[0];return e}function bu(e,n){var i,t,r,o,s,a,u,l,f;if(n.indexOf("_")>-1){if(n=n.replace(/(\d)_(?=\d)/g,"$1"),Mo.test(n))return gr(e,n)}else if(n==="Infinity"||n==="NaN")return+n||(e.s=NaN),e.e=NaN,e.d=null,e;if(mu.test(n))i=16,n=n.toLowerCase();else if(cu.test(n))i=2;else if(pu.test(n))i=8;else throw Error(hn+n);for(o=n.search(/p/i),o>0?(u=+n.slice(o+1),n=n.substring(2,o)):n=n.slice(2),o=n.indexOf("."),s=o>=0,t=e.constructor,s&&(n=n.replace(".",""),a=n.length,o=a-o,r=Ao(t,new t(i),o,o*2)),l=rt(n,i,Re),f=l.length-1,o=f;l[o]===0;--o)l.pop();return o<0?new t(e.s*0):(e.e=lt(l,f),e.d=l,D=!1,s&&(e=G(e,r,a*4)),u&&(e=e.times(Math.abs(u)<54?fe(2,u):E.pow(2,u))),D=!0,e)}function yu(e,n){var i,t=n.d.length;if(t<3)return n.isZero()?n:Un(e,2,n,n);i=1.4*Math.sqrt(t),i=i>16?16:i|0,n=n.times(1/ft(5,i)),n=Un(e,2,n,n);for(var r,o=new e(5),s=new e(16),a=new e(20);i--;)r=n.times(n),n=n.times(o.plus(r.times(s.times(r).minus(a))));return n}function Un(e,n,i,t,r){var o,s,a,u,l=1,f=e.precision,d=Math.ceil(f/S);for(D=!1,u=i.times(i),a=new e(t);;){if(s=G(a.times(u),new e(n++*n++),f,1),a=r?t.plus(s):t.minus(s),t=G(s.times(u),new e(n++*n++),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,l++}return D=!0,s.d.length=d+1,s}function ft(e,n){for(var i=e;--n;)i*=e;return i}function Lo(e,n){var i,t=n.s<0,r=Fe(e,e.precision,1),o=r.times(.5);if(n=n.abs(),n.lte(o))return en=t?4:1,n;if(i=n.divToInt(r),i.isZero())en=t?3:2;else{if(n=n.minus(i.times(r)),n.lte(o))return en=So(i)?t?2:3:t?4:1,n;en=So(i)?t?1:4:t?3:2}return n.minus(r).abs()}function hr(e,n,i,t){var r,o,s,a,u,l,f,d,c,p=e.constructor,g=i!==void 0;if(g?(Ie(i,1,xn),t===void 0?t=p.rounding:Ie(t,0,8)):(i=p.precision,t=p.rounding),!e.isFinite())f=Po(e);else{for(f=He(e),s=f.indexOf("."),g?(r=2,n==16?i=i*4-3:n==8&&(i=i*3-2)):r=n,s>=0&&(f=f.replace(".",""),c=new p(1),c.e=f.length-s,c.d=rt(He(c),10,r),c.e=c.d.length),d=rt(f,10,r),o=u=d.length;d[--u]==0;)d.pop();if(!d[0])f=g?"0p+0":"0";else{if(s<0?o--:(e=new p(e),e.d=d,e.e=o,e=G(e,c,i,t,0,r),d=e.d,o=e.e,l=Do),s=d[i],a=r/2,l=l||d[i+1]!==void 0,l=t<4?(s!==void 0||l)&&(t===0||t===(e.s<0?3:2)):s>a||s===a&&(t===4||l||t===6&&d[i-1]&1||t===(e.s<0?8:7)),d.length=i,l)for(;++d[--i]>r-1;)d[i]=0,i||(++o,d.unshift(1));for(u=d.length;!d[u-1];--u);for(s=0,f="";s<u;s++)f+=dr.charAt(d[s]);if(g){if(u>1)if(n==16||n==8){for(s=n==16?4:3,--u;u%s;u++)f+="0";for(d=rt(f,r,n),u=d.length;!d[u-1];--u);for(s=1,f="1.";s<u;s++)f+=dr.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>u)for(o-=u;o--;)f+="0";else o<u&&(f=f.slice(0,o)+"."+f.slice(o))}f=(n==16?"0x":n==2?"0b":n==8?"0o":"")+f}return e.s<0?"-"+f:f}function Io(e,n){if(e.length>n)return e.length=n,!0}function Eu(e){return new this(e).abs()}function Nu(e){return new this(e).acos()}function vu(e){return new this(e).acosh()}function _u(e,n){return new this(e).plus(n)}function Su(e){return new this(e).asin()}function Iu(e){return new this(e).asinh()}function Bu(e){return new this(e).atan()}function Du(e){return new this(e).atanh()}function Tu(e,n){e=new this(e),n=new this(n);var i,t=this.precision,r=this.rounding,o=t+4;return!e.s||!n.s?i=new this(NaN):!e.d&&!n.d?(i=Fe(this,o,1).times(n.s>0?.25:.75),i.s=e.s):!n.d||e.isZero()?(i=n.s<0?Fe(this,t,r):new this(0),i.s=e.s):!e.d||n.isZero()?(i=Fe(this,o,1).times(.5),i.s=e.s):n.s<0?(this.precision=o,this.rounding=1,i=this.atan(G(e,n,o,1)),n=Fe(this,o,1),this.precision=t,this.rounding=r,i=e.s<0?i.minus(n):i.plus(n)):i=this.atan(G(e,n,o,1)),i}function ku(e){return new this(e).cbrt()}function wu(e){return v(e=new this(e),e.e+1,2)}function Mu(e,n,i){return new this(e).clamp(n,i)}function Cu(e){if(!e||typeof e!="object")throw Error(ut+"Object expected");var n,i,t,r=e.defaults===!0,o=["precision",1,xn,"rounding",0,8,"toExpNeg",-zn,0,"toExpPos",0,zn,"maxE",0,zn,"minE",-zn,0,"modulo",0,9];for(n=0;n<o.length;n+=3)if(i=o[n],r&&(this[i]=cr[i]),(t=e[i])!==void 0)if(Ee(t)===t&&t>=o[n+1]&&t<=o[n+2])this[i]=t;else throw Error(hn+i+": "+t);if(i="crypto",r&&(this[i]=cr[i]),(t=e[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(ko);else this[i]=!1;else throw Error(hn+i+": "+t);return this}function Au(e){return new this(e).cos()}function Ou(e){return new this(e).cosh()}function Fo(e){var n,i,t;function r(o){var s,a,u,l=this;if(!(l instanceof r))return new r(o);if(l.constructor=r,Bo(o)){l.s=o.s,D?!o.d||o.e>r.maxE?(l.e=NaN,l.d=null):o.e<r.minE?(l.e=0,l.d=[0]):(l.e=o.e,l.d=o.d.slice()):(l.e=o.e,l.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){l.s=1/o<0?-1:1,l.e=0,l.d=[0];return}if(o<0?(o=-o,l.s=-1):l.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;D?s>r.maxE?(l.e=NaN,l.d=null):s<r.minE?(l.e=0,l.d=[0]):(l.e=s,l.d=[o]):(l.e=s,l.d=[o]);return}else if(o*0!==0){o||(l.s=NaN),l.e=NaN,l.d=null;return}return gr(l,o.toString())}else if(u!=="string")throw Error(hn+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),l.s=-1):(a===43&&(o=o.slice(1)),l.s=1),Mo.test(o)?gr(l,o):bu(l,o)}if(r.prototype=h,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=Cu,r.clone=Fo,r.isDecimal=Bo,r.abs=Eu,r.acos=Nu,r.acosh=vu,r.add=_u,r.asin=Su,r.asinh=Iu,r.atan=Bu,r.atanh=Du,r.atan2=Tu,r.cbrt=ku,r.ceil=wu,r.clamp=Mu,r.cos=Au,r.cosh=Ou,r.div=Pu,r.exp=Lu,r.floor=Fu,r.hypot=Ru,r.ln=qu,r.log=Vu,r.log10=zu,r.log2=$u,r.max=Uu,r.min=Gu,r.mod=ju,r.mul=Hu,r.pow=Zu,r.random=Ju,r.round=Wu,r.sign=Yu,r.sin=Qu,r.sinh=Xu,r.sqrt=Ku,r.sub=el,r.sum=nl,r.tan=il,r.tanh=tl,r.trunc=rl,e===void 0&&(e={}),e&&e.defaults!==!0)for(t=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],n=0;n<t.length;)e.hasOwnProperty(i=t[n++])||(e[i]=this[i]);return r.config(e),r}function Pu(e,n){return new this(e).div(n)}function Lu(e){return new this(e).exp()}function Fu(e){return v(e=new this(e),e.e+1,3)}function Ru(){var e,n,i=new this(0);for(D=!1,e=0;e<arguments.length;)if(n=new this(arguments[e++]),n.d)i.d&&(i=i.plus(n.times(n)));else{if(n.s)return D=!0,new this(1/0);i=n}return D=!0,i.sqrt()}function Bo(e){return e instanceof E||e&&e.toStringTag===wo||!1}function qu(e){return new this(e).ln()}function Vu(e,n){return new this(e).log(n)}function $u(e){return new this(e).log(2)}function zu(e){return new this(e).log(10)}function Uu(){return Oo(this,arguments,"lt")}function Gu(){return Oo(this,arguments,"gt")}function ju(e,n){return new this(e).mod(n)}function Hu(e,n){return new this(e).mul(n)}function Zu(e,n){return new this(e).pow(n)}function Ju(e){var n,i,t,r,o=0,s=new this(1),a=[];if(e===void 0?e=this.precision:Ie(e,1,xn),t=Math.ceil(e/S),this.crypto)if(crypto.getRandomValues)for(n=crypto.getRandomValues(new Uint32Array(t));o<t;)r=n[o],r>=429e7?n[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(n=crypto.randomBytes(t*=4);o<t;)r=n[o]+(n[o+1]<<8)+(n[o+2]<<16)+((n[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(n,o):(a.push(r%1e7),o+=4);o=t/4}else throw Error(ko);else for(;o<t;)a[o++]=Math.random()*1e7|0;for(t=a[--o],e%=S,t&&e&&(r=fe(10,S-e),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-=S)a.shift();for(t=1,r=a[0];r>=10;r/=10)t++;t<S&&(i-=S-t)}return s.e=i,s.d=a,s}function Wu(e){return v(e=new this(e),e.e+1,this.rounding)}function Yu(e){return e=new this(e),e.d?e.d[0]?e.s:0*e.s:e.s||NaN}function Qu(e){return new this(e).sin()}function Xu(e){return new this(e).sinh()}function Ku(e){return new this(e).sqrt()}function el(e,n){return new this(e).sub(n)}function nl(){var e=0,n=arguments,i=new this(n[e]);for(D=!1;i.s&&++e<n.length;)i=i.plus(n[e]);return D=!0,v(i,this.precision,this.rounding)}function il(e){return new this(e).tan()}function tl(e){return new this(e).tanh()}function rl(e){return v(e=new this(e),e.e+1,1)}h[Symbol.for("nodejs.util.inspect.custom")]=h.toString;h[Symbol.toStringTag]="Decimal";var E=h.constructor=Fo(cr);ot=new E(ot);st=new E(st);var xr=E;function ol(e){let n=[];for(let i=0;i<e.length;i++){let t=e.charCodeAt(i);if(t>=55296&&t<=56319){let r=e.charCodeAt(i+1);if(r>=56320&&r<=57343){let o=t-55296,s=r-56320;t=2**16+o*2**10+s,i++}}n.push(t)}return n}var dt=8205,Ro=[127462,127487];function qo(e){return e===dt||e===65038||e===65039||e>=127995&&e<=127995+5||e>=129456&&e<=129456+4||e>=917536&&e<=917536+96}function sl(e){return e>=Ro[0]&&e<=Ro[1]}function Vo(e){if(/^[\u0020-\u00FF]*$/.test(e))return e;let n=[],i=ol(e),t=0;for(;t<i.length;){let r=i[t++],o=i[t];if(o===dt){let s=t-1;for(t+=2;i[t]===dt;)t+=2;n.push(String.fromCodePoint(...i.slice(s,2*t-s+1)))}else if(qo(o)){let s=t-1;for(;qo(i[t]);)t+=i[t]===dt?2:1;n.push(String.fromCodePoint(...i.slice(s,2*t-s-1)))}else sl(r)?(t+=1,n.push(String.fromCodePoint(...i.slice(t-2,2)))):n.push(String.fromCodePoint(r))}return n}var br=class{constructor(n){this.obeyspaces=!1;n=n.replace(/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/g,""),this.s=Vo(n),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(n){let i;return typeof this.s=="string"?i=n.exec(this.s.slice(this.pos)):i=n.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 n=this.get();if(n==="\\"){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(n==="{")return"<{>";if(n==="}")return"<}>";if(n==="^"){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 n}else if(n==="#"){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(n==="$")return this.peek()==="$"?(this.get(),"<$$>"):"<$>"}return n}};function al(e,n){let i=e.next();if(!i)return[];let t=[];if(i!=="\\relax"){if(i==="\\noexpand")i=e.next(),i&&t.push(i);else if(i==="\\obeyspaces")e.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=e.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(;e.peek()==="<space>";)e.next();let r="",o=!1,s=[];do{if(s.length===0)if(/^#[0-9?]$/.test(e.peek())){let a=e.get().slice(1);s=q(n?.[a]??n?.["?"]??"\\placeholder{}",n),i=s[0]}else i=e.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(q(n?.[r]??n?.["?"]??"\\placeholder{}",n))}else t.push(i)}return t}function q(e,n){let i=e.toString().split(/\r?\n/),t="",r="";for(let a of i){t+=r,r=" ";let u=a.match(/((?:\\%)|[^%])*/);u!==null&&(t+=u[0])}let o=new br(t),s=[];do s.push(...al(o,n));while(!o.end());return s}function ct(e){return q(e,[]).length}function N(e){let n="",i="";for(let t of e)t&&(/[a-zA-Z*]/.test(t[0])&&(i+=n),/\\[a-zA-Z]+\*?$/.test(t)?n=" ":n="",i+=t);return i}function Ze(e){let n=[];if(Array.isArray(e))for(let t of e)Array.isArray(t)?n=[...n,...t]:n.push(t);else n=[e];return N(n.map(t=>({"<space>":" ","<$$>":"$$","<$>":"$","<{>":"{","<}>":"}"})[t]??t))}var $o=[{name:"To",latexTrigger:["\\to"],kind:"infix",precedence:270},{latexTrigger:["\\rightarrow"],kind:"infix",precedence:270,parse:"To"}];var Gn=["Error","'missing'"];function Bn(e){return e===null?!1:!!(typeof e=="number"||jn(e)||typeof e=="string"&&/^[+-]?[0-9\.]/.test(e))}function jn(e){return e!==null&&typeof e=="object"&&"num"in e}function yi(e){return e!==null&&typeof e=="object"&&"sym"in e}function ul(e){return e!==null&&typeof e=="object"&&"str"in e}function Ei(e){return e!==null&&typeof e=="object"&&"fn"in e}var yr;function jo(e){if(!yr){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("")}]*$`;yr=new RegExp(i,"u")}return yr.test(e)}function de(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)||Hn.test(e)?!0:jo(e)?/^[\p{XIDS}_]\p{XIDC}*$/u.test(e):!1}var ll="\\u{FE0F}",fl="\\u{20E3}",dl="\\u{200D}",cl="\\p{RI}\\p{RI}",ml="(?:[\\u{E0020}-\\u{E007E}]+\\u{E007F})",zo=`(?:\\p{EMod}|${ll}${fl}?|${ml})`,pl="(?:(?=\\P{XIDC})\\p{Emoji})",Uo=`(?:${pl}${zo}*|\\p{Emoji}${zo}+|${cl})`,Ho=`(?:${Uo})(${dl}${Uo})*`,gl=new RegExp(`(?:${Ho})+`,"u"),Hn=new RegExp(`^(?:${Ho})+$`,"u");function $e(e){return typeof e!="string"?"not-a-string":e===""?"empty-string":e.normalize()!==e?"expected-nfc":/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/.test(e)?"unexpected-bidi-marker":Hn.test(e)?"valid":/\p{XIDC}/u.test(e)&&gl.test(e)?"unexpected-mixed-emoji":jo(e)?de(e)?"valid":de(e[0])?"invalid-char":"invalid-first-char":"unexpected-script"}function Q(e){return e==null?null:typeof e=="object"&&"str"in e?e.str:typeof e!="string"||e.length<2||e[0]!=="'"||e[e.length-1]!=="'"?null:e.substring(1,e.length-1)}function Nr(e){if(e==null||Q(e)!==null)return null;let n=x(e);return n!==null?[n,...(B(e)??[]).map(i=>Nr(i)).filter(i=>i!==null)]:e}function x(e){return e==null?null:Array.isArray(e)?typeof e[0]=="string"&&!de(e[0])?(console.error(`Invalid identifier "${e[0]}": ${$e(e[0])}`),null):e[0]:Ei(e)?e.fn[0]:null}function Zo(e){let n=x(e);return typeof n=="string"?n:""}function B(e){return e==null?null:Array.isArray(e)?e.slice(1):Ei(e)?e.fn.slice(1):null}function m(e,n){return e==null?null:Array.isArray(e)?e[n]??null:Ei(e)?e.fn[n]??null:null}function qe(e){return m(e,1)}function Ve(e){return m(e,2)}function X(e){return e==null?0:Array.isArray(e)?Math.max(0,e.length-1):Ei(e)?Math.max(0,e.fn.length-1):0}function R(e){if(e==null||typeof e=="string"&&(/^[+\-\.0-9]/.test(e)||e.length>=2&&e[0]==="'"&&e[e.length-1]==="'"))return null;let n=yi(e)?e.sym:e;return typeof n!="string"?null:n}function Jo(e){if(e===null)return!1;let n=x(e);return!n||typeof n!="string"?!1:/^(List|Sequence|Tuple|Single|Pair|Triple)$/.test(n)}function Go(e){let n=x(e);if(n==="KeyValuePair"||n==="Tuple"||n==="Pair"){let i=Q(qe(e));return i?[i,Ve(e)??"Nothing"]:null}return null}function nn(e){if(e===null)return null;if(typeof e=="object"&&"dict"in e)return e.dict;let n=Go(e);if(n)return{[n[0]]:n[1]};if(x(e)==="Dictionary"){let t={};for(let r=1;r<X(e);r++){let o=Go(m(e,r));o&&(t[o[0]]=o[1])}return t}return null}function hl(e){if(e=e.toLowerCase().replace(/[nd]$/g,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,""),e==="nan")return NaN;if(e==="+infinity")return 1/0;if(e==="-infinity")return-1/0;if(/\([0-9]+\)/.test(e)){let[n,i,t,r]=e.match(/(.+)\(([0-9]+)\)(.*)$/)??[];e=i+t.repeat(Math.ceil(16/t.length))+(r??"")}return parseFloat(e)}function k(e){return e==null?null:typeof e=="number"?e:typeof e=="string"?hl(e):jn(e)?k(e.num):null}function Zn(e){if(e==null)return null;if(R(e)==="Half")return[1,2];let n=x(e);if(!n)return null;let i=null,t=null;if(n==="Negate"){let r=Zn(qe(e));if(r)return[-r[0],r[1]]}if((n==="Rational"||n==="Divide")&&(i=k(qe(e))??NaN,t=k(Ve(e))??NaN),n==="Power"){let r=k(Ve(e));r===1?(i=k(qe(e)),t=1):r===-1&&(i=1,t=k(qe(e)))}return n==="Multiply"&&x(Ve(e))==="Power"&&k(Ve(Ve(e)))===-1&&(i=k(qe(e)),t=k(qe(Ve(e)))),i===null||t===null?null:Number.isInteger(i)&&Number.isInteger(t)?[i,t]:null}function bi(e,n){let i=x(e);if(i!==null)return[bi(i,n),...(B(e)??[]).map(o=>bi(o,n))];let t=nn(e);if(t!==null){let o=Object.keys(t),s={};for(let a of o)s[a]=bi(t[a],n);return{dict:s}}let r=R(e);return r&&n[r]?n[r]:e}function mt(e,n){let i=null;if(Array.isArray(e)&&(i=e),Ei(e)&&(i=e.fn),i===null)return[];let t=1,r=[];for(;t<i.length;)r.push(n(i[t])),t+=1;return r}function ze(e,n,i,t="both"){if(t==="non")return[e,n,i];let r=x(n),o=x(i);return t==="left"?r===e?[e,...B(n)??[],i]:[e,n,i]:t==="right"?o===e?[e,n,...B(i)??[]]:[e,n,i]:r===e&&o===e?[e,...B(n)??[],...B(i)??[]]:r===e?[e,...B(n)??[],i]:o===e?[e,n,...B(i)??[]]:[e,n,i]}function Jn(e){if(e===null)return null;let n=x(e);if(n==="Delimiter"){if(e=m(e,1),e===null)return[];if(x(e)!=="Sequence")return[e]}return n=x(e),n!=="Sequence"?null:B(e)??[]}function j(e){return e!==null&&x(e)==="Sequence"&&X(e)===0}function H(e){return e===null||j(e)?Gn:e}function Er(e){return e[0]==="Square"?Er(e.slice(1))+2:e.reduce((n,i)=>n+Ni(i),0)}function Ni(e){if(e===null)return 0;if(typeof e=="number"||typeof e=="string"||Bn(e)||yi(e)||ul(e))return 1;if(Array.isArray(e))return Er(e);if("fn"in e)return Er(e.fn);let n=nn(e);if(n){let i=Object.keys(n);return 1+i.length+i.reduce((t,r)=>t+Ni(n[r]),0)}return 0}function Wo(e,n){return"paren"}function Yo(e,n){return"paren"}function bn(e,n){return n>2?"solidus":"radical"}function pt(e,n){if(n>3)return"inline-solidus";if(x(e)==="Divide"){let[i,t]=[Ni(qe(e)),Ni(Ve(e))];if(t<=2&&i>5)return"factor";if(i<=2&&t>5)return"reciprocal"}return"quotient"}function Qo(e,n){return"boolean"}function Xo(e,n){return"solidus"}function Ko(e,n){return"compact"}function xl(e){if(x(e)!=="Multiply")return[[],[]];let n=[],i=[],t=B(e)??[];for(let r of t)if(x(r)==="Power"){let o=m(r,1),s=m(r,2);if(x(s)==="Negate"){let a=m(s,1);o&&a&&i.push(["Power",o,a])}else{let a=k(s)??NaN;a===-1?o&&i.push(o):a<0?o&&i.push(["Power",o,-a]):n.push(r)}}else if(x(r)==="Rational"&&X(r)===2){let o=m(r,1),s=m(r,2);k(o)!==1&&n.push(o),k(s)!==1&&i.push(s)}else{let o=Zn(r);o!==null?(o[0]!==1&&n.push(o[0]),i.push(o[1])):n.push(r)}return[n,i]}function bl(e){let n=e.parseOptionalGroup(),i=e.parseGroup()??e.parseToken();return i===null||j(i)?n!==null?["Root",Gn,H(n)]:["Sqrt",Gn]:n!==null?["Root",i,n]:["Sqrt",i]}function vi(e,n,i,t){return i===null?"\\sqrt{}":(t=t??2,n==="solidus"?e.wrapShort(i)+"^{1\\/"+e.serialize(t)+"}":n==="quotient"?e.wrapShort(i)+"^{\\frac{1}{"+e.serialize(t)+"}}":k(t)===2?"\\sqrt{"+e.serialize(i)+"}":"\\sqrt["+e.serialize(t)+"]{"+e.serialize(i)+"}")}function yl(e,n){e.level-=1;let i=x(n),t="",r=m(n,1);if(i==="Negate")t="-"+e.wrap(r,276);else if(i==="Add"){if(e.canonical&&X(n)===2&&e.options.invisiblePlus!=="+"){let[a,u]=[m(n,1),m(n,2)],[l,f]=[a,u],d=k(l),c=Zn(f);if((d===null||c===null)&&([l,f]=[u,a],d=k(l),c=Zn(f)),d!==null&&c!==null&&isFinite(d)&&Number.isInteger(d)&&d>=0&&d<=1e3&&isFinite(c[0])&&isFinite(c[1])&&c[0]>0&&c[0]<=100&&c[1]<=100)return t=N([e.serialize(l),e.options.invisiblePlus,e.serialize(f)]),e.level+=1,t}let o=k(r)??NaN;t=e.serialize(r);let s=X(n)+1;for(let a=2;a<s;a++)if(r=m(n,a),o=k(r)??NaN,o<0)t+=e.serialize(r);else if(x(r)==="Negate")t+=e.wrap(r,275);else{let u=e.wrap(r,275);u[0]==="-"||u[0]==="+"?t+=u:t+="+"+u}}else if(i==="Subtract"){t=e.wrap(r,275);let o=m(n,2);if(o!==null){let s=e.wrap(o,275);s[0]==="-"?t+="+"+s.slice(1):s[0]==="+"?t+="-"+s.slice(1):t=t+"-"+s}}return e.level+=1,t}function rs(e,n){if(n===null)return"";e.level-=1;let i="";if(e.canonical===!0){let[a,u]=xl(n);u.length>0&&(u.length===1&&u[0]===1?a.length===0?i="1":a.length===1?i=e.serialize(a[0]):i=rs(e,["Multiply",...a]):i=e.serialize(["Divide",a.length===1?a[0]:["Multiply",...a],u.length===1?u[0]:["Multiply",...u]]))}if(i)return e.level+=1,i;let t=!1,r=null,o=X(n)+1,s=!1;for(let a=1;a<o;a++){if(r=m(n,a),r===null)continue;let u;if(Bn(r)){u=e.serialize(r),u==="-1"&&!i?(i="",t=!t):(u[0]==="-"&&(u=u.slice(1),t=!t),i=i?N([i,e.options.multiply,u]):u),s=!0;continue}if(x(r)==="Power"){let l=Zn(m(r,2));if(l){let[f,d]=l;if(f===1&&d!==null){i+=vi(e,bn(r,e.level),m(r,1),d),s=!1;continue}}}if(x(r)==="Power"&&!isNaN(k(m(r,1))??NaN)){u=e.serialize(r),i=i?N([i,e.options.multiply,u]):u,s=!0;continue}if(x(r)==="Negate"&&(r=m(r,1),t=!t),u=e.wrap(r,390),!i)i=u;else{let l=x(r);s&&(l==="Divide"||l==="Rational")?i=N([i,e.options.multiply,u]):e.options.invisibleMultiply?i=N([i,e.options.invisibleMultiply,u]):i=N([i,u])}s=!1}return e.level+=1,t?"-"+i:i}function El(e){let n=e.parseGroup(),i=null;if(n===null?(n=e.parseToken(),i=e.parseToken()):i=e.parseGroup(),n=H(n),i=H(i),x(n)==="PartialDerivative"&&(x(i)==="PartialDerivative"||x(i)==="Multiply"&&x(m(i,1))==="PartialDerivative")){let t=m(n,3)??null,r=m(n,1);r===null&&(r=H(e.parseExpression()));let o=[];if(x(i)==="Multiply"){for(let s of B(i)??[])if(x(s)==="PartialDerivative"){let a=m(s,2);a&&o.push(a)}}else{let s=m(i,2);s&&o.push(s)}return o.length>1&&(o=["List",...o]),["PartialDerivative",r,...o,t===null?1:t]}return["Divide",n,i]}function es(e,n){if(n===null)return"";let i=H(m(n,1)),t=H(m(n,2)),r=e.canonical?pt(n,e.level):"quotient";if(r==="inline-solidus"||r==="nice-solidus"){let u=e.wrapShort(i),l=e.wrapShort(t);return r==="inline-solidus"?`${u}\\/${l}`:`{}^{${u}}\\!\\!/\\!{}_{${l}}`}else{if(r==="reciprocal")return k(i)===1?e.wrap(t)+"^{-1}":e.wrap(i)+e.wrap(t)+"^{-1}";if(r==="factor")return k(t)===1?e.wrap(i):"\\frac{1}{"+e.serialize(t)+"}{"+e.wrap(i)+"}"}let o="\\frac";r==="block-quotient"?o="\\dfrac":r==="inline-quotient"&&(o="\\tfrac");let s=e.serialize(i),a=e.serialize(t);return`${o}{${s}}{${a}}`}function vr(e,n){let i=x(n),t=H(m(n,1));if(i==="Sqrt")return vi(e,bn(n,e.level-1),t,2);let r=H(m(n,2));if(i==="Root")return vi(e,bn(n,e.level-1),t,r);if(e.canonical){let o=k(r)??1;if(o===-1)return e.serialize(["Divide","1",t]);if(o<0)return e.serialize(["Divide","1",["Power",t,-o]]);if(x(r)==="Divide"||x(r)==="Rational"){if(k(m(r,1))===1){let s=bn(n,e.level);return vi(e,s,t,m(r,2))}if(k(m(r,2))===2)return`${e.serialize(["Sqrt",t])}^{${e.serialize(m(r,1))}}`}else if(x(r)==="Power"&&k(m(r,2))===-1){let s=bn(n,e.level);return vi(e,s,t,m(r,1))}}return e.wrapShort(t)+"^{"+e.serialize(r)+"}"}var os=[{name:"CatalanConstant",identifierTrigger:"G"},{name:"GoldenRatio",latexTrigger:"\\varphi"},{name:"EulerGamma",latexTrigger:"\\gamma"},{name:"Degrees",latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>["Degrees",n],serialize:(e,n)=>N([e.serialize(m(n,1)),"\\degree"])},{latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>["Degrees",n]},{latexTrigger:["^","<{>","\\circ","<}>"],kind:"postfix",parse:(e,n)=>["Degrees",n]},{latexTrigger:["^","\\circ"],kind:"postfix",parse:(e,n)=>["Degrees",n]},{latexTrigger:["\xB0"],kind:"postfix",precedence:880,parse:(e,n)=>["Degrees",n]},{latexTrigger:["\\ang"],parse:e=>{let n=e.parseGroup();return n===null?["Degrees"]:["Degrees",n]}},{latexTrigger:["\\infty"],parse:{num:"+Infinity"}},{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:(e,n)=>j(n)?null:["Abs",n]},{identifierTrigger:"abs",kind:"function",parse:"Abs"},{name:"Add",latexTrigger:["+"],kind:"infix",associativity:"both",precedence:275,parse:(e,n,i)=>{if(i&&275<i.minPrec)return null;let t=e.parseExpression({...i,minPrec:275});return t===null?null:ze("Add",n,t)},serialize:yl},{kind:"prefix",latexTrigger:["+"],precedence:275,parse:(e,n)=>n&&275<n.minPrec?null:e.parseExpression({...n,minPrec:400})},{name:"Ceil",kind:"matchfix",openTrigger:"\\lceil",closeTrigger:"\\rceil",parse:(e,n)=>j(n)?null:["Ceil",n]},{kind:"matchfix",openTrigger:["\u2308"],closeTrigger:["\u2309"],parse:(e,n)=>j(n)?null:["Ceil",n]},{identifierTrigger:"ceil",kind:"function",parse:"Ceil"},{name:"Chop",identifierTrigger:"chop",kind:"function",parse:"Chop"},{name:"Complex",precedence:274,serialize:(e,n)=>{let i=k(m(n,1)),t=k(m(n,2));if(t===0)return e.serialize(m(n,1));let r=t===1?"\\imaginaryI":t===-1?"-\\imaginaryI":N([e.serialize(m(n,2)),"\\imaginaryI"]);return i===0?r:t!==null&&t<0?N([e.serialize(m(n,1)),r]):N([e.serialize(m(n,1)),"+",r])}},{name:"Divide",latexTrigger:"\\frac",precedence:660,parse:El,serialize:es},{kind:"infix",latexTrigger:"\\over",precedence:660,parse:"Divide"},{latexTrigger:["\\/"],kind:"infix",associativity:"non",precedence:660,parse:"Divide"},{latexTrigger:["/"],kind:"infix",associativity:"non",precedence:660,parse:"Divide"},{latexTrigger:["\\div"],kind:"infix",associativity:"non",precedence:660,parse:"Divide"},{name:"Exp",serialize:(e,n)=>{let i=m(n,1);return R(i)||k(i)!==null?N(["\\exponentialE^{",e.serialize(i)]):N(["\\exp",e.wrap(H(i))])}},{name:"Factorial",latexTrigger:["!"],kind:"postfix",precedence:810},{name:"Factorial2",latexTrigger:["!","!"],kind:"postfix",precedence:810},{name:"Floor",kind:"matchfix",openTrigger:"\\lfloor",closeTrigger:"\\rfloor",parse:(e,n)=>j(n)?null:["Floor",n]},{kind:"matchfix",openTrigger:["\u230A"],closeTrigger:["\u230B"],parse:(e,n)=>j(n)?null:["Floor",n]},{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:(e,n)=>"\\log_{10}"+e.wrapArguments(n),parse:e=>{let n=e.parseArguments("implicit");return n===null?"Lg":["Log",...n,10]}},{name:"Lb",latexTrigger:"\\lb",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Log":["Log",...n,2]}},{name:"Ln",latexTrigger:["\\ln"],serialize:(e,n)=>"\\ln"+e.wrapArguments(n),parse:e=>ts("Ln",e)},{name:"Log",latexTrigger:["\\log"],parse:e=>ts("Log",e),serialize:(e,n)=>{let i=Ve(n);return i?N(["\\log_{",i.toString(),"}",e.wrap(qe(n))]):"\\log"+e.wrapArguments(n)}},{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:e=>{if(!e.match("_"))return;let n=e.parseGroup();if(x(n)!=="To")return;let i=e.parseArguments("implicit");if(i)return["Limit",["Function",i[0],m(n,1)],m(n,2)]},serialize:(e,n)=>{let i=m(n,1),t=m(i,2),r=m(n,2);return N(["\\lim_{",e.serialize(t),"\\to",e.serialize(r),"}",e.serialize(m(i,1))])}},{name:"MinusPlus",latexTrigger:["\\mp"],kind:"infix",associativity:"both",precedence:270},{name:"Multiply",latexTrigger:["\\times"],kind:"infix",associativity:"both",precedence:390,serialize:rs},{latexTrigger:["\\cdot"],kind:"infix",associativity:"both",precedence:390,parse:(e,n,i)=>{let t=e.parseExpression({...i,minPrec:392});return t===null?["Multiply",n,Gn]:ze("Multiply",n,t)}},{latexTrigger:["*"],kind:"infix",associativity:"both",precedence:390,parse:(e,n,i)=>{let t=e.parseExpression({...i,minPrec:392});return t===null?["Multiply",n,Gn]:ze("Multiply",n,t)}},{name:"Negate",latexTrigger:["-"],kind:"prefix",parse:(e,n)=>{let i=e.parseExpression({...n,minPrec:400});return["Negate",H(i)]},precedence:275},{kind:"matchfix",openTrigger:"||",closeTrigger:"||",parse:(e,n)=>j(n)?null:["Norm",n]},{name:"Norm",kind:"matchfix",openTrigger:["\\left","\\Vert"],closeTrigger:["\\right","\\Vert"],parse:(e,n)=>j(n)?null:["Norm",n]},{name:"PlusMinus",latexTrigger:["\\pm"],kind:"infix",associativity:"both",precedence:270,serialize:(e,n)=>{let i=m(n,1);if(i===null)return"\\pm";if(X(n)===1)return N(["\\pm",e.serialize(i)]);let t=m(n,2);return N([e.serialize(i),"\\pm",e.serialize(t)])}},{latexTrigger:["\\pm"],kind:"prefix",precedence:270,parse:(e,n)=>{let i=e.parseExpression({...n,minPrec:400});return["PlusMinus",H(i)]}},{latexTrigger:["\\plusmn"],kind:"infix",associativity:"both",precedence:270,parse:(e,n,i)=>{let t=e.parseExpression({...i,minPrec:400});return["PlusMinus",n,H(t)]}},{latexTrigger:["\\plusmn"],kind:"prefix",precedence:270,parse:(e,n)=>{let i=e.parseExpression({...n,minPrec:400});return["PlusMinus",H(i)]}},{name:"Power",latexTrigger:["^"],kind:"infix",serialize:vr},{latexTrigger:"\\prod",precedence:390,name:"Product",parse:ns("Product",390),serialize:is("\\prod")},{name:"Rational",precedence:660,serialize:(e,n)=>n&&X(n)===1?"\\operatorname{Rational}"+e.wrapArguments(n):es(e,n)},{name:"Root",serialize:vr},{name:"Round",identifierTrigger:"round",kind:"function"},{name:"Square",precedence:720,serialize:(e,n)=>e.wrapShort(m(n,1))+"^2"},{latexTrigger:["\\sum"],precedence:275,name:"Sum",parse:ns("Sum",275),serialize:is("\\sum")},{name:"Sign",identifierTrigger:"sgn",kind:"function"},{name:"Sqrt",latexTrigger:["\\sqrt"],parse:bl,serialize:vr},{name:"Subtract",latexTrigger:["-"],kind:"infix",associativity:"both",precedence:275,parse:(e,n,i)=>{let t=e.parseExpression({...i,minPrec:277});return["Subtract",n,H(t)]}}];function ns(e,n){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"||j(r))&&(r=null),(t==="Nothing"||j(t))&&(t=null);let o=null,s=null;x(r)==="Equal"?(o=m(r,1),s=m(r,2)):o=r;let a=i.parseExpression({minPrec:n+1});return a?t?[e,a,["Tuple",o??"Nothing",s??1,t]]:s?[e,a,["Tuple",o??"Nothing",s]]:o?[e,a,["Tuple",o]]:[e,a]:[e]}}function is(e){return(n,i)=>{if(!m(i,1))return e;let t=m(i,2),r=x(t);r!=="Tuple"&&r!=="Triple"&&r!=="Pair"&&r!=="Single"&&(t=null);let o=m(t,1);o&&x(o)==="Hold"&&(o=m(o,1));let s=m(i,1);if(!t)return m(i,2)?N([e,"_{",n.serialize(m(i,2)),"}",n.serialize(s)]):N([e,n.serialize(s)]);let a=m(t,2),u=[];o&&R(o)!=="Nothing"&&a?u=[n.serialize(o),"=",n.serialize(a)]:o&&R(o)!=="Nothing"?u=[n.serialize(o)]:a&&(u=[n.serialize(a)]),u.length>0&&(u=["_{",...u,"}"]);let l=[];return m(t,3)&&(l=["^{",n.serialize(m(t,3)),"}"]),N([e,...l,...u,n.serialize(s)])}}function ts(e,n){let i=null,t=null;n.match("_")&&(i=n.parseStringGroup()?.trim()??n.nextToken(),t=Number.parseFloat(i??"10"));let r=n.parseArguments("implicit");return r===null?e:t===10?["Log",r[0]]:t===2?["Lb",...r]:i===null?[e,...r]:["Log",...r,i]}function ss(e,n,i,t,r){if(n.minPrec>=t)return null;let o=[i],s=!1;for(;!s;){for(s=!0,e.skipSpace();e.match(r);)o.push("Nothing"),e.skipSpace();if(e.atTerminator(n))o.push("Nothing");else{let a=e.parseExpression({...n,minPrec:t});o.push(a??"Nothing"),s=a===null}s||(e.skipSpace(),s=!e.match(r))}return o}function _r(e=""){return(n,i)=>(B(i)??[]).map(t=>n.serialize(t)).join(e)}var as=[{latexTrigger:["\\placeholder"],kind:"symbol",parse:e=>{for(;e.match("<space>"););if(e.match("["))for(;!e.match("]")&&!e.atBoundary;)e.nextToken();for(;e.match("<space>"););if(e.match("<{>"))for(;!e.match("<}>")&&!e.atBoundary;)e.nextToken();return"Nothing"}},{name:"Function",latexTrigger:["\\mapsto"],kind:"infix",precedence:270,parse:(e,n)=>{let i=[];if(x(n)==="Delimiter"&&(n=m(n,1)??"Nothing"),x(n)==="Sequence")for(let r of B(n)??[])if(R(r))i.push(R(r));else return null;else if(R(n))i=[R(n)];else return null;let t=e.parseExpression({minPrec:270})??"Nothing";return x(t)==="Delimiter"&&(t=m(t,1)??"Nothing"),x(t)==="Sequence"&&(t=["Block",...B(t)??[]]),["Function",t,...i]},serialize:(e,n)=>{let i=B(n);return i===null||i.length<1?"()\\mapsto()":i.length===1?N(["()","\\mapsto",e.serialize(m(n,1))]):i.length===2?N([e.serialize(m(n,2)),"\\mapsto",e.serialize(m(n,1))]):N([e.wrapString((B(n)?.slice(1)??[]).map(t=>e.serialize(t)).join(", "),"paren"),"\\mapsto",e.serialize(m(n,1))])}},{name:"Apply",kind:"function",identifierTrigger:"apply",serialize:(e,n)=>{if(typeof m(n,1)=="string"){let t=n.slice(1);return e.serialize(t)}return e.serializeFunction(B(n))}},{latexTrigger:"\\lhd",kind:"infix",precedence:20,parse:"Apply"},{latexTrigger:"\\rhd",kind:"infix",precedence:20,parse:(e,n)=>["Apply",e.parseExpression({minPrec:21})??"Nothing",n]},{name:"Assign",latexTrigger:"\\coloneqq",kind:"infix",associativity:"right",precedence:260,serialize:(e,n)=>N([e.serialize(m(n,1)),"\\coloneqq",e.serialize(m(n,2))])},{latexTrigger:[":","="],kind:"infix",associativity:"right",precedence:260,parse:"Assign"},{latexTrigger:"\\colonequals",kind:"infix",associativity:"right",precedence:260,parse:"Assign"},{name:"BaseForm",serialize:(e,n)=>{let i=k(m(n,2))??NaN;if(isFinite(i)&&i>=2&&i<=36){let t=k(m(n,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}("+e.serialize(m(n,1))+", "+e.serialize(m(n,2))+")"}},{name:"Delimiter",serialize:(e,n)=>{let i=X(n);if(i===0)return"";let t=e.options.groupStyle(n,e.level+1),r=m(n,1),o=x(r),s={List:"[],",Sequence:""}[typeof o=="string"?o:""]??"(),",a=s[0]??"",u=s[1]??"",l=s[2]??"";if(i>1){let d=Q(m(n,2))??"";a=d[0]??s[0],u=d[1]??s[1],l=d[2]??s[2]}let f=Jo(r)?_r(l)(e,r):e.serialize(r);return e.wrapString(f,t,a+u)}},{name:"Domain",serialize:(e,n)=>x(n)==="Error"?e.serialize(n):`\\mathbf{${e.serialize(m(n,1))}}`},{latexTrigger:["\\mathtip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\texttip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\error"],parse:e=>["Error",e.parseGroup()]},{name:"Error",serialize:(e,n)=>{let i=m(n,1);if(Q(i)==="missing")return`\\error{${e.options.missingSymbol??"\\placeholder{}"}}`;let t=vl(e,n)||"\\blacksquare",r=x(i)==="ErrorCode"?Q(m(i,1)):Q(i);return r==="incompatible-domain"?R(m(i,3))==="Undefined"?`\\mathtip{\\error{${t}}}{\\notin ${e.serialize(m(i,2))}}`:`\\mathtip{\\error{${t}}}{\\in ${e.serialize(m(i,3))}\\notin ${e.serialize(m(i,2))}}`:typeof r=="string"?`\\error{${t}}`:`\\error{${t}}`}},{name:"ErrorCode",serialize:(e,n)=>{let i=Q(m(n,1));return i==="missing"?e.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:(e,n)=>`\\texttt{${us(Q(m(n,1)))}}`},{name:"Latex",serialize:(e,n)=>n===null?"":N(mt(n,i=>Q(i)??e.serialize(i)))},{name:"LatexString",serialize:(e,n)=>n===null?"":N(mt(n,i=>e.serialize(i)))},{name:"LatexTokens",serialize:Nl},{name:"List",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:Sl,serialize:(e,n)=>N(["\\bigl\\lbrack",_r(", ")(e,n),"\\bigr\\rbrack"])},{kind:"matchfix",openTrigger:"(",closeTrigger:")",parse:_l},{latexTrigger:[","],kind:"infix",precedence:20,parse:(e,n,i)=>{let t=ss(e,i,n,20,",");return t===null?null:["Sequence",...t]}},{name:"Range",latexTrigger:[".","."],kind:"infix",precedence:10,parse:Il,serialize:(e,n)=>{let i=B(n);if(i===null)return"";if(i.length===1)return"1.."+e.serialize(m(n,1));if(i.length===2)return e.wrap(m(n,1),10)+".."+e.wrap(m(n,2),10);if(i.length===3){let t=k(m(n,3)),r=k(m(n,1));return t!==null&&r!==null?e.wrap(m(n,1),10)+","+e.wrap(r+t,10)+".."+e.wrap(m(n,2),10):e.wrap(m(n,1),10)+","+(e.wrap(m(n,3),nt)+"+"+e.wrap(m(n,3),nt))+".."+e.wrap(m(n,2),10)}return""}},{name:"Sequence",serialize:_r("")},{latexTrigger:[";"],kind:"infix",precedence:19,parse:(e,n,i)=>{let t=ss(e,i,n,19,";");return t===null?null:["Sequence",...t.map(r=>x(r)==="Sequence"?["List",...B(r)??[]]:r)]}},{name:"String",latexTrigger:["\\text"],parse:e=>Sr(e),serialize:(e,n)=>{let i=B(n);return i===null||i.length===0?"\\text{}":N(["\\text{",i.map(t=>e.serialize(t)).join(""),"}"])}},{name:"Subscript",latexTrigger:["_"],kind:"infix",serialize:(e,n)=>X(n)===2?e.serialize(m(n,1))+"_{"+e.serialize(m(n,2))+"}":"_{"+e.serialize(m(n,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:(e,n)=>["Superstar",n]},{latexTrigger:["_","*"],kind:"postfix",parse:(e,n)=>["Substar",n]},{name:"Substar",latexTrigger:["_","\\star"],kind:"postfix"},{name:"Superdagger",latexTrigger:["^","\\dagger"],kind:"postfix"},{latexTrigger:["^","\\dag"],kind:"postfix",parse:(e,n)=>["Superdagger",n]},{name:"Prime",latexTrigger:["^","\\prime"],kind:"postfix",parse:(e,n)=>tn(e,n,1),serialize:(e,n)=>{let i=k(m(n,2))??1,t=e.serialize(m(n,1));return i===1?t+"^\\prime":i===2?t+"^\\doubleprime":i===3?t+"^\\tripleprime":t+"^{("+e.serialize(m(n,2))+")}"}},{latexTrigger:"^{\\prime\\prime}",kind:"postfix",parse:(e,n)=>tn(e,n,2)},{latexTrigger:"^{\\prime\\prime\\prime}",kind:"postfix",parse:(e,n)=>tn(e,n,3)},{latexTrigger:["^","\\doubleprime"],kind:"postfix",parse:(e,n)=>tn(e,n,2)},{latexTrigger:["^","\\tripleprime"],kind:"postfix",parse:(e,n)=>tn(e,n,3)},{latexTrigger:"'",kind:"postfix",precedence:810,parse:(e,n)=>tn(e,n,1)},{latexTrigger:"\\prime",kind:"postfix",precedence:810,parse:(e,n)=>tn(e,n,1)},{latexTrigger:"\\doubleprime",kind:"postfix",precedence:810,parse:(e,n)=>tn(e,n,2)},{latexTrigger:"\\tripleprime",kind:"postfix",precedence:810,parse:(e,n)=>tn(e,n,3)},{latexTrigger:["^","<{>","("],kind:"postfix",parse:(e,n)=>{if(!e.computeEngine?.box(n)?.domain?.isFunction)return null;let i=e.index;e.addBoundary([")"]);let t=e.parseExpression();return!e.matchBoundary()||!e.match("<}>")?(e.index=i,null):["Derivative",n,t]}},{name:"InverseFunction",latexTrigger:"^{-1",kind:"postfix",parse:(e,n)=>{if(!e.computeEngine?.box(n)?.domain?.isFunction)return null;let i=0,t=e.index;for(;!e.atEnd&&!e.match("<}>");)if(e.match("'"))i++;else if(e.match("\\prime"))i++;else if(e.match("\\doubleprime"))i+=2;else if(e.match("\\tripleprime"))i+=3;else return e.index=t,null;return i===1?["Derivative",["InverseFunction",n]]:i>0?["Derivative",["InverseFunction",n],i]:["InverseFunction",n]},serialize:(e,n)=>e.serialize(m(n,1))+"^{-1}"},{name:"Derivative",serialize:(e,n)=>{let i=k(m(n,2))??1,t=e.serialize(m(n,1));return i===1?t+"^{\\prime}":i===2?t+"^{\\doubleprime}":i===3?t+"^{\\tripleprime}":t+"^{("+e.serialize(m(n,2))+")}"}},{kind:"environment",name:"Which",identifierTrigger:"cases",parse:e=>{let n=e.parseTabular();if(!n)return["Which"];let i=["Which"];for(let t of n)if(t.length===1)i.push("True"),i.push(t[0]);else if(t.length===2){let r=Q(t[1]);i.push(r?"True":Nr(t[1])??"True"),i.push(t[0])}return i},serialize:(e,n)=>{let i=[],t=B(n);if(t)for(let r=0;r<=t.length-2;r+=2){let o=[];o.push(e.serialize(t[r+1])),o.push(e.serialize(t[r])),i.push(o.join("&"))}return N(["\\begin{cases}",i.join("\\\\"),"\\end{cases}"])}}];function Sr(e,n){if(!e.match("<{>"))return"''";let i=[],t="",r=null;for(;!e.atEnd&&!e.match("<}>");)if(e.peek==="<{>")i.push(Sr(e));else if(e.match("\\textbf")&&e.match("<{>"))i.push(Sr(e,{"font-weight":"bold"}));else if(e.match("\\color")){let s=e.parseStringGroup();s!==null&&(r!==null&&t?i.push(["Style",t,{dict:r}]):t&&i.push(["String",t]),t="",r={color:s})}else if(e.match("<space>"))t+=" ";else if(e.match("<$>")){let s=e.index,a=e.parseExpression()??["Sequence"];e.skipSpace(),e.match("<$>")?i.push(a):(t+="$",e.index=s)}else if(e.match("<$$>")){let s=e.index,a=e.parseExpression()??["Sequence"];e.skipSpace(),e.match("<$$>")?i.push(a):(t+="$$",e.index=s)}else t+=e.matchChar()??e.nextToken();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=>Q(s)!==null)?o="'"+i.map(s=>Q(s)).join()+"'":o=["String",...i],n?["Style",o,{dict:n}]:o}function Nl(e,n){return n===null?"":N(mt(n,i=>{let t=Q(i);return t===null?e.serialize(i):t==="<{>"?"{":t==="<}>"?"}":t==="<$>"?"$":t==="<$$>"?"$$":t==="<space>"?" ":t}))}function us(e){return e===null?"":e.replace(/[{}\[\]\\:\-\$%]/g,n=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "})[n]??"\\"+n)}function vl(e,n){let i=m(n,2);return i?x(i)==="LatexString"?`\\texttt{${us(Q(m(i,1))??"")}}`:x(i)==="Hold"?e.serialize(m(i,1)):e.serialize(i):""}function tn(e,n,i){let t=x(n);if(t==="Derivative"||t==="Prime"){let r=k(m(n,2))??1;return[t,H(m(n,1)),r+i]}return e.computeEngine?.box(n)?.domain?.isFunction?i===1?["Derivative",n]:["Derivative",n,i]:i===1?["Prime",H(n)]:["Prime",H(n),i]}function _l(e,n){return n===null||j(n)?["Sequence"]:x(n)==="Sequence"?X(n)===0?["Delimiter"]:["Delimiter",["Sequence",...B(n)??[]]]:["Delimiter",n]}function Sl(e,n){return n===null||j(n)?["List"]:x(n)==="Range"?n:x(n)!=="Sequence"&&x(n)!=="List"?["List",n]:["List",...B(n)??[]]}function Il(e,n){let i=e.index;if(!n)return null;let t=null,r=null;if(x(n)==="Sequence"){if(X(n)!==2)return null;if(t=m(n,1),r=m(n,2),r===null)return e.index=i,null}else t=m(n,1);if(t===null)return null;let o=e.parseExpression({minPrec:0});if(!o)return e.index=i,null;if(r){let s=k(r),a=k(t);return s!==null&&a!==null?["Range",t,o,s-a]:["Range",t,o,["Subtract",r,t]]}return["Range",t,o]}var ls=[{latexTrigger:["\\not","<"],kind:"infix",associativity:"right",precedence:246,parse:"NotLess"},{name:"NotLess",latexTrigger:["\\nless"],kind:"infix",associativity:"right",precedence:246},{latexTrigger:["<"],kind:"infix",associativity:"right",precedence:245,parse:"Less"},{name:"Less",latexTrigger:["\\lt"],kind:"infix",associativity:"right",precedence:245},{latexTrigger:["<","="],kind:"infix",associativity:"right",precedence:241,parse:"LessEqual"},{name:"LessEqual",latexTrigger:["\\le"],kind:"infix",associativity:"right",precedence:241},{latexTrigger:["\\leq"],kind:"infix",associativity:"right",precedence:241,parse:"LessEqual"},{latexTrigger:["\\leqslant"],kind:"infix",associativity:"right",precedence:265,parse:"LessEqual"},{name:"LessNotEqual",latexTrigger:["\\lneqq"],kind:"infix",associativity:"right",precedence:260},{name:"NotLessNotEqual",latexTrigger:["\\nleqq"],kind:"infix",associativity:"right",precedence:260},{name:"LessOverEqual",latexTrigger:["\\leqq"],kind:"infix",associativity:"right",precedence:265},{name:"GreaterOverEqual",latexTrigger:["\\geqq"],kind:"infix",associativity:"right",precedence:265,parse:"GreaterEqual"},{name:"Equal",latexTrigger:["="],kind:"infix",associativity:"right",precedence:260},{latexTrigger:["*","="],kind:"infix",associativity:"right",precedence:260,parse:"StarEqual"},{name:"StarEqual",latexTrigger:["\\star","="],kind:"infix",associativity:"right",precedence:260},{name:"PlusEqual",latexTrigger:["+","="],kind:"infix",associativity:"right",precedence:260},{name:"MinusEqual",latexTrigger:["-","="],kind:"infix",associativity:"right",precedence:260},{name:"SlashEqual",latexTrigger:["/","="],kind:"infix",associativity:"right",precedence:260},{name:"EqualEqual",latexTrigger:["=","="],kind:"infix",associativity:"right",precedence:260},{name:"EqualEqualEqual",latexTrigger:["=","=","="],kind:"infix",associativity:"right",precedence:265},{name:"TildeFullEqual",latexTrigger:["\\cong"],kind:"infix",associativity:"right",precedence:260},{name:"NotTildeFullEqual",latexTrigger:["\\ncong"],kind:"infix",associativity:"right",precedence:260},{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:260},{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:260},{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:265,parse:"GreaterEqual"},{name:"GreaterNotEqual",latexTrigger:["\\gneqq"],kind:"infix",associativity:"right",precedence:260},{name:"NotGreaterNotEqual",latexTrigger:["\\ngeqq"],kind:"infix",associativity:"right",precedence:260},{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:260},{name:"TriangleEqual",latexTrigger:["\\triangleq"],kind:"infix",associativity:"right",precedence:260},{name:"DotEqual",latexTrigger:["\\doteq"],kind:"infix",associativity:"right",precedence:265},{name:"DotEqualDot",latexTrigger:["\\doteqdot"],kind:"infix",associativity:"right",precedence:265},{name:"FallingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:265},{name:"RisingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:265},{name:"QuestionEqual",latexTrigger:["\\questeq"],kind:"infix",associativity:"right",precedence:260},{name:"MuchLess",latexTrigger:["\\ll"],kind:"infix",associativity:"right",precedence:260},{name:"MuchGreater",latexTrigger:["\\gg"],kind:"infix",associativity:"right",precedence:260},{name:"Precedes",latexTrigger:["\\prec"],kind:"infix",associativity:"right",precedence:260},{name:"Succeeds",latexTrigger:["\\succ"],kind:"infix",associativity:"right",precedence:260},{name:"PrecedesEqual",latexTrigger:["\\preccurlyeq"],kind:"infix",associativity:"right",precedence:260},{name:"SucceedsEqual",latexTrigger:["\\curlyeqprec"],kind:"infix",associativity:"right",precedence:260},{name:"NotPrecedes",latexTrigger:["\\nprec"],kind:"infix",associativity:"right",precedence:260},{name:"NotSucceeds",latexTrigger:["\\nsucc"],kind:"infix",associativity:"right",precedence:260},{name:"Between",latexTrigger:["\\between"],kind:"infix",associativity:"right",precedence:265}];var fs=[{name:"True",kind:"symbol",latexTrigger:["\\top"]},{kind:"symbol",latexTrigger:"\\mathrm{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\operator{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\mathsf{T}",parse:"True"},{name:"False",kind:"symbol",latexTrigger:["\\bot"]},{kind:"symbol",latexTrigger:"\\operator{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},{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:"Equivalent"},{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"}];function Be(e){return n=>{let i=n.parseGroup();return i===null?[e]:[e,i]}}var ds=[{name:"Overscript",latexTrigger:["\\overset"],kind:"infix",precedence:700},{name:"Underscript",latexTrigger:["\\underset"],kind:"infix",precedence:700},{name:"Increment",latexTrigger:["+","+"],kind:"postfix",precedence:880},{name:"Decrement",latexTrigger:["-","-"],kind:"postfix",precedence:880},{name:"PreIncrement",latexTrigger:["+","+"],kind:"prefix",precedence:880},{name:"PreDecrement",latexTrigger:["-","-"],kind:"prefix",precedence:880},{name:"Ring",latexTrigger:["\\circ"],kind:"infix",precedence:265},{name:"Transpose",latexTrigger:["^","T"],kind:"postfix"},{name:"ConjugateTranspose",latexTrigger:["^","H"],kind:"postfix"},{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:e=>{let n=!1,i="Nothing",t="Nothing";for(;!n;)e.skipSpace(),e.match("_")?t=e.parseGroup()??e.parseToken():e.match("^")?i=e.parseGroup()??e.parseToken():n=!0;let r=Jn(t);if(r&&(t=["List",...r]),t===null||i===null)return null;let o=e.parseGroup()??"Nothing";if(o!=="Nothing"&&!j(o)){let s=e.parseArguments()??["Nothing"];o=[o,...s]}return["PartialDerivative",o,t,i]},serialize:(e,n)=>{let i="\\partial",t=m(n,1),r=m(n,2),o=m(n,3);return r!==null&&r!=="Nothing"&&(x(r)==="List"?i+="_{"+e.serialize(["Sequence",...B(r)??[]])+"}":i+="_{"+e.serialize(r)+"}"),o!==null&&o!=="Nothing"&&(i+="^{"+e.serialize(o)+"}"),t!==null&&t!=="Nothing"&&(i+=e.serialize(t)),i},precedence:740},{name:"OverBar",latexTrigger:["\\overline"],parse:Be("OverBar")},{name:"UnderBar",latexTrigger:["\\underline"],parse:Be("UnderBar")},{name:"OverVector",latexTrigger:["\\vec"],parse:Be("OverVector")},{name:"OverTilde",latexTrigger:["\\tilde"],parse:Be("OverTilde")},{name:"OverHat",latexTrigger:["\\hat"],parse:Be("OverHat")},{name:"OverRightArrow",latexTrigger:["\\overrightarrow"],parse:Be("OverRightArrow")},{name:"OverLeftArrow",latexTrigger:["\\overleftarrow"],parse:Be("OverLeftArrow")},{name:"OverRightDoubleArrow",latexTrigger:["\\Overrightarrow"],parse:Be("OverRightDoubleArrow")},{name:"OverLeftHarpoon",latexTrigger:["\\overleftharpoon"],parse:Be("OverLeftHarpoon")},{name:"OverRightHarpoon",latexTrigger:["\\overrightharpoon"],parse:Be("OverRightHarpoon")},{name:"OverLeftRightArrow",latexTrigger:["\\overleftrightarrow"],parse:Be("OverLeftRightArrow")},{name:"OverBrace",latexTrigger:["\\overbrace"],parse:Be("OverBrace")},{name:"OverLineSegment",latexTrigger:["\\overlinesegment"],parse:Be("OverLineSegment")},{name:"OverGroup",latexTrigger:["\\overgroup"],parse:Be("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:(e,n)=>{let i=e.serialize(m(n,1)),t=nn(m(n,2));if(t===null)return i;Q(t.display)==="block"?i=N(["{\\displaystyle",i,"}"]):Q(t.display)==="inline"?i=N(["{\\textstyle",i,"}"]):Q(t.display)==="script"?i=N(["{\\scriptstyle",i,"}"]):Q(t.display)==="scriptscript"&&(i=N(["{\\scriptscriptstyle",i,"}"]));let r=k(t.size);return r!==null&&r>=1&&r<=10&&(i=N(["{",{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:(e,n)=>{if(m(n,2))return e.serialize(m(n,1));let i=k(m(n,1));return i===null?"":{"-3":"\\!",6:"\\ ",3:"\\,",4:"\\:",5:"\\;",9:"\\enspace",18:"\\quad",36:"\\qquad"}[i]??""}}];function z(e){return(n,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","\\ctg":"Cot","\\cth":"Coth","\\sec":"Sec","\\sin":"Sin","\\sinh":"Sinh","\\sh":"Sinh","\\tan":"Tan","\\tanh":"Tanh","\\tg":"Tan","\\th":"Tanh"}[e??""]??e??"";if(n.atTerminator(i))return t;let r=t;do{let u=n.parsePostfixOperator(r,i);if(u===null)break;r=u}while(!0);let o=null;n.match("^")&&(o=n.parseGroup()??n.parseToken());let s=n.parseArguments("implicit",i),a=s===null?r:typeof r=="string"?[r,...s]:["Apply",r,...s];return o===null?a:["Power",a,o]}}var cs=[{name:"Arcsin",latexTrigger:["\\arcsin"],parse:z("Arcsin")},{name:"Arccos",latexTrigger:["\\arccos"],parse:z("Arccos")},{name:"Arctan",latexTrigger:["\\arctan"],parse:z("Arctan")},{latexTrigger:["\\arctg"],parse:z("Arctan")},{name:"Arccot",latexTrigger:["\\arcctg"],parse:z("Arccot")},{name:"Arcsec",latexTrigger:"arcsec",parse:z("Arcsec")},{name:"Arccsc",latexTrigger:["\\arccsc"],parse:z("Arccsc")},{name:"Arsinh",latexTrigger:["\\arsinh"],parse:z("Arsinh")},{name:"Arcosh",latexTrigger:["\\arcosh"],parse:z("Arcosh")},{name:"Artanh",latexTrigger:["\\artanh"],parse:z("Artanh")},{name:"Arsech",latexTrigger:["\\arsech"],parse:z("Arsech")},{name:"Arcsch",latexTrigger:["\\arcsch"],parse:z("Arcsch")},{latexTrigger:["\\ch"],parse:z("Cosh")},{name:"Cosec",latexTrigger:["\\cosec"],parse:z("Cosec")},{name:"Cosh",latexTrigger:["\\cosh"],parse:z("Cosh")},{name:"Cot",latexTrigger:["\\cot"],parse:z("Cot")},{latexTrigger:["\\cotg"],parse:z("Cot")},{name:"Coth",latexTrigger:["\\coth"],parse:z("Coth")},{name:"Csc",latexTrigger:["\\csc"],parse:z("Csc")},{latexTrigger:["\\ctg"],parse:z("Cot")},{latexTrigger:["\\cth"],parse:z("Cotanh")},{name:"Sec",latexTrigger:["\\sec"],parse:z("Sec")},{name:"Sinh",latexTrigger:["\\sinh"],parse:z("Sinh")},{latexTrigger:["\\sh"],parse:z("Sinh")},{name:"Tan",latexTrigger:["\\tan"],parse:z("Tan")},{latexTrigger:["\\tg"],parse:z("Tan")},{name:"Tanh",latexTrigger:["\\tanh"],parse:z("Tanh")},{latexTrigger:["\\th"],parse:z("Tanh")},{name:"Cos",latexTrigger:["\\cos"],parse:z("Cos")},{name:"Sin",latexTrigger:["\\sin"],parse:z("Sin")}];var ps=[{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"},{name:"CartesianProduct",latexTrigger:["\\times"],kind:"infix",associativity:"right",precedence:390,parse:(e,n,i)=>{if(390<i.minPrec)return null;let t=e.computeEngine;if(!t||!t.box(n).domain.isCompatible("Sets"))return null;let r=e.index,o=e.parseExpression({...i,minPrec:390});return o===null||t.box(n).domain.isCompatible("Sets")!==!0?(e.index=r,null):["CartesianProduct",n,o]}},{latexTrigger:["^","\\complement"],kind:"postfix",parse:(e,n)=>["Complement",n]},{name:"Complement",latexTrigger:["^","<{>","\\complement","<}>"],kind:"postfix"},{name:"Intersection",latexTrigger:["\\cap"],kind:"infix",precedence:350},{name:"Interval",serialize:ms},{name:"Multiple",serialize:ms},{name:"Union",latexTrigger:["\\cup"],kind:"infix",precedence:350},{name:"Set",kind:"matchfix",openTrigger:"{",closeTrigger:"}",precedence:20,parse:(e,n)=>n===null||j(n)?"EmptySet":x(n)!=="Sequence"?["Set",n]:["Set",...B(n)??[]],serialize:(e,n)=>N(["\\lbrace",(B(n)??[]).map(i=>e.serialize(i)).join(", "),"\\rbrace"])},{name:"SetMinus",latexTrigger:["\\setminus"],kind:"infix",precedence:650},{name:"SymmetricDifference",latexTrigger:["\\triangle"],kind:"infix",precedence:260},{latexTrigger:["\\ni"],kind:"infix",associativity:"right",precedence:160,parse:(e,n,i)=>{let t=e.parseExpression(i);return t===null?null:["Element",t,n]}},{name:"Element",latexTrigger:["\\in"],kind:"infix",precedence:240},{name:"NotElement",latexTrigger:["\\notin"],kind:"infix",precedence:240},{name:"NotSubset",latexTrigger:["\\nsubset"],kind:"infix",associativity:"right",precedence:240},{name:"NotSuperset",latexTrigger:["\\nsupset"],kind:"infix",associativity:"right",precedence:240},{name:"NotSubsetNotEqual",latexTrigger:["\\nsubseteq"],kind:"infix",associativity:"right",precedence:240},{name:"NotSupersetNotEqual",latexTrigger:["\\nsupseteq"],kind:"infix",associativity:"right",precedence:240},{name:"SquareSubset",latexTrigger:["\\sqsubset"],kind:"infix",associativity:"right",precedence:265},{name:"SquareSubsetEqual",latexTrigger:["\\sqsubseteq"],kind:"infix",associativity:"right",precedence:265},{name:"SquareSuperset",latexTrigger:["\\sqsupset"],kind:"infix",associativity:"right",precedence:265},{name:"SquareSupersetEqual",latexTrigger:["\\sqsupseteq"],kind:"infix",associativity:"right",precedence:265},{name:"Subset",latexTrigger:["\\subset"],kind:"infix",associativity:"right",precedence:240},{latexTrigger:["\\subsetneq"],kind:"infix",associativity:"right",precedence:240,parse:"Subset"},{latexTrigger:["\\varsubsetneqq"],kind:"infix",associativity:"right",precedence:240,parse:"Subset"},{name:"SubsetEqual",latexTrigger:["\\subseteq"],kind:"infix",precedence:240},{name:"Superset",latexTrigger:["\\supset"],kind:"infix",associativity:"right",precedence:240},{latexTrigger:["\\supsetneq"],kind:"infix",associativity:"right",precedence:240,parse:"Superset"},{latexTrigger:["\\varsupsetneq"],kind:"infix",associativity:"right",precedence:240,parse:"Superset"},{name:"SupersetEqual",latexTrigger:["\\supseteq"],kind:"infix",associativity:"right",precedence:240}];function ms(e,n){if(n===null)return"";let i=x(n);if(i===null)return"";if(i==="Set")return X(n)===0?"\\emptyset":X(n)===2&&x(m(n,2))==="Condition"?N(["\\left\\lbrace",e.serialize(m(n,1)),"\\middle\\mid",e.serialize(m(n,2)),"\\right\\rbrace"]):N(["\\left\\lbrace",...(B(n)??[]).map(r=>e.serialize(r)+" ,"),"\\right\\rbrace"]);if(i==="Range")return N(["\\mathopen\\lbrack",e.serialize(m(n,1)),", ",e.serialize(m(n,2)),"\\mathclose\\rbrack"]);if(i==="Interval"){let r=m(n,1),o=m(n,2),s=!1,a=!1;return x(r)==="Open"&&(r=m(r,1),s=!0),x(o)==="Open"&&(o=m(o,1),a=!0),N([`\\mathopen${s?"\\rbrack":"\\lbrack"}`,e.serialize(r),", ",e.serialize(o),`\\mathclose${a?"\\lbrack":"\\rbrack"}`])}let t=e.numericSetStyle(n,e.level);return""}function Wn(e,n=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"||j(r))&&(r=null),(t==="Nothing"||j(t))&&(t=null);let[o,s]=Dl(i,n);if(o&&!s){if(x(o)==="Add"||x(o)==="Subtract"){let a=[],u=[];for(let l of B(o)??[])if(s)u.push(l);else{let f;[f,s]=rn(l),a.push(f??l)}if(s!==null&&u.length>0)return["Add",gs(i,e,["Add",...a],[{index:s,sub:r,sup:t}]),...u]}else if(x(o)==="Divide"){let a;[a,s]=rn(m(o,1)),a!==null&&s!==null&&(o=["Divide",a,m(o,2)])}}return gs(i,e,o,[{index:s,sub:r,sup:t}])}}function gs(e,n,i,t){if(i&&t.length===0)return[n,i];if(i??(i="Nothing"),e.computeEngine){let r=e.computeEngine,o=!1,s={};for(let a of t)a.index&&(o=!0,s[a.index]={domain:"ExtendedRealNumbers"});o&&r.pushScope().declare(s),i=r.box(i).json,o&&r.popScope()}return[n,i,...t.map(r=>Bl(r))]}function Bl(e){let n=e.index?["Hold",e.index]:"Nothing";return e.sup!==null?["Tuple",n,e.sub??"Nothing",e.sup]:e.sub!==null?["Tuple",n,e.sub]:n}function Dl(e,n=1){let i=e.index,t=!1,r=e.parseExpression({minPrec:266,condition:()=>((e.matchAll(["\\mathrm","<{>","d","<}>"])||e.matchAll(["\\operatorname","<{>","d","<}>"]))&&(t=!0),t)});if(t||(e.index=i,r=e.parseExpression({minPrec:266,condition:()=>(e.match("d")&&(t=!0),t)})),r&&!t)return rn(r);let o=Tl(e,n);return[r,o[0]??null]}function Tl(e,n=1){e.skipSpace();let i=[],t=R(e.parseSymbol());return t===null?[]:(i.push(t),i)}function rn(e){let n=x(e),i=m(e,1);if(!i)return[e,null];if(n==="Multiply"){let t=B(e);if(t&&t.length>1){let r=R(t[t.length-2]);if(r==="d"||r==="d_upright")return t.length===2?[null,R(t[1])]:t.length===3?[t[0],R(t[2])]:[["Multiply",...t.slice(0,-2)],R(t[t.length-1])];let[o,s]=rn(t[t.length-1]);if(o)return[["Multiply",...t.slice(0,-1),o],s]}}else if(n==="Delimiter"){let[t,r]=rn(i);if(r)return t?[["Delimiter",t,...B(e).slice(1)],r]:[null,r]}else if(n==="Add"){let t=B(e);if(t&&t.length>0){let[r,o]=rn(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(n==="Negate"){let[t,r]=rn(i);if(r)return[t?["Negate",t]:null,r]}else if(n==="Divide"){let[t,r]=rn(i);if(r)return[["Divide",t??1,m(e,2)],r]}else{let t=B(e);if(t?.length===1){let[r,o]=rn(t[0]);if(o)return[[x(e),r],o]}}return[e,null]}function hs(e){return(n,i)=>{if(!m(i,1))return e;let t=m(i,2),r=x(t),o=null;r==="Tuple"||r==="Triple"||r==="Pair"||r==="Single"?o=m(t,1):r==="Hold"?o=m(t,1):(o=m(t,1)??"x",t=null),x(o)==="Hold"&&(o=m(o,1));let s=o!==null?R(o):null,a=m(i,1);if(x(a)==="Lambda"&&m(a,1)&&(a=bi(m(a,1),{_:s??"x",_1:s??"x"})),!t)return!s||s==="Nothing"?N([e,"\\!",n.serialize(a)]):N([e,"\\!",n.serialize(a),"\\,\\operatorname{d}",n.serialize(s)]);let u=m(t,2)?R(m(t,2)):null,l=t&&u!=="Nothing"?n.serialize(m(t,2)):"";l.length>0&&(l=`_{${l}}`);let f="",d=m(t,3)?R(m(t,3)):null;return m(t,3)&&d!=="Nothing"&&(f=`^{${n.serialize(m(t,3))}}`),N([e,f,l,"\\!",n.serialize(a),...s&&R(s)!=="Nothing"?["\\,\\operatorname{d}",n.serialize(s)]:[]])}}var xs=[{kind:"expression",name:"Integrate",latexTrigger:["\\int"],parse:Wn("Integrate"),serialize:hs("\\int")},{kind:"expression",latexTrigger:["\\iint"],parse:Wn("Integrate",2)},{kind:"expression",latexTrigger:["\\iiint"],parse:Wn("Integrate",3)},{kind:"expression",name:"CircularIntegrate",latexTrigger:["\\oint"],parse:Wn("CircularIntegrate"),serialize:hs("\\oint")},{kind:"expression",latexTrigger:["\\oiint"],parse:Wn("CircularIntegrate",2)},{kind:"expression",latexTrigger:["\\oiiint"],parse:Wn("CircularIntegrate",3)}];var Ue=[["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]],bs=[...Ue.map(([e,n,i])=>({kind:"symbol",name:e,latexTrigger:[n],parse:e})),...Ue.map(([e,n,i])=>({kind:"symbol",latexTrigger:[String.fromCodePoint(i)],parse:e}))];var ys=[{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 Es=[{name:"Mean",kind:"function",identifierTrigger:"mean"},{name:"Median",kind:"function",identifierTrigger:"median"},{name:"StandarDeviation",kind:"function",identifierTrigger:"stddev"},{latexTrigger:["\\bar"],kind:"expression",parse:(e,n)=>{let i=e.parseGroup()??e.parseToken();return!i||!R(i)?null:["Mean",i]}}];var Ns={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","|":"\\vert","||":"\\Vert","\\lceil":"\\lceil","\\lfloor":"\\lfloor","\\rceil":"\\rceil","\\rfloor":"\\rfloor"};function vs(e,n,i){let t=kl(n,i);if(t===null)return;let r="kind"in n?n.kind:"expression",o=t.latexTrigger;typeof o=="string"&&(e.lookahead=Math.max(e.lookahead,ct(o)));let s=q(o??"",[]);if(s.length===2&&/[_^]/.test(s[0])&&s[1]!=="<{>"&&r!=="function"&&r!=="environment"&&r!=="matchfix"){let a=n.parse;!a&&n.name&&(r==="postfix"||r==="prefix"?a=(u,l)=>[n.name,l]:a=n.name),vs(e,{...n,kind:r,name:void 0,serialize:void 0,parse:a,latexTrigger:[s[0],"<{>",s[1],"<}>"]},i)}e.defs.push(t),t.name!==void 0&&(e.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."]}),e.ids.set(t.name,t))}function Ir(e,n){let i={lookahead:1,ids:new Map,defs:[]};for(let t of e)vs(i,t,n);return i}function kl(e,n){if(!Cl(e,n))return null;let i={kind:"kind"in e?e.kind:"expression"},t=null;"latexTrigger"in e&&(typeof e.latexTrigger=="string"?t=q(e.latexTrigger,[]):t=e.latexTrigger);let r=null;"identifierTrigger"in e&&(r=e.identifierTrigger),t!==null&&(i.latexTrigger=Ze(t)),r!==null&&(i.identifierTrigger=r),e.name&&(i.name=e.name,i.serialize=wl(e,t,r)),i.kind==="matchfix"&&$n(e)&&(i.openTrigger=e.openTrigger,i.closeTrigger=e.closeTrigger),i.kind==="symbol"&&ur(e)&&(i.precedence=e.precedence??1e4),(i.kind==="prefix"||i.kind==="postfix")&&(hi(e)||tt(e))&&(t&&(t[0]==="^"||t[0]==="_")?(i.precedence=720,e.precedence):i.precedence=e.precedence??1e4),i.kind==="infix"&&it(e)&&(!t||t[0]!=="^"&&t[0]!=="_"||!e.associativity||e.associativity,i.associativity=e.associativity??"non",i.precedence=e.precedence??1e4);let o=Ml(e,t,r);return o&&(i.parse=o),i}function wl(e,n,i){if(typeof e.serialize=="function")return e.serialize;let t=e.kind??"expression";if(t==="environment"){let s=e.identifierTrigger??e.name??"unknown";return(a,u)=>N([`\\begin{${s}}`,a.serialize(m(u,1)),`\\end{${s}}`])}if($n(e)){let s=typeof e.openTrigger=="string"?Ns[e.openTrigger]:Ze(e.openTrigger),a=typeof e.closeTrigger=="string"?Ns[e.closeTrigger]:Ze(e.closeTrigger);return(u,l)=>N([s,u.serialize(m(l,1)),a])}let r=e.serialize;if(r===void 0&&n&&(r=Ze(n)),r)return t==="postfix"?(s,a)=>N([s.serialize(m(a,1)),r]):t==="prefix"?(s,a)=>N([r,s.serialize(m(a,1))]):t==="infix"?(s,a)=>N((B(a)??[]).flatMap((u,l)=>l<X(a)-1?[s.serialize(u),r]:[s.serialize(u)])):(s,a)=>x(a)?N([r,s.wrapArguments(a)]):r;let o=i??e.name??"unknown";return t==="postfix"?(s,a)=>N([s.serialize(m(a,1)),s.serializeSymbol(o)]):t==="prefix"?(s,a)=>N([s.serializeSymbol(o),s.serialize(m(a,1))]):t==="infix"?(s,a)=>N([s.serialize(m(a,1)),s.serializeSymbol(o),s.serialize(m(a,2))]):(s,a)=>x(a)?N([s.serializeSymbol(o),s.wrapArguments(a)]):s.serializeSymbol(o)}function Ml(e,n,i){if("parse"in e&&typeof e.parse=="function")return e.parse;let t="kind"in e?e.kind:"expression";if(t==="environment"){let r=e.parse??e.name??i;if(r)return(o,s)=>{let a=o.parseTabular();return a===null?null:[r,["List",a.map(u=>["List",...u])]]}}if(t==="function"){let r=e.parse??e.name??i;if(r)return(o,s)=>{let a=o.parseArguments("enclosure",s);return a===null?r:[r,...a]}}if(t==="symbol"){let r=e.parse??e.name??i;if(r)return(o,s)=>r}if(t==="prefix"){let r=e.parse??e.name??i;if(r){let o=e.precedence??1e4;return(s,a)=>{let u=s.parseExpression({...a??[],minPrec:o});return u===null?null:[r,u]}}}if(t==="postfix"){let r=e.parse??e.name;if(r)return(o,s)=>s===null?null:[r,s]}if(t==="infix"){if(/[_^]/.test(n?.[0]??"")){let a=e.name??e.parse;return(u,l)=>[a,H(m(l,1)),H(m(l,2))]}let r=e.parse??e.name??i,o=e.precedence??1e4,s=e.associativity??"non";if(r)return(a,u,l)=>{if(u===null||o<l.minPrec)return null;let f=H(a.parseExpression({...l,minPrec:o}));return typeof r=="string"?ze(r,u,f,s):[r,u,f]}}if(t==="matchfix"){let r=e.parse??e.name;if(r)return(o,s)=>s===null||j(s)?null:[r,s]}if(t==="expression"){let r=e.parse??e.name??i;if(r)return()=>r}if("parse"in e){let r=e.parse;return()=>r}}function Cl(e,n){let i=e.name??e.latexTrigger??e.identifierTrigger??e.openTrigger;if(!i)try{i=JSON.stringify(e)}catch{i="???"}if(Array.isArray(i)&&(i=Ze(i)),"trigger"in e&&n({severity:"warning",message:["invalid-dictionary-entry",i,"The 'trigger' property is deprecated. Use 'latexTrigger' or 'identifierTrigger' instead"]}),"kind"in e&&!["expression","symbol","function","infix","postfix","prefix","matchfix","environment"].includes(e.kind)&&n({severity:"warning",message:["invalid-dictionary-entry",i,"The 'kind' property must be one of 'expression', 'symbol', 'function', 'infix', 'postfix', 'prefix', 'matchfix', 'environment'"]}),e.serialize!==void 0&&!e.name)return n({severity:"warning",message:["invalid-dictionary-entry",i,"A 'name' property must be provided if a 'serialize' handler is provided"]}),!1;if("identifierTrigger"in e&&(typeof e.identifierTrigger!="string"||!de(e.identifierTrigger))&&n({severity:"warning",message:["invalid-dictionary-entry",i,"The 'identifierTrigger' property must be a valid identifier"]}),"name"in e&&(typeof e.name!="string"?e.name!==void 0&&n({severity:"warning",message:["invalid-dictionary-entry",i,"The 'name' property must be a string"]}):de(e.name)||n({severity:"warning",message:["invalid-dictionary-entry",e.name,"The 'name' property must be a valid identifier"]})),$n(e)){if("latexTrigger"in e||"identifierTrigger"in hi)return n({severity:"warning",message:["invalid-dictionary-entry",i,"'matchfix' operators use a 'openTrigger' and 'closeTrigger' instead of a 'latexTrigger' or 'identifierTrigger'. "]}),!1;if(!e.openTrigger||!e.closeTrigger)return n({severity:"warning",message:["invalid-dictionary-entry",i,"Expected `openTrigger` and a `closeTrigger` for matchfix operator"]}),!1;if(typeof e.openTrigger!=typeof e.closeTrigger)return n({severity:"warning",message:["invalid-dictionary-entry",i,"Expected `openTrigger` and `closeTrigger` to both be strings or array of LatexToken"]}),!1}if(it(e)||tt(e)||hi(e)){if(Array.isArray(e.latexTrigger)&&(e.latexTrigger[0]==="_"||e.latexTrigger[0]==="^")||typeof e.latexTrigger=="string"&&(e.latexTrigger.startsWith("^")||e.latexTrigger.startsWith("_"))){if(e.precedence!==void 0||e.associativity!==void 0)return n({severity:"warning",message:["invalid-dictionary-entry",i,'Unexpected "precedence" or "associativity" for superscript/subscript operator']}),!1}else if(e.precedence===void 0)return n({severity:"warning",message:["invalid-dictionary-entry",i,`Expected a "precedence" for ${e.kind} operator`]}),!1}else if(e.associativity!==void 0)return n({severity:"warning",message:["invalid-dictionary-entry",i,'Unexpected "associativity" operator']}),!1;return!$n(e)&&!lr(e)&&!e.latexTrigger&&!e.identifierTrigger&&!e.name?(n({severity:"warning",message:["invalid-dictionary-entry",i,"Expected a 'name', a 'latexTrigger' or a 'identifierTrigger'"]}),!1):e.parse===void 0&&e.name===void 0?(n({severity:"warning",message:["invalid-dictionary-entry",i,"Expected a 'parse' or 'name'"]}),!1):!0}var Yn={algebra:$o,arithmetic:os,calculus:xs,complex:ys,core:as,logic:fs,relop:ls,other:ds,physics:[{name:"mu0",kind:"symbol",latexTrigger:"\\mu_0"}],sets:ps,statistics:Es,symbols:bs,trigonometry:cs};var Al={"\\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"},Ol={"\\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 _s(e,n){if(e.atEnd)return null;let i=e.peek,t={"\\_":"_","\\#":"hash"}[i];if(!t&&!n.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 e.nextToken(),t;let r=Ue.findIndex(o=>o[1]===i);return r>=0?(e.nextToken(),Ue[r][0]):e.matchChar()??e.nextToken()}function gt(e){let n=Br(e),i=e.index,t=Ol[e.peek]??null;if(t){if(e.nextToken(),!e.match("<{>"))return e.index=i,null;let s=gt(e);if(s===null||!e.match("<}>"))return e.index=i,null;n=`${s}${t}`}if(n===null){for(n="";!e.atEnd;){let s=e.peek;if(s==="<}>"||s==="_"||s==="^")break;let a=_s(e,{toplevel:!1});if(a===null)return e.index=i,null;n+=a}for(;!e.atEnd&&/\d/.test(e.peek);)n+=e.nextToken()}for(;!e.atEnd;)if(e.match("\\degree"))n+="_deg";else if(e.matchAll(["^","\\prime"]))n+="_prime";else if(e.matchAll(["^","<{>","\\prime","<}>"]))n+="_prime";else if(e.matchAll(["^","<{>","\\doubleprime","<}>"]))n+="_dprime";else if(e.matchAll(["^","<{>","\\prime","\\prime","<}>"]))n+="_dprime";else break;let r=[],o=[];for(;!e.atEnd;)if(e.match("_")){let s=e.match("<{>"),a=gt(e);if(s&&!e.match("<}>")||a===null)return e.index=i,null;o.push(a)}else if(e.match("^")){let s=e.match("<{>"),a=gt(e);if(s&&!e.match("<}>")||a===null)return e.index=i,null;r.push(a)}else break;return r.length>0&&(n+="__"+r.join("")),o.length>0&&(n+="_"+o.join("")),n}function Br(e){let n=e.index,i=Al[e.peek]??null;if(i===null)return null;if(e.nextToken(),e.match("<{>")){let t="",r={0:"zero",1:"one",2:"two",3:"three",4:"four",5:"five",6:"six",7:"seven",8:"eight",9:"nine"}[e.peek]??"";return r&&(t=r,e.nextToken()),t+=gt(e),t===null||!e.match("<}>")?(e.index=n,null):i==="_upright"&&t.length>1?t:t+i}return e.index=n,null}function Dr(e){let n=e.index,i=Br(e);return i===null||de(i)?(e.index=n,null):e.error(["invalid-identifier",{str:$e(i)}],n)}function _i(e){if(/^[a-zA-Z]$/.test(e.peek)||/^\p{XIDS}$/u.test(e.peek))return e.nextToken();let n=e.index,i=Br(e);if(!i){for(i="";!e.atEnd&&Hn.test(i+e.peek);)i+=e.nextToken();i||(i=null)}return i??(i=_s(e,{toplevel:!0})),i&&(i=i.normalize(),de(i))?i:(e.index=n,null)}var Ss={"(":["\\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"]};var ht={"\\left":"\\right","\\bigl":"\\bigr","\\Bigl":"\\Bigr","\\biggl":"\\biggr","\\Biggl":"\\Biggr","\\big":"\\big","\\Big":"\\Big","\\bigg":"\\bigg","\\Bigg":"\\Bigg"};var Si={"(":")","[":"]","|":"|","\\{":"\\}","\\[":"\\]","\\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"},Tr={precision:6,positiveInfinity:"\\infty",negativeInfinity:"-\\infty",notANumber:"\\operatorname{NaN}",decimalMarker:".",groupSeparator:"\\,",exponentProduct:"\\cdot",beginExponentMarker:"10^{",endExponentMarker:"}",notation:"auto",truncationMarker:"\\ldots",beginRepeatingDigits:"\\overline{",endRepeatingDigits:"}",imaginaryUnit:"\\imaginaryI",avoidExponentsInRange:[-7,20]},kr={applyInvisibleOperator:"auto",skipSpace:!0,parseArgumentsOfUnknownLatexCommands:!0,parseNumbers:"auto",parseUnknownIdentifier:(e,n)=>n.computeEngine?.lookupFunction(e)!==void 0?"function":"symbol",preserveLatex:!1},xt=class{constructor(n,i,t,r){this.index=0;this._boundaries=[];this._lastPeek="";this._peekCounter=0;this._tokens=n,this.options={...Tr,...kr,...i},this._dictionary=t,this.computeEngine=r,this._positiveInfinityTokens=q(this.options.positiveInfinity,[]),this._negativeInfinityTokens=q(this.options.negativeInfinity,[]),this._notANumberTokens=q(this.options.notANumber,[]),this._decimalMarkerTokens=q(this.options.decimalMarker,[]),this._groupSeparatorTokens=q(this.options.groupSeparator,[]),this._exponentProductTokens=q(this.options.exponentProduct,[]),this._beginExponentMarkerTokens=q(this.options.beginExponentMarker,[]),this._endExponentMarkerTokens=q(this.options.endExponentMarker,[]),this._truncationMarkerTokens=q(this.options.truncationMarker,[]),this._beginRepeatingDigitsTokens=q(this.options.beginRepeatingDigits,[]),this._endRepeatingDigitsTokens=q(this.options.endRepeatingDigits,[]),this._imaginaryNumberTokens=q(this.options.imaginaryUnit,[])}updateOptions(n){for(let[i,t]of Object.entries(n))if(i in this.options)this.options[i]=t,typeof t=="string"&&(i==="positiveInfinity"&&(this._positiveInfinityTokens=q(t,[])),i==="negativeInfinity"&&(this._negativeInfinityTokens=q(t,[])),i==="notANumber"&&(this._notANumberTokens=q(t,[])),i==="decimalMarker"&&(this._decimalMarkerTokens=q(t,[])),i==="groupSeparator"&&(this._groupSeparatorTokens=q(t,[])),i==="exponentProduct"&&(this._exponentProductTokens=q(t,[])),i==="beginExponentMarker"&&(this._beginExponentMarkerTokens=q(t,[])),i==="endExponentMarker"&&(this._endExponentMarkerTokens=q(t,[])),i==="truncationMarker"&&(this._truncationMarkerTokens=q(t,[])),i==="beginRepeatingDigits"&&(this._beginRepeatingDigitsTokens=q(t,[])),i==="endRepeatingDigits"&&(this._endRepeatingDigitsTokens=q(t,[])),i==="imaginaryNumber"&&(this._imaginaryNumberTokens=q(t,[])));else throw Error(`Unexpected option "${i}"`)}get atEnd(){return this.index>=this._tokens.length}get peek(){let n=this._tokens[this.index];if(n===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=n,n}nextToken(){return this._tokens[this.index++]}atTerminator(n){return this.atBoundary||((n?.condition&&n.condition(this))??!1)}get atBoundary(){if(this.atEnd)return!0;let n=this.index;for(let i of this._boundaries)if(this.matchAll(i.tokens))return this.index=n,!0;return!1}addBoundary(n){this._boundaries.push({index:this.index,tokens:n})}removeBoundary(){this._boundaries.pop()}matchBoundary(){let n=this._boundaries[this._boundaries.length-1],i=n&&this.matchAll(n.tokens);return i&&this._boundaries.pop(),i}boundaryError(n){let i=this._boundaries[this._boundaries.length-1];return this._boundaries.pop(),this.error(n,i.index)}latex(n,i){return Ze(this._tokens.slice(n,i))}latexAhead(n){return this.latex(this.index,this.index+n)}lookAhead(){let n=Math.min(this._dictionary.lookahead,this._tokens.length-this.index);if(n<=0)return[];let i=[];for(;n>0;)i.push([n,this.latexAhead(n--)]);return i}peekDefinitions(n){if(this.atEnd)return[];let i=[],t=[...this.getDefs(n)];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=Pl(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 n=!1;for(;this.match("<space>");)n=!0;return n&&this.skipSpace(),n}skipVisualSpace(){this.options.skipSpace&&(this.skipSpace(),["\\!","\\,","\\:","\\;","\\enskip","\\enspace","\\space","\\quad","\\qquad"].includes(this.peek)&&(this.nextToken(),this.skipVisualSpace()),this.skipSpace())}match(n){return this._tokens[this.index]===n?(this.index++,!0):!1}matchAll(n){if(Array.isArray(n),n.length===0)return!1;let i=!0,t=0;do i=this._tokens[this.index+t]===n[t++];while(i&&t<n.length);return i&&(this.index+=t),i}matchAny(n){return n.includes(this._tokens[this.index])?this._tokens[this.index++]:""}matchChar(){let n=this.index,i=0;for(;this.match("^");)i+=1;if(i<2&&(this.index=n),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=n,null}matchDelimiter(n,i){if(this.peek==="[")return!1;if(Array.isArray(n))return Array.isArray(i),this.matchAll(n)?(this.addBoundary(i),!0):!1;Array.isArray(i);let t=this.index,r=ht[this.peek];return r&&this.nextToken(),n==="||"&&this.matchAll(["|","|"])?(this.addBoundary(["|","|"]),!0):(Ss[n]??[n]).includes(this.peek)?(n=this.nextToken(),i=Si[n]??i,this.addBoundary(r?[r,i]:[i]),!0):(this.index=t,!1)}parseGroup(){let n=this.index;if(this.skipSpaceTokens(),this.match("<{>")){this.addBoundary(["<}>"]);let i=this.parseExpression();if(this.skipSpace(),this.matchBoundary())return i??["Sequence"];let t=this.index;for(;!this.matchBoundary()&&!this.atEnd;)this.nextToken();let r=this.error("syntax-error",t);return i?["Sequence",i,r]:r}return this.index=n,null}parseToken(){if([...'!"#$%&(),/;:?@[]\\`|~'.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}parseOptionalGroup(){let n=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=n,null}parseTabular(){let n=[],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),n.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&&n.push(i),n}parseStringGroup(){let n=this.index;for(;this.match("<space>"););if(this.match("<{>")){this.addBoundary(["<}>"]);let i=this.parseStringGroupContent();if(this.matchBoundary())return i;this.removeBoundary()}return this.index=n,null}parseEnvironment(n){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,n);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 n=!!this.matchAny(["-","\u2212"]);for(;this.matchAny(["+","\uFE62"])||this.skipSpace();)this.matchAny(["-","\u2212"])&&(n=!n);return n?"-":"+"}parseDecimalDigits(n){n??(n={}),n.withGrouping??(n.withGrouping=!1);let i=[],t=!1;for(;!t;){for(;/^[0-9]$/.test(this.peek);)i.push(this.nextToken()),this.skipVisualSpace();if(t=!0,n.withGrouping&&this.options.groupSeparator){let r=this.index;this.skipVisualSpace(),this.matchAll(this._groupSeparatorTokens)&&(this.skipVisualSpace(),/^[0-9]$/.test(this.peek)?t=!1:this.index=r)}}return i.join("")}parseSignedInteger(n){n??(n={}),n.withGrouping??(n.withGrouping=!1);let i=this.index,t=this.parseOptionalSign(),r=this.parseDecimalDigits(n);return r?t==="-"?"-"+r:r:(this.index=i,"")}parseExponent(){let n=this.index;if(this.matchAny(["e","E"])){let i=this.parseSignedInteger({withGrouping:!1});if(i)return i}if(this.index=n,this.match("\\times")&&(this.skipSpaceTokens(),this.match("1")&&this.match("0")&&this.match("^"))){if(/^[0-9]$/.test(this.peek))return this.nextToken();if(this.match("<{>")){this.skipSpaceTokens();let i=this.parseSignedInteger();if(this.skipSpaceTokens(),this.match("<}>")&&i)return i}}if(this.index=n,this.skipSpaceTokens(),this.match("\\%"))return"-2";if(this.index=n,this.matchAll(this._exponentProductTokens)&&(this.skipSpaceTokens(),this.matchAll(this._beginExponentMarkerTokens))){this.skipSpaceTokens();let i=this.parseSignedInteger();if(this.skipSpaceTokens(),this.matchAll(this._endExponentMarkerTokens)&&i)return i}return this.index=n,""}parseRepeatingDecimal(){let n=this.index,i="";return this.match("(")?(i=this.parseDecimalDigits(),i&&this.match(")")?"("+i+")":(this.index=n,"")):(this.index=n,this.matchAll(["\\left","("])?(i=this.parseDecimalDigits(),i&&this.matchAll(["\\right",")"])?"("+i+")":(this.index=n,"")):(this.index=n,this.matchAll(["\\overline","<{>"])?(i=this.parseDecimalDigits(),i&&this.match("<}>")?"("+i+")":(this.index=n,"")):(this.index=n,this.matchAll(this._beginRepeatingDigitsTokens)?(i=this.parseDecimalDigits(),i&&this.matchAll(this._endRepeatingDigitsTokens)?"("+i+")":(this.index=n,"")):(this.index=n,""))))}parseNumber(){if(this.options.parseNumbers===!1||this.options.parseNumbers==="never")return null;let n=this.index;this.skipVisualSpace(),this.match("+");let i="",t="",r=!1;if(this.match(".")||this.matchAll(this._decimalMarkerTokens)){let l=this.peek;(l==="\\overline"||l===this._beginRepeatingDigitsTokens[0]||/[0-9\(]/.test(l))&&(r=!0,i="0")}else i=this.parseDecimalDigits({withGrouping:!0});if(!i)return this.index=n,null;let o=this.index,s=!0;if(r||this.match(".")||this.matchAll(this._decimalMarkerTokens)){if(t=this.parseDecimalDigits({withGrouping:!0}),!t)return this.index=o,{num:i}}else s=!1;let a=!1;if(s){let l=this.parseRepeatingDecimal();l?(t+=l,a=!0):this.match("\\ldots")||this.matchAll(this._truncationMarkerTokens)}this.skipVisualSpace();let u=this.parseExponent();if(!a&&this.options.parseNumbers==="rational"){let l=parseInt(i,10);if(!t)return u?["Multiply",l,["Power",10,u]]:l;let f=parseInt(t,10),d=t.length,c=l*Math.pow(10,d)+f,p=Math.pow(10,d);return u?["Multiply",["Rational",c,p],["Power",10,u]]:["Rational",c,p]}return{num:i+(s?"."+t:"")+(u?"e"+u:"")}}matchLatexNumber(n=!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"],n=!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"],n=!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(!n&&this.match("."))for(s+=".";o.includes(this.peek);)s+=this.nextToken();let a=n?Number.parseInt(s,r):Number.parseFloat(s);return Number.isNaN(a)?null:i?-a:a}parsePrefixOperator(n){n||(n={minPrec:0}),n.minPrec||(n={...n,minPrec:0});let i=this.index;for(let[t,r]of this.peekDefinitions("prefix")){this.index=i+r;let o=t.parse(this,n);if(o)return o}return this.index=i,null}parseInfixOperator(n,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,n,i);if(s)return s}return this.index=t,null}parseArguments(n="enclosure",i){if(this.atTerminator(i))return null;let t=this.index,r=this.parseEnclosure();if(n==="enclosure")return r===null?null:Jn(r)??[];if(n==="implicit"){if(x(r)==="Delimiter")return Jn(r)??[];if(r!==null)return[r];let o=this.parseExpression({...i,minPrec:390});return o===null?null:[o]}return this.index=t,null}matchOpenDelimiter(n,i){let t=this.index,r=ht[this.peek];r&&this.nextToken();let o=Ss[n]??[n],s=r?[r]:[];return o.includes("||")&&this.matchAll(["|","|"])?(s.push("|"),s.push("|"),s):o.includes(this.peek)?(Si[n]===i?s.push(Si[this.peek]):s.push(i),this.nextToken(),s):(this.index=t,null)}parseEnclosure(){let n=this.getDefs("matchfix"),i=this.index;for(let t of n){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(n){if(this.atTerminator(n))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,n),t!==null)return t}else return o.name;return this.index=i,null}parseFunction(n){if(this.atTerminator(n))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,n),t!==null)return t}else{t=o.name;break}if(t===null&&(this.index=i,t=_i(this),!this.isFunctionHead(t)))return this.index=i,null;do{let o=this.parsePostfixOperator(t,n);if(o===null)break;t=o}while(!0);let r=this.parseArguments("enclosure",n);return r===null?t:typeof t=="string"?[t,...r]:["Apply",t,...r]}parseSymbol(n){if(this.atTerminator(n))return null;let i=this.index;for(let[r,o]of this.peekDefinitions("symbol"))if(this.index=i+o,typeof r.parse=="function"){let s=r.parse(this,n);if(s)return s}else return r.name;this.index=i;let t=_i(this);return t===null?null:this.options.parseUnknownIdentifier?.(t,this)==="symbol"?t:(this.index=i,null)}parseSupsub(n){if(this.atEnd)return n;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,n;let s=n;if(r.length>0){let a=[...this.getDefs("infix")].filter(u=>u.latexTrigger==="_");if(a){let u=["Subscript",s,r.length===1?r[0]:["List",...r]];for(let l of a)if(typeof l.parse=="function"?s=l.parse(this,u,{minPrec:0}):s=u,s)break}}if(t.length>0){let a=[...this.getDefs("infix")].filter(u=>u.latexTrigger==="^");if(a){let u=t.filter(l=>x(l)!=="Sequence");if(u.length!==0){let l=u.length===1?u[0]:["List",...u],f=["Superscript",s,l];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(n,i){if(n===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,n,i);if(s!==null)return s}return this.index=t,null}parseStringGroupContent(){let n=this.index,i="",t=0;for(;!this.atBoundary||t>0;){let r=this.nextToken();if(r==="<$>"||r==="<$$>")return this.index=n,"";r==="<{>"?(t+=1,i+="\\{"):r==="<}>"?(t-=1,i+="\\}"):r==="<space>"?i+=" ":(r[0],i+=r)}return i}applyInvisibleOperator(n,i){if(i===null||this.options.applyInvisibleOperator===null||x(i)==="Error"||R(i)==="Nothing"||j(i)||this.atTerminator(n)||this.peekDefinitions("operator").length>0)return null;if(this.isFunctionHead(i)){let s=this.parseArguments("enclosure",{...n,minPrec:0});return s===null?null:[i,...s]}let t=this.index,r=this.parseExpression({...n,minPrec:390});if(r===null||R(r)==="Nothing"||j(r))return this.index=t,null;if(x(r)==="Error")return ze("Sequence",i,r);if(typeof this.options.applyInvisibleOperator=="function")return this.options.applyInvisibleOperator(this,i,r);if(this.isFunctionHead(i)){let s=Jn(r);return s?[i,...s]:i}let o=k(i);if(o!==null&&Number.isInteger(o)){let s=x(r);if(s==="Divide"||s==="Rational"){let[a,u]=[k(m(r,1)),k(m(r,2))];if(a!==null&&u!==null&&a>0&&a<=1e3&&u>1&&u<=1e3&&Number.isInteger(a)&&Number.isInteger(u))return["Add",i,r]}}if(x(r)==="Delimiter"){if(x(m(r,1))==="Sequence")return[i,...B(m(r,1))??[]];if(!m(r,1)||R(m(r,1))==="Nothing")return ze("Sequence",i,this.error("expected-expression",t))}return x(r)==="Sequence"||x(i)==="Sequence"||Q(i)!==null||Q(r)!==null||nn(i)!==null||nn(r)!==null?ze("Sequence",i,r):ze("Multiply",i,r)}parseSyntaxError(){let n=this.index;if(this.peek==="^")return this.index+=1,["Superscript",this.error("missing",n),H(this.parseGroup())];let i=this.peekDefinitions("operator");if(i.length>0){if(i=this.peekDefinitions("postfix"),i.length>0){let[a,u]=i[0];if(this.index+=u,typeof a.parse=="function"){let l=a.parse(this,this.error("missing",n));if(l)return l}return a.name?[a.name,this.error("missing",n)]:this.error("unexpected-operator",n)}if(i=this.peekDefinitions("prefix"),i.length>0){let[a,u]=i[0];if(this.index+=u,typeof a.parse=="function"){let l=a.parse(this,{minPrec:0});if(l)return l}return a.name?[a.name,this.parseExpression()??this.error("missing",n)]:this.error("unexpected-operator",n)}if(i=this.peekDefinitions("infix"),i.length>0){let[a,u]=i[0];this.index+=u;let l=a.parse(this,this.error("missing",n),{minPrec:0});return l||this.error("unexpected-operator",n)}}let t=this.index,r=Dr(this);if(r)return r;if(r=_i(this),r)return this.error(["unexpected-identifier",r],t);let o=this.peek;if(!o)return this.error("syntax-error",n);if(o[0]!=="\\")return this.error(["unexpected-token",{str:Ze(o)}],n);if(Ll(this))return this.error("unexpected-delimiter",n);let s=this.nextToken();if(this.skipSpaceTokens(),s==="\\end"){let a=this.parseStringGroup();return a===null?this.error("expected-environment-name",n):this.error(["unbalanced-environment",{str:a}],n)}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:Ze(s)}],n)}parsePrimary(n){if(this.atBoundary||this.atTerminator(n))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(n)),i===null&&this.matchAll(this._positiveInfinityTokens)&&(i={num:"+Infinity"}),i===null&&this.matchAll(this._negativeInfinityTokens)&&(i={num:"-Infinity"}),i===null&&this.matchAll(this._notANumberTokens)&&(i={num:"NaN"}),i??(i=this.parseGenericExpression(n)??this.parseFunction(n)??this.parseSymbol(n)??Dr(this)),i!==null){i=this.decorate(i,t);let r=null,o=this.index;do{if(r=this.parsePostfixOperator(i,n),i=r??i,this.index===o&&r!==null){this.index;break}o=this.index}while(r!==null)}return i!==null&&(i=this.parseSupsub(i)),this.decorate(i,t)}parseExpression(n){this.skipSpace();let i=this.index;if(this.atBoundary)return this.index=i,null;n??(n={minPrec:0}),n.minPrec,n.minPrec===void 0&&(n={...n,minPrec:0});let t=this.parsePrefixOperator({...n,minPrec:0});if(t===null&&(t=this.parsePrimary(n),x(t)==="Sequence"&&X(t)===0&&(t=null)),t){let r=!1;for(;!r&&!this.atTerminator(n);){this.skipSpace();let o=this.parseInfixOperator(t,n);o===null&&(o=this.applyInvisibleOperator(n,t)),o!==null?t=o:r=!0}}if(!t)for(t=this.parseSyntaxError();!this.atTerminator(n);)this.nextToken();return this.decorate(t,i)}decorate(n,i){if(n===null)return null;if(!this.options.preserveLatex)return n;let t=this.latex(i,this.index);return Array.isArray(n)?n={latex:t,fn:n}:typeof n=="number"?n={latex:t,num:Number(n).toString()}:typeof n=="string"?n={latex:t,sym:n}:typeof n=="object"&&n!==null&&(n.latex=t),n}error(n,i){let t;typeof n=="string"?(n.startsWith("'"),t={str:n}):(n[0].startsWith("'"),t=["ErrorCode",{str:n[0]},...n.slice(1)]);let r=this.latex(i,this.index);return r?["Error",t,["LatexString",{str:r}]]:["Error",t]}isFunctionHead(n){if(n===null)return!1;let i=R(n);return i?this.computeEngine?.lookupFunction(i)!==void 0||this.options.parseUnknownIdentifier?.(i,this)==="function":!1}*getDefs(n){if(n==="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===n&&(yield i)}};function Pl(e,n){let i=e.index,t=_i(e)?.trim();if(t===null)return 0;let r=t!==n?0:e.index-i;return e.index=i,r}function Ll(e){let n=e.peek;return Object.values(Si).includes(n)||Si[n]?(e.nextToken(),!0):ht[n]||Object.values(ht).includes(n)?(e.nextToken(),e.nextToken(),!0):!1}function Is(e,n){let i=e.length,t=e;if(n.beginRepeatingDigits&&n.endRepeatingDigits){e=e.slice(0,-1);for(let o=0;o<e.length-16;o++){let s=e.substring(0,o);for(let a=0;a<17;a++){let u=e.substring(o,o+a+1),l=Math.floor((e.length-s.length)/u.length);if(l<=3)break;if((s+u.repeat(l+1)).startsWith(e))return u==="0"?s.replace(/(\d{3})/g,"$1"+n.groupSeparator):s.replace(/(\d{3})/g,"$1"+n.groupSeparator)+n.beginRepeatingDigits+u+n.endRepeatingDigits}}}let r=i>n.precision-1;return e=t,r&&(e=e.substring(0,n.precision-1)),n.groupSeparator&&(e=e.replace(/(\d{3})/g,"$1"+n.groupSeparator),e.endsWith(n.groupSeparator)&&(e=e.slice(0,-n.groupSeparator.length))),r?e+n.truncationMarker:e}function Bs(e,n){return e?n.beginExponentMarker?n.beginExponentMarker+e+(n.endExponentMarker??""):"10^{"+e+"}":""}function Ds(e,n){if(e===null)return"";let i;if(typeof e=="number"||typeof e=="string")i=e;else if(typeof e=="object"&&"num"in e)i=e.num;else return"";if(typeof i=="number"){if(i===1/0)return n.positiveInfinity;if(i===-1/0)return n.negativeInfinity;if(Number.isNaN(i))return n.notANumber;let o;return n.notation==="engineering"?o=bt(i.toExponential(),n,3):n.notation==="scientific"&&(o=bt(i.toExponential(),n)),o??wr(i.toString(),n)}if(i=i.toLowerCase().replace(/[\u0009-\u000d\u0020\u00a0]/g,""),i==="infinity"||i==="+infinity")return n.positiveInfinity;if(i==="-infinity")return n.negativeInfinity;if(i==="nan")return n.notANumber;if(!/^[-+\.]?[0-9]/.test(i))return"";if(i=i.replace(/[nd]$/,""),/\([0-9]+\)/.test(i)){let[o,s,a,u]=i.match(/(.+)\(([0-9]+)\)(.*)$/)??[];i=s+a.repeat(Math.ceil(n.precision/a.length))+u}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 n.notation==="engineering"?r=bt(i,n,3):n.notation==="scientific"&&(r=bt(i,n)),t+(r??wr(i,n))}function bt(e,n,i=1){let t=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/);if(!t){let f="";if(e[0]==="-"?(f="-",e=e.substring(1)):e[0]==="+"&&(e=e.substring(1)),e.indexOf(".")<0)e.length===1?e=f+e+"e+0":e=f+e[0]+"."+e.slice(1)+"e+"+(e.length-1).toString();else{let[d,c,p]=e.match(/^(.*)\.(.*)$/);for(p||(p="");c.startsWith("0");)c=c.substring(1);c?e=f+c[0]+"."+c.slice(1)+p+"e+"+(c.length-1).toString():e=f+"0."+p+"e+0"}t=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/)}if(!t)return wr(e,n);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,p]=o.match(/^(.*)\.(.*)$/)??["",o,""];o=c+(p+"00000000000000000").slice(0,Math.abs(f))+"."+p.slice(Math.abs(f))}let s=n.avoidExponentsInRange;if(s&&r>=s[0]&&r<=s[1])return;let a="",u=o;t=u.match(/^(.*)\.(.*)$/),t&&(u=t[1],a=t[2]);let l=r!==0?Bs(Number(r).toString(),n):"";return n.groupSeparator&&(u=u.replace(/\B(?=(\d{3})+(?!\d))/g,n.groupSeparator),a=Is(a,n)),a&&(a=n.decimalMarker+a),l?u==="1"&&!a?l:u+a+n.exponentProduct+l:u+a}function wr(e,n){let i=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/i),t;i?.[1]&&i[2]&&(t=Bs(i[2],n));let r=i?.[1]??e,o="";return i=(t?i[1]:e).match(/^(.*)\.(.*)$/),i?.[1]&&i[2]&&(r=i[1],o=i[2]),n.groupSeparator&&(r=r.replace(/\B(?=(\d{3})+(?!\d))/g,n.groupSeparator),o=Is(o,n)),o&&(o=n.decimalMarker+o),t?r==="1"&&!o?t:r+o+n.exponentProduct+t:r+o}var Cr={deg:e=>`${e}\\degree`,prime:e=>`${e}^{\\prime}`,dprime:e=>`${e}^{\\doubleprime}`,ring:e=>`\\mathring{${e}}`,hat:e=>`\\hat{${e}}`,tilde:e=>`\\tilde{${e}}`,vec:e=>`\\vec{${e}}`,bar:e=>`\\overline{${e}}`,underbar:e=>`\\underline{${e}}`,dot:e=>`\\dot{${e}}`,ddot:e=>`\\ddot{${e}}`,tdot:e=>`\\dddot{${e}}`,qdot:e=>`\\ddddot{${e}}`,acute:e=>`\\acute{${e}}`,grave:e=>`\\grave{${e}}`,breve:e=>`\\breve{${e}}`,check:e=>`\\check{${e}}`},Ar={upright:e=>`\\mathrm{${e}}`,italic:e=>`\\mathit{${e}}`,bold:e=>`\\mathbf{${e}}`,script:e=>`\\mathscr{${e}}`,fraktur:e=>`\\mathfrak{${e}}`,doublestruck:e=>`\\mathbb{${e}}`,blackboard:e=>`\\mathbb{${e}}`,calligraphic:e=>`\\mathcal{${e}}`,gothic:e=>`\\mathfrak{${e}}`,sansserif:e=>`\\mathsf{${e}}`,monospace:e=>`\\mathtt{${e}}`},yt=class{constructor(n,i,t){this.level=-1;this.options=n,n.invisibleMultiply&&(!/#1/.test(n.invisibleMultiply)||!/#2/.test(n.invisibleMultiply))&&t([{severity:"warning",message:["expected-argument","invisibleMultiply"]}]),this.onError=t,this.dictionary=i,this.canonical=void 0}updateOptions(n){for(let i of Object.keys(this.options))i in n&&(this.options[i]=n[i])}wrap(n,i){if(n===null)return"";if(i===void 0)return this.wrapString(this.serialize(n),this.options.groupStyle(n,this.level+1));if(typeof n=="number"||jn(n)||typeof n=="string"||yi(n))return this.serialize(n);let t=x(n);if(typeof t=="string"&&t!=="Delimiter"&&t!=="Subscript"){let r=this.dictionary.ids.get(t);if(r&&(r.kind==="symbol"||r.kind==="prefix"||r.kind==="infix"||r.kind==="postfix")&&r.precedence<i)return this.wrapString(this.serialize(n),this.options.applyFunctionStyle(n,this.level))}return this.serialize(n)}wrapShort(n){if(n===null)return"";let i=this.serialize(n);if(R(n)!==null||x(n)==="Delimiter"&&X(n)===1||Bn(n)&&!/^(-|\.)/.test(i))return i;let r=x(n);return r!=="Add"&&r!=="Negate"&&r!=="Subtract"&&r!=="PlusMinus"&&r!=="Multiply"?i:this.wrapString(i,this.options.groupStyle(n,this.level+1))}wrapString(n,i,t){if(i==="none")return n;t===void 0&&(t="()");let r=t?.[0]??".",o=t?.[1]??".";return(r==="."||o===".")&&i==="paren"&&(i="leftright"),i==="leftright"?`\\left${r}${n}\\right${o}}`:i==="big"?`${r==="."?"":`\\Bigl${r}`}${n}${o==="."?"":`\\Bigr${o}`})`:r+n+o}wrapArguments(n){return this.wrapString((B(n)??[]).map(i=>this.serialize(i)).join(", "),this.options.applyFunctionStyle(n,this.level))}serializeSymbol(n,i){return typeof n=="string"||yi(n),i?.kind==="function"?Mr(R(n)??"")??"":i?.serialize?.(this,n)??Mr(R(n))??""}serializeFunction(n,i){if(i?.serialize)return i.serialize(this,n);let t=x(n);if(typeof t=="string")return Mr(t,"auto")+this.wrapArguments(n);if(x(t)==="InverseFunction"||x(t)==="Derivative")return this.serializeFunction(t,this.dictionary.ids.get(x(t)))+this.wrapArguments(n);let r=B(n)??[];if(r.length===1)return N([this.serialize(r[0]),"\\rhd",this.wrapString(this.serialize(t),this.options.applyFunctionStyle(n,this.level))]);let o=this.options.applyFunctionStyle(n,this.level);return N(["\\operatorname{apply}",this.wrapString(this.serialize(t)+", "+this.serialize(["List",...r]),o)])}serializeDictionary(n){return`\\left\\lbrack\\begin{array}{lll}${Object.keys(n).map(i=>`\\textbf{${i}} & \\rightarrow & ${this.serialize(n[i])}`).join("\\\\")}\\end{array}\\right\\rbrack`}serialize(n,i){if(n==null)return"";i??(i={}),i={...i},"canonical"in i||(i.canonical=!0);let t=this.canonical;this.canonical===void 0&&(this.canonical=i.canonical),this.level+=1;try{let r=(()=>{let o=Ds(n,this.options);if(o)return o;let s=Q(n);if(s!==null)return`\\text{${s}}`;let a=nn(n);if(a!==null)return this.serializeDictionary(a);let u=R(n);if(u!==null)return this.serializeSymbol(n,this.dictionary.ids.get(u));let l=Zo(n);if(l)return this.serializeFunction(n,this.dictionary.ids.get(l));if(x(n)!==null)return this.serializeFunction(n);this.onError([{severity:"warning",message:["syntax-error",n?JSON.stringify(n):"undefined"]}])})();return this.level-=1,this.canonical=t,r??""}catch{}return this.level-=1,this.canonical=t,""}applyFunctionStyle(n,i){return this.options.applyFunctionStyle(n,i)}groupStyle(n,i){return this.options.groupStyle(n,i)}rootStyle(n,i){return this.options.rootStyle(n,i)}fractionStyle(n,i){return this.options.fractionStyle(n,i)}logicStyle(n,i){return this.options.logicStyle(n,i)}powerStyle(n,i){return this.options.powerStyle(n,i)}numericSetStyle(n,i){return this.options.numericSetStyle(n,i)}};function Fl(e){let n=e.match(/^([^_]+)/)?.[1]??"",i=Ue.findIndex(s=>n===s[0]);if(i>=0)return[Ue[i][1],e.substring(Ue[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=>e.startsWith(s)),i>=0){let s=Object.keys(t)[i];return[t[s],e.substring(s.length)]}let r=e.codePointAt(0);if(i=Ue.findIndex(s=>s[2]===r),i>=0)return[Ue[i][1],e.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=>n===s),i>=0){let s=Object.keys(o)[i];return[o[s],e.substring(s.length)]}return[n,e.substring(n.length)]}function Rl(e){let[n,i]=Fl(e),t=[];for(;i.length>0;){let o=i.match(/^_([a-zA-Z]+)(.*)/);if(!o||!Cr[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||!Ar[o[1]])break;r.push(o[1]),i=o[2]}return[n,t,r,i]}function Et(e,n=!0,i="auto"){let[t,r,o,s]=Rl(e);for(let a of r)Cr[a]&&(t=Cr[a](t));if(n){let a=[],u=[],l=t.match(/^([^\d].*?)(\d+)$/);for(l&&(u.push(l[2]),t=l[1]);s.length>0;)if(s.startsWith("__")){let[f,d]=Et(s.substring(2),!1,"none");a.push(f),s=d}else if(s.startsWith("_")){let[f,d]=Et(s.substring(1),!1,"none");u.push(f),s=d}else break;a.length>0&&(t=`${t}^{${a.join(",")}}`),u.length>0&&(t=`${t}_{${u.join(",")}}`)}for(let a of o)Ar[a]&&(t=Ar[a](t));if(o.length===0&&i!=="none")switch(i){case"auto":ct(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 Mr(e,n="auto"){if(e===null)return null;if(Hn.test(e))return e;let i=e.match(/^(_+)(.*)/);if(i){let[o,s]=Et(i[2],!0,"none");return`\\operatorname{${"\\_".repeat(i[1].length)+o+s}}`}let[t,r]=Et(e,!0,n);return r.length>0?`\\operatorname{${e}}`:t}var ql={invisibleMultiply:"",invisiblePlus:"",multiply:"\\times",missingSymbol:"\\blacksquare",applyFunctionStyle:Wo,groupStyle:Yo,rootStyle:bn,fractionStyle:pt,logicStyle:Qo,powerStyle:Xo,numericSetStyle:Ko},Ii=class e{constructor(n){let i=r=>{if(typeof window<"u")for(let o of r)console.warn(o.message)};this.onError=n.onError??i,this.computeEngine=n.computeEngine;let t={...n};delete t.dictionary,delete t.onError,this.options={...Tr,...kr,...ql,...t},this._dictionaryInput=n.dictionary??e.getDictionary(),this._dictionary=Ir(this._dictionaryInput,r=>this.onError([r]))}get dictionary(){return this._dictionaryInput}set dictionary(n){this._dictionaryInput=n,this._dictionary=Ir(n,i=>this.onError([i]))}updateOptions(n){for(let i of Object.keys(this.options))i in n&&(this.options[i]=n[i]);this.serializer.updateOptions(n)}static getDictionary(n="all"){if(n==="all"){let i=[];for(let t of Object.keys(Yn))Yn[t]&&i.push(...Yn[t]);return i}return Yn[n]?Object.freeze([...Yn[n]]):[]}parse(n){let i=new xt(q(n,[]),this.options,this._dictionary,this.computeEngine),t=i.parseExpression();if(!i.atEnd){let r=i.parseSyntaxError();for(t=t?["Sequence",t,r]:r;!i.atEnd;)i.nextToken()}return t??(t=["Sequence"]),this.options.preserveLatex&&(Array.isArray(t)?t={latex:n,fn:t}:typeof t=="number"?t={latex:n,num:Number(t).toString()}:typeof t=="string"?t={latex:n,sym:t}:typeof t=="object"&&t!==null&&(t.latex=n)),t??["Sequence"]}serialize(n,i){return this.serializer.serialize(n,i)}get serializer(){return this._serializer?this._serializer:(this._serializer=new yt(this.options,this._dictionary,this.onError),this._serializer)}};var qs=le(ae());var sn=le(ae());var Nt=le(ae());function Or(e,n,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:u=1e6,breaktol:l=2}=i;if(!isFinite(n))return Or(_=>e(1/_),1/n,{rtol:a,atol:s,maxeval:u,contract:Math.abs(t)>1?1/t:t,step:1/r,power:o});let f=r,d=Math.pow(1/t,o),c=e(n+f),p=[c],g=1/0,b=1;for(;b<u;){b+=1,f*=t,p.push(e(n+f));let _=d,M=1/0;for(let $=p.length-2;$>=0;$--){let F=p[$];p[$]=p[$+1]+(p[$+1]-p[$])/(_-1);let se=Math.abs(p[$]-F);M=Math.min(M,se),se<g&&(c=p[$],g=se),_*=d}if(M>l*g||!isFinite(M)||g<=Math.max(a*Math.abs(c),s))break}return[c,g]}var ws=53,Tn=Math.log10(Math.pow(2,ws)),Vl=7,Bc=Math.pow(2,-(ws-Vl)),Bi=Math.pow(10,-10),Qn=1e6,vt=1e6,_t=200;var Pr=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]),Ms=7919;function Lr(e){if(Number.isInteger(e)&&e>=0&&e<Number.MAX_SAFE_INTEGER,e<=3)return{[e]:1};let n={},i=0;for(;e%2===0;)i+=1,e/=2;for(i>0&&(n[2]=i),i=0;e%3===0;)i+=1,e/=3;i>0&&(n[3]=i);let t=!1;for(;!t;){if(e===1)return n;let r=Math.sqrt(e);t=!0;for(let o=6;o<=r+6;o+=6){if(e%(o-1)===0){n[o-1]=(n[o-1]??0)+1,e/=o-1,t=!1;break}if(e%(o+1)===0){n[o+1]=(n[o+1]??0)+1,e/=o+1,t=!1;break}}}return n[e]!==void 0?n[e]+=1:n[e]=1,n}function on(e,n){if(e>=Number.MAX_SAFE_INTEGER)return[1,e];Number.isInteger(e)&&e>0&&e<Number.MAX_SAFE_INTEGER;let i=Lr(e),t=1,r=1;for(let o of Object.keys(i)){let s=parseInt(o);t=t*Math.pow(s,Math.floor(i[o]/n)),r=r*Math.pow(s,i[o]%n)}return[t,r]}function kn(e,n){if(e===0)return n;if(n===0||e===n)return e;if(!Number.isInteger(e)||!Number.isInteger(n))return NaN;for(;n!==0;)[e,n]=[n,e%n];return e<0?-e:e}function St(e,n){return e*n/kn(e,n)}function It(e){if(!Number.isInteger(e)||e<0)return NaN;let n=1;for(let i=2;i<=e;i++)n=n*i;return n}function Cs(e){if(!Number.isInteger(e)||e<0)return NaN;if(e<0)return NaN;if(e<=1)return 1;let n=e;for(;e>2;)e-=2,n*=e;return n}var Ts=7,ks=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23];function Di(e){if(e<0)return NaN;let n=Math.PI,i=e*e*e;return e*Math.log(e)-e-.5*Math.log(e)+.5*Math.log(2*n)+1/(12*e)-1/(360*i)+1/(1260*i*e*e)}function Kn(e){if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*Kn(1-e));if(e>100)return Math.exp(Di(e));e-=1;let n=ks[0];for(let t=1;t<Ts+2;t++)n+=ks[t]/(e+t);let i=e+Ts+.5;return Math.sqrt(2*Math.PI)*Math.pow(i,e+.5)*Math.exp(-i)*n}function y(e){if(e==null)return null;let n=e.numericValue;if(n===null)return null;if(typeof n=="number")return n;if(n instanceof E)return n.toNumber();if(Array.isArray(n)){let[i,t]=n;return typeof i=="number"&&typeof t=="number"?i/t:Number(i)/Number(t)}return!(n instanceof Nt.Complex)||n.im,null}function Ae(e){if(e==null)return null;let n=e.numericValue;if(n===null)return null;if(n instanceof E)return n;if(typeof n=="number")return e.engine.bignum(n);if(Array.isArray(n)){let[i,t]=n;return typeof i=="number"&&typeof t=="number"?e.engine.bignum(i/t):e.engine.bignum(i).div(t.toString())}return!(n instanceof Nt.Complex)||n.im,null}function w(e){if(e==null)return null;let n=e.numericValue;if(n===null)return null;if(typeof n=="number")return Number.isInteger(n)&&n>=-Qn&&n<=Qn?n:null;if(n instanceof E){if(n.isInteger()){let t=n.toNumber();if(t>=-Qn&&t<=Qn)return t}return null}if(e.isCanonical)return null;let i=n;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>=-Qn&&o<=Qn?o:null}return null}function wn(e,n){return typeof e=="number"&&Math.abs(e)<=n||e instanceof E&&e.abs().lte(n)||e instanceof Nt.Complex&&Math.abs(e.re)<=n&&Math.abs(e.im)<=n?0:e}function Fr(e){let n=.254829592,i=-.284496736,t=1.421413741,r=-1.453152027,o=1.061405429,s=.3275911,a=e<0?-1:1;e=Math.abs(e);let u=1/(1+s*e),l=((((o*u+r)*u+t)*u+i)*u+n)*u;return a*(1-l*Math.exp(-e*e))}function As(e){let n=Math.PI,i=n*n,t=i*n,r=e*e,o=e*r,s=o*r,a=s*r;return Math.sqrt(n)/2*(e+n/12*o+7*i/480*s+127*t/40320*a+4369*i*i/5806080*a*r+34807*t*i/182476800*a*r*r)}function Os(e,n,i=.1){return(e(n-4*i)/280-4*e(n-3*i)/105+e(n-2*i)/5-4*e(n-i)/5+4*e(n+i)/5-e(n+2*i)/5+4*e(n+3*i)/105-e(n+4*i)/280)/i}function Ps(e,n,i,t=1e5){let r=0;if(n===-1/0&&i===1/0)for(let o=0;o<t;o++){let s=Math.random(),a=Math.tan(Math.PI*(s-.5)),u=Math.PI*(1+a*a);r+=e(a)/u}else if(n===-1/0)for(let o=0;o<t;o++){let s=Math.random(),a=i-Math.log(1-s),u=1/(1-s);r+=e(a)/u}else if(i===1/0)for(let o=0;o<t;o++){let s=Math.random(),a=n+Math.log(s),u=1/s;r+=e(a)/u}else for(let o=0;o<t;o++)r+=e(n+Math.random()*(i-n));return r/t*(i-n)}function Dn(e,n,i=1){if(i===0){let o=Dn(e,n,-1),s=Dn(e,n,1);return o===void 0||s===void 0?NaN:Math.abs(o-s)>1e-5?NaN:(o+s)/2}let[t,r]=Or(e,n,{step:i>0?1:-1});return t}function $l(e){if(e==="N")return[0,""];let n={I:1,V:5,X:10,L:50,C:100,D:500,M:1e3},i=0,t=0;e=e.toUpperCase();for(let r=e.length-1;r>=0;r--){let o=n[e[r]];if(o===void 0)return[i,e.slice(r)];o<t?i-=o:i+=o,t=o}return[i,""]}function Xn(e,n){if(e=e.trim(),e.length===0)return[NaN,""];if(e.startsWith("+"))return Xn(e.slice(1),n);if(e.startsWith("-")){let[r,o]=Xn(e.slice(1),n);return[-r,o]}let i=10;if(typeof n=="string"&&(n=n.toLowerCase()),e.startsWith("0x"))i=16,e=e.slice(2);else if(e.startsWith("0b"))i=2,e=e.slice(2);else{if(n==="roman")return $l(e);if(n==="base64"||n==="base-64")try{return[parseInt(btoa(e)),""]}catch{return[NaN,""]}else typeof n=="number"?i=n:typeof n=="string"&&(i=parseInt(n))}let t=0;for(let r=0;r<e.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}[e[r]];if(o!==-1){if(o===void 0)return[t,e.substring(r)];if(o>=i)return[t,e.substring(r)];t=t*i+o}}return[t,""]}function T(e){if(typeof e=="bigint")return e;if(e instanceof xr)return T(e.toString());let n=e.toString(),i=n.match(/([^\.]+)(?:\.([0-9]+))?e(.+)$/);return i&&(n=i[1]+(i[2]??"")+"0".repeat(parseInt(i[3])-(i[2]?i[2].length:0))),BigInt(n)}function Ls(e,n){for(;n!==BigInt(0);)[e,n]=[n,e%n];return e<0?-e:e}var zl=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];function Ul(e){if(e<Number.MAX_SAFE_INTEGER){let f=Lr(Number(e)),d=new Map;for(let c of Object.keys(f))d.set(T(c),f[c]);return d}let n=e,i=new Map,t=0,r=0,o=0,s=BigInt(10);for(;n%s===BigInt(0);)t+=1,o+=1,n=n/s;for(s=BigInt(5);n%s===BigInt(0);)o+=1,n=n/s;for(s=BigInt(3);n%s===BigInt(0);)r+=1,n=n/s;for(s=BigInt(2);n%s===BigInt(0);)t+=1,n=n/s;t>0&&i.set("2",t),r>0&&i.set("3",r),o>0&&i.set("5",o),s=BigInt(7);let a="",u=0;for(;s*s<n;)n%s===BigInt(0)?(a||(a=s.toString()),i.set(a,(i.get(a)??0)+1),n=n/s):(s=s+zl[u],a="",u=u<7?u+1:0);n!==BigInt(1)&&i.set(n.toString(),(i.get(n.toString())??0)+1);let l=new Map;for(let[f,d]of i)l.set(T(f),d);return l}function Bt(e,n){let i=Ul(e),t=BigInt(1),r=BigInt(1),o=T(n);for(let[s,a]of i){let u=T(a);t=t*s**(u/o),r=r*s**(u%o)}return[t,r]}function V(e){return e!==null&&Array.isArray(e)}function L(e){return e!==null&&Array.isArray(e)&&typeof e[0]=="number"}function U(e){return e!==null&&Array.isArray(e)&&typeof e[0]=="bigint"}function De(e){return e[0]==0}function ie(e){return e[0]===e[1]}function Dt(e){return e[0]===-e[1]}function ve(e){return Number(e[0])}function we(e){return Number(e[1])}function Rr(e){return e[0]<0}function ge(e){return[-e[0],e[1]]}function an(e){return e[0]<0?[-e[1],-e[0]]:[e[1],e[0]]}function Z(e){let n=e.numericValue;if(n!==null){if(Array.isArray(n))return n;if(typeof n=="number"&&Number.isInteger(n))return[n,1];if(n instanceof E&&n.isInteger())return[T(n),BigInt(1)]}}function Fs(e){return[Number(e[0]),Number(e[1])]}function Mn(e,n){if(Array.isArray(n)||n.numericValue!==null&&n instanceof sn.Complex,typeof e[0]=="number"&&!Number.isFinite(e[0]))return e;let i=Array.isArray(n)?n:n.numericValue;if(i===null)return e;if(Array.isArray(i)){if(U(i))return e=[T(e[0]),T(e[1])],[i[1]*e[0]+i[0]*e[1],i[1]*e[1]];if(!Number.isFinite(i[0]))return i;if(U(e)){let t=[T(i[0]),T(i[1])];return[t[1]*e[0]+t[0]*e[1],t[1]*e[1]]}return[i[1]*e[0]+i[0]*e[1],i[1]*e[1]]}return i instanceof E?i.isNaN()?[Number.NaN,1]:i.isFinite()?(i.isInteger(),L(e)&&(e=[T(e[0]),T(e[1])]),[e[0]+e[1]*T(i.toString()),e[1]]):[i.isNegative()?-1/0:1/0,1]:i instanceof sn.Complex?[Number.NaN,1]:(!Number.isFinite(i)||Number.isInteger(i),Number.isFinite(i)?L(e)?[e[0]+e[1]*i,e[1]]:[e[0]+e[1]*T(i),e[1]]:[i,1])}function te(e,n){if(Array.isArray(n)||n.numericValue!==null&&n instanceof sn.Complex,Array.isArray(n))return L(e)&&L(n)?[e[0]*n[0],e[1]*n[1]]:(L(e)&&(e=[T(e[0]),T(e[1])]),L(n)&&(n=[T(n[0]),T(n[1])]),[e[0]*n[0],e[1]*n[1]]);let i=n.numericValue;return i!==null&&typeof i=="number"?(Number.isInteger(i),L(e)?[e[0]*i,e[1]]:[e[0]*T(i),e[1]]):i instanceof E?(i.isInteger(),L(e)?[T(i.toString())*T(e[0]),T(e[1])]:[T(i.toString())*e[0],e[1]]):Array.isArray(i)?U(i)?[i[0]*T(e[0]),i[1]*T(e[1])]:L(e)?[e[0]*i[0],e[1]*i[1]]:[e[0]*T(i[0]),e[1]*T(i[1])]:e}function Gl(e,n){if(Number.isInteger(n),n===0)return[1,1];if(n<0&&(e=an(e),n=-n),n===1)return e;if(L(e))return[Math.pow(e[0],n),Math.pow(e[1],n)];let i=T(n);return[e[0]**i,e[1]**i]}function un(e){if(L(e)){if(e[0]===1||e[1]===1)return e;if(e[1]<0&&(e=[-e[0],-e[1]]),!Number.isFinite(e[1]))return[0,1];let i=kn(e[0],e[1]);return i<=1?e:[e[0]/i,e[1]/i]}if(e[0]===BigInt(1)||e[1]===BigInt(1))return e;e[1]<0&&(e=[-e[0],-e[1]]);let n=Ls(e[0],e[1]);return n<=1?e:[e[0]/n,e[1]/n]}function Rs(e){if(!Number.isFinite(e)||e%1===0)return e;let i=1e-15,t=Math.floor(e),r=1,o=0,s=t,a=1;for(;e-t>i*a*a;){e=1/(e-t),t=Math.floor(e);let u=r;r=s;let l=o;o=a,s=u+t*r,a=l+t*o}return[s,a]}function Ge(e){e.isCanonical;let n=e.engine;if(e.head==="Multiply"){let t=[],r=[1,1];for(let o of e.ops){let s=o.numericValue;s!==null&&(typeof s=="number"&&Number.isInteger(s)||s instanceof E&&s.isInteger()||V(s))?r=te(r,o):t.push(o)}return r=un(r),ie(r)?[[1,1],e]:t.length===0?[r,n.One]:t.length===1?[r,t[0]]:[r,n.mul(t)]}if(e.head==="Divide"){let[t,r]=Ge(e.op1),[o,s]=Ge(e.op2),a=un(te(t,an(o)));return s.isOne?[a,r]:[a,n.div(r,s)]}if(e.head==="Power"){if(e.op2.numericValue===null)return[[1,1],e];let[t,r]=Ge(e.op1);if(ie(t))return[[1,1],e];let o=e.op2,s=w(o);if(s===-1)return[an(t),n.inv(r)];if(s!==null)return[Gl(t,s),n.pow(r,o)];if(o.numericValue!==null&&Array.isArray(o.numericValue)){let[a,u]=Fs(o.numericValue),[l,f]=Fs(t);if(l>0&&Math.abs(a)===1){let[d,c]=on(l,u),[p,g]=on(f,u);return d===1&&p===1?[[1,1],e]:[a===1?[d,p]:[p,d],n.pow(n.mul([n.number([c,g]),r]),o)]}}return[[1,1],e]}if(e.head,e.head==="Negate"){let[t,r]=Ge(e.op1);return[ge(t),r]}let i=e.numericValue;if(i!==null){if(i instanceof E){if(i.isInteger())return[[T(i.toString()),BigInt(1)],n.One];if(i.isNegative())return[[-1,1],n.number(i.neg())]}if(typeof i=="number"){if(Number.isInteger(i))return[[i,1],n.One];if(i<0)return[[-1,1],n.number(-i)]}if(V(i))return[i,n.One];if(i instanceof sn.Complex&&i.re<0)return[[-1,1],n.number(n.complex(-i.re,-i.im))]}return[[1,1],e]}function Cn(e,n,i){if(e===n)return 0;let t=e.N(),r=n.N(),o=t.numericValue,s=r.numericValue;if(o===null||s===null){let l=e.sgn,f=n.sgn;return typeof l!="number"||typeof f!="number"?void 0:l===0&&f===0?0:l<0&&f>0?-1:l>0&&f<0?1:void 0}if(i??(i=e.engine.tolerance),o instanceof sn.Complex&&s instanceof sn.Complex)return wn(o.re-s.re,i)===0&&wn(o.im-s.im,i)===0?0:void 0;if(o instanceof sn.Complex||s instanceof sn.Complex||V(o)||V(s))return;if(typeof o=="number"&&typeof s=="number")return wn(s-o,i)===0?0:o<s?-1:1;let a=e.engine,u=a.bignum(s).sub(a.bignum(o));return wn(u,i)===0?0:u.isPos()?1:-1}function Vs(e){if(typeof e=="number"&&!isNaN(e))return isFinite(e)?Number.isInteger(e)?e>0?"PositiveIntegers":e<0?"NegativeIntegers":"Integers":e>0?"PositiveNumbers":e<0?"NegativeNumbers":"RealNumbers":"ExtendedRealNumbers";if(e instanceof E)return e.isNaN()?"Numbers":e.isFinite()?e.isInteger()?e.isPositive()?"PositiveIntegers":e.isNegative()?"NegativeIntegers":"Integers":e.isPositive()?"PositiveNumbers":e.isNegative()?"NegativeNumbers":"RealNumbers":"ExtendedRealNumbers";if(e instanceof qs.Complex){let n=e;return n.im,n.re===0?"ImaginaryNumbers":"ComplexNumbers"}if(V(e)){let[n,i]=e;return typeof n!="number"||!Number.isNaN(n)&&Number.isNaN(i),"RationalNumbers"}return"Numbers"}function Ti(e){e.ctor;let n=e.engine,i=e.params,t=[],r=[],o,s=n.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 ${e}`);if(o)throw Error(`Unexpected OptArg after VarArg in domain ${e}`);if(X(a)===0)throw Error(`Unexpected empty OptArg in domain ${e}`);for(let u of B(a)){if(x(u)==="OptArg")throw Error(`Unexpected OptArg of OptArg in domain ${e}`);if(x(u)==="VarArg")throw Error(`Unexpected superfluous OptArg of VarArg in domain ${e}`);r.push(n.domain(u))}}else if(x(a)==="VarArg"){let u=B(a);if(u.length!==1)throw Error(`Invalid VarArg in domain ${e}`);if(x(u[0])==="OptArg")throw Error(`Unexpectedf VarArg of OptArg in domain ${e}`);if(x(u[0])==="VarArg")throw Error(`Unexpected VarArg of VarArg in domain ${e}`);o=n.domain(u[0])}else{if(r.length>0)throw Error(`Unexpected required parameter after OptArg in domain ${e}`);if(o)throw Error(`Unexpected required parameter after VarArg in domain ${e}`);t.push(n.domain(a))}return[t,r,o,s]}function ki(e){let[n,i,t,r]=Ti(e);return{params:n.map(o=>o.json),optParams:i.map(o=>o.json),restParam:t?.json,result:r.json}}function Tt(e,n){let i=[...n.params];return n.optParams.length>0&&i.push(["OptArg",...n.optParams]),n.restParam&&i.push(["VarArg",n.restParam]),typeof n.result=="function"?i.push(n.result(e,[])??e.symbol("Undefined")):i.push(n.result),e.domain(["FunctionOf",...i])}var $s=le(ae());function ei(e){return typeof e=="string"?e.startsWith("$")&&e.endsWith("$"):!1}function ni(e){return typeof e!="string"?null:e.startsWith("$$")&&e.endsWith("$$")?e.slice(2,-2):e.startsWith("$")&&e.endsWith("$")?e.slice(1,-1):null}function wt(e){if(e.symbol==="ImaginaryUnit")return 1;let n=e.numericValue;if(n!==null&&n instanceof $s.Complex&&n.re===0)return n.im;if(e.head==="Negate"){let i=wt(e.op1);return i===null?null:-i}if(e.head==="Multiply"&&e.nops===2){if(e.op1.symbol==="ImaginaryUnit")return y(e.op2);if(e.op2.symbol==="ImaginaryUnit")return y(e.op1)}return 0}function wi(e,n){if(e.symbol){n.add(e.symbol);return}if(e.head&&typeof e.head!="string"&&wi(e.head,n),e.ops)for(let i of e.ops)wi(i,n);if(e.keys)for(let i of e.keys)wi(e.getKey(i),n)}function Mi(e,n){if(e.symbol){let i=e.engine.lookupSymbol(e.symbol);if(i&&i.value!==void 0)return;let t=e.engine.lookupFunction(e.symbol);if(t&&(t.signature.evaluate||t.signature.N))return;n.add(e.symbol);return}if(e.head&&typeof e.head!="string"&&Mi(e.head,n),e.ops)for(let i of e.ops)Mi(i,n);if(e.keys)for(let i of e.keys)Mi(e.getKey(i),n)}function Ci(e,n){if(e.head,e.symbol){let i=e.engine.lookupSymbol(e.symbol);if(i&&i.value!==void 0)return;let t=e.engine.lookupFunction(e.symbol);if(t&&(t.signature.evaluate||t.signature.N))return;n.add(e.symbol);return}if(e.head&&typeof e.head!="string"&&Ci(e.head,n),e.ops)for(let i of e.ops)Ci(i,n);if(e.keys)for(let i of e.keys)Ci(e.getKey(i),n)}function kt(e,n){let i=!n||e.head===n?[e]:[];if(e.ops)for(let t of e.ops)i.push(...kt(t,n));else if(e.keys)for(let t of e.keys)i.push(...kt(e.getKey(t),n));return i}function C(e){return e.numericMode==="bignum"||e.numericMode==="auto"}function W(e){return e.numericMode==="auto"||e.numericMode==="complex"}function he(e){let n=0;for(let i=0;i<e.length;i++)n=Math.imul(31,n)+e.charCodeAt(i)|0;return Math.abs(n)}function qr(e,n){if(n==null)return null;if(typeof n=="number")return Number.isInteger(n)?T(n):null;if(Bn(n)){let t=(jn(n)?n.num.toString():n).toLowerCase().replace(/[nd]$/g,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,"");if(/\([0-9]+\)/.test(t)){let[r,o,s,a]=t.match(/(.+)\(([0-9]+)\)(.*)$/)??[];t=o+s.repeat(Math.ceil(e.precision/s.length))+(a??"")}return t==="nan"||t==="infinity"||t==="+infinity"||t==="-infinity"||t.includes(".")?null:T(t)}return null}function Ai(e){let n=e.numericValue;return n===null?null:typeof n=="number"&&Number.isInteger(n)?T(n):n instanceof E&&n.isInteger()?T(n):null}function Vr(e,n,i){let t=[];for(let r of n){let o=zs(r,e,i);o!==null&&t.push(o)}return t}function ii(e,n){let i=new Set;for(let[t,r,o]of n){let s,a=ni(o?.condition);if(a){let u=e.pattern(a);s=l=>u.subs(l).evaluate()?.symbol==="True"}else s=o?.condition;i.add([e.pattern(t),e.pattern(r),o?.priority??0,s])}return i}function zs([e,n,i,t],r,o,s){let a=e.match(r,{substitution:o,...s});return a===null||typeof t=="function"&&!t(a)?null:n.subs(a,{canonical:!0})}function Mt(e,n,i){let t=i?.iterationLimit??1,r=0,o=i?.once??!1,s=!1,a=!1;try{for(;!s&&r<t;){s=!0;for(let u of n){let l=zs(u,e,{},i);if(l!==null&&l!==e){if(o)return l;s=!1,a=!0,e=l}}r+=1}}catch(u){console.error(u)}return a?e:null}function Us(e){let n=e.match(/^(__?_?[a-zA-Z0-9]+)/);return n===null?"":n[1]}var zr=le(ae());function Pi(e){if(e.head==="Power"&&e.op2.numericValue!==null){let n=w(e.op2);return n!==null&&n>0?n:1}if(e.head==="Multiply"){let n=1;for(let i of e.ops){let t=Pi(i);t>1&&(n=n+t)}return n}return 1}function $r(e){if(e.head==="Power"&&e.op2.numericValue!==null){let n=w(e.op2);return n!==null&&n>0?n:1}if(e.head==="Multiply"){let n=1;for(let i of e.ops)n=Math.max(n,Pi(i));return n}return 1}function Oi(e){return e.symbol?e.symbol:e.ops?(typeof e.head=="string"?e.head:Oi(e.head))+'"'+e.ops.map(i=>Oi(i)).filter(i=>i.length>0).join('"'):""}var Je=1e5;function Ct(e,n){return n.sort((i,t)=>{let r=Oi(i),o=Oi(t);if(!r&&!o)return An(i,t);if(!r)return 1;if(!o||r<o)return-1;if(r>o)return 1;let s=Pi(i),a=Pi(t);if(s!==a)return a-s;let u=$r(i),l=$r(t);return u!==l?u-l:An(i,t)})}function An(e,n){if(e===n||e.numericValue!==null&&e.numericValue===n.numericValue)return 0;let i=y(e);if(i!==null){let t=y(n);return t!==null?i-t:-1}if(e.numericValue instanceof zr.Complex)return n.numericValue instanceof zr.Complex?e.numericValue.re===n.numericValue.re?Math.abs(e.numericValue.im)===Math.abs(n.numericValue.im)?e.numericValue.im-n.numericValue.im:Math.abs(e.numericValue.im)-Math.abs(n.numericValue.im):e.numericValue.re-n.numericValue.re:n.numericValue!==null?1:-1;if(e.numericValue)return n.numericValue?1:-1;if(e.head==="Sqrt"&&e.op1.numericValue)return n.head==="Sqrt"&&n.op1.numericValue?An(e.op1,n.op1):-1;if(e.symbol)return n.symbol?e.symbol===n.symbol?0:e.symbol>n.symbol?1:-1:n.numericValue!==null?1:-1;if(e.ops){if(n.ops){let t=e.functionDefinition?.complexity??Je,r=n.functionDefinition?.complexity??Je;return t===r?typeof e.head=="string"&&typeof n.head=="string"?e.head===n.head?ti(e)-ti(n):e.head<n.head?1:-1:ti(e)-ti(n):t-r}return n.numericValue!==null||n.symbol?1:-1}if(e.string)return n.string?e.string.length!==n.string.length?n.string.length-e.string.length:n.string<e.string?-1:e.string>n.string?1:0:n.keys?-1:1;if(e.keys&&n.keys){if(e.keysCount!==n.keysCount)return n.keysCount-e.keysCount;let t=0,r=0;for(let o of n.keys)t+=n.getKey(o).complexity??Je;for(let o of e.keys)r+=e.getKey(o).complexity??Je;return r-t}return(e.complexity??Je)-(n.complexity??Je)}function ti(e){return e.keys!==null?1+e.keysCount:e.ops?(typeof e.head=="string"?1:ti(e.head))+[...e.ops].reduce((n,i)=>n+ti(i),0):1}function re(e,n){if(!n||e.every(t=>!t.ops||t.head!==n))return e;let i=[];for(let t of e)!t.ops||t.head!==n?i.push(t):i.push(...re(t.ops,n));return i.length,e.length,i.length===e.length?e:i}function Ne(e){if(e.every(i=>i.head!=="Sequence"))return e;let n=[];for(let i of e)i.isValid&&i.head==="Sequence"?i.ops&&n.push(...i.ops):n.push(i);return n}var js=le(ae());function ri(e){return e.string!==null||(e.symbolDefinition?.value?.string??null)!==null?!0:(e.functionDefinition??e.symbolDefinition?.value?.functionDefinition)?.iterator!==void 0}function At(e){return e.string!==null||(e.symbolDefinition?.value?.string??null)!==null?!0:(e.functionDefinition??e.symbolDefinition?.value?.functionDefinition)?.at!==void 0}function ce(e){if(e.string!==null||(e.symbolDefinition?.value?.string??null)!==null)return!0;let n=e.functionDefinition??e.symbolDefinition?.value?.functionDefinition;return n?n.at!==void 0&&Number.isFinite(n.size?.(e)??1/0):!1}function*Y(e){let n=jl(e);if(!n){yield e;return}let i=e.engine.iterationLimit,t=0;for(;;){let{done:r,value:o}=n.next();if(r)return;if(t++>i){yield e.engine.error("iteration-limit-exceeded");return}yield o}}function jl(e){let n=e.functionDefinition??e.symbolDefinition?.value?.functionDefinition;if(n?.iterator)return n.iterator(e);let i=e.string??e.symbolDefinition?.value?.string??null;if(i!==null){if(i.length===0)return{next:()=>({done:!0,value:void 0})};let t=0;return{next:()=>({value:e.engine.string(i.charAt(t++)),done:t>i.length})}}}function Gs(e,n){let i=e.functionDefinition??e.symbolDefinition?.value?.functionDefinition;if(i?.at)return i.at(e,n);let t=e.string;if(t)return n<1?e.engine.string(t.charAt(t.length+n)):e.engine.string(t.charAt(n-1))}var Li=class{constructor(n,i,t){this._isCanonical=!0;this._imaginary=0;this._posInfinityCount=0;this._negInfinityCount=0;this._naNCount=0;this._terms=[];if(t??(t={}),"canonical"in t?this._isCanonical=t.canonical:this._isCanonical=!0,this.engine=n,this._rational=C(n)?[BigInt(0),BigInt(1)]:[0,1],this._bignum=n._BIGNUM_ZERO,this._number=0,i)for(let r of i)this.addTerm(r)}get isEmpty(){return this._isCanonical?this._terms.length===0&&De(this._rational)&&this._imaginary===0&&this._number===0&&this._bignum.isZero()&&this._negInfinityCount===0&&this._posInfinityCount===0&&this._naNCount===0:this._terms.length===0}addTerm(n,i){if(n.isNothing)return;if(n.isNaN||n.isImaginary&&!W(this.engine)){this._naNCount+=1;return}if(this._isCanonical&&n.numericValue!==null){if(n.isInfinity){n.isPositive?this._posInfinityCount+=1:this._negInfinityCount+=1;return}let o=Z(n);if(o){this._rational=Mn(this._rational,i===void 0?o:te(o,i));return}let s=n.numericValue;if(s!==null&&typeof s=="number"){Number.isInteger(s),C(this.engine)?this._bignum=this._bignum.add(s):this._number+=s;return}if(s!==null&&s instanceof E){s.isInteger(),this._bignum=this._bignum.add(s);return}if(s!==null&&s instanceof js.Complex){let a=s.re,u=s.im;if(Number.isInteger(a)?(this._rational=Mn(this._rational,te([a,1],i??[1,1])),a=0):(C(this.engine)?this._bignum=this._bignum.add(a):this._number+=a,a=0),Number.isInteger(u)&&(i===void 0?this._imaginary+=u:L(i)?this._imaginary+=u*i[0]/i[1]:this._imaginary+=this.engine.bignum(i[0]).mul(u).div(this.engine.bignum(i[1])).toNumber(),u=0),a===0&&u===0)return;n=this.engine.number(this.engine.complex(a,u))}}let t;if([t,n]=Ge(n),De(t))return;if(i!==void 0&&(t=te(t,i)),n.head==="Negate"){this.addTerm(n.op1,ge(t));return}if(n.head==="Add"){for(let o of n.ops)this.addTerm(o,t);return}let r=!1;if(n.numericValue===null){if(this._terms.length>500){let o=n.hash;for(let s=0;s<this._terms.length;s++)if(this._terms[s].term.numericValue===null&&o===this._terms[s].term.hash&&n.isSame(this._terms[s].term)){this._terms[s].coef=Mn(this._terms[s].coef,t),r=!0;break}}else for(let o=0;o<this._terms.length;o++)if(this._terms[o].term.numericValue===null&&n.isSame(this._terms[o].term)){this._terms[o].coef=Mn(this._terms[o].coef,t),r=!0;break}}r||this._terms.push({term:n,coef:t})}toString(){let n=this.terms("expression");return n.length===0?"0":n.map(i=>i.toString()).join("\\n")}terms(n){let i=this.engine;if(this._naNCount>0)return[i.NaN];if(this._imaginary!==0&&!W(i))return[i.NaN];if(this._posInfinityCount>0&&this._negInfinityCount>0)return[i.NaN];if(this._posInfinityCount>0)return[i.PositiveInfinity];if(this._negInfinityCount>0)return[i.NegativeInfinity];let t=[];for(let{coef:r,term:o}of this._terms)De(r)||(ie(r)?t.push(o):Dt(r)?t.push(i.neg(o)):we(r)===1?t.push(i.mul([i.number(r[0]),o])):ve(r)===1?t.push(i.div(o,i.number(r[1]))):t.push(i.mul([i.number(r),o])));if(n==="numeric")if(C(this.engine)){let r=this._bignum.add(this._number);De(this._rational)||(r=r.add(i.bignum(this._rational[0]).div(i.bignum(this._rational[1])))),this._imaginary!==0?t.push(i.number(i.complex(r.toNumber(),this._imaginary))):r.isZero()||t.push(i.number(r))}else{let r=this._bignum.toNumber()+this._number;De(this._rational)||(r+=ve(this._rational)/we(this._rational)),this._imaginary!==0?t.push(i.number(i.complex(r,this._imaginary))):r!==0&&t.push(i.number(r))}else{if(De(this._rational)||t.push(i.number(this._rational)),this._imaginary!==0){if(!W(i))return[i.NaN];t.push(i.number(i.complex(0,this._imaginary)))}if(C(this.engine)){let r=this._bignum.add(this._number);r.isZero()||t.push(i.number(r))}else this._bignum.isZero()||t.push(i.number(this._bignum)),this._number!==0&&t.push(i.number(this._number))}return re(t,"Add")}asExpression(n){let i=this.engine,t=this.terms(n);return t.length===0?i.Zero:t.length===1&&!At(t[0])?t[0]:i._fn("Add",Ct(i,t))}};var oi=["InvalidDomain","DictionaryOf","FunctionOf","ListOf","TupleOf","Intersection","Union","OptArg","VarArg"],Ot={Functions:["FunctionOf",["VarArg","Anything"],"Anything"],NumericFunctions:["FunctionOf","Numbers",["VarArg","Numbers"],"Numbers"],RealFunctions:["FunctionOf","ExtendedRealNumbers",["VarArg","ExtendedRealNumbers"],"ExtendedRealNumbers"],LogicOperators:["FunctionOf","Booleans",["OptArg","Booleans"],"Booleans"],Predicates:["FunctionOf","Anything",["VarArg","Anything"],"Booleans"],RelationalOperators:["FunctionOf","Anything","Anything","Booleans"]},yn={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"},Fi;function On(e){return e?yn[e]!==void 0:!1}function Oe(e){if(Fi||(Fi={},Oe("Void")),Fi[e])return Array.from(Fi[e]);let n=[];if(typeof e!="string"||!yn[e]){if(!Array.isArray(e))throw Error(`Unknown domain literal ${e}`);if(!oi.includes(e[0]))throw Error(`Unknown domain constructor ${e[0]}`);return e[0]==="FunctionOf"?Oe("Functions"):e[0]==="TupleOf"?Oe("Tuples"):e[0]==="ListOf"?Oe("Lists"):e[0]==="DictionaryOf"?Oe("Dictionaries"):e[0]==="OptArg"||e[0]==="VarArg"?Oe(e[1]):e[0]==="Literal"?["Anything"]:e[0]==="Union"?["Anything"]:e[0]==="Intersection"?["Anything"]:["Anything"]}if(typeof yn[e]=="string")n=[yn[e],...Oe(yn[e])];else if(Array.isArray(yn[e]))for(let i of yn[e])n.push(i),n.push(...Oe(i));return Fi[e]=new Set(n),n}function Hs(){let e={};for(let n of Object.keys(yn))e[n]={domain:"Domains",value:["Domain",n]};e.InvalidDomain={signature:{domain:["FunctionOf","Domains","Domains"],canonical:(n,i)=>n.domain(["InvalidDomain",i[0]])}};for(let n of["DictionaryOf","FunctionOf","ListOf","TupleOf"])e[n]={signature:{domain:["FunctionOf",["VarArg","Domains"],"Domains"],canonical:(i,t)=>i.domain([n,...t])}};for(let n of["OptArg","VarArg"])e[n]={signature:{domain:["FunctionOf","Domains","Domains"],canonical:(i,t)=>i.domain([n,t[0]])}};return e}var Ws=le(ae());var Ri=le(ae());function Ur(e){if(e.head==="Negate")return[-1,e.op1];let n=e.numericValue;if(n===null)return[1,e];let i=e.engine;return typeof n=="number"&&n<0?[-1,i.number(-n)]:n instanceof E&&n.isNegative()?[-1,i.number(n.neg())]:n instanceof Ri.Complex&&n.re<0?[-1,i.number(i.complex(-n.re,-n.im))]:L(n)&&n[0]<0?[-1,i.number([-n[0],n[1]])]:U(n)&&n[0]<0?[-1,i.number([-n[0],n[1]])]:[1,e]}function Hl(e,n,i,t){let r=e.numericValue,o=e.engine;return typeof r=="number"?C(o)&&i?o.chop(i(o.bignum(r))):o.chop(n(r)):r instanceof E?o.chop(i?.(r)??n(r.toNumber())):L(r)?!C(o)||!i?o.chop(n(r[0]/r[1])):o.chop(i(o.bignum(r[0]).div(r[1]))):U(r)?i?o.chop(i(o.bignum(r[0]).div(o.bignum(r[1])))):o.chop(n(Number(r[0])/Number(r[1]))):r instanceof Ri.Complex?!t||!W(o)?NaN:o.chop(t(r)):NaN}function O(e,n,i,t){if((e?.numericValue??null)!==null)return e.engine.number(Hl(e,n,i,t))}function Zl(e,n,i,t,r){e.numericValue!==null&&n.numericValue;let o=e.engine,s=e.numericValue;L(s)&&(s=s[0]/s[1]);let a=n.numericValue;if(L(a)&&(a=a[0]/a[1]),!C(o)&&typeof s=="number"&&typeof a=="number")return i(s,a);let u;s instanceof E?u=s:U(s)?u=o.bignum(s[0]).div(o.bignum(s[1])):s!==null&&typeof s=="number"&&(u=o.bignum(s));let l;return a instanceof E?l=a:U(a)?u=o.bignum(a[0]).div(o.bignum(a[1])):a!==null&&typeof a=="number"&&(l=o.bignum(a)),u&&l?t?.(u,l)??i(u.toNumber(),l.toNumber()):s instanceof Ri.Complex||a instanceof Ri.Complex?!r||!W(o)?NaN:r(o.complex(s??u?.toNumber()??NaN),o.complex(a??l?.toNumber()??NaN)):NaN}function En(e,n,i,t,r){if(!(e.numericValue===null||n.numericValue===null))return e.engine.number(Zl(e,n,i,t,r))}function ln(e,n,i){return e==="all"?!0:e==="none"?!1:e==="first"?i===0:e==="rest"?i!==0:e==="last"?i===n:e==="most"?i!==n:!0}function ee(e){return e.every(n=>n.isCanonical)?e:e.map(n=>n.canonical)}function _e(e,n,i){if(n=ee(n),n=Ne(n),!e.strict||n.length===i)return n;let t=[...n.slice(0,i)],r=Math.min(i,n.length);for(;r<i;)t.push(e.error("missing")),r+=1;for(;r<n.length;)t.push(e.error("unexpected-argument",n[r])),r+=1;return t}function Te(e,n,i){let t=typeof i=="number"?i:i?.count,r=typeof i=="number"?!0:i?.flatten??!0;if(n=ee(n),r&&(n=Ne(n)),typeof r=="string"&&re(n,r),!e.strict){for(let a of n)ce(a)||a.infer(e.Numbers);return n}let o=!0;t??(t=n.length);let s=[];for(let a=0;a<=Math.max(t-1,n.length-1);a++){let u=n[a];if(a>t-1)o=!1,s.push(e.error("unexpected-argument",u));else if(u===void 0)o=!1,s.push(e.error("missing"));else if(u.symbol&&!e.lookupSymbol(u.symbol)&&!e.lookupFunction(u.symbol))s.push(u);else if(u.isNumber||u.domain?.isNumber)s.push(u);else if(!u.isValid)o=!1,s.push(u);else if(!u.domain)s.push(u);else if(ce(u)){for(let l of Y(u))if(!l.isNumber&&!l.domain?.isNumber){o=!1;break}o?s.push(u):s.push(e.domainError("Numbers",u.domain,u))}else u.symbolDefinition?.inferredDomain&&u.domain.isCompatible(e.Numbers,"contravariant")||u.functionDefinition?.signature.inferredSignature&&u.domain.isCompatible(e.Numbers,"contravariant")?s.push(u):(o=!1,s.push(e.domainError("Numbers",u.domain,u)))}if(o)for(let a of s)if(ce(a))for(let u of Y(a))u.infer(e.Numbers);else a.infer(e.Numbers);return s}function Me(e,n,i){return n==null?e.error("missing"):i===void 0?e.error("unexpected-argument",n):(n=n.canonical,n.head==="Sequence"&&(n=n.op1),!n.isValid||!n.domain||n.domain.isCompatible(i)?n:e.domainError(i,n.domain,n))}function Pt(e,n,i){if(n.length===i.length&&n.every((r,o)=>!r.domain||r.domain.isCompatible(i[o])))return n;let t=[];for(let r=0;r<=i.length-1;r++)t.push(Me(e,n[r],i[r]));for(let r=i.length;r<=n.length-1;r++)t.push(e.error("unexpected-argument",n[r]));return t}function Zs(e,n,i,t,r,o,s){if(!e.strict)return null;let a=[],u=!0,l=0;for(let f of r){let d=n[l++];if(!d){a.push(e.error("missing")),u=!1;continue}if(ln(i,r.length,l-1)){a.push(d);continue}if(!d.isValid){a.push(d),u=!1;continue}if(!d.domain){a.push(d);continue}if(t&&ce(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(e.domainError(f,d.domain,d)),u=!1;continue}a.push(d)}for(let f of o){let d=n[l];if(!d)break;if(ln(i,r.length,l)){a.push(d);continue}if(!d.isValid){a.push(d),u=!1,l+=1;continue}if(!d.domain){a.push(d),l+=1;continue}if(t&&ce(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(e.domainError(f,d.domain,d)),u=!1,l+=1;continue}a.push(d),l+=1}if(s)for(let f of n.slice(l)){if(l+=1,ln(i,r.length,l-1)){a.push(f);continue}if(!f.isValid){a.push(f),u=!1;continue}if(!f.domain){a.push(f);continue}if(t&&ce(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(e.domainError(s,f.domain,f)),u=!1;continue}a.push(f)}if(l<n.length)for(let f of n.slice(l))a.push(e.error("unexpected-argument",f)),u=!1;if(!u)return a;l=0;for(let f of r)ln(i,r.length,l)||(!t||!ce(n[l]))&&n[l].infer(f),l+=1;for(let f of o)(!t||!ce(n[l]))&&n[l]?.infer(f),l+=1;if(s)for(let f of n.slice(l))ln(i,r.length,l)||(!t||!ce(f))&&f.infer(s),l+=1;return null}function Lt(e){if(!e)return;let n=e.engine,i=null,t=null,r=null;return e.head!=="Tuple"&&e.head!=="Triple"&&e.head!=="Pair"&&e.head!=="Single"?i=e:(i=e.ops[0]??null,t=e.ops[1]?.canonical??null,r=e.ops[2]?.canonical??null),i.head==="Hold"&&(i=i.op1),i.symbol?(n.declare(i.symbol,{domain:"Integers"}),i.bind(),i=n.hold(i)):i=n.domainError("Symbols",i.domain,i),t&&t.isFinite&&(t=Me(n,t,"Integers")),r&&r.isFinite&&(r=Me(n,r,"Integers")),t&&r?n.tuple([i,t,r]):r?n.tuple([i,n.One,r]):t?n.tuple([i,t]):i}function si(e){let n=1,i=n+vt,t,r=!0;if(e&&(e.head==="Tuple"||e.head==="Triple"||e.head==="Pair"||e.head==="Single")){if(t=(e.op1.head==="Hold"?e.op1.op1.symbol:e.op1.symbol)??"Nothing",n=w(e.op2)??1,Number.isFinite(n)||(r=!1),e.op3.isNothing||e.op3.isInfinity)r=!1;else{let o=w(e.op3);o===null?r=!1:(i=o,Number.isFinite(i)||(r=!1))}!r&&Number.isFinite(n)&&(i=n+vt)}else e&&(t=(e.head==="Hold"?e.op1.symbol:e.symbol)??"Nothing",n=1,i=n+vt);return[t,n,i,r]}var Jl={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]},Wl={Abs:"Math.abs",Add:(e,n)=>e.length===1?n(e[0]):`(${e.map(i=>n(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",LCM:"_SYS.lcm",Limit:(e,n)=>`_SYS.limit(${n(e[0])}, ${n(e[1])})`,Ln:"Math.log",List:(e,n)=>`[${e.map(i=>n(i)).join(", ")}]`,Log:"Math.log10",LogGamma:"_SYS.lngamma",Lb:"Math.log2",Max:"Math.max",Min:"Math.min",Power:(e,n)=>{let i=e[0];if(i===null)throw new Error("Power: no argument");let t=y(e[1]);return t===.5?`Math.sqrt(${n(i)})`:t===1/3?`Math.cbrt(${n(i)})`:t===1?n(i):t===-1?`1 / (${n(i)})`:t===-.5?`1 / Math.sqrt(${n(i)})`:`Math.pow(${n(i)}, ${n(e[1])})`},Range:(e,n)=>{if(e.length===0)return"[]";if(e.length===1)return`Array.from({length: ${n(e[0])}}, (_, i) => i)`;let i=n(e[0]),t=n(e[1]),r=e[2]?n(e[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,u)=>s+u).join(", ")}]`:`Array.from({length: ${o-s+1}
|
|
5
|
+
}, (_, i) => ${i} + i)`:`Array.from({length: ${t} - ${i} + 1
|
|
6
|
+
}, (_, i) => ${i} + i)`}return`Array.from({length: Math.floor((${t} - ${i}) / ${r}) + 1}, (_, i) => ${i} + i * ${r})`},Root:(e,n)=>{let i=e[0];if(i===null)throw new Error("Root: no argument");let t=e[1];return t===null?`Math.sqrt(${n(i)})`:`Math.pow(${n(i)}, 1 / (${n(t)}))`},Random:"Math.random",Round:"Math.round",Square:(e,n)=>{let i=e[0];if(i===null)throw new Error("Square: no argument");return`Math.pow(${n(i)}, 2)`},Sgn:"Math.sign",Sin:"Math.sin",Sinh:"Math.sinh",Sqrt:"Math.sqrt",Tan:"Math.tan",Tanh:"Math.tanh"},Gr=class extends Function{constructor(i){super("_SYS","_",`return ${i}`);this.sys={factorial:It,gamma:Kn,lngamma:Di,gcd:kn,lcm:St,chop:wn,limit:Dn};return new Proxy(this,{apply:(t,r,o)=>super.apply(r,[this.sys,...o]),get:(t,r)=>r==="toString"?()=>i:t[r]})}};function Yl(e,n){let i=oe(e,n);return new Gr(i)}function Js(e){let n=e.unknowns;return Yl(e,{operators:i=>Jl[i],functions:i=>Wl[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(n.includes(i))return`_.${i}`},string:i=>JSON.stringify(i),number:i=>i.toString(),indent:0,ws:i=>i??""})}function Ql(e,n,i,t){if(e==="Error")throw new Error("Error");if(e==="Sequence")return n.length===0?"":`(${n.map(o=>oe(o,t,i)).join(", ")})`;if(e==="Sum"||e==="Product")return Xl(e,n,t);if(n.every(o=>!ri(o))){let o=t.operators?.(e);if(o!==void 0){if(n===null)return"";let s;return n.length===1?s=`${o[0]}${oe(n[0],t,o[1])}`:s=n.map(a=>oe(a,t,o[1])).join(` ${o[0]} `),o[1]<i?`(${s})`:s}}if(e==="Function"){let o=n.slice(1).map(s=>s.symbol);return`((${o.join(", ")}) => ${oe(n[0],{...t,var:s=>o.includes(s)?s:t.var(s)})})`}if(e==="Declare")return`let ${n[0].symbol}`;if(e==="Assign")return`${n[0].symbol} = ${oe(n[1],t)}`;if(e==="Return")return`return ${oe(n[0],t)}`;if(e==="If"){if(n.length!==3)throw new Error("If: wrong number of arguments");return`((${oe(n[0],t)}) ? (${oe(n[1],t)}) : (${oe(n[2],t)}))`}if(e==="Block"){let o=[];for(let a of n)a.head==="Declare"&&o.push(a.ops[0].symbol);if(n.length===1&&o.length===0)return oe(n[0],t);let s=n.map(a=>oe(a,{...t,var:u=>o.includes(u)?u:t.var(u)}));return s[s.length-1]=`return ${s[s.length-1]}`,`(() => {${t.ws(`
|
|
7
|
+
`)}${s.join(`;${t.ws(`
|
|
8
8
|
`)}`)}${t.ws(`
|
|
9
|
-
`)}})()`}let
|
|
10
|
-
let
|
|
9
|
+
`)}})()`}let r=t.functions?.(e);if(!r)throw new Error(`Unknown function ${e}`);if(typeof r=="function"){if(n.length===1&&ce(n[0])){let o=ai();return`(${oe(n[0],t)}).map((${o}) => ${r(n[0].engine.box(o),s=>oe(s,t))})`}return r(n,o=>oe(o,t))}if(n===null)return`${r}()`;if(n.length===1&&ce(n[0])){let o=ai();return`(${oe(n[0],t)}).map((${o}) => ${r}(${oe(n[0].engine.box(o),t)}))`}return`${r}(${n.map(o=>oe(o,t)).join(", ")})`}function oe(e,n,i=0){if(e===void 0)return"";if(!e.isValid)throw new Error("Invalid expression");let t=y(e);if(t!==null)return n.number(t);let r=e.symbol;if(r!==null)return n.var?.(r)??r;if(e.string!==null)return n.string(r);let s=e.keys;if(s!==null){let u=[];for(let l of s){let f=e.getKey(l);f&&u.push(`${l}: ${oe(f,n,0)}`)}return`{${u.join(", ")}}`}let a=e.head;return typeof a=="string"?Ql(a,e.ops,i,n):""}function Xl(e,n,i){if(n===null)throw new Error("Sum/Product: no arguments");if(!n[0])throw new Error("Sum/Product: no body");let[t,r,o,s]=si(n[1]),a=e==="Sum"?"+":"*";if(!t){let d=ai(),c=ai();return`${oe(n[0],i)}.reduce((${c}, ${d}) => ${c} ${a} ${d}, ${a==="+"?"0":"1"})`}let u=oe(n[0],{...i,var:d=>d===t?t:i.var(d)}),l=ai(),f=ai();return`(() => {
|
|
10
|
+
let ${f} = ${a==="+"?"0":"1"};
|
|
11
11
|
let ${t} = ${r};
|
|
12
12
|
const _fn = () => ${u};
|
|
13
|
-
while (${
|
|
14
|
-
|
|
15
|
-
${
|
|
13
|
+
while (${l} <= ${o}) {
|
|
14
|
+
${f} ${a}= _fn();
|
|
15
|
+
${l}++;
|
|
16
16
|
}
|
|
17
|
-
return
|
|
18
|
-
})()`}var F=class{constructor(n,i){this.engine=n,i?.latex!==void 0&&(this._latex=i.latex)}valueOf(){return this.symbol==="True"?!0:this.symbol==="False"?!1:b(this)??this.string??this.symbol??JSON.stringify(this.json)}toString(){if(this.symbol)return this.symbol;if(this.string)return this.string;let n=this.numericValue;if(n!==null){if(typeof n=="number")return n.toString();if(P(n))return`${n[0].toString()}/${n[1].toString()}`;if(U(n))return`${n[0].toString()}/${n[1].toString()}`;if(n instanceof Ps.Complex){let i=n.im===1?"":n.im===-1?"-":n.im.toString();return n.re===0?i+"i":n.im<0?`${n.re.toString()}${i}i`:`${n.re.toString()}+${i}i`}}return JSON.stringify(this.json)}[Symbol.toPrimitive](n){if(n==="number"){let i=this.valueOf();return typeof i=="number"?i:null}return this.toString()}toJSON(){return this.json}get rawJson(){return this.json}get scope(){return null}is(n){return n==null?!1:this.isSame(this.engine.box(n))}get latex(){return this._latex??this.engine.serialize(this)}set latex(n){this._latex=n}get symbol(){return null}get isNothing(){return!1}get string(){return null}getSubexpressions(n){return Et(this,n)}get subexpressions(){return this.getSubexpressions("")}get symbols(){let n=new Set;return Si(this,n),Array.from(n)}get unknowns(){let n=new Set;return Ii(this,n),Array.from(n)}get freeVariables(){let n=new Set;return Bi(this,n),Array.from(n)}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!0}get isConstant(){return!1}get canonical(){return this}subs(n,i){return i?.canonical?this.canonical:this}solve(n){return null}replace(n){return null}has(n){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}isLess(n){}isLessEqual(n){}isGreater(n){}isGreaterEqual(n){}get isPositive(){}get isNonNegative(){}get isNegative(){}get isNonPositive(){}isCompatible(n,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(n){return!1}bind(){}reset(){}get keys(){return null}get keysCount(){return 0}getKey(n){}hasKey(n){return!1}get value(){}set value(n){throw new Error(`Can't change the value of \\(${this.latex}\\)`)}get domain(){}set domain(n){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(n){return this}evaluate(n){return this.simplify()}N(n){return this.evaluate({numericMode:!0})}compile(n="javascript",i){if(n!=="javascript")return;i??(i={optimize:["simplify"]});let t=this;i.optimize.includes("simplify")&&(t=t.simplify()),i.optimize.includes("evaluate")&&(t=t.evaluate());try{return Cs(t)}catch{}}};var an=class e extends F{constructor(i,t,r){t instanceof e;super(i,r);if(typeof t=="string"){if(!An(t))throw Error(`Unknown domain literal "${t}"`);this.base=t,this.ctor=null,this.params=[],this.optParams=[],this.restParam=null,this.result=null;return}if(!Array.isArray(t))throw Error("Expected a domain expression");if(!ii.includes(t[0]))throw Error("Expected domain constructor, got "+t[0]);let o=t[0];if(this.ctor=o,o==="FunctionOf"){this.base="Functions",this.ctor="FunctionOf",this.params=[],this.optParams=[],this.restParam=null,this.result=i.domain(t[t.length-1]);for(let s=1;s<=t.length-2;s++){let a=t[s];if(Array.isArray(a)&&a[0]==="OptArg"){if(this.optParams.length>0)throw Error(`Multiple OptArg in domain ${t}`);if(this.restParam)throw Error(`OptArg after VarArg in domain ${t}`);for(let u of a.slice(1)){if(Array.isArray(u)){if(u[0]==="OptArg")throw Error(`OptArg of OptArg in domain ${t}`);if(u[0]==="VarArg")throw Error(`Superfluous OptArg of VarArg in domain ${t}`)}this.optParams.push(i.domain(u))}}else if(Array.isArray(a)&&a[0]==="VarArg"){if(a.length!==2)throw Error(`Invalid VarArg in domain ${t}`);if(Array.isArray(a[1])){if(a[1][0]==="OptArg")throw Error(`VarArg of OptArg in domain ${t}`);if(a[1][0]==="VarArg")throw Error(`VarArg of VarArg in domain ${t}`)}this.restParam=i.domain(a[1])}else{if(this.optParams.length>0)throw Error(`Required parameter after OptArg in domain ${t}`);if(this.restParam)throw Error(`Required parameter after VarArg in domain ${t}`);this.params.push(i.domain(a))}}}if(o==="DictionaryOf"&&(this.base="Dictionaries",this.params=[i.domain(t[1])],this.optParams=[],this.restParam=null,this.result=null),o==="ListOf"&&(this.base="Lists",this.params=[i.domain(t[1])],this.optParams=[],this.restParam=null,this.result=null),o==="TupleOf"){this.base="Tuples",this.params=[],this.optParams=[],this.restParam=null,this.result=null;for(let s=1;s<=t.length-1;s++)this.params.push(i.domain(t[s]))}if(o==="OptArg"||o==="VarArg")throw Error(`Unexpected domain constructor ${o} outside of FunctionOf`);if(o==="Covariant"||o==="Contravariant"||o==="Bivariant"||o==="Invariant"){let s=i.domain(t[1]);if(this.ctor=o,this.base=s.base,this.params=[s],this.optParams=[],this.restParam=null,this.result=null,t.length!==2)throw Error(`Invalid ${o} in domain ${t}`)}if(o==="Union"||o==="Intersection"){this.params=t.slice(1).map(a=>i.domain(a)),this.optParams=[],this.restParam=null,this.result=null;let s;if(o==="Union")for(let a of this.params)s=bn(s,a);else for(let a of this.params)s=Pr(s,a);this.base=s.base}}get isCanonical(){return!0}get canonical(){return this}get isValid(){return!0}get json(){if(!this.ctor)return this.base;let i=[this.ctor];return this.params.length>0&&i.push(...this.params.map(t=>t.json)),this.optParams.length>0&&i.push(["OptArg",...this.optParams.map(t=>t.json)]),this.restParam&&i.push(["VarArg",this.restParam.json]),this.result&&i.push(this.result.json),i}get hash(){return this._hash===void 0&&(this._hash=de(JSON.stringify(this.json))),this._hash}isCompatible(i,t="covariant"){let r=this.json,o=i instanceof e?i.json:i,s=Array.isArray(o)?o[0]:null;if(s){let a=o[1];if(s==="Covariant")return le(r,a);if(s==="Contravariant")return le(a,r);if(s==="Invariant")return!le(a,r)&&!le(r,a);if(s==="Bivariant")return le(r,a)&&le(a,r)}return t==="covariant"?le(r,o):t==="contravariant"?le(o,r):t==="bivariant"?le(o,r)&&le(r,o):!le(o,r)&&!le(r,o)}isEqual(i){return i instanceof e?this===i?!0:this.isCompatible(i,"invariant"):!1}isSame(i){return this.isEqual(i)}match(i,t){return i instanceof e&&this.isCompatible(i,"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 xn(e){if(e instanceof an)return!0;if(e instanceof F&&(e=e.json),typeof e=="string")return An(e);if(!Array.isArray(e)||e.length<=1)return!1;let n=e[0];return typeof n!="string"||!ii.includes(n)?!1:n==="ListOf"||n==="OptArg"||n==="VarArg"?e.length===2&&xn(e[1]):n==="FunctionOf"||n==="TupleOf"||n==="Intersection"||n==="Union"?e.slice(1).every(xn):e.every(i=>i!==null)}function le(e,n){let[i,t]=Bt([e],n);return!!(i&&t.length===0)}function Bt(e,n){let i=e.shift(),t=typeof n=="string"?n:null;if(t==="Anything")return[!0,e];let r=typeof i=="string"?i:null;if(r&&t)return r===t?[!0,e]:[Me(r).includes(t),e];if(t){let s=i[0];return s==="FunctionOf"?[t==="Functions",e]:s==="DictionaryOf"?[t==="Dictionaries",e]:s==="ListOf"?[t==="Lists",e]:s==="TupleOf"?[t==="Tuples",e]:[!0,e]}let o=n[0];if(o==="FunctionOf"){if(r==="Functions")return[!0,e];if(r)return[!1,e];if(i[0]!=="FunctionOf")return[!1,e];if(i.length===1&&n.length===1)return[!0,e];if(!le(i[i.length-1],n[n.length-1]))return[!1,e];let s=i.slice(1,-1),a=n.slice(1,-1);for(let u=0;u<=s.length-1;u++){if(a.length===0)return(Array.isArray(s[u])?s[u][0]:null)!=="OptArg"?[!1,e]:[!0,e];{let l=!1;if([l,a]=Bt(a,s[u]),!l)return[!1,e]}}return[a.length===0,e]}if(o==="Intersection")return[n.slice(1,-1).every(s=>le(i,s)),e];if(o==="Union")return[n.slice(1,-1).some(s=>le(i,s)),e];if(o==="OptArg")return r==="NothingDomain"?[!0,e]:Bt([i,...e],n[1]);if(o==="VarArg"){let s=n[1];if(!le(i,s))return[!1,e];i=e.shift();let a=!0;for(;e.length>0&&a;)[a,e]=Bt(e,s),i=e.shift();return[!0,e]}if(o==="TupleOf"){if(!Array.isArray(i)||i[0]!=="TupleOf")return[!1,e];if(i.length>n.length)return[!1,e];for(let s=1;s<=n.length-1;s++)if(!i[s]||!le(i[s],n[s]))return[!1,e];return[!0,e]}return console.error("Unexpected domain constructor "+o),[!1,e]}function bn(e,n){if(e==null)return n;if(n==null)return e;let i=[e.base,...Me(e.base)],t=[n.base,...Me(n.base)];for(;!t.includes(i[0]);)i.shift();return e.engine.domain(i[0])}function Pr(e,n){return e===void 0?n:n===void 0||le(e.base,n.base)?e:le(n.base,e.base)?n:e.engine.Void}var Ai=se(te());function Lr(e){if(e.head==="Negate")return[-1,e.op1];let n=e.numericValue;if(n===null)return[1,e];let i=e.engine;return typeof n=="number"&&n<0?[-1,i.number(-n)]:n instanceof E&&n.isNegative()?[-1,i.number(n.neg())]:n instanceof Ai.Complex&&n.re<0?[-1,i.number(i.complex(-n.re,-n.im))]:P(n)&&n[0]<0?[-1,i.number([-n[0],n[1]])]:U(n)&&n[0]<0?[-1,i.number([-n[0],n[1]])]:[1,e]}function Cl(e,n,i,t){let r=e.numericValue,o=e.engine;return typeof r=="number"?O(o)&&i?o.chop(i(o.bignum(r))):o.chop(n(r)):r instanceof E?o.chop(i?.(r)??n(r.toNumber())):P(r)?!O(o)||!i?o.chop(n(r[0]/r[1])):o.chop(i(o.bignum(r[0]).div(r[1]))):U(r)?i?o.chop(i(o.bignum(r[0]).div(o.bignum(r[1])))):o.chop(n(Number(r[0])/Number(r[1]))):r instanceof Ai.Complex?!t||!Z(o)?NaN:o.chop(t(r)):NaN}function A(e,n,i,t){if((e?.numericValue??null)!==null)return e.engine.number(Cl(e,n,i,t))}function Pl(e,n,i,t,r){e.numericValue!==null&&n.numericValue;let o=e.engine,s=e.numericValue;P(s)&&(s=s[0]/s[1]);let a=n.numericValue;if(P(a)&&(a=a[0]/a[1]),!O(o)&&typeof s=="number"&&typeof a=="number")return i(s,a);let u;s instanceof E?u=s:U(s)?u=o.bignum(s[0]).div(o.bignum(s[1])):s!==null&&typeof s=="number"&&(u=o.bignum(s));let l;return a instanceof E?l=a:U(a)?u=o.bignum(a[0]).div(o.bignum(a[1])):a!==null&&typeof a=="number"&&(l=o.bignum(a)),u&&l?t?.(u,l)??i(u.toNumber(),l.toNumber()):s instanceof Ai.Complex||a instanceof Ai.Complex?!r||!Z(o)?NaN:r(o.complex(s??u?.toNumber()??NaN),o.complex(a??l?.toNumber()??NaN)):NaN}function yn(e,n,i,t,r){if(!(e.numericValue===null||n.numericValue===null))return e.engine.number(Pl(e,n,i,t,r))}function Je(e,n,i){return e==="all"?!0:e==="none"?!1:e==="first"?i===0:e==="rest"?i!==0:e==="last"?i===n:e==="most"?i!==n:!0}function De(e){return e.every(n=>n.isCanonical)?e:e.map(n=>n.canonical)}function Ne(e,n,i){if(n=De(n),n=xe(n),!e.strict||n.length===i)return n;let t=[...n.slice(0,i)],r=Math.min(i,n.length);for(;r<i;)t.push(e.error("missing")),r+=1;for(;r<n.length;)t.push(e.error("unexpected-argument",n[r])),r+=1;return t}function ke(e,n,i){let t=typeof i=="number"?i:i?.count,r=typeof i=="number"?!0:i?.flatten??!0;if(n=De(n),r&&(n=xe(n)),typeof r=="string"&&K(n,r),!e.strict){for(let a of n)a.infer(e.Numbers);return n}let o=!0;t??(t=n.length);let s=[];for(let a=0;a<=Math.max(t-1,n.length-1);a++){let u=n[a];a>t-1?(o=!1,s.push(e.error("unexpected-argument",u))):u===void 0?(o=!1,s.push(e.error("missing"))):u.symbol&&!e.lookupSymbol(u.symbol)&&!e.lookupFunction(u.symbol)||u.isNumber?s.push(u):u.isValid?u.domain?u.symbolDefinition?.inferredDomain&&u.domain.isCompatible(e.Numbers,"contravariant")?s.push(u):(o=!1,s.push(e.domainError("Numbers",u.domain,u))):s.push(u):(o=!1,s.push(u))}if(o)for(let a of s)a.infer(e.Numbers);return s}function ye(e,n,i){return n==null?e.error("missing"):i===void 0?e.error("unexpected-argument",n):(n=n.canonical,n.head==="Sequence"&&(n=n.op1),!n.isValid||!n.domain||n.domain.isCompatible(i)?n:e.domainError(i,n.domain,n))}function Dt(e,n,i){if(n.length===i.length&&n.every((r,o)=>!r.domain||r.domain.isCompatible(i[o])))return n;let t=[];for(let r=0;r<=i.length-1;r++)t.push(ye(e,n[r],i[r]));for(let r=i.length;r<=n.length-1;r++)t.push(e.error("unexpected-argument",n[r]));return t}function Ls(e,n,i,t,r,o){if(!e.strict)return null;let s=[],a=!0,u=0;for(let l of t){let f=n[u++];if(!f){s.push(e.error("missing")),a=!1;continue}if(Je(i,t.length,u-1)){s.push(f);continue}if(!f.isValid){s.push(f),a=!1;continue}if(!f.domain){s.push(f);continue}if(f.symbolDefinition?.inferredDomain&&f.domain.isCompatible(l,"contravariant")){s.push(f);continue}if(!f.domain.isCompatible(l)){s.push(e.domainError(l,f.domain,f)),a=!1;continue}s.push(f)}for(let l of r){let f=n[u];if(!f)break;if(Je(i,t.length,u)){s.push(f);continue}if(!f.isValid){s.push(f),a=!1,u+=1;continue}if(!f.domain){s.push(f),u+=1;continue}if(f.symbolDefinition?.inferredDomain&&f.domain.isCompatible(l,"contravariant")){s.push(f);continue}if(!f.domain.isCompatible(l)){s.push(e.domainError(l,f.domain,f)),a=!1,u+=1;continue}s.push(f),u+=1}if(o)for(let l of n.slice(u)){if(u+=1,Je(i,t.length,u-1)){s.push(l);continue}if(!l.isValid){s.push(l),a=!1;continue}if(!l.domain){s.push(l);continue}if(l.symbolDefinition?.inferredDomain&&l.domain.isCompatible(o,"contravariant")){s.push(l);continue}if(!l.domain.isCompatible(o)){s.push(e.domainError(o,l.domain,l)),a=!1;continue}s.push(l)}if(u<n.length)for(let l of n.slice(u))s.push(e.error("unexpected-argument",l)),a=!1;if(!a)return s;u=0;for(let l of t)Je(i,t.length,u)||n[u].infer(l),u+=1;for(let l of r)Je(i,t.length,u)||n[u++]?.infer(l),u+=1;if(o)for(let l of n.slice(u))Je(i,t.length,u)||l.infer(o),u+=1;return null}function Fs(e,n){if(n.every(i=>i.isCanonical),n=n.filter(i=>i.numericValue===null||!i.isZero),n.length===0)return e.Zero;if(n.length===1)return n[0];if(n.length===2){let i=0,t=0;if(t=b(n[0]),t!==null&&t!==0?i=Nt(n[1]):(i=Nt(n[0]),i!==0&&n[1].numericValue!==null&&(t=b(n[1]))),t!==null&&i!==null&&i!==0)return e.number(e.complex(t,i))}return n.length>1&&(n=_t(e,n)),e._fn("Add",n)}function Rs(e,n){let i=null;for(let t of n){if(!t?.isNumeric)return null;i=bn(i,t)}return i}function kt(e,n){n.length>1;let i=new wi(e);for(let t of n){if(t=t.simplify(),t.isImaginary&&t.isInfinity)return e.ComplexInfinity;if(t.isNaN||t.symbol==="Undefined")return e.NaN;t.isZero||i.addTerm(t)}return i.asExpression("expression")}function Ll(e){let n=0;for(let i of e){let t=i.numericValue;if(typeof t=="number")n+=t;else return null}return n}function Fr(e,n,i="evaluate"){if(i==="N"&&e.numericMode==="machine"){n=n.map(r=>r.N());let t=Ll(n);if(t!==null)return e.number(t)}for(let t of n){if(t.isImaginary&&t.isInfinity)return e.ComplexInfinity;if(t.isNaN||t.symbol==="Undefined")return e.NaN;t.isExact||(i="N")}return i==="N"?n=n.map(t=>t.N()):n=n.map(t=>t.evaluate()),new wi(e,n).asExpression(i==="N"?"numeric":"expression")}function qs(e,n,i){e.pushScope(),n??(n=e.error("missing"));let 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=e.Nothing),t.head==="Hold"&&(t=t.op1),t.symbol?(e.declare(t.symbol,{domain:"Integers"}),t.bind(),t=e.hold(t)):t=e.domainError("Symbols",t.domain,t),r&&r.isFinite&&(r=ye(e,r,"Integers")),o&&o.isFinite&&(o=ye(e,o,"Integers")),r&&o?i=e.tuple([t,r,o]):o?i=e.tuple([t,e.One,o]):r?i=e.tuple([t,r]):i=t;let s=e._fn("Sum",[n.canonical,i]);return e.popScope(),s}function Tt(e,n,i,t){let[r,o,s,a]=ti(i),u=n;if(t!=="N"&&(o>=s||s-o>=ht))return;let l=null,f=e.swapScope(u.scope);if(e.pushScope(),u.bind(),t==="simplify"){let d=[];for(let c=o;c<=s;c++)e.assign(r,c),d.push(u.simplify());l=e.add(d).simplify()}if(t==="evaluate"){let d=[];for(let c=o;c<=s;c++)e.assign(r,c),d.push(u.evaluate());l=e.add(d).evaluate()}if(t==="N"){if(l===null&&a)if(O(e)){let d=e.bignum(0);for(let c=o;c<=s;c++){e.assign(r,c);let p=Dn(u.N());if(p===null){l=void 0;break}if(!p.isFinite()){d=p;break}d=d.add(p)}l===null&&(l=e.number(d))}else{let d=e.numericMode,c=e.precision;e.numericMode="machine";let p=0;for(let x=o;x<=s;x++){e.assign(r,x);let h=b(u.N());if(h===null){l=void 0;break}if(!Number.isFinite(h)){p=h;break}p+=h}e.numericMode=d,e.precision=c,l===null&&(l=e.number(p))}else if(l===null){e.assign(r,1e3);let d=u.N();e.assign(r,999);let c=u.N(),p=b(e.div(d,c).N());if(p!==null&&Number.isFinite(p)&&Math.abs(p)>1)l=e.PositiveInfinity;else{let x=0,h=e.numericMode,I=e.precision;e.numericMode="machine";for(let C=o;C<=s;C++){e.assign(r,C);let V=b(u.N());if(V===null){l=void 0;break}if(Math.abs(V)<Number.EPSILON||!Number.isFinite(V))break;x+=V}e.numericMode=h,e.precision=I,l===null&&(l=e.number(x))}}}return e.popScope(),e.swapScope(f),l??void 0}var Vs=se(te());function Fl(e,n){let i=e.numericValue;return i===null?null:(typeof i=="number"?i=-i:i instanceof E||i instanceof Vs.Complex?i=i.neg():Array.isArray(i)&&(i=ce(i)),e.engine.number(i,{metadata:n}))}function Y(e,n){if(e.head==="Negate")return e.op1;if(e.numericValue!==null)return Fl(e,n);if(e.head==="Add"){let i=e.ops.map(t=>Y(t));return i=K(i,"Add"),e.engine.add(i,n)}return e.head==="Multiply"?Rl(e.engine,e.ops):e.head==="Divide"?e.engine._fn("Divide",[Y(e.op1),e.op2]):(e.head,e.engine._fn("Negate",[e],n))}function Rl(e,n){let i=[],t=!1;for(let r of n)!t&&r.head==="Negate"?(t=!0,i.push(r.op1)):i.push(r);if(t)return e.mul(i);i=[];for(let r of n)t||r.numericValue===null||!r.isInteger?i.push(r):(t=!0,i.push(Y(r)));if(t)return e.mul(i);i=[];for(let r of n)t||r.numericValue===null||!r.isNumber?i.push(r):(t=!0,i.push(Y(r)));return t?e.mul(i):e._fn("Negate",[e._fn("Multiply",n)])}function wt(e,n,i="simplify"){return Y(n)}function We(e,n){if(e.head==="Negate"&&n.head==="Negate")return We(e.op1,n.op1);if(e.head==="Negate")return Y(We(e.op1,n));if(n.head==="Negate")return Y(We(e,n.op1));let i=e.engine;if(e.head==="Divide"&&n.head==="Divide"){let t=i.mul([e.op2,n.op2]);return i.div(We(e.op1,n.op1),t)}return e.head==="Divide"?i.div(We(e.op1,n),e.op2):n.head==="Divide"?i.div(We(e,n.op1),n.op2):e.head==="Add"?i.add(e.ops.map(t=>We(t,n))):n.head==="Add"?i.add(n.ops.map(t=>We(e,t))):i.mul([e,n])}function ri(e){return e.length===1?e[0]:e.length===2?We(e[0],e[1]):We(e[0],ri(e.slice(1)))}var Oi=[[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 ql(e,n){for(;e>=Oi.length;){let i=Oi.length,t=[1],r=Oi[i-1];for(let o=1;o<i;o++)t[o]=r[o-1]+r[o];t[i]=1,Oi.push(t)}return Oi[e][n]}function Vl(e){let n=e.reduce((t,r)=>t+r,0),i=1;for(let t=0;t<e.length;t+=1)i*=ql(n,e[t]),n-=e[t];return i}function*$s(e,n){if(e===1){yield[n];return}for(let i=0;i<=n;i+=1)for(let t of $s(e-1,n-i))yield[i,...t]}function zs(e){if(e.head!=="Power")return null;let n=k(e.op2);if(n===null||n<0)return null;if(n===0)return e.engine.One;if(n===1)return e.op1;let i=e.engine;if(e.op1.head==="Negate"){let s=n%2===0?1:-1,a=zs(i.pow(e.op1.op1,e.op2));return a===null?null:s>0?a:i.neg(a)}if(e.op1.head,e.op1.head!=="Add")return null;let t=e.op1.ops,r=$s(t.length,n),o=[];for(let s of r){let a=[i.number(Vl(s))];for(let u=0;u<s.length;u+=1)s[u]!==0&&(s[u]===1?a.push(t[u]):a.push(i.pow(t[u],s[u])));o.push(i.mul(a))}return i.add(o)}function $l(e){if(e.head!=="Divide")return null;let n=un(e.op1);if(n===null)return null;let i=e.engine;return n.head==="Add"?i.add(n.ops.map(t=>i.div(t,e.op2))):e.engine.div(n,e.op2)}function un(e){if(!e)return null;let n=$l(e);if(n!==null||e.head==="Multiply"&&(n=ri(e.ops),n!==null))return n;if(e.head==="Add"){let i=e.ops.map(t=>un(t)??t);return kt(e.engine,i)}return e.head==="Negate"&&(n=un(e.op1),n!==null)?e.engine.neg(n):e.head==="Power"&&(n=zs(e),n!==null)?n:null}var zl=[[["Multiply","_x","_a"],0],[["Add","_a","_x"],["Negate","_a"]],[["Add",["Negate","_x"],"_a"],"_a"],[["Add",["Multiply","_x","_a"],"_b"],["Divide",["Negate","_b"],"_a"]],[["Add",["Multiply",["Power","_x",2],"_a"],["Multiply","_x","_b"],"_c"],["Divide",["Add",["Negate","_b"],["Sqrt",["Subtract",["Square","_b"],["Multiply",4,"_a","_c"]]]],["Multiply",2,"_a"]]],[["Add",["Multiply",["Power","_x",2],"_a"],["Multiply","_x","_b"],"_c"],["Divide",["Subtract",["Negate","_b"],["Sqrt",["Subtract",["Square","_b"],["Multiply",4,"_a","_c"]]]],["Multiply",2,"_a"]]],[["Add",["Multiply",["Power","_x",2],"_a"],["Multiply","_x","_b"]],0],[["Add",["Multiply",["Power","_x",2],"_a"],["Multiply","_x","_b"]],["Divide",["Negate","_b"],"_a"]],[["Add",["Multiply",["Power","_x",2],"_a"],"_b"],["Sqrt",["Divide",["Negate","_b"],"_a"]]],[["Add",["Multiply",["Power","_x",2],"_a"],"_b"],["Negate",["Sqrt",["Divide",["Negate","_b"],"_a"]]]]];function Mt(e,n){let i=e.engine;e.head==="Equal"&&(e=i.add([e.op1.canonical,i.neg(e.op2.canonical)]).simplify());let t=i.cache("univariate-roots-rules",()=>ei(i,zl)),r=wr(e.subs({[n]:"_x"},{canonical:!1}),t,{_x:i.symbol("_x")});if(r.length===0){let o=un(e.canonical);if(o===null)return[];r=wr(o.subs({[n]:"_x"},{canonical:!1}),t,{_x:i.symbol("_x")})}return r.map(o=>o.canonical.evaluate())}function Us(e){return e.head==="Element"?jl(e):e.head==="Equal"?Ul(e):Jl(e)?Gl(e):"not-a-predicate"}function Ul(e){e.head;let n=e.unknowns;if(n.length===0){let r=e.evaluate();return r.symbol==="True"?"tautology":r.symbol==="False"?"contradiction":(e.canonical.evaluate(),"not-a-predicate")}let i=e.engine,t=e.op1.symbol;if(t&&!Zl(i,t)&&!e.op2.has(t)){let r=e.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(n.length===1){let r=n[0],o=Mt(e,r);o.length===0&&i.assumptions.set(i.fn("Equal",[i.add([e.op1.canonical,i.neg(e.op2.canonical)]).simplify(),0]),!0);let s=o.length===1?o[0]:i.fn("List",o),a=i.lookupSymbol(r);return a?a.domain&&!o.every(u=>!u.domain||s.domain?.isCompatible(u.domain))?"contradiction":(a.value=s,"ok"):(i.defineSymbol(r,{value:s,domain:s.domain}),"ok")}return i.assumptions.set(e,!0),"ok"}function Gl(e){let n=e.engine;if(e.op1.symbol&&!Rr(n,e.op1.symbol))return e.op2.evaluate().isZero?e.head==="Less"?n.defineSymbol(e.op1.symbol,{domain:n.domain("NegativeNumbers")}):e.head==="LessEqual"?n.defineSymbol(e.op1.symbol,{domain:n.domain("NonPositiveNumbers")}):e.head==="Greater"?n.defineSymbol(e.op1.symbol,{domain:n.domain("PositiveNumbers")}):e.head==="GreaterEqual"&&n.defineSymbol(e.op1.symbol,{domain:n.domain("NonNegativeNumbers")}):(n.defineSymbol(e.op1.symbol,{domain:n.domain("ExtendedRealNumbers")}),n.assumptions.set(e,!0)),"ok";let i="",t,r;if(e.head==="Less"?(t=e.op1,r=e.op2,i="<"):e.head==="LessEqual"?(t=e.op1,r=e.op2,i="<="):e.head==="Greater"?(t=e.op2,r=e.op1,i="<"):e.head==="GreaterEqual"&&(t=e.op2,r=e.op1,i="<="),!i)return"internal-error";let o=n.add([t.canonical,n.neg(r.canonical)]).simplify(),s=n.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&&(n.lookupSymbol(a[0])||n.defineSymbol(a[0],{domain:"ExtendedRealNumbers"})),s.head==="Less"||s.head,n.assumptions.set(s,!0),"ok")}function jl(e){e.head;let n=e.engine,i=Hl(e.op1);if(i.length===1){let r=n.domain(e.op2.evaluate().json);return r.isValid?(n.declare(i[0],r),"ok"):"not-a-predicate"}if(e.op1.symbol&&Rr(n,e.op1.symbol)){let r=n.domain(e.op2.evaluate().json);if(!r.isValid)return"not-a-predicate";let o=n.lookupSymbol(e.op1.symbol);if(o)return o.domain&&!r.isCompatible(o.domain)?"contradiction":(o.domain=r,"ok");let s=n.lookupFunction(e.op1.symbol);return s?.signature?.domain?r.isCompatible(s.signature.domain)?r.isCompatible(s.signature.domain,"bivariant")?"tautology":"not-a-predicate":"contradiction":"ok"}if(i.length>0)return n.assumptions.set(e,!0),"ok";let t=e.evaluate();return t.symbol==="True"?"tautology":t.symbol==="False"?"contradiction":"not-a-predicate"}function Rr(e,n){return(e.lookupSymbol(n)??e.lookupFunction(n))!==void 0}function Hl(e){return e.symbols.filter(n=>!Rr(e.engine,n))}function Zl(e,n){return e.lookupFunction(n)?!1:e.lookupSymbol(n)?.value!==void 0}function Jl(e){let n=e.head;return typeof n!="string"?!1:["Less","Greater","LessEqual","GreaterEqual"].includes(n)}var Ct=se(te());var Gr=se(te());function qr(e,n){if(!n.isInteger()||n.isNegative())return e._BIGNUM_NAN;if(n.lessThan(10))return e.bignum([1,1,2,6,24,120,720,5040,40320,362880,3628800][n.toNumber()]);if(n.gt(Number.MAX_SAFE_INTEGER)){let o=e._BIGNUM_ONE,s=e._BIGNUM_TWO;for(;s.lessThan(n);)o=o.mul(s),s=s.add(1);return o}if(n.modulo(2).eq(1))return n.times(qr(e,n.minus(1)));let i=n.toNumber(),t=n,r=n;for(;i>2;)i-=2,t=t.add(i),r=r.mul(t);return r}function js(e,n){if(!n.isInteger()||n.isNegative())return e._BIGNUM_NAN;if(n.lessThan(1))return e._BIGNUM_ONE;let i=n;for(;n.greaterThan(2);)n=n.minus(2),i=i.mul(n);return i}var Gs=7;function Vr(e,n){if(n.isNegative())return e._BIGNUM_NAN;let i=e.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=>e.bignum(s))),t=i[0];for(let s=i.length-1;s>0;--s)t=t.add(i[s].div(n.add(s)));let r=e.cache("gamma-g-ln",()=>e.bignum(607).div(128)),o=n.add(r).add(e._BIGNUM_HALF);return e._BIGNUM_NEGATIVE_ONE.acos().mul(e._BIGNUM_TWO).log().mul(e._BIGNUM_HALF).add(o.log().mul(n.add(e._BIGNUM_HALF)).minus(o).add(t.log()).minus(n.log()))}function $r(e,n){if(n.lessThan(e._BIGNUM_HALF)){let o=e._BIGNUM_NEGATIVE_ONE.acos();return o.div(o.mul(n).sin().mul($r(e,e._BIGNUM_ONE.sub(n))))}if(n.greaterThan(100))return Vr(e,n).exp();n=n.sub(1);let i=e.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=>e.bignum(o))),t=i[0];for(let o=1;o<Gs+2;o++)t=t.add(i[o].div(n.add(o)));let r=n.add(Gs).add(e._BIGNUM_HALF);return e._BIGNUM_NEGATIVE_ONE.acos().times(e._BIGNUM_TWO).sqrt().mul(t.mul(r.neg().exp()).mul(r.pow(n.add(e._BIGNUM_HALF))))}function At(e){return e.isFinite()?e.d.length>3||e.d.length===3&&e.d[0]>=90?!1:(e.precision()<=16,e.e<308&&e.e>-306):!0}var Ur=se(te());var Ge=class{constructor(n,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=n,this._sign=1,this._rational=O(n)?[BigInt(1),BigInt(1)]:[1,1],this._complex=Ur.Complex.ONE,this._bignum=n._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&&ee(this._rational)&&this._complex.re===1&&this._complex.im===0&&this._bignum.eq(this.engine._BIGNUM_ONE)&&this._number===1:this._terms.length===0}addTerm(n){if(n.isCanonical,n.head==="Multiply"){for(let o of n.ops)this.addTerm(o);return}if(this._isCanonical){if(n.isNothing)return;if(n.numericValue!==null){if(n.isOne)return;if(n.isZero){this._hasZero=!0;return}if(n.isNegativeOne){this._sign*=-1;return}if(n.isInfinity){this._hasInfinity=!0,n.isNegative&&(this._sign*=-1);return}let o=n.numericValue;if(typeof o=="number"){o<0&&(this._sign*=-1,o=-o),Number.isInteger(o)?this._rational=ne(this._rational,[o,1]):O(this.engine)?this._bignum=this._bignum.mul(o):this._number*=o;return}if(o instanceof E){o.isNegative()&&(this._sign*=-1,o=o.neg()),o.isInteger()?this._rational=ne(this._rational,[D(o),BigInt(1)]):O(this.engine)?this._bignum=this._bignum.mul(o):this._number*=o.toNumber();return}if(o instanceof Ur.Complex){this._complex=this._complex.mul(o);return}if(q(o)){this._rational=ne(this._rational,o),Or(this._rational)&&(this._sign*=-1,this._rational=ce(this._rational));return}}}let i=n;if(this._isCanonical){let o;[o,i]=ze(n),this._rational=ne(this._rational,o),Or(this._rational)&&(this._sign*=-1,this._rational=ce(this._rational))}if(i.numericValue!==null&&i.isOne)return;let t=[1,1];if(i.head==="Power"){let o=re(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=Mn(o.exponent,t),r=!0;break}r||this._terms.push({term:i,exponent:t})}unitTerms(n){let i=this.engine;if(n==="numeric"){if(!Z(i)&&this._complex.im!==0)return null;if(O(i)){let u=i._BIGNUM_ONE;if(ee(this._rational)||(U(this._rational)?u=i.bignum(this._rational[0].toString()).div(i.bignum(this._rational[1].toString())):u=i.bignum(this._rational[0]).div(this._rational[1])),u=u.mul(this._bignum).mul(this._sign*this._number),this._complex.im!==0){let l=this._complex.mul(u.toNumber());return l.equals(1)?[]:[{exponent:[1,1],terms:[i.number(l)]}]}return u=u.mul(this._complex.re),u.equals(1)?[]:[{exponent:[1,1],terms:[i.number(u)]}]}let a=1;if(ee(this._rational)||(U(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 u=this._complex.mul(a);return u.equals(1)?[]:[{exponent:[1,1],terms:[i.number(u)]}]}return a*=this._complex.re,a===1?[]:[{exponent:[1,1],terms:[i.number(a)]}]}let t=[],r=[];this._hasInfinity&&r.push(i.PositiveInfinity),this._rational=wn(this._rational),(this._complex.re!==1||this._complex.im!==0)&&(this._complex.im===0&&(this._number*=Math.abs(this._complex.re)),this._complex.re<0?this._rational=ce(this._rational):r.push(i.number(this._complex)));let o=this._sign*this._number,s=this._bignum;return ee(this._rational)||(n==="rational"?(Ee(this._rational)!==1&&(U(this._rational)?s=s.mul(i.bignum(this._rational[0])):o*=this._rational[0]),we(this._rational)!==1&&t.push({exponent:[-1,1],terms:[i.number(this._rational[1])]})):o===-1?(r.push(i.number(ce(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(n){n??(n={}),"mode"in n||(n.mode="expression");let i=this.engine;if(n.mode==="numeric"){if(this._complex.im!==0&&!Z(i))return null;if(this._hasInfinity)return[{exponent:[1,1],terms:[i.PositiveInfinity]}]}let t=this.unitTerms(n.mode??"expression");if(t===null)return null;for(let r of this._terms){let o=wn(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(n="evaluate"){let i=this.engine;if(this._hasInfinity){if(this._hasZero)return i.NaN;if(this._terms.length===0)return Ee(this._rational)>0?i.PositiveInfinity:i.NegativeInfinity}if(this._hasZero)return i.Zero;let t=this.groupedByDegrees({mode:n==="N"?"numeric":"expression"});if(t===null)return i.NaN;let r=zr(i,t);return r.length===0?i.One:r.length===1?r[0]:this.engine._fn("Multiply",r)}asNumeratorDenominator(){let n=this.groupedByDegrees({mode:"rational"});if(n===null)return[this.engine.NaN,this.engine.NaN];let i=[],t=[];for(let l of n)l.exponent[0]>=0?i.push(l):t.push({exponent:ce(l.exponent),terms:l.terms});let r=this.engine,o=zr(r,i),s=r.One;o.length===1?s=o[0]:o.length>0&&(s=r._fn("Multiply",o));let a=zr(r,t),u=r.One;return a.length===1?u=a[0]:a.length>0&&(u=r._fn("Multiply",a)),[s,u]}asRationalExpression(){let[n,i]=this.asNumeratorDenominator();if(i.numericValue!==null){if(i.isOne)return n;if(i.isNegativeOne)return this.engine.neg(n)}return this.engine._fn("Divide",[n,i])}};function Hs(e){if(ee(e))return 0;let[n,i]=[Ee(e),we(e)];return n>0&&Number.isInteger(n/i)?1:n>0?2:Number.isInteger(n/i)?3:4}function Wl(e,n){let i=Hs(e.exponent),t=Hs(n.exponent);if(i!==t)return i-t;let[r,o]=[Ee(e.exponent),we(e.exponent)],[s,a]=[Ee(n.exponent),we(n.exponent)];return r/o-s/a}function zr(e,n){let i=n.sort(Wl).map(t=>{let r=K(t.terms,"Multiply"),o=r.length<=1?r[0]:e._fn("Multiply",r.sort(Tn));return e.pow(o,t.exponent)});return K(i,"Multiply")??i}function Zs(e,n,i,t){if(n.numericValue!==null){if(q(n.numericValue))return Ee(n.numericValue)<0?M(e,"Subtract",[i,e.number(ce(n.numericValue))],t):null;let r=k(n);if(r!==null&&r<0)return M(e,"Subtract",[i,e.number(-r)],t)}return n.head==="Negate"?M(e,"Subtract",[i,n.op1],t):null}function Ws(e,n,i,t){let r=e.jsonSerializationOptions.exclude;if(n==="Add"&&i.length===2&&!r.includes("Subtract")){let o=Zs(e,i[0],i[1],t)??Zs(e,i[1],i[0],t);if(o)return o}if(n==="Divide"&&i.length===2&&r.includes("Divide"))return M(e,"Multiply",[i[0],e._fn("Power",[i[1],e.NegativeOne])],t);if(n==="Multiply"&&!r.includes("Negate")&&b(i[0])===-1)return i.length===2?M(e,"Negate",[i[1]]):M(e,"Negate",[e._fn("Multiply",i.slice(1))],t);if(n==="Multiply"&&!r.includes("Divide")){let o=new Ge(e,i,{canonical:!1}).asRationalExpression();if(o.head==="Divide")return M(e,o.head,o.ops,t)}if(n==="Power"){if(!r.includes("Exp")&&i[0]?.symbol==="ExponentialE")return M(e,"Exp",[i[1]],t);if(i[1]?.numericValue!==null){let o=k(i[1]);if(o===2&&!r.includes("Square"))return M(e,"Square",[i[0]],t);if(o!==null&&o<0&&!r.includes("Divide"))return M(e,"Divide",[e.One,o===-1?i[0]:e.pow(i[0],-o)],t);let s=i[1].numericValue;if(!r.includes("Sqrt")&&s===.5)return M(e,"Sqrt",[i[0]],t);if(!r.includes("Sqrt")&&s===-.5)return M(e,"Divide",[e.One,e._fn("Sqrt",[i[0]])],t);if(q(s)){let a=Ee(s),u=we(s);if(a===1){if(!r.includes("Sqrt")&&u===2)return M(e,"Sqrt",[i[0]],t);if(!r.includes("Root"))return M(e,"Root",[i[0],e.number(s[1])],t)}if(a===-1){if(!r.includes("Sqrt")&&u===2)return M(e,"Divide",[e.One,e._fn("Sqrt",[i[0]])],t);if(!r.includes("Root"))return M(e,"Divide",[e.One,e._fn("Root",[i[0],e.number(s[1])])],t)}}}}return M(e,n,i,t)}function M(e,n,i,t){let r=e.jsonSerializationOptions.exclude;if((n==="Rational"||n==="Divide")&&i.length===2&&k(i[0])===1&&k(i[1])===2&&!r.includes("Half"))return Ci(e,"Half",{...t,wikidata:"Q39373172"});if(i.length===1){let u=i[0].numericValue;if(n==="Negate"&&u!==null){if(typeof u=="number")return On(e,-u);if(u instanceof E||u instanceof Gr.Complex)return On(e,u.neg());if(q(u))return On(e,ce(u))}}if(typeof n=="string"&&r.includes(n)){if(n==="Rational"&&i.length===2)return M(e,"Divide",i,t);if(n==="Complex"&&i.length===2)return M(e,"Add",[i[0],e._fn("Multiply",[i[1],e.I])],t);if(n==="Sqrt"&&i.length===1)return M(e,"Power",[i[0],r.includes("Half")?e.number([1,2]):e.Half],t);if(n==="Root"&&i.length===2&&i[1].numericValue!==null){let u=k(i[1]);if(u===2)return M(e,"Sqrt",[i[0]]);if(u!==null)return u<0?M(e,"Divide",[e.One,e._fn("Power",[i[0],e.number([1,-u])])],t):M(e,"Power",[i[0],e.number([1,-u])],t)}if(n==="Square"&&i.length===1)return M(e,"Power",[i[0],e.number(2)],t);if(n==="Exp"&&i.length===1)return M(e,"Power",[e.E,i[0]],t);if(n==="Subtract"&&i.length===2)return M(e,"Add",[i[0],e._fn("Negate",[i[1]])],t);if(n==="Subtract"&&i.length===1)return M(e,"Negate",i,t)}if(n==="Add"&&i.length===2&&!r.includes("Subtract")){if(i[1].numericValue!==null){let u=k(i[1]);if(u!==null&&u<0)return M(e,"Subtract",[i[0],e.number(-u)],t)}if(i[1].head==="Negate")return M(e,"Subtract",[i[0],i[1].op1],t)}if(n==="Tuple"){if(i.length===1&&!r.includes("Single"))return M(e,"Single",i,t);if(i.length===2&&!r.includes("Pair"))return M(e,"Pair",i,t);if(i.length===3&&!r.includes("Triple"))return M(e,"Triple",i,t)}let s=[typeof n=="string"?n:n.json,...i.map(u=>u.json)],a={...t??{}};return e.jsonSerializationOptions.metadata.includes("latex")?a.latex=a.latex??e.serialize({fn:s}):a.latex="",e.jsonSerializationOptions.metadata.includes("wikidata")||(a.wikidata=""),!a.latex&&!a.wikidata&&e.jsonSerializationOptions.shorthands.includes("function")?s:a.latex&&a.wikidata?{fn:s,latex:a.latex,wikidata:a.wikidata}:a.latex?{fn:s,latex:a.latex}:a.wikidata?{fn:s,wikidata:a.wikidata}:{fn:s}}function Ys(e,n){return n=n,e.jsonSerializationOptions.shorthands.includes("string")?`'${n}'`:{str:n}}function Ci(e,n,i){if(n==="Half"&&e.jsonSerializationOptions.exclude.includes("Half"))return On(e,[1,2],i);if(i={...i},e.jsonSerializationOptions.metadata.includes("latex")?(i.latex=i.latex??e.serialize({sym:n}),i.latex!==void 0&&(i.latex=i.latex)):i.latex=void 0,e.jsonSerializationOptions.metadata.includes("wikidata")){if(i.wikidata===void 0){let t=e.lookupSymbol(n)?.wikidata;t!==void 0&&(i.wikidata=t)}}else i.wikidata=void 0;return n=n,i.latex===void 0&&i.wikidata===void 0&&e.jsonSerializationOptions.shorthands.includes("symbol")?n:i.latex!==void 0&&i.wikidata!==void 0?{sym:n,latex:i.latex,wikidata:i.wikidata}:i.latex!==void 0?{sym:n,latex:i.latex}:i.wikidata!==void 0?{sym:n,wikidata:i.wikidata}:{sym:n}}function On(e,n,i){i={...i},e.jsonSerializationOptions.metadata.includes("latex")||(i.latex=void 0);let t=i.latex===void 0&&i.wikidata===void 0&&!e.jsonSerializationOptions.metadata.includes("latex")&&e.jsonSerializationOptions.shorthands.includes("number"),r=e.jsonSerializationOptions.exclude,o="";if(n instanceof E){if(n.isNaN())o="NaN";else if(!n.isFinite())o=n.isPositive()?"+Infinity":"-Infinity";else{if(t&&At(n))return n.toNumber();if(n.isInteger()&&n.e<n.precision()+4)o=n.toFixed(0);else{let s=e.jsonSerializationOptions.precision,a=s==="max"?n.toString():n.toPrecision(s==="auto"?e.precision:s);if(o=Js(e,a),t){let u=n.toNumber();if(u.toString()===o)return u}}}return e.jsonSerializationOptions.metadata.includes("latex")&&(i.latex=i.latex??e.serialize({num:o})),i.latex!==void 0?{num:o,latex:i.latex}:t?o:{num:o}}if(n instanceof Gr.Complex)return n.isInfinite()?Ci(e,"ComplexInfinity",i):n.isNaN()?(o="NaN",e.jsonSerializationOptions.metadata.includes("latex")&&(i.latex=i.latex??e.serialize({num:o})),i.latex!==void 0?{num:o,latex:i.latex}:{num:o}):M(e,"Complex",[e.number(n.re),e.number(n.im)],{...i,wikidata:"Q11567"});if(q(n)){let s=!r.includes("Rational");return t&&e.jsonSerializationOptions.shorthands.includes("function")&&P(n)?n[0]===1&&n[1]===2&&!r.includes("Half")?Ci(e,"Half",i):[s?"Rational":"Divide",n[0],n[1]]:M(e,s?"Rational":"Divide",[e.number(n[0]),e.number(n[1])],{...i})}if(Number.isNaN(n))o="NaN";else if(!Number.isFinite(n))o=n>0?"+Infinity":"-Infinity";else{if(t)return n;o=Js(e,n.toString())}return e.jsonSerializationOptions.metadata.includes("latex")&&(i.latex=i.latex??e.serialize({num:o})),i.latex!==void 0?{num:o,latex:i.latex}:{num:o}}function Js(e,n){if(!e.jsonSerializationOptions.repeatingDecimals)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,u="";for(let l=0;l<r.length-a;l++){u=r.substring(0,l);for(let f=0;f<=a;f++){let d=r.substring(l,l+f+1),c=Math.floor((r.length-u.length)/d.length);if(c<3)break;if((u+d.repeat(c+1)).startsWith(r))return d==="0"?s==="0"?t+"."+u+(o??""):n:t+"."+u+"("+d+")"+(o??"")}}for(r+=s;r.endsWith("0");)r=r.slice(0,-1);return o?`${t}.${r}${o.toLowerCase()}`:`${t}.${r}`}var oi=class e 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=de("Dictionary");for(let[t,r]of this._value)i^=de(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(){if(this.engine.jsonSerializationOptions.shorthands.includes("dictionary")){let t={};for(let r of this._value.keys())t[r]=this._value.get(r).json;return{dict:t}}let i=[];for(let t of this._value.keys())i.push(this.engine._fn("KeyValuePair",[this.engine.string(t),this._value.get(t)]));return M(this.engine,"Dictionary",i,{latex:this._latex})}isSame(i){if(this===i)return!0;if(!(i instanceof e)||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(!(i instanceof e)||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 u=s.match(a);if(u===null)return null;r={...r,...u}}return r}isEqual(i){if(this===i)return!0;if(!(i instanceof e)||!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 e(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),u=a.replace(i,t);u!==null&&(r+=1),o[s]=u??a}return r===0?null:new e(this.engine,o)}subs(i,t){let r={};for(let o of this.keys)r[o]=this.getKey(o).subs(i,t);return new e(this.engine,r,t)}};var ea=se(te());var Qs=[];function Xs(e){let n=e.functionDefinition;if(n?.iterator)return n.iterator(e);let i=e.string;if(i!==null){if(i.length===0)return{next:()=>({done:!0,value:void 0})};let t=0;return{next:()=>({value:e.engine.string(i.charAt(t++)),done:t>i.length})}}}function jr(e){if(e.head==="N"&&typeof e.op1.head=="string"){let o={D:"ND",Integrate:"NIntegrate"}[e.op1.head];o&&(e=e.engine._fn(o,e.op1.ops))}if(e.head==="Function")return e;let n=e.unknowns;n.includes("_")&&(e=e.subs({_:"_1"}),n=e.unknowns);let i=0;for(let o of n)if(o.startsWith("_")){let s=Number(o.slice(1));s>i&&(i=s)}let t=e.engine;return t._fn("Function",[e,...Array.from({length:i},(o,s)=>t.symbol(`_${s+1}`))])}function Hr(e){let n=e.engine,i=e.symbol?n.lookupFunction(e.symbol):void 0;if(i){let a=i.signature.N??i.signature.evaluate;return a?u=>a(n,u)??n._fn(e,u):u=>n._fn(e,u)}let t=jr(e);if(!t)return;t.head;let r=t.ops.slice(1).map(a=>a.symbol??"Nothing");n.pushScope();for(let a of r)n.declare(a,{inferred:!0,domain:void 0});let o=t.op1.canonical;o.bind(),n.popScope();let s=o.scope;return r.length===0?()=>{let a=n.swapScope(s);n.resetContext();let u=o.N()??o.evaluate();return n.swapScope(a),u}:a=>{if(n.strict&&(a=Ne(n,a,r.length),!a.every(d=>d.isValid)))return;a=a.map(d=>d.evaluate());let u=n.swapScope(s);n.resetContext();let l=0;for(let d of r)n.assign(d,a[l++]);let f=o.N()??o.evaluate();if(n.swapScope(u),!!f.isValid)return f}}function Cn(e,n){return Hr(e)?.(n)??e.engine._fn(e,n)}function Pn(e){return Hr(e)??(n=>e.engine._fn(e.N(),n).N())}function Zr(e){let n=e.engine,i=Hr(e);return i?t=>i([n.number(t)])?.valueOf()??NaN:t=>n._fn(e.evaluate(),[n.number(t)]).evaluate().valueOf()}function Jr(e){let n=e.match(/(.+)\((.*)\)/);if(!n)return[e,void 0];let i=n[1],t=n[2].split(",").map(r=>r.trim());return[i,t]}var me=class e extends F{constructor(i,t,r,o){o??(o={}),o.canonical??(o.canonical=!1);super(i,o.metadata);this._codomain=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^de(this._head)|0:i=i^this._head.hash|0,this._hash=i,i}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(){this._value=void 0,this._numericValue=void 0}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 this.isValid&&this._canonical===this?Ws(this.engine,this._head,this._ops,{latex:this._latex,wikidata:this.wikidata}):M(this.engine,this._head,this._ops,{latex:this._latex,wikidata:this.wikidata})}get rawJson(){return[typeof this._head=="string"?this._head:this._head.rawJson,...this.ops.map(t=>t.rawJson)]}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?Ot(this.engine,this._head,this._ops):this),this._canonical}*map(i){let t=0;for(;t<this._ops.length;)yield i(this._ops[t++])}subs(i,t){t=t?{...t}:{},"canonical"in t||(t.canonical=!0);let r=this._ops.map(o=>o.subs(i,t));return t.canonical&&r.every(o=>o.isValid)?Ot(this.engine,this._head,r):new e(this.engine,this._head,r,{canonical:!1})}replace(i,t){return vt(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 e)||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){if(!(i instanceof e))return null;let r={};if(typeof this.head=="string"){if(this.head!==i.head)return null}else{if(typeof i.head=="string")return null;{if(!i.head)return null;let a=this.head.match(i.head,t);if(a===null)return null;r={...r,...a}}}let o=this._ops,s=i._ops;for(let a=0;a<o.length;a++){let u=o[a].match(s[a],t);if(u===null)return null;r={...r,...u}}return r}get complexity(){if(this.isCanonical)return this.functionDefinition?.complexity??Ze}get baseDefinition(){return this.functionDefinition}get functionDefinition(){return this._def}get value(){if(!(!this.isCanonical||!this.isPure))return this._value||(this._value=this.evaluate()),this._value}isEqual(i){let t=Ue(this,i);return t===0?!0:t!==void 0?!1:this.engine.add([this,this.engine.neg(i)]).simplify().isZero?!0:this.isSame(i)}isLess(i){let t=Ue(this,i);if(t!==void 0)return t<0}isLessEqual(i){let t=Ue(this,i);if(t!==void 0)return t<=0}isGreater(i){let t=Ue(this,i);if(t!==void 0)return t>0}isGreaterEqual(i){let t=Ue(this,i);if(t!==void 0)return t>=0}get isZero(){let i=this.sgn;if(i===null)return!1;if(typeof i=="number")return i===0}get isNotZero(){let i=this.sgn;if(i===null)return!1;if(typeof i=="number")return i!==0}get isOne(){return this.isEqual(this.engine.One)}get isNegativeOne(){return this.isEqual(this.engine.NegativeOne)}get isPositive(){let i=this.sgn;if(i===null)return!1;if(typeof i=="number")return i>0}get isNonPositive(){let i=this.sgn;if(i===null)return!1;if(typeof i=="number")return i<=0}get isNegative(){let i=this.sgn;if(i===null)return!1;if(typeof i=="number")return i<0}get isNonNegative(){let i=this.sgn;if(i===null)return!1;if(typeof i=="number")return i>=0}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 sgn(){if(!this.isCanonical)return;let i=this.head;if(i==="Negate"){let t=this._ops[0]?.sgn;return t===void 0?void 0:t===null?null:t===0?0:t>0?-1:1}if(i==="Multiply"){let t=this._ops.reduce((r,o)=>r*(o.sgn??NaN),1);return isNaN(t)?null:t>0?1:t<0?-1:0}if(i==="Add"){let t=0,r=0,o=0,s=this._ops.length;for(let a of this._ops){let u=a.sgn;if(u==null)break;u===0&&(o+=1),u>0&&(t+=1),u<0&&(r+=1)}return o===s?0:t===s?1:r===s?-1:null}if(i==="Divide"){let t=this._ops[0]?.sgn,r=this._ops[1]?.sgn;return t===null||r===null||t===void 0||r===void 0?null:t===0?0:t>0&&r>0||t<0&&r<0?1:-1}if(i==="Square")return this._ops[0]?.isImaginary?-1:this._ops[0]?.isZero?0:1;if(i==="Abs")return this._ops[0]?.isZero?0:1;if(i==="Sqrt")return this._ops[0]?.isZero?0:this._ops[0]?.isImaginary?null:1}get domain(){if(this._codomain!==void 0)return this._codomain;if(!this.canonical)return;let i=this.engine,t;if(typeof this._head!="string")t=this._head.domain?.result;else if(this._def){let r=this._def.signature;typeof r.codomain=="function"?t=r.codomain(i,this._ops):t=r.codomain}return t??(t=void 0),this._codomain=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=un(this),r!==null))return r=r.simplify({...i,recursive:!1}),Pi(this,r);let o=this.functionDefinition,s=t?Ks(this._ops,o?.hold??"none",o?.associative?o.name:"",f=>f.simplify(i)):this._ops;if(typeof this._head!="string"){let f=Cn(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=Pi(this.engine.fn(this._head,s),r):r=this.engine.fn(this._head,s),r=Pi(this,r);let a=i?.rules??this.engine.cache("standard-simplification-rules",()=>ei(this.engine,Qs),f=>{for(let[d,c,p,x]of f)d.reset(),c.reset();return f}),u=0,l=!1;do{let f=r.replace(a);f!==null?(r=Pi(r,f),r===f&&(l=!0)):l=!0,u+=1}while(!l&&u<this.engine.iterationLimit);return Pi(this,r)}evaluate(i){if(!this.isValid)return this;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,r=Ks(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=Cn(this._head,r));let s=t?.signature;if(!o&&s){let a=i?.numericMode??!1,u=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(u)}if(o){let a=o.numericValue;a!==null&&(!Z(this.engine)&&a instanceof ea.Complex?o=this.engine.NaN:!O(this.engine)&&a instanceof E&&(o=this.engine.number(a.toNumber())),this.isPure&&(this._numericValue=o))}return o??this.engine.fn(this._head,r)}N(i){return this.evaluate({...i,numericMode:!0})}solve(i){return i.length!==1?null:Mt(this.simplify(),i[0])}};function Yl(e,n,i,t){let r=[];if(n==="Add"||n==="Multiply")r=ke(e,e.canonical(i),{flatten:n});else if(n==="Negate"||n==="Square"||n==="Sqrt"||n==="Exp"||n==="Ln")r=ke(e,e.canonical(i),1);else if(n==="Divide"||n==="Power")r=ke(e,e.canonical(i),2);else return null;if(!r.every(o=>o.isValid))return e._fn(n,r,t);if(n==="Add")return e.add(r,t);if(n==="Negate")return e.neg(r[0],t);if(n==="Multiply")return e.mul(r,t);if(n==="Divide")return e.div(r[0],r[1],t);if(n==="Exp")return e.pow(e.E,r[0],t);if(n==="Power")return e.pow(r[0],r[1],t);if(n==="Square")return e.pow(r[0],2,t);if(n==="Sqrt"){let o=r[0].canonical;return q(o.numericValue)?e._fn("Sqrt",[o],t):e.pow(o,e.Half,t)}return n==="Ln"?e._fn("Ln",r,t):null}function Ot(e,n,i,t){if(typeof n!="string"&&(e.pushScope(),n=n.evaluate().symbol??n,e.popScope()),typeof n=="string"){let u=Yl(e,n,i,t);if(u)return u}else if(!n.isValid)return new me(e,n,i.map(u=>e.box(u,{canonical:!1})),{metadata:t,canonical:!1});let r=e.lookupFunction(n);if(!r)return new me(e,n,xe(i.map(u=>e.box(u))),{metadata:t,canonical:!0});let o=[];for(let u=0;u<i.length;u++)if(!Je(r.hold,i.length-1,u))o.push(e.box(i[u]));else{let l=e.box(i[u],{canonical:!1});l.head==="ReleaseHold"?o.push(l.op1.canonical):o.push(l)}let s=r.signature;if(s.canonical){try{let u=s.canonical(e,o);if(u)return u}catch(u){console.error(u)}return new me(e,n,o,{metadata:t,canonical:!1})}o=xe(o),r.associative&&(o=K(o,n));let a=Ls(e,o,r.hold,s.domain.params,s.domain.optParams,s.domain.restParam);if(a)return e._fn(n,a,t);if(o.length===1&&o[0].head===n){if(r.involution)return o[0].op1;r.idempotent&&(o=o[0].ops)}return o.length>1&&r.commutative===!0&&(o=o.sort(Tn)),e._fn(n,o,t)}function Ks(e,n,i,t){if(e.length===0)return[];if(e=K(e,i),n==="all")return e;if(n==="none"){let o=[];for(let s of e){let a=s.head;if(a==="Hold")o.push(s);else{let u=a==="ReleaseHold"?s.op1:s;if(u){let l=t(u);l!==null&&o.push(l)}}}return K(o,i)}let r=[];for(let o=0;o<e.length;o++)if(e[o].head==="Hold")r.push(e[o]);else{let s;if(e[o].head==="ReleaseHold"?s=e[o].op1:Je(n,e.length-1,o)?r.push(e[o]):s=e[o],s){let a=t(s);a!==null&&r.push(a)}}return K(r,i)}function Pi(e,n){if(n==null||e===n)return e;let i=e.engine,t=i.box(n);return i.costFunction(t)<=1.2*i.costFunction(e)?t:e}var Te=se(te());var na=se(te());function ia(e){if(typeof e=="number"&&!isNaN(e))return isFinite(e)?Number.isInteger(e)?e>0?"PositiveIntegers":e<0?"NegativeIntegers":"Integers":e>0?"PositiveNumbers":e<0?"NegativeNumbers":"RealNumbers":"ExtendedRealNumbers";if(e instanceof E)return e.isNaN()?"Numbers":e.isFinite()?e.isInteger()?e.isPositive()?"PositiveIntegers":e.isNegative()?"NegativeIntegers":"Integers":e.isPositive()?"PositiveNumbers":e.isNegative()?"NegativeNumbers":"RealNumbers":"ExtendedRealNumbers";if(e instanceof na.Complex){let n=e;return n.im,n.re===0?"ImaginaryNumbers":"ComplexNumbers"}if(q(e)){let[n,i]=e;return typeof n!="number"||!Number.isNaN(n)&&Number.isNaN(i),"RationalNumbers"}return"Numbers"}var Ql=0x3ffffffffffe5;function En(e){if(!Number.isInteger(e)||!Number.isFinite(e)||Number.isNaN(e)||e<=1)return!1;if(e<=Es)return Br.has(e);for(let n of Br)if(e%n===0)return!1;return e>=Ql?Kl(e,30)?void 0:!1:e===Xl(e)}function Xl(e){if(e===1)return 1;if(e%2===0)return 2;if(e%3===0)return 3;if(e%5===0)return 5;let n=Math.floor(Math.sqrt(e)),i=7;for(;i<=n;){if(e%i===0)return i;if(e%(i+4)===0)return i+4;if(e%(i+6)===0)return i+6;if(e%(i+10)===0)return i+10;if(e%(i+12)===0)return i+12;if(e%(i+16)===0)return i+16;if(e%(i+22)===0)return i+22;if(e%(i+24)===0)return i+24;i+=30}return e}function Kl(e,n){let i=0,t=e-1;for(;t%2===0;)t/=2,++i;e:do{let r=Math.pow(2+Math.floor(Math.random()*(e-3)),t)%e;if(!(r===1||r===e-1)){for(let o=i-1;o--;){if(r=r*r%e,r===1)return!1;if(r===e-1)continue e}return!1}}while(--n);return!0}var oe=class e extends F{constructor(i,t,r){super(i,r?.metadata);if(typeof t=="number"){this._value=t,this._isCanonical=!0;return}if(q(t)){let[o,s]=t;typeof o!="number"||Number.isInteger(o)&&Number.isInteger(s),!(typeof o=="bigint"&&typeof s=="bigint")||s!==o&&BigInt(1),r?.canonical??!0?(this._value=Wr(i,t),this._isCanonical=!0):(this._value=t,this._isCanonical=!1)}else!(t instanceof Te.Complex)||!Number.isNaN(t.re)&&!Number.isNaN(t.im)&&i.chop(t.im),this._value=Wr(i,t),this._isCanonical=!0}get hash(){if(this._hash!==void 0)return this._hash;let i=0;return typeof this._value=="number"?i=de(this._value.toString()):this._value instanceof Te.Complex?i=de(this._value.re.toString()+" +i "+this._value.im.toString()):this._value instanceof E?i=de(this._value.toString()):i=de(this._value[0].toString()+" / "+this._value[1].toString()),this._hash=i,i}get head(){return"Number"}get isPure(){return!0}get isExact(){return typeof this._value=="number"?Number.isInteger(this._value):this._value instanceof E?this._value.isInteger():this._value instanceof Te.Complex?Number.isInteger(this._value.re)&&Number.isInteger(this._value.im):q(this._value)}get isCanonical(){return this._isCanonical}set isCanonical(i){this._isCanonical=i}get complexity(){return 1}get value(){return this}get numericValue(){return this._value}get domain(){return this._domain??(this._domain=this.engine.domain(ia(this._value))),this._domain}get json(){return On(this.engine,this._value,{latex:this._latex})}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 E)return this._value.isZero()?0:this._value.isNegative()?-1:this._value.isPositive()?1:null;if(Array.isArray(this._value)){let[i,t]=this._value;return i===0&&t!==0?0:i<0?-1:i>0?1:null}return null}isSame(i){if(this===i)return!0;if(!(i instanceof e))return!1;if(typeof this._value=="number")return typeof i._value!="number"?!1:this._value===i._value;if(this._value instanceof E)return i._value instanceof E?this._value.eq(i._value):!1;if(Array.isArray(this._value)){if(!Array.isArray(i._value))return!1;let[t,r]=i._value;return this._value[0]===t&&this._value[1]===r}return this._value instanceof Te.Complex&&i._value instanceof Te.Complex?this._value.equals(i._value):!1}isEqual(i){return this===i?!0:i instanceof e?Ue(this,i)===0:!1}match(i,t){return this.isEqualWithTolerance(i,t?.numericTolerance??0)?{}:null}isEqualWithTolerance(i,t){return i instanceof e&&Ue(this,i,t)===0}isLess(i){let t=Ue(this,i);if(t!==void 0)return t<0}isLessEqual(i){let t=Ue(this,i);if(t!==void 0)return t<=0}isGreater(i){return i.isLessEqual(this)}isGreaterEqual(i){return i.isLess(this)}get isPositive(){if(typeof this._value=="number")return this._value>0;let i=this.sgn;if(i!=null)return i>0}get isNonNegative(){if(typeof this._value=="number")return this._value>=0;let i=this.sgn;if(i!=null)return i>=0}get isNegative(){if(typeof this._value=="number")return this._value<0;let i=this.sgn;if(i!=null)return i<0}get isNonPositive(){if(typeof this._value=="number")return this._value<=0;let i=this.sgn;if(i!=null)return i<=0}get isZero(){return this._value===0?!0:this._value instanceof E?this._value.isZero():this._value instanceof Te.Complex?this._value.isZero():!1}get isNotZero(){return this._value===0?!1:this._value instanceof E?!this._value.isZero():this._value instanceof Te.Complex?!this._value.isZero():!0}get isOne(){return this._value===1?!0:typeof this._value=="number"?!1:this._value instanceof E?this._value.equals(this.engine._BIGNUM_ONE):this._value instanceof Te.Complex?this._value.im===0&&this._value.re===1:ee(this._value)}get isNegativeOne(){return this._value===-1?!0:typeof this._value=="number"?!1:this._value instanceof E?this._value.equals(this.engine._BIGNUM_NEGATIVE_ONE):this._value instanceof Te.Complex?this._value.im===0&&this._value.re===-1:St(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 E)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 E)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 En(this._value);if(this._value instanceof E)return En(this._value.toNumber())}get isComposite(){if(!this.isInteger||!this.isFinite||this.isNonPositive||this.isOne||this.isZero)return!1;if(typeof this._value=="number")return!En(this._value);if(this._value instanceof E)return!En(this._value.toNumber())}get isInfinity(){return typeof this._value=="number"?!Number.isFinite(this._value)&&!Number.isNaN(this._value):this._value instanceof E?!this._value.isFinite()&&!this._value.isNaN():this._value instanceof Te.Complex?!this._value.isFinite()&&!this._value.isNaN():!1}get isNaN(){return typeof this._value=="number"?Number.isNaN(this._value):this._value instanceof E?this._value.isNaN():this._value instanceof Te.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 E?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 Te.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 Te.Complex?(this._value.im,!0):!1}get isExtendedComplex(){return this.isInfinity||!this.isNaN}get canonical(){return this._isCanonical?this:this.engine.number(Wr(this.engine,this._value))}simplify(i){return this.canonical}evaluate(i){return i?.numericMode?this.N(i):this}N(i){if(!Array.isArray(this._value))return this;let t=this.engine,[r,o]=this._value;return typeof r=="number"&&typeof o=="number"&&!O(t)?t.number(r/o):t.number(t.bignum(r).div(t.bignum(o)))}};function Wr(e,n){if(n instanceof E&&At(n))return n.toNumber();if(!q(n))return n;if(n=wn(n),U(n)){let[r,o]=n;if(r>Number.MIN_SAFE_INTEGER&&r<Number.MAX_SAFE_INTEGER&&o>Number.MIN_SAFE_INTEGER&&o<Number.MAX_SAFE_INTEGER)n=[Number(r),Number(o)];else return o<0&&([r,o]=[-r,-o]),o===BigInt(1)?e.bignum(r):o===BigInt(0)?r===o?NaN:r<0?-1/0:1/0:[r,o]}let[i,t]=n;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])}var Ye=class e extends F{constructor(i,t,r){super(i,r);this._string=t.normalize(),i._register(this)}get hash(){return de("String"+this._string)}get json(){return Ys(this.engine,this._string)}get head(){return"String"}get isPure(){return!0}get isCanonical(){return!0}set isCanonical(i){}get domain(){return this.engine.Strings}get complexity(){return 19}get string(){return this._string}isEqual(i){return i.string===this._string}isSame(i){return i.string===this._string}match(i,t){return i instanceof e&&this._string===i._string?{}:null}};function Pt(e,n,i){if(typeof n=="number"||n instanceof E)return new oe(e,n,i);if(i=i?{...i}:{},"canonical"in i||(i.canonical=!0),Array.isArray(n)&&n.length===2&&n[0]instanceof E&&n[1]instanceof E){if(!n[0].isInteger()||!n[1].isInteger())throw new Error("Array argument to `boxNumber()` should be two integers");n=[D(n[0].toString()),D(n[1].toString())]}if(q(n)){if(n.length!==2)throw new Error("Array argument to `boxNumber()` should be two integers or two bignums");let[r,o]=n;if(typeof r=="bigint"&&typeof o=="bigint")return r===o?o===BigInt(0)?e.NaN:e.One:r===BigInt(0)?e.Zero:o===BigInt(1)?e.number(r,i):o===BigInt(-1)?e.number(-r,i):r===BigInt(1)&&o===BigInt(2)?e.Half:new oe(e,[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(!Number.isInteger(r)||!Number.isInteger(o))throw new Error("Array argument to `boxNumber()` should be two integers");return o===r?o===0?e.NaN:e.One:r===0?e.Zero:o===1?e.number(r,i):o===-1?e.number(-r,i):r===1&&o===2?e.Half:new oe(e,[r,o],i)}if(n instanceof Ct.Complex)return n.isNaN()?e.NaN:n.isZero()?e.Zero:n.isInfinite()?e.ComplexInfinity:e.chop(n.im)===0?e.number(n.re,i):new oe(e,n,i);let t="";if(typeof n=="string")t=n;else if(typeof n=="object"&&"num"in n){if(typeof n.num=="number")return e.number(n.num,i);if(typeof n.num!="string")throw new Error("MathJSON `num` property should be a string of digits");t=n.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 e.NaN;if(t==="infinity"||t==="+infinity")return e.PositiveInfinity;if(t==="-infinity")return e.NegativeInfinity;if(t==="0")return e.Zero;if(t==="1")return e.One;if(t==="-1")return e.NegativeOne;if(/\([0-9]+\)/.test(t)){let[r,o,s,a]=t.match(/(.+)\(([0-9]+)\)(.+)?$/)??[];t=o+s.repeat(Math.ceil(e.precision/s.length))+(a??"")}return Pt(e,e.bignum(t),i)}return null}function Yr(e,n,i){if(n===null)return e.error("missing");if(typeof n=="object"&&n instanceof F)return n;if(n=j(n),typeof n=="string")return ve(e,n,i);if(Array.isArray(n)){let t=n.map(r=>Yr(e,r,i));return new me(e,t[0],t.slice(1))}if(typeof n=="object"){if("dict"in n)return new oi(e,n.dict);if("fn"in n)return Yr(e,n.fn,i);if("str"in n)return new Ye(e,n.str);if("sym"in n)return ve(e,n.sym,i);if("num"in n)return ve(e,n.num,i)}return ve(e,n,i)}function Li(e,n,i,t){if(n==="Hold")return new me(e,"Hold",[Yr(e,i[0],t)],{...t,canonical:!0});if(n==="Error"||n==="ErrorCode")return e._fn(n,i.map(r=>e.box(r,{canonical:!1})),t.metadata);if(n==="Domain")return e.domain(i[0],t.metadata);if(n==="Number"&&i.length===1)return ve(e,i[0],t);if(n==="String")return i.length===0?new Ye(e,"",t.metadata):new Ye(e,i.map(r=>ta(r)??"").join(""),t.metadata);if(n==="Symbol"&&i.length>0)return e.symbol(i.map(r=>ta(r)??"").join(""),t);if(t.canonical&&(n==="Divide"||n==="Rational")&&i.length===2){if(i[0]instanceof F&&i[1]instanceof F){if(e.numericMode==="machine"){let[s,a]=[b(i[0]),b(i[1])];if(s!==null&&Number.isInteger(s)&&a!==null&&Number.isInteger(a))return e.number([s,a],t)}let[r,o]=[Di(i[0]),Di(i[1])];if(r!==null&&o!==null)return e.number([r,o],t)}else{let[r,o]=[Tr(e,i[0]),Tr(e,i[1])];if(r!==null&&o!==null)return e.number([r,o],t)}n="Divide"}if(t.canonical&&n==="Complex"){if(i.length===1){let r=ve(e,i[0],t),o=b(r);return o!==null&&o!==0?e.number(e.complex(0,o),t):e.mul([r,e.I])}if(i.length===2){let r=ve(e,i[0],t),o=ve(e,i[1],t),s=b(r),a=b(o);return a!==null&&s!==null?a===0&&s===0?e.Zero:a!==null&&a!==0?e.number(e.complex(s,a),t):r:e.add([r,e.mul([o,e.I])],t.metadata)}}if(t.canonical&&n==="Negate"&&i.length===1){let r=i[0];if(typeof r=="number")return e.number(-r,t);if(r instanceof E)return e.number(r.neg(),t);let o=e.box(r,t).numericValue;if(o!==null){if(typeof o=="number")return e.number(-o,t);if(o instanceof E)return e.number(o.neg(),t);if(o instanceof Ct.Complex)return e.number(o.neg());if(q(o))return e.number(ce(o))}}if(n==="Dictionary"){let r={};for(let o of i){let s=e.box(o),a=s.head;if(a==="KeyValuePair"||a==="Pair"||a==="Tuple"&&s.nops===2){let u=s.op1;if(u.isValid&&!u.isNothing){let l=s.op2,f=u.symbol??u.string;if(!f&&(u.numericValue!==null||u.string)){let d=typeof u.numericValue=="number"?u.numericValue:k(u);d&&Number.isFinite(d)&&Number.isInteger(d)&&(f=d.toString())}f&&(r[f]=l)}}}return new oi(e,r,t)}return t.canonical?Ot(e,n,i,t.metadata):new me(e,n,i.map(r=>ve(e,r,{canonical:!1})),t)}function ve(e,n,i){if(n==null)return e._fn("Sequence",[]);if(i=i?{...i}:{},"canonical"in i||(i.canonical=!0),n instanceof F)return i.canonical?n.canonical:n;if(Array.isArray(n)){if(P(n))return Number.isInteger(n[0])&&Number.isInteger(n[1])?e.number(n):Li(e,"Divide",n,i);if(U(n))return e.number(n);if(typeof n[0]=="string")return Li(e,n[0],n.slice(1),i);let t=n.slice(1).map(o=>ve(e,o,i)),r=ve(e,n[0],{...i,canonical:!1});return new me(e,r,t)}if(typeof n=="number"||n instanceof Ct.Complex||n instanceof E)return e.number(n);if(typeof n=="string")return n.startsWith("'")&&n.endsWith("'")?new Ye(e,n.slice(1,-1)):/^[+-]?[0-9]/.test(n)?e.number(n):An(n)?e.domain(n):ue(n)?e.symbol(n,i):e.error("invalid-identifier",{str:n});if(typeof n=="object"){let t={latex:n.latex,wikidata:n.wikidata};if("dict"in n)return new oi(e,n.dict,{canonical:!0,metadata:t});if("fn"in n)return typeof n.fn[0]=="string"?Li(e,n.fn[0],n.fn.slice(1),i):new me(e,ve(e,n.fn[0],i),n.fn.slice(1).map(r=>ve(e,r,i)),{metadata:t});if("str"in n)return new Ye(e,n.str,t);if("sym"in n)return e.symbol(n.sym,i);if("num"in n)return e.number(n,i)}return e.symbol("Undefined")}function ta(e){if(typeof e=="string")return e;if(e instanceof F)return e.string??e.symbol??e.toString();if(typeof e=="object"){if("str"in e)return e.str;if("fn"in e&&e.fn[0]==="String"&&typeof e.fn[1]=="string")return e.fn[1]}return Array.isArray(e)&&e[0]==="String"&&typeof e[1]=="string"?e[1]:null}var io=se(te());var si=se(te());function Qr(e,n,i,t){if(i.symbol==="ComplexInfinity")return e.NaN;if(i.isZero)return e.One;if(i.isOne)return n;if(i.isNegativeOne)return e.inv(n);if(i.numericValue!==null&&n.numericValue!==null){let r=b(n);if(r===1)return e.One;if(r===0){if(i.isPositive)return e.Zero;if(i.isNegative)return e.ComplexInfinity}if(i.isNegativeOne)return e.inv(n);let o=b(i);if(o===.5||o===-.5){let s=k(n);if(s!==null&&s>0){let[a,u]=rn(s,2);return u===1&&a===1?e.One:a!==1?u===1?e.number(o>=0?a:[1,a]):e.mul([e.number(a),e._fn("Sqrt",[e.number(u)])]):o>0?e._fn("Sqrt",[n],t):e.inv(e._fn("Sqrt",[n]),t)}return o>0?e._fn("Power",[n,e.Half],t):e._fn("Power",[n,e.number([-1,2])],t)}if(n.isInfinity){if(i.numericValue instanceof si.Complex){let s=i.numericValue.re;if(s===0)return e.NaN;if(s<0)return e.Zero;if(s>0)return e.ComplexInfinity}if(n.isNegative){if(i.isInfinity)return e.NaN}else if(n.isPositive){if(i.isNegativeOne)return e.Zero;if(i.isInfinity)return i.isNegative?e.Zero:e.PositiveInfinity}}if(i.isInfinity&&(n.isOne||n.isNegativeOne))return e.NaN}if(n.head==="Power"&&n.op1.isReal){let r=k(i);if(r!==null){let o=k(n.op2);if(o!==null)return e.pow(n.op1,e.number(r*o))}if(n.op1.isNonNegative){let o=re(i);if(o){let s=re(n.op2);if(s)return e.pow(n.op1,e.number(ne(o,s)))}}}return n.head==="Multiply"&&k(i)!==null?e._fn("Multiply",n.ops.map(o=>e.pow(o,i))):e._fn("Power",[n,i],t)}function Xr(e,n){let i=n.numericValue;if(typeof i=="number")return e.number(i*i);if(i instanceof E||i instanceof si.Complex)return e.number(i.pow(2));if(P(i))return e.number([i[1]*i[1],i[0]*i[0]]);if(U(i))return e.number([i[1]*i[1],i[0]*i[0]]);if(n.head==="Multiply")return e._fn("Multiply",n.ops.map(t=>Xr(e,t)));if(n.head==="Power"){let t=k(n.op2);return t!==null?e.pow(n.op1,e.number(t*2)):e.pow(n.op1,e.mul([e.number(2),n.op2]))}return e.pow(n,e.number(2))}function ra(e,n,i){if(n.numericValue===null||i.numericValue===null)return;if(n.numericValue instanceof si.Complex)return i.numericValue instanceof si.Complex?e.number(n.numericValue.pow(i.numericValue)):e.number(n.numericValue.pow(b(i)??NaN));if(i.numericValue instanceof si.Complex){let s=b(n)??null;return s!==null?e.number(e.complex(s).pow(i.numericValue)):void 0}let t=ef(i);if(O(e)||n.numericValue instanceof E||i.numericValue instanceof E){let s=Dn(n),a=Dn(i);if(!s||!a)return;if(t===2)return s.isNeg()?Z(e)?e.number(e.complex(0,s.neg().sqrt().toNumber())):e.NaN:e.number(s.sqrt());if(!a.isInteger()&&s.isNeg()){if(!Z(e))return e.NaN;let u=e.complex(s.toNumber()),l=e.complex(a.toNumber());return e.number(u.pow(l))}return e.number(s.pow(a))}let r=b(i)??NaN,o=b(n)??NaN;if(t===2)return o<0?Z(e)?e.mul([e.I,e.number(Math.sqrt(-o))]):e.NaN:e.number(Math.sqrt(o));if(!Number.isInteger(r)&&o<0){if(!Z(e))return e.NaN;let s=e.complex(o),a=e.complex(r);return e.number(s.pow(a))}return e.number(Math.pow(o,r))}function Fi(e,n,i,t){if(n.head==="Multiply"){let r=O(e)?[BigInt(1),BigInt(1)]:[1,1],o=[];for(let s of n.ops){let a=re(s);a?r=ne(r,a):o.push(s)}if(!ee(r))return e.mul([Ri(e,e.number(r),t)??e.One,e.pow(Fi(e,e.mul(o),i,t)??e.mul(o),i)])}if(n.head==="Power"){if(k(n.op2)===-1&&k(i)===-1)return n.op1;let r=re(n.op2),o=re(i);if(r&&o){let s=ne(r,o);return e.pow(n.op1,s)}if(t==="N"){let s=b(n.op2),a=b(i);if(s!==null&&a!==null){let u=s*a;return u===0?e.One:u===1?n.op1:e.pow(n.op1,u)}}}if(t!=="N"&&n.numericValue!==null&&n.isInteger){if(k(i))return ra(e,n,i);let o=re(i);if(o){let[s,a]=[Ee(o),we(o)];if((s===1||s===-1)&&(a===2||a===3)){if(O(e)||n.numericValue instanceof E){let u=Di(n);if(a%2===0&&u<0&&!Z(e))return e.NaN;let l=u<0?a%2===0?e.I:e.NegativeOne:e.One,[f,d]=yt(u>0?u:-u,a);if(d===BigInt(1)&&f===BigInt(1))return l;if(f!==BigInt(1))return d===BigInt(1)?e.mul([l,e.number(s>=0?f:[BigInt(1),f])]):e.mul([l,e.number(f),e.pow(e.number(d),i)])}else if(typeof n.numericValue=="number"){if(n.numericValue<0&&a%2===0&&!Z(e))return e.NaN;let[u,l]=rn(Math.abs(n.numericValue),a),f=n.numericValue<0?a%2===0?e.I:e.NegativeOne:e.One;if(l===1&&u===1)return f;if(u!==1)return l===1?e.mul([f,e.number(s>=0?u:[1,u])]):e.mul([f,e.number(u),e.pow(e.number(l),i)])}}return n.isNegative?Z?e.mul([e.I,e.fn("Sqrt",[e.neg(n)])]):e.NaN:void 0}}if(t!=="simplify"&&n.numericValue!==null&&i.numericValue!==null)return ra(e,n,i)}function Ri(e,n,i){if(n.isOne)return e.One;if(n.isZero)return e.Zero;if(n.isNegativeOne)return Z(e)?e.I:e.NaN;if(n.isNegative&&!Z(e))return e.NaN;let t=re(n);if(i==="N"||i==="evaluate"&&!t)return A(n,o=>o<0?e.complex(o).sqrt():Math.sqrt(o),o=>o.isNeg()?e.complex(o.toNumber()).sqrt():o.sqrt(),o=>o.sqrt());let r=k(n);if(r!==null){let[o,s]=rn(Math.abs(r),2);return r<0?(s===1&&e.mul([e.number(e.complex(0,o))]),e.mul([e.number(e.complex(0,o)),e.sqrt(e.number(s))])):s===1?e.number(o):e.mul([e.number(o),e.sqrt(e.number(s))])}if(t){if(P(t)&&!O(e)){let[o,s]=t;if(Math.abs(o)<Number.MAX_SAFE_INTEGER&&s<Number.MAX_SAFE_INTEGER){let[a,u]=rn(Math.abs(o),2),[l,f]=rn(s,2);return o<0?e.mul([e.number([a,l]),e.sqrt(e.number([u,f])),e.I]):e.mul([e.number([a,l]),e.sqrt(e.number([u,f]))])}}if(U(t)||O(e)){let o=D(t[0]),[s,a]=yt(o>0?o:-o,2),[u,l]=yt(D(t[1]),2);return o<0?e.mul([e.number([s,u]),e.sqrt(e.number([a,l])),e.I]):e.mul([e.number([s,u]),e.sqrt(e.number([a,l]))])}}}function ef(e){if(typeof e.numericValue=="number"){let t=1/e.numericValue;return Number.isInteger(t)?t:null}if(e.numericValue instanceof E){let t=e.engine._BIGNUM_ONE.div(e.numericValue);return t.isInt()?t.toNumber():null}if(!q(e.numericValue))return null;let[n,i]=[Ee(e.numericValue),we(e.numericValue)];return n!==1&&n!==-1?null:n*i}function oa(e,n){if(n.every(t=>t.isCanonical),n.length===0)return e.One;if(n.length===1)return n[0];if(n.length===2)return aa(n[0],n[1]);let i=new Ge(e);for(let t of n){if(t.isNaN||t.symbol==="Undefined")return e.NaN;i.addTerm(t)}return i.asExpression()}function sa(e,n){n.every(t=>t.head!=="Multiply");let i=new Ge(e);for(let t of n){if(t=t.simplify(),t.isNaN||t.symbol==="Undefined")return e.NaN;i.addTerm(t)}return i.asExpression()}function Kr(e,n,i="evaluate"){if(n.length>1,i==="N"&&(n=n.map(t=>t.N()),(e.numericMode==="machine"||e.numericMode==="auto")&&n.every(t=>typeof t.numericValue=="number"))){let t=1;for(let r of n)t*=r.numericValue;return e.number(t)}for(let t of n){if(t.isNaN||t.symbol==="Undefined")return e.NaN;t.isExact||(i="N")}return n.every(t=>t.head!=="Multiply"),i==="N"?n=n.map(t=>t.N()):n=n.map(t=>t.evaluate()),new Ge(e,n).asExpression(i)}function aa(e,n,i){e.isCanonical,n.isCanonical;let t=e.engine;if(e.symbol==="ImaginaryUnit"){let u=b(n);if(u!==null)return t.number(t.complex(0,u))}if(n.symbol==="ImaginaryUnit"){let u=b(e);if(u!==null)return t.number(t.complex(0,u))}if(e.numericValue!==null&&n.numericValue!==null){let u=b(e),l=b(n);if(u!==null&&t.isComplex(n))return t.number(t.complex(u*n.re,u*n.im));if(l!==null&&t.isComplex(e))return t.number(t.complex(l*e.re,l*e.im))}if(e.numericValue!==null&&n.numericValue!==null&&e.isInteger&&n.isInteger)return yn(e,n,(u,l)=>u*l,(u,l)=>u.mul(l))??t.NaN;if(e.isNaN||n.isNaN||e.symbol==="Undefined"||n.symbol==="Undefined")return t.NaN;if(e.isNothing)return n;if(n.isNothing)return e;if(e.numericValue!==null){if(e.isOne)return n;if(e.isNegativeOne)return Y(n)}if(n.numericValue!==null){if(n.isOne)return e;if(n.isNegativeOne)return Y(e)}let r=1,[o,s]=e.numericValue!==null?[e,n]:[n,e];if(o.head,o.head==="Negate"&&(o=o.op1,r=-r),s.numericValue!==null){let u=re(s);if(u){if(ee(u))return o;if(Be(u))return t.Zero;if(o.head==="Add")return r<0&&(s=Y(s)),t.add(o.ops.map(f=>aa(s,f)),i);let l=re(o);if(l){let f=ne(u,l);return t.number(r<0?ce(f):f,{metadata:i})}return r<0?t._fn("Multiply",[Y(s),o],i):t._fn("Multiply",[s,o],i)}}if(s.hash===o.hash&&s.isSame(o))return Xr(t,s);let a=new Ge(t,[s,o]);return r>0?a.asExpression():Y(a.asExpression(),i)}function ua(e,n,i){e.pushScope(),n??(n=e.error("missing"));let 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=e.Nothing),t.symbol?t=e.hold(t):t=e.domainError("Symbols",t.domain,t),r&&r.isFinite&&(r=ye(e,r,"Integers")),o&&o.isFinite&&(o=ye(e,o,"Integers")),r&&o?i=e.tuple([t,r,o]):o?i=e.tuple([t,e.One,o]):r?i=e.tuple([t,r]):i=t;let s=e._fn("Product",[n.canonical,i]);return e.popScope(),s}function Lt(e,n,i,t){let[r,o,s,a]=ti(i),u=n;if(t!=="N"&&(o>=s||s-o>=ht))return;let l=null,f=e.swapScope(u.scope);if(e.pushScope(),u.bind(),t==="simplify"){let d=[];for(let c=o;c<=s;c++)e.assign({[r]:c}),d.push(u.simplify());l=e.mul(d).simplify()}if(t==="evaluate"){let d=[];for(let c=o;c<=s;c++)e.assign({[r]:c}),d.push(u.evaluate());l=e.mul(d).evaluate()}if(t==="N"){if(l===null&&a){if(O(e)){let x=e.bignum(1);for(let h=o;h<=s;h++){e.assign({[r]:h});let I=Dn(u.N());if(I===null||!I.isFinite()){l=I!==null?e.number(I):void 0;break}x=x.mul(I)}l===null&&(l=e.number(x))}let d=1,c=e.numericMode,p=e.precision;e.numericMode="machine";for(let x=o;x<=s;x++){e.assign({[r]:x});let h=b(u.N());if(h===null||!Number.isFinite(h)){l=h!==null?e.number(h):void 0;break}d*=h}e.numericMode=c,e.precision=p,l===null&&(l=e.number(d))}if(l===null){e.assign({[r]:1e3});let d=u.N();e.assign({[r]:999});let c=u.N(),p=b(e.div(d,c).N());if(p!==null&&Number.isFinite(p)&&Math.abs(p)>1)l=e.PositiveInfinity;else{let x=1,h=e.numericMode,I=e.precision;e.numericMode="machine";for(let C=o;C<=s;C++){e.assign({[r]:C});let V=b(u.N());if(V===null){l=void 0;break}if(Math.abs(1-V)<Number.EPSILON||!Number.isFinite(V))break;x*=V}l===null&&(l=e.number(x)),e.numericMode=h,e.precision=I}}}return e.popScope(),e.swapScope(f),l??void 0}function ln(e,n,i){if(!n.isValid||!i.isValid)return e._fn("Divide",[n,i]);if(n.head==="Negate"&&i.head==="Negate"&&(n=n.op1,i=i.op1),n.numericValue!==null&&i.numericValue!==null){if(i.isOne)return n;if(i.isNegativeOne)return e.neg(n);if(n.isOne)return e.inv(i);if(n.isNegativeOne)return e.neg(e.inv(i));let p=re(n),x=re(i);if(p&&x&&!Be(x))return e.number(ne(p,sn(x)))}if(n.head==="Divide"&&i.head==="Divide")return ln(e,e.mul([n.op1,i.op2]),e.mul([n.op2,i.op1]));if(n.head==="Divide")return ln(e,e.mul([n.op1,i]),n.op2);if(i.head==="Divide")return ln(e,e.mul([n,i.op2]),i.op1);let t=n.numericValue;if(t!==null){if(P(t)){let[p,x]=t;return ln(e,e.number(p),e.mul([e.number(x),i]))}if(U(t)){let[p,x]=t;return ln(e,e.number(p),e.mul([e.number(x),i]))}}let r=i.numericValue;if(r!==null){if(P(r)){let[p,x]=r;return ln(e,e.mul([n,e.number(x)]),e.number(p))}if(U(r)){let[p,x]=r;return ln(e,e.mul([n,e.number(x)]),e.number(p))}}let[o,s]=ze(n),[a,u]=ze(i);if(!ee(o)||!ee(a)){let[p,x]=ne(o,sn(a)),h=e.mul([e.number(p),s]);if(h.isZero)return e.Zero;let I=e.mul([e.number(x),u]);return I.isOne?h:e._fn("Divide",[h,I])}let[l,f]=Lr(n),[d,c]=Lr(i);return f=f.canonical,c=c.canonical,c.numericValue!==null&&c.isOne?l*d<0?Y(f):f:l*d>0?e._fn("Divide",[f,c]):f.numericValue?e._fn("Divide",[Y(f),c]):Y(e._fn("Divide",[f,c]))}function eo(e,n,i){if(n.numericValue!==null&&i.numericValue!==null){let t=re(n),r=re(i);if(t&&r&&!Be(r))return e.number(ne(t,sn(r)))}return new Ge(e,[n,e.inv(i)]).asRationalExpression()}var la=[{Abs:{wikidata:"Q3317982",threadable:!0,idempotent:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","NonNegativeNumbers"],simplify:(e,n)=>no(e,n[0],"simplify"),evaluate:(e,n)=>no(e,n[0],"evaluate"),N:(e,n)=>no(e,n[0],"N")}},Add:{wikidata:"Q32043",associative:!0,commutative:!0,threadable:!0,idempotent:!0,complexity:1300,hold:"all",signature:{domain:"NumericFunctions",codomain:(e,n)=>Rs(e,n.map(i=>i.domain)),simplify:(e,n)=>kt(e,n),evaluate:(e,n)=>Fr(e,n),N:(e,n)=>Fr(e,n,"N")}},Ceil:{description:"Rounds a number up to the next largest integer",complexity:1250,signature:{domain:["FunctionOf","Numbers","Integers"],evaluate:(e,n)=>A(n[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:(e,n)=>A(n[0],i=>e.chop(i),i=>e.chop(i),i=>e.chop(i))}},Divide:{wikidata:"Q1226939",complexity:2500,signature:{domain:["FunctionOf","Numbers","Numbers","Numbers"],canonical:(e,n)=>{n=ke(e,n,2);let[i,t]=n;return n.length!==2?e._fn("Divide",n):e.div(i,t)},simplify:(e,n)=>eo(e,n[0],n[1]),evaluate:(e,n)=>yn(n[0],n[1],(i,t)=>i/t,(i,t)=>i.div(t),(i,t)=>i.div(t))}},Exp:{wikidata:"Q168698",threadable:!0,complexity:3500,signature:{domain:["FunctionOf","Numbers","Numbers"],canonical:(e,n)=>(n=ke(e,n,1),n.length!==1?e._fn("Power",[e.E,...n]):e.pow(e.E,n[0]))}},Factorial:{description:"Factorial Function",wikidata:"Q120976",complexity:9e3,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=k(n[0]);if(i!==null&&i>=0)return O(e)?e.number(qr(e,e.bignum(i))):e.number(xt(i));let t=n[0].numericValue;if(t!==null&&t instanceof io.Complex)return e.number(t.add(1));let r=b(n[0]);if(r!==null)return e.number(Qn(1+r))}}},Factorial2:{description:"Double Factorial Function",complexity:9e3,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=k(n[0]);if(i!==null)return O(e)?e.number(js(e,e.bignum(i))):e.number(vs(i))}}},Floor:{wikidata:"Q56860783",complexity:1250,signature:{domain:["FunctionOf","Numbers","ExtendedRealNumbers"],evaluate:(e,n)=>A(n[0],Math.floor,i=>i.floor(),i=>i.floor(0))}},Gamma:{wikidata:"Q190573",complexity:8e3,signature:{domain:["FunctionOf","Numbers","Numbers"],N:(e,n)=>A(n[0],i=>Qn(i),i=>$r(e,i),i=>i)}},GammaLn:{complexity:8e3,signature:{domain:["FunctionOf","Numbers","Numbers"],N:(e,n)=>A(n[0],i=>_i(i),i=>Vr(e,i),i=>i)}},Ln:{description:"Natural Logarithm",wikidata:"Q204037",complexity:4e3,signature:{domain:["FunctionOf","Numbers","Numbers"],N:(e,n)=>A(n[0],i=>i>=0?Math.log(i):e.complex(i).log(),i=>i.isNeg()?e.complex(i.toNumber()).log():i.ln(),i=>i.log())}},Log:{description:"Log(z, b = 10) = Logarithm of base b",wikidata:"Q11197",complexity:4100,signature:{domain:["FunctionOf","Numbers",["OptArg","Numbers"],"Numbers"],canonical:(e,n)=>{if(n.length===1)return e._fn("Log",[ye(e,n[0],"Numbers")]);if(n=ke(e,n,2),n.length!==2)return e._fn("Log",n);let[i,t]=n;return t.numericValue===10?e._fn("Log",[i]):e._fn("Log",[i,t])},N:(e,n)=>n[1]===void 0?A(n[0],i=>i>=0?Math.log10(i):e.complex(i).log().div(Math.LN10),i=>i.isNeg()?e.complex(i.toNumber()).log().div(Math.LN10):E.log10(i),i=>i.log().div(Math.LN10)):yn(n[0],n[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,signature:{domain:["FunctionOf","Numbers","Numbers"],N:(e,n)=>A(n[0],i=>i>=0?Math.log2(i):e.complex(i).log().div(Math.LN2),i=>i.isNeg()?E.log10(i):e.complex(i.toNumber()).log().div(Math.LN2),i=>i.log().div(Math.LN2))}},Lg:{description:"Base-10 Logarithm",wikidata:"Q966582",complexity:4100,signature:{domain:["FunctionOf","Numbers","Numbers"],N:(e,n)=>A(n[0],i=>i>=0?Math.log10(i):e.complex(i).log().div(Math.LN10),i=>i.isNeg()?e.complex(i.toNumber()).log().div(Math.LN10):E.log10(i),i=>i.log().div(Math.LN10))}},Multiply:{wikidata:"Q40276",associative:!0,commutative:!0,idempotent:!0,complexity:2100,hold:"all",signature:{domain:"NumericFunctions",simplify:(e,n)=>sa(e,n),evaluate:(e,n)=>Kr(e,n),N:(e,n)=>Kr(e,n,"N")}},Negate:{description:"Additive Inverse",wikidata:"Q715358",complexity:2e3,signature:{domain:["FunctionOf","Numbers","Numbers"],codomain:(e,n)=>{let i=n[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?e.domain(t):i},canonical:(e,n)=>(n=ke(e,n),n.length!==1?e._fn("Negate",n):e.neg(n[0])),simplify:(e,n)=>wt(e,n[0],"simplify"),evaluate:(e,n)=>wt(e,n[0],"evaluate"),N:(e,n)=>wt(e,n[0],"N"),sgn:(e,n)=>{let i=n[0].sgn;if(i!=null){if(i===0)return 0;if(i>0)return-1;if(i<0)return 1}}}},Power:{wikidata:"Q33456",commutative:!1,complexity:3500,signature:{domain:["FunctionOf","Numbers","Numbers","Numbers"],canonical:(e,n)=>(n=ke(e,n,2),n.length!==2?e._fn("Power",n):e.pow(n[0],n[1])),simplify:(e,n)=>Fi(e,n[0],n[1],"simplify"),evaluate:(e,n)=>Fi(e,n[0],n[1],"evaluate"),N:(e,n)=>e.numericMode==="machine"&&typeof n[0].numericValue=="number"&&typeof n[1].numericValue=="number"?e.number(Math.pow(n[0].numericValue,n[1].numericValue)):Fi(e,n[0],n[1],"N")}},Rational:{complexity:2400,signature:{domain:["FunctionOf","Numbers",["OptArg","Numbers"],"RationalNumbers"],canonical:(e,n)=>(n=De(xe(n)),n.length===0?e._fn("Rational",[e.error("missing")]):n.length===1?e._fn("Rational",[ye(e,n[0],"ExtendedRealNumbers")]):(n=Dt(e,n,["Integers","Integers"]),n.length!==2||!n[0].isValid||!n[1].isValid?e._fn("Rational",n):e.div(n[0],n[1]))),simplify:(e,n)=>{if(n.length===2)return eo(e,n[0],n[1])},evaluate:(e,n)=>{if(n.length===2){let[t,r]=[k(n[0]),k(n[1])];return t!==null&&r!==null?e.number([t,r]):void 0}let i=b(n[0].N());if(i!==null)return e.number(Ms(i))},N:(e,n)=>n.length===1?n[0]:yn(n[0],n[1],(i,t)=>i/t,(i,t)=>i.div(t),(i,t)=>i.div(t))}},Root:{complexity:3200,signature:{domain:["FunctionOf","Numbers","Numbers","Numbers"],canonical:(e,n)=>{n=ke(e,n,2);let[i,t]=n;return n.length!==2||!i.isValid||!t.isValid?e._fn("Root",n):e.pow(i,e.inv(t))}}},Round:{complexity:1250,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>A(n[0],Math.round,i=>i.round(),i=>i.round(0))}},Sign:{complexity:1200,signature:{domain:["FunctionOf","Numbers","Integers"],simplify:(e,n)=>{let i=n[0].sgn;if(i===0)return e.Zero;if(i===1)return e.One;if(i===-1)return e.NegativeOne},evaluate:(e,n)=>{let i=n[0].sgn;if(i===0)return e.Zero;if(i===1)return e.One;if(i===-1)return e.NegativeOne},N:(e,n)=>{let i=n[0].sgn;if(i===0)return e.Zero;if(i===1)return e.One;if(i===-1)return e.NegativeOne}}},Sqrt:{description:"Square Root",wikidata:"Q134237",complexity:3e3,signature:{domain:["FunctionOf","Numbers","Numbers"],canonical:(e,n)=>(n=De(xe(n)),n.length!==1?e._fn("Sqrt",n):e.pow(n[0],e.Half)),simplify:(e,n)=>Ri(e,n[0],"simplify"),evaluate:(e,n)=>Ri(e,n[0],"evaluate"),N:(e,n)=>Ri(e,n[0],"N")}},Square:{wikidata:"Q3075175",complexity:3100,signature:{domain:["FunctionOf","Numbers","Numbers"],canonical:(e,n)=>(n=De(xe(n)),n.length!==1?e._fn("Square",n):e.pow(n[0],e.number(2)))}},Subtract:{wikidata:"Q40754",complexity:1350,signature:{domain:["FunctionOf","Numbers",["OptArg","Numbers"],"Numbers"],canonical:(e,n)=>{if(n.length===1){let r=ye(e,n[0],"Numbers");if(r.isValid)return e.neg(r)}n=ke(e,n,2);let[i,t]=n;return n.length!==2||!i.isValid||!t.isValid?e._fn("Subtract",n):e.add([i,e.neg(t)])}}}},{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:e=>O(e)?e._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
|
+
return ${f};
|
|
18
|
+
})()`}function ai(){return`_${Math.random().toString(36).substring(2)}`}var P=class{constructor(n,i){this.engine=n,i?.latex!==void 0&&(this._latex=i.latex)}valueOf(){return this.symbol==="True"?!0:this.symbol==="False"?!1:this.head&&typeof this.head=="string"&&["List","Set","Sequence","Tuple","Pair","Single","Triple"].includes(this.head)?this.ops?.map(n=>n.valueOf()):y(this)??this.string??this.symbol??JSON.stringify(this.json)}toString(){if(this.symbol)return this.symbol;if(this.string)return this.string;let n=this.numericValue;if(n!==null){if(typeof n=="number")return n.toString();if(L(n))return`(${n[0].toString()}/${n[1].toString()})`;if(U(n))return`(${n[0].toString()}/${n[1].toString()})`;if(n instanceof Ws.Complex){let i=n.im===1?"":n.im===-1?"-":n.im.toString();return n.re===0?i+"i":n.im<0?`${n.re.toString()}${i}i`:`(${n.re.toString()}+${i}i)`}}return JSON.stringify(this.json)}[Symbol.toPrimitive](n){if(n==="number"){let i=this.valueOf();return typeof i=="number"?i:null}return this.toString()}toJSON(){return this.json}get rawJson(){return this.json}get scope(){return null}is(n){return n==null?!1:this.isSame(this.engine.box(n))}get latex(){return this._latex??this.engine.serialize(this)}set latex(n){this._latex=n}get symbol(){return null}get isNothing(){return!1}get string(){return null}getSubexpressions(n){return kt(this,n)}get subexpressions(){return this.getSubexpressions("")}get symbols(){let n=new Set;return wi(this,n),Array.from(n)}get unknowns(){let n=new Set;return Mi(this,n),Array.from(n)}get freeVariables(){let n=new Set;return Ci(this,n),Array.from(n)}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!0}get isConstant(){return!1}get canonical(){return this}subs(n,i){return i?.canonical?this.canonical:this}solve(n){return null}replace(n){return null}has(n){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}isLess(n){}isLessEqual(n){}isGreater(n){}isGreaterEqual(n){}get isPositive(){}get isNonNegative(){}get isNegative(){}get isNonPositive(){}isCompatible(n,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(n){return!1}bind(){}reset(){}get keys(){return null}get keysCount(){return 0}getKey(n){}hasKey(n){return!1}get value(){return this.N().valueOf()}set value(n){throw new Error(`Can't change the value of \\(${this.latex}\\)`)}get domain(){}set domain(n){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(n){return this}evaluate(n){return this.simplify()}N(n){return this.evaluate({numericMode:!0})}compile(n="javascript",i){if(n!=="javascript")return;i??(i={optimize:["simplify"]});let t=this;return i.optimize.includes("simplify")&&(t=t.simplify()),i.optimize.includes("evaluate")&&(t=t.evaluate()),Js(t)}};var fn=class e extends P{constructor(i,t,r){t instanceof e;super(i,r);if(typeof t=="string"){if(!On(t))throw Error(`Unknown domain literal "${t}"`);this.base=t,this.ctor=null,this.params=[];return}if(!Array.isArray(t))throw Error("Expected a domain expression");if(!oi.includes(t[0]))throw Error(`Unknown domain constructor "${t[0]}`);let o=t[0];if(this.ctor=o,o==="OptArg"||o==="VarArg")throw Error(`Unexpected domain constructor "${o}" outside of FunctionOf`);if(this.params=t.slice(1).map(s=>s instanceof P?s.json:s),o==="FunctionOf"&&(this.base="Functions",i.strict&&Ti(this)),o==="DictionaryOf"&&(this.base="Dictionaries"),o==="ListOf"&&(this.base="Lists"),o==="TupleOf"&&(this.base="Tuples"),o==="Covariant"||o==="Contravariant"||o==="Bivariant"||o==="Invariant"){let s=i.domain(t[1]);if(this.ctor=o,this.base=s.base,this.params=[s.json],t.length!==2)throw Error(`Invalid "${o}" in domain "${t}"`)}if(o==="Union"||o==="Intersection"){let s;if(o==="Union")for(let a of this.params)s=Nn(s,i.domain(a));else for(let a of this.params)s=qi(s,i.domain(a));this.base=s.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=he(JSON.stringify(this.json))),this._hash}isCompatible(i,t="covariant"){let r=this.json,o=i instanceof e?i.json:i,s=Array.isArray(o)?o[0]:null;if(s){let a=o[1];if(s==="Covariant")return me(r,a);if(s==="Contravariant")return me(a,r);if(s==="Invariant")return!me(a,r)&&!me(r,a);if(s==="Bivariant")return me(r,a)&&me(a,r)}return t==="covariant"?me(r,o):t==="contravariant"?me(o,r):t==="bivariant"?me(o,r)&&me(r,o):!me(o,r)&&!me(r,o)}isEqual(i){return i instanceof e?this===i?!0:this.isCompatible(i,"invariant"):!1}isSame(i){return this.isEqual(i)}match(i,t){return i instanceof e&&this.isCompatible(i,"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 We(e){if(e instanceof fn)return!0;if(e instanceof P&&(e=e.json),typeof e=="string")return On(e);if(!Array.isArray(e)||e.length<=1)return!1;let n=e[0];return typeof n!="string"||!oi.includes(n)?!1:n==="ListOf"||n==="OptArg"||n==="VarArg"?e.length===2&&We(e[1]):n==="FunctionOf"||n==="TupleOf"||n==="Intersection"||n==="Union"?e.slice(1).every(We):e.every(i=>i!==null)}function me(e,n){let[i,t]=Ft([e],n);return!!(i&&t.length===0)}function Ft(e,n){let i=e.shift(),t=typeof n=="string"?n:null;if(t==="Anything")return[!0,e];let r=typeof i=="string"?i:null;if(r&&t)return r===t?[!0,e]:[Oe(r).includes(t),e];if(t){let s=i[0];return s==="FunctionOf"?[t==="Functions",e]:s==="DictionaryOf"?[t==="Dictionaries",e]:s==="ListOf"?[t==="Lists",e]:s==="TupleOf"?[t==="Tuples",e]:[!0,e]}let o=n[0];if(o==="FunctionOf"){if(r==="Functions")return[!0,e];if(r)return[!1,e];if(i[0]!=="FunctionOf")return[!1,e];if(i.length===1&&n.length===1)return[!0,e];if(!me(i[i.length-1],n[n.length-1]))return[!1,e];let s=i.slice(1,-1),a=n.slice(1,-1);for(let u=0;u<=s.length-1;u++){if(a.length===0)return(Array.isArray(s[u])?s[u][0]:null)!=="OptArg"?[!1,e]:[!0,e];{let l=!1;if([l,a]=Ft(a,s[u]),!l)return[!1,e]}}return[a.length===0,e]}if(o==="Intersection")return[n.slice(1,-1).every(s=>me(i,s)),e];if(o==="Union")return[n.slice(1,-1).some(s=>me(i,s)),e];if(o==="OptArg")return r==="NothingDomain"?[!0,e]:Ft([i,...e],n[1]);if(o==="VarArg"){let s=n[1];if(!me(i,s))return[!1,e];i=e.shift();let a=!0;for(;e.length>0&&a;)[a,e]=Ft(e,s),i=e.shift();return[!0,e]}if(o==="TupleOf"){if(!Array.isArray(i)||i[0]!=="TupleOf")return[!1,e];if(i.length>n.length)return[!1,e];for(let s=1;s<=n.length-1;s++)if(!i[s]||!me(i[s],n[s]))return[!1,e];return[!0,e]}return console.error("Unexpected domain constructor "+o),[!1,e]}function Nn(e,n){if(e==null)return n;if(n==null)return e;let i=[e.base,...Oe(e.base)],t=[n.base,...Oe(n.base)];for(;!t.includes(i[0]);)i.shift();return e.engine.domain(i[0])}function qi(e,n){return e===void 0?n:n===void 0||me(e.base,n.base)?e:me(n.base,e.base)?n:e.engine.Void}function Ys(e,n){if(n.every(i=>i.isCanonical),n=n.filter(i=>i.numericValue===null||!i.isZero),n.length===0)return e.Zero;if(n.length===1&&!At(n[0]))return n[0];if(n.length===2){let i=0,t=0;if(t=y(n[0]),t!==null&&t!==0?i=wt(n[1]):(i=wt(n[0]),i!==0&&n[1].numericValue!==null&&(t=y(n[1]))),t!==null&&i!==null&&i!==0)return e.number(e.complex(t,i))}return n.length>1&&(n=Ct(e,n)),e._fn("Add",n)}function Qs(e,n){let i=null;for(let t of n){if(!t?.isNumeric)return null;i=Nn(i,t)}return i}function Rt(e,n){let i=new Li(e);for(let t of n){if(t=t.simplify(),t.isImaginary&&t.isInfinity)return e.ComplexInfinity;if(t.isNaN||t.symbol==="Undefined")return e.NaN;t.isZero||i.addTerm(t)}return i.asExpression("expression")}function Kl(e){let n=0;for(let i of e){let t=i.numericValue;if(typeof t=="number")n+=t;else return null}return n}function jr(e,n,i="evaluate"){if(i==="N"&&e.numericMode==="machine"){n=n.map(r=>r.N());let t=Kl(n);if(t!==null)return e.number(t)}for(let t of n){if(t.isImaginary&&t.isInfinity)return e.ComplexInfinity;if(t.isNaN||t.symbol==="Undefined")return e.NaN;t.isExact||(i="N")}return i==="N"?n=n.map(t=>t.N()):n=n.map(t=>t.evaluate()),new Li(e,n).asExpression(i==="N"?"numeric":"expression")}function Xs(e,n,i){e.pushScope(),n??(n=e.error("missing"));let t=Lt(i),r=t?e._fn("Sum",[n.canonical,t]):e._fn("Sum",[n.canonical]);return e.popScope(),r}function qt(e,n,i,t){let r=null;if(!i){let d=t==="simplify"?n.simplify():n.evaluate({numericMode:t==="N"});if(C(e)){let c=e.bignum(0);for(let p of Y(d)){let g=Ae(p);if(g===null){r=void 0;break}if(!g.isFinite()){c=g;break}c=c.add(g)}r===null&&(r=e.number(c))}else{let c=0;for(let p of Y(d)){let g=y(p);if(g===null){r=void 0;break}if(g===null||!Number.isFinite(g)){c=g;break}c+=g}r===null&&(r=e.number(c))}return r??void 0}let[o,s,a,u]=si(i);if(!o)return;let l=n;if(t=="simplify"&&(s>=a||a-s>=_t))return;let f=e.swapScope(l.scope);if(e.pushScope(),l.bind(),t==="simplify"){let d=[];for(let c=s;c<=a;c++)e.assign(o,c),d.push(l.simplify());r=e.add(d).simplify()}if(t==="evaluate"){let d=[];for(let c=s;c<=a;c++)e.assign(o,c),d.push(l.evaluate());r=e.add(d).evaluate()}if(t==="N"){if(r===null&&u)if(C(e)){let d=e.bignum(0);for(let c=s;c<=a;c++){e.assign(o,c);let p=Ae(l.N());if(p===null){r=void 0;break}if(!p.isFinite()){d=p;break}d=d.add(p)}r===null&&(r=e.number(d))}else{let d=e.numericMode,c=e.precision;e.numericMode="machine";let p=0;for(let g=s;g<=a;g++){e.assign(o,g);let b=y(l.N());if(b===null){r=void 0;break}if(!Number.isFinite(b)){p=b;break}p+=b}e.numericMode=d,e.precision=c,r===null&&(r=e.number(p))}else if(r===null){e.assign(o,1e3);let d=l.N();e.assign(o,999);let c=l.N(),p=y(e.div(d,c).N());if(p!==null&&Number.isFinite(p)&&Math.abs(p)>1)r=e.PositiveInfinity;else{let g=0,b=e.numericMode,_=e.precision;e.numericMode="machine";for(let M=s;M<=a;M++){e.assign(o,M);let $=y(l.N());if($===null){r=void 0;break}if(Math.abs($)<Number.EPSILON||!Number.isFinite($))break;g+=$}e.numericMode=b,e.precision=_,r===null&&(r=e.number(g))}}}return e.popScope(),e.swapScope(f),r??void 0}var Ks=le(ae());function ef(e,n){let i=e.numericValue;return i===null?null:(typeof i=="number"?i=-i:i instanceof E||i instanceof Ks.Complex?i=i.neg():Array.isArray(i)&&(i=ge(i)),e.engine.number(i,{metadata:n}))}function ne(e,n){if(e.head==="Negate")return e.op1;if(e.numericValue!==null)return ef(e,n);if(e.head==="Add"){let i=e.ops.map(t=>ne(t));return i=re(i,"Add"),e.engine.add(i,n)}return e.head==="Multiply"?nf(e.engine,e.ops):e.head==="Divide"?e.engine._fn("Divide",[ne(e.op1),e.op2]):(e.head,e.engine._fn("Negate",[e],n))}function nf(e,n){let i=[],t=!1;for(let r of n)!t&&r.head==="Negate"?(t=!0,i.push(r.op1)):i.push(r);if(t)return e.mul(i);i=[];for(let r of n)t||r.numericValue===null||!r.isInteger?i.push(r):(t=!0,i.push(ne(r)));if(t)return e.mul(i);i=[];for(let r of n)t||r.numericValue===null||!r.isNumber?i.push(r):(t=!0,i.push(ne(r)));return t?e.mul(i):e._fn("Negate",[e._fn("Multiply",n)])}function Vt(e,n,i="simplify"){return ne(n)}function Ye(e,n){if(e.head==="Negate"&&n.head==="Negate")return Ye(e.op1,n.op1);if(e.head==="Negate")return ne(Ye(e.op1,n));if(n.head==="Negate")return ne(Ye(e,n.op1));let i=e.engine;if(e.head==="Divide"&&n.head==="Divide"){let t=i.mul([e.op2,n.op2]);return i.div(Ye(e.op1,n.op1),t)}return e.head==="Divide"?i.div(Ye(e.op1,n),e.op2):n.head==="Divide"?i.div(Ye(e,n.op1),n.op2):e.head==="Add"?i.add(e.ops.map(t=>Ye(t,n))):n.head==="Add"?i.add(n.ops.map(t=>Ye(e,t))):i.mul([e,n])}function ui(e){return e.length===1?e[0]:e.length===2?Ye(e[0],e[1]):Ye(e[0],ui(e.slice(1)))}var Vi=[[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 tf(e,n){for(;e>=Vi.length;){let i=Vi.length,t=[1],r=Vi[i-1];for(let o=1;o<i;o++)t[o]=r[o-1]+r[o];t[i]=1,Vi.push(t)}return Vi[e][n]}function rf(e){let n=e.reduce((t,r)=>t+r,0),i=1;for(let t=0;t<e.length;t+=1)i*=tf(n,e[t]),n-=e[t];return i}function*ea(e,n){if(e===1){yield[n];return}for(let i=0;i<=n;i+=1)for(let t of ea(e-1,n-i))yield[i,...t]}function na(e){if(e.head!=="Power")return null;let n=w(e.op2);if(n===null||n<0)return null;if(n===0)return e.engine.One;if(n===1)return e.op1;let i=e.engine;if(e.op1.head==="Negate"){let s=n%2===0?1:-1,a=na(i.pow(e.op1.op1,e.op2));return a===null?null:s>0?a:i.neg(a)}if(e.op1.head,e.op1.head!=="Add")return null;let t=e.op1.ops,r=ea(t.length,n),o=[];for(let s of r){let a=[i.number(rf(s))];for(let u=0;u<s.length;u+=1)s[u]!==0&&(s[u]===1?a.push(t[u]):a.push(i.pow(t[u],s[u])));o.push(i.mul(a))}return i.add(o)}function of(e){if(e.head!=="Divide")return null;let n=dn(e.op1);if(n===null)return null;let i=e.engine;return n.head==="Add"?i.add(n.ops.map(t=>i.div(t,e.op2))):e.engine.div(n,e.op2)}function dn(e){if(!e)return null;let n=of(e);if(n!==null||e.head==="Multiply"&&(n=ui(e.ops),n!==null))return n;if(e.head==="Add"){let i=e.ops.map(t=>dn(t)??t);return Rt(e.engine,i)}return e.head==="Negate"&&(n=dn(e.op1),n!==null)?e.engine.neg(n):e.head==="Power"&&(n=na(e),n!==null)?n:null}var sf=[[["Multiply","_x","_a"],0],[["Add","_a","_x"],["Negate","_a"]],[["Add",["Negate","_x"],"_a"],"_a"],[["Add",["Multiply","_x","_a"],"_b"],["Divide",["Negate","_b"],"_a"]],[["Add",["Multiply",["Power","_x",2],"_a"],["Multiply","_x","_b"],"_c"],["Divide",["Add",["Negate","_b"],["Sqrt",["Subtract",["Square","_b"],["Multiply",4,"_a","_c"]]]],["Multiply",2,"_a"]]],[["Add",["Multiply",["Power","_x",2],"_a"],["Multiply","_x","_b"],"_c"],["Divide",["Subtract",["Negate","_b"],["Sqrt",["Subtract",["Square","_b"],["Multiply",4,"_a","_c"]]]],["Multiply",2,"_a"]]],[["Add",["Multiply",["Power","_x",2],"_a"],["Multiply","_x","_b"]],0],[["Add",["Multiply",["Power","_x",2],"_a"],["Multiply","_x","_b"]],["Divide",["Negate","_b"],"_a"]],[["Add",["Multiply",["Power","_x",2],"_a"],"_b"],["Sqrt",["Divide",["Negate","_b"],"_a"]]],[["Add",["Multiply",["Power","_x",2],"_a"],"_b"],["Negate",["Sqrt",["Divide",["Negate","_b"],"_a"]]]]];function $t(e,n){let i=e.engine;e.head==="Equal"&&(e=i.add([e.op1.canonical,i.neg(e.op2.canonical)]).simplify());let t=i.cache("univariate-roots-rules",()=>ii(i,sf)),r=Vr(e.subs({[n]:"_x"},{canonical:!1}),t,{_x:i.symbol("_x")});if(r.length===0){let o=dn(e.canonical);if(o===null)return[];r=Vr(o.subs({[n]:"_x"},{canonical:!1}),t,{_x:i.symbol("_x")})}return r.map(o=>o.canonical.evaluate())}function ia(e){return e.head==="Element"?lf(e):e.head==="Equal"?af(e):cf(e)?uf(e):"not-a-predicate"}function af(e){e.head;let n=e.unknowns;if(n.length===0){let r=e.evaluate();return r.symbol==="True"?"tautology":r.symbol==="False"?"contradiction":(e.canonical.evaluate(),"not-a-predicate")}let i=e.engine,t=e.op1.symbol;if(t&&!df(i,t)&&!e.op2.has(t)){let r=e.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(n.length===1){let r=n[0],o=$t(e,r);o.length===0&&i.assumptions.set(i.fn("Equal",[i.add([e.op1.canonical,i.neg(e.op2.canonical)]).simplify(),0]),!0);let s=o.length===1?o[0]:i.fn("List",o),a=i.lookupSymbol(r);return a?a.domain&&!o.every(u=>!u.domain||s.domain?.isCompatible(u.domain))?"contradiction":(a.value=s,"ok"):(i.defineSymbol(r,{value:s,domain:s.domain}),"ok")}return i.assumptions.set(e,!0),"ok"}function uf(e){let n=e.engine;if(e.op1.symbol&&!Hr(n,e.op1.symbol))return e.op2.evaluate().isZero?e.head==="Less"?n.defineSymbol(e.op1.symbol,{domain:n.domain("NegativeNumbers")}):e.head==="LessEqual"?n.defineSymbol(e.op1.symbol,{domain:n.domain("NonPositiveNumbers")}):e.head==="Greater"?n.defineSymbol(e.op1.symbol,{domain:n.domain("PositiveNumbers")}):e.head==="GreaterEqual"&&n.defineSymbol(e.op1.symbol,{domain:n.domain("NonNegativeNumbers")}):(n.defineSymbol(e.op1.symbol,{domain:n.domain("ExtendedRealNumbers")}),n.assumptions.set(e,!0)),"ok";let i="",t,r;if(e.head==="Less"?(t=e.op1,r=e.op2,i="<"):e.head==="LessEqual"?(t=e.op1,r=e.op2,i="<="):e.head==="Greater"?(t=e.op2,r=e.op1,i="<"):e.head==="GreaterEqual"&&(t=e.op2,r=e.op1,i="<="),!i)return"internal-error";let o=n.add([t.canonical,n.neg(r.canonical)]).simplify(),s=n.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&&(n.lookupSymbol(a[0])||n.defineSymbol(a[0],{domain:"ExtendedRealNumbers"})),s.head==="Less"||s.head,n.assumptions.set(s,!0),"ok")}function lf(e){e.head;let n=e.engine,i=ff(e.op1);if(i.length===1){let r=n.domain(e.op2.evaluate().json);return r.isValid?(n.declare(i[0],r),"ok"):"not-a-predicate"}if(e.op1.symbol&&Hr(n,e.op1.symbol)){let r=n.domain(e.op2.evaluate().json);if(!r.isValid)return"not-a-predicate";n.context?.ids?.has(e.op1.symbol)||n.declare(e.op1.symbol,r);let o=n.lookupSymbol(e.op1.symbol);if(o)return o.domain&&!r.isCompatible(o.domain)?"contradiction":(o.domain=r,"ok");let s=n.lookupFunction(e.op1.symbol);return s?r.isCompatible(Tt(n,s.signature))?"ok":"contradiction":"not-a-predicate"}if(i.length>0)return n.assumptions.set(e,!0),"ok";let t=e.evaluate();return t.symbol==="True"?"tautology":t.symbol==="False"?"contradiction":"not-a-predicate"}function Hr(e,n){return(e.lookupSymbol(n)??e.lookupFunction(n))!==void 0}function ff(e){return e.symbols.filter(n=>!Hr(e.engine,n))}function df(e,n){return e.lookupFunction(n)?!1:e.lookupSymbol(n)?.value!==void 0}function cf(e){let n=e.head;return typeof n!="string"?!1:["Less","Greater","LessEqual","GreaterEqual"].includes(n)}var Gt=le(ae());var Kr=le(ae());function Zr(e,n){for(e.isInteger()&&n.isInteger();!n.isZero();)[e,n]=[n,e.modulo(n)];return e.abs()}function ra(e,n){return e.mul(n).div(Zr(e,n))}function Jr(e,n){if(!n.isInteger()||n.isNegative())return e._BIGNUM_NAN;if(n.lessThan(10))return e.bignum([1,1,2,6,24,120,720,5040,40320,362880,3628800][n.toNumber()]);if(n.gt(Number.MAX_SAFE_INTEGER)){let o=e._BIGNUM_ONE,s=e._BIGNUM_TWO;for(;s.lessThan(n);)o=o.mul(s),s=s.add(1);return o}if(n.modulo(2).eq(1))return n.times(Jr(e,n.minus(1)));let i=n.toNumber(),t=n,r=n;for(;i>2;)i-=2,t=t.add(i),r=r.mul(t);return r}function oa(e,n){if(!n.isInteger()||n.isNegative())return e._BIGNUM_NAN;if(n.lessThan(1))return e._BIGNUM_ONE;let i=n;for(;n.greaterThan(2);)n=n.minus(2),i=i.mul(n);return i}var ta=7;function Wr(e,n){if(n.isNegative())return e._BIGNUM_NAN;let i=e.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=>e.bignum(s))),t=i[0];for(let s=i.length-1;s>0;--s)t=t.add(i[s].div(n.add(s)));let r=e.cache("gamma-g-ln",()=>e.bignum(607).div(128)),o=n.add(r).add(e._BIGNUM_HALF);return e._BIGNUM_NEGATIVE_ONE.acos().mul(e._BIGNUM_TWO).log().mul(e._BIGNUM_HALF).add(o.log().mul(n.add(e._BIGNUM_HALF)).minus(o).add(t.log()).minus(n.log()))}function Yr(e,n){if(n.lessThan(e._BIGNUM_HALF)){let o=e._BIGNUM_NEGATIVE_ONE.acos();return o.div(o.mul(n).sin().mul(Yr(e,e._BIGNUM_ONE.sub(n))))}if(n.greaterThan(100))return Wr(e,n).exp();n=n.sub(1);let i=e.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=>e.bignum(o))),t=i[0];for(let o=1;o<ta+2;o++)t=t.add(i[o].div(n.add(o)));let r=n.add(ta).add(e._BIGNUM_HALF);return e._BIGNUM_NEGATIVE_ONE.acos().times(e._BIGNUM_TWO).sqrt().mul(t.mul(r.neg().exp()).mul(r.pow(n.add(e._BIGNUM_HALF))))}function zt(e){return e.isFinite()?e.d.length>3||e.d.length===3&&e.d[0]>=90?!1:(e.precision()<=16,e.e<308&&e.e>-306):!0}var Xr=le(ae());var je=class{constructor(n,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=n,this._sign=1,this._rational=C(n)?[BigInt(1),BigInt(1)]:[1,1],this._complex=Xr.Complex.ONE,this._bignum=n._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&&ie(this._rational)&&this._complex.re===1&&this._complex.im===0&&this._bignum.eq(this.engine._BIGNUM_ONE)&&this._number===1:this._terms.length===0}addTerm(n){if(n.isCanonical,n.head==="Multiply"){for(let o of n.ops)this.addTerm(o);return}if(this._isCanonical){if(n.isNothing)return;if(n.numericValue!==null){if(n.isOne)return;if(n.isZero){this._hasZero=!0;return}if(n.isNegativeOne){this._sign*=-1;return}if(n.isInfinity){this._hasInfinity=!0,n.isNegative&&(this._sign*=-1);return}let o=n.numericValue;if(typeof o=="number"){o<0&&(this._sign*=-1,o=-o),Number.isInteger(o)?this._rational=te(this._rational,[o,1]):C(this.engine)?this._bignum=this._bignum.mul(o):this._number*=o;return}if(o instanceof E){o.isNegative()&&(this._sign*=-1,o=o.neg()),o.isInteger()?this._rational=te(this._rational,[T(o),BigInt(1)]):C(this.engine)?this._bignum=this._bignum.mul(o):this._number*=o.toNumber();return}if(o instanceof Xr.Complex){this._complex=this._complex.mul(o);return}if(V(o)){this._rational=te(this._rational,o),Rr(this._rational)&&(this._sign*=-1,this._rational=ge(this._rational));return}}}let i=n;if(this._isCanonical){let o;[o,i]=Ge(n),this._rational=te(this._rational,o),Rr(this._rational)&&(this._sign*=-1,this._rational=ge(this._rational))}if(i.numericValue!==null&&i.isOne)return;let t=[1,1];if(i.head==="Power"){let o=Z(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=Mn(o.exponent,t),r=!0;break}r||this._terms.push({term:i,exponent:t})}unitTerms(n){let i=this.engine;if(n==="numeric"){if(!W(i)&&this._complex.im!==0)return null;if(C(i)){let u=i._BIGNUM_ONE;if(ie(this._rational)||(U(this._rational)?u=i.bignum(this._rational[0].toString()).div(i.bignum(this._rational[1].toString())):u=i.bignum(this._rational[0]).div(this._rational[1])),u=u.mul(this._bignum).mul(this._sign*this._number),this._complex.im!==0){let l=this._complex.mul(u.toNumber());return l.equals(1)?[]:[{exponent:[1,1],terms:[i.number(l)]}]}return u=u.mul(this._complex.re),u.equals(1)?[]:[{exponent:[1,1],terms:[i.number(u)]}]}let a=1;if(ie(this._rational)||(U(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 u=this._complex.mul(a);return u.equals(1)?[]:[{exponent:[1,1],terms:[i.number(u)]}]}return a*=this._complex.re,a===1?[]:[{exponent:[1,1],terms:[i.number(a)]}]}let t=[],r=[];this._hasInfinity&&r.push(i.PositiveInfinity),this._rational=un(this._rational),(this._complex.re!==1||this._complex.im!==0)&&(this._complex.im===0&&(this._number*=Math.abs(this._complex.re)),this._complex.re<0?this._rational=ge(this._rational):r.push(i.number(this._complex)));let o=this._sign*this._number,s=this._bignum;return ie(this._rational)||(n==="rational"?(ve(this._rational)!==1&&(U(this._rational)?s=s.mul(i.bignum(this._rational[0])):o*=this._rational[0]),we(this._rational)!==1&&t.push({exponent:[-1,1],terms:[i.number(this._rational[1])]})):o===-1?(r.push(i.number(ge(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(n){n??(n={}),"mode"in n||(n.mode="expression");let i=this.engine;if(n.mode==="numeric"){if(this._complex.im!==0&&!W(i))return null;if(this._hasInfinity)return[{exponent:[1,1],terms:[i.PositiveInfinity]}]}let t=this.unitTerms(n.mode??"expression");if(t===null)return null;for(let r of this._terms){let o=un(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(n="evaluate"){let i=this.engine;if(this._hasInfinity){if(this._hasZero)return i.NaN;if(this._terms.length===0)return ve(this._rational)>0?i.PositiveInfinity:i.NegativeInfinity}if(this._hasZero)return i.Zero;let t=this.groupedByDegrees({mode:n==="N"?"numeric":"expression"});if(t===null)return i.NaN;let r=Qr(i,t);return r.length===0?i.One:r.length===1?r[0]:this.engine._fn("Multiply",r)}asNumeratorDenominator(){let n=this.groupedByDegrees({mode:"rational"});if(n===null)return[this.engine.NaN,this.engine.NaN];let i=[],t=[];for(let l of n)l.exponent[0]>=0?i.push(l):t.push({exponent:ge(l.exponent),terms:l.terms});let r=this.engine,o=Qr(r,i),s=r.One;o.length===1?s=o[0]:o.length>0&&(s=r._fn("Multiply",o));let a=Qr(r,t),u=r.One;return a.length===1?u=a[0]:a.length>0&&(u=r._fn("Multiply",a)),[s,u]}asRationalExpression(){let[n,i]=this.asNumeratorDenominator();if(i.numericValue!==null){if(i.isOne)return n;if(i.isNegativeOne)return this.engine.neg(n)}return this.engine._fn("Divide",[n,i])}};function sa(e){if(ie(e))return 0;let[n,i]=[ve(e),we(e)];return n>0&&Number.isInteger(n/i)?1:n>0?2:Number.isInteger(n/i)?3:4}function mf(e,n){let i=sa(e.exponent),t=sa(n.exponent);if(i!==t)return i-t;let[r,o]=[ve(e.exponent),we(e.exponent)],[s,a]=[ve(n.exponent),we(n.exponent)];return r/o-s/a}function Qr(e,n){let i=n.sort(mf).map(t=>{let r=re(t.terms,"Multiply"),o=r.length<=1?r[0]:e._fn("Multiply",r.sort(An));return e.pow(o,t.exponent)});return re(i,"Multiply")??i}function aa(e,n,i,t){if(n.numericValue!==null){if(V(n.numericValue))return ve(n.numericValue)<0?A(e,"Subtract",[i,e.number(ge(n.numericValue))],t):null;let r=w(n);if(r!==null&&r<0)return A(e,"Subtract",[i,e.number(-r)],t)}return n.head==="Negate"?A(e,"Subtract",[i,n.op1],t):null}function la(e,n,i,t){let r=e.jsonSerializationOptions.exclude;if(n==="Add"&&i.length===2&&!r.includes("Subtract")){let o=aa(e,i[0],i[1],t)??aa(e,i[1],i[0],t);if(o)return o}if(n==="Divide"&&i.length===2&&r.includes("Divide"))return A(e,"Multiply",[i[0],e._fn("Power",[i[1],e.NegativeOne])],t);if(n==="Multiply"&&!r.includes("Negate")&&y(i[0])===-1)return i.length===2?A(e,"Negate",[i[1]]):A(e,"Negate",[e._fn("Multiply",i.slice(1))],t);if(n==="Multiply"&&!r.includes("Divide")){let o=new je(e,i,{canonical:!1}).asRationalExpression();if(o.head==="Divide")return A(e,o.head,o.ops,t)}if(n==="Power"){if(!r.includes("Exp")&&i[0]?.symbol==="ExponentialE")return A(e,"Exp",[i[1]],t);if(i[1]?.numericValue!==null){let o=w(i[1]);if(o===2&&!r.includes("Square"))return A(e,"Square",[i[0]],t);if(o!==null&&o<0&&!r.includes("Divide"))return A(e,"Divide",[e.One,o===-1?i[0]:e.pow(i[0],-o)],t);let s=i[1].numericValue;if(!r.includes("Sqrt")&&s===.5)return A(e,"Sqrt",[i[0]],t);if(!r.includes("Sqrt")&&s===-.5)return A(e,"Divide",[e.One,e._fn("Sqrt",[i[0]])],t);if(V(s)){let a=ve(s),u=we(s);if(a===1){if(!r.includes("Sqrt")&&u===2)return A(e,"Sqrt",[i[0]],t);if(!r.includes("Root"))return A(e,"Root",[i[0],e.number(s[1])],t)}if(a===-1){if(!r.includes("Sqrt")&&u===2)return A(e,"Divide",[e.One,e._fn("Sqrt",[i[0]])],t);if(!r.includes("Root"))return A(e,"Divide",[e.One,e._fn("Root",[i[0],e.number(s[1])])],t)}}}}return A(e,n,i,t)}function A(e,n,i,t){let r=e.jsonSerializationOptions.exclude;if((n==="Rational"||n==="Divide")&&i.length===2&&w(i[0])===1&&w(i[1])===2&&!r.includes("Half"))return $i(e,"Half",{...t,wikidata:"Q39373172"});if(i.length===1){let u=i[0]?.numericValue;if(n==="Negate"&&u!==null){if(typeof u=="number")return Pn(e,-u);if(u instanceof E||u instanceof Kr.Complex)return Pn(e,u.neg());if(V(u))return Pn(e,ge(u))}}if(typeof n=="string"&&r.includes(n)){if(n==="Rational"&&i.length===2)return A(e,"Divide",i,t);if(n==="Complex"&&i.length===2)return A(e,"Add",[i[0],e._fn("Multiply",[i[1]??e.symbol("Undefined"),e.I])],t);if(n==="Sqrt"&&i.length===1)return A(e,"Power",[i[0],r.includes("Half")?e.number([1,2]):e.Half],t);if(n==="Root"&&i.length===2&&i[1]?.numericValue!==null){let u=w(i[1]);if(u===2)return A(e,"Sqrt",[i[0]]);if(u!==null)return u<0?A(e,"Divide",[e.One,e._fn("Power",[i[0]??e.symbol("Undefined"),e.number([1,-u])])],t):A(e,"Power",[i[0],e.number([1,-u])],t)}if(n==="Square"&&i.length===1)return A(e,"Power",[i[0],e.number(2)],t);if(n==="Exp"&&i.length===1)return A(e,"Power",[e.E,i[0]],t);if(n==="Subtract"&&i.length===2)return A(e,"Add",[i[0],e._fn("Negate",[i[1]??e.symbol("Undefined")])],t);if(n==="Subtract"&&i.length===1)return A(e,"Negate",i,t)}if(n==="Add"&&i.length===2&&!r.includes("Subtract")){if(i[1]?.numericValue!==null){let u=w(i[1]);if(u!==null&&u<0)return A(e,"Subtract",[i[0],e.number(-u)],t)}if(i[1]?.head==="Negate")return A(e,"Subtract",[i[0],i[1].op1],t)}if(n==="Tuple"){if(i.length===1&&!r.includes("Single"))return A(e,"Single",i,t);if(i.length===2&&!r.includes("Pair"))return A(e,"Pair",i,t);if(i.length===3&&!r.includes("Triple"))return A(e,"Triple",i,t)}let s=[typeof n=="string"?n:n.json,...i.map(u=>u?.json??"Undefined")],a={...t??{}};return e.jsonSerializationOptions.metadata.includes("latex")?a.latex=a.latex??e.serialize({fn:s}):a.latex="",e.jsonSerializationOptions.metadata.includes("wikidata")||(a.wikidata=""),!a.latex&&!a.wikidata&&e.jsonSerializationOptions.shorthands.includes("function")?s:a.latex&&a.wikidata?{fn:s,latex:a.latex,wikidata:a.wikidata}:a.latex?{fn:s,latex:a.latex}:a.wikidata?{fn:s,wikidata:a.wikidata}:{fn:s}}function fa(e,n){return n=n,e.jsonSerializationOptions.shorthands.includes("string")?`'${n}'`:{str:n}}function $i(e,n,i){if(n==="Half"&&e.jsonSerializationOptions.exclude.includes("Half"))return Pn(e,[1,2],i);if(i={...i},e.jsonSerializationOptions.metadata.includes("latex")?(i.latex=i.latex??e.serialize({sym:n}),i.latex!==void 0&&(i.latex=i.latex)):i.latex=void 0,e.jsonSerializationOptions.metadata.includes("wikidata")){if(i.wikidata===void 0){let t=e.lookupSymbol(n)?.wikidata;t!==void 0&&(i.wikidata=t)}}else i.wikidata=void 0;return n=n,i.latex===void 0&&i.wikidata===void 0&&e.jsonSerializationOptions.shorthands.includes("symbol")?n:i.latex!==void 0&&i.wikidata!==void 0?{sym:n,latex:i.latex,wikidata:i.wikidata}:i.latex!==void 0?{sym:n,latex:i.latex}:i.wikidata!==void 0?{sym:n,wikidata:i.wikidata}:{sym:n}}function Pn(e,n,i){i={...i},e.jsonSerializationOptions.metadata.includes("latex")||(i.latex=void 0);let t=i.latex===void 0&&i.wikidata===void 0&&!e.jsonSerializationOptions.metadata.includes("latex")&&e.jsonSerializationOptions.shorthands.includes("number"),r=e.jsonSerializationOptions.exclude,o="";if(n instanceof E){if(n.isNaN())o="NaN";else if(!n.isFinite())o=n.isPositive()?"+Infinity":"-Infinity";else{if(t&&zt(n))return n.toNumber();if(n.isInteger()&&n.e<n.precision()+4)o=n.toFixed(0);else{let s=e.jsonSerializationOptions.precision,a=s==="max"?n.toString():n.toPrecision(s==="auto"?e.precision:s);if(o=ua(e,a),t){let u=n.toNumber();if(u.toString()===o)return u}}}return e.jsonSerializationOptions.metadata.includes("latex")&&(i.latex=i.latex??e.serialize({num:o})),i.latex!==void 0?{num:o,latex:i.latex}:t?o:{num:o}}if(n instanceof Kr.Complex)return n.isInfinite()?$i(e,"ComplexInfinity",i):n.isNaN()?(o="NaN",e.jsonSerializationOptions.metadata.includes("latex")&&(i.latex=i.latex??e.serialize({num:o})),i.latex!==void 0?{num:o,latex:i.latex}:{num:o}):A(e,"Complex",[e.number(n.re),e.number(n.im)],{...i,wikidata:"Q11567"});if(V(n)){let s=!r.includes("Rational");return t&&e.jsonSerializationOptions.shorthands.includes("function")&&L(n)?n[0]===1&&n[1]===2&&!r.includes("Half")?$i(e,"Half",i):[s?"Rational":"Divide",n[0],n[1]]:A(e,s?"Rational":"Divide",[e.number(n[0]),e.number(n[1])],{...i})}if(Number.isNaN(n))o="NaN";else if(!Number.isFinite(n))o=n>0?"+Infinity":"-Infinity";else{if(t)return n;o=ua(e,n.toString())}return e.jsonSerializationOptions.metadata.includes("latex")&&(i.latex=i.latex??e.serialize({num:o})),i.latex!==void 0?{num:o,latex:i.latex}:{num:o}}function ua(e,n){if(!e.jsonSerializationOptions.repeatingDecimals)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,u="";for(let l=0;l<r.length-a;l++){u=r.substring(0,l);for(let f=0;f<=a;f++){let d=r.substring(l,l+f+1),c=Math.floor((r.length-u.length)/d.length);if(c<3)break;if((u+d.repeat(c+1)).startsWith(r))return d==="0"?s==="0"?t+"."+u+(o??""):n:t+"."+u+"("+d+")"+(o??"")}}for(r+=s;r.endsWith("0");)r=r.slice(0,-1);return o?`${t}.${r}${o.toLowerCase()}`:`${t}.${r}`}var li=class e 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=he("Dictionary");for(let[t,r]of this._value)i^=he(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(){if(this.engine.jsonSerializationOptions.shorthands.includes("dictionary")){let t={};for(let r of this._value.keys())t[r]=this._value.get(r).json;return{dict:t}}let i=[];for(let t of this._value.keys())i.push(this.engine._fn("KeyValuePair",[this.engine.string(t),this._value.get(t)]));return A(this.engine,"Dictionary",i,{latex:this._latex})}isSame(i){if(this===i)return!0;if(!(i instanceof e)||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(!(i instanceof e)||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 u=s.match(a);if(u===null)return null;r={...r,...u}}return r}isEqual(i){if(this===i)return!0;if(!(i instanceof e)||!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 e(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),u=a.replace(i,t);u!==null&&(r+=1),o[s]=u??a}return r===0?null:new e(this.engine,o)}subs(i,t){let r={};for(let o of this.keys)r[o]=this.getKey(o).subs(i,t);return new e(this.engine,r,t)}};var ma=le(ae());var da=[];function eo(e){if(e.head==="N"&&typeof e.op1.head=="string"){let o={D:"ND",Integrate:"NIntegrate"}[e.op1.head];o&&(e=e.engine._fn(o,e.op1.ops))}if(e.head==="Function")return e;let n=e.unknowns;n.includes("_")&&(e=e.subs({_:"_1"}),n=e.unknowns);let i=0;for(let o of n)if(o.startsWith("_")){let s=Number(o.slice(1));s>i&&(i=s)}let t=e.engine;return t._fn("Function",[e,...Array.from({length:i},(o,s)=>t.symbol(`_${s+1}`))])}function no(e){let n=e.engine,i=e.symbol?n.lookupFunction(e.symbol):void 0;if(i){let a=i.signature.N??i.signature.evaluate;return a?u=>a(n,u)??n._fn(e,u):u=>n._fn(e,u)}let t=eo(e);if(!t)return;t.head;let r=t.ops.slice(1).map(a=>a.symbol??"Nothing");n.pushScope();for(let a of r)n.declare(a,{inferred:!0,domain:void 0});let o=t.op1.canonical;o.bind(),n.popScope();let s=o.scope;return r.length===0?()=>{let a=n.swapScope(s);n.resetContext();let u=o.N()??o.evaluate();return n.swapScope(a),u}:a=>{if(n.strict&&(a=_e(n,a,r.length),!a.every(d=>d.isValid)))return;a=a.map(d=>d.evaluate());let u=n.swapScope(s);n.resetContext();let l=0;for(let d of r)n.assign(d,a[l++]);let f=o.N()??o.evaluate();if(n.swapScope(u),!!f.isValid)return f}}function Ln(e,n){return no(e)?.(n)??e.engine._fn(e,n)}function Fn(e){return no(e)??(n=>e.engine._fn(e.N(),n).N())}function io(e){let n=e.engine,i=no(e);return i?t=>i([n.number(t)])?.value??NaN:t=>n._fn(e.evaluate(),[n.number(t)]).value}function to(e){let n=e.match(/(.+)\((.*)\)/);if(!n)return[e,void 0];let i=n[1],t=n[2].split(",").map(r=>r.trim());return[i,t]}var xe=class e extends P{constructor(i,t,r,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^he(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=qi(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(){this._numericValue=void 0}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 this.isValid&&this._canonical===this?la(this.engine,this._head,this._ops,{latex:this._latex,wikidata:this.wikidata}):A(this.engine,this._head,this._ops,{latex:this._latex,wikidata:this.wikidata})}get rawJson(){return[typeof this._head=="string"?this._head:this._head.rawJson,...this.ops.map(t=>t.rawJson)]}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?Ut(this.engine,this._head,this._ops):this),this._canonical}*map(i){let t=0;for(;t<this._ops.length;)yield i(this._ops[t++])}subs(i,t){t=t?{...t}:{},"canonical"in t||(t.canonical=!0);let r=this._ops.map(o=>o.subs(i,t));return t.canonical&&r.every(o=>o.isValid)?Ut(this.engine,this._head,r):new e(this.engine,this._head,r,{canonical:!1})}replace(i,t){return Mt(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 e)||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){if(!(i instanceof e))return null;let r={};if(typeof this.head=="string"){if(this.head!==i.head)return null}else{if(typeof i.head=="string")return null;{if(!i.head)return null;let a=this.head.match(i.head,t);if(a===null)return null;r={...r,...a}}}let o=this._ops,s=i._ops;for(let a=0;a<o.length;a++){let u=o[a].match(s[a],t);if(u===null)return null;r={...r,...u}}return r}get complexity(){if(this.isCanonical)return this.functionDefinition?.complexity??Je}get baseDefinition(){return this.functionDefinition}get functionDefinition(){return this._def}isEqual(i){if(this===i)return!0;let t=Cn(this,i);return t===0?!0:t!==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=dn(this),r!==null))return r=r.simplify({...i,recursive:!1}),zi(this,r);let o=this.functionDefinition,s=t?ca(this._ops,o?.hold??"none",o?.associative?o.name:"",f=>f.simplify(i)):this._ops;if(typeof this._head!="string"){let f=Ln(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=zi(this.engine.fn(this._head,s),r):r=this.engine.fn(this._head,s),r=zi(this,r);let a=i?.rules??this.engine.cache("standard-simplification-rules",()=>ii(this.engine,da),f=>{for(let[d,c,p,g]of f)d.reset(),c.reset();return f}),u=0,l=!1;do{let f=r.replace(a);f!==null?(r=zi(r,f),r===f&&(l=!0)):l=!0,u+=1}while(!l&&u<this.engine.iterationLimit);return zi(this,r)}evaluate(i){if(!this.isValid)return this;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=>ce(a))){let a=Math.max(...this._ops.map(l=>l.functionDefinition?.size?.(l)??0)),u=[];for(let l=0;l<=a-1;l++){let f=this._ops.map(d=>ce(d)?Gs(d,l%a+1)??this.engine.Nothing:d);u.push(this.engine._fn(this.head,f).evaluate(i))}return u.length===0?this.engine.box(["Sequence"]):u.length===1?u[0]:this.engine._fn("List",u)}let r=ca(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=Ln(this._head,r));let s=t?.signature;if(!o&&s){let a=i?.numericMode??!1,u=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(u)}if(o){let a=o.numericValue;a!==null&&(!W(this.engine)&&a instanceof ma.Complex?o=this.engine.NaN:!C(this.engine)&&a instanceof E&&(o=this.engine.number(a.toNumber())),this.isPure&&(this._numericValue=o))}return o??this.engine.fn(this._head,r)}N(i){return this.evaluate({...i,numericMode:!0})}solve(i){return i.length!==1?null:$t(this.simplify(),i[0])}};function pf(e,n,i,t){let r=[];if(n==="Add"||n==="Multiply")r=Te(e,e.canonical(i),{flatten:n});else if(n==="Negate"||n==="Square"||n==="Sqrt"||n==="Exp"||n==="Ln")r=Te(e,e.canonical(i),1);else if(n==="Divide"||n==="Power")r=Te(e,e.canonical(i),2);else return null;if(!r.every(o=>o.isValid))return e._fn(n,r,t);if(n==="Add")return e.add(r,t);if(n==="Negate")return e.neg(r[0],t);if(n==="Multiply")return e.mul(r,t);if(n==="Divide")return e.div(r[0],r[1],t);if(n==="Exp")return e.pow(e.E,r[0],t);if(n==="Power")return e.pow(r[0],r[1],t);if(n==="Square")return e.pow(r[0],2,t);if(n==="Sqrt"){let o=r[0].canonical;return V(o.numericValue)?e._fn("Sqrt",[o],t):e.pow(o,e.Half,t)}return n==="Ln"?e._fn("Ln",r,t):null}function Ut(e,n,i,t){if(typeof n!="string"&&(e.pushScope(),n=n.evaluate().symbol??n,e.popScope()),typeof n=="string"){let u=pf(e,n,i,t);if(u)return u}else if(!n.isValid)return new xe(e,n,i.map(u=>e.box(u,{canonical:!1})),{metadata:t,canonical:!1});let r=e.lookupFunction(n);if(!r)return new xe(e,n,Ne(i.map(u=>e.box(u))),{metadata:t,canonical:!0});let o=[];for(let u=0;u<i.length;u++)if(!ln(r.hold,i.length-1,u))o.push(e.box(i[u]));else{let l=e.box(i[u],{canonical:!1});l.head==="ReleaseHold"?o.push(l.op1.canonical):o.push(l)}let s=r.signature;if(s.canonical){try{let u=s.canonical(e,o);if(u)return u}catch(u){console.error(u)}return new xe(e,n,o,{metadata:t,canonical:!1})}o=Ne(o),r.associative&&(o=re(o,n));let a=Zs(e,o,r.hold,r.threadable,s.params,s.optParams,s.restParam);if(a)return e._fn(n,a,t);if(o.length===1&&o[0].head===n){if(r.involution)return o[0].op1;r.idempotent&&(o=o[0].ops)}return o.length>1&&r.commutative===!0&&(o=o.sort(An)),e._fn(n,o,t)}function ca(e,n,i,t){if(e.length===0)return[];if(e=re(e,i),n==="all")return e;if(n==="none"){let o=[];for(let s of e){let a=s.head;if(a==="Hold")o.push(s);else{let u=a==="ReleaseHold"?s.op1:s;if(u){let l=t(u);l!==null&&o.push(l)}}}return re(o,i)}let r=[];for(let o=0;o<e.length;o++)if(e[o].head==="Hold")r.push(e[o]);else{let s;if(e[o].head==="ReleaseHold"?s=e[o].op1:ln(n,e.length-1,o)?r.push(e[o]):s=e[o],s){let a=t(s);a!==null&&r.push(a)}}return re(r,i)}function zi(e,n){if(n==null||e===n)return e;let i=e.engine,t=i.box(n);return i.costFunction(t)<=1.2*i.costFunction(e)?t:e}var ke=le(ae());var gf=0x3ffffffffffe5;function vn(e){if(!Number.isInteger(e)||!Number.isFinite(e)||Number.isNaN(e)||e<=1)return!1;if(e<=Ms)return Pr.has(e);for(let n of Pr)if(e%n===0)return!1;return e>=gf?xf(e,30)?void 0:!1:e===hf(e)}function hf(e){if(e===1)return 1;if(e%2===0)return 2;if(e%3===0)return 3;if(e%5===0)return 5;let n=Math.floor(Math.sqrt(e)),i=7;for(;i<=n;){if(e%i===0)return i;if(e%(i+4)===0)return i+4;if(e%(i+6)===0)return i+6;if(e%(i+10)===0)return i+10;if(e%(i+12)===0)return i+12;if(e%(i+16)===0)return i+16;if(e%(i+22)===0)return i+22;if(e%(i+24)===0)return i+24;i+=30}return e}function xf(e,n){let i=0,t=e-1;for(;t%2===0;)t/=2,++i;e:do{let r=Math.pow(2+Math.floor(Math.random()*(e-3)),t)%e;if(!(r===1||r===e-1)){for(let o=i-1;o--;){if(r=r*r%e,r===1)return!1;if(r===e-1)continue e}return!1}}while(--n);return!0}var ue=class e extends P{constructor(i,t,r){super(i,r?.metadata);if(typeof t=="number"){this._value=t,this._isCanonical=!0;return}if(V(t)){let[o,s]=t;typeof o!="number"||Number.isInteger(o)&&Number.isInteger(s),!(typeof o=="bigint"&&typeof s=="bigint")||s!==o&&BigInt(1),r?.canonical??!0?(this._value=ro(i,t),this._isCanonical=!0):(this._value=t,this._isCanonical=!1)}else!(t instanceof ke.Complex)||!Number.isNaN(t.re)&&!Number.isNaN(t.im)&&i.chop(t.im),this._value=ro(i,t),this._isCanonical=!0}get hash(){if(this._hash!==void 0)return this._hash;let i=0;return typeof this._value=="number"?i=he(this._value.toString()):this._value instanceof ke.Complex?i=he(this._value.re.toString()+" +i "+this._value.im.toString()):this._value instanceof E?i=he(this._value.toString()):i=he(this._value[0].toString()+" / "+this._value[1].toString()),this._hash=i,i}get head(){return"Number"}get isPure(){return!0}get isExact(){return typeof this._value=="number"?Number.isInteger(this._value):this._value instanceof E?this._value.isInteger():this._value instanceof ke.Complex?Number.isInteger(this._value.re)&&Number.isInteger(this._value.im):V(this._value)}get isCanonical(){return this._isCanonical}set isCanonical(i){this._isCanonical=i}get complexity(){return 1}get numericValue(){return this._value}get domain(){return this._domain??(this._domain=this.engine.domain(Vs(this._value))),this._domain}get json(){return Pn(this.engine,this._value,{latex:this._latex})}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 E)return this._value.isZero()?0:this._value.isNegative()?-1:this._value.isPositive()?1:null;if(Array.isArray(this._value)){let[i,t]=this._value;return i===0&&t!==0?0:i<0?-1:i>0?1:null}return null}isSame(i){if(this===i)return!0;if(!(i instanceof e))return!1;if(typeof this._value=="number")return typeof i._value!="number"?!1:this._value===i._value;if(this._value instanceof E)return i._value instanceof E?this._value.eq(i._value):!1;if(Array.isArray(this._value)){if(!Array.isArray(i._value))return!1;let[t,r]=i._value;return this._value[0]===t&&this._value[1]===r}return this._value instanceof ke.Complex&&i._value instanceof ke.Complex?this._value.equals(i._value):!1}isEqual(i){return this===i||Cn(this,i)===0}match(i,t){return this.isEqualWithTolerance(i,t?.numericTolerance??0)?{}:null}isEqualWithTolerance(i,t){return i instanceof e&&Cn(this,i,t)===0}isLess(i){let t=Cn(this,i);if(t!==void 0)return t<0}isLessEqual(i){let t=Cn(this,i);if(t!==void 0)return t<=0}isGreater(i){return i.isLessEqual(this)}isGreaterEqual(i){return i.isLess(this)}get isPositive(){if(typeof this._value=="number")return this._value>0;let i=this.sgn;if(i!=null)return i>0}get isNonNegative(){if(typeof this._value=="number")return this._value>=0;let i=this.sgn;if(i!=null)return i>=0}get isNegative(){if(typeof this._value=="number")return this._value<0;let i=this.sgn;if(i!=null)return i<0}get isNonPositive(){if(typeof this._value=="number")return this._value<=0;let i=this.sgn;if(i!=null)return i<=0}get isZero(){return this._value===0?!0:this._value instanceof E?this._value.isZero():this._value instanceof ke.Complex?this._value.isZero():!1}get isNotZero(){return this._value===0?!1:this._value instanceof E?!this._value.isZero():this._value instanceof ke.Complex?!this._value.isZero():!0}get isOne(){return this._value===1?!0:typeof this._value=="number"?!1:this._value instanceof E?this._value.equals(this.engine._BIGNUM_ONE):this._value instanceof ke.Complex?this._value.im===0&&this._value.re===1:ie(this._value)}get isNegativeOne(){return this._value===-1?!0:typeof this._value=="number"?!1:this._value instanceof E?this._value.equals(this.engine._BIGNUM_NEGATIVE_ONE):this._value instanceof ke.Complex?this._value.im===0&&this._value.re===-1:Dt(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 E)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 E)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 vn(this._value);if(this._value instanceof E)return vn(this._value.toNumber())}get isComposite(){if(!this.isInteger||!this.isFinite||this.isNonPositive||this.isOne||this.isZero)return!1;if(typeof this._value=="number")return!vn(this._value);if(this._value instanceof E)return!vn(this._value.toNumber())}get isInfinity(){return typeof this._value=="number"?!Number.isFinite(this._value)&&!Number.isNaN(this._value):this._value instanceof E?!this._value.isFinite()&&!this._value.isNaN():this._value instanceof ke.Complex?!this._value.isFinite()&&!this._value.isNaN():!1}get isNaN(){return typeof this._value=="number"?Number.isNaN(this._value):this._value instanceof E?this._value.isNaN():this._value instanceof ke.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 E?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 ke.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 ke.Complex?(this._value.im,!0):!1}get isExtendedComplex(){return this.isInfinity||!this.isNaN}get canonical(){return this._isCanonical?this:this.engine.number(ro(this.engine,this._value))}simplify(i){return this.canonical}evaluate(i){return i?.numericMode?this.N(i):this}N(i){if(!Array.isArray(this._value))return this;let t=this.engine,[r,o]=this._value;return typeof r=="number"&&typeof o=="number"&&!C(t)?t.number(r/o):t.number(t.bignum(r).div(t.bignum(o)))}};function ro(e,n){if(n instanceof E&&zt(n))return n.toNumber();if(!V(n))return n;if(n=un(n),U(n)){let[r,o]=n;if(r>Number.MIN_SAFE_INTEGER&&r<Number.MAX_SAFE_INTEGER&&o>Number.MIN_SAFE_INTEGER&&o<Number.MAX_SAFE_INTEGER)n=[Number(r),Number(o)];else return o<0&&([r,o]=[-r,-o]),o===BigInt(1)?e.bignum(r):o===BigInt(0)?r===o?NaN:r<0?-1/0:1/0:[r,o]}let[i,t]=n;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])}var Qe=class e extends P{constructor(i,t,r){super(i,r);this._string=t.normalize(),i._register(this)}get hash(){return he("String"+this._string)}get json(){return fa(this.engine,this._string)}get head(){return"String"}get isPure(){return!0}get isCanonical(){return!0}set isCanonical(i){}get domain(){return this.engine.Strings}get complexity(){return 19}get string(){return this._string}isEqual(i){return i.string===this._string}isSame(i){return i.string===this._string}match(i,t){return i instanceof e&&this._string===i._string?{}:null}};function jt(e,n,i){if(typeof n=="number"||n instanceof E)return new ue(e,n,i);if(i=i?{...i}:{},"canonical"in i||(i.canonical=!0),Array.isArray(n)&&n.length===2&&n[0]instanceof E&&n[1]instanceof E){if(!n[0].isInteger()||!n[1].isInteger())throw new Error("Array argument to `boxNumber()` should be two integers");n=[T(n[0].toString()),T(n[1].toString())]}if(V(n)){if(n.length!==2)throw new Error("Array argument to `boxNumber()` should be two integers or two bignums");let[r,o]=n;if(typeof r=="bigint"&&typeof o=="bigint")return r===o?o===BigInt(0)?e.NaN:e.One:r===BigInt(0)?e.Zero:o===BigInt(1)?e.number(r,i):o===BigInt(-1)?e.number(-r,i):r===BigInt(1)&&o===BigInt(2)?e.Half:new ue(e,[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(!Number.isInteger(r)||!Number.isInteger(o))throw new Error("Array argument to `boxNumber()` should be two integers");return o===r?o===0?e.NaN:e.One:r===0?e.Zero:o===1?e.number(r,i):o===-1?e.number(-r,i):r===1&&o===2?e.Half:new ue(e,[r,o],i)}if(n instanceof Gt.Complex)return n.isNaN()?e.NaN:n.isZero()?e.Zero:n.isInfinite()?e.ComplexInfinity:e.chop(n.im)===0?e.number(n.re,i):new ue(e,n,i);let t="";if(typeof n=="string")t=n;else if(typeof n=="object"&&"num"in n){if(typeof n.num=="number")return e.number(n.num,i);if(typeof n.num!="string")throw new Error("MathJSON `num` property should be a string of digits");t=n.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 e.NaN;if(t==="infinity"||t==="+infinity")return e.PositiveInfinity;if(t==="-infinity")return e.NegativeInfinity;if(t==="0")return e.Zero;if(t==="1")return e.One;if(t==="-1")return e.NegativeOne;if(/\([0-9]+\)/.test(t)){let[r,o,s,a]=t.match(/(.+)\(([0-9]+)\)(.+)?$/)??[];t=o+s.repeat(Math.ceil(e.precision/s.length))+(a??"")}return jt(e,e.bignum(t),i)}return null}function oo(e,n,i){if(n===null)return e.error("missing");if(typeof n=="object"&&n instanceof P)return n;if(n=H(n),typeof n=="string")return Se(e,n,i);if(Array.isArray(n)){let t=n.map(r=>oo(e,r,i));return new xe(e,t[0],t.slice(1))}if(typeof n=="object"){if("dict"in n)return new li(e,n.dict);if("fn"in n)return oo(e,n.fn,i);if("str"in n)return new Qe(e,n.str);if("sym"in n)return Se(e,n.sym,i);if("num"in n)return Se(e,n.num,i)}return Se(e,n,i)}function Ui(e,n,i,t){if(n==="Hold")return new xe(e,"Hold",[oo(e,i[0],t)],{...t,canonical:!0});if(n==="Error"||n==="ErrorCode")return e._fn(n,i.map(r=>e.box(r,{canonical:!1})),t.metadata);if(n==="Domain")return e.domain(i[0],t.metadata);if(n==="Number"&&i.length===1)return Se(e,i[0],t);if(n==="String")return i.length===0?new Qe(e,"",t.metadata):new Qe(e,i.map(r=>pa(r)??"").join(""),t.metadata);if(n==="Symbol"&&i.length>0)return e.symbol(i.map(r=>pa(r)??"").join(""),t);if(t.canonical&&(n==="Divide"||n==="Rational")&&i.length===2){if(i[0]instanceof P&&i[1]instanceof P){if(e.numericMode==="machine"){let[s,a]=[y(i[0]),y(i[1])];if(s!==null&&Number.isInteger(s)&&a!==null&&Number.isInteger(a))return e.number([s,a],t)}let[r,o]=[Ai(i[0]),Ai(i[1])];if(r!==null&&o!==null)return e.number([r,o],t)}else{let[r,o]=[qr(e,i[0]),qr(e,i[1])];if(r!==null&&o!==null)return e.number([r,o],t)}n="Divide"}if(t.canonical&&n==="Complex"){if(i.length===1){let r=Se(e,i[0],t),o=y(r);return o!==null&&o!==0?e.number(e.complex(0,o),t):e.mul([r,e.I])}if(i.length===2){let r=Se(e,i[0],t),o=Se(e,i[1],t),s=y(r),a=y(o);return a!==null&&s!==null?a===0&&s===0?e.Zero:a!==null&&a!==0?e.number(e.complex(s,a),t):r:e.add([r,e.mul([o,e.I])],t.metadata)}}if(t.canonical&&n==="Negate"&&i.length===1){let r=i[0];if(typeof r=="number")return e.number(-r,t);if(r instanceof E)return e.number(r.neg(),t);let o=e.box(r,t).numericValue;if(o!==null){if(typeof o=="number")return e.number(-o,t);if(o instanceof E)return e.number(o.neg(),t);if(o instanceof Gt.Complex)return e.number(o.neg());if(V(o))return e.number(ge(o))}}if(n==="Dictionary"){let r={};for(let o of i){let s=e.box(o),a=s.head;if(a==="KeyValuePair"||a==="Pair"||a==="Tuple"&&s.nops===2){let u=s.op1;if(u.isValid&&!u.isNothing){let l=s.op2,f=u.symbol??u.string;if(!f&&(u.numericValue!==null||u.string)){let d=typeof u.numericValue=="number"?u.numericValue:w(u);d&&Number.isFinite(d)&&Number.isInteger(d)&&(f=d.toString())}f&&(r[f]=l)}}}return new li(e,r,t)}return t.canonical?Ut(e,n,i,t.metadata):new xe(e,n,i.map(r=>Se(e,r,{canonical:!1})),t)}function Se(e,n,i){if(n==null)return e._fn("Sequence",[]);if(i=i?{...i}:{},"canonical"in i||(i.canonical=!0),n instanceof P)return i.canonical?n.canonical:n;if(Array.isArray(n)){if(L(n))return Number.isInteger(n[0])&&Number.isInteger(n[1])?e.number(n):Ui(e,"Divide",n,i);if(U(n))return e.number(n);if(typeof n[0]=="string")return Ui(e,n[0],n.slice(1),i);let t=n.slice(1).map(o=>Se(e,o,i)),r=Se(e,n[0],{...i,canonical:!1});return new xe(e,r,t)}if(typeof n=="number"||n instanceof Gt.Complex||n instanceof E)return e.number(n);if(typeof n=="string")return n.startsWith("'")&&n.endsWith("'")?new Qe(e,n.slice(1,-1)):/^[+-]?[0-9]/.test(n)?e.number(n):On(n)?e.domain(n):de(n)?e.symbol(n,i):e.error("invalid-identifier",{str:n});if(typeof n=="object"){let t={latex:n.latex,wikidata:n.wikidata};if("dict"in n)return new li(e,n.dict,{canonical:!0,metadata:t});if("fn"in n)return typeof n.fn[0]=="string"?Ui(e,n.fn[0],n.fn.slice(1),i):new xe(e,Se(e,n.fn[0],i),n.fn.slice(1).map(r=>Se(e,r,i)),{metadata:t});if("str"in n)return new Qe(e,n.str,t);if("sym"in n)return e.symbol(n.sym,i);if("num"in n)return e.number(n,i)}return e.symbol("Undefined")}function pa(e){if(typeof e=="string")return e;if(e instanceof P)return e.string??e.symbol??e.toString();if(typeof e=="object"){if("str"in e)return e.str;if("fn"in e&&e.fn[0]==="String"&&typeof e.fn[1]=="string")return e.fn[1]}return Array.isArray(e)&&e[0]==="String"&&typeof e[1]=="string"?e[1]:null}var co=le(ae());var fi=le(ae());function so(e,n,i,t){if(i.symbol==="ComplexInfinity")return e.NaN;if(i.isZero)return e.One;if(i.isOne)return n;if(i.isNegativeOne)return e.inv(n);if(i.numericValue!==null&&n.numericValue!==null){let r=y(n);if(r===1)return e.One;if(r===0){if(i.isPositive)return e.Zero;if(i.isNegative)return e.ComplexInfinity}if(i.isNegativeOne)return e.inv(n);let o=y(i);if(o===.5||o===-.5){let s=w(n);if(s!==null&&s>0){let[a,u]=on(s,2);return u===1&&a===1?e.One:a!==1?u===1?e.number(o>=0?a:[1,a]):e.mul([e.number(a),e._fn("Sqrt",[e.number(u)])]):o>0?e._fn("Sqrt",[n],t):e.inv(e._fn("Sqrt",[n]),t)}return o>0?e._fn("Power",[n,e.Half],t):e._fn("Power",[n,e.number([-1,2])],t)}if(n.isInfinity){if(i.numericValue instanceof fi.Complex){let s=i.numericValue.re;if(s===0)return e.NaN;if(s<0)return e.Zero;if(s>0)return e.ComplexInfinity}if(n.isNegative){if(i.isInfinity)return e.NaN}else if(n.isPositive){if(i.isNegativeOne)return e.Zero;if(i.isInfinity)return i.isNegative?e.Zero:e.PositiveInfinity}}if(i.isInfinity&&(n.isOne||n.isNegativeOne))return e.NaN}if(n.head==="Power"&&n.op1.isReal){let r=w(i);if(r!==null){let o=w(n.op2);if(o!==null)return e.pow(n.op1,e.number(r*o))}if(n.op1.isNonNegative){let o=Z(i);if(o){let s=Z(n.op2);if(s)return e.pow(n.op1,e.number(te(o,s)))}}}return n.head==="Multiply"&&w(i)!==null?e._fn("Multiply",n.ops.map(o=>e.pow(o,i))):e._fn("Power",[n,i],t)}function ao(e,n){let i=n.numericValue;if(typeof i=="number")return e.number(i*i);if(i instanceof E||i instanceof fi.Complex)return e.number(i.pow(2));if(L(i))return e.number([i[1]*i[1],i[0]*i[0]]);if(U(i))return e.number([i[1]*i[1],i[0]*i[0]]);if(n.head==="Multiply")return e._fn("Multiply",n.ops.map(t=>ao(e,t)));if(n.head==="Power"){let t=w(n.op2);return t!==null?e.pow(n.op1,e.number(t*2)):e.pow(n.op1,e.mul([e.number(2),n.op2]))}return e.pow(n,e.number(2))}function ga(e,n,i){if(n.numericValue===null||i.numericValue===null)return;if(n.numericValue instanceof fi.Complex)return i.numericValue instanceof fi.Complex?e.number(n.numericValue.pow(i.numericValue)):e.number(n.numericValue.pow(y(i)??NaN));if(i.numericValue instanceof fi.Complex){let s=y(n)??null;return s!==null?e.number(e.complex(s).pow(i.numericValue)):void 0}let t=bf(i);if(C(e)||n.numericValue instanceof E||i.numericValue instanceof E){let s=Ae(n),a=Ae(i);if(!s||!a)return;if(t===2)return s.isNeg()?W(e)?e.number(e.complex(0,s.neg().sqrt().toNumber())):e.NaN:e.number(s.sqrt());if(!a.isInteger()&&s.isNeg()){if(!W(e))return e.NaN;let u=e.complex(s.toNumber()),l=e.complex(a.toNumber());return e.number(u.pow(l))}return e.number(s.pow(a))}let r=y(i)??NaN,o=y(n)??NaN;if(t===2)return o<0?W(e)?e.mul([e.I,e.number(Math.sqrt(-o))]):e.NaN:e.number(Math.sqrt(o));if(!Number.isInteger(r)&&o<0){if(!W(e))return e.NaN;let s=e.complex(o),a=e.complex(r);return e.number(s.pow(a))}return e.number(Math.pow(o,r))}function Gi(e,n,i,t){if(n.head==="Multiply"){let r=C(e)?[BigInt(1),BigInt(1)]:[1,1],o=[];for(let s of n.ops){let a=Z(s);a?r=te(r,a):o.push(s)}if(!ie(r))return e.mul([ji(e,e.number(r),t)??e.One,e.pow(Gi(e,e.mul(o),i,t)??e.mul(o),i)])}if(n.head==="Power"){if(w(n.op2)===-1&&w(i)===-1)return n.op1;let r=Z(n.op2),o=Z(i);if(r&&o){let s=te(r,o);return e.pow(n.op1,s)}if(t==="N"){let s=y(n.op2),a=y(i);if(s!==null&&a!==null){let u=s*a;return u===0?e.One:u===1?n.op1:e.pow(n.op1,u)}}}if(t!=="N"&&n.numericValue!==null&&n.isInteger){if(w(i))return ga(e,n,i);let o=Z(i);if(o){let[s,a]=[ve(o),we(o)];if((s===1||s===-1)&&(a===2||a===3)){if(C(e)||n.numericValue instanceof E){let u=Ai(n);if(a%2===0&&u<0&&!W(e))return e.NaN;let l=u<0?a%2===0?e.I:e.NegativeOne:e.One,[f,d]=Bt(u>0?u:-u,a);if(d===BigInt(1)&&f===BigInt(1))return l;if(f!==BigInt(1))return d===BigInt(1)?e.mul([l,e.number(s>=0?f:[BigInt(1),f])]):e.mul([l,e.number(f),e.pow(e.number(d),i)])}else if(typeof n.numericValue=="number"){if(n.numericValue<0&&a%2===0&&!W(e))return e.NaN;let[u,l]=on(Math.abs(n.numericValue),a),f=n.numericValue<0?a%2===0?e.I:e.NegativeOne:e.One;if(l===1&&u===1)return f;if(u!==1)return l===1?e.mul([f,e.number(s>=0?u:[1,u])]):e.mul([f,e.number(u),e.pow(e.number(l),i)])}}return n.isNegative?W?e.mul([e.I,e.fn("Sqrt",[e.neg(n)])]):e.NaN:void 0}}if(t!=="simplify"&&n.numericValue!==null&&i.numericValue!==null)return ga(e,n,i)}function ji(e,n,i){if(n.isOne)return e.One;if(n.isZero)return e.Zero;if(n.isNegativeOne)return W(e)?e.I:e.NaN;if(n.isNegative&&!W(e))return e.NaN;let t=Z(n);if(i==="N"||i==="evaluate"&&!t)return O(n,o=>o<0?e.complex(o).sqrt():Math.sqrt(o),o=>o.isNeg()?e.complex(o.toNumber()).sqrt():o.sqrt(),o=>o.sqrt());let r=w(n);if(r!==null){let[o,s]=on(Math.abs(r),2);return r<0?(s===1&&e.mul([e.number(e.complex(0,o))]),e.mul([e.number(e.complex(0,o)),e.sqrt(e.number(s))])):s===1?e.number(o):e.mul([e.number(o),e.sqrt(e.number(s))])}if(t){if(L(t)&&!C(e)){let[o,s]=t;if(Math.abs(o)<Number.MAX_SAFE_INTEGER&&s<Number.MAX_SAFE_INTEGER){let[a,u]=on(Math.abs(o),2),[l,f]=on(s,2);return o<0?e.mul([e.number([a,l]),e.sqrt(e.number([u,f])),e.I]):e.mul([e.number([a,l]),e.sqrt(e.number([u,f]))])}}if(U(t)||C(e)){let o=T(t[0]),[s,a]=Bt(o>0?o:-o,2),[u,l]=Bt(T(t[1]),2);return o<0?e.mul([e.number([s,u]),e.sqrt(e.number([a,l])),e.I]):e.mul([e.number([s,u]),e.sqrt(e.number([a,l]))])}}}function bf(e){if(typeof e.numericValue=="number"){let t=1/e.numericValue;return Number.isInteger(t)?t:null}if(e.numericValue instanceof E){let t=e.engine._BIGNUM_ONE.div(e.numericValue);return t.isInt()?t.toNumber():null}if(!V(e.numericValue))return null;let[n,i]=[ve(e.numericValue),we(e.numericValue)];return n!==1&&n!==-1?null:n*i}function ha(e,n){if(n.every(t=>t.isCanonical),n.length===0)return e.One;if(n.length===1)return n[0];if(n.length===2)return ba(n[0],n[1]);let i=new je(e);for(let t of n){if(t.isNaN||t.symbol==="Undefined")return e.NaN;i.addTerm(t)}return i.asExpression()}function xa(e,n){n.every(t=>t.head!=="Multiply");let i=new je(e);for(let t of n){if(t=t.simplify(),t.isNaN||t.symbol==="Undefined")return e.NaN;i.addTerm(t)}return i.asExpression()}function uo(e,n,i="evaluate"){if(n.length>1,i==="N"&&(n=n.map(t=>t.N()),(e.numericMode==="machine"||e.numericMode==="auto")&&n.every(t=>typeof t.numericValue=="number"))){let t=1;for(let r of n)t*=r.numericValue;return e.number(t)}for(let t of n){if(t.isNaN||t.symbol==="Undefined")return e.NaN;t.isExact||(i="N")}return n.every(t=>t.head!=="Multiply"),i==="N"?n=n.map(t=>t.N()):n=n.map(t=>t.evaluate()),new je(e,n).asExpression(i)}function ba(e,n,i){e.isCanonical,n.isCanonical;let t=e.engine;if(e.symbol==="ImaginaryUnit"){let u=y(n);if(u!==null)return t.number(t.complex(0,u))}if(n.symbol==="ImaginaryUnit"){let u=y(e);if(u!==null)return t.number(t.complex(0,u))}if(e.numericValue!==null&&n.numericValue!==null){let u=y(e),l=y(n);if(u!==null&&t.isComplex(n))return t.number(t.complex(u*n.re,u*n.im));if(l!==null&&t.isComplex(e))return t.number(t.complex(l*e.re,l*e.im))}if(e.numericValue!==null&&n.numericValue!==null&&e.isInteger&&n.isInteger)return En(e,n,(u,l)=>u*l,(u,l)=>u.mul(l))??t.NaN;if(e.isNaN||n.isNaN||e.symbol==="Undefined"||n.symbol==="Undefined")return t.NaN;if(e.isNothing)return n;if(n.isNothing)return e;if(e.numericValue!==null){if(e.isOne)return n;if(e.isNegativeOne)return ne(n)}if(n.numericValue!==null){if(n.isOne)return e;if(n.isNegativeOne)return ne(e)}let r=1,[o,s]=e.numericValue!==null?[e,n]:[n,e];if(o.head,o.head==="Negate"&&(o=o.op1,r=-r),s.numericValue!==null){let u=Z(s);if(u){if(ie(u))return o;if(De(u))return t.Zero;if(o.head==="Add")return r<0&&(s=ne(s)),t.add(o.ops.map(f=>ba(s,f)),i);let l=Z(o);if(l){let f=te(u,l);return t.number(r<0?ge(f):f,{metadata:i})}return r<0?t._fn("Multiply",[ne(s),o],i):t._fn("Multiply",[s,o],i)}}if(s.hash===o.hash&&s.isSame(o))return ao(t,s);let a=new je(t,[s,o]);return r>0?a.asExpression():ne(a.asExpression(),i)}function ya(e,n,i){e.pushScope(),n??(n=e.error("missing"));let t=Lt(i),r=t?e._fn("Product",[n.canonical,t]):e._fn("Product",[n.canonical]);return e.popScope(),r}function Ht(e,n,i,t){let r=null,o=t==="simplify"?n.simplify():n.evaluate({numericMode:t==="N"});if(!i){if(C(e)){let c=e.bignum(1);for(let p of Y(o)){let g=Ae(p);if(g===null){r=void 0;break}if(!g.isFinite()){c=g;break}c=c.mul(g)}r===null&&(r=e.number(c))}else{let c=1;for(let p of Y(o)){let g=y(p);if(g===null){r=void 0;break}if(g===null||!Number.isFinite(g)){c=g;break}c*=g}r===null&&(r=e.number(c))}return r??void 0}let[s,a,u,l]=si(i);if(!s)return;let f=n;if(t!=="N"&&(a>=u||u-a>=_t))return;let d=e.swapScope(f.scope);if(e.pushScope(),f.bind(),t==="simplify"){let c=[];for(let p=a;p<=u;p++)e.assign({[s]:p}),c.push(f.simplify());r=e.mul(c).simplify()}if(t==="evaluate"){let c=[];for(let p=a;p<=u;p++)e.assign({[s]:p}),c.push(f.evaluate());r=e.mul(c).evaluate()}if(t==="N"){if(r===null&&l){if(C(e)){let b=e.bignum(1);for(let _=a;_<=u;_++){e.assign({[s]:_});let M=Ae(f.N());if(M===null||!M.isFinite()){r=M!==null?e.number(M):void 0;break}b=b.mul(M)}r===null&&(r=e.number(b))}let c=1,p=e.numericMode,g=e.precision;e.numericMode="machine";for(let b=a;b<=u;b++){e.assign({[s]:b});let _=y(f.N());if(_===null||!Number.isFinite(_)){r=_!==null?e.number(_):void 0;break}c*=_}e.numericMode=p,e.precision=g,r===null&&(r=e.number(c))}if(r===null){e.assign({[s]:1e3});let c=f.N();e.assign({[s]:999});let p=f.N(),g=y(e.div(c,p).N());if(g!==null&&Number.isFinite(g)&&Math.abs(g)>1)r=e.PositiveInfinity;else{let b=1,_=e.numericMode,M=e.precision;e.numericMode="machine";for(let $=a;$<=u;$++){e.assign({[s]:$});let F=y(f.N());if(F===null){r=void 0;break}if(Math.abs(1-F)<Number.EPSILON||!Number.isFinite(F))break;b*=F}r===null&&(r=e.number(b)),e.numericMode=_,e.precision=M}}}return e.popScope(),e.swapScope(d),r??void 0}function cn(e,n,i){if(!n.isValid||!i.isValid)return e._fn("Divide",[n,i]);if(n.head==="Negate"&&i.head==="Negate"&&(n=n.op1,i=i.op1),n.numericValue!==null&&i.numericValue!==null){if(i.isOne)return n;if(i.isNegativeOne)return e.neg(n);if(n.isOne)return e.inv(i);if(n.isNegativeOne)return e.neg(e.inv(i));let p=Z(n),g=Z(i);if(p&&g&&!De(g))return e.number(te(p,an(g)))}if(n.head==="Divide"&&i.head==="Divide")return cn(e,e.mul([n.op1,i.op2]),e.mul([n.op2,i.op1]));if(n.head==="Divide")return cn(e,e.mul([n.op1,i]),n.op2);if(i.head==="Divide")return cn(e,e.mul([n,i.op2]),i.op1);let t=n.numericValue;if(t!==null){if(L(t)){let[p,g]=t;return cn(e,e.number(p),e.mul([e.number(g),i]))}if(U(t)){let[p,g]=t;return cn(e,e.number(p),e.mul([e.number(g),i]))}}let r=i.numericValue;if(r!==null){if(L(r)){let[p,g]=r;return cn(e,e.mul([n,e.number(g)]),e.number(p))}if(U(r)){let[p,g]=r;return cn(e,e.mul([n,e.number(g)]),e.number(p))}}let[o,s]=Ge(n),[a,u]=Ge(i);if(!ie(o)||!ie(a)){let[p,g]=te(o,an(a)),b=e.mul([e.number(p),s]);if(b.isZero)return e.Zero;let _=e.mul([e.number(g),u]);return _.isOne?b:e._fn("Divide",[b,_])}let[l,f]=Ur(n),[d,c]=Ur(i);return f=f.canonical,c=c.canonical,c.numericValue!==null&&c.isOne?l*d<0?ne(f):f:l*d>0?e._fn("Divide",[f,c]):f.numericValue?e._fn("Divide",[ne(f),c]):ne(e._fn("Divide",[f,c]))}function lo(e,n,i){if(n.numericValue!==null&&i.numericValue!==null){let t=Z(n),r=Z(i);if(t&&r&&!De(r))return e.number(te(t,an(r)))}return new je(e,[n,e.inv(i)]).asRationalExpression()}var Na=[{Abs:{wikidata:"Q3317982",threadable:!0,idempotent:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","NonNegativeNumbers"],simplify:(e,n)=>fo(e,n[0],"simplify"),evaluate:(e,n)=>fo(e,n[0],"evaluate"),N:(e,n)=>fo(e,n[0],"N")}},Add:{wikidata:"Q32043",associative:!0,commutative:!0,threadable:!0,idempotent:!0,complexity:1300,hold:"all",signature:{domain:"NumericFunctions",result:(e,n)=>Qs(e,n.map(i=>i.domain)),simplify:(e,n)=>Rt(e,n),evaluate:(e,n)=>jr(e,n),N:(e,n)=>jr(e,n,"N")}},Ceil:{description:"Rounds a number up to the next largest integer",complexity:1250,threadable:!0,signature:{domain:["FunctionOf","Numbers","Integers"],evaluate:(e,n)=>O(n[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:(e,n)=>O(n[0],i=>e.chop(i),i=>e.chop(i),i=>e.chop(i))}},Divide:{wikidata:"Q1226939",complexity:2500,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers","Numbers"],canonical:(e,n)=>{n=Te(e,n,2);let[i,t]=n;return n.length!==2?e._fn("Divide",n):e.div(i,t)},simplify:(e,n)=>lo(e,n[0],n[1]),evaluate:(e,n)=>En(n[0],n[1],(i,t)=>i/t,(i,t)=>i.div(t),(i,t)=>i.div(t))}},Exp:{wikidata:"Q168698",threadable:!0,complexity:3500,signature:{domain:["FunctionOf","Numbers","Numbers"],canonical:(e,n)=>(n=Te(e,n,1),n.length!==1?e._fn("Power",[e.E,...n]):e.pow(e.E,n[0]))}},Factorial:{description:"Factorial Function",wikidata:"Q120976",threadable:!0,complexity:9e3,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=w(n[0]);if(i!==null&&i>=0)return C(e)?e.number(Jr(e,e.bignum(i))):e.number(It(i));let t=n[0].numericValue;if(t!==null&&t instanceof co.Complex)return e.number(t.add(1));let r=y(n[0]);if(r!==null)return e.number(Kn(1+r))}}},Factorial2:{description:"Double Factorial Function",complexity:9e3,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=w(n[0]);if(i!==null)return C(e)?e.number(oa(e,e.bignum(i))):e.number(Cs(i))}}},Floor:{wikidata:"Q56860783",complexity:1250,threadable:!0,signature:{domain:["FunctionOf","Numbers","ExtendedRealNumbers"],evaluate:(e,n)=>O(n[0],Math.floor,i=>i.floor(),i=>i.floor(0))}},Gamma:{wikidata:"Q190573",complexity:8e3,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],N:(e,n)=>O(n[0],i=>Kn(i),i=>Yr(e,i),i=>i)}},GammaLn:{complexity:8e3,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],N:(e,n)=>O(n[0],i=>Di(i),i=>Wr(e,i),i=>i)}},Ln:{description:"Natural Logarithm",wikidata:"Q204037",complexity:4e3,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],N:(e,n)=>O(n[0],i=>i>=0?Math.log(i):e.complex(i).log(),i=>i.isNeg()?e.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:(e,n)=>{if(n.length===1)return e._fn("Log",[Me(e,n[0],"Numbers")]);if(n=Te(e,n,2),n.length!==2)return e._fn("Log",n);let[i,t]=n;return t.numericValue===10?e._fn("Log",[i]):e._fn("Log",[i,t])},N:(e,n)=>n[1]===void 0?O(n[0],i=>i>=0?Math.log10(i):e.complex(i).log().div(Math.LN10),i=>i.isNeg()?e.complex(i.toNumber()).log().div(Math.LN10):E.log10(i),i=>i.log().div(Math.LN10)):En(n[0],n[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:(e,n)=>O(n[0],i=>i>=0?Math.log2(i):e.complex(i).log().div(Math.LN2),i=>i.isNeg()?E.log10(i):e.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:(e,n)=>O(n[0],i=>i>=0?Math.log10(i):e.complex(i).log().div(Math.LN10),i=>i.isNeg()?e.complex(i.toNumber()).log().div(Math.LN10):E.log10(i),i=>i.log().div(Math.LN10))}},Multiply:{wikidata:"Q40276",associative:!0,commutative:!0,idempotent:!0,complexity:2100,hold:"all",threadable:!0,signature:{domain:"NumericFunctions",simplify:(e,n)=>xa(e,n),evaluate:(e,n)=>uo(e,n),N:(e,n)=>uo(e,n,"N")}},Negate:{description:"Additive Inverse",wikidata:"Q715358",complexity:2e3,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],result:(e,n)=>{let i=n[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?e.domain(t):i},canonical:(e,n)=>(n=Te(e,n),n.length!==1?e._fn("Negate",n):e.neg(n[0])),simplify:(e,n)=>Vt(e,n[0],"simplify"),evaluate:(e,n)=>Vt(e,n[0],"evaluate"),N:(e,n)=>Vt(e,n[0],"N"),sgn:(e,n)=>{let i=n[0].sgn;if(i!=null){if(i===0)return 0;if(i>0)return-1;if(i<0)return 1}}}},Power:{wikidata:"Q33456",commutative:!1,threadable:!0,complexity:3500,signature:{domain:["FunctionOf","Numbers","Numbers","Numbers"],canonical:(e,n)=>(n=Te(e,n,2),n.length!==2?e._fn("Power",n):e.pow(n[0],n[1])),simplify:(e,n)=>Gi(e,n[0],n[1],"simplify"),evaluate:(e,n)=>Gi(e,n[0],n[1],"evaluate"),N:(e,n)=>e.numericMode==="machine"&&typeof n[0].numericValue=="number"&&typeof n[1].numericValue=="number"?e.number(Math.pow(n[0].numericValue,n[1].numericValue)):Gi(e,n[0],n[1],"N")}},Rational:{complexity:2400,signature:{domain:["FunctionOf","Numbers",["OptArg","Numbers"],"RationalNumbers"],canonical:(e,n)=>(n=ee(Ne(n)),n.length===0?e._fn("Rational",[e.error("missing")]):n.length===1?e._fn("Rational",[Me(e,n[0],"ExtendedRealNumbers")]):(n=Pt(e,n,["Integers","Integers"]),n.length!==2||!n[0].isValid||!n[1].isValid?e._fn("Rational",n):e.div(n[0],n[1]))),simplify:(e,n)=>{if(n.length===2)return lo(e,n[0],n[1])},evaluate:(e,n)=>{if(n.length===2){let[t,r]=[w(n[0]),w(n[1])];return t!==null&&r!==null?e.number([t,r]):void 0}let i=y(n[0].N());if(i!==null)return e.number(Rs(i))},N:(e,n)=>n.length===1?n[0]:En(n[0],n[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:(e,n)=>{n=Te(e,n,2);let[i,t]=n;return n.length!==2||!i.isValid||!t.isValid?e._fn("Root",n):e.pow(i,e.inv(t))}}},Round:{complexity:1250,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>O(n[0],Math.round,i=>i.round(),i=>i.round(0))}},Sign:{complexity:1200,threadable:!0,signature:{domain:["FunctionOf","Numbers","Integers"],simplify:(e,n)=>{let i=n[0].sgn;if(i===0)return e.Zero;if(i===1)return e.One;if(i===-1)return e.NegativeOne},evaluate:(e,n)=>{let i=n[0].sgn;if(i===0)return e.Zero;if(i===1)return e.One;if(i===-1)return e.NegativeOne},N:(e,n)=>{let i=n[0].sgn;if(i===0)return e.Zero;if(i===1)return e.One;if(i===-1)return e.NegativeOne}}},Sqrt:{description:"Square Root",wikidata:"Q134237",complexity:3e3,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],canonical:(e,n)=>(n=ee(Ne(n)),n.length!==1?e._fn("Sqrt",n):e.pow(n[0],e.Half)),simplify:(e,n)=>ji(e,n[0],"simplify"),evaluate:(e,n)=>ji(e,n[0],"evaluate"),N:(e,n)=>ji(e,n[0],"N")}},Square:{wikidata:"Q3075175",complexity:3100,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],canonical:(e,n)=>(n=ee(Ne(n)),n.length!==1?e._fn("Square",n):e.pow(n[0],e.number(2)))}},Subtract:{wikidata:"Q40754",complexity:1350,threadable:!0,signature:{domain:["FunctionOf","Numbers",["OptArg","Numbers"],"Numbers"],canonical:(e,n)=>{if(n.length===1){let r=Me(e,n[0],"Numbers");if(r.isValid)return e.neg(r)}n=Te(e,n,2);let[i,t]=n;return n.length!==2||!i.isValid||!t.isValid?e._fn("Subtract",n):e.add([i,e.neg(t)])}}}},{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:e=>C(e)?e._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
|
|
19
19
|
21342664981196217630197762547694793565129261151062
|
|
20
20
|
48574422619196199579035898803325859059431594737481
|
|
21
21
|
15840699533202877331946051903872747816408786590902
|
|
@@ -45,10 +45,10 @@ ${i}`)}}function Cs(e){let n=e.unknowns;return Ml(e,{operators:i=>Tl[i],function
|
|
|
45
45
|
792726801324310104765059637039473949576389065729679296010090151251959509222435
|
|
46
46
|
014093498712282479497471956469763185066761290638110518241974448678363808617494
|
|
47
47
|
551698927923018773910729457815543160050021828440960537724342032854783670151773
|
|
48
|
-
943987003023703395183286900015581939880427074115422278197165230110735658339673`}}},{PreIncrement:{signature:{domain:["FunctionOf","Numbers","Numbers"]}},PreDecrement:{signature:{domain:["FunctionOf","Numbers","Numbers"]}}},{Max:{description:"Maximum of two or more numbers",complexity:1200,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],simplify:(e,n)=>n.length===0?e.NegativeInfinity:n.length===1?n[0]:e.fn("Max",n),evaluate:(e,n)=>Ft(e,n,"Max")}},Min:{description:"Minimum of two or more numbers",complexity:1200,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],simplify:(e,n)=>n.length===0?e.PositiveInfinity:n.length===1?n[0]:e.fn("Min",n),evaluate:(e,n)=>Ft(e,n,"Min")}},Supremum:{description:"Like Max, but defined for open sets",complexity:1200,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],simplify:(e,n)=>n.length===0?e.NegativeInfinity:n.length===1?n[0]:e.fn("Min",n),evaluate:(e,n)=>Ft(e,n,"Supremum")}},Infimum:{description:"Like Min, but defined for open sets",complexity:1200,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],simplify:(e,n)=>n.length===0?e.PositiveInfinity:n.length===1?n[0]:e.fn("Min",n),evaluate:(e,n)=>Ft(e,n,"Infimum")}},Product:{wikidata:"Q901718",complexity:1e3,hold:"first",signature:{domain:["FunctionOf","Anything","Tuples","Numbers"],canonical:(e,n)=>ua(e,n[0],n[1]),simplify:(e,n)=>Lt(e,n[0],n[1],"simplify"),evaluate:(e,n)=>Lt(e,n[0],n[1],"evaluate"),N:(e,n)=>Lt(e,n[0],n[1],"N")}},Sum:{wikidata:"Q218005",complexity:1e3,hold:"all",signature:{domain:["FunctionOf","Anything","Tuples","Numbers"],canonical:(e,n)=>qs(e,n[0],n[1]),simplify:(e,n)=>Tt(e,n[0],n[1],"simplify"),evaluate:(e,n)=>Tt(e,n[0],n[1],"evaluate"),N:(e,n)=>Tt(e,n[0],n[1],"N")}},Limit:{description:"Limit of a function",complexity:5e3,hold:"all",signature:{domain:["FunctionOf","Anything","Numbers",["OptArg","Numbers"],"Numbers"],N:(e,n)=>{let[i,t,r]=n,o=b(t.N());if(o===null)return;let s=Pn(i);return e.number(In(a=>{let u=s([e.number(a)])?.valueOf();return typeof u=="number"?u:Number.NaN},o,r?b(r)??1:1))}}},NLimit:{description:"Numerical approximation of the limit of a function",complexity:5e3,hold:"all",signature:{domain:["FunctionOf","Anything","Numbers",["OptArg","Numbers"],"Numbers"],evaluate:(e,n)=>{let[i,t,r]=n,o=b(t.N());if(o===null)return;let s=Pn(i);return e.number(In(a=>{let u=s([e.number(a)])?.valueOf();return typeof u=="number"?u:Number.NaN},o,r?b(r)??1:1))}}}},{BaseForm:{description:"`BaseForm(expr, base=10)`",complexity:9e3,inert:!0,signature:{domain:["FunctionOf","Values",["OptArg","Integers"],"Values"],codomain:(e,n)=>n[0].domain}},FromDigits:{description:"`FromDigits(s, base=10)` return an integer representation of the string `s` in base `base`.",signature:{domain:["FunctionOf","Strings",["OptArg","Integers"],"Integers"],evaluate:(e,n)=>{let i=n[0];if(!i.string)return e.domainError("Strings",i.domain,i);let t=n[1];if(t.isNothing)return e.number(Number.parseInt(i.string,10));if(t.numericValue===null)return e.error(["unexpected-base",t.latex],t);let r=b(t);if(!Number.isInteger(r)||r<2||r>36)return e.error(["unexpected-base",r],t);let[o,s]=bt(i.string,r);return s?e.error(["unexpected-digit",{str:s[0]}],{str:s}):e.number(o)}}},IntegerString:{description:"`IntegerString(n, base=10)` return a string representation of the integer `n` in base `base`.",signature:{domain:["FunctionOf","Integers",["OptArg","Integers"],"Strings"],evaluate:(e,n)=>{let i=n[0],t=b(i)??NaN;if(Number.isNaN(t)||!Number.isInteger(t))return e.domainError("Integers",i.domain,i);let r=n[1];if(r.isNothing){let s=i.numericValue;return typeof s=="number"?e.string(Math.abs(s).toString()):s instanceof E?e.string(s.abs().toString()):e.string(Math.abs(Math.round(b(i)??NaN)).toString())}if(k(r)===null)return e.domainError("Integers",r.domain,r);let o=k(r);return o<2||o>36?e.error(["out-of-range",2,36,o],r):e.string(Math.abs(t).toString(o))}}}}];function no(e,n,i){if(i!=="simplify"){let t=n.numericValue;if(t!==null){if(typeof t=="number")return e.number(Math.abs(t));if(t instanceof E||t instanceof io.Complex)return e.number(t.abs());if(P(t))return e.number(i==="N"?Math.abs(t[0]/t[1]):[Math.abs(t[0]),t[1]]);if(U(t)){let[r,o]=t;return e.number(i==="N"?e.bignum(r).div(e.bignum(o)).abs():[r>0?r:-r,o])}}}if(n.isNonNegative)return n;if(n.isNegative)return e.neg(n)}function Ft(e,n,i){let t=i==="Max"||i==="Supremum";if(n.length===0)return t?e.NegativeInfinity:e.PositiveInfinity;let r,o=[];for(let s of n)!s.isNumber||s.numericValue===void 0?o.push(s):r?(t&&s.isGreater(r)||!t&&s.isLess(r))&&(r=s):r=s;return o.length>0?e.box(r?[i,r,...o]:[i,...o]):r??(t?e.NegativeInfinity:e.PositiveInfinity)}var nf={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]],Exp:["Exp","_"],Ln:["Power","_",-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 Ae(e,n){let i=e.engine;if(!(e.string||e.keys)){if(e.numericValue!==null)return e.engine.Zero;if(e.symbol===n)return e.engine.One;if(e.symbol)return e.engine.Zero;if(e.head&&typeof e.head=="string"){if(e.head==="Negate"){let s=Ae(e.op1,n);return s?i.neg(s):i.neg(i._fn("D",[e.op1,i.symbol(n)]))}if(e.head==="Add"){let s=e.ops.map(a=>Ae(a,n));return s.some(a=>a===void 0)?void 0:i.add(s)}if(e.head==="Multiply"){let s=e.ops.map((a,u)=>{let l=e.ops.slice();l.splice(u,1);let f=i.mul(l),d=Ae(a,n)??i._fn("D",[a,i.symbol(n)]);return i.mul([d,f])});return s.some(a=>a===void 0)?void 0:i.add(s)}if(e.head==="Power"){let[s,a]=e.ops;if(s.symbol===n)return i.mul([a,i.pow(s,i.add([a,i.NegativeOne]))])}if(e.head==="Divide"){let[s,a]=e.ops,u=Ae(s,n)??i._fn("D",[s,i.symbol(n)]),l=Ae(a,n)??i._fn("D",[a,i.symbol(n)]);return i.div(i.add([i.mul([u,a]),i.neg(i.mul([l,s]))]),i.pow(a,2))}let t=nf[e.head];if(!t){let s=i._fn("Derivative",[i.symbol(e.head),i.number(1)]),a=e.ops[0],u=Ae(a,n)??i._fn("D",[a,i.symbol(n)]);return i.mul([i._fn("Apply",[s,a]),u])}if(e.nops>1)return i._fn("D",[e,i.symbol(n)]);let r=e.ops[0],o=Ae(r,n)??i._fn("D",[r,i.symbol(n)]);return i.mul([Cn(i.box(t),[r]),o])}}}var fa=[{Derivative:{hold:"all",signature:{domain:["FunctionOf","Functions",["OptArg","Numbers"],"Functions"],canonical:(e,n)=>n[0].functionDefinition?Ae(e._fn(n[0].canonical,[e.symbol("_")]),"_")?.canonical??e._fn("Derivative",n):e._fn("Derivative",n),simplify:(e,n)=>{let i=n[0].simplify();return n[1]?e._fn("Derivative",[i,n[1]]):e._fn("Derivative",[i])},evaluate:(e,n)=>{let i=n[0].evaluate();if(i.functionDefinition)return Ae(e._fn(i,[e.symbol("_")]),"_")?.canonical??void 0;let t=Ae(i,"_");if(t)return t.canonical}}},D:{hold:"all",signature:{domain:["FunctionOf","Anything","Symbols",["VarArg","Symbols"],"Anything"],canonical:(e,n)=>{let i=n[0];if(!i)return null;e.pushScope();let t=n.slice(1);i.bind(),i=i.canonical;let r=e._fn("D",[i,...t]);return e.popScope(),r},evaluate:(e,n)=>{let i=n[0].canonical,t=e.swapScope(i.scope);i=i.evaluate();let r=n.slice(1);r.length===0&&(i=void 0);for(let o of r){if(!o.symbol){i=void 0;break}if(i=Ae(i,o.symbol),i===void 0)break}return e.swapScope(t),i=i?.canonical,i?.head==="D"?i:i?.evaluate()}}},ND:{hold:"first",signature:{domain:["FunctionOf","Anything","Numbers","Functions"],N:(e,n)=>{let i=n[1]?.valueOf();if(typeof i!="number")return;let t=Zr(e.box(n[0]));return e.number(Ss(t,i))}}},Integrate:{wikidata:"Q80091",hold:"all",signature:{domain:["FunctionOf","Functions",["OptArg",["Union","Tuples","Symbols"]],"Numbers"],canonical:(e,n)=>{let i=n[0]??e.error("missing"),t=n[1],r=null,o=null,s=null;return t&&t.head!=="Tuple"&&t.head!=="Triple"&&t.head!=="Pair"&&t.head!=="Single"?r=t:t&&(r=t.ops?.[0]??null,o=t.ops?.[1]?.canonical??null,s=t.ops?.[2]?.canonical??null),r&&r.head==="Hold"&&(r=r.op1),r&&r.head==="ReleaseHold"&&(r=r.op1.evaluate()),r??(r=e.Nothing),r.symbol||(r=e.domainError("Symbols",r.domain,r)),o&&(o=ye(e,o,e.Numbers)),s&&(s=ye(e,s,e.Numbers)),o&&s?t=e.tuple([r,o,s]):s?t=e.tuple([r,e.NegativeInfinity,s]):o?t=e.tuple([r,o]):t=r,e._fn("Integrate",[i.canonical,t])}}},NIntegrate:{hold:"first",signature:{domain:["FunctionOf","Functions","Numbers","Numbers","Numbers"],evaluate:(e,n)=>{let i=e.numericMode,t=e.precision;e.numericMode="machine";let r=Zr(n[0]),[o,s]=n.slice(1).map(u=>u.valueOf()),a;return typeof o=="number"&&typeof s=="number"&&(a=e.number(Is(r,o,s))),e.numericMode=i,e.precision=t,a}}}}];var Rt=50,ca={Sequence:{signature:{domain:"Functions"}},List:{complexity:8200,signature:{domain:["FunctionOf",["VarArg","Anything"],"Lists"]},size:e=>e.nops,iterator:(e,n,i)=>{let t=n??1;return i=Math.min(i??e.nops,e.nops),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:e.ops[t++-1],done:!1}):{value:void 0,done:!0}}},at:(e,n)=>{if(typeof n=="number"&&!(n<1||n>e.nops))return e.ops[n-1]},indexOf:(e,n,i)=>{if(i??(i=1),i<0){if(i<-e.nops)return;i=e.nops+i+1;let r=i;for(let o=r;o>=1;o--)if(e.ops[o-1].isEqual(n))return o;return}let t=i;for(let r=t;r<=e.nops;r++)if(e.ops[r-1].isEqual(n))return r}},Range:{complexity:8200,signature:{domain:["FunctionOf","Numbers",["OptArg","Numbers","Numbers"],"Values"]},size:e=>{let[n,i,t]=$t(e);return Math.max(0,Math.floor((i-n)/t))},at:(e,n)=>{if(typeof n!="number")return;let[i,t,r]=$t(e);if(!(n<1||n>(t-i)/r))return e.engine.number(i+r*(n-1))},iterator:(e,n,i)=>{let[t,r,o]=$t(e),s=n??1;return i=Math.min(i??r,r),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:e.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:e=>{let n=b(e.op3)??Rt;return Math.max(0,Math.floor(n))},at:(e,n)=>{if(typeof n!="number")return;let i=b(e.op1),t=b(e.op2),r=b(e.op3)??Rt;if(!(i===void 0||t===void 0)&&!(n<1||n>r))return e.engine.number(i+(t-i)*(n-1)/r)},iterator:(e,n,i)=>{let t=b(e.op1),r=b(e.op2),o;r===void 0?(r=t,t=1,o=Rt):o=Math.max(0,b(e.op3)??Rt);let s=n??1;return i=Math.min(i??o,o),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:e.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:(e,n)=>{let[i,t]=Dt(e,n,[e.Strings,"Values"]);return!i.isValid||!t.isValid?e._fn("KeyValuePair",[i,t]):e.tuple([i,t])}},size:e=>1},Single:{description:"A tuple with a single element",complexity:8200,signature:{domain:["FunctionOf","Anything","Tuples"],canonical:(e,n)=>e.tuple(Ne(e,n,1))},size:e=>e.nops,at:(e,n)=>{if(!(typeof n!="number"||n!==1))return e.ops[0]}},Pair:{description:"A tuple of two elements",complexity:8200,signature:{domain:["FunctionOf","Anything","Anything","Tuples"],canonical:(e,n)=>e.tuple(Ne(e,n,2))},size:e=>e.nops,at:(e,n)=>typeof n=="number"?e.ops[n-1]:void 0},Triple:{description:"A tuple of three elements",complexity:8200,signature:{domain:["FunctionOf","Anything","Anything","Anything","Tuples"],canonical:(e,n)=>e.tuple(Ne(e,n,3))},size:e=>e.nops,at:(e,n)=>typeof n=="number"?e.ops[n-1]:void 0},Tuple:{description:"A fixed number of heterogeneous elements",complexity:8200,signature:{domain:["FunctionOf","Anything",["VarArg","Anything"],"Tuples"],canonical:(e,n)=>e.tuple(De(n))},size:e=>e.nops,at:(e,n)=>typeof n=="number"?e.ops[n-1]:void 0},String:{threadable:!0,signature:{domain:["FunctionOf",["OptArg","Anything"],"Strings"],evaluate:(e,n)=>n.length===0?e.string(""):e.string(n.map(i=>i.string??i.toString()).join(""))}},Length:{complexity:8200,signature:{domain:["FunctionOf","Values","Numbers"],evaluate:(e,n)=>{let i=n[0].functionDefinition;if(i?.size)return e.number(i.size(n[0]));let t=n[0].string;return t!==null?e.number(t.length):e.Zero}}},IsEmpty:{complexity:8200,signature:{domain:["FunctionOf","Values","Numbers"],evaluate:(e,n)=>{let i=n[0].functionDefinition,t;if(i?.size)t=i.size(n[0]);else{let r=n[0].string;r!==null&&(t=r.length)}if(t!==void 0)return t===0?e.True:e.False}}},Take:{complexity:8200,signature:{domain:["FunctionOf","Values",["VarArg","Values"],"Values"],evaluate:(e,n)=>{if(n.length<2)return;let i=n[0].string;if(i!==null){let o=n.slice(1).map(s=>qt(s,i.length));return e.string(tf(i,o))}let r=n[0].functionDefinition?.size?.(n[0]);return Vt(n[0],n.slice(1).map(o=>qt(o,r)))}}},Drop:{complexity:8200,signature:{domain:["FunctionOf","Values",["VarArg","Values"],"Values"],evaluate:(e,n)=>{if(n.length<2)return;let i=n[0].string;if(i!==null){let a=da(n.slice(1).map(u=>qt(u,i.length)));return e.string(i.split("").filter((u,l)=>!a.includes(l+1)).join(""))}let t=n[0].functionDefinition,r=t?.size?.(n[0]);if(!r||!t?.at)return e.Nothing;let o=da(n.slice(1).map(a=>qt(a,r))),s=[];for(let a=1;a<=r;a++)if(!o.includes(a)){let u=t.at(n[0],a);u&&s.push(u)}return e.fn("List",s)}}},At:{complexity:8200,signature:{domain:["FunctionOf","Values","Values","Values"],evaluate:(e,n)=>{let i=n[0],t=i.functionDefinition;if(!t?.at)return;if(n[1].string!==null)return t.at(i,1)??e.Nothing;let o=b(n[1]);if(!(o===null||!Number.isInteger(o)))return t.at(i,o)??e.Nothing}}},First:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{let i=n[0],t=i.functionDefinition;return t?.at?t.at(i,1)??e.Nothing:e.Nothing}}},Second:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{let i=n[0],t=i.functionDefinition;return t?.at?t.at(i,2)??e.Nothing:e.Nothing}}},Last:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{let i=n[0],t=i.functionDefinition;return t?.at?t.at(i,-1)??e.Nothing:e.Nothing}}},Rest:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>Vt(n[0],[[2,-1,1]])}},Most:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>Vt(n[0],[[1,-2,1]])}},Reverse:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>Vt(n[0],[[-1,2,1]])}},Ordering:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Functions"],"Values"],evaluate:(e,n)=>{}}},Sort:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Functions"],"Values"],evaluate:(e,n)=>{}}},Shuffle:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{}}},Dimensions:{complexity:8200,signature:{domain:["FunctionOf","Values","Lists"],evaluate:(e,n)=>{}}},Rank:{complexity:8200,signature:{domain:["FunctionOf","Values","Numbers"],evaluate:(e,n)=>{}}},Reshape:{complexity:8200,signature:{domain:["FunctionOf","Values","Values","Values"],evaluate:(e,n)=>{}}},Flatten:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{}}},Map:{complexity:8200,signature:{domain:["FunctionOf","Collections","Functions","Collections"],evaluate:(e,n)=>{}}},Filter:{complexity:8200,signature:{domain:["FunctionOf","Values","Functions","Values"],evaluate:(e,n)=>{}}},Reduce:{complexity:8200,signature:{domain:["FunctionOf","Values","Functions",["OptArg","Values"],"Values"],evaluate:(e,n)=>{}}},Tabulate:{complexity:8200,signature:{domain:["FunctionOf","Functions","Integers",["VarArg","Integers"],"Values"],evaluate:(e,n)=>{}}},Tally:{complexity:8200,signature:{domain:["FunctionOf","Values","Tuples"],evaluate:(e,n)=>{}}},Unique:{complexity:8200,signature:{domain:["FunctionOf","Values","Tuples"],evaluate:(e,n)=>{}}},Transpose:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{}}},Zip:{complexity:8200,signature:{domain:["FunctionOf","Values",["VarArg","Values"],"Values"],evaluate:(e,n)=>{}}},RotateLeft:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Integers"],"Values"],evaluate:(e,n)=>{}}},RotateRight:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Integers"],"Values"],evaluate:(e,n)=>{}}},Join:{complexity:8200,signature:{domain:["FunctionOf",["VarArg","Values"],"Values"],evaluate:(e,n)=>{}}},Iterate:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Values"],"Values"],evaluate:(e,n)=>{}}},Repeat:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{}}},Cycle:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{}}},Fill:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{}}}};function $t(e){let n=b(e.op1)??1,i=b(e.op2);if(i===void 0)return[1,n,1];let t=b(e.op3)??1;return[n,i,t]}function qt(e,n){if(!e)return[0,0,0];let i=b(e);if(i!==null){if(i=Math.round(i),i<0){if(n===void 0)return[0,0,0];i=n+i+1}return[i,i,1]}let t=e.head;if(!t||typeof t!="string"||!/^(Single|Pair|Triple|Tuple|)$/.test(t))return[0,0,0];let[r,o,s]=$t(e);return(r<0||o<0)&&n===void 0?[0,0,0]:(r<0&&(r=n+r+1),o<0&&(o=n+o+1),s=Math.abs(Math.round(s)),s===0?[0,0,0]:(r>o&&(s=-s),[r,o,s]))}function Vt(e,n){let i=e.engine,t=e.functionDefinition;if(!t?.at)return i.Nothing;let r=[];for(let o of n){let[s,a,u]=o;if(u!==0)if(u<0)for(let l=s;l>=a;l+=u){let f=t.at(e,l);f&&r.push(f)}else for(let l=s;l<=a;l+=u){let f=t.at(e,l);f&&r.push(f)}}return i.fn("List",r)}function tf(e,n){let i="";for(let t of n){let[r,o,s]=t;if(s===1)i+=e.slice(r-1,o);else if(s<0)for(let a=r;a>=o;a+=s)i+=e[a-1];else for(let a=r;a<=o;a+=s)i+=e[a-1]}return i}function da(e){let n=[];for(let i of e){let[t,r,o]=i;if(o!==0)if(o<0)for(let s=t;s>=r;s+=o)n.push(s);else for(let s=t;s<=r;s+=o)n.push(s)}return n}var ma=[{Block:{hold:"all",signature:{domain:"Functions",canonical:af,evaluate:sf}},If:{hold:"rest",signature:{domain:"Functions",codomain:(e,n)=>bn(n[0],n[1]),evaluate:(e,n)=>{let i=n[0];return i&&i.symbol==="True"?n[1]?n[1].evaluate():e.Nothing:n[2]?n[2].evaluate():e.Nothing}}},Loop:{hold:"all",signature:{domain:"Functions",evaluate:(e,n)=>{let i=n[0]??e.Nothing;if(i.isNothing)return i;let t=n[1];if(t){let o=Xs(t);if(!o)return e.Nothing;let s,a=0,u=Pn(i);for(;;){let{done:l,value:f}=o.next();if(l)return s??e.Nothing;if(s=u([f])??e.Nothing,s.head==="Break")return s.op1;if(s.head==="Return")return s;if(a++>e.iterationLimit)return e.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++>e.iterationLimit)return e.error("iteration-limit-exceeded")}}}},Which:{hold:"all",signature:{domain:"Functions",codomain:(e,n)=>rf(e,n),evaluate:(e,n)=>of(e,n,"evaluate")}},FixedPoint:{hold:"all",signature:{domain:"Functions"}}}];function rf(e,n){let i=null;for(let t=1;t<=n.length-1;t+=2)i=bn(i,n[t].domain);return i??e.domain("NothingDomain")}function of(e,n,i){let t=0;for(;t<n.length-1;){if(n[t].evaluate().symbol==="True")return n[t+1]?i==="N"?n[t+1].N():n[t+1].evaluate():e.symbol("Undefined");t+=2}return e.symbol("Undefined")}function sf(e,n){if(n.length===0)return e.Nothing;e.resetContext();let i;for(let t of n){let r=t.head;if(r==="Return"){i=t.op1.evaluate();break}if(r==="Break"||r==="Continue"){i=e.fn(r,[t.op1.evaluate()]);break}i=t.evaluate()}return i??e.Nothing}function af(e,n){if(n.length===0)return null;e.pushScope();let i=[],t=[];for(let o of n)o.head==="Declare"?i.push(o):t.push(pa(o));let r=e._fn("Block",[...i,...t]);return e.popScope(),r}function pa(e){return e.head==="Declare"&&e.engine.error("unexpected-declare"),e.ops?e.engine._fn(e.head,e.ops.map(pa)):e}var ga=[{Real:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=n[0].numericValue;if(i!==null)return e.isComplex(i)?e.number(i.re):n[0]}}},Imaginary:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=n[0].numericValue;if(i!==null)return e.isComplex(i)?e.number(i.im):e.Zero}}},Argument:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=n[0].numericValue;if(i===null)return;if(e.isComplex(i))return e.number(i.arg());let t=b(n[0]);if(t!==null)return t>=0?e.Zero:e.number(Math.PI)}}},AbsArg:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Tuples"],evaluate:(e,n)=>{let i=n[0].numericValue;if(i===null)return;if(e.isComplex(i))return e.tuple([e.number(i.abs()),e.number(i.arg())]);let t=b(n[0]);if(t!==null)return e.tuple([e.number(Math.abs(t)),e.number(t>=0?0:Math.PI)])}}},Conjugate:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=n[0].numericValue;if(!(i===null||!e.isComplex(i)))return e.number(i.conjugate())}}},ComplexRoots:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers","Lists"],evaluate:(e,n)=>{let i=b(n[0]),t=b(n[1]);if(i===null||t===null||!Number.isInteger(t)||t<=0)return;let r=[],[o,s]=e.isComplex(i)?[i.re,i.im]:[i,0],a=Math.atan2(s,o),u=Math.sqrt(o*o+s*s);for(let l=0;l<t;l++){let f=(a+2*Math.PI*l)/t,d=Math.pow(u,1/t);r.push([d*Math.cos(f),d*Math.sin(f)])}return e.box(["List",...r.map(l=>e.number(l[1]!==0?e.complex(l[0],l[1]):l[0]))])}}}}];function qi(e){return e[Math.floor(Math.random()*e.length)]}function ha(e,n){if(e==="Add"||e==="Multiply"){let i=[],t=1+Math.floor(Math.random()*12);for(;t>0;)i.push(Qe(n+1)),t-=1;return[e,...i]}return e==="Divide"||e==="Power"?[e,Qe(n+1),Qe(n+1)]:e==="Root"?[e,Qe(n+1),Qe(10)]:e==="trig"?uf():[e,Qe(n+1)]}function uf(){return[qi(["Cos","Sin","Tan","Sinh","Arccos","Arsinh"]),qi(["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 Qe(e){if(e??(e=1),e===1){let n=qi([["Sqrt",["Multiply",6,["Sum",["Divide",1,["Power","n",2]],["Triple",["Hold","n"],1,{num:"+Infinity"}]]]],"Add","Add","Add","Add","Add","Multiply","Multiply","Multiply","Multiply","Divide","Divide","Divide","Root","Sqrt","Subtract","Negate","trig"]);return typeof n=="string"?ha(n,1):n}if(e===2){let n=Math.random();if(n>.75)return Qe(1);if(n>.5)return Qe(3);let i=qi(["Multiply","Multiply","Add","Power","trig","Ln","Exp"]);return ha(i,2)}return qi([-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 xa=[{Nothing:{domain:"NothingDomain"}},{Delimiter:{complexity:9e3,hold:"first",signature:{domain:["FunctionOf","Anything",["OptArg","Strings","Strings"],"Anything"],codomain:(e,n)=>n[0].domain,canonical:(e,n)=>n[0]?.canonical??e.box(["Sequence"])}},Error:{hold:"all",complexity:500,signature:{domain:["FunctionOf","Anything",["OptArg","Anything"],"Void"],canonical:(e,n)=>e._fn("Error",n)}},ErrorCode:{complexity:500,hold:"all",signature:{domain:["FunctionOf","Strings",["VarArg","Anything"],"Anything"],canonical:(e,n)=>{let i=ye(e,n[0],e.Strings).string;return i==="incompatible-domain"?e._fn("ErrorCode",[e.string(i),n[1],n[2]]):e._fn("ErrorCode",n)}}},Hold:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],codomain:(e,n)=>{let i=n[0];if(i.symbol)return e.domain("Symbols");if(i.string)return e.domain("Strings");if(i.head==="Numbers")return e.domain("Numbers")},canonical:(e,n)=>n.length!==1?null:e._fn("Hold",n),evaluate:(e,n)=>n[0]}},HorizontalSpacing:{signature:{domain:"Functions",canonical:(e,n)=>n.length===2?n[0].canonical:e.box(["Sequence"])}},Style:{complexity:9e3,inert:!0,signature:{domain:["FunctionOf","Anything",["OptArg","Dictionaries"],"Anything"]}}},{Apply:{signature:{domain:"Functions",canonical:(e,n)=>n[0].symbol?e.box([...n]):e._fn("Apply",n),evaluate:(e,n)=>Cn(n[0],n.slice(1))}},Assign:{hold:"all",signature:{domain:["FunctionOf","Symbols","Anything","Anything"],canonical:(e,n)=>{if(n.length!==2)return null;let i=n[0],t=n[1];return i.symbol?t.symbol?e._fn("Assign",n):e._fn("Assign",[i,e._fn("Hold",[t])]):null},evaluate:(e,n)=>{let i=n[0],t=n[1];if(!i.symbol)return e.Nothing;let r=t.evaluate();return e.assign(i.symbol,r),r}}},Assume:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],evaluate:(e,n)=>e.string(e.assume(n[0]))}},About:{signature:{domain:"Functions"}},Declare:{hold:"all",signature:{domain:["FunctionOf","Symbols","Anything"],canonical:(e,n)=>{if(n.length!==2)return null;let i=n[0],t=n[1];return i.symbol?t.symbol?e._fn("Declare",n):e._fn("Declare",[i,e._fn("Hold",[t])]):null},evaluate:(e,n)=>{let i=n[0],t=n[1];if(!i.symbol)return e.Nothing;let r=t.evaluate();return e.declare(i.symbol,r),r}}},Domain:{signature:{domain:["FunctionOf","Anything","Domains"],evaluate:(e,n)=>n[0].domain}},Evaluate:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],codomain:(e,n)=>n[0].domain,canonical:(e,n)=>e._fn("Evaluate",Ne(e,n,1)),evaluate:(e,n)=>n[0].evaluate()}},Function:{complexity:9876,hold:"all",signature:{domain:["FunctionOf","Anything",["VarArg","Symbols"],"Functions"],canonical:(e,n)=>n.length===0?e.box(["Sequence"]):(n.length===1?jr(n[0]):e._fn("Function",n))??null,evaluate:(e,n)=>{}}},Simplify:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],codomain:(e,n)=>n[0].domain,canonical:(e,n)=>e._fn("Simplify",Ne(e,n,1)),evaluate:(e,n)=>n[0].simplify()}},N:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],codomain:(e,n)=>n[0].domain,canonical:(e,n)=>e._fn("N",Ne(e,n,1)),evaluate:(e,n)=>n[0].N()}},Head:{signature:{domain:"Functions",evaluate:(e,n)=>{let i=n[0];return typeof i?.head=="string"?e.symbol(i.head):i?.head??e.Nothing}}},Identity:{signature:{domain:["FunctionOf","Anything","Anything"],codomain:(e,n)=>n[0].domain,evaluate:(e,n)=>n[0]}},Signatures:{signature:{domain:["FunctionOf","Symbols",["ListOf","Domains"]],canonical:(e,n)=>(n=Ne(e,n,1),n[0].symbol?e._fn("Signatures",n):e._fn("Signatures",[e.domainError("Symbols",n[0].domain,n[0])])),evaluate:(e,n)=>{let i=n[0].symbol;if(!i)return e.Nothing;let t=e.lookupFunction(i);return t?e.fn("List",[t.signature.domain]):e.fn("List",[])}}},Subscript:{hold:"last",signature:{domain:["FunctionOf","Anything","Anything","Anything"],codomain:(e,n)=>{let i=n[0],t=n[1];if(i.string&&k(t)!==null)return e.domain("Integers");if(i.symbol){let r=i.value?.head;if(r)return e.lookupFunction(r)?.at?void 0:e.domain("Symbols")}},canonical:(e,n)=>{let i=n[0],t=n[1];if(i.string){let r=k(t);if(r!==null&&r>1&&r<=36){let[o,s]=bt(i.string,r);return s?e.error(["unexpected-digit",{str:s[0]}],["LatexString",e.string(i.string)]):e.number(o)}}if(i.symbol){let r=i.value?.head;if(r&&e.lookupFunction(r)?.at)return e._fn("At",[i.canonical,t.canonical]);let o=t.string??t.symbol??k(t)?.toString();if(o)return e.symbol(i.symbol+"_"+o)}return t.head==="Sequence"&&e._fn("Subscript",[i,e._fn("List",t.ops)]),e._fn("Subscript",n)}}},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:(e,n)=>{if(n.length===0)return e.Nothing;let i=n.map(t=>t.symbol??t.string??k(t)?.toString()??"").join("");return i.length>0?e.symbol(i):e.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:(e,n)=>{if(n[1].symbol==="Nothing"){let u=globalThis.performance.now(),l=n[0].evaluate(),f=1e3*(globalThis.performance.now()-u);return e.pair(e.number(f),l)}let i=Math.max(3,Math.round(k(n[1])??3)),t=[],r;for(;i>0;){let u=globalThis.performance.now();r=n[0].evaluate(),t.push(1e3*(globalThis.performance.now()-u)),i-=1}let o=Math.max(...t),s=Math.min(...t);t=t.filter(u=>u>s&&u<o);let a=t.reduce((u,l)=>u+l,0);return a===0?e.pair(e.number(o),r):e.pair(e.number(a/t.length),r)}}}},{LatexString:{inert:!0,signature:{domain:["FunctionOf","Strings","Strings"]}},Latex:{signature:{domain:["FunctionOf",["VarArg","Anything"],"Strings"],evaluate:(e,n)=>e.fn("LatexString",[e.string(N(n.map(i=>i.latex)))])}},Parse:{description:"Parse a LaTeX string and evaluate to a corresponding expression",signature:{domain:["FunctionOf","Anything","Anything"],evaluate:(e,n)=>{if(n.length===0)return e.box(["Sequence"]);let i=n[0],t=i.string??i.head==="LatexString"?i.op1.string:"";return e.parse(t)??e.box(["Sequence"])}}}},{RandomExpression:{signature:{domain:"Functions",evaluate:(e,n)=>e.box(Qe())}}}];var ba=[];var Sa={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:ya,evaluate:ya}},Or:{wikidata:"Q1651704",threadable:!0,associative:!0,commutative:!0,idempotent:!0,complexity:1e4,signature:{domain:"LogicOperators",simplify:Ea,evaluate:Ea}},Not:{wikidata:"Q190558",involution:!0,complexity:10100,signature:{domain:"LogicOperators",simplify:Na,evaluate:Na}},Equivalent:{wikidata:"Q220433",complexity:10200,signature:{domain:"LogicOperators",simplify:va,evaluate:va}},Implies:{wikidata:"Q7881229",complexity:10200,signature:{domain:"LogicOperators",simplify:_a,evaluate:_a}},Exists:{signature:{domain:"Booleans"}}};function ya(e,n){if(n.length===0)return e.True;let i=[];for(let t of n){if(t.symbol==="False")return e.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 e.False;r||i.push(t)}}return i.length===0?e.True:i.length===1?i[0]:e._fn("And",i)}function Ea(e,n){if(n.length===0)return e.True;let i=[];for(let t of n){if(t.symbol==="True")return e.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 e.True;r||i.push(t)}}return i.length===0?e.True:i.length===1?i[0]:e._fn("Or",i)}function Na(e,n){let i=n[0].symbol;if(i==="True")return e.False;if(i==="False")return e.True}function va(e,n){let i=n[0].symbol,t=n[1].symbol;if(i==="True"&&t==="True"||i==="False"&&t==="False")return e.True;if(i==="True"&&t==="False"||i==="False"&&t==="True")return e.False}function _a(e,n){let i=n[0].symbol,t=n[1].symbol;if(i==="True"&&t==="True"||i==="False"&&t==="False"||i==="False"&&t==="True")return e.True;if(i==="True"&&t==="False")return e.False}var Ia=[{Expand:{description:"Expand out products and positive integer powers",signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>un(n[0])??n[0]}},Distribute:{description:"Distribute multiplication over addition",signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{let i=n[0].head;if(i==="Multiply")return ri(n[0].ops)??n[0];if(i==="Negate")return ri([e.NegativeOne,...n[0].ops])??n[0];if(i==="Divide"&&n[0].ops[0].head==="Multiply"){let t=ri(n[0].ops),r=n[0].ops[1];if(t)return t.head==="Add"?e.add(t.ops.map(o=>e.div(o,r))).evaluate():e.div(t,r).evaluate()}return n[0]}}}}];var Ba={Equal:{commutative:!0,complexity:11e3,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Equal",K(xe(De(n)),"Equal")),evaluate:(e,n)=>{if(n.length<2)return e.True;let i;for(let t of n)if(!i)i=t;else if(i.isEqual(t)!==!0)return e.False;return e.True}}},NotEqual:{wikidata:"Q28113351",commutative:!0,complexity:11e3,signature:{domain:"RelationalOperators",evaluate:(e,n)=>{if(n.length<2)return e.False;let i;for(let t of n)if(!i)i=t;else if(i.isEqual(t)===!0)return e.False;return e.True}}},Less:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Less",K(xe(De(n)),"Less")),evaluate:(e,n)=>{if(n.length<2)return e.True;let i;for(let t of n){if(!t.isNumber)return;if(!i)i=t;else{let r=e.fn("Subtract",[t,i]).N().sgn;if(r==null)return;if(r<=0)return e.False;i=t}}return e.True}}},NotLess:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("Less",n)])}},Greater:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Less",n.reverse()),evaluate:(e,n)=>{if(n.length<2)return e.True;let i;for(let t of n){if(!t.isNumber)return;if(!i)i=t;else{let r=e.fn("Subtract",[t,i]).N().sgn;if(r==null)return;if(r>=0)return e.False;i=t}}return e.True}}},NotGreater:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("Greater",n)])}},LessEqual:{complexity:11e3,signature:{domain:"RelationalOperators",evaluate:(e,n)=>{if(n.length<2)return e.True;let i;for(let t of n){if(!t.isNumber)return;if(!i)i=t;else{let r=e.fn("Subtract",[t,i]).N().sgn;if(r==null)return;if(r<0)return e.False;i=t}}return e.True}}},NotLessNotEqual:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("LessEqual",n)])}},GreaterEqual:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("LessEqual",n.reverse()),evaluate:(e,n)=>{if(n.length<2)return e.True;let i;for(let t of n){if(!t.isNumber)return;if(!i)i=t;else{let r=e.fn("Subtract",[t,i]).N().sgn;if(r==null)return;if(r>0)return e.False;i=t}}return e.True}}},NotGreaterNotEqual:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("GreaterEqual",n)])}},TildeFullEqual:{description:"Indicate isomorphism, congruence and homotopic equivalence",signature:{domain:"RelationalOperators"}},NotTildeFullEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("TildeFullEqual",n)])}},TildeEqual:{description:"Approximately or asymptotically equal",complexity:11e3,signature:{domain:"RelationalOperators"}},NotTildeEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("TildeEqual",n)])}},Approx:{complexity:11100,signature:{domain:"RelationalOperators"}},NotApprox:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("Approx",n)])}},ApproxEqual:{complexity:11100,signature:{domain:"RelationalOperators"}},NotApproxEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("ApproxEqual",n)])}},ApproxNotEqual:{complexity:11100,signature:{domain:"RelationalOperators"}},NotApproxNotEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("ApproxNotEqual",n)])}},Precedes:{complexity:11100,signature:{domain:"RelationalOperators"}},NotPrecedes:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("Precedes",n)])}},Succeeds:{signature:{domain:"RelationalOperators"}},NotSucceeds:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("Succeeds",n)])}}};var Da={EmptySet:{domain:"Sets",constant:!0,wikidata:"Q226183"},Element:{complexity:11200,hold:"all",signature:{domain:"Predicates",canonical:(e,n)=>(n=Ne(e,n,2),n.length===2&&n[0].isValid&&xn(n[1])?e._fn("Element",[n[0],e.domain(n[1])]):e._fn("Element",n)),evaluate:(e,n)=>cf(e,n)}},NotElement:{complexity:11200,hold:"all",signature:{domain:"Predicates",canonical:(e,n)=>e.fn("Not",[e.fn("Element",n)])}},Subset:{complexity:11200,signature:{domain:"Predicates"}},NotSubset:{complexity:11200,signature:{domain:"Predicates",canonical:(e,n)=>e.fn("Not",[e.fn("Subset",n)])}},Superset:{complexity:11200,signature:{domain:"Predicates"}},SupersetEqual:{complexity:11200,signature:{domain:"Predicates"}},NotSuperset:{complexity:11200,signature:{domain:"Predicates",canonical:(e,n)=>e.fn("Not",[e.fn("Superset",n)])}},NotSupersetEqual:{complexity:11200,signature:{domain:"Predicates",canonical:(e,n)=>e.fn("Not",[e.fn("SupersetEqual",n)])}},SubsetEqual:{complexity:11200,signature:{domain:"Predicates"}},NotSubsetNotEqual:{complexity:11200,signature:{domain:"Predicates",canonical:(e,n)=>e.fn("Not",[e.fn("SubsetEqual",n)])}},CartesianProduct:{wikidata:"Q173740",signature:{domain:["FunctionOf","Sets",["VarArg","Sets"],"Sets"]}},Complement:{wikidata:"Q242767",signature:{domain:["FunctionOf","Sets","Sets"]}},Intersection:{wikidata:"Q185837",threadable:!0,associative:!0,commutative:!0,involution:!0,signature:{domain:["FunctionOf","Anything",["VarArg","Anything"],"Anything"],canonical:(e,n)=>n.length===0?e.symbol("EmptySet"):n.length===1?n[0]:n[0].head==="Domain"?e.domain(["Intersection",...n]):e._fn("Intersection",n),evaluate:ff}},Union:{wikidata:"Q185359",threadable:!0,associative:!0,commutative:!0,involution:!0,signature:{domain:["FunctionOf","Anything",["VarArg","Anything"],"Anything"],canonical:(e,n)=>n.length===0?e.symbol("EmptySet"):n.length===1?n[0]:n[0].head==="Domain"?e.domain(["Union",...n]):e._fn("Union",n),evaluate:lf}},SetMinus:{wikidata:"Q18192442",signature:{domain:["FunctionOf","Sets","Values","Sets"],evaluate:df}},SymmetricDifference:{wikidata:"Q1147242",signature:{domain:["FunctionOf","Sets",["VarArg","Sets"],"Sets"]}}};function lf(e,n){return e.False}function ff(e,n){return e.symbol("EmptySet")}function df(e,n){return e.symbol("EmptySet")}function cf(e,n){n.length;let[i,t]=n;if(t.string)return i.string&&t.string.includes(i.string)?e.True:e.False;if(t.keys){if(i.string){for(let r of t.keys)if(r===i.string)return e.True}return e.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 e.True}return e.False}let r=i.head==="Hold"?i.op1:i;for(let o of t.ops)if(r.isEqual(o))return e.True;return e.False}return xn(t)&&i.domain?i.domain.isCompatible(e.domain(t))?e.True:e.False:e._fn("Element",[i,t])}var ka=[{Mean:{complexity:1200,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],evaluate:(e,n)=>{let i=0,t=0;for(let r of je(n)){let o=b(r);if(o===null)return;i+=o,t++}return t===0?e.NaN:e.number(i/t)}}},Median:{complexity:1200,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],evaluate:(e,n)=>{let i=[];for(let r of je(n)){let o=b(r);if(o===null)return;i.push(o)}if(i.length===0)return e.NaN;i.sort((r,o)=>r-o);let t=Math.floor(i.length/2);return i.length%2===0?e.number((i[t-1]+i[t])/2):e.number(i[t])}}},Variance:{complexity:1200,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],evaluate:(e,n)=>{let i=0,t=0,r=0;for(let o of je(n)){let s=b(o);if(s===null)return;i+=s,t+=s*s,r++}return r===0?e.NaN:e.number((t-i*i/r)/(r-1))}}},StandardDeviation:{complexity:1200,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],evaluate:(e,n)=>{let i=0,t=0,r=0;for(let o of je(n)){let s=b(o);if(s===null)return;i+=s,t+=s*s,r++}return r===0?e.NaN:e.number(Math.sqrt((t-i*i/r)/(r-1)))}}},Kurtosis:{complexity:1200,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],evaluate:(e,n)=>{let i=0,t=0,r=0,o=0;for(let u of je(n)){let l=b(u);if(l===null)return;i+=l,t+=l*l,r+=l*l*l*l,o++}if(o===0)return e.NaN;let s=(t-i*i/o)/(o-1),a=(r-t*t/o)/(o-1);return e.number((a/(s*s)-3)*(o*(o+1))/6)}}},Skewness:{complexity:1200,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],evaluate:(e,n)=>{let i=0,t=0,r=0,o=0;for(let u of je(n)){let l=b(u);if(l===null)return;i+=l,t+=l*l,r+=l*l*l,o++}if(o===0)return e.NaN;let s=(t-i*i/o)/(o-1),a=(r-t*i/o)/(o-1);return e.number(a/Math.pow(s,3/2)*Math.sqrt(o*1))}}},Mode:{complexity:1200,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],evaluate:(e,n)=>{let i=[];for(let s of je(n)){let a=b(s);if(a===null)return;i.push(a)}if(i.length===0)return e.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 e.number(o)}}},Quartiles:{complexity:1200,signature:{domain:["FunctionOf",["VarArg","Values"],"Lists"],evaluate:(e,n)=>{let i=[];for(let s of je(n)){let a=b(s);if(a===null)return;i.push(a)}if(i.length===0)return e.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 e.box(["List",e.number(i[t]),e.number(r[Math.floor(r.length/2)]),e.number(o[Math.floor(o.length/2)])])}}},InterquartileRange:{complexity:1200,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],evaluate:(e,n)=>{let i=[];for(let s of je(n)){let a=b(s);if(a===null)return;i.push(a)}if(i.length===0)return e.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 e.number(o[Math.floor(o.length/2)]-r[Math.floor(r.length/2)])}}},Count:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],evaluate:(e,n)=>{let i=0;for(let t of je(n))i++;return e.number(i)}}},Erf:{complexity:7500,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=b(n[0]);if(i!==null)return e.number(kr(i))}}},Erfc:{complexity:7500,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=b(n[0]);if(i!==null)return e.number(1-kr(i))}}},ErfInv:{complexity:7500,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=b(n[0]);if(i!==null)return e.number(_s(i))}}}}];function*je(e){if(e.length===0)return;let n=e[0].engine;for(let i of e){let t=i.head;if(t==="Range"){let r=b(i[1]);if(r===null)return;let o=b(i[2]);if(o===null&&(o=r,r=1),r>o){let a=b(i[3]??-1)??-1;if(a>=0)return;for(let u=r;u<=o;u+=a)yield n.number(u);return}let s=b(i[3]??1)??1;if(s<=0)return;for(let a=r;a<=o;a+=s)yield n.number(a);return}if(t==="Linspace"){let r=b(i[1]);if(r===null)return;let o=b(i[2]);o===null&&(o=r,r=0);let s=b(i[3])??50;if(!Number.isInteger(s)||s<=0)return;let a=(o-r)/(s-1);for(let u=r;u<=o;u+=a)yield n.number(u);return}if(typeof t=="string"&&/^(List|Sequence|Tuple|Single|Pair|Triple)$/.test(t)){yield*je(i.ops);return}yield i}}var fn=e=>["FunctionOf","Numbers","ExtendedRealNumbers"],zt=e=>["FunctionOf","Numbers","Numbers"],Nn=e=>["FunctionOf","Numbers","Numbers"],Ta=[{Pi:{domain:"TranscendentalNumbers",flags:{algebraic:!1},constant:!0,holdUntil:"N",wikidata:"Q167",value:e=>O(e)?e._BIGNUM_PI:Math.PI}},{Degrees:{signature:{domain:["FunctionOf","Numbers","Numbers"],canonical:(e,n)=>{if(n=ke(e,n,1),n.length!==1)return e._fn("Degrees",n);let i=n[0];return i.numericValue===null||!i.isValid?e._fn("Degrees",n):e.div(e.mul([i,e.Pi]),e.number(180))},evaluate:(e,n)=>e.mul([n[0],e.div(e.Pi,e.number(180))]).evaluate()}},Hypot:{signature:{domain:["FunctionOf","Numbers","Numbers","NonNegativeNumbers"],simplify:(e,n)=>e.box(["Sqrt",["Add",["Square",n[0]],["Square",n[1]]]]).simplify(),evaluate:["Function",["Sqrt",["Add",["Square","_1"],["Square","_2"]]]]}},Sin:{complexity:5e3,signature:{domain:["FunctionOf","Numbers","Numbers"],simplify:(e,n)=>fe(e,"Sin",n[0])?.simplify()??(Z(e)?e.box(["Divide",["Subtract",["Exp",["Multiply","ImaginaryUnit",n[0]]],["Exp",["Multiply","ImaginaryUnit",["Negate",n[0]]]]],["Complex",0,2]]).simplify():void 0),evaluate:(e,n)=>S(e,"evaluate","Sin",n[0]),N:(e,n)=>S(e,"N","Sin",n[0])}}},{Arctan:{wikidata:"Q2257242",complexity:5200,signature:{domain:fn("Arctan"),simplify:(e,n)=>fe(e,"Arctan",n[0])?.simplify(),evaluate:(e,n)=>S(e,"evaluate","Arctan",n[0]),N:(e,n)=>S(e,"N","Arctan",n[0])}},Arctan2:{wikidata:"Q776598",complexity:5200,signature:{domain:["FunctionOf","Numbers","Numbers","Numbers"],N:(e,n)=>yn(n[0],n[1],Math.atan2,(i,t)=>E.atan2(i,t))}},Cos:{complexity:5050,signature:{domain:["FunctionOf","Numbers","Numbers"],simplify:(e,n)=>fe(e,"Cos",n[0])?.simplify()??e.box(["Sin",["Add",n[0],["Multiply","Half","Pi"]]]).simplify(),evaluate:(e,n)=>S(e,"evaluate","Cos",n[0]),N:(e,n)=>S(e,"N","Cos",n[0])}},Tan:{complexity:5100,signature:{domain:zt("Tan"),simplify:(e,n)=>fe(e,"Tan",n[0])?.simplify()??e.box(["Divide",["Sin",n[0]],["Cos",n[0]]]).simplify(),evaluate:(e,n)=>S(e,"evaluate","Tan",n[0]),N:(e,n)=>S(e,"N","Tan",n[0])}}},{Arcosh:{complexity:6200,signature:{domain:Nn("Arcosh"),simplify:(e,n)=>fe(e,"Arcosh",n[0])?.simplify()??e.box(["Ln",["Add",n[0],["Sqrt",["Subtract",["Square",n[0]],1]]]]).simplify(),evaluate:(e,n)=>S(e,"evaluate","Arcosh",n[0]),N:(e,n)=>S(e,"N","Arcosh",n[0])}},Arcsin:{complexity:5500,signature:{domain:Nn("Arcsin"),simplify:(e,n)=>fe(e,"Arcsin",n[0])?.simplify()??e.box(["Multiply",2,["Arctan2",n[0],["Add",1,["Sqrt",["Subtract",1,["Square",n[0]]]]]]]).simplify(),evaluate:(e,n)=>S(e,"evaluate","Arcsin",n[0]),N:(e,n)=>S(e,"N","Arcsin",n[0])}},Arsinh:{complexity:6100,signature:{domain:Nn("Arsinh"),simplify:(e,n)=>fe(e,"Arsinh",n[0])?.simplify()??e.box(["Ln",["Add",n[0],["Sqrt",["Add",["Square",n[0]],1]]]]).simplify(),evaluate:(e,n)=>S(e,"evaluate","Arsinh",n[0]),N:(e,n)=>S(e,"N","Arsinh",n[0])}},Artanh:{complexity:6300,signature:{domain:Nn("Artanh"),simplify:(e,n)=>fe(e,"Artanh",n[0])?.simplify()??e.box(["Multiply","Half",["Ln",["Divide",["Add",1,n[0]],["Subtract",1,n[0]]]]]).simplify(),evaluate:(e,n)=>S(e,"evaluate","Artanh",n[0]),N:(e,n)=>S(e,"N","Artanh",n[0])}},Cosh:{complexity:6050,signature:{domain:Nn("Cosh"),simplify:(e,n)=>fe(e,"Cosh",n[0])?.simplify()??e.box(["Multiply","Half",["Add",["Exp",n[0]],["Exp",["Negate",n[0]]]]]).simplify(),evaluate:(e,n)=>S(e,"evaluate","Cosh",n[0]),N:(e,n)=>S(e,"N","Cosh",n[0])}},Cot:{complexity:5600,signature:{domain:zt("Cot"),simplify:(e,n)=>fe(e,"Cot",n[0])?.simplify()??e.box(["Divide",["Cos",n[0]],["Sin",n[0]]]).simplify(),evaluate:(e,n)=>S(e,"evaluate","Cot",n[0]),N:(e,n)=>S(e,"N","Cot",n[0])}},Csc:{description:"Cosecant",complexity:5600,signature:{domain:zt("Csc"),simplify:(e,n)=>fe(e,"Csc",n[0])?.simplify()??e.box(["Divide",1,["Sin",n[0]]]).simplify(),evaluate:(e,n)=>S(e,"evaluate","Csc",n[0]),N:(e,n)=>S(e,"N","Csc",n[0])}},Haversine:{wikidata:"Q2528380",signature:{domain:["FunctionOf","ExtendedRealNumbers","Numbers"],evaluate:["Divide",["Subtract",1,["Cos","_1"]],2]}},InverseHaversine:{signature:{domain:["FunctionOf","ExtendedRealNumbers","RealNumbers"],evaluate:["Multiply",2,["Arcsin",["Sqrt","_1"]]]}},Sec:{description:"Secant, inverse of cosine",complexity:5500,signature:{domain:zt("Sec"),simplify:(e,n)=>fe(e,"Sec",n[0])?.simplify()??e.box(["Divide",1,["Cos",n[0]]]).simplify(),evaluate:(e,n)=>S(e,"evaluate","Sec",n[0]),N:(e,n)=>S(e,"N","Sec",n[0])}},Sinh:{complexity:6e3,signature:{domain:Nn("Sinh"),simplify:(e,n)=>fe(e,"Sinh",n[0])?.simplify()??e.box(["Multiply","Half",["Subtract",["Exp",n[0]],["Exp",["Negate",n[0]]]]]).simplify(),evaluate:(e,n)=>S(e,"evaluate","Sinh",n[0]),N:(e,n)=>S(e,"N","Sinh",n[0])}}},{Csch:{complexity:6200,signature:{domain:fn("Csch"),simplify:(e,n)=>fe(e,"Csch",n[0])?.simplify()??e.box(["Divide",1,["Sinh",n[0]]]).simplify(),evaluate:(e,n)=>S(e,"evaluate","Csch",n[0]),N:(e,n)=>S(e,"N","Csch",n[0])}},Sech:{complexity:6200,signature:{domain:["FunctionOf","Numbers","Numbers"],simplify:(e,n)=>fe(e,"Sech",n[0])?.simplify()??e.box(["Divide",1,["Cosh",n[0]]]).simplify(),evaluate:(e,n)=>S(e,"evaluate","Sech",n[0]),N:(e,n)=>S(e,"N","Sech",n[0])}},Tanh:{complexity:6200,signature:{domain:Nn("Tanh"),simplify:(e,n)=>fe(e,"Tanh",n[0])?.simplify()??e.box(["Divide",["Sinh",n[0]],["Cosh",n[0]]]).simplify(),evaluate:(e,n)=>S(e,"evaluate","Tanh",n[0]),N:(e,n)=>S(e,"N","Tanh",n[0])}}},{Arccos:{complexity:5550,signature:{domain:fn("Arccos"),simplify:(e,n)=>fe(e,"Arccos",n[0])?.simplify()??e.box(["Subtract",["Divide","Pi",2],["Arcsin",n[0]]]).simplify(),evaluate:(e,n)=>S(e,"evaluate","Arccos",n[0]),N:(e,n)=>S(e,"N","Arccos",n[0])}},Arccot:{numeric:!0,signature:{domain:fn("Arccot"),evaluate:(e,n)=>S(e,"evaluate","Arccot",n[0]),N:(e,n)=>S(e,"N","Arccot",n[0])}},Arcoth:{numeric:!0,signature:{domain:fn("Arcoth"),evaluate:(e,n)=>S(e,"evaluate","Arcoth",n[0]),N:(e,n)=>S(e,"N","Arcoth",n[0])}},Arcsch:{numeric:!0,signature:{domain:fn("Arcsch"),evaluate:(e,n)=>S(e,"evaluate","Arcsch",n[0]),N:(e,n)=>S(e,"N","Arcsch",n[0])}},Arcsec:{numeric:!0,signature:{domain:fn("Arcsec"),evaluate:(e,n)=>S(e,"evaluate","Arcsec",n[0]),N:(e,n)=>S(e,"N","Arcsec",n[0])}},Arsech:{numeric:!0,signature:{domain:fn("Arsech"),evaluate:(e,n)=>S(e,"evaluate","Arsech",n[0]),N:(e,n)=>S(e,"N","Arsech",n[0])}},Arccsc:{numeric:!0,signature:{domain:fn("Arccsc"),evaluate:(e,n)=>S(e,"evaluate","Arccsc",n[0]),N:(e,n)=>S(e,"N","Arccsc",n[0])}},Coth:{complexity:6300,signature:{domain:Nn("Coth"),simplify:(e,n)=>fe(e,"Coth",n[0])?.simplify()??e.box(["Divide",1,["Tanh",n[0]]]).simplify(),evaluate:(e,n)=>S(e,"evaluate","Coth",n[0]),N:(e,n)=>S(e,"N","Coth",n[0])}},InverseFunction:{signature:{domain:["FunctionOf","Functions","Functions"],canonical:(e,n)=>(n=Ne(e,n,1),to(e,n)??e._fn("InverseFunction",n)),simplify:(e,n)=>to(e,n),evaluate:(e,n)=>to(e,n)}}}],vn=["Sqrt",2],ai=["Sqrt",3],ui=["Sqrt",5],Ut=["Sqrt",6],mf=[[[0,1],{Sin:0,Cos:1,Tan:0,Cot:NaN,Sec:1,Csc:NaN}],[[1,12],{Sin:["Divide",["Subtract",Ut,vn],4],Cos:["Divide",["Add",Ut,vn],4],Tan:["Subtract",2,ai],Cot:["Add",2,ai],Sec:["Subtract",Ut,vn],Csc:["Add",Ut,vn]}],[[1,10],{Sin:["Divide",["Subtract",ui,1],4],Cos:["Divide",["Sqrt",["Add",10,["Multiply",2,ui]]],4],Tan:["Divide",["Sqrt",["Subtract",25,["Multiply",10,ui]]],4],Cot:["Sqrt",["Add",5,["Multiply",2,ui]]],Sec:["Divide",["Sqrt",["Subtract",50,["Multiply",10,ui]]],5],Csc:["Add",1,ui]}],[[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:"$\\frac{2\\sqrt{3}}{3}$",Sec:"$\\sqrt{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",vn,2],Cos:["Divide",vn,2],Tan:1,Cot:1,Sec:vn,Csc:vn}],[[3,10],{Sin:"$\\frac{1+ \\sqrt{5}} {4}$",Cos:"$\\frac{\\sqrt{10- 2\\sqrt{5}}} {4}$",Tan:"$\\frac{\\sqrt{25+10\\sqrt5}} {5}$",Cot:"$\\sqrt{5-2\\sqrt5}$",Sec:"$$",Csc:"$\\frac{\\sqrt{50+10\\sqrt{5}}} {5}$"}],[[1,3],{Sin:["Divide",ai,2],Cos:"Half",Tan:ai,Cot:["Divide",ai,3],Sec:2,Csc:["Divide",["Multiply",2,ai],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:NaN,Cot:0,Sec:NaN,Csc:1}]],pf={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 fe(e,n,i){if(!i)return;let t=e.cache("constructible-trigonometric-values",()=>{let u=[];for(let[l,f]of mf){let d={};for(let c of Object.keys(f))d[c]=e.parse(Kn(f[c]))??e.box(f[c]);u.push([l,d])}return u},u=>{for(let[l,f]of u)for(let d of Object.values(f))d.reset();return u});if(i=i.N(),i.numericValue===null)return;let r=b(i)??null;if(r===null)return;r=r%(2*Math.PI);let o=n!=="Cos"&&n!=="Sec"?Math.sign(r):1;r=Math.abs(r);let s=Math.floor(r*2/Math.PI);r=r%(Math.PI/2);let a;[a,n]=pf[n]?.[s]??[1,n],a=a*o;for(let[[u,l],f]of t)if(f[n]&&e.chop(r-Math.PI*u/l)===0)return a<0?Y(f[n]):f[n]}function to(e,n){if(n.length!==1||!n[0].isValid)return;let i=n[0],t=i.symbol;if(typeof t!="string")return;if(t==="InverseFunction")return i.op1;let r={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"}[t];return r?e.symbol(r):void 0}function S(e,n,i,t){if(t){if(n==="evaluate"){let r=fe(e,i,t)?.evaluate();if(r)return r;if(t.isExact)return}switch(i){case"Arccos":return A(t,Math.acos,r=>r.acos(),r=>r.acos());case"Arccot":return A(t,r=>Math.atan2(1,r),r=>E.atan2(e._BIGNUM_ONE,r),r=>r.inverse().atan());case"Arccsc":return A(t,r=>Math.asin(1/r),r=>e._BIGNUM_ONE.div(r).asin(),r=>r.inverse().asin());case"Arcosh":return A(t,Math.acosh,r=>r.acosh(),r=>r.acosh());case"Arcoth":return A(t,r=>r,r=>r.acosh(),r=>r.acosh());case"Arcsch":return A(t,r=>Math.log(1/r+Math.sqrt(1/(r*r)+1)),r=>e._BIGNUM_ONE.div(r.mul(r)).add(e._BIGNUM_ONE).sqrt().add(e._BIGNUM_ONE.div(r)).log(),r=>r.mul(r).inverse().add(1).sqrt().add(r.inverse()).log());case"Arcsec":return A(t,r=>Math.acos(1/r),r=>e._BIGNUM_ONE.div(r).acos(),r=>r.inverse().acos());case"Arcsin":return A(t,Math.asin,r=>r.asin(),r=>r.asin());case"Arsech":return A(t,r=>Math.log((1+Math.sqrt(1-r*r))/r),r=>e._BIGNUM_ONE.sub(r.mul(r).add(e._BIGNUM_ONE).div(r)).log(),r=>e.complex(1).sub(r.mul(r)).add(1).div(r).log());case"Arsinh":return A(t,Math.asinh,r=>r.asinh(),r=>r.asinh());case"Arctan":return A(t,Math.atan,r=>r.atan(),r=>r.atan());case"Artanh":return A(t,Math.atanh,r=>r.atanh(),r=>r.atanh());case"Cos":return A(t,Math.cos,r=>r.toSignificantDigits(e.precision+4).cos().toSignificantDigits(e.precision),r=>r.cos());case"Cosh":return A(t,Math.cosh,r=>r.cosh(),r=>r.cosh());case"Cot":return A(t,r=>1/Math.tan(r),r=>e._BIGNUM_ONE.div(r.tan()),r=>r.tan().inverse());case"Coth":return A(t,r=>1/Math.tanh(r),r=>e._BIGNUM_ONE.div(r.tanh()),r=>r.tanh().inverse());case"Csc":return A(t,r=>1/Math.sin(r),r=>e._BIGNUM_ONE.div(r.sin()),r=>r.sin().inverse());case"Csch":return A(t,r=>1/Math.sinh(r),r=>e._BIGNUM_ONE.div(r.sinh()),r=>r.sinh().inverse());case"Sec":return A(t,r=>1/Math.cos(r),r=>e._BIGNUM_ONE.div(r.cos()),r=>r.cos().inverse());case"Sech":return A(t,r=>1/Math.cosh(r),r=>e._BIGNUM_ONE.div(r.cosh()),r=>r.cosh().inverse());case"Sin":return A(t,Math.sin,r=>r.toSignificantDigits(e.precision+4).sin().toSignificantDigits(e.precision),r=>r.sin());case"Sinh":return A(t,Math.sinh,r=>r.sinh(),r=>r.sinh());case"Tan":return A(t,Math.tan,r=>r.toSignificantDigits(e.precision+4).tan().toSignificantDigits(e.precision),r=>r.tan());case"Tanh":return A(t,Math.tanh,r=>r.tanh(),r=>r.tanh())}}}var wa=se(te());var X=class{constructor(n,i,t){if(!n.context)throw Error("No context available");this.name=i,this.wikidata=t.wikidata,this.description=t.description,this.url=t.url,this._engine=n,this.scope=n.context,this.name=i,this._flags=t.flags?Vi(t.flags):void 0,this._domain=t.domain?n.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?Xn(t.value)?this._value=n.parse(t.value)??n.symbol("Undefined"):typeof t.value=="function"?this._value=n.box(t.value(n)??"Undefined"):t.value instanceof F?this._value=t.value:this._value=n.box(t.value):this._value=void 0,!this._value&&this._domain&&!t.flags&&(this._flags=Gt(this._domain))),this._value&&!this._domain&&(this._domain=this._value.domain,this.inferredDomain=!0)}update(n){n.wikidata&&(this.wikidata=n.wikidata),n.description&&(this.description=n.description),n.url&&(this.url=n.url);let i=n?.flags,t=n?.domain?this._engine.domain(n.domain):void 0;t&&(i={...Gt(t),...i??{}}),i&&(this._flags=Vi(i)),t&&(this._domain=t,this.inferredDomain=!1),n.holdUntil&&(this.holdUntil=n.holdUntil),n.constant?(this.constant=n.constant,this._defValue=n.value,this._value=null):n.value&&(Xn(n.value)?this._value=this._engine.parse(n.value)??this._engine.symbol("Undefined"):typeof n.value=="function"?this._value=this._engine.box(n.value(this._engine)??"Undefined"):n.value instanceof F?this._value=n.value:this._value=this._engine.box(n.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 n=this._engine;if(Xn(this._defValue)?this._value=n.parse(this._defValue)??n.symbol("Undefined"):typeof this._defValue=="function"?this._value=n.box(this._defValue(n)??"Undefined"):this._defValue?this._value=n.box(this._defValue):this._value=void 0,this._value?.numericValue){let i=this._value.numericValue;!O(n)&&i instanceof E?this._value=n.number(i.toNumber()):!Z(n)&&i instanceof wa.Complex&&(this._value=n.NaN)}}return this._value??void 0}set value(n){if(this.constant)throw new Error(`The value of the constant "${this.name}" cannot be changed`);if(this._defValue,typeof n=="number")this._value=this._engine.number(n);else if(n){let i=this._engine.box(n);this.inferredDomain?(this._value=i,this._domain=bn(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=Gt(this._domain)}get domain(){return this._domain??void 0}set domain(n){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(!n){this._defValue=void 0,this._value=void 0,this._flags=void 0,this._domain=void 0;return}if(n=this._engine.domain(n),this._domain&&!n.isCompatible(this._domain))throw Error(`The domain of "${this.name}" cannot be widened from "${this._domain.base}" to "${n.base}"`);if(this._value?.domain&&!this._value.domain.isCompatible(n))throw Error(`The domain of "${this.name}" cannot be changed to "${n.base}" because its value has a domain of "${this._value.domain.base}"`);this._domain=n,this._flags=void 0,this._value===void 0&&n.isNumeric&&(this._flags=Gt(n))}get number(){return this.value?.isNumber??this._flags?.number}set number(n){this.updateFlags({number:n})}get integer(){return this.value?.isInteger??this._flags?.integer}set integer(n){this.updateFlags({integer:n})}get rational(){return this.value?.isRational??this._flags?.rational}set rational(n){this.updateFlags({rational:n})}get algebraic(){return this.value?.isAlgebraic??this._flags?.algebraic}set algebraic(n){this.updateFlags({algebraic:n})}get real(){return this.value?.isReal??this._flags?.real}set real(n){this.updateFlags({real:n})}get extendedReal(){return this.value?.isExtendedReal??this._flags?.extendedReal}set extendedReal(n){this.updateFlags({extendedReal:n})}get complex(){return this.value?.isComplex??this._flags?.complex}set complex(n){this.updateFlags({complex:n})}get extendedComplex(){return this.value?.isExtendedComplex??this._flags?.extendedComplex}set extendedComplex(n){this.updateFlags({extendedComplex:n})}get imaginary(){return this.value?.isImaginary??this._flags?.imaginary}set imaginary(n){this.updateFlags({imaginary:n})}get positive(){return this.value?.isPositive??this._flags?.positive}set positive(n){this.updateFlags({positive:n})}get nonPositive(){return this.value?.isNonPositive??this._flags?.nonPositive}set nonPositive(n){this.updateFlags({nonPositive:n})}get negative(){return this.value?.isNegative??this._flags?.negative}set negative(n){this.updateFlags({negative:n})}get nonNegative(){return this.value?.isNonNegative??this._flags?.nonNegative}set nonNegative(n){this.updateFlags({nonNegative:n})}get zero(){return this.value?.isZero??this._flags?.zero}set zero(n){this.updateFlags({zero:n})}get notZero(){return this.value?.isNotZero??this._flags?.notZero}set notZero(n){this.updateFlags({notZero:n})}get one(){return this.value?.isOne??this._flags?.one}set one(n){this.updateFlags({one:n})}get negativeOne(){return this.value?.isNegativeOne??this._flags?.negativeOne}set negativeOne(n){this.updateFlags({negativeOne:n})}get infinity(){return this.value?.isInfinity??this._flags?.infinity}set infinity(n){this.updateFlags({infinity:n})}get finite(){return this.value?.isFinite??this._flags?.finite}set finite(n){this.updateFlags({finite:n})}get NaN(){return this.value?.isNaN??this._flags?.NaN}set NaN(n){this.updateFlags({NaN:n})}get even(){return this.value?.isEven??this._flags?.even}set even(n){this.updateFlags({even:n})}get odd(){return this.value?.isOdd??this._flags?.odd}set odd(n){this.updateFlags({odd:n})}get prime(){let n=this._value;return n?!n.isInteger||n.isNonPositive?!1:En(b(n)??NaN):this._flags?.prime}set prime(n){this.updateFlags({prime:n})}get composite(){let n=this._value;return n?!n.isInteger||n.isNonPositive?!1:!En(b(n)??NaN):this._flags?.composite}set composite(n){this.updateFlags({composite:n})}updateFlags(n){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(n))if(i+=1,this._value&&n[r]!==void 0)switch(r){case"number":t=this._value.isNumber===n.number;break;case"integer":t=this._value.isInteger===n.integer;break;case"rational":t=this._value.isRational===n.rational;break;case"algebraic":t=this._value.isAlgebraic===n.algebraic;break;case"real":t=this._value.isReal===n.real;break;case"extendedReal":t=this._value.isExtendedReal===n.extendedReal;break;case"complex":t=this._value.isComplex===n.complex;break;case"extendedComplex":t=this._value.isExtendedComplex===n.extendedComplex;break;case"imaginary":t=this._value.isImaginary===n.imaginary;break;case"positive":t=this._value.isPositive===n.positive;break;case"nonPositive":t=this._value.isNonPositive===n.nonPositive;break;case"negative":t=this._value.isNegative===n.negative;break;case"nonNegative":t=this._value.isNonNegative===n.nonNegative;break;case"zero":t=this._value.isZero===n.zero;break;case"notZero":t=this._value.isNotZero===n.notZero;break;case"one":t=this._value.isOne===n.one;break;case"negativeOne":t=this._value.isNegativeOne===n.negativeOne;break;case"infinity":t=this._value.isInfinity===n.infinity;break;case"NaN":t=this._value.isNaN===n.NaN;break;case"finite":t=this._value.isFinite===n.finite;break;case"even":t=this._value.isEven===n.even;break;case"odd":t=this._value.isOdd===n.odd;break;case"prime":t=this._value.isPrime===n.prime;break;case"composite":t=this._value.isComposite===n.composite;break}i>0&&(t||(this._defValue=void 0,this._value=void 0),this._domain=this._engine.Numbers,this._flags?this._flags={...this._flags,...Vi(n)}:this._flags=Vi(n))}};function gf(e){return Object.fromEntries(Object.entries(e).filter(([n,i])=>i!==void 0))}function Vi(e){let n={...e};return(e.zero||e.one||e.negativeOne)&&(n.zero=e.zero&&!e.one&&!e.negativeOne,n.notZero=!e.zero||e.one||e.negativeOne,n.one=e.one&&!e.zero&&!e.negativeOne,n.negativeOne=e.negativeOne&&!e.zero&&!e.one,n.infinity=!1,n.NaN=!1,n.finite=!0,n.integer=!0,n.finite=!0,n.infinity=!1,n.NaN=!1,n.even=e.one,n.odd=!e.one,n.prime=!1,n.composite=!1),n.zero&&(n.positive=!1,n.negative=!1,n.nonPositive=!0,n.nonNegative=!0),n.notZero===!0&&(n.imaginary||(n.real=!0),n.zero=!1),n.one&&(n.positive=!0),n.negativeOne&&(n.nonPositive=!0),(n.positive||n.nonNegative)&&(n.negativeOne=!1),n.positive?(n.nonPositive=!1,n.negative=!1,n.nonNegative=!0):n.nonPositive?(n.positive=!1,n.negative=n.notZero,n.nonNegative=!n.zero):n.negative?(n.positive=!1,n.nonPositive=n.notZero,n.nonNegative=!1):n.nonNegative&&(n.positive=n.notZero,n.nonPositive=!n.zero,n.negative=!1),(n.positive||n.negative||n.nonPositive||n.nonNegative)&&(n.number=!0,n.finite?n.real=!0:n.finite||(n.complex=!0),n.imaginary=!1),n.finite&&(n.number=!0,n.complex=!0,n.infinity=!1,n.NaN=!1),n.infinity&&(n.finite=!1,n.NaN=!1),n.infinity===!1&&(n.extendedComplex=!1,n.extendedReal=!1),e.even&&(n.odd=!1),e.odd&&(n.even=!1),n.integer&&(n.rational=!0),n.rational&&(n.algebraic=!0),n.algebraic&&(n.real=!0),n.real&&(n.complex=!0),n.imaginary&&(n.complex=!0),n.complex&&(n.number=!0),n.real&&n.infinity!==!1&&(n.extendedReal=!0),n.complex&&n.infinity!==!1&&(n.extendedComplex=!0),(n.even||n.infinity||n.NaN||n.negative||n.imaginary||n.integer===!1)&&(n.prime=!1),n.number&&n.prime&&(n.composite=!1),n}function Gt(e){if(!e)return{};let n={};if(!e.isNumeric)return n.number=!1,n.integer=!1,n.rational=!1,n.algebraic=!1,n.real=!1,n.extendedReal=!1,n.complex=!1,n.extendedComplex=!1,n.imaginary=!1,n.positive=!1,n.nonPositive=!1,n.negative=!1,n.nonNegative=!1,n.zero=!1,n.notZero=!1,n.one=!1,n.negativeOne=!1,n.infinity=!1,n.NaN=!1,n.odd=!1,n.even=!1,n.prime=!1,n.composite=!1,n;let i=e.base;return n.number=!0,i==="Integers"&&(n.integer=!0),i==="RationalNumbers"&&(n.rational=!0),i==="AlgebraicNumbers"&&(n.algebraic=!0),i==="TranscendentalNumbers"&&(n.algebraic=!1,n.real=!0),i==="ExtendedRealNumbers"&&(n.extendedReal=!0),i==="RealNumbers"&&(n.real=!0),i==="ImaginaryNumbers"&&(n.imaginary=!0),i==="ExtendedComplexNumbers"&&(n.extendedComplex=!0),i==="ComplexNumbers"&&(n.complex=!0),i==="PositiveNumbers"&&(n.notZero=!0,n.real=!0,n.positive=!0),i==="NegativeNumbers"&&(n.notZero=!0,n.real=!0,n.negative=!0),i==="NonNegativeNumbers"&&(n.real=!0,n.positive=!0),i==="NonPositiveNumbers"&&(n.real=!0,n.negative=!0),i==="PositiveIntegers"&&(n.notZero=!0,n.integer=!0,n.positive=!0),i==="NegativeNumbers"&&(n.notZero=!0,n.integer=!0,n.negative=!0),i==="NonNegativeNumbers"&&(n.integer=!0,n.positive=!0),i==="NonPositiveNumbers"&&(n.integer=!0,n.negative=!0),gf(Vi(n))}var Oe=class{constructor(n,i,t){if(!n.context)throw Error("No context available");this.engine=n,this.scope=n.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??Ze,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,u=0;for(;a(s,u)!==void 0;)u++;return u}),t.at&&!t.iterator&&(this.iterator=(s,a=1,u=-1)=>{let l=t.at,f=a;return{next(){if(u>=0&&f>=a+u)return{done:!0,value:void 0};let d=l(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 u=1,l=this.iterator(s),f=l.next();for(;!f.done;){if(a.isEqual(f.value))return u;u++,f=l.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=s.domain?n.domain(s.domain):t.numeric?n.domain("NumericFunctions"):n.domain("Functions");if(!a.isValid)throw Error(`Function Definition "${i}": invalid domain ${JSON.stringify(s.domain)}`);let u=s.codomain??a.result??(t.numeric?n.Numbers:n.Anything),l;if(s.evaluate&&typeof s.evaluate!="function"){let f=n.box(s.evaluate,{canonical:!1});if(!f.isValid)throw Error(`Invalid function ${f.toString()}`);let d=Pn(f);l=(c,p)=>d(p),l.toString=()=>f.toString()}else l=s.evaluate;this.signature={domain:a,codomain:u,canonical:s.canonical,simplify:s.simplify,evaluate:l,N:s.N,evalDimension:s.evalDimension,sgn:s.sgn,compile:s.compile}}else t.numeric?this.signature={domain:n.domain("NumericFunctions"),codomain:n.Numbers}:this.signature={domain:n.domain("Functions"),codomain:n.Anything}}reset(){}};function jt(e,n,i){return i instanceof Oe?i:new Oe(e,n,i)}function ro(e){if(e==="all")return ro(["core","control-structures","logic","collections","relop","numeric","arithmetic","trigonometry","algebra","calculus","polynomials","combinatorics","linear-algebra","statistics","dimensions","units","physics","other"]);typeof e=="string"&&(e=[e]);let n=[];for(let i of e){let t=hf[i];if(!t)throw Error(`Unknown library category ${i}`);Array.isArray(t)?n.push(...t):n.push(t)}return Object.freeze(n)}var hf={algebra:[],arithmetic:[...la,...ga],calculus:fa,collections:[Da,ca,Os()],combinatorics:[],"control-structures":ma,core:xa,dimensions:[],domains:[],"linear-algebra":ba,logic:Sa,numeric:[],other:[],relop:Ba,polynomials:Ia,physics:{Mu0:{description:"Vaccum permeability",constant:!0,wikidata:"Q1515261",domain:"RealNumbers",value:125663706212e-17}},statistics:ka,trigonometry:Ta,units:[]};function xf(e){if(e=e.normalize(),ue(e))return e;throw new Error(`Invalid definition name "${e}": ${qe(e)}`)}function oo(e,n){var t;if(!e.context)throw Error("No context available");(t=e.context).ids??(t.ids=new Map);let i=e.context.ids;e.strict;for(let[r,o]of Object.entries(n))if(r=xf(r),$i(o)){let s=jt(e,r,o);if(i.has(r))throw new Error(`Duplicate function definition ${r}:
|
|
48
|
+
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:(e,n)=>Ea(e,n,"GCD")}},LCM:{description:"Least Common Multiple",complexity:1200,threadable:!1,signature:{domain:["FunctionOf",["VarArg","Anything"],"Numbers"],evaluate:(e,n)=>Ea(e,n,"LCM")}},Numerator:{description:"Numerator of an expression",complexity:1200,threadable:!0,hold:"all",signature:{domain:["FunctionOf","Anything","Numbers"],canonical:(e,n)=>{if(n.length===0)return e.box(["Sequence"]);let i=n[0];if(i.head==="Rational"||i.head==="Divide")return i.op1;let t=Z(i);return t!==void 0?e.number(t[0]):e._fn("Numerator",ee(n))},evaluate:(e,n)=>{if(n.length===0)return e.box(["Sequence"]);let i=n[0];if(i.head==="Rational"||i.head==="Divide")return i.op1;let t=Z(i);return t!==void 0?e.number(t[0]):e._fn("Numerator",ee(n))}}},Denominator:{description:"Denominator of an expression",complexity:1200,threadable:!0,hold:"all",signature:{domain:["FunctionOf","Anything","Numbers"],canonical:(e,n)=>{if(n.length===0)return e.box(["Sequence"]);let i=n[0];if(i.head==="Rational"||i.head==="Divide")return i.op2;let t=Z(i);return t!==void 0?e.number(t[1]):e._fn("Denominator",ee(n))},evaluate:(e,n)=>{if(n.length===0)return e.box(["Sequence"]);let i=n[0];if(i.head==="Rational"||i.head==="Divide")return i.op2;let t=Z(i);return t!==void 0?e.number(t[1]):e._fn("Denominator",ee(n))}}},NumeratorDenominator:{description:"Sequence of Numerator and Denominator of an expression",complexity:1200,threadable:!0,hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],canonical:(e,n)=>{if(n.length===0)return e.box(["Sequence"]);let i=n[0];if(i.head==="Rational"||i.head==="Divide")return e._fn("Sequence",i.ops);let t=Z(i);return t!==void 0?e._fn("Sequence",[e.number(t[0]),e.number(t[1])]):e._fn("NumeratorDenominator",ee(n))},evaluate:(e,n)=>{if(n.length===0)return e.box(["Sequence"]);let i=n[0];if(i.head==="Rational"||i.head==="Divide")return e._fn("Sequence",i.ops);let t=Z(i);return t!==void 0?e._fn("Sequence",[e.number(t[0]),e.number(t[1])]):e._fn("NumeratorDenominator",ee(n))}}}},{Max:{description:"Maximum of two or more numbers",complexity:1200,threadable:!1,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],simplify:(e,n)=>n.length===0?e.NegativeInfinity:n.length===1?n[0]:e.fn("Max",n),evaluate:(e,n)=>Zt(e,n,"Max")}},Min:{description:"Minimum of two or more numbers",complexity:1200,threadable:!1,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],simplify:(e,n)=>n.length===0?e.PositiveInfinity:n.length===1?n[0]:e.fn("Min",n),evaluate:(e,n)=>Zt(e,n,"Min")}},Supremum:{description:"Like Max, but defined for open sets",complexity:1200,threadable:!1,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],simplify:(e,n)=>n.length===0?e.NegativeInfinity:n.length===1?n[0]:e.fn("Min",n),evaluate:(e,n)=>Zt(e,n,"Supremum")}},Infimum:{description:"Like Min, but defined for open sets",complexity:1200,threadable:!1,signature:{domain:["FunctionOf",["VarArg","Values"],"Numbers"],simplify:(e,n)=>n.length===0?e.PositiveInfinity:n.length===1?n[0]:e.fn("Min",n),evaluate:(e,n)=>Zt(e,n,"Infimum")}},Product:{wikidata:"Q901718",complexity:1e3,hold:"all",threadable:!1,signature:{domain:["FunctionOf","Anything",["OptArg","Tuples"],"Numbers"],canonical:(e,n)=>ya(e,n[0],n[1]),simplify:(e,n)=>Ht(e,n[0],n[1],"simplify"),evaluate:(e,n)=>Ht(e,n[0],n[1],"evaluate"),N:(e,n)=>Ht(e,n[0],n[1],"N")}},Sum:{wikidata:"Q218005",complexity:1e3,hold:"all",threadable:!1,signature:{domain:["FunctionOf",["Union","Collections","Functions"],["OptArg","Tuples"],"Numbers"],canonical:(e,n)=>Xs(e,n[0],n[1]),simplify:(e,n)=>qt(e,n[0],n[1],"simplify"),evaluate:(e,n)=>qt(e,n[0],n[1],"evaluate"),N:(e,n)=>qt(e,n[0],n[1],"N")}},Limit:{description:"Limit of a function",complexity:5e3,hold:"all",threadable:!1,signature:{domain:["FunctionOf","Anything","Numbers",["OptArg","Numbers"],"Numbers"],N:(e,n)=>{let[i,t,r]=n,o=y(t.N());if(o===null)return;let s=Fn(i);return e.number(Dn(a=>{let u=s([e.number(a)])?.value;return typeof u=="number"?u:Number.NaN},o,r?y(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:(e,n)=>{let[i,t,r]=n,o=y(t.N());if(o===null)return;let s=Fn(i);return e.number(Dn(a=>{let u=s([e.number(a)])?.value;return typeof u=="number"?u:Number.NaN},o,r?y(r)??1:1))}}}},{BaseForm:{description:"`BaseForm(expr, base=10)`",complexity:9e3,inert:!0,signature:{domain:["FunctionOf","Values",["OptArg","Integers"],"Values"],result:(e,n)=>n[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:(e,n)=>{let i=n[0]?.string;if(!i)return e.domainError("Strings",n[0]?.domain,n[0]);if(i=i.trim(),i.startsWith("0x"))return e.number(parseInt(i.slice(2),16));if(i.startsWith("0b"))return e.number(parseInt(i.slice(2),2));let t=n[1]??e.Nothing;if(t.isNothing)return e.number(Number.parseInt(i,10));let r=y(t);if(r&&(!Number.isInteger(r)||r<2||r>36))return e.error(["unexpected-base",r],t);let[o,s]=Xn(i,t.string??t.symbol??10);return s?e.error(["unexpected-digit",{str:s[0]}],{str:s}):e.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:(e,n)=>{let i=n[0],t=y(i)??NaN;if(Number.isNaN(t)||!Number.isInteger(t))return e.domainError("Integers",i.domain,i);let r=n[1]??e.Nothing;if(r.isNothing){let s=i.numericValue;return typeof s=="number"?e.string(Math.abs(s).toString()):s instanceof E?e.string(s.abs().toString()):e.string(Math.abs(Math.round(y(i)??NaN)).toString())}if(w(r)===null)return e.domainError("Integers",r.domain,r);let o=w(r);return o<2||o>36?e.error(["out-of-range",2,36,o],r):e.string(Math.abs(t).toString(o))}}}}];function fo(e,n,i){if(i!=="simplify"){let t=n.numericValue;if(t!==null){if(typeof t=="number")return e.number(Math.abs(t));if(t instanceof E||t instanceof co.Complex)return e.number(t.abs());if(L(t))return e.number(i==="N"?Math.abs(t[0]/t[1]):[Math.abs(t[0]),t[1]]);if(U(t)){let[r,o]=t;return e.number(i==="N"?e.bignum(r).div(e.bignum(o)).abs():[r>0?r:-r,o])}}}if(n.isNonNegative)return n;if(n.isNegative)return e.neg(n)}function va(e,n){let i=e.engine,t=n==="Max"||n==="Supremum";if(e.head==="Interval"){let r=t?e.op2:e.op1;return!r.isNumber||r.numericValue===void 0?[void 0,[e]]:[r,[]]}if(e.head==="Range"){if(e.nops===1)e=t?e.op1:i.One;else if(!t)e=e.op1;else{let r=e.nops===2?1:y(e.op3);if(r===null||!isFinite(r))return[void 0,[e]];let[o,s]=[y(e.op1),y(e.op2)];if(o===null||s===null)return[void 0,[e]];let a=Math.floor((s-o)/r);e=i.number(o+r*a)}return[e,[]]}if(e.head==="Linspace")return e.nops===1?e=t?e.op1:i.One:t?e=e.op2:e=e.op1,[e,[]];if(ri(e)){let r,o=[];for(let s of Y(e)){let[a,u]=va(s,n);a&&(r?(t&&a.isGreater(r)||!t&&a.isLess(r))&&(r=a):r=a),o.push(...u)}return[r,o]}return!e.isNumber||e.numericValue===void 0?[void 0,[e]]:[e,[]]}function Zt(e,n,i){let t=i==="Max"||i==="Supremum";if(n.length===0)return t?e.NegativeInfinity:e.PositiveInfinity;let r,o=[];for(let s of n){let[a,u]=va(s,i);a&&(r?(t&&a.isGreater(r)||!t&&a.isLess(r))&&(r=a):r=a),o.push(...u)}return o.length>0?e.box(r?[i,r,...o]:[i,...o]):r??(t?e.NegativeInfinity:e.PositiveInfinity)}function Ea(e,n,i){let t=i==="LCM"?St:kn,r=i==="LCM"?ra:Zr,o=[];if(C(e)){let a=null;for(let u of n)if(a===null)a=Ae(u),(a===null||!a.isInteger())&&o.push(u);else{let l=Ae(u);l&&l.isInteger()?a=r(a,l):o.push(u)}return o.length===0?a===null?e.One:e.number(a):a===null?e._fn(i,o):e._fn(i,[e.number(a),...o])}let s=null;for(let a of n)if(s===null)s=y(a),(s===null||!Number.isInteger(s))&&o.push(a);else{let u=y(a);u&&Number.isInteger(u)?s=t(s,u):o.push(a)}return o.length===0?s===null?e.One:e.number(s):s===null?e._fn(i,o):e._fn(i,[e.number(s),...o])}var yf={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]],Exp:["Exp","_"],Ln:["Power","_",-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 Pe(e,n){let i=e.engine;if(!(e.string||e.keys)){if(e.numericValue!==null)return e.engine.Zero;if(e.symbol===n)return e.engine.One;if(e.symbol)return e.engine.Zero;if(e.head&&typeof e.head=="string"){if(e.head==="Negate"){let s=Pe(e.op1,n);return s?i.neg(s):i.neg(i._fn("D",[e.op1,i.symbol(n)]))}if(e.head==="Add"){let s=e.ops.map(a=>Pe(a,n));return s.some(a=>a===void 0)?void 0:i.add(s)}if(e.head==="Multiply"){let s=e.ops.map((a,u)=>{let l=e.ops.slice();l.splice(u,1);let f=i.mul(l),d=Pe(a,n)??i._fn("D",[a,i.symbol(n)]);return i.mul([d,f])});return s.some(a=>a===void 0)?void 0:i.add(s)}if(e.head==="Power"){let[s,a]=e.ops;if(s.symbol===n)return i.mul([a,i.pow(s,i.add([a,i.NegativeOne]))])}if(e.head==="Divide"){let[s,a]=e.ops,u=Pe(s,n)??i._fn("D",[s,i.symbol(n)]),l=Pe(a,n)??i._fn("D",[a,i.symbol(n)]);return i.div(i.add([i.mul([u,a]),i.neg(i.mul([l,s]))]),i.pow(a,2))}let t=yf[e.head];if(!t){let s=i._fn("Derivative",[i.symbol(e.head),i.number(1)]),a=e.ops[0],u=Pe(a,n)??i._fn("D",[a,i.symbol(n)]);return i.mul([i._fn("Apply",[s,a]),u])}if(e.nops>1)return i._fn("D",[e,i.symbol(n)]);let r=e.ops[0],o=Pe(r,n)??i._fn("D",[r,i.symbol(n)]);return i.mul([Ln(i.box(t),[r]),o])}}}var _a=[{Derivative:{hold:"all",threadable:!1,signature:{domain:["FunctionOf","Functions",["OptArg","Numbers"],"Functions"],canonical:(e,n)=>n[0].functionDefinition?Pe(e._fn(n[0].canonical,[e.symbol("_")]),"_")?.canonical??e._fn("Derivative",n):e._fn("Derivative",n),simplify:(e,n)=>{let i=n[0].simplify();return n[1]?e._fn("Derivative",[i,n[1]]):e._fn("Derivative",[i])},evaluate:(e,n)=>{let i=n[0].evaluate();if(i.functionDefinition)return Pe(e._fn(i,[e.symbol("_")]),"_")?.canonical??void 0;let t=Pe(i,"_");if(t)return t.canonical}}},D:{hold:"all",threadable:!1,signature:{domain:["FunctionOf","Anything","Symbols",["VarArg","Symbols"],"Anything"],canonical:(e,n)=>{let i=n[0];if(!i)return null;e.pushScope();let t=n.slice(1);i.bind(),i=i.canonical;let r=e._fn("D",[i,...t]);return e.popScope(),r},evaluate:(e,n)=>{let i=n[0].canonical,t=e.swapScope(i.scope);i=i.evaluate();let r=n.slice(1);r.length===0&&(i=void 0);for(let o of r){if(!o.symbol){i=void 0;break}if(i=Pe(i,o.symbol),i===void 0)break}return e.swapScope(t),i=i?.canonical,i?.head==="D"?i:i?.evaluate()}}},ND:{hold:"first",threadable:!1,signature:{domain:["FunctionOf","Anything","Numbers","Functions"],N:(e,n)=>{let i=n[1]?.value;if(typeof i!="number")return;let t=io(e.box(n[0]));return e.number(Os(t,i))}}},Integrate:{wikidata:"Q80091",hold:"all",threadable:!1,signature:{domain:["FunctionOf","Functions",["OptArg",["Union","Tuples","Symbols"]],"Numbers"],canonical:(e,n)=>{let i=n[0]??e.error("missing"),t=n[1],r=null,o=null,s=null;return t&&t.head!=="Tuple"&&t.head!=="Triple"&&t.head!=="Pair"&&t.head!=="Single"?r=t:t&&(r=t.ops?.[0]??null,o=t.ops?.[1]?.canonical??null,s=t.ops?.[2]?.canonical??null),r&&r.head==="Hold"&&(r=r.op1),r&&r.head==="ReleaseHold"&&(r=r.op1.evaluate()),r??(r=e.Nothing),r.symbol||(r=e.domainError("Symbols",r.domain,r)),o&&(o=Me(e,o,e.Numbers)),s&&(s=Me(e,s,e.Numbers)),o&&s?t=e.tuple([r,o,s]):s?t=e.tuple([r,e.NegativeInfinity,s]):o?t=e.tuple([r,o]):t=r,e._fn("Integrate",[i.canonical,t])}}},NIntegrate:{hold:"first",threadable:!1,signature:{domain:["FunctionOf","Functions","Numbers","Numbers","Numbers"],evaluate:(e,n)=>{let i=e.numericMode,t=e.precision;e.numericMode="machine";let r=io(n[0]),[o,s]=n.slice(1).map(u=>u.value),a;return typeof o=="number"&&typeof s=="number"&&(a=e.number(Ps(r,o,s))),e.numericMode=i,e.precision=t,a}}}}];var Jt=50,Ia={Sequence:{signature:{domain:"Functions"}},List:{complexity:8200,signature:{domain:["FunctionOf",["VarArg","Anything"],"Lists"]},size:e=>e.nops,iterator:(e,n,i)=>{let t=n??1;return i=Math.min(i??e.nops,e.nops),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:e.ops[t++-1],done:!1}):{value:void 0,done:!0}}},at:(e,n)=>{if(typeof n=="number"&&!(n<1||n>e.nops))return e.ops[n-1]},indexOf:(e,n,i)=>{if(i??(i=1),i<0){if(i<-e.nops)return;i=e.nops+i+1;let r=i;for(let o=r;o>=1;o--)if(e.ops[o-1].isEqual(n))return o;return}let t=i;for(let r=t;r<=e.nops;r++)if(e.ops[r-1].isEqual(n))return r}},Range:{complexity:8200,signature:{domain:["FunctionOf","Numbers",["OptArg","Numbers","Numbers"],"Values"]},size:e=>{let[n,i,t]=Qt(e);return!isFinite(n)||!isFinite(i)?1/0:1+Math.max(0,Math.floor((i-n)/t))},at:(e,n)=>{if(typeof n!="number")return;let[i,t,r]=Qt(e);if(!(n<1||n>1+(t-i)/r))return e.engine.number(i+r*(n-1))},iterator:(e,n,i)=>{let[t,r,o]=Qt(e),s=n??1;return i=Math.min(i??r,r),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:e.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:e=>{let n=y(e.op3)??Jt;return Math.max(0,Math.floor(n))},at:(e,n)=>{if(typeof n!="number")return;let i=y(e.op1),t=y(e.op2),r=y(e.op3)??Jt;if(!(i===void 0||t===void 0)&&!(n<1||n>r))return e.engine.number(i+(t-i)*(n-1)/r)},iterator:(e,n,i)=>{let t=y(e.op1),r=y(e.op2),o;r===void 0?(r=t,t=1,o=Jt):o=Math.max(0,y(e.op3)??Jt);let s=n??1;return i=Math.min(i??o,o),i<=0?{next:()=>({value:void 0,done:!0})}:{next:()=>i>0?(i--,{value:e.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:(e,n)=>{let[i,t]=Pt(e,n,[e.Strings,"Values"]);return!i.isValid||!t.isValid?e._fn("KeyValuePair",[i,t]):e.tuple([i,t])}},size:e=>1},Single:{description:"A tuple with a single element",complexity:8200,signature:{domain:["FunctionOf","Anything","Tuples"],canonical:(e,n)=>e.tuple(_e(e,n,1))},size:e=>e.nops,at:(e,n)=>{if(!(typeof n!="number"||n!==1))return e.ops[0]}},Pair:{description:"A tuple of two elements",complexity:8200,signature:{domain:["FunctionOf","Anything","Anything","Tuples"],canonical:(e,n)=>e.tuple(_e(e,n,2))},size:e=>e.nops,at:(e,n)=>typeof n=="number"?e.ops[n-1]:void 0},Triple:{description:"A tuple of three elements",complexity:8200,signature:{domain:["FunctionOf","Anything","Anything","Anything","Tuples"],canonical:(e,n)=>e.tuple(_e(e,n,3))},size:e=>e.nops,at:(e,n)=>typeof n=="number"?e.ops[n-1]:void 0},Tuple:{description:"A fixed number of heterogeneous elements",complexity:8200,signature:{domain:["FunctionOf","Anything",["VarArg","Anything"],"Tuples"],canonical:(e,n)=>e.tuple(ee(n))},size:e=>e.nops,at:(e,n)=>typeof n=="number"?e.ops[n-1]:void 0},String:{threadable:!0,signature:{domain:["FunctionOf",["OptArg","Anything"],"Strings"],evaluate:(e,n)=>n.length===0?e.string(""):e.string(n.map(i=>i.string??i.toString()).join(""))}},Length:{complexity:8200,signature:{domain:["FunctionOf","Values","Numbers"],evaluate:(e,n)=>{let i=n[0].functionDefinition;if(i?.size)return e.number(i.size(n[0]));let t=n[0].string;return t!==null?e.number(t.length):e.Zero}}},IsEmpty:{complexity:8200,signature:{domain:["FunctionOf","Values","Numbers"],evaluate:(e,n)=>{let i=n[0].functionDefinition,t;if(i?.size)t=i.size(n[0]);else{let r=n[0].string;r!==null&&(t=r.length)}if(t!==void 0)return t===0?e.True:e.False}}},Take:{complexity:8200,signature:{domain:["FunctionOf","Values",["VarArg","Values"],"Values"],evaluate:(e,n)=>{if(n.length<2)return;let i=n[0].string;if(i!==null){let o=n.slice(1).map(s=>Wt(s,i.length));return e.string(Ef(i,o))}let r=n[0].functionDefinition?.size?.(n[0]);return Yt(n[0],n.slice(1).map(o=>Wt(o,r)))}}},Drop:{complexity:8200,signature:{domain:["FunctionOf","Values",["VarArg","Values"],"Values"],evaluate:(e,n)=>{if(n.length<2)return;let i=n[0].string;if(i!==null){let a=Sa(n.slice(1).map(u=>Wt(u,i.length)));return e.string(i.split("").filter((u,l)=>!a.includes(l+1)).join(""))}let t=n[0].functionDefinition,r=t?.size?.(n[0]);if(!r||!t?.at)return e.Nothing;let o=Sa(n.slice(1).map(a=>Wt(a,r))),s=[];for(let a=1;a<=r;a++)if(!o.includes(a)){let u=t.at(n[0],a);u&&s.push(u)}return e.fn("List",s)}}},At:{complexity:8200,signature:{domain:["FunctionOf","Values","Values","Values"],evaluate:(e,n)=>{let i=n[0],t=i.functionDefinition;if(!t?.at)return;if(n[1].string!==null)return t.at(i,1)??e.Nothing;let o=y(n[1]);if(!(o===null||!Number.isInteger(o)))return t.at(i,o)??e.Nothing}}},First:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{let i=n[0],t=i.functionDefinition;return t?.at?t.at(i,1)??e.Nothing:e.Nothing}}},Second:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{let i=n[0],t=i.functionDefinition;return t?.at?t.at(i,2)??e.Nothing:e.Nothing}}},Last:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{let i=n[0],t=i.functionDefinition;return t?.at?t.at(i,-1)??e.Nothing:e.Nothing}}},Rest:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>Yt(n[0],[[2,-1,1]])}},Most:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>Yt(n[0],[[1,-2,1]])}},Reverse:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>Yt(n[0],[[-1,2,1]])}},Ordering:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Functions"],"Values"],evaluate:(e,n)=>{}}},Sort:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Functions"],"Values"],evaluate:(e,n)=>{}}},Shuffle:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{}}},Dimensions:{complexity:8200,signature:{domain:["FunctionOf","Values","Lists"],evaluate:(e,n)=>{}}},Rank:{complexity:8200,signature:{domain:["FunctionOf","Values","Numbers"],evaluate:(e,n)=>{}}},Reshape:{complexity:8200,signature:{domain:["FunctionOf","Values","Values","Values"],evaluate:(e,n)=>{}}},Flatten:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{}}},Map:{complexity:8200,signature:{domain:["FunctionOf","Collections","Functions","Collections"],evaluate:(e,n)=>{}}},Filter:{complexity:8200,signature:{domain:["FunctionOf","Values","Functions","Values"],evaluate:(e,n)=>{}}},Reduce:{complexity:8200,signature:{domain:["FunctionOf","Values","Functions",["OptArg","Values"],"Values"],evaluate:(e,n)=>{}}},Tabulate:{complexity:8200,signature:{domain:["FunctionOf","Functions","Integers",["VarArg","Integers"],"Values"],evaluate:(e,n)=>{}}},Tally:{complexity:8200,signature:{domain:["FunctionOf","Values","Tuples"],evaluate:(e,n)=>{}}},Unique:{complexity:8200,signature:{domain:["FunctionOf","Values","Tuples"],evaluate:(e,n)=>{}}},Transpose:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{}}},Zip:{complexity:8200,signature:{domain:["FunctionOf","Values",["VarArg","Values"],"Values"],evaluate:(e,n)=>{}}},RotateLeft:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Integers"],"Values"],evaluate:(e,n)=>{}}},RotateRight:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Integers"],"Values"],evaluate:(e,n)=>{}}},Join:{complexity:8200,signature:{domain:["FunctionOf",["VarArg","Values"],"Values"],evaluate:(e,n)=>{}}},Iterate:{complexity:8200,signature:{domain:["FunctionOf","Values",["OptArg","Values"],"Values"],evaluate:(e,n)=>{}}},Repeat:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{}}},Cycle:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{}}},Fill:{complexity:8200,signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{}}}};function Qt(e){let n=y(e.op1)??1,i=y(e.op2);if(i===void 0)return[1,n,1];let t=y(e.op3)??1;return[n,i,t]}function Wt(e,n){if(!e)return[0,0,0];let i=y(e);if(i!==null){if(i=Math.round(i),i<0){if(n===void 0)return[0,0,0];i=n+i+1}return[i,i,1]}let t=e.head;if(!t||typeof t!="string"||!/^(Single|Pair|Triple|Tuple|)$/.test(t))return[0,0,0];let[r,o,s]=Qt(e);return(r<0||o<0)&&n===void 0?[0,0,0]:(r<0&&(r=n+r+1),o<0&&(o=n+o+1),s=Math.abs(Math.round(s)),s===0?[0,0,0]:(r>o&&(s=-s),[r,o,s]))}function Yt(e,n){let i=e.engine,t=e.functionDefinition;if(!t?.at)return i.Nothing;let r=[];for(let o of n){let[s,a,u]=o;if(u!==0)if(u<0)for(let l=s;l>=a;l+=u){let f=t.at(e,l);f&&r.push(f)}else for(let l=s;l<=a;l+=u){let f=t.at(e,l);f&&r.push(f)}}return i.fn("List",r)}function Ef(e,n){let i="";for(let t of n){let[r,o,s]=t;if(s===1)i+=e.slice(r-1,o);else if(s<0)for(let a=r;a>=o;a+=s)i+=e[a-1];else for(let a=r;a<=o;a+=s)i+=e[a-1]}return i}function Sa(e){let n=[];for(let i of e){let[t,r,o]=i;if(o!==0)if(o<0)for(let s=t;s>=r;s+=o)n.push(s);else for(let s=t;s<=r;s+=o)n.push(s)}return n}var Ba=[{Block:{hold:"all",signature:{domain:"Functions",canonical:Sf,evaluate:_f}},If:{hold:"rest",signature:{domain:"Functions",result:(e,n)=>Nn(n[0],n[1]),evaluate:(e,n)=>{let i=n[0];return i&&i.symbol==="True"?n[1]?n[1].evaluate():e.Nothing:n[2]?n[2].evaluate():e.Nothing}}},Loop:{hold:"all",signature:{domain:"Functions",evaluate:(e,n)=>{let i=n[0]??e.Nothing;if(i.isNothing)return i;let t=n[1];if(t&&ri(t)){let o,s=Fn(i),a=0;for(let u of Y(t)){if(o=s([u])??e.Nothing,o.head==="Break")return o.op1;if(o.head==="Return")return o;if(a++>e.iterationLimit)return e.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++>e.iterationLimit)return e.error("iteration-limit-exceeded")}}}},Which:{hold:"all",signature:{domain:"Functions",result:(e,n)=>Nf(e,n),evaluate:(e,n)=>vf(e,n,"evaluate")}},FixedPoint:{hold:"all",signature:{domain:"Functions"}}}];function Nf(e,n){let i=null;for(let t=1;t<=n.length-1;t+=2)i=Nn(i,n[t].domain);return i??e.domain("NothingDomain")}function vf(e,n,i){let t=0;for(;t<n.length-1;){if(n[t].evaluate().symbol==="True")return n[t+1]?i==="N"?n[t+1].N():n[t+1].evaluate():e.symbol("Undefined");t+=2}return e.symbol("Undefined")}function _f(e,n){if(n.length===0)return e.Nothing;e.resetContext();let i;for(let t of n){let r=t.head;if(r==="Return"){i=t.op1.evaluate();break}if(r==="Break"||r==="Continue"){i=e.fn(r,[t.op1.evaluate()]);break}i=t.evaluate()}return i??e.Nothing}function Sf(e,n){if(n.length===0)return null;e.pushScope();let i=[],t=[];for(let o of n)o.head==="Declare"?i.push(o):t.push(Da(o));let r=e._fn("Block",[...i,...t]);return e.popScope(),r}function Da(e){return e.head==="Declare"&&e.engine.error("unexpected-declare"),e.ops?e.engine._fn(e.head,e.ops.map(Da)):e}var Ta=[{Real:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=n[0].numericValue;if(i!==null)return e.isComplex(i)?e.number(i.re):n[0]}}},Imaginary:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=n[0].numericValue;if(i!==null)return e.isComplex(i)?e.number(i.im):e.Zero}}},Argument:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=n[0].numericValue;if(i===null)return;if(e.isComplex(i))return e.number(i.arg());let t=y(n[0]);if(t!==null)return t>=0?e.Zero:e.number(Math.PI)}}},AbsArg:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Tuples"],evaluate:(e,n)=>{let i=n[0].numericValue;if(i===null)return;if(e.isComplex(i))return e.tuple([e.number(i.abs()),e.number(i.arg())]);let t=y(n[0]);if(t!==null)return e.tuple([e.number(Math.abs(t)),e.number(t>=0?0:Math.PI)])}}},Conjugate:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=n[0].numericValue;if(!(i===null||!e.isComplex(i)))return e.number(i.conjugate())}}},ComplexRoots:{threadable:!0,complexity:1200,signature:{domain:["FunctionOf","Numbers","Numbers","Lists"],evaluate:(e,n)=>{let i=y(n[0]),t=y(n[1]);if(i===null||t===null||!Number.isInteger(t)||t<=0)return;let r=[],[o,s]=e.isComplex(i)?[i.re,i.im]:[i,0],a=Math.atan2(s,o),u=Math.sqrt(o*o+s*s);for(let l=0;l<t;l++){let f=(a+2*Math.PI*l)/t,d=Math.pow(u,1/t);r.push([d*Math.cos(f),d*Math.sin(f)])}return e.box(["List",...r.map(l=>e.number(l[1]!==0?e.complex(l[0],l[1]):l[0]))])}}}}];function Hi(e){return e[Math.floor(Math.random()*e.length)]}function ka(e,n){if(e==="Add"||e==="Multiply"){let i=[],t=1+Math.floor(Math.random()*12);for(;t>0;)i.push(Xe(n+1)),t-=1;return[e,...i]}return e==="Divide"||e==="Power"?[e,Xe(n+1),Xe(n+1)]:e==="Root"?[e,Xe(n+1),Xe(10)]:e==="trig"?If():[e,Xe(n+1)]}function If(){return[Hi(["Cos","Sin","Tan","Sinh","Arccos","Arsinh"]),Hi(["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 Xe(e){if(e??(e=1),e===1){let n=Hi([["Sqrt",["Multiply",6,["Sum",["Divide",1,["Power","n",2]],["Triple",["Hold","n"],1,{num:"+Infinity"}]]]],"Add","Add","Add","Add","Add","Multiply","Multiply","Multiply","Multiply","Divide","Divide","Divide","Root","Sqrt","Subtract","Negate","trig"]);return typeof n=="string"?ka(n,1):n}if(e===2){let n=Math.random();if(n>.75)return Xe(1);if(n>.5)return Xe(3);let i=Hi(["Multiply","Multiply","Add","Power","trig","Ln","Exp"]);return ka(i,2)}return Hi([-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 wa=[{Nothing:{domain:"NothingDomain"}},{Delimiter:{complexity:9e3,hold:"first",signature:{domain:["FunctionOf","Anything",["OptArg","Strings","Strings"],"Anything"],result:(e,n)=>n[0].domain,canonical:(e,n)=>n[0]?.canonical??e.box(["Sequence"])}},Error:{hold:"all",complexity:500,signature:{domain:["FunctionOf","Anything",["OptArg","Anything"],"Void"],canonical:(e,n)=>e._fn("Error",n)}},ErrorCode:{complexity:500,hold:"all",signature:{domain:["FunctionOf","Strings",["VarArg","Anything"],"Anything"],canonical:(e,n)=>{let i=Me(e,n[0],e.Strings).string;return i==="incompatible-domain"?e._fn("ErrorCode",[e.string(i),n[1],n[2]]):e._fn("ErrorCode",n)}}},Hold:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],result:(e,n)=>{let i=n[0];if(i.symbol)return e.domain("Symbols");if(i.string)return e.domain("Strings");if(i.head==="Numbers")return e.domain("Numbers")},canonical:(e,n)=>n.length!==1?null:e._fn("Hold",n),evaluate:(e,n)=>n[0]}},HorizontalSpacing:{signature:{domain:"Functions",canonical:(e,n)=>n.length===2?n[0].canonical:e.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:(e,n)=>{if(n.length!==1)return null;let i=n[0];return i.head?e.box(i.head):e._fn("Head",ee(n))},evaluate:(e,n)=>{let i=n[0];return typeof i?.head=="string"?e.symbol(i.head):i?.head??e.Nothing}}},Tail:{hold:"all",signature:{domain:"Functions",canonical:(e,n)=>{if(n.length!==1)return null;let i=n[0];return i.ops?e._fn("Sequence",i.ops):e._fn("Tail",ee(n))},evaluate:(e,n)=>{let i=n[0];return i?.ops?e.fn("Sequence",i.ops):e.box(["Sequence"])}}},Identity:{signature:{domain:["FunctionOf","Anything","Anything"],result:(e,n)=>n[0].domain,evaluate:(e,n)=>n[0]}}},{Apply:{signature:{domain:"Functions",canonical:(e,n)=>n[0].symbol?e.box([...n]):e._fn("Apply",n),evaluate:(e,n)=>Ln(n[0],n.slice(1))}},Assign:{hold:"all",signature:{domain:["FunctionOf","Symbols","Anything","Anything"],canonical:(e,n)=>{if(n.length!==2)return null;let i=n[0],t=n[1];return i.symbol?t.symbol?e._fn("Assign",n):e._fn("Assign",[i,e._fn("Hold",[t])]):null},evaluate:(e,n)=>{let i=n[0],t=n[1];if(!i.symbol)return e.Nothing;let r=t.evaluate();return e.assign(i.symbol,r),r}}},Assume:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],evaluate:(e,n)=>e.string(e.assume(n[0]))}},Declare:{hold:"all",signature:{domain:["FunctionOf","Symbols","Anything"],canonical:(e,n)=>{if(n.length!==2)return null;let i=n[0],t=n[1];return i.symbol?t.symbol?e._fn("Declare",n):e._fn("Declare",[i,e._fn("Hold",[t])]):null},evaluate:(e,n)=>{let i=n[0],t=n[1];if(!i.symbol)return e.Nothing;let r=t.evaluate();if(We(r))return e.declare(i.symbol,r),r}}},Domain:{signature:{domain:["FunctionOf","Anything","Domains"],evaluate:(e,n)=>n[0].domain}},Evaluate:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],result:(e,n)=>n[0].domain,canonical:(e,n)=>e._fn("Evaluate",_e(e,n,1)),evaluate:(e,n)=>n[0].evaluate()}},Function:{complexity:9876,hold:"all",signature:{domain:["FunctionOf","Anything",["VarArg","Symbols"],"Functions"],canonical:(e,n)=>n.length===0?e.box(["Sequence"]):(n.length===1?eo(n[0]):e._fn("Function",n))??null,evaluate:(e,n)=>{}}},Simplify:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],result:(e,n)=>n[0].domain,canonical:(e,n)=>e._fn("Simplify",_e(e,n,1)),evaluate:(e,n)=>n[0].simplify()}},N:{hold:"all",signature:{domain:["FunctionOf","Anything","Anything"],result:(e,n)=>n[0].domain,canonical:(e,n)=>e._fn("N",_e(e,n,1)),evaluate:(e,n)=>n[0].N()}},Signatures:{signature:{domain:["FunctionOf","Symbols",["ListOf","Domains"]],canonical:(e,n)=>(n=_e(e,n,1),n[0].symbol?e._fn("Signatures",n):e._fn("Signatures",[e.domainError("Symbols",n[0].domain,n[0])])),evaluate:(e,n)=>{let i=n[0].symbol;if(!i)return e.Nothing;let t=e.lookupFunction(i);if(!t)return e.fn("List",[]);let r=t.signature,o=[...r.params];return r.optParams.length>0&&o.push(e._fn("OptArg",r.optParams)),r.restParam&&o.push(e._fn("VarArg",[r.restParam])),typeof r.result=="function"?o.push(r.result(e,[])??e.symbol("Undefined")):o.push(r.result),e.fn("List",o)}}},Subscript:{hold:"last",signature:{domain:["FunctionOf","Anything","Anything","Anything"],result:(e,n)=>{let i=n[0],t=n[1];if(i.string&&w(t)!==null)return e.domain("Integers");if(i.symbol){let r=i.evaluate()?.head;if(r)return e.lookupFunction(r)?.at?void 0:e.domain("Symbols")}},canonical:(e,n)=>{let i=n[0],t=n[1];if(i.string){let r=w(t);if(r!==null&&r>1&&r<=36){let[o,s]=Xn(i.string,r);return s?e.error(["unexpected-digit",{str:s[0]}],["LatexString",e.string(i.string)]):e.number(o)}}if(i.symbol){let r=i.evaluate()?.head;if(r&&e.lookupFunction(r)?.at)return e._fn("At",[i.canonical,t.canonical]);let o=t.string??t.symbol??w(t)?.toString();if(o)return e.symbol(i.symbol+"_"+o)}return t.head==="Sequence"&&e._fn("Subscript",[i,e._fn("List",t.ops)]),e._fn("Subscript",n)}}},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:(e,n)=>{if(n.length===0)return e.Nothing;let i=n.map(t=>t.symbol??t.string??w(t)?.toString()??"").join("");return i.length>0?e.symbol(i):e.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:(e,n)=>{if(n[1].symbol==="Nothing"){let u=globalThis.performance.now(),l=n[0].evaluate(),f=1e3*(globalThis.performance.now()-u);return e.pair(e.number(f),l)}let i=Math.max(3,Math.round(w(n[1])??3)),t=[],r;for(;i>0;){let u=globalThis.performance.now();r=n[0].evaluate(),t.push(1e3*(globalThis.performance.now()-u)),i-=1}let o=Math.max(...t),s=Math.min(...t);t=t.filter(u=>u>s&&u<o);let a=t.reduce((u,l)=>u+l,0);return a===0?e.pair(e.number(o),r):e.pair(e.number(a/t.length),r)}}}},{LatexString:{inert:!0,signature:{domain:["FunctionOf","Strings","Strings"]}},Latex:{signature:{domain:["FunctionOf",["VarArg","Anything"],"Strings"],evaluate:(e,n)=>e.fn("LatexString",[e.string(N(n.map(i=>i.latex)))])}},Parse:{description:"Parse a LaTeX string and evaluate to a corresponding expression",signature:{domain:["FunctionOf","Anything","Anything"],evaluate:(e,n)=>{if(n.length===0)return e.box(["Sequence"]);let i=n[0],t=i.string??i.head==="LatexString"?i.op1.string:"";return e.parse(t)??e.box(["Sequence"])}}}},{RandomExpression:{signature:{domain:"Functions",evaluate:(e,n)=>e.box(Xe())}}}];var Ma=[];var Fa={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:Ca,evaluate:Ca}},Or:{wikidata:"Q1651704",threadable:!0,associative:!0,commutative:!0,idempotent:!0,complexity:1e4,signature:{domain:"LogicOperators",simplify:Aa,evaluate:Aa}},Not:{wikidata:"Q190558",threadable:!0,involution:!0,complexity:10100,signature:{domain:"LogicOperators",simplify:Oa,evaluate:Oa}},Equivalent:{wikidata:"Q220433",threadable:!0,complexity:10200,signature:{domain:"LogicOperators",simplify:Pa,evaluate:Pa}},Implies:{wikidata:"Q7881229",threadable:!0,complexity:10200,signature:{domain:"LogicOperators",simplify:La,evaluate:La}},Exists:{signature:{domain:"Functions"}}};function Ca(e,n){if(n.length===0)return e.True;let i=[];for(let t of n){if(t.symbol==="False")return e.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 e.False;r||i.push(t)}}return i.length===0?e.True:i.length===1?i[0]:e._fn("And",i)}function Aa(e,n){if(n.length===0)return e.True;let i=[];for(let t of n){if(t.symbol==="True")return e.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 e.True;r||i.push(t)}}return i.length===0?e.True:i.length===1?i[0]:e._fn("Or",i)}function Oa(e,n){let i=n[0].symbol;if(i==="True")return e.False;if(i==="False")return e.True}function Pa(e,n){let i=n[0].symbol,t=n[1].symbol;if(i==="True"&&t==="True"||i==="False"&&t==="False")return e.True;if(i==="True"&&t==="False"||i==="False"&&t==="True")return e.False}function La(e,n){let i=n[0].symbol,t=n[1].symbol;if(i==="True"&&t==="True"||i==="False"&&t==="False"||i==="False"&&t==="True")return e.True;if(i==="True"&&t==="False")return e.False}var Ra=[{Expand:{description:"Expand out products and positive integer powers",signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>dn(n[0])??n[0]}},Distribute:{description:"Distribute multiplication over addition",signature:{domain:["FunctionOf","Values","Values"],evaluate:(e,n)=>{let i=n[0].head;if(i==="Multiply")return ui(n[0].ops)??n[0];if(i==="Negate")return ui([e.NegativeOne,...n[0].ops])??n[0];if(i==="Divide"&&n[0].ops[0].head==="Multiply"){let t=ui(n[0].ops),r=n[0].ops[1];if(t)return t.head==="Add"?e.add(t.ops.map(o=>e.div(o,r))).evaluate():e.div(t,r).evaluate()}return n[0]}}}}];var qa={Equal:{commutative:!0,complexity:11e3,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Equal",re(Ne(ee(n)),"Equal")),evaluate:(e,n)=>{if(n.length<2)return e.True;let i;for(let t of n)if(!i)i=t;else if(i.isEqual(t)!==!0)return e.False;return e.True}}},NotEqual:{wikidata:"Q28113351",commutative:!0,complexity:11e3,signature:{domain:"RelationalOperators",evaluate:(e,n)=>{if(n.length<2)return e.False;let i;for(let t of n)if(!i)i=t;else if(i.isEqual(t)===!0)return e.False;return e.True}}},Less:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Less",re(Ne(ee(n)),"Less")),evaluate:(e,n)=>{if(n.length<2)return e.True;let i;for(let t of n){if(!t.isNumber)return;if(!i)i=t;else{let r=e.fn("Subtract",[t,i]).N().sgn;if(r==null)return;if(r<=0)return e.False;i=t}}return e.True}}},NotLess:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("Less",n)])}},Greater:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Less",n.reverse()),evaluate:(e,n)=>{if(n.length<2)return e.True;let i;for(let t of n){if(!t.isNumber)return;if(!i)i=t;else{let r=e.fn("Subtract",[t,i]).N().sgn;if(r==null)return;if(r>=0)return e.False;i=t}}return e.True}}},NotGreater:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("Greater",n)])}},LessEqual:{complexity:11e3,signature:{domain:"RelationalOperators",evaluate:(e,n)=>{if(n.length<2)return e.True;let i;for(let t of n){if(!t.isNumber)return;if(!i)i=t;else{let r=e.fn("Subtract",[t,i]).N().sgn;if(r==null)return;if(r<0)return e.False;i=t}}return e.True}}},NotLessNotEqual:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("LessEqual",n)])}},GreaterEqual:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("LessEqual",n.reverse()),evaluate:(e,n)=>{if(n.length<2)return e.True;let i;for(let t of n){if(!t.isNumber)return;if(!i)i=t;else{let r=e.fn("Subtract",[t,i]).N().sgn;if(r==null)return;if(r>0)return e.False;i=t}}return e.True}}},NotGreaterNotEqual:{complexity:11e3,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("GreaterEqual",n)])}},TildeFullEqual:{description:"Indicate isomorphism, congruence and homotopic equivalence",signature:{domain:"RelationalOperators"}},NotTildeFullEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("TildeFullEqual",n)])}},TildeEqual:{description:"Approximately or asymptotically equal",complexity:11e3,signature:{domain:"RelationalOperators"}},NotTildeEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("TildeEqual",n)])}},Approx:{complexity:11100,signature:{domain:"RelationalOperators"}},NotApprox:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("Approx",n)])}},ApproxEqual:{complexity:11100,signature:{domain:"RelationalOperators"}},NotApproxEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("ApproxEqual",n)])}},ApproxNotEqual:{complexity:11100,signature:{domain:"RelationalOperators"}},NotApproxNotEqual:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("ApproxNotEqual",n)])}},Precedes:{complexity:11100,signature:{domain:"RelationalOperators"}},NotPrecedes:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("Precedes",n)])}},Succeeds:{signature:{domain:"RelationalOperators"}},NotSucceeds:{complexity:11100,signature:{domain:"RelationalOperators",canonical:(e,n)=>e._fn("Not",[e._fn("Succeeds",n)])}}};var Va={EmptySet:{domain:"Sets",constant:!0,wikidata:"Q226183"},Element:{complexity:11200,hold:"all",signature:{domain:"Predicates",canonical:(e,n)=>(n=_e(e,n,2),n.length===2&&n[0].isValid&&We(n[1])?e._fn("Element",[n[0],e.domain(n[1])]):e._fn("Element",n)),evaluate:(e,n)=>kf(e,n)}},NotElement:{complexity:11200,hold:"all",signature:{domain:"Predicates",canonical:(e,n)=>e.fn("Not",[e.fn("Element",n)])}},Subset:{complexity:11200,signature:{domain:"Predicates"}},NotSubset:{complexity:11200,signature:{domain:"Predicates",canonical:(e,n)=>e.fn("Not",[e.fn("Subset",n)])}},Superset:{complexity:11200,signature:{domain:"Predicates"}},SupersetEqual:{complexity:11200,signature:{domain:"Predicates"}},NotSuperset:{complexity:11200,signature:{domain:"Predicates",canonical:(e,n)=>e.fn("Not",[e.fn("Superset",n)])}},NotSupersetEqual:{complexity:11200,signature:{domain:"Predicates",canonical:(e,n)=>e.fn("Not",[e.fn("SupersetEqual",n)])}},SubsetEqual:{complexity:11200,signature:{domain:"Predicates"}},NotSubsetNotEqual:{complexity:11200,signature:{domain:"Predicates",canonical:(e,n)=>e.fn("Not",[e.fn("SubsetEqual",n)])}},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:(e,n)=>n.length===0||n.length===1?e.symbol("EmptySet"):e._fn("Intersection",n),evaluate:Df}},Union:{wikidata:"Q185359",associative:!0,commutative:!0,involution:!0,signature:{domain:["FunctionOf","Collections",["VarArg","Collections"],"Sets"],canonical:(e,n)=>n.length===0?e.symbol("EmptySet"):e._fn("Union",n),evaluate:Bf}},SetMinus:{wikidata:"Q18192442",signature:{domain:["FunctionOf","Sets","Values","Sets"],evaluate:Tf}},SymmetricDifference:{wikidata:"Q1147242",signature:{domain:["FunctionOf","Sets",["VarArg","Sets"],"Sets"]}}};function Bf(e,n){let i=[];for(let t of n)if(ce(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?e.symbol("EmptySet"):e._fn("Set",i)}function Df(e,n){let i=n[0].ops??[];for(let t of n.slice(1))ce(t)?i=i.filter(r=>[...Y(t)].some(o=>r.isEqual(o))):i=i.filter(r=>r.isEqual(t));return i.length===0?e.symbol("EmptySet"):e._fn("Set",i)}function Tf(e,n){return e.symbol("EmptySet")}function kf(e,n){n.length;let[i,t]=n;if(t.string)return i.string&&t.string.includes(i.string)?e.True:e.False;if(t.keys){if(i.string){for(let r of t.keys)if(r===i.string)return e.True}return e.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 e.True}return e.False}let r=i.head==="Hold"?i.op1:i;for(let o of t.ops)if(r.isEqual(o))return e.True;return e.False}return We(t)&&i.domain?i.domain.isCompatible(e.domain(t))?e.True:e.False:e._fn("Element",[i,t])}var $a=[{Mean:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(e,n)=>{let i=0,t=0;for(let r of Y(n[0])){let o=y(r);if(o===null)return;i+=o,t++}return t===0?e.NaN:e.number(i/t)}}},Median:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(e,n)=>{let i=[];for(let r of Y(n[0])){let o=y(r);if(o===null)return;i.push(o)}if(i.length===0)return e.NaN;i.sort((r,o)=>r-o);let t=Math.floor(i.length/2);return i.length%2===0?e.number((i[t-1]+i[t])/2):e.number(i[t])}}},Variance:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(e,n)=>{let i=0,t=0,r=0;for(let o of Y(n[0])){let s=y(o);if(s===null)return;i+=s,t+=s*s,r++}return r===0?e.NaN:e.number((t-i*i/r)/(r-1))}}},StandardDeviation:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(e,n)=>{let i=0,t=0,r=0;for(let o of Y(n[0])){let s=y(o);if(s===null)return;i+=s,t+=s*s,r++}return r===0?e.NaN:e.number(Math.sqrt((t-i*i/r)/(r-1)))}}},Kurtosis:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(e,n)=>{let i=0,t=0,r=0,o=0;for(let u of Y(n[0])){let l=y(u);if(l===null)return;i+=l,t+=l*l,r+=l*l*l*l,o++}if(o===0)return e.NaN;let s=(t-i*i/o)/(o-1),a=(r-t*t/o)/(o-1);return e.number((a/(s*s)-3)*(o*(o+1))/6)}}},Skewness:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(e,n)=>{let i=0,t=0,r=0,o=0;for(let u of Y(n[0])){let l=y(u);if(l===null)return;i+=l,t+=l*l,r+=l*l*l,o++}if(o===0)return e.NaN;let s=(t-i*i/o)/(o-1),a=(r-t*i/o)/(o-1);return e.number(a/Math.pow(s,3/2)*Math.sqrt(o*1))}}},Mode:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(e,n)=>{let i=[];for(let s of Y(n[0])){let a=y(s);if(a===null)return;i.push(a)}if(i.length===0)return e.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 e.number(o)}}},Quartiles:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Lists"],evaluate:(e,n)=>{let i=[];for(let s of Y(n[0])){let a=y(s);if(a===null)return;i.push(a)}if(i.length===0)return e.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 e.box(["List",e.number(i[t]),e.number(r[Math.floor(r.length/2)]),e.number(o[Math.floor(o.length/2)])])}}},InterquartileRange:{complexity:1200,threadable:!1,signature:{domain:["FunctionOf","Collections","Numbers"],evaluate:(e,n)=>{let i=[];for(let s of Y(n[0])){let a=y(s);if(a===null)return;i.push(a)}if(i.length===0)return e.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 e.number(o[Math.floor(o.length/2)]-r[Math.floor(r.length/2)])}}},Erf:{complexity:7500,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=y(n[0]);if(i!==null)return e.number(Fr(i))}}},Erfc:{complexity:7500,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=y(n[0]);if(i!==null)return e.number(1-Fr(i))}}},ErfInv:{complexity:7500,signature:{domain:["FunctionOf","Numbers","Numbers"],evaluate:(e,n)=>{let i=y(n[0]);if(i!==null)return e.number(As(i))}}}}];var mn=e=>["FunctionOf","Numbers","ExtendedRealNumbers"],Xt=e=>["FunctionOf","Numbers","Numbers"],_n=e=>["FunctionOf","Numbers","Numbers"],za=[{Pi:{domain:"TranscendentalNumbers",flags:{algebraic:!1},constant:!0,holdUntil:"N",wikidata:"Q167",value:e=>C(e)?e._BIGNUM_PI:Math.PI}},{Degrees:{signature:{domain:["FunctionOf","Numbers","Numbers"],canonical:(e,n)=>{if(n=Te(e,n,1),n.length!==1)return e._fn("Degrees",n);let i=n[0];if(i.numericValue===null||!i.isValid)return e._fn("Degrees",n);let t=y(i);if(t!==null){if(t=t%360,t<0&&(t+=360),Number.isInteger(t)){let r=un([t,180]);return r[0]===0?e.number(0):r[0]===1&&r[1]===1?e.Pi:r[0]===1?e.div(e.Pi,e.number(r[1])):e.mul([e.number(r),e.Pi])}return e.mul([e.div(e.number(t),e.number(180)),e.Pi])}return e.div(e.mul([i,e.Pi]),e.number(180))},evaluate:(e,n)=>e.mul([n[0],e.div(e.Pi,e.number(180))]).evaluate()}},Hypot:{threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers","NonNegativeNumbers"],simplify:(e,n)=>e.box(["Sqrt",["Add",["Square",n[0]],["Square",n[1]]]]).simplify(),evaluate:["Function",["Sqrt",["Add",["Square","_1"],["Square","_2"]]]]}},Sin:{complexity:5e3,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],simplify:(e,n)=>pe(e,"Sin",n[0])?.simplify()??(W(e)?e.box(["Divide",["Subtract",["Exp",["Multiply","ImaginaryUnit",n[0]]],["Exp",["Multiply","ImaginaryUnit",["Negate",n[0]]]]],["Complex",0,2]]).simplify():void 0),evaluate:(e,n)=>I(e,"evaluate","Sin",n[0]),N:(e,n)=>I(e,"N","Sin",n[0])}}},{Arctan:{wikidata:"Q2257242",complexity:5200,threadable:!0,signature:{domain:mn("Arctan"),simplify:(e,n)=>pe(e,"Arctan",n[0])?.simplify(),evaluate:(e,n)=>I(e,"evaluate","Arctan",n[0]),N:(e,n)=>I(e,"N","Arctan",n[0])}},Arctan2:{wikidata:"Q776598",complexity:5200,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers","Numbers"],N:(e,n)=>En(n[0],n[1],Math.atan2,(i,t)=>E.atan2(i,t))}},Cos:{complexity:5050,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],simplify:(e,n)=>pe(e,"Cos",n[0])?.simplify()??e.box(["Sin",["Add",n[0],["Multiply","Half","Pi"]]]).simplify(),evaluate:(e,n)=>I(e,"evaluate","Cos",n[0]),N:(e,n)=>I(e,"N","Cos",n[0])}},Tan:{complexity:5100,threadable:!0,signature:{domain:Xt("Tan"),simplify:(e,n)=>pe(e,"Tan",n[0])?.simplify()??e.box(["Divide",["Sin",n[0]],["Cos",n[0]]]).simplify(),evaluate:(e,n)=>I(e,"evaluate","Tan",n[0]),N:(e,n)=>I(e,"N","Tan",n[0])}}},{Arcosh:{complexity:6200,threadable:!0,signature:{domain:_n("Arcosh"),simplify:(e,n)=>pe(e,"Arcosh",n[0])?.simplify()??e.box(["Ln",["Add",n[0],["Sqrt",["Subtract",["Square",n[0]],1]]]]).simplify(),evaluate:(e,n)=>I(e,"evaluate","Arcosh",n[0]),N:(e,n)=>I(e,"N","Arcosh",n[0])}},Arcsin:{complexity:5500,threadable:!0,signature:{domain:_n("Arcsin"),simplify:(e,n)=>pe(e,"Arcsin",n[0])?.simplify()??e.box(["Multiply",2,["Arctan2",n[0],["Add",1,["Sqrt",["Subtract",1,["Square",n[0]]]]]]]).simplify(),evaluate:(e,n)=>I(e,"evaluate","Arcsin",n[0]),N:(e,n)=>I(e,"N","Arcsin",n[0])}},Arsinh:{complexity:6100,threadable:!0,signature:{domain:_n("Arsinh"),simplify:(e,n)=>pe(e,"Arsinh",n[0])?.simplify()??e.box(["Ln",["Add",n[0],["Sqrt",["Add",["Square",n[0]],1]]]]).simplify(),evaluate:(e,n)=>I(e,"evaluate","Arsinh",n[0]),N:(e,n)=>I(e,"N","Arsinh",n[0])}},Artanh:{complexity:6300,threadable:!0,signature:{domain:_n("Artanh"),simplify:(e,n)=>pe(e,"Artanh",n[0])?.simplify()??e.box(["Multiply","Half",["Ln",["Divide",["Add",1,n[0]],["Subtract",1,n[0]]]]]).simplify(),evaluate:(e,n)=>I(e,"evaluate","Artanh",n[0]),N:(e,n)=>I(e,"N","Artanh",n[0])}},Cosh:{complexity:6050,threadable:!0,signature:{domain:_n("Cosh"),simplify:(e,n)=>pe(e,"Cosh",n[0])?.simplify()??e.box(["Multiply","Half",["Add",["Exp",n[0]],["Exp",["Negate",n[0]]]]]).simplify(),evaluate:(e,n)=>I(e,"evaluate","Cosh",n[0]),N:(e,n)=>I(e,"N","Cosh",n[0])}},Cot:{complexity:5600,threadable:!0,signature:{domain:Xt("Cot"),simplify:(e,n)=>pe(e,"Cot",n[0])?.simplify()??e.box(["Divide",["Cos",n[0]],["Sin",n[0]]]).simplify(),evaluate:(e,n)=>I(e,"evaluate","Cot",n[0]),N:(e,n)=>I(e,"N","Cot",n[0])}},Csc:{description:"Cosecant",complexity:5600,threadable:!0,signature:{domain:Xt("Csc"),simplify:(e,n)=>pe(e,"Csc",n[0])?.simplify()??e.box(["Divide",1,["Sin",n[0]]]).simplify(),evaluate:(e,n)=>I(e,"evaluate","Csc",n[0]),N:(e,n)=>I(e,"N","Csc",n[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:Xt("Sec"),simplify:(e,n)=>pe(e,"Sec",n[0])?.simplify()??e.box(["Divide",1,["Cos",n[0]]]).simplify(),evaluate:(e,n)=>I(e,"evaluate","Sec",n[0]),N:(e,n)=>I(e,"N","Sec",n[0])}},Sinh:{complexity:6e3,threadable:!0,signature:{domain:_n("Sinh"),simplify:(e,n)=>pe(e,"Sinh",n[0])?.simplify()??e.box(["Multiply","Half",["Subtract",["Exp",n[0]],["Exp",["Negate",n[0]]]]]).simplify(),evaluate:(e,n)=>I(e,"evaluate","Sinh",n[0]),N:(e,n)=>I(e,"N","Sinh",n[0])}}},{Csch:{complexity:6200,threadable:!0,signature:{domain:mn("Csch"),simplify:(e,n)=>pe(e,"Csch",n[0])?.simplify()??e.box(["Divide",1,["Sinh",n[0]]]).simplify(),evaluate:(e,n)=>I(e,"evaluate","Csch",n[0]),N:(e,n)=>I(e,"N","Csch",n[0])}},Sech:{complexity:6200,threadable:!0,signature:{domain:["FunctionOf","Numbers","Numbers"],simplify:(e,n)=>pe(e,"Sech",n[0])?.simplify()??e.box(["Divide",1,["Cosh",n[0]]]).simplify(),evaluate:(e,n)=>I(e,"evaluate","Sech",n[0]),N:(e,n)=>I(e,"N","Sech",n[0])}},Tanh:{complexity:6200,threadable:!0,signature:{domain:_n("Tanh"),simplify:(e,n)=>pe(e,"Tanh",n[0])?.simplify()??e.box(["Divide",["Sinh",n[0]],["Cosh",n[0]]]).simplify(),evaluate:(e,n)=>I(e,"evaluate","Tanh",n[0]),N:(e,n)=>I(e,"N","Tanh",n[0])}}},{Arccos:{complexity:5550,threadable:!0,signature:{domain:mn("Arccos"),simplify:(e,n)=>pe(e,"Arccos",n[0])?.simplify()??e.box(["Subtract",["Divide","Pi",2],["Arcsin",n[0]]]).simplify(),evaluate:(e,n)=>I(e,"evaluate","Arccos",n[0]),N:(e,n)=>I(e,"N","Arccos",n[0])}},Arccot:{numeric:!0,threadable:!0,signature:{domain:mn("Arccot"),evaluate:(e,n)=>I(e,"evaluate","Arccot",n[0]),N:(e,n)=>I(e,"N","Arccot",n[0])}},Arcoth:{numeric:!0,threadable:!0,signature:{domain:mn("Arcoth"),evaluate:(e,n)=>I(e,"evaluate","Arcoth",n[0]),N:(e,n)=>I(e,"N","Arcoth",n[0])}},Arcsch:{numeric:!0,threadable:!0,signature:{domain:mn("Arcsch"),evaluate:(e,n)=>I(e,"evaluate","Arcsch",n[0]),N:(e,n)=>I(e,"N","Arcsch",n[0])}},Arcsec:{numeric:!0,threadable:!0,signature:{domain:mn("Arcsec"),evaluate:(e,n)=>I(e,"evaluate","Arcsec",n[0]),N:(e,n)=>I(e,"N","Arcsec",n[0])}},Arsech:{numeric:!0,threadable:!0,signature:{domain:mn("Arsech"),evaluate:(e,n)=>I(e,"evaluate","Arsech",n[0]),N:(e,n)=>I(e,"N","Arsech",n[0])}},Arccsc:{numeric:!0,threadable:!0,signature:{domain:mn("Arccsc"),evaluate:(e,n)=>I(e,"evaluate","Arccsc",n[0]),N:(e,n)=>I(e,"N","Arccsc",n[0])}},Coth:{complexity:6300,threadable:!0,signature:{domain:_n("Coth"),simplify:(e,n)=>pe(e,"Coth",n[0])?.simplify()??e.box(["Divide",1,["Tanh",n[0]]]).simplify(),evaluate:(e,n)=>I(e,"evaluate","Coth",n[0]),N:(e,n)=>I(e,"N","Coth",n[0])}},InverseFunction:{signature:{domain:["FunctionOf","Functions","Functions"],canonical:(e,n)=>(n=_e(e,n,1),mo(e,n)??e._fn("InverseFunction",n)),simplify:(e,n)=>mo(e,n),evaluate:(e,n)=>mo(e,n)}}}],Sn=["Sqrt",2],di=["Sqrt",3],ci=["Sqrt",5],Kt=["Sqrt",6],wf=[[[0,1],{Sin:0,Cos:1,Tan:0,Cot:"ComplexInfinity",Sec:1,Csc:"ComplexInfinity"}],[[1,12],{Sin:["Divide",["Subtract",Kt,Sn],4],Cos:["Divide",["Add",Kt,Sn],4],Tan:["Subtract",2,di],Cot:["Add",2,di],Sec:["Subtract",Kt,Sn],Csc:["Add",Kt,Sn]}],[[1,10],{Sin:["Divide",["Subtract",ci,1],4],Cos:["Divide",["Sqrt",["Add",10,["Multiply",2,ci]]],4],Tan:["Divide",["Sqrt",["Subtract",25,["Multiply",10,ci]]],5],Cot:["Sqrt",["Add",5,["Multiply",2,ci]]],Sec:["Divide",["Sqrt",["Subtract",50,["Multiply",10,ci]]],5],Csc:["Add",1,ci]}],[[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",Sn,2],Cos:["Divide",Sn,2],Tan:1,Cot:1,Sec:Sn,Csc:Sn}],[[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",di,2],Cos:"Half",Tan:di,Cot:["Divide",di,3],Sec:2,Csc:["Divide",["Multiply",2,di],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}]],Mf={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 pe(e,n,i){if(!i)return;let t=e.cache("constructible-trigonometric-values",()=>wf.map(([u,l])=>[u,Object.fromEntries(Object.entries(l).map(([f,d])=>[f,e.parse(ni(d))??e.box(d)]))]),u=>{for(let[l,f]of u)for(let d of Object.values(f))d.reset();return u}),r=y(i.N());if(r===null)return;let o=n!=="Cos"&&n!=="Sec"?Math.sign(r):1;r=Math.abs(r%(2*Math.PI));let s=Math.floor(r*2/Math.PI);r=r%(Math.PI/2);let a;[a,n]=Mf[n]?.[s]??[1,n];for(let[[u,l],f]of t){let d=f[n];if(d&&e.chop(r-Math.PI*u/l)===0)return d.symbol==="ComplexInfinity"?d:o*a<0?ne(d):d}}function mo(e,n){if(n.length!==1||!n[0].isValid)return;let i=n[0],t=i.symbol;if(typeof t!="string")return;if(t==="InverseFunction")return i.op1;let r={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"}[t];return r?e.symbol(r):void 0}function I(e,n,i,t){if(!t)return;let r=pe(e,i,t)?.evaluate({numericMode:n==="N"});if(r)return r;if(!(n==="evaluate"&&t.isExact))switch(i){case"Arccos":return O(t,Math.acos,o=>o.acos(),o=>o.acos());case"Arccot":return O(t,o=>Math.atan2(1,o),o=>E.atan2(e._BIGNUM_ONE,o),o=>o.inverse().atan());case"Arccsc":return O(t,o=>Math.asin(1/o),o=>e._BIGNUM_ONE.div(o).asin(),o=>o.inverse().asin());case"Arcosh":return O(t,Math.acosh,o=>o.acosh(),o=>o.acosh());case"Arcoth":return O(t,o=>o,o=>o.acosh(),o=>o.acosh());case"Arcsch":return O(t,o=>Math.log(1/o+Math.sqrt(1/(o*o)+1)),o=>e._BIGNUM_ONE.div(o.mul(o)).add(e._BIGNUM_ONE).sqrt().add(e._BIGNUM_ONE.div(o)).log(),o=>o.mul(o).inverse().add(1).sqrt().add(o.inverse()).log());case"Arcsec":return O(t,o=>Math.acos(1/o),o=>e._BIGNUM_ONE.div(o).acos(),o=>o.inverse().acos());case"Arcsin":return O(t,Math.asin,o=>o.asin(),o=>o.asin());case"Arsech":return O(t,o=>Math.log((1+Math.sqrt(1-o*o))/o),o=>e._BIGNUM_ONE.sub(o.mul(o).add(e._BIGNUM_ONE).div(o)).log(),o=>e.complex(1).sub(o.mul(o)).add(1).div(o).log());case"Arsinh":return O(t,Math.asinh,o=>o.asinh(),o=>o.asinh());case"Arctan":return O(t,Math.atan,o=>o.atan(),o=>o.atan());case"Artanh":return O(t,Math.atanh,o=>o.atanh(),o=>o.atanh());case"Cos":return O(t,Math.cos,o=>o.toSignificantDigits(e.precision+4).cos().toSignificantDigits(e.precision),o=>o.cos());case"Cosh":return O(t,Math.cosh,o=>o.cosh(),o=>o.cosh());case"Cot":return O(t,o=>1/Math.tan(o),o=>e._BIGNUM_ONE.div(o.tan()),o=>o.tan().inverse());case"Coth":return O(t,o=>1/Math.tanh(o),o=>e._BIGNUM_ONE.div(o.tanh()),o=>o.tanh().inverse());case"Csc":return O(t,o=>1/Math.sin(o),o=>e._BIGNUM_ONE.div(o.sin()),o=>o.sin().inverse());case"Csch":return O(t,o=>1/Math.sinh(o),o=>e._BIGNUM_ONE.div(o.sinh()),o=>o.sinh().inverse());case"Sec":return O(t,o=>1/Math.cos(o),o=>e._BIGNUM_ONE.div(o.cos()),o=>o.cos().inverse());case"Sech":return O(t,o=>1/Math.cosh(o),o=>e._BIGNUM_ONE.div(o.cosh()),o=>o.cosh().inverse());case"Sin":return O(t,Math.sin,o=>o.toSignificantDigits(e.precision+4).sin().toSignificantDigits(e.precision),o=>o.sin());case"Sinh":return O(t,Math.sinh,o=>o.sinh(),o=>o.sinh());case"Tan":return O(t,Math.tan,o=>o.toSignificantDigits(e.precision+4).tan().toSignificantDigits(e.precision),o=>o.tan());case"Tanh":return O(t,Math.tanh,o=>o.tanh(),o=>o.tanh())}}var Ua=le(ae());var K=class{constructor(n,i,t){if(!n.context)throw Error("No context available");this.name=i,this.wikidata=t.wikidata,this.description=t.description,this.url=t.url,this._engine=n,this.scope=n.context,this.name=i,this._flags=t.flags?Zi(t.flags):void 0,this._domain=t.domain?n.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?ei(t.value)?this._value=n.parse(t.value)??n.symbol("Undefined"):typeof t.value=="function"?this._value=n.box(t.value(n)??"Undefined"):t.value instanceof P?this._value=t.value:this._value=n.box(t.value):this._value=void 0,!this._value&&this._domain&&!t.flags&&(this._flags=er(this._domain))),this._value&&!this._domain&&(this._domain=this._value.domain,this.inferredDomain=!0)}update(n){n.wikidata&&(this.wikidata=n.wikidata),n.description&&(this.description=n.description),n.url&&(this.url=n.url);let i=n?.flags,t=n?.domain?this._engine.domain(n.domain):void 0;t&&(i={...er(t),...i??{}}),i&&(this._flags=Zi(i)),t&&(this._domain=t,this.inferredDomain=!1),n.holdUntil&&(this.holdUntil=n.holdUntil),n.constant?(this.constant=n.constant,this._defValue=n.value,this._value=null):n.value&&(ei(n.value)?this._value=this._engine.parse(n.value)??this._engine.symbol("Undefined"):typeof n.value=="function"?this._value=this._engine.box(n.value(this._engine)??"Undefined"):n.value instanceof P?this._value=n.value:this._value=this._engine.box(n.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 n=this._engine;if(ei(this._defValue)?this._value=n.parse(this._defValue)??n.symbol("Undefined"):typeof this._defValue=="function"?this._value=n.box(this._defValue(n)??"Undefined"):this._defValue?this._value=n.box(this._defValue):this._value=void 0,this._value?.numericValue){let i=this._value.numericValue;!C(n)&&i instanceof E?this._value=n.number(i.toNumber()):!W(n)&&i instanceof Ua.Complex&&(this._value=n.NaN)}}return this._value??void 0}set value(n){if(this.constant)throw new Error(`The value of the constant "${this.name}" cannot be changed`);if(this._defValue,typeof n=="number")this._value=this._engine.number(n);else if(n){let i=this._engine.box(n);this.inferredDomain?(this._value=i,this._domain=Nn(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=er(this._domain)}get domain(){return this._domain??void 0}set domain(n){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(!n){this._defValue=void 0,this._value=void 0,this._flags=void 0,this._domain=void 0;return}if(n=this._engine.domain(n),this._domain&&!n.isCompatible(this._domain))throw Error(`The domain of "${this.name}" cannot be widened from "${this._domain.base}" to "${n.base}"`);if(this._value?.domain&&!this._value.domain.isCompatible(n))throw Error(`The domain of "${this.name}" cannot be changed to "${n.base}" because its value has a domain of "${this._value.domain.base}"`);this._domain=n,this._flags=void 0,this._value===void 0&&n.isNumeric&&(this._flags=er(n))}get number(){return this.value?.isNumber??this._flags?.number}set number(n){this.updateFlags({number:n})}get integer(){return this.value?.isInteger??this._flags?.integer}set integer(n){this.updateFlags({integer:n})}get rational(){return this.value?.isRational??this._flags?.rational}set rational(n){this.updateFlags({rational:n})}get algebraic(){return this.value?.isAlgebraic??this._flags?.algebraic}set algebraic(n){this.updateFlags({algebraic:n})}get real(){return this.value?.isReal??this._flags?.real}set real(n){this.updateFlags({real:n})}get extendedReal(){return this.value?.isExtendedReal??this._flags?.extendedReal}set extendedReal(n){this.updateFlags({extendedReal:n})}get complex(){return this.value?.isComplex??this._flags?.complex}set complex(n){this.updateFlags({complex:n})}get extendedComplex(){return this.value?.isExtendedComplex??this._flags?.extendedComplex}set extendedComplex(n){this.updateFlags({extendedComplex:n})}get imaginary(){return this.value?.isImaginary??this._flags?.imaginary}set imaginary(n){this.updateFlags({imaginary:n})}get positive(){return this.value?.isPositive??this._flags?.positive}set positive(n){this.updateFlags({positive:n})}get nonPositive(){return this.value?.isNonPositive??this._flags?.nonPositive}set nonPositive(n){this.updateFlags({nonPositive:n})}get negative(){return this.value?.isNegative??this._flags?.negative}set negative(n){this.updateFlags({negative:n})}get nonNegative(){return this.value?.isNonNegative??this._flags?.nonNegative}set nonNegative(n){this.updateFlags({nonNegative:n})}get zero(){return this.value?.isZero??this._flags?.zero}set zero(n){this.updateFlags({zero:n})}get notZero(){return this.value?.isNotZero??this._flags?.notZero}set notZero(n){this.updateFlags({notZero:n})}get one(){return this.value?.isOne??this._flags?.one}set one(n){this.updateFlags({one:n})}get negativeOne(){return this.value?.isNegativeOne??this._flags?.negativeOne}set negativeOne(n){this.updateFlags({negativeOne:n})}get infinity(){return this.value?.isInfinity??this._flags?.infinity}set infinity(n){this.updateFlags({infinity:n})}get finite(){return this.value?.isFinite??this._flags?.finite}set finite(n){this.updateFlags({finite:n})}get NaN(){return this.value?.isNaN??this._flags?.NaN}set NaN(n){this.updateFlags({NaN:n})}get even(){return this.value?.isEven??this._flags?.even}set even(n){this.updateFlags({even:n})}get odd(){return this.value?.isOdd??this._flags?.odd}set odd(n){this.updateFlags({odd:n})}get prime(){let n=this._value;return n?!n.isInteger||n.isNonPositive?!1:vn(y(n)??NaN):this._flags?.prime}set prime(n){this.updateFlags({prime:n})}get composite(){let n=this._value;return n?!n.isInteger||n.isNonPositive?!1:!vn(y(n)??NaN):this._flags?.composite}set composite(n){this.updateFlags({composite:n})}updateFlags(n){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(n))if(i+=1,this._value&&n[r]!==void 0)switch(r){case"number":t=this._value.isNumber===n.number;break;case"integer":t=this._value.isInteger===n.integer;break;case"rational":t=this._value.isRational===n.rational;break;case"algebraic":t=this._value.isAlgebraic===n.algebraic;break;case"real":t=this._value.isReal===n.real;break;case"extendedReal":t=this._value.isExtendedReal===n.extendedReal;break;case"complex":t=this._value.isComplex===n.complex;break;case"extendedComplex":t=this._value.isExtendedComplex===n.extendedComplex;break;case"imaginary":t=this._value.isImaginary===n.imaginary;break;case"positive":t=this._value.isPositive===n.positive;break;case"nonPositive":t=this._value.isNonPositive===n.nonPositive;break;case"negative":t=this._value.isNegative===n.negative;break;case"nonNegative":t=this._value.isNonNegative===n.nonNegative;break;case"zero":t=this._value.isZero===n.zero;break;case"notZero":t=this._value.isNotZero===n.notZero;break;case"one":t=this._value.isOne===n.one;break;case"negativeOne":t=this._value.isNegativeOne===n.negativeOne;break;case"infinity":t=this._value.isInfinity===n.infinity;break;case"NaN":t=this._value.isNaN===n.NaN;break;case"finite":t=this._value.isFinite===n.finite;break;case"even":t=this._value.isEven===n.even;break;case"odd":t=this._value.isOdd===n.odd;break;case"prime":t=this._value.isPrime===n.prime;break;case"composite":t=this._value.isComposite===n.composite;break}i>0&&(t||(this._defValue=void 0,this._value=void 0),this._domain=this._engine.Numbers,this._flags?this._flags={...this._flags,...Zi(n)}:this._flags=Zi(n))}};function Cf(e){return Object.fromEntries(Object.entries(e).filter(([n,i])=>i!==void 0))}function Zi(e){let n={...e};return(e.zero||e.one||e.negativeOne)&&(n.zero=e.zero&&!e.one&&!e.negativeOne,n.notZero=!e.zero||e.one||e.negativeOne,n.one=e.one&&!e.zero&&!e.negativeOne,n.negativeOne=e.negativeOne&&!e.zero&&!e.one,n.infinity=!1,n.NaN=!1,n.finite=!0,n.integer=!0,n.finite=!0,n.infinity=!1,n.NaN=!1,n.even=e.one,n.odd=!e.one,n.prime=!1,n.composite=!1),n.zero&&(n.positive=!1,n.negative=!1,n.nonPositive=!0,n.nonNegative=!0),n.notZero===!0&&(n.imaginary||(n.real=!0),n.zero=!1),n.one&&(n.positive=!0),n.negativeOne&&(n.nonPositive=!0),(n.positive||n.nonNegative)&&(n.negativeOne=!1),n.positive?(n.nonPositive=!1,n.negative=!1,n.nonNegative=!0):n.nonPositive?(n.positive=!1,n.negative=n.notZero,n.nonNegative=!n.zero):n.negative?(n.positive=!1,n.nonPositive=n.notZero,n.nonNegative=!1):n.nonNegative&&(n.positive=n.notZero,n.nonPositive=!n.zero,n.negative=!1),(n.positive||n.negative||n.nonPositive||n.nonNegative)&&(n.number=!0,n.finite?n.real=!0:n.finite||(n.complex=!0),n.imaginary=!1),n.finite&&(n.number=!0,n.complex=!0,n.infinity=!1,n.NaN=!1),n.infinity&&(n.finite=!1,n.NaN=!1),n.infinity===!1&&(n.extendedComplex=!1,n.extendedReal=!1),e.even&&(n.odd=!1),e.odd&&(n.even=!1),n.integer&&(n.rational=!0),n.rational&&(n.algebraic=!0),n.algebraic&&(n.real=!0),n.real&&(n.complex=!0),n.imaginary&&(n.complex=!0),n.complex&&(n.number=!0),n.real&&n.infinity!==!1&&(n.extendedReal=!0),n.complex&&n.infinity!==!1&&(n.extendedComplex=!0),(n.even||n.infinity||n.NaN||n.negative||n.imaginary||n.integer===!1)&&(n.prime=!1),n.number&&n.prime&&(n.composite=!1),n}function er(e){if(!e)return{};let n={};if(!e.isNumeric)return n.number=!1,n.integer=!1,n.rational=!1,n.algebraic=!1,n.real=!1,n.extendedReal=!1,n.complex=!1,n.extendedComplex=!1,n.imaginary=!1,n.positive=!1,n.nonPositive=!1,n.negative=!1,n.nonNegative=!1,n.zero=!1,n.notZero=!1,n.one=!1,n.negativeOne=!1,n.infinity=!1,n.NaN=!1,n.odd=!1,n.even=!1,n.prime=!1,n.composite=!1,n;let i=e.base;return n.number=!0,i==="Integers"&&(n.integer=!0),i==="RationalNumbers"&&(n.rational=!0),i==="AlgebraicNumbers"&&(n.algebraic=!0),i==="TranscendentalNumbers"&&(n.algebraic=!1,n.real=!0),i==="ExtendedRealNumbers"&&(n.extendedReal=!0),i==="RealNumbers"&&(n.real=!0),i==="ImaginaryNumbers"&&(n.imaginary=!0),i==="ExtendedComplexNumbers"&&(n.extendedComplex=!0),i==="ComplexNumbers"&&(n.complex=!0),i==="PositiveNumbers"&&(n.notZero=!0,n.real=!0,n.positive=!0),i==="NegativeNumbers"&&(n.notZero=!0,n.real=!0,n.negative=!0),i==="NonNegativeNumbers"&&(n.real=!0,n.positive=!0),i==="NonPositiveNumbers"&&(n.real=!0,n.negative=!0),i==="PositiveIntegers"&&(n.notZero=!0,n.integer=!0,n.positive=!0),i==="NegativeNumbers"&&(n.notZero=!0,n.integer=!0,n.negative=!0),i==="NonNegativeNumbers"&&(n.integer=!0,n.positive=!0),i==="NonPositiveNumbers"&&(n.integer=!0,n.negative=!0),Cf(Zi(n))}var Ce=class{constructor(n,i,t){if(!n.context)throw Error("No context available");this.engine=n,this.scope=n.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??Je,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,u=0;for(;a(s,u)!==void 0;)u++;return u}),t.at&&!t.iterator&&(this.iterator=(s,a=1,u=-1)=>{let l=t.at,f=a;return{next(){if(u>=0&&f>=a+u)return{done:!0,value:void 0};let d=l(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 u=1,l=this.iterator(s),f=l.next();for(;!f.done;){if(a.isEqual(f.value))return u;u++,f=l.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,u,l,f,d=!1;if(s.domain){let p=n.domain(s.domain);if(!p.isValid)throw Error(`Function Definition "${i}": invalid domain ${JSON.stringify(s.domain)}`);[a,u,l,f]=Ti(n.domain(p))}else s.params||s.result?(a=s.params?.map(p=>n.domain(p))??[],u=s.optParams?.map(p=>n.domain(p))??[],l=s.restParam?n.domain(s.restParam):void 0,typeof s.result=="function"?f=s.result:s.result?f=n.domain(s.result):t.numeric?f=n.Numbers:f=n.Anything):t.numeric?(d=!0,a=[],u=[],l=n.Numbers,f=n.Numbers):(d=!0,a=[],u=[],l=n.Anything,f=n.Anything);let c;if(s.evaluate&&typeof s.evaluate!="function"){let p=n.box(s.evaluate,{canonical:!1});if(!p.isValid)throw Error(`Invalid function ${p.toString()}`);let g=Fn(p);c=(b,_)=>g(_),c.toString=()=>p.toString()}else c=s.evaluate;this.signature={inferredSignature:d,params:a,optParams:u,restParam:l||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:n.Numbers,result:n.Numbers}:this.signature={inferredSignature:!0,params:[],optParams:[],restParam:n.Anything,result:n.Anything}}reset(){}};function nr(e,n,i){return i instanceof Ce?i:new Ce(e,n,i)}function po(e){if(e==="all")return po(["core","control-structures","logic","collections","relop","numeric","arithmetic","trigonometry","algebra","calculus","polynomials","combinatorics","linear-algebra","statistics","dimensions","units","physics","other"]);typeof e=="string"&&(e=[e]);let n=[];for(let i of e){let t=Af[i];if(!t)throw Error(`Unknown library category ${i}`);Array.isArray(t)?n.push(...t):n.push(t)}return Object.freeze(n)}var Af={algebra:[],arithmetic:[...Na,...Ta],calculus:_a,collections:[Va,Ia,Hs()],combinatorics:[],"control-structures":Ba,core:wa,dimensions:[],domains:[],"linear-algebra":Ma,logic:Fa,numeric:[],other:[],relop:qa,polynomials:Ra,physics:{Mu0:{description:"Vaccum permeability",constant:!0,wikidata:"Q1515261",domain:"RealNumbers",value:125663706212e-17}},statistics:$a,trigonometry:za,units:[]};function Of(e){if(e=e.normalize(),de(e))return e;throw new Error(`Invalid definition name "${e}": ${$e(e)}`)}function go(e,n){var t;if(!e.context)throw Error("No context available");(t=e.context).ids??(t.ids=new Map);let i=e.context.ids;e.strict;for(let[r,o]of Object.entries(n))if(r=Of(r),ho(o)){let s=nr(e,r,o);if(i.has(r))throw new Error(`Duplicate function definition ${r}:
|
|
49
49
|
${JSON.stringify(i.get(r))}
|
|
50
|
-
${JSON.stringify(o)}`);i.set(r,s)}else if(li(o)){let s=new X(e,r,o);if(e.strict&&o.wikidata){for(let[a,u]of i)if(u.wikidata===o.wikidata)throw new Error(`Duplicate entries with wikidata "${o.wikidata}": "${r}" and "${u.name}"`)}if(i.has(r))throw new Error(`Duplicate symbol definition "${r}"`);i.set(r,s)}else{let s=new X(e,r,{value:e.box(o)});i.set(r,s)}}function li(e){return e==null||typeof e!="object"||e instanceof F?!1:"domain"in e||"value"in e||"constant"in e}function $i(e){return e==null||typeof e!="object"||e instanceof F?!1:"signature"in e||"complexity"in e}var Ma=se(te());function Ln(e){return Number.isInteger(e)&&e!==0?Math.floor(Math.log2(Math.abs(e))/Math.log2(10))+(e>0?1:2):2}function so(e){if(e.symbol)return 1;let n=e.numericValue;if(n!==null){if(e.isZero)return 1;if(e.isInteger)return Ln(b(e));if(q(n))return P(n)?Ln(n[0])+Ln(n[1])+1:Ln(Number(n[0]))+Ln(Number(n[1]))+1;if(n instanceof Ma.Complex)return Ln(n.re)+Ln(n.im)+1;if(e.isNumber)return 2}let i=e.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","Sin","Sinh","Tan","Tanh"].includes(i)?t=9:t=10:t=so(i),t+(e.ops?.reduce((r,o)=>r+so(o),0)??0)}var ao=so;var fi=class e{constructor(n){n?n instanceof e?this._items=new Map(n._items):this._items=new Map(n):this._items=new Map}has(n){for(let i of this._items.keys())if(i.isSame(n))return!0;return!1}get(n){for(let[i,t]of this._items)if(i.isSame(n))return t}clear(){this._items.clear()}set(n,i){for(let t of this._items.keys())if(t.isSame(n)){this._items.set(t,i);return}this._items.set(n,i)}delete(n){this._items.delete(n)}[Symbol.iterator](){return this._items.entries()}entries(){return this._items.entries()}};function Aa(e){let n=[],i=(t,r=[])=>{if(t.length===0)n.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(e),n}var Zt=class e extends F{constructor(i,t,r){super(i,r);this._pattern=Xn(t)?i.parse(t,{canonical:!1}):i.box(t,{canonical:!1})}get hash(){return de("Pattern")^this._pattern.hash}reset(){this._pattern.reset()}get json(){return M(this.engine,"Pattern",[this._pattern])}get head(){return"Pattern"}get domain(){return this.engine.domain("Values")}get isCanonical(){return!0}set isCanonical(i){}isSame(i){return this===i?!0:i instanceof e&&this._pattern.isSame(i._pattern)}isEqual(i){return i instanceof e&&this._pattern.isEqual(i._pattern)}match(i,t){return Oa(i,this._pattern,{recursive:t?.recursive??!1,numericTolerance:t?.numericTolerance??0,substitution:t?.substitution??{}})}test(i,t){return this.match(i,t)!==null}count(i,t){let r=0;for(let o of i)this.match(o,t)!==null&&(r+=1);return r}subs(i,t){return this._pattern.subs(i,t)}};function Ht(e){if(typeof e=="string")return e.startsWith("_");if(e.symbol?.startsWith("_"))return!0;if(e.ops)return Ht(e.head)||e.ops.some(Ht);if(e.keys){for(let n of e.keys)if(Ht(e.getKey(n)))return!0}return!1}function zi(e,n,i){let t=Ts(e);return t===""?i:i[t]!==void 0?n.isSame(i[t])?i:null:Ht(n)?null:{...i,[t]:n}}function Fn(e,n,i,t){let r=e.engine;if(n.head==="Pattern")return n.match(e,{substitution:i,...t});if(n instanceof oe)return e instanceof oe?t.numericTolerance===0?n.isSame(e)?i:null:n.isEqualWithTolerance(e,t.numericTolerance)?i:null:null;let o=n.string;if(o!==null)return e.string===o?i:null;let s=n.symbol;if(s!==null)return s.startsWith("_")?zi(s,e,i):s===e.symbol?i:null;if(n.nops!==e.nops)return null;let a=n.keys;if(a!==null){let u=e.keys;if(u===null)return null;for(let l of a){let f=Fn(u[l],a[l],i,t);if(f===null)return null;i=f}return i}if(n.ops){let u=n.head;if(typeof u=="string"&&u.startsWith("_"))return zi(u,r.box(e.head),i);let l;if(typeof u=="string"&&typeof e.head=="string"){if(u!==e.head)return null;l=r.lookupFunction(u)}else{let f=Fn(r.box(e.head,{canonical:!1}),r.box(u,{canonical:!1}),i,t);if(f===null)return null;i=f}return l?.commutative?yf(e,n,i,t):Ef(e,n,i,t)}return null}function bf(e,n,i,t,r){let o={...t};n=[...n];let s=!1;for(let a of i)if(a.symbol==="__")s=!0;else{let u=null;if(a.symbol?.startsWith("_")){for(let l=0;l<=n.length-1;l++)if(u=zi(a.symbol,n[l],o),u!==null){n.splice(l,1);break}}else for(let l=0;l<=n.length-1;l++)if(u=Fn(n[l],a,o,r),u!==null){n.splice(l,1);break}if(u===null)return null;o=u}return!s&&n.length>0?null:(o!==null&&s&&(o.__=e._fn("Sequence",n)),o)}function yf(e,n,i,t){let r=Aa(n.ops);for(let o of r){let s=bf(e.engine,e.ops,o,i,t);if(s!==null)return s}return null}function Ef(e,n,i,t){let r=e.engine,o=[...e.ops],s={...i},a=0,u=n.ops;for(;a<n.nops;){let l=u[a],f=l.symbol;if(f!==null)if(f.startsWith("__")){let d=0;if(u[a+1]===void 0)d=o.length+1;else{let c=!1;for(;!c&&d<o.length;)c=Fn(o[d],u[a+1],s,t)!==null,d+=1;if(!c)return null}if(!f.startsWith("___")&&d<=1)return null;s=zi(f,r.fn("Sequence",o.splice(0,d-1)),s)}else if(f.startsWith("_"))s=zi(f,o.shift(),s);else{let d=Fn(o.shift(),l,s,t);if(d===null)return null;s=d}else{let d=Fn(o.shift(),l,s,t);if(d===null)return null;s=d}if(s===null)return null;a+=1}return s}function Oa(e,n,i){let t=Fn(e,n,i.substitution??{},{numericTolerance:i?.numericTolerance??Ni});if(t)return t;if(!i.recursive)return null;if(e.ops){let r=e.ops,o={};for(let s=0;s<r.length;s++){let a=Oa(r[s],n,i);if(a!==null)return a}return o}return null}var _n=class e extends F{constructor(i,t,r){super(i,r?.metadata);ue(t),`${t}${qe(t)}`,this._id=t,this._def=r?.def??void 0,r?.canonical??!0?this._def?this._scope=i.context:this.bind():this._scope=null}get hash(){return this._hash===void 0&&(this._hash=de(this._id)),this._hash}get isPure(){let i=this._def??this.engine.lookupSymbol(this._id,this.wikidata);return i?i instanceof X?(i?.constant&&i.value?.isPure)??!1:i instanceof Oe?i?.pure??!1:!1:!1}get json(){let i=this._scope?this.wikidata:void 0;return Ci(this.engine,this._id,{latex:this._latex,wikidata:i})}get scope(){return this._scope}get isConstant(){let i=this._def??this.engine.lookupSymbol(this._id,this.wikidata);return!(i instanceof X)||i.constant}bind(){this._scope=this.engine.context;let i=this.engine.lookupSymbol(this._id)??this.engine.lookupFunction(this._id);if(i){this._def=i;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(i){this._scope=i?this.engine.context:null,this._def=void 0}get canonical(){return this._scope?this:this.engine.box(this._id)}get complexity(){return 7}get head(){return"Symbol"}get symbol(){return this._id}get isNothing(){return this._id==="Nothing"}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 X?this._def:void 0}get functionDefinition(){return this._def===void 0&&this.bind(),this._def instanceof Oe?this._def:void 0}infer(i){let t=this.engine.lookupSymbol(this._id)??this.engine.lookupFunction(this._id);if(!t){let r=this.engine.swapScope(this._scope??this.engine.context);return this._def=this.engine.defineSymbol(this._id,{domain:i,inferred:!0}),this.engine.swapScope(r),!0}return t instanceof X&&t.inferredDomain?(t.domain=Pr(t.domain,i),!0):!1}get value(){let i=this._def;if(i&&i instanceof X)return i.value}set value(i){let t=this.engine;t.forget(this._id);let r;if(typeof i=="boolean"&&(i=i?t.True:t.False),typeof i=="string"&&(i=t.string(i)),i!==void 0){let s=t.box(i);r=s.value??s.evaluate()}if(r?.domain?.isFunction){this.engine.lookupSymbol(this._id),this._def=t.defineFunction(this._id,{signature:{domain:r.domain,evaluate:r}});return}let o=this.engine.lookupSymbol(this._id);if(o&&o instanceof X)o.value=r;else{let s=r?.domain;s?.isNumeric&&(s=t.Numbers),this._def=t.defineSymbol(this._id,{value:r,domain:s})}}get domain(){let i=this._def;if(i){if($i(i))return i.signature.domain?this.engine.domain(i.signature.domain):void 0;if(li(i))return i.domain??void 0}}set domain(i){if(!this._def)return;if(this._id[0]==="_")throw new Error(`The domain of the wildcard "${this._id}" cannot be changed`);let t=this.engine.domain(i);t.isFunction?(this.engine.forget(this._id),this._def=this.engine.defineFunction(this._id,{signature:{domain:t}})):this._def instanceof X?this._def.domain=t:(this.engine.forget(this._id),this._def=this.engine.defineSymbol(this._id,{domain:t}))}get sgn(){let i=this.value;if(i&&i!==this){let r=i.sgn;if(r!==void 0)return r}let t=this.symbolDefinition;if(t){if(t.zero===!0)return 0;if(t.positive===!0)return 1;if(t.negative===!0)return-1}else return null}has(i){return typeof i=="string"?this._id===i:i.includes(this._id)}isSame(i){return this===i?!0:i instanceof e?this._id===i._id:!1}match(i,t){return i instanceof e&&this._id===i._id?{}:null}isEqual(i){if(!this.isCanonical)return this.canonical.isEqual(i);if(i=i.canonical,this===i)return!0;if(i.symbol!==null)return i.symbol===this._id;let t=this.symbolDefinition?.value?.N();if(t)return t.isEqual(i.N());if(i.isZero){if(this.isZero)return!0;if(this.isNotZero)return!1}return this.isZero&&i.isNotZero?!1:this.engine.ask(["Equal",this,i]).length>0?!0:(this.engine.ask(["NotEqual",this,i]).length>0,!1)}isLess(i){if(i.symbol!==null&&i.symbol===this._id)return!1;let t=this.symbolDefinition?.value?.N();if(t)return t.isLess(i.N());if(i.isZero){let r=this.sgn;if(r===null)return!1;if(r!==void 0)return r<0}}isLessEqual(i){if(i.symbol!==null&&i.symbol===this._id)return!0;let t=this.symbolDefinition?.value?.N();if(t)return t.isLessEqual(i.N());if(i.isZero){let r=this.sgn;if(r===null)return!1;if(r!==void 0)return r<=0}return this.isLess(i)||this.isEqual(i)}isGreater(i){if(i.symbol!==null&&i.symbol===this._id)return!1;let t=this.symbolDefinition?.value?.N();if(t)return t.isGreater(i.N());if(i.isZero){let r=this.sgn;if(r===null)return!1;if(r!==void 0)return r>0}}isGreaterEqual(i){if(i.symbol!==null&&i.symbol===this._id)return!0;let t=this.symbolDefinition?.value?.N();if(t)return t.isGreaterEqual(i.N());if(i.isZero){let r=this.sgn;if(r===null)return!1;if(r!==void 0)return r>=0}return this.isGreater(i)||this.isEqual(i)}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(i){let t=this.symbolDefinition;return t?.holdUntil==="simplify"&&t.value?t.value.simplify(i):i?.rules?this.replace(i.rules)??this:this}evaluate(i){let t=this.symbolDefinition;if(t){if(i?.numericMode)return t.holdUntil==="never"?this:t.value?.N(i)??this;if(t.holdUntil==="simplify"||t.holdUntil==="evaluate")return t.value?.evaluate(i)??this}return this}N(i){let t=this.symbolDefinition;return t&&t.holdUntil==="never"?this:t?.value?.N(i)??this}replace(i,t){return vt(this,i,t)}subs(i,t){return i[this._id]===void 0?t?.canonical?this.canonical:this:this.engine.box(i[this._id],t)}};function uo(e,n){let i=e.lookupSymbol(n);return i?.holdUntil==="never"&&i.value?i.value:new _n(e,n,{canonical:!0,def:i})}var Ui="\x1B[0m";var Ca="\x1B[33m";var Pa="\x1B[36;1m",lo="\x1B[101;97m";var di=class e{constructor(n){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(n!==void 0&&typeof n!="object")throw Error("Unexpected argument");this.strict=!0,this._jsonSerializationOptions={exclude:[],shorthands:["function","symbol","string","dictionary","number"],metadata:[],precision:"max",repeatingDecimals:!0},this._useRawJsonSerializationOptions=!1,this._rawJsonSerializationOptions={exclude:[],shorthands:["function","symbol","string","dictionary","number"],metadata:[],precision:"max",repeatingDecimals:!1},this._stats={highwaterMark:0,symbols:new Set,expressions:new Set},this._defaultDomain=null,this._numericMode=n?.numericMode??"auto",this._precision=Math.max(n?.numericPrecision??100,Math.floor(Bn)),this._bignum=E.clone({precision:this._precision}),this.tolerance=n?.tolerance??Ni,this.Zero=new oe(this,0),this.One=new oe(this,1),this.Half=new oe(this,[1,2]),this.NegativeOne=new oe(this,-1),this.NaN=new oe(this,Number.NaN),this.PositiveInfinity=new oe(this,Number.POSITIVE_INFINITY),this.NegativeInfinity=new oe(this,Number.NEGATIVE_INFINITY),this.I=new oe(this,Rn.Complex.I),this.ComplexInfinity=new oe(this,Rn.Complex.INFINITY),this.reset(),this.context={assumptions:new fi,timeLimit:2,memoryLimit:1,recursionLimit:1024,iterationLimit:Number.POSITIVE_INFINITY};for(let t of e.getStandardLibrary("domains"))oo(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 an(this,It[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=n?.ids??e.getStandardLibrary();for(let t of i)oo(this,t);for(let t of Object.keys(this._commonSymbols)){let r=new _n(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(n="all"){return ro(n)}get latexDictionary(){return this.latexSyntax.dictionary}set latexDictionary(n){this.latexSyntax.dictionary=n}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 n=this._stats.symbols.values(),i=this._stats.expressions.values();this._stats.symbols=new Set,this._stats.expressions=new Set;for(let r of n)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(n){this._stats.highwaterMark+=1}_unregister(n){}get stats(){let n=this._stats.expressions;return this._stats.expressions=null,this._stats.expressions=n,{...this._stats}}get precision(){return this._numericMode==="machine"||this._numericMode==="complex"?Math.floor(Bn):this._precision}set precision(n){n==="machine"&&(n=Math.floor(Bn));let i=this._precision;if(n!==i){if(typeof n!="number"||n<=0)throw Error('Expected "machine" or a positive number');this._latexSyntax?.updateOptions({precision:n,avoidExponentsInRange:[-6,n]}),this._precision=Math.max(n,Math.floor(Bn)),this.jsonSerializationOptions.precision>this._precision&&(this.jsonSerializationOptions={precision:this._precision}),this._numericMode!=="auto"&&this._numericMode!=="bignum"&&this._precision>Math.floor(Bn)&&(this._numericMode="auto"),this._bignum=this._bignum.config({precision:this._precision}),this.reset()}}get numericMode(){return this._numericMode}set numericMode(n){if(n!==this._numericMode){if(typeof n!="string")throw Error("Expected a string");this._numericMode=n,(n==="complex"||n==="machine")&&(this._precision=Math.floor(Bn)),this._latexSyntax&&this.latexSyntax.options.precision>this._precision&&this.latexSyntax.updateOptions({precision:this._precision}),this.jsonSerializationOptions.precision>this._precision&&(this.jsonSerializationOptions={precision:this._precision}),this.reset()}}get timeLimit(){let n=this.context;for(;n;){if(n.timeLimit!==void 0)return n.timeLimit;n=n.parentScope??null}return 2}get iterationLimit(){let n=this.context;for(;n;){if(n.iterationLimit!==void 0)return n.iterationLimit;n=n.parentScope??null}return 1024}get recursionLimit(){let n=this.context;for(;n;){if(n.recursionLimit!==void 0)return n.recursionLimit;n=n.parentScope??null}return 1024}get tolerance(){return this._tolerance}set tolerance(n){typeof n=="number"&&Number.isFinite(n)?this._tolerance=Math.max(n,0):this._tolerance=Ni,this._bignumTolerance=this.bignum(this._tolerance)}chop(n){return typeof n=="number"&&Math.abs(n)<=this._tolerance||n instanceof E&&n.abs().lte(this._bignumTolerance)||n instanceof Rn.Complex&&Math.abs(n.re)<=this._tolerance&&Math.abs(n.im)<=this._tolerance?0:n}bignum(n){return typeof n=="bigint"?new this._bignum(n.toString()):new this._bignum(n)}complex(n,i){return n instanceof E&&(n=n.toNumber()),i instanceof E&&(i=i.toNumber()),new Rn.Complex(n,i)}isBignum(n){return n instanceof E}isComplex(n){return n instanceof Rn.Complex}get latexSyntax(){if(!this._latexSyntax){let n=this.precision;this._latexSyntax=new Ei({computeEngine:this,precision:n,avoidExponentsInRange:[-6,n],onError:i=>{throw new Error(JSON.stringify(i[0].message))}})}return this._latexSyntax}static getLatexDictionary(n="all"){return Ei.getDictionary(n)}set costFunction(n){typeof n!="function"&&(this._cost=ao),this._cost=n}get costFunction(){return this._cost??ao}lookupSymbol(n,i,t){if(!this.strict){for(t??(t=this.context??void 0);t;){let o=t.ids?.get(n);if(o&&o instanceof X)return o;t=t.parentScope}return}if(typeof n!="string")throw Error("Expected a string");if(n.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 X&&s.wikidata===i)return s}t=t.parentScope}for(t=r;t;){let o=t.ids?.get(n);if(o instanceof X)return o;t=t.parentScope}}lookupFunction(n,i){if(typeof n=="string"&&this.context)for(i??(i=this.context);i;){let t=i.ids?.get(n);if(t instanceof Oe)return t;i=i.parentScope}}defineSymbol(n,i){if(!this.context)throw Error("Symbol cannot be defined: no scope available");if(n.length===0||!ue(n))throw Error(`Invalid identifier "${n}": ${qe(n)}}`);return this._defineSymbol(n,i)}_defineSymbol(n,i){var r;(r=this.context).ids??(r.ids=new Map);let t=new X(this,n,i);return t.name&&this.context.ids.set(t.name,t),t}defineFunction(n,i){if(!this.context)throw Error("Function cannot be defined: no scope available");if(n.length===0||!ue(n))throw Error(`Invalid identifier "${n}": ${qe(n)}}`);return this._defineFunction(n,i)}_defineFunction(n,i){var r;(r=this.context).ids??(r.ids=new Map);let t=jt(this,n,i);return t.name&&this.context.ids.set(t.name,t),t}pushScope(n){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,...n??{},parentScope:this.context,assumptions:new fi(this.context.assumptions)},this}popScope(){if(!this.context)throw Error("No scope available");return this.context=this.context.parentScope??null,this.context,this}swapScope(n){let i=this.context;return this.context=n,this.context,i}resetContext(){if(this.context)for(let[n,i]of this.context.ids??[])i instanceof X?i.constant||(i.value=void 0):i instanceof Oe&&(i.signature={domain:i.signature.domain})}_printScope(n,i,t=0){if(n??(n={details:!1,maxDepth:1}),i??(i=this.context),!i||n.maxDepth&&t>n.maxDepth)return null;let r=`${Ca}[undefined]${Ui}`;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 u=`${Pa}${s}${Ui}`;try{if(a instanceof X){let l=a.value?.isValid?a.value.toString():a.value?`${lo}${a.value.toString()}${Ui}`:r;console.info(`${u}: ${a.domain?.toString()??r} = ${l}`)}else a instanceof Oe&&(typeof a.signature.evaluate=="function"?console.info(`${u}(): ${n.details?a.signature.evaluate.toString():"[native-code]"}`):a.signature.evaluate===void 0?console.info(`${u}(): ${r}`):console.info(`${u}(): ${a.toString()}`));o===11&&console.groupCollapsed(`... and ${i.ids.size-o} more`),o+=1}catch(l){console.info(`${u}: ${lo}${l.message}${Ui}`)}}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(n,i.parentScope,t+1),console.groupEnd(),this.context}declare(n,i){if(typeof n!="string"||i===void 0){for(let[s,a]of Object.entries(n))this.declare(s,a);return this}let[t,r]=Jr(n);if(r!==void 0)throw Error(`Unexpected arguments with ${n}. 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 X&&s.inferredDomain)return li(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(li(o))return this.defineSymbol(t,o),this;if($i(o))return this.defineFunction(t,o),this;{let s=this.domain(o);if(s.isValid)if(s.isFunction)this.defineFunction(t,{signature:{domain: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(n,i){if(typeof n=="object"){for(let[u,l]of Object.entries(n))this.assign(u,l);return this}let[t,r]=Jr(n);if(t==="Nothing")return this;let o=i;if(typeof o=="boolean"&&(o=o?this.True:this.False),typeof o=="string"){let u=o.trim();u.startsWith("$")&&u.endsWith("$")?o=this.parse(u.slice(1,-1),{canonical:!1}):u.startsWith("$$")&&u.endsWith("$$")?o=this.parse(u.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(r)throw Error(`The symbol "${t}" is not a function`);if(typeof o=="function")throw Error(`Cannot assign a function to symbol "${t}"`);if(o==null)return s.value=void 0,this;let u=s.scope;return u?.ids?.delete(s.name),s.value=this.box(o),u?.ids?.set(s.name,s),this}let a=this.lookupFunction(t);if(a){let u=a.scope;if(u?.ids?.delete(a.name),o==null)return this;if(typeof o=="function"){let d=this.swapScope(u);return this.defineFunction(t,{signature:{domain:"Functions",evaluate:o}}),this.swapScope(d),this}let l=r?this.box(["Function",o,...r]):this.box(o),f=this.swapScope(u);return this.defineFunction(t,{signature:{domain:"Functions",evaluate:l}}),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:{domain:"Functions",evaluate:o}}),this;if(Array.isArray(o)||o instanceof F||r){let u=this.box(o,{canonical:!1});if(u.head==="Function")return u=this.box(["Function",...u.ops,...(r??[]).map(f=>this.symbol(f))]),this.defineFunction(t,{signature:{domain:"Functions",evaluate:u}}),this;let l=[...u.unknowns].sort();if(l.length===0){let f=u.evaluate();return this.defineSymbol(t,{value:f}),this}if(l.some(f=>/\_[\d]+/.test(f)))return u=this.box(["Function",u]),this.defineFunction(t,{signature:{domain:"Functions",evaluate:u}}),this;if(r&&r.length>0)return this.pushScope(),u=this.box(["Function",u,...r]),this.popScope(),this.defineFunction(t,{signature:{domain:"Functions",evaluate:u}}),this;this.pushScope(),o=u.evaluate(),this.popScope()}return this.defineSymbol(t,{value:o}),this}_assign(n,i){let t=this.lookupSymbol(n);if(t)return t.value=this.box(i).evaluate(),this;let r=this.lookupFunction(n);return r?(r.signature={domain:r.signature.domain,evaluate:i},this):(`${n}`,this)}get assumptions(){if(!this.context)throw Error("No scope available");return this.context.assumptions?this.context.assumptions:(this.context.assumptions=new fi,this.context.assumptions)}shouldContinueExecution(){return this.deadline===void 0||this.deadline>=Date.now()}checkContinueExecution(){if(!this.shouldContinueExecution())throw new Error("timeout")}cache(n,i,t){if(this._cache[n]===void 0)try{this._cache[n]={build:i,purge:t,value:i()}}catch(r){console.error(`Fatal error building cache "${n}":
|
|
51
|
-
${r.toString()}`)}return this._cache[n]?.value}box(n,i){return
|
|
50
|
+
${JSON.stringify(o)}`);i.set(r,s)}else if(ir(o)){let s=new K(e,r,o);if(e.strict&&o.wikidata){for(let[a,u]of i)if(u.wikidata===o.wikidata)throw new Error(`Duplicate entries with wikidata "${o.wikidata}": "${r}" and "${u.name}"`)}if(i.has(r))throw new Error(`Duplicate symbol definition "${r}"`);i.set(r,s)}else{let s=new K(e,r,{value:e.box(o)});i.set(r,s)}}function ir(e){return e==null||typeof e!="object"||e instanceof P?!1:"domain"in e||"value"in e||"constant"in e}function ho(e){return e==null||typeof e!="object"||e instanceof P?!1:"signature"in e||"complexity"in e}var Ga=le(ae());function Rn(e){return Number.isInteger(e)&&e!==0?Math.floor(Math.log2(Math.abs(e))/Math.log2(10))+(e>0?1:2):2}function xo(e){if(e.symbol)return 1;let n=e.numericValue;if(n!==null){if(e.isZero)return 1;if(e.isInteger)return Rn(y(e));if(V(n))return L(n)?Rn(n[0])+Rn(n[1])+1:Rn(Number(n[0]))+Rn(Number(n[1]))+1;if(n instanceof Ga.Complex)return Rn(n.re)+Rn(n.im)+1;if(e.isNumber)return 2}let i=e.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","Sin","Sinh","Tan","Tanh"].includes(i)?t=9:t=10:t=xo(i),t+(e.ops?.reduce((r,o)=>r+xo(o),0)??0)}var bo=xo;var mi=class e{constructor(n){n?n instanceof e?this._items=new Map(n._items):this._items=new Map(n):this._items=new Map}has(n){for(let i of this._items.keys())if(i.isSame(n))return!0;return!1}get(n){for(let[i,t]of this._items)if(i.isSame(n))return t}clear(){this._items.clear()}set(n,i){for(let t of this._items.keys())if(t.isSame(n)){this._items.set(t,i);return}this._items.set(n,i)}delete(n){this._items.delete(n)}[Symbol.iterator](){return this._items.entries()}entries(){return this._items.entries()}};function ja(e){let n=[],i=(t,r=[])=>{if(t.length===0)n.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(e),n}var rr=class e extends P{constructor(i,t,r){super(i,r);this._pattern=ei(t)?i.parse(t,{canonical:!1}):i.box(t,{canonical:!1})}get hash(){return he("Pattern")^this._pattern.hash}reset(){this._pattern.reset()}get json(){return A(this.engine,"Pattern",[this._pattern])}get head(){return"Pattern"}get domain(){return this.engine.domain("Values")}get isCanonical(){return!0}set isCanonical(i){}isSame(i){return this===i?!0:i instanceof e&&this._pattern.isSame(i._pattern)}isEqual(i){return i instanceof e&&this._pattern.isEqual(i._pattern)}match(i,t){return Ha(i,this._pattern,{recursive:t?.recursive??!1,numericTolerance:t?.numericTolerance??0,substitution:t?.substitution??{}})}test(i,t){return this.match(i,t)!==null}count(i,t){let r=0;for(let o of i)this.match(o,t)!==null&&(r+=1);return r}subs(i,t){return this._pattern.subs(i,t)}};function tr(e){if(typeof e=="string")return e.startsWith("_");if(e.symbol?.startsWith("_"))return!0;if(e.ops)return tr(e.head)||e.ops.some(tr);if(e.keys){for(let n of e.keys)if(tr(e.getKey(n)))return!0}return!1}function Ji(e,n,i){let t=Us(e);return t===""?i:i[t]!==void 0?n.isSame(i[t])?i:null:tr(n)?null:{...i,[t]:n}}function qn(e,n,i,t){let r=e.engine;if(n.head==="Pattern")return n.match(e,{substitution:i,...t});if(n instanceof ue)return e instanceof ue?t.numericTolerance===0?n.isSame(e)?i:null:n.isEqualWithTolerance(e,t.numericTolerance)?i:null:null;let o=n.string;if(o!==null)return e.string===o?i:null;let s=n.symbol;if(s!==null)return s.startsWith("_")?Ji(s,e,i):s===e.symbol?i:null;if(n.nops!==e.nops)return null;let a=n.keys;if(a!==null){let u=e.keys;if(u===null)return null;for(let l of a){let f=qn(u[l],a[l],i,t);if(f===null)return null;i=f}return i}if(n.ops){let u=n.head;if(typeof u=="string"&&u.startsWith("_"))return Ji(u,r.box(e.head),i);let l;if(typeof u=="string"&&typeof e.head=="string"){if(u!==e.head)return null;l=r.lookupFunction(u)}else{let f=qn(r.box(e.head,{canonical:!1}),r.box(u,{canonical:!1}),i,t);if(f===null)return null;i=f}return l?.commutative?Lf(e,n,i,t):Ff(e,n,i,t)}return null}function Pf(e,n,i,t,r){let o={...t};n=[...n];let s=!1;for(let a of i)if(a.symbol==="__")s=!0;else{let u=null;if(a.symbol?.startsWith("_")){for(let l=0;l<=n.length-1;l++)if(u=Ji(a.symbol,n[l],o),u!==null){n.splice(l,1);break}}else for(let l=0;l<=n.length-1;l++)if(u=qn(n[l],a,o,r),u!==null){n.splice(l,1);break}if(u===null)return null;o=u}return!s&&n.length>0?null:(o!==null&&s&&(o.__=e._fn("Sequence",n)),o)}function Lf(e,n,i,t){let r=ja(n.ops);for(let o of r){let s=Pf(e.engine,e.ops,o,i,t);if(s!==null)return s}return null}function Ff(e,n,i,t){let r=e.engine,o=[...e.ops],s={...i},a=0,u=n.ops;for(;a<n.nops;){let l=u[a],f=l.symbol;if(f!==null)if(f.startsWith("__")){let d=0;if(u[a+1]===void 0)d=o.length+1;else{let c=!1;for(;!c&&d<o.length;)c=qn(o[d],u[a+1],s,t)!==null,d+=1;if(!c)return null}if(!f.startsWith("___")&&d<=1)return null;s=Ji(f,r.fn("Sequence",o.splice(0,d-1)),s)}else if(f.startsWith("_"))s=Ji(f,o.shift(),s);else{let d=qn(o.shift(),l,s,t);if(d===null)return null;s=d}else{let d=qn(o.shift(),l,s,t);if(d===null)return null;s=d}if(s===null)return null;a+=1}return s}function Ha(e,n,i){let t=qn(e,n,i.substitution??{},{numericTolerance:i?.numericTolerance??Bi});if(t)return t;if(!i.recursive)return null;if(e.ops){let r=e.ops,o={};for(let s=0;s<r.length;s++){let a=Ha(r[s],n,i);if(a!==null)return a}return o}return null}var In=class e extends P{constructor(i,t,r){super(i,r?.metadata);de(t),`${t}${$e(t)}`,this._id=t,this._def=r?.def??void 0,r?.canonical??!0?this._def?this._scope=i.context:this.bind():this._scope=null}get hash(){return this._hash===void 0&&(this._hash=he(this._id)),this._hash}get isPure(){let i=this._def??this.engine.lookupSymbol(this._id,this.wikidata);return i?i instanceof K?(i?.constant&&i.value?.isPure)??!1:i instanceof Ce?i?.pure??!1:!1:!1}get json(){let i=this._scope?this.wikidata:void 0;return $i(this.engine,this._id,{latex:this._latex,wikidata:i})}get scope(){return this._scope}get isConstant(){let i=this._def??this.engine.lookupSymbol(this._id,this.wikidata);return!(i instanceof K)||i.constant}bind(){this._scope=this.engine.context;let i=this.engine.lookupSymbol(this._id)??this.engine.lookupFunction(this._id);if(i){this._def=i;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(i){this._scope=i?this.engine.context:null,this._def=void 0}get canonical(){return this._scope?this:this.engine.box(this._id)}get complexity(){return 7}get head(){return"Symbol"}get symbol(){return this._id}get isNothing(){return this._id==="Nothing"}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 K?this._def:void 0}get functionDefinition(){return this._def===void 0&&this.bind(),this._def instanceof Ce?this._def:void 0}infer(i){let t=this.engine.lookupSymbol(this._id)??this.engine.lookupFunction(this._id);if(!t){let r=this.engine.swapScope(this._scope??this.engine.context);return this._def=this.engine.defineSymbol(this._id,{domain:i,inferred:!0}),this.engine.swapScope(r),!0}return t instanceof K&&t.inferredDomain?(t.domain=qi(t.domain,i),!0):!1}get value(){let i=this._def;if(i&&i instanceof K)return i.value?.value}set value(i){let t=this.engine;t.forget(this._id);let r;if(typeof i=="boolean"&&(i=i?t.True:t.False),typeof i=="string"&&(i=t.string(i)),typeof i=="object")if("re"in i&&"im"in i)i=t.complex(i.re,i.im);else if("num"in i&&"denom"in i)i=t.number([i.num,i.denom]);else if(Array.isArray(i))i=t._fn("List",i.map(s=>t.box(s)));else throw new Error(`Invalid value for symbol ${this._id}: ${i}`);if(i!==void 0&&(r=t.box(i).evaluate()),r?.domain?.isFunction){this.engine.lookupSymbol(this._id),this._def=t.defineFunction(this._id,{signature:{...ki(r.domain),evaluate:r}});return}let o=this.engine.lookupSymbol(this._id);if(o&&o instanceof K)o.value=r;else{let s=r?.domain;s?.isNumeric&&(s=t.Numbers),this._def=t.defineSymbol(this._id,{value:r,domain:s})}}get domain(){let i=this._def;if(i){if(i instanceof Ce)return Tt(this.engine,i.signature);if(i instanceof K)return i.domain??void 0}}set domain(i){if(!this._def)return;if(this._id[0]==="_")throw new Error(`The domain of the wildcard "${this._id}" cannot be changed`);let t=this.engine.domain(i);t.isFunction?(this.engine.forget(this._id),this._def=this.engine.defineFunction(this._id,{signature:ki(t)})):this._def instanceof K?this._def.domain=t:(this.engine.forget(this._id),this._def=this.engine.defineSymbol(this._id,{domain:t}))}get sgn(){let i=this._def;if(!i||!(i instanceof K))return null;let t=i.value;if(t&&t!==this){let r=t.sgn;if(r!==void 0)return r}if(i.zero===!0)return 0;if(i.positive===!0)return 1;if(i.negative===!0)return-1}has(i){return typeof i=="string"?this._id===i:i.includes(this._id)}isSame(i){return this===i?!0:i instanceof e?this._id===i._id:!1}match(i,t){return i instanceof e&&this._id===i._id?{}:null}isEqual(i){if(!this.isCanonical)return this.canonical.isEqual(i);if(i=i.canonical,this===i)return!0;if(i.symbol!==null)return i.symbol===this._id;let t=this.symbolDefinition?.value?.N();if(t)return t.isEqual(i.N());if(i.isZero){if(this.isZero)return!0;if(this.isNotZero)return!1}return this.isZero&&i.isNotZero?!1:this.engine.ask(["Equal",this,i]).length>0?!0:(this.engine.ask(["NotEqual",this,i]).length>0,!1)}isLess(i){if(i.symbol!==null&&i.symbol===this._id)return!1;let t=this.symbolDefinition?.value?.N();if(t)return t.isLess(i.N());if(i.isZero){let r=this.sgn;if(r===null)return!1;if(r!==void 0)return r<0}}isLessEqual(i){if(i.symbol!==null&&i.symbol===this._id)return!0;let t=this.symbolDefinition?.value?.N();if(t)return t.isLessEqual(i.N());if(i.isZero){let r=this.sgn;if(r===null)return!1;if(r!==void 0)return r<=0}return this.isLess(i)||this.isEqual(i)}isGreater(i){if(i.symbol!==null&&i.symbol===this._id)return!1;let t=this.symbolDefinition?.value?.N();if(t)return t.isGreater(i.N());if(i.isZero){let r=this.sgn;if(r===null)return!1;if(r!==void 0)return r>0}}isGreaterEqual(i){if(i.symbol!==null&&i.symbol===this._id)return!0;let t=this.symbolDefinition?.value?.N();if(t)return t.isGreaterEqual(i.N());if(i.isZero){let r=this.sgn;if(r===null)return!1;if(r!==void 0)return r>=0}return this.isGreater(i)||this.isEqual(i)}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(i){let t=this.symbolDefinition;return t?.holdUntil==="simplify"&&t.value?t.value.simplify(i):i?.rules?this.replace(i.rules)??this:this}evaluate(i){let t=this.symbolDefinition;if(t){if(i?.numericMode)return t.holdUntil==="never"?this:t.value?.N(i)??this;if(t.holdUntil==="simplify"||t.holdUntil==="evaluate")return t.value?.evaluate(i)??this}return this}N(i){let t=this.symbolDefinition;return t&&t.holdUntil==="never"?this:t?.value?.N(i)??this}replace(i,t){return Mt(this,i,t)}subs(i,t){return i[this._id]===void 0?t?.canonical?this.canonical:this:this.engine.box(i[this._id],t)}};function yo(e,n){let i=e.lookupSymbol(n);return i?.holdUntil==="never"&&i.value?i.value:new In(e,n,{canonical:!0,def:i})}var Wi="\x1B[0m";var Za="\x1B[33m";var Ja="\x1B[36;1m",Eo="\x1B[101;97m";var pi=class e{constructor(n){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(n!==void 0&&typeof n!="object")throw Error("Unexpected argument");this.strict=!0,this._jsonSerializationOptions={exclude:[],shorthands:["function","symbol","string","dictionary","number"],metadata:[],precision:"max",repeatingDecimals:!0},this._useRawJsonSerializationOptions=!1,this._rawJsonSerializationOptions={exclude:[],shorthands:["function","symbol","string","dictionary","number"],metadata:[],precision:"max",repeatingDecimals:!1},this._stats={highwaterMark:0,symbols:new Set,expressions:new Set},this._defaultDomain=null,this._numericMode=n?.numericMode??"auto",this._precision=Math.max(n?.numericPrecision??100,Math.floor(Tn)),this._bignum=E.clone({precision:this._precision}),this.tolerance=n?.tolerance??Bi,this.Zero=new ue(this,0),this.One=new ue(this,1),this.Half=new ue(this,[1,2]),this.NegativeOne=new ue(this,-1),this.NaN=new ue(this,Number.NaN),this.PositiveInfinity=new ue(this,Number.POSITIVE_INFINITY),this.NegativeInfinity=new ue(this,Number.NEGATIVE_INFINITY),this.I=new ue(this,Vn.Complex.I),this.ComplexInfinity=new ue(this,Vn.Complex.INFINITY),this.reset(),this.context={assumptions:new mi,timeLimit:2,memoryLimit:1,recursionLimit:1024,iterationLimit:Number.POSITIVE_INFINITY};for(let t of e.getStandardLibrary("domains"))go(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,Ot[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=n?.ids??e.getStandardLibrary();for(let t of i)go(this,t);for(let t of Object.keys(this._commonSymbols)){let r=new In(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(n="all"){return po(n)}get latexDictionary(){return this.latexSyntax.dictionary}set latexDictionary(n){this.latexSyntax.dictionary=n}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 n=this._stats.symbols.values(),i=this._stats.expressions.values();this._stats.symbols=new Set,this._stats.expressions=new Set;for(let r of n)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(n){this._stats.highwaterMark+=1}_unregister(n){}get stats(){let n=this._stats.expressions;return this._stats.expressions=null,this._stats.expressions=n,{...this._stats}}get precision(){return this._numericMode==="machine"||this._numericMode==="complex"?Math.floor(Tn):this._precision}set precision(n){n==="machine"&&(n=Math.floor(Tn));let i=this._precision;if(n!==i){if(typeof n!="number"||n<=0)throw Error('Expected "machine" or a positive number');this._latexSyntax?.updateOptions({precision:n,avoidExponentsInRange:[-6,n]}),this._precision=Math.max(n,Math.floor(Tn)),this.jsonSerializationOptions.precision>this._precision&&(this.jsonSerializationOptions={precision:this._precision}),this._numericMode!=="auto"&&this._numericMode!=="bignum"&&this._precision>Math.floor(Tn)&&(this._numericMode="auto"),this._bignum=this._bignum.config({precision:this._precision}),this.reset()}}get numericMode(){return this._numericMode}set numericMode(n){if(n!==this._numericMode){if(typeof n!="string")throw Error("Expected a string");this._numericMode=n,(n==="complex"||n==="machine")&&(this._precision=Math.floor(Tn)),this._latexSyntax&&this.latexSyntax.options.precision>this._precision&&this.latexSyntax.updateOptions({precision:this._precision}),this.jsonSerializationOptions.precision>this._precision&&(this.jsonSerializationOptions={precision:this._precision}),this.reset()}}get timeLimit(){let n=this.context;for(;n;){if(n.timeLimit!==void 0)return n.timeLimit;n=n.parentScope??null}return 2}get iterationLimit(){let n=this.context;for(;n;){if(n.iterationLimit!==void 0)return n.iterationLimit;n=n.parentScope??null}return 1024}get recursionLimit(){let n=this.context;for(;n;){if(n.recursionLimit!==void 0)return n.recursionLimit;n=n.parentScope??null}return 1024}get tolerance(){return this._tolerance}set tolerance(n){typeof n=="number"&&Number.isFinite(n)?this._tolerance=Math.max(n,0):this._tolerance=Bi,this._bignumTolerance=this.bignum(this._tolerance)}chop(n){return typeof n=="number"&&Math.abs(n)<=this._tolerance||n instanceof E&&n.abs().lte(this._bignumTolerance)||n instanceof Vn.Complex&&Math.abs(n.re)<=this._tolerance&&Math.abs(n.im)<=this._tolerance?0:n}bignum(n){return typeof n=="bigint"?new this._bignum(n.toString()):new this._bignum(n)}complex(n,i){return n instanceof E&&(n=n.toNumber()),i instanceof E&&(i=i.toNumber()),new Vn.Complex(n,i)}isBignum(n){return n instanceof E}isComplex(n){return n instanceof Vn.Complex}get latexSyntax(){if(!this._latexSyntax){let n=this.precision;this._latexSyntax=new Ii({computeEngine:this,precision:n,avoidExponentsInRange:[-6,n],onError:i=>{throw new Error(JSON.stringify(i[0].message))}})}return this._latexSyntax}static getLatexDictionary(n="all"){return Ii.getDictionary(n)}set costFunction(n){typeof n!="function"&&(this._cost=bo),this._cost=n}get costFunction(){return this._cost??bo}lookupSymbol(n,i,t){if(!this.strict){for(t??(t=this.context??void 0);t;){let o=t.ids?.get(n);if(o&&o instanceof K)return o;t=t.parentScope}return}if(typeof n!="string")throw Error("Expected a string");if(n.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 K&&s.wikidata===i)return s}t=t.parentScope}for(t=r;t;){let o=t.ids?.get(n);if(o instanceof K)return o;t=t.parentScope}}lookupFunction(n,i){if(typeof n=="string"&&this.context)for(i??(i=this.context);i;){let t=i.ids?.get(n);if(t instanceof Ce)return t;i=i.parentScope}}defineSymbol(n,i){if(!this.context)throw Error("Symbol cannot be defined: no scope available");if(n.length===0||!de(n))throw Error(`Invalid identifier "${n}": ${$e(n)}}`);return this._defineSymbol(n,i)}_defineSymbol(n,i){var r;(r=this.context).ids??(r.ids=new Map);let t=new K(this,n,i);return t.name&&this.context.ids.set(t.name,t),t}defineFunction(n,i){if(!this.context)throw Error("Function cannot be defined: no scope available");if(n.length===0||!de(n))throw Error(`Invalid identifier "${n}": ${$e(n)}}`);return this._defineFunction(n,i)}_defineFunction(n,i){var r;(r=this.context).ids??(r.ids=new Map);let t=nr(this,n,i);return t.name&&this.context.ids.set(t.name,t),t}pushScope(n){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,...n??{},parentScope:this.context,assumptions:new mi(this.context.assumptions)},this}popScope(){if(!this.context)throw Error("No scope available");return this.context=this.context.parentScope??null,this.context,this}swapScope(n){let i=this.context;return this.context=n,this.context,i}resetContext(){if(this.context){for(let[n,i]of this.context.ids??[])if(i instanceof K)i.constant||(i.value=void 0);else if(i instanceof Ce){let t=i.signature;i.signature={...t,evaluate:void 0,N:void 0,simplify:void 0,canonical:void 0}}}}_printScope(n,i,t=0){if(n??(n={details:!1,maxDepth:1}),i??(i=this.context),!i||n.maxDepth&&t>n.maxDepth)return null;let r=`${Za}[undefined]${Wi}`;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 u=`${Ja}${s}${Wi}`;try{if(a instanceof K){let l=a.value?.isValid?a.value.toString():a.value?`${Eo}${a.value.toString()}${Wi}`:r;console.info(`${u}: ${a.domain?.toString()??r} = ${l}`)}else a instanceof Ce&&(typeof a.signature.evaluate=="function"?console.info(`${u}(): ${n.details?a.signature.evaluate.toString():"[native-code]"}`):a.signature.evaluate===void 0?console.info(`${u}(): ${r}`):console.info(`${u}(): ${a.toString()}`));o===11&&console.groupCollapsed(`... and ${i.ids.size-o} more`),o+=1}catch(l){console.info(`${u}: ${Eo}${l.message}${Wi}`)}}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(n,i.parentScope,t+1),console.groupEnd(),this.context}declare(n,i){if(typeof n!="string"||i===void 0){for(let[s,a]of Object.entries(n))this.declare(s,a);return this}let[t,r]=to(n);if(r!==void 0)throw Error(`Unexpected arguments with ${n}. 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 K&&s.inferredDomain)return ir(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(ir(o))return this.defineSymbol(t,o),this;if(ho(o))return this.defineFunction(t,o),this;{let s=this.domain(o);if(s.isValid)if(s.isFunction)this.defineFunction(t,{signature:ki(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(n,i){if(typeof n=="object"){for(let[u,l]of Object.entries(n))this.assign(u,l);return this}let[t,r]=to(n);if(t==="Nothing")return this;let o=i;if(typeof o=="boolean"&&(o=o?this.True:this.False),typeof o=="string"){let u=o.trim();u.startsWith("$")&&u.endsWith("$")?o=this.parse(u.slice(1,-1),{canonical:!1}):u.startsWith("$$")&&u.endsWith("$$")?o=this.parse(u.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&&No(o))throw Error(`Cannot assign a function to symbol "${t}"`);let u=s.scope;if(u?.ids?.delete(s.name),!r&&!No(o))return o==null?(s.value=void 0,this):(s.value=this.box(o),u?.ids?.set(s.name,s),this)}let a=this.lookupFunction(t);if(a){let u=a.scope;if(u?.ids?.delete(a.name),o==null)return this;if(typeof o=="function"){let d=this.swapScope(u);return this.defineFunction(t,{signature:{evaluate:o}}),this.swapScope(d),this}if(r&&No(o))throw Error(`Unexpected arguments for "${t}"`);let l=r?this.box(["Function",o,...r]):this.box(o),f=this.swapScope(u);return this.defineFunction(t,{signature:{evaluate:l}}),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 u=this.box(o,{canonical:!1});if(u.head==="Function")return u=this.box(["Function",...u.ops,...(r??[]).map(f=>this.symbol(f))]),this.defineFunction(t,{signature:{evaluate:u}}),this;let l=[...u.unknowns].sort();if(l.length===0){let f=u.evaluate();return this.defineSymbol(t,{value:f}),this}if(l.some(f=>/\_[\d]+/.test(f)))return u=this.box(["Function",u]),this.defineFunction(t,{signature:{evaluate:u}}),this;if(r&&r.length>0)return this.pushScope(),u=this.box(["Function",u,...r]),this.popScope(),this.defineFunction(t,{signature:{evaluate:u}}),this;this.pushScope(),o=u.evaluate(),this.popScope()}return this.defineSymbol(t,{value:o}),this}_assign(n,i){let t=this.lookupSymbol(n);if(t)return t.value=this.box(i).evaluate(),this;let r=this.lookupFunction(n);if(r){let o=r.signature;return r.signature={...o,N:void 0,simplify:void 0,canonical:void 0,evaluate:i},this}return`${n}`,this}get assumptions(){if(!this.context)throw Error("No scope available");return this.context.assumptions?this.context.assumptions:(this.context.assumptions=new mi,this.context.assumptions)}shouldContinueExecution(){return this.deadline===void 0||this.deadline>=Date.now()}checkContinueExecution(){if(!this.shouldContinueExecution())throw new Error("timeout")}cache(n,i,t){if(this._cache[n]===void 0)try{this._cache[n]={build:i,purge:t,value:i()}}catch(r){console.error(`Fatal error building cache "${n}":
|
|
51
|
+
${r.toString()}`)}return this._cache[n]?.value}box(n,i){return Se(this,n,i)}canonical(n){if(!n.every(t=>t instanceof P))return n.map(t=>this.box(t));let i=n;return i.every(t=>t.isCanonical)?i:i.map(t=>t.canonical)}fn(n,i,t){return Ui(this,n,i,t??{canonical:!0})}_fn(n,i,t){return new xe(this,n,i,{metadata:t,canonical:!0})}error(n,i){i instanceof P?i=this.rawJson(i):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 n=="string"&&(t=this.string(n)),!t&&typeof n!="string"&&(t=new xe(this,"ErrorCode",[this.string(n[0]),...n.slice(1).map(r=>this.box(r,{canonical:!1}))])),i?new xe(this,"Error",[t,this.box(i,{canonical:!1})],{canonical:!1}):new xe(this,"Error",[t],{canonical:!1})}domainError(n,i,t){let r=We(n)?this.domain(n):this.symbol(n),o=i||this.symbol("Undefined");return this.error(["incompatible-domain",r,o],t)}hold(n){return this._fn("Hold",[this.box(n,{canonical:!1})])}add(n,i){let t=Ys(this,re(Ne(n),"Add"));return i?.latex!==void 0&&(t.latex=i.latex),t}neg(n,i){return ne(n,i)}mul(n,i){let t=ha(this,re(Ne(n)," Multiply"));return i?.latex!==void 0&&(t.latex=i.latex),t}div(n,i,t){let r=cn(this,n,i);return t?.latex!==void 0&&(r.latex=t.latex),r}sqrt(n,i){return so(this,n,this.Half,i)}pow(n,i,t){if(n.symbol==="ExponentialE"&&i instanceof Vn.Complex){let s=i.im,a=i.re;if(a===0)return this.number(this.complex(Math.cos(s),Math.sin(s)));if(s===0)return this.number(Math.exp(a));let u=Math.exp(a);return this.number(this.complex(u*Math.cos(s),u*Math.sin(s)))}if(i instanceof P){let s=i.numericValue;s!==null&&(typeof s=="number"&&(i=s),V(s)&&(i=s))}let r=null;if(typeof i=="number")r=i;else if(V(i)){if(De(i))return this.One;if(ie(i))return n;L(i)&&i[1]===1?r=i[0]:U(i)&&i[1]===BigInt(1)&&(r=Number(i[0]))}if(r===0)return this.One;if(r===1)return n;let o=n.numericValue;if(r===-1&&o!==null){if(typeof o=="number"&&Number.isInteger(o))return this.number([1,o]);if(o instanceof E&&o.isInteger())return this.number([BigInt(1),T(o)]);if(V(o))return this.number([o[1],o[0]])}return(typeof i=="number"||V(i))&&(i=this.number(i)),so(this,n,i,t)}inv(n,i){if(n.isOne)return this.One;if(n.isNegativeOne)return this.NegativeOne;if(n.isInfinity)return this.Zero;let t=n.numericValue;if(t!==null)return V(t)?this.number(an(t),{metadata:i}):typeof t=="number"&&Number.isInteger(t)?this.number([1,t],{metadata:i}):t instanceof E&&t.isInteger()?this.number([BigInt(1),T(t)],{metadata:i}):this._fn("Divide",[this.One,n],i);if(n.head==="Sqrt")return this._fn("Sqrt",[this.inv(n.op1)],i);if(n.head==="Divide")return this._fn("Divide",[n.op1,n.op2],i);let r=this.NegativeOne;if(n.head==="Power"){if(n.op2.isNegativeOne)return n.op1;r=ne(n.op2),n=n.op1}return r.isNegativeOne?this._fn("Divide",[this.One,n],i):this._fn("Power",[n,r],i)}pair(n,i,t){return new xe(this,"Tuple",[n,i],{metadata:t,canonical:!0})}tuple(n,i){return new xe(this,"Tuple",ee(n),{metadata:i,canonical:!0})}string(n,i){return new Qe(this,n,i)}symbol(n,i){if(i=i?{...i}:{},"canonical"in i||(i.canonical=!0),n=n.normalize(),n==="NaN")return this.NaN;if(n==="Infinity")return this.PositiveInfinity;if(n==="+Infinity")return this.PositiveInfinity;if(n==="-Infinity")return this.NegativeInfinity;if(n==="Half")return this.Half;if(this.strict&&!de(n)){let r=i?.metadata?.latex,o=`'${n}'`;return this.error(["invalid-identifier",{str:$e(n)}],r?["LatexString",`'${r}'`]:o)}if(i?.metadata?.latex!==void 0&&!i.canonical)return new In(this,n,i);let t=this._commonSymbols[n];return t?!i?.metadata?.wikidata||!t.wikidata||t.wikidata===i.metadata.wikidata?t:i.canonical?yo(this,n):new In(this,n,i):i.canonical?yo(this,n):new In(this,n,i)}domain(n,i){if(n instanceof fn)return n;if(typeof n=="string"){let r=this._commonDomains[n];if(r)return r}if(!this.strict){if(typeof n=="string"){let r=Ot[n];if(r)return this.domain(r)}return new fn(this,n,i)}if(Array.isArray(n)&&n[0]==="Domain"&&(n=n[1]),typeof n=="string"){let r=Ot[n];if(r)return this.domain(r);if(!On(n))throw Error("Expected a domain literal, got "+n);return new fn(this,n,i)}if(!Array.isArray(n)||n.length===0)throw Error("Expected a valid domain");let t=n[0];if(!oi.includes(t))throw Error("Expected a domain constructor, got "+t);return new fn(this,n,i)}number(n,i){if(i=i?{...i}:{},"canonical"in i||(i.canonical=!0),i.metadata===void 0){if(typeof n=="bigint"){if(n===BigInt(1))return this.One;if(n===BigInt(0))return this.Zero;if(n===BigInt(-1))return this.NegativeOne}if(typeof n=="number"){let t=n;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]=jt(this,n)??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 n=="bigint"&&(n=this.bignum(n)),jt(this,n,i)??this.NaN}rules(n){return ii(this,n)}pattern(n){return new rr(this,n)}parse(n,i){if(typeof n!="string")return null;let t=this.latexSyntax.parse(ni(n)??n);return this.box(t,i)}serialize(n,i){if(typeof n=="object"&&"json"in n){let t="engine"in n?n.engine:this;return this.latexSyntax.serialize(this.rawJson(t.box(n,{canonical:!1})),i)}return this.latexSyntax.serialize(n,i)}get latexOptions(){let n=this.latexSyntax;return new Proxy({...this.latexSyntax.options,...this.latexSyntax.serializer.options},{set(i,t,r){return t in i?(n.updateOptions({[t]:r}),!0):!1}})}set latexOptions(n){this.latexSyntax.updateOptions(n)}get jsonSerializationOptions(){if(this._useRawJsonSerializationOptions)return new Proxy(this._rawJsonSerializationOptions,{get(i,t){if(t in i)return i[t]}});let n=this;return new Proxy(this._jsonSerializationOptions,{get(i,t){if(t in i)return i[t]},set(i,t,r){return t in i?(n.jsonSerializationOptions={[t]:r},!0):!1}})}set jsonSerializationOptions(n){n.exclude&&(this._jsonSerializationOptions.exclude=[...n.exclude]),n.shorthands&&(n.shorthands==="all"||n.shorthands.includes("all")?this._jsonSerializationOptions.shorthands=["function","symbol","string","dictionary","number"]:this._jsonSerializationOptions.shorthands=[...n.shorthands]),n.metadata&&(n.metadata==="all"||n.metadata.includes("all")?this._jsonSerializationOptions.metadata=["latex","wikidata"]:this._jsonSerializationOptions.metadata=[...n.metadata]),typeof n.precision=="number"&&n.precision>0&&(this._jsonSerializationOptions.precision=n.precision),typeof n.repeatingDecimals=="boolean"&&(this._jsonSerializationOptions.repeatingDecimals=n.repeatingDecimals)}rawJson(n){let i=this._useRawJsonSerializationOptions;this._useRawJsonSerializationOptions=!0;let t=n.json;return this._useRawJsonSerializationOptions=i,t}ask(n){let i=this.pattern(n),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(n){return!1}assume(n){try{return ia(this.box(n,{canonical:!1}))}catch(i){return console.error(i.toString()),"internal-error"}}forget(n){if(!this.context)throw Error("No scope available");if(n===void 0){if(this.context.ids)for(let i of this.context.ids.keys())this.forget(i);this.assumptions.clear();return}if(Array.isArray(n)){for(let i of n)this.forget(i);return}if(typeof n=="string"){if(this.context.ids){let i=this.context.ids.get(n);if(i instanceof K)i.value=void 0;else if(i instanceof Ce){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(n)&&this.assumptions.delete(i)}}};function No(e){return typeof e=="function"||e instanceof P&&e.domain?.base==="Functions"}var Rf="0.19.1";globalThis[Symbol.for("io.cortexjs.compute-engine")]={ComputeEngine:pi.prototype.constructor,version:"0.19.1"};return iu(qf);})();
|
|
52
52
|
/*! Bundled license information:
|
|
53
53
|
|
|
54
54
|
complex.js/complex.js:
|