UNPKG

rf-touchstone

Version:

A Javascript/TypeScript library for reading, manipulating, and writing Touchstone files (.snp files) used in radio frequency (RF) and microwave engineering.

1,379 lines (1,378 loc) 310 kB
function nt() { return nt = Object.assign ? Object.assign.bind() : function(e) { for (var r = 1; r < arguments.length; r++) { var t = arguments[r]; for (var n in t) ({}).hasOwnProperty.call(t, n) && (e[n] = t[n]); } return e; }, nt.apply(null, arguments); } var ri = { // minimum relative difference between two compared values, // used by all comparison functions relTol: 1e-12, // minimum absolute difference between two compared values, // used by all comparison functions absTol: 1e-15, // type of default matrix output. Choose 'matrix' (default) or 'array' matrix: "Matrix", // type of default number output. Choose 'number' (default) 'BigNumber', 'bigint', or 'Fraction' number: "number", // type of fallback used for config { number: 'bigint' } when a value cannot be represented // in the configured numeric type. Choose 'number' (default) or 'BigNumber'. numberFallback: "number", // number of significant digits in BigNumbers precision: 64, // predictable output type of functions. When true, output type depends only // on the input types. When false (default), output type can vary depending // on input values. For example `math.sqrt(-4)` returns `complex('2i')` when // predictable is false, and returns `NaN` when true. predictable: !1, // random seed for seeded pseudo random number generation // null = randomly seed randomSeed: null }; function ti(e, r) { if (it(e, r)) return e[r]; throw typeof e[r] == "function" && Tu(e, r) ? new Error('Cannot access method "' + r + '" as a property') : new Error('No access to property "' + r + '"'); } function ni(e, r, t) { if (it(e, r)) return e[r] = t, t; throw new Error('No access to property "' + r + '"'); } function it(e, r) { return !Iu(e) && !Array.isArray(e) ? !1 : Rr(zu, r) ? !0 : !(r in Object.prototype || r in Function.prototype); } function Tu(e, r) { return e == null || typeof e[r] != "function" || Rr(e, r) && Object.getPrototypeOf && r in Object.getPrototypeOf(e) ? !1 : Rr(Ou, r) ? !0 : !(r in Object.prototype || r in Function.prototype); } function Iu(e) { return typeof e == "object" && e && e.constructor === Object; } var zu = { length: !0, name: !0 }, Ou = { toString: !0, valueOf: !0, toLocaleString: !0 }; class $u { constructor(r) { this.wrappedObject = r, this[Symbol.iterator] = this.entries; } keys() { return Object.keys(this.wrappedObject).filter((r) => this.has(r)).values(); } get(r) { return ti(this.wrappedObject, r); } set(r, t) { return ni(this.wrappedObject, r, t), this; } has(r) { return it(this.wrappedObject, r) && r in this.wrappedObject; } entries() { return Pu(this.keys(), (r) => [r, this.get(r)]); } forEach(r) { for (var t of this.keys()) r(this.get(t), t, this); } delete(r) { it(this.wrappedObject, r) && delete this.wrappedObject[r]; } clear() { for (var r of this.keys()) this.delete(r); } get size() { return Object.keys(this.wrappedObject).length; } } function Pu(e, r) { return { next: () => { var t = e.next(); return t.done ? t : { value: r(t.value), done: !1 }; } }; } function de(e) { return typeof e == "number"; } function Ee(e) { return !e || typeof e != "object" || typeof e.constructor != "function" ? !1 : e.isBigNumber === !0 && typeof e.constructor.prototype == "object" && e.constructor.prototype.isBigNumber === !0 || typeof e.constructor.isDecimal == "function" && e.constructor.isDecimal(e) === !0; } function Uu(e) { return typeof e == "bigint"; } function ii(e) { return e && typeof e == "object" && Object.getPrototypeOf(e).isComplex === !0 || !1; } function ui(e) { return e && typeof e == "object" && Object.getPrototypeOf(e).isFraction === !0 || !1; } function oi(e) { return e && e.constructor.prototype.isUnit === !0 || !1; } function Qe(e) { return typeof e == "string"; } var ye = Array.isArray; function ve(e) { return e && e.constructor.prototype.isMatrix === !0 || !1; } function ut(e) { return Array.isArray(e) || ve(e); } function qu(e) { return e && e.isDenseMatrix && e.constructor.prototype.isMatrix === !0 || !1; } function Ru(e) { return e && e.isSparseMatrix && e.constructor.prototype.isMatrix === !0 || !1; } function ai(e) { return e && e.constructor.prototype.isRange === !0 || !1; } function yt(e) { return e && e.constructor.prototype.isIndex === !0 || !1; } function Lu(e) { return typeof e == "boolean"; } function Hu(e) { return e && e.constructor.prototype.isResultSet === !0 || !1; } function Zu(e) { return e && e.constructor.prototype.isHelp === !0 || !1; } function Wu(e) { return typeof e == "function"; } function Vu(e) { return e instanceof Date; } function Gu(e) { return e instanceof RegExp; } function Kt(e) { return !!(e && typeof e == "object" && e.constructor === Object && !ii(e) && !ui(e)); } function Ju(e) { return e ? e instanceof Map || e instanceof $u || typeof e.set == "function" && typeof e.get == "function" && typeof e.keys == "function" && typeof e.has == "function" : !1; } function Yu(e) { return e === null; } function ku(e) { return e === void 0; } function Xu(e) { return e && e.isAccessorNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function Qu(e) { return e && e.isArrayNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function Ku(e) { return e && e.isAssignmentNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function ju(e) { return e && e.isBlockNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function eo(e) { return e && e.isConditionalNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function ro(e) { return e && e.isConstantNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function to(e) { return e && e.isFunctionAssignmentNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function no(e) { return e && e.isFunctionNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function io(e) { return e && e.isIndexNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function uo(e) { return e && e.isNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function oo(e) { return e && e.isObjectNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function ao(e) { return e && e.isOperatorNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function so(e) { return e && e.isParenthesisNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function fo(e) { return e && e.isRangeNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function co(e) { return e && e.isRelationalNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function lo(e) { return e && e.isSymbolNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function ho(e) { return e && e.constructor.prototype.isChain === !0 || !1; } function ir(e) { var r = typeof e; return r === "object" ? e === null ? "null" : Ee(e) ? "BigNumber" : e.constructor && e.constructor.name ? e.constructor.name : "Object" : r; } function me(e) { var r = typeof e; if (r === "number" || r === "bigint" || r === "string" || r === "boolean" || e === null || e === void 0) return e; if (typeof e.clone == "function") return e.clone(); if (Array.isArray(e)) return e.map(function(t) { return me(t); }); if (e instanceof Date) return new Date(e.valueOf()); if (Ee(e)) return e; if (Kt(e)) return po(e, me); if (r === "function") return e; throw new TypeError("Cannot clone: unknown type of value (value: ".concat(e, ")")); } function po(e, r) { var t = {}; for (var n in e) Rr(e, n) && (t[n] = r(e[n])); return t; } function Do(e, r) { for (var t in r) Rr(r, t) && (e[t] = r[t]); return e; } function mr(e, r) { var t, n, i; if (Array.isArray(e)) { if (!Array.isArray(r) || e.length !== r.length) return !1; for (n = 0, i = e.length; n < i; n++) if (!mr(e[n], r[n])) return !1; return !0; } else { if (typeof e == "function") return e === r; if (e instanceof Object) { if (Array.isArray(r) || !(r instanceof Object)) return !1; for (t in e) if (!(t in r) || !mr(e[t], r[t])) return !1; for (t in r) if (!(t in e)) return !1; return !0; } else return e === r; } } function Rr(e, r) { return e && Object.hasOwnProperty.call(e, r); } function mo(e, r) { for (var t = {}, n = 0; n < r.length; n++) { var i = r[n], u = e[i]; u !== void 0 && (t[i] = u); } return t; } var go = ["Matrix", "Array"], vo = ["number", "BigNumber", "Fraction"], Pe = function(r) { if (r) throw new Error(`The global config is readonly. Please create a mathjs instance if you want to change the default configuration. Example: import { create, all } from 'mathjs'; const mathjs = create(all); mathjs.config({ number: 'BigNumber' }); `); return Object.freeze(ri); }; nt(Pe, ri, { MATRIX_OPTIONS: go, NUMBER_OPTIONS: vo }); function an() { return !0; } function Ye() { return !1; } function _r() { } const sn = "Argument is not a typed-function."; function si() { function e(F) { return typeof F == "object" && F !== null && F.constructor === Object; } const r = [{ name: "number", test: function(F) { return typeof F == "number"; } }, { name: "string", test: function(F) { return typeof F == "string"; } }, { name: "boolean", test: function(F) { return typeof F == "boolean"; } }, { name: "Function", test: function(F) { return typeof F == "function"; } }, { name: "Array", test: Array.isArray }, { name: "Date", test: function(F) { return F instanceof Date; } }, { name: "RegExp", test: function(F) { return F instanceof RegExp; } }, { name: "Object", test: e }, { name: "null", test: function(F) { return F === null; } }, { name: "undefined", test: function(F) { return F === void 0; } }], t = { name: "any", test: an, isAny: !0 }; let n, i, u = 0, o = { createCount: 0 }; function a(F) { const _ = n.get(F); if (_) return _; let N = 'Unknown type "' + F + '"'; const T = F.toLowerCase(); let $; for ($ of i) if ($.toLowerCase() === T) { N += '. Did you mean "' + $ + '" ?'; break; } throw new TypeError(N); } function c(F) { let _ = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "any"; const N = _ ? a(_).index : i.length, T = []; for (let I = 0; I < F.length; ++I) { if (!F[I] || typeof F[I].name != "string" || typeof F[I].test != "function") throw new TypeError("Object with properties {name: string, test: function} expected"); const H = F[I].name; if (n.has(H)) throw new TypeError('Duplicate type name "' + H + '"'); T.push(H), n.set(H, { name: H, test: F[I].test, isAny: F[I].isAny, index: N + I, conversionsTo: [] // Newly added type can't have any conversions to it }); } const $ = i.slice(N); i = i.slice(0, N).concat(T).concat($); for (let I = N + T.length; I < i.length; ++I) n.get(i[I]).index = I; } function l() { n = /* @__PURE__ */ new Map(), i = [], u = 0, c([t], !1); } l(), c(r); function f() { let F; for (F of i) n.get(F).conversionsTo = []; u = 0; } function h(F) { const _ = i.filter((N) => { const T = n.get(N); return !T.isAny && T.test(F); }); return _.length ? _ : ["any"]; } function D(F) { return F && typeof F == "function" && "_typedFunctionData" in F; } function p(F, _, N) { if (!D(F)) throw new TypeError(sn); const T = N && N.exact, $ = Array.isArray(_) ? _.join(",") : _, I = A($), H = d(I); if (!T || H in F.signatures) { const se = F._typedFunctionData.signatureMap.get(H); if (se) return se; } const U = I.length; let Z; if (T) { Z = []; let se; for (se in F.signatures) Z.push(F._typedFunctionData.signatureMap.get(se)); } else Z = F._typedFunctionData.signatures; for (let se = 0; se < U; ++se) { const pe = I[se], _e = []; let Le; for (Le of Z) { const Re = b(Le.params, se); if (!(!Re || pe.restParam && !Re.restParam)) { if (!Re.hasAny) { const Ke = v(Re); if (pe.types.some((je) => !Ke.has(je.name))) continue; } _e.push(Le); } } if (Z = _e, Z.length === 0) break; } let P; for (P of Z) if (P.params.length <= U) return P; throw new TypeError("Signature not found (signature: " + (F.name || "unnamed") + "(" + d(I, ", ") + "))"); } function m(F, _, N) { return p(F, _, N).implementation; } function s(F, _) { const N = a(_); if (N.test(F)) return F; const T = N.conversionsTo; if (T.length === 0) throw new Error("There are no conversions to " + _ + " defined."); for (let $ = 0; $ < T.length; $++) if (a(T[$].from).test(F)) return T[$].convert(F); throw new Error("Cannot convert " + F + " to " + _); } function d(F) { let _ = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ","; return F.map((N) => N.name).join(_); } function g(F) { const _ = F.indexOf("...") === 0, T = (_ ? F.length > 3 ? F.slice(3) : "any" : F).split("|").map((U) => a(U.trim())); let $ = !1, I = _ ? "..." : ""; return { types: T.map(function(U) { return $ = U.isAny || $, I += U.name + "|", { name: U.name, typeIndex: U.index, test: U.test, isAny: U.isAny, conversion: null, conversionIndex: -1 }; }), name: I.slice(0, -1), // remove trailing '|' from above hasAny: $, hasConversion: !1, restParam: _ }; } function E(F) { const _ = F.types.map((H) => H.name), N = Q(_); let T = F.hasAny, $ = F.name; const I = N.map(function(H) { const U = a(H.from); return T = U.isAny || T, $ += "|" + H.from, { name: H.from, typeIndex: U.index, test: U.test, isAny: U.isAny, conversion: H, conversionIndex: H.index }; }); return { types: F.types.concat(I), name: $, hasAny: T, hasConversion: I.length > 0, restParam: F.restParam }; } function v(F) { return F.typeSet || (F.typeSet = /* @__PURE__ */ new Set(), F.types.forEach((_) => F.typeSet.add(_.name))), F.typeSet; } function A(F) { const _ = []; if (typeof F != "string") throw new TypeError("Signatures must be strings"); const N = F.trim(); if (N === "") return _; const T = N.split(","); for (let $ = 0; $ < T.length; ++$) { const I = g(T[$].trim()); if (I.restParam && $ !== T.length - 1) throw new SyntaxError('Unexpected rest parameter "' + T[$] + '": only allowed for the last parameter'); if (I.types.length === 0) return null; _.push(I); } return _; } function y(F) { const _ = ce(F); return _ ? _.restParam : !1; } function w(F) { if (!F || F.types.length === 0) return an; if (F.types.length === 1) return a(F.types[0].name).test; if (F.types.length === 2) { const _ = a(F.types[0].name).test, N = a(F.types[1].name).test; return function($) { return _($) || N($); }; } else { const _ = F.types.map(function(N) { return a(N.name).test; }); return function(T) { for (let $ = 0; $ < _.length; $++) if (_[$](T)) return !0; return !1; }; } } function C(F) { let _, N, T; if (y(F)) { _ = qe(F).map(w); const $ = _.length, I = w(ce(F)), H = function(U) { for (let Z = $; Z < U.length; Z++) if (!I(U[Z])) return !1; return !0; }; return function(Z) { for (let P = 0; P < _.length; P++) if (!_[P](Z[P])) return !1; return H(Z) && Z.length >= $ + 1; }; } else return F.length === 0 ? function(I) { return I.length === 0; } : F.length === 1 ? (N = w(F[0]), function(I) { return N(I[0]) && I.length === 1; }) : F.length === 2 ? (N = w(F[0]), T = w(F[1]), function(I) { return N(I[0]) && T(I[1]) && I.length === 2; }) : (_ = F.map(w), function(I) { for (let H = 0; H < _.length; H++) if (!_[H](I[H])) return !1; return I.length === _.length; }); } function b(F, _) { return _ < F.length ? F[_] : y(F) ? ce(F) : null; } function B(F, _) { const N = b(F, _); return N ? v(N) : /* @__PURE__ */ new Set(); } function M(F) { return F.conversion === null || F.conversion === void 0; } function S(F, _) { const N = /* @__PURE__ */ new Set(); return F.forEach((T) => { const $ = B(T.params, _); let I; for (I of $) N.add(I); }), N.has("any") ? ["any"] : Array.from(N); } function R(F, _, N) { let T, $; const I = F || "unnamed"; let H = N, U; for (U = 0; U < _.length; U++) { const pe = []; if (H.forEach((_e) => { const Le = b(_e.params, U), Re = w(Le); (U < _e.params.length || y(_e.params)) && Re(_[U]) && pe.push(_e); }), pe.length === 0) { if ($ = S(H, U), $.length > 0) { const _e = h(_[U]); return T = new TypeError("Unexpected type of argument in function " + I + " (expected: " + $.join(" or ") + ", actual: " + _e.join(" | ") + ", index: " + U + ")"), T.data = { category: "wrongType", fn: I, index: U, actual: _e, expected: $ }, T; } } else H = pe; } const Z = H.map(function(pe) { return y(pe.params) ? 1 / 0 : pe.params.length; }); if (_.length < Math.min.apply(null, Z)) return $ = S(H, U), T = new TypeError("Too few arguments in function " + I + " (expected: " + $.join(" or ") + ", index: " + _.length + ")"), T.data = { category: "tooFewArgs", fn: I, index: _.length, expected: $ }, T; const P = Math.max.apply(null, Z); if (_.length > P) return T = new TypeError("Too many arguments in function " + I + " (expected: " + P + ", actual: " + _.length + ")"), T.data = { category: "tooManyArgs", fn: I, index: _.length, expectedLength: P }, T; const se = []; for (let pe = 0; pe < _.length; ++pe) se.push(h(_[pe]).join("|")); return T = new TypeError('Arguments of type "' + se.join(", ") + '" do not match any of the defined signatures of function ' + I + "."), T.data = { category: "mismatch", actual: se }, T; } function V(F) { let _ = i.length + 1; for (let N = 0; N < F.types.length; N++) M(F.types[N]) && (_ = Math.min(_, F.types[N].typeIndex)); return _; } function q(F) { let _ = u + 1; for (let N = 0; N < F.types.length; N++) M(F.types[N]) || (_ = Math.min(_, F.types[N].conversionIndex)); return _; } function W(F, _) { if (F.hasAny) { if (!_.hasAny) return 1; } else if (_.hasAny) return -1; if (F.restParam) { if (!_.restParam) return 1; } else if (_.restParam) return -1; if (F.hasConversion) { if (!_.hasConversion) return 1; } else if (_.hasConversion) return -1; const N = V(F) - V(_); if (N < 0) return -1; if (N > 0) return 1; const T = q(F) - q(_); return T < 0 ? -1 : T > 0 ? 1 : 0; } function O(F, _) { const N = F.params, T = _.params, $ = ce(N), I = ce(T), H = y(N), U = y(T); if (H && $.hasAny) { if (!U || !I.hasAny) return 1; } else if (U && I.hasAny) return -1; let Z = 0, P = 0, se; for (se of N) se.hasAny && ++Z, se.hasConversion && ++P; let pe = 0, _e = 0; for (se of T) se.hasAny && ++pe, se.hasConversion && ++_e; if (Z !== pe) return Z - pe; if (H && $.hasConversion) { if (!U || !I.hasConversion) return 1; } else if (U && I.hasConversion) return -1; if (P !== _e) return P - _e; if (H) { if (!U) return 1; } else if (U) return -1; const Le = (N.length - T.length) * (H ? -1 : 1); if (Le !== 0) return Le; const Re = []; let Ke = 0; for (let Cr = 0; Cr < N.length; ++Cr) { const kr = W(N[Cr], T[Cr]); Re.push(kr), Ke += kr; } if (Ke !== 0) return Ke; let je; for (je of Re) if (je !== 0) return je; return 0; } function Q(F) { if (F.length === 0) return []; const _ = F.map(a); F.length > 1 && _.sort(($, I) => $.index - I.index); let N = _[0].conversionsTo; if (F.length === 1) return N; N = N.concat([]); const T = new Set(F); for (let $ = 1; $ < _.length; ++$) { let I; for (I of _[$].conversionsTo) T.has(I.from) || (N.push(I), T.add(I.from)); } return N; } function Y(F, _) { let N = _; if (F.some(($) => $.hasConversion)) { const $ = y(F), I = F.map(J); N = function() { const U = [], Z = $ ? arguments.length - 1 : arguments.length; for (let P = 0; P < Z; P++) U[P] = I[P](arguments[P]); return $ && (U[Z] = arguments[Z].map(I[Z])), _.apply(this, U); }; } let T = N; if (y(F)) { const $ = F.length - 1; T = function() { return N.apply(this, ae(arguments, 0, $).concat([ae(arguments, $)])); }; } return T; } function J(F) { let _, N, T, $; const I = [], H = []; switch (F.types.forEach(function(U) { U.conversion && (I.push(a(U.conversion.from).test), H.push(U.conversion.convert)); }), H.length) { case 0: return function(Z) { return Z; }; case 1: return _ = I[0], T = H[0], function(Z) { return _(Z) ? T(Z) : Z; }; case 2: return _ = I[0], N = I[1], T = H[0], $ = H[1], function(Z) { return _(Z) ? T(Z) : N(Z) ? $(Z) : Z; }; default: return function(Z) { for (let P = 0; P < H.length; P++) if (I[P](Z)) return H[P](Z); return Z; }; } } function ee(F) { function _(N, T, $) { if (T < N.length) { const I = N[T]; let H = []; if (I.restParam) { const U = I.types.filter(M); U.length < I.types.length && H.push({ types: U, name: "..." + U.map((Z) => Z.name).join("|"), hasAny: U.some((Z) => Z.isAny), hasConversion: !1, restParam: !0 }), H.push(I); } else H = I.types.map(function(U) { return { types: [U], name: U.name, hasAny: U.isAny, hasConversion: U.conversion, restParam: !1 }; }); return Te(H, function(U) { return _(N, T + 1, $.concat([U])); }); } else return [$]; } return _(F, 0, []); } function oe(F, _) { const N = Math.max(F.length, _.length); for (let U = 0; U < N; U++) { const Z = B(F, U), P = B(_, U); let se = !1, pe; for (pe of P) if (Z.has(pe)) { se = !0; break; } if (!se) return !1; } const T = F.length, $ = _.length, I = y(F), H = y(_); return I ? H ? T === $ : $ >= T : H ? T >= $ : T === $; } function ie(F) { return F.map((_) => sr(_) ? Je(_.referToSelf.callback) : ar(_) ? Me(_.referTo.references, _.referTo.callback) : _); } function fe(F, _, N) { const T = []; let $; for ($ of F) { let I = N[$]; if (typeof I != "number") throw new TypeError('No definition for referenced signature "' + $ + '"'); if (I = _[I], typeof I != "function") return !1; T.push(I); } return T; } function Ce(F, _, N) { const T = ie(F), $ = new Array(T.length).fill(!1); let I = !0; for (; I; ) { I = !1; let H = !0; for (let U = 0; U < T.length; ++U) { if ($[U]) continue; const Z = T[U]; if (sr(Z)) T[U] = Z.referToSelf.callback(N), T[U].referToSelf = Z.referToSelf, $[U] = !0, H = !1; else if (ar(Z)) { const P = fe(Z.referTo.references, T, _); P ? (T[U] = Z.referTo.callback.apply(this, P), T[U].referTo = Z.referTo, $[U] = !0, H = !1) : I = !0; } } if (H && I) throw new SyntaxError("Circular reference detected in resolving typed.referTo"); } return T; } function be(F) { const _ = /\bthis(\(|\.signatures\b)/; Object.keys(F).forEach((N) => { const T = F[N]; if (_.test(T.toString())) throw new SyntaxError("Using `this` to self-reference a function is deprecated since typed-function@3. Use typed.referTo and typed.referToSelf instead."); }); } function Ae(F, _) { if (o.createCount++, Object.keys(_).length === 0) throw new SyntaxError("No signatures provided"); o.warnAgainstDeprecatedThis && be(_); const N = [], T = [], $ = {}, I = []; let H; for (H in _) { if (!Object.prototype.hasOwnProperty.call(_, H)) continue; const ue = A(H); if (!ue) continue; N.forEach(function(Ur) { if (oe(Ur, ue)) throw new TypeError('Conflicting signatures "' + d(Ur) + '" and "' + d(ue) + '".'); }), N.push(ue); const He = T.length; T.push(_[H]); const Su = ue.map(E); let Xr; for (Xr of ee(Su)) { const Ur = d(Xr); I.push({ params: Xr, name: Ur, fn: He }), Xr.every((xu) => !xu.hasConversion) && ($[Ur] = He); } } I.sort(O); const U = Ce(T, $, Pr); let Z; for (Z in $) Object.prototype.hasOwnProperty.call($, Z) && ($[Z] = U[$[Z]]); const P = [], se = /* @__PURE__ */ new Map(); for (Z of I) se.has(Z.name) || (Z.fn = U[Z.fn], P.push(Z), se.set(Z.name, Z)); const pe = P[0] && P[0].params.length <= 2 && !y(P[0].params), _e = P[1] && P[1].params.length <= 2 && !y(P[1].params), Le = P[2] && P[2].params.length <= 2 && !y(P[2].params), Re = P[3] && P[3].params.length <= 2 && !y(P[3].params), Ke = P[4] && P[4].params.length <= 2 && !y(P[4].params), je = P[5] && P[5].params.length <= 2 && !y(P[5].params), Cr = pe && _e && Le && Re && Ke && je; for (let ue = 0; ue < P.length; ++ue) P[ue].test = C(P[ue].params); const kr = pe ? w(P[0].params[0]) : Ye, tu = _e ? w(P[1].params[0]) : Ye, nu = Le ? w(P[2].params[0]) : Ye, iu = Re ? w(P[3].params[0]) : Ye, uu = Ke ? w(P[4].params[0]) : Ye, ou = je ? w(P[5].params[0]) : Ye, au = pe ? w(P[0].params[1]) : Ye, su = _e ? w(P[1].params[1]) : Ye, fu = Le ? w(P[2].params[1]) : Ye, cu = Re ? w(P[3].params[1]) : Ye, lu = Ke ? w(P[4].params[1]) : Ye, hu = je ? w(P[5].params[1]) : Ye; for (let ue = 0; ue < P.length; ++ue) P[ue].implementation = Y(P[ue].params, P[ue].fn); const pu = pe ? P[0].implementation : _r, Du = _e ? P[1].implementation : _r, mu = Le ? P[2].implementation : _r, du = Re ? P[3].implementation : _r, gu = Ke ? P[4].implementation : _r, vu = je ? P[5].implementation : _r, wu = pe ? P[0].params.length : -1, yu = _e ? P[1].params.length : -1, Fu = Le ? P[2].params.length : -1, Eu = Re ? P[3].params.length : -1, Au = Ke ? P[4].params.length : -1, bu = je ? P[5].params.length : -1, Cu = Cr ? 6 : 0, _u = P.length, Bu = P.map((ue) => ue.test), Nu = P.map((ue) => ue.implementation), Mu = function() { for (let He = Cu; He < _u; He++) if (Bu[He](arguments)) return Nu[He].apply(this, arguments); return o.onMismatch(F, arguments, P); }; function Pr(ue, He) { return arguments.length === wu && kr(ue) && au(He) ? pu.apply(this, arguments) : arguments.length === yu && tu(ue) && su(He) ? Du.apply(this, arguments) : arguments.length === Fu && nu(ue) && fu(He) ? mu.apply(this, arguments) : arguments.length === Eu && iu(ue) && cu(He) ? du.apply(this, arguments) : arguments.length === Au && uu(ue) && lu(He) ? gu.apply(this, arguments) : arguments.length === bu && ou(ue) && hu(He) ? vu.apply(this, arguments) : Mu.apply(this, arguments); } try { Object.defineProperty(Pr, "name", { value: F }); } catch { } return Pr.signatures = $, Pr._typedFunctionData = { signatures: P, signatureMap: se }, Pr; } function we(F, _, N) { throw R(F, _, N); } function qe(F) { return ae(F, 0, F.length - 1); } function ce(F) { return F[F.length - 1]; } function ae(F, _, N) { return Array.prototype.slice.call(F, _, N); } function Ge(F, _) { for (let N = 0; N < F.length; N++) if (_(F[N])) return F[N]; } function Te(F, _) { return Array.prototype.concat.apply([], F.map(_)); } function le() { const F = qe(arguments).map((N) => d(A(N))), _ = ce(arguments); if (typeof _ != "function") throw new TypeError("Callback function expected as last argument"); return Me(F, _); } function Me(F, _) { return { referTo: { references: F, callback: _ } }; } function Je(F) { if (typeof F != "function") throw new TypeError("Callback function expected as first argument"); return { referToSelf: { callback: F } }; } function ar(F) { return F && typeof F.referTo == "object" && Array.isArray(F.referTo.references) && typeof F.referTo.callback == "function"; } function sr(F) { return F && typeof F.referToSelf == "object" && typeof F.referToSelf.callback == "function"; } function Ar(F, _) { if (!F) return _; if (_ && _ !== F) { const N = new Error("Function names do not match (expected: " + F + ", actual: " + _ + ")"); throw N.data = { actual: _, expected: F }, N; } return F; } function br(F) { let _; for (const N in F) Object.prototype.hasOwnProperty.call(F, N) && (D(F[N]) || typeof F[N].signature == "string") && (_ = Ar(_, F[N].name)); return _; } function zt(F, _) { let N; for (N in _) if (Object.prototype.hasOwnProperty.call(_, N)) { if (N in F && _[N] !== F[N]) { const T = new Error('Signature "' + N + '" is defined twice'); throw T.data = { signature: N, sourceFunction: _[N], destFunction: F[N] }, T; } F[N] = _[N]; } } const ru = o; o = function(F) { const _ = typeof F == "string", N = _ ? 1 : 0; let T = _ ? F : ""; const $ = {}; for (let I = N; I < arguments.length; ++I) { const H = arguments[I]; let U = {}, Z; if (typeof H == "function" ? (Z = H.name, typeof H.signature == "string" ? U[H.signature] = H : D(H) && (U = H.signatures)) : e(H) && (U = H, _ || (Z = br(H))), Object.keys(U).length === 0) { const P = new TypeError("Argument to 'typed' at index " + I + " is not a (typed) function, nor an object with signatures as keys and functions as values."); throw P.data = { index: I, argument: H }, P; } _ || (T = Ar(T, Z)), zt($, U); } return Ae(T || "", $); }, o.create = si, o.createCount = ru.createCount, o.onMismatch = we, o.throwMismatchError = we, o.createError = R, o.clear = l, o.clearConversions = f, o.addTypes = c, o._findType = a, o.referTo = le, o.referToSelf = Je, o.convert = s, o.findSignature = p, o.find = m, o.isTypedFunction = D, o.warnAgainstDeprecatedThis = !0, o.addType = function(F, _) { let N = "any"; _ !== !1 && n.has("Object") && (N = "Object"), o.addTypes([F], N); }; function on(F) { if (!F || typeof F.from != "string" || typeof F.to != "string" || typeof F.convert != "function") throw new TypeError("Object with properties {from: string, to: string, convert: function} expected"); if (F.to === F.from) throw new SyntaxError('Illegal to define conversion from "' + F.from + '" to itself.'); } return o.addConversion = function(F) { let _ = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : { override: !1 }; on(F); const N = a(F.to), T = N.conversionsTo.find(($) => $.from === F.from); if (T) if (_ && _.override) o.removeConversion({ from: T.from, to: F.to, convert: T.convert }); else throw new Error('There is already a conversion from "' + F.from + '" to "' + N.name + '"'); N.conversionsTo.push({ from: F.from, convert: F.convert, index: u++ }); }, o.addConversions = function(F, _) { F.forEach((N) => o.addConversion(N, _)); }, o.removeConversion = function(F) { on(F); const _ = a(F.to), N = Ge(_.conversionsTo, ($) => $.from === F.from); if (!N) throw new Error("Attempt to remove nonexistent conversion from " + F.from + " to " + F.to); if (N.convert !== F.convert) throw new Error("Conversion to remove does not match existing conversion"); const T = _.conversionsTo.indexOf(N); _.conversionsTo.splice(T, 1); }, o.resolve = function(F, _) { if (!D(F)) throw new TypeError(sn); const N = F._typedFunctionData.signatures; for (let T = 0; T < N.length; ++T) if (N[T].test(_)) return N[T]; return null; }, o; } const ot = si(); function G(e, r, t, n) { function i(u) { var o = mo(u, r.map(Fo)); return wo(e, r, u), t(o); } return i.isFactory = !0, i.fn = e, i.dependencies = r.slice().sort(), n && (i.meta = n), i; } function wo(e, r, t) { var n = r.filter((u) => !yo(u)).every((u) => t[u] !== void 0); if (!n) { var i = r.filter((u) => t[u] === void 0); throw new Error('Cannot create function "'.concat(e, '", ') + "some dependencies are missing: ".concat(i.map((u) => '"'.concat(u, '"')).join(", "), ".")); } } function yo(e) { return e && e[0] === "?"; } function Fo(e) { return e && e[0] === "?" ? e.slice(1) : e; } function ge(e) { return typeof e == "boolean" ? !0 : isFinite(e) ? e === Math.round(e) : !1; } var Eo = Math.log10 || function(r) { return Math.log(r) / Math.LN10; }; function Ot(e, r, t) { var n = { 2: "0b", 8: "0o", 16: "0x" }, i = n[r], u = ""; if (t) { if (t < 1) throw new Error("size must be in greater than 0"); if (!ge(t)) throw new Error("size must be an integer"); if (e > 2 ** (t - 1) - 1 || e < -(2 ** (t - 1))) throw new Error("Value must be in range [-2^".concat(t - 1, ", 2^").concat(t - 1, "-1]")); if (!ge(e)) throw new Error("Value must be an integer"); e < 0 && (e = e + 2 ** t), u = "i".concat(t); } var o = ""; return e < 0 && (e = -e, o = "-"), "".concat(o).concat(i).concat(e.toString(r)).concat(u); } function Zt(e, r) { if (typeof r == "function") return r(e); if (e === 1 / 0) return "Infinity"; if (e === -1 / 0) return "-Infinity"; if (isNaN(e)) return "NaN"; var { notation: t, precision: n, wordSize: i } = fi(r); switch (t) { case "fixed": return ci(e, n); case "exponential": return li(e, n); case "engineering": return Ao(e, n); case "bin": return Ot(e, 2, i); case "oct": return Ot(e, 8, i); case "hex": return Ot(e, 16, i); case "auto": return bo(e, n, r).replace(/((\.\d*?)(0+))($|e)/, function() { var u = arguments[2], o = arguments[4]; return u !== "." ? u + o : o; }); default: throw new Error('Unknown notation "' + t + '". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.'); } } function fi(e) { var r = "auto", t, n; if (e !== void 0) if (de(e)) t = e; else if (Ee(e)) t = e.toNumber(); else if (Kt(e)) e.precision !== void 0 && (t = fn(e.precision, () => { throw new Error('Option "precision" must be a number or BigNumber'); })), e.wordSize !== void 0 && (n = fn(e.wordSize, () => { throw new Error('Option "wordSize" must be a number or BigNumber'); })), e.notation && (r = e.notation); else throw new Error("Unsupported type of options, number, BigNumber, or object expected"); return { notation: r, precision: t, wordSize: n }; } function Zr(e) { var r = String(e).toLowerCase().match(/^(-?)(\d+\.?\d*)(e([+-]?\d+))?$/); if (!r) throw new SyntaxError("Invalid number " + e); var t = r[1], n = r[2], i = parseFloat(r[4] || "0"), u = n.indexOf("."); i += u !== -1 ? u - 1 : n.length - 1; var o = n.replace(".", "").replace(/^0*/, function(a) { return i -= a.length, ""; }).replace(/0*$/, "").split("").map(function(a) { return parseInt(a); }); return o.length === 0 && (o.push(0), i++), { sign: t, coefficients: o, exponent: i }; } function Ao(e, r) { if (isNaN(e) || !isFinite(e)) return String(e); var t = Zr(e), n = Ft(t, r), i = n.exponent, u = n.coefficients, o = i % 3 === 0 ? i : i < 0 ? i - 3 - i % 3 : i - i % 3; if (de(r)) for (; r > u.length || i - o + 1 > u.length; ) u.push(0); else for (var a = Math.abs(i - o) - (u.length - 1), c = 0; c < a; c++) u.push(0); for (var l = Math.abs(i - o), f = 1; l > 0; ) f++, l--; var h = u.slice(f).join(""), D = de(r) && h.length || h.match(/[1-9]/) ? "." + h : "", p = u.slice(0, f).join("") + D + "e" + (i >= 0 ? "+" : "") + o.toString(); return n.sign + p; } function ci(e, r) { if (isNaN(e) || !isFinite(e)) return String(e); var t = Zr(e), n = typeof r == "number" ? Ft(t, t.exponent + 1 + r) : t, i = n.coefficients, u = n.exponent + 1, o = u + (r || 0); return i.length < o && (i = i.concat(xr(o - i.length))), u < 0 && (i = xr(-u + 1).concat(i), u = 1), u < i.length && i.splice(u, 0, u === 0 ? "0." : "."), n.sign + i.join(""); } function li(e, r) { if (isNaN(e) || !isFinite(e)) return String(e); var t = Zr(e), n = r ? Ft(t, r) : t, i = n.coefficients, u = n.exponent; i.length < r && (i = i.concat(xr(r - i.length))); var o = i.shift(); return n.sign + o + (i.length > 0 ? "." + i.join("") : "") + "e" + (u >= 0 ? "+" : "") + u; } function bo(e, r, t) { if (isNaN(e) || !isFinite(e)) return String(e); var n = cn(t?.lowerExp, -3), i = cn(t?.upperExp, 5), u = Zr(e), o = r ? Ft(u, r) : u; if (o.exponent < n || o.exponent >= i) return li(e, r); var a = o.coefficients, c = o.exponent; a.length < r && (a = a.concat(xr(r - a.length))), a = a.concat(xr(c - a.length + 1 + (a.length < r ? r - a.length : 0))), a = xr(-c).concat(a); var l = c > 0 ? c : 0; return l < a.length - 1 && a.splice(l + 1, 0, "."), o.sign + a.join(""); } function Ft(e, r) { for (var t = { sign: e.sign, coefficients: e.coefficients, exponent: e.exponent }, n = t.coefficients; r <= 0; ) n.unshift(0), t.exponent++, r++; if (n.length > r) { var i = n.splice(r, n.length - r); if (i[0] >= 5) { var u = r - 1; for (n[u]++; n[u] === 10; ) n.pop(), u === 0 && (n.unshift(0), t.exponent++, u++), u--, n[u]++; } } return t; } function xr(e) { for (var r = [], t = 0; t < e; t++) r.push(0); return r; } function Co(e) { return e.toExponential().replace(/e.*$/, "").replace(/^0\.?0*|\./, "").length; } function tr(e, r) { var t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1e-8, n = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0; if (t <= 0) throw new Error("Relative tolerance must be greater than 0"); if (n < 0) throw new Error("Absolute tolerance must be at least 0"); return isNaN(e) || isNaN(r) ? !1 : !isFinite(e) || !isFinite(r) ? e === r : e === r ? !0 : Math.abs(e - r) <= Math.max(t * Math.max(Math.abs(e), Math.abs(r)), n); } function fn(e, r) { if (de(e)) return e; if (Ee(e)) return e.toNumber(); r(); } function cn(e, r) { return de(e) ? e : Ee(e) ? e.toNumber() : r; } var hi = function() { return hi = ot.create, ot; }, _o = ["?BigNumber", "?Complex", "?DenseMatrix", "?Fraction"], Bo = /* @__PURE__ */ G("typed", _o, function(r) { var { BigNumber: t, Complex: n, DenseMatrix: i, Fraction: u } = r, o = hi(); return o.clear(), o.addTypes([ { name: "number", test: de }, { name: "Complex", test: ii }, { name: "BigNumber", test: Ee }, { name: "bigint", test: Uu }, { name: "Fraction", test: ui }, { name: "Unit", test: oi }, // The following type matches a valid variable name, i.e., an alphanumeric // string starting with an alphabetic character. It is used (at least) // in the definition of the derivative() function, as the argument telling // what to differentiate over must (currently) be a variable. // TODO: deprecate the identifier type (it's not used anymore, see https://github.com/josdejong/mathjs/issues/3253) { name: "identifier", test: (a) => Qe && /^(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-