dielines 0.9.0 → 0.9.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.
@@ -1 +1 @@
1
- {"version":3,"file":"dielines.js","sources":["../../pantograph/dist/QuadraticBezier-PcRS9HZK.js","../../pantograph/dist/models-BjaFYsN2.js","../../pantograph/dist/draw-N2ntigsw.js","../../pantograph/dist/svg-hNHYuj_r.js","../../pantograph/dist/pantograph.js","../src/Dieline.ts","../src/drawFlaps.ts","../src/FoldLockBump.ts","../src/linearDistribution.ts"],"sourcesContent":["var Oe = Object.defineProperty;\nvar Me = (r) => {\n throw TypeError(r);\n};\nvar Be = (r, s, t) => s in r ? Oe(r, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[s] = t;\nvar q = (r, s, t) => Be(r, typeof s != \"symbol\" ? s + \"\" : s, t), oe = (r, s, t) => s.has(r) || Me(\"Cannot \" + t);\nvar ht = (r, s, t) => (oe(r, s, \"read from private field\"), t ? t.call(r) : s.get(r)), le = (r, s, t) => s.has(r) ? Me(\"Cannot add the same private member more than once\") : s instanceof WeakSet ? s.add(r) : s.set(r, t), Dt = (r, s, t, e) => (oe(r, s, \"write to private field\"), e ? e.call(r, t) : s.set(r, t), t), he = (r, s, t) => (oe(r, s, \"access private method\"), t);\nfunction zt(r, s, t, e) {\n return r <= e && s >= t;\n}\nclass mt {\n constructor(s = 1 / 0, t = 1 / 0, e = -1 / 0, n = -1 / 0) {\n q(this, \"xMin\");\n q(this, \"yMin\");\n q(this, \"xMax\");\n q(this, \"yMax\");\n this.xMin = s, this.yMin = t, this.xMax = e, this.yMax = n;\n }\n get width() {\n return this.xMax - this.xMin;\n }\n get height() {\n return this.yMax - this.yMin;\n }\n get center() {\n return [(this.xMin + this.xMax) / 2, (this.yMin + this.yMax) / 2];\n }\n grow(s) {\n return new mt(\n this.xMin - s,\n this.yMin - s,\n this.xMax + s,\n this.yMax + s\n );\n }\n contains(s) {\n const [t, e] = s;\n return zt(this.xMin, this.xMax, t, t) && zt(this.yMin, this.yMax, e, e);\n }\n overlaps(s) {\n return zt(this.xMin, this.xMax, s.xMin, s.xMax) && zt(this.yMin, this.yMax, s.yMin, s.yMax);\n }\n addPoint(s) {\n const [t, e] = s;\n return new mt(\n Math.min(this.xMin, t),\n Math.min(this.yMin, e),\n Math.max(this.xMax, t),\n Math.max(this.yMax, e)\n );\n }\n merge(s) {\n return new mt(\n Math.min(this.xMin, s.xMin),\n Math.min(this.yMin, s.yMin),\n Math.max(this.xMax, s.xMax),\n Math.max(this.yMax, s.yMax)\n );\n }\n intersection(s) {\n return new mt(\n Math.max(this.xMin, s.xMin),\n Math.max(this.yMin, s.yMin),\n Math.min(this.xMax, s.xMax),\n Math.min(this.yMax, s.yMax)\n );\n }\n}\nfunction ce(r) {\n return r.reduce((s, t) => s.addPoint(t), new mt());\n}\nconst ye = (r, s = 1e-9) => {\n let t = r;\n return Math.abs(r) < s && (t = 0), t.toFixed(-Math.log10(s));\n};\nfunction Te(r, s = 1e-9) {\n return Array.from(\n new Map(\n r.map(([t, e]) => [\n `[${ye(t, s)},${ye(e, s)}]`,\n [t, e]\n ])\n ).values()\n );\n}\nconst fe = Math.PI / 180, Ue = 180 / Math.PI, Z = (r) => `[${r[0]}, ${r[1]}]`, Y = ([r, s], [t, e], n = 1e-9) => Math.abs(r - t) <= n && Math.abs(s - e) <= n, it = ([r, s], [t, e]) => [r + t, s + e], Q = ([r, s], [t, e]) => [r - t, s - e], It = ([r, s]) => r * r + s * s, an = ([r, s]) => Math.sqrt(It([r, s])), nt = ([r, s], t) => [r * t, s * t], Rt = ([r, s], [t, e] = [0, 0]) => (r - t) ** 2 + (s - e) ** 2, J = (r, s = [0, 0]) => Math.sqrt(Rt(r, s));\nfunction St([r, s], [t, e]) {\n return r * e - s * t;\n}\nfunction Pe([r, s], [t, e]) {\n return r * t + s * e;\n}\nconst un = ([r, s], [t, e] = [0, 0]) => Math.atan2(e * r - s * t, r * t + s * e);\nfunction H([r, s]) {\n const t = J([r, s]);\n return [r / t, s / t];\n}\nfunction Tt(r, s) {\n const t = Math.cos(s) * r, e = Math.sin(s) * r;\n return [t, e];\n}\nfunction Ye([r, s]) {\n return Math.atan2(s, r);\n}\nfunction We(r) {\n const s = J(r), t = Ye(r);\n return [s, t];\n}\nfunction Ie(r, s, t = 1e-9) {\n const e = St(r, s), n = It(r), i = It(s);\n return e * e < n * i * t * t;\n}\nfunction tt(r) {\n return [-r[1], r[0]];\n}\nfunction Qt(r) {\n return [r[1], -r[0]];\n}\nfunction Qe(r, s, t) {\n return Y(t, r) || Ie(Q(t, r), s);\n}\nconst Mt = (r, s) => {\n const [t, e, n, i, o, l, h, a, u] = r, [c, g, d, w, p, P, f, M, E] = s;\n return [\n t * c + e * w + n * f,\n t * g + e * p + n * M,\n t * d + e * P + n * E,\n i * c + o * w + l * f,\n i * g + o * p + l * M,\n i * d + o * P + l * E,\n h * c + a * w + u * f,\n h * g + a * p + u * M,\n h * d + a * P + u * E\n ];\n}, Ge = (r) => {\n const [s, t, e, n, i, o, l, h, a] = r, u = s * (i * a - o * h) - t * (n * a - o * l) + e * (n * h - i * l);\n return [\n (i * a - o * h) / u,\n (e * h - t * a) / u,\n (t * o - e * i) / u,\n (o * l - n * a) / u,\n (s * a - e * l) / u,\n (e * n - s * o) / u,\n (n * h - i * l) / u,\n (t * l - s * h) / u,\n (s * i - t * n) / u\n ];\n}, Xe = (r) => {\n const [s, t, e, n, i, o, l, h, a] = r;\n return [s, n, l, t, i, h, e, o, a];\n};\nclass et {\n constructor(s) {\n q(this, \"_matrix\", [1, 0, 0, 0, 1, 0, 0, 0, 1]);\n s && (this._matrix = [...s]);\n }\n clone() {\n return new et(this._matrix);\n }\n transpose() {\n return this._matrix = Xe(this._matrix), this;\n }\n inverse() {\n return this._matrix = Ge(this._matrix), this;\n }\n translate(s, t) {\n return this._matrix = Mt([1, 0, s, 0, 1, t, 0, 0, 1], this._matrix), this;\n }\n rotate(s, t) {\n const e = Math.cos(s), n = Math.sin(s), i = [e, -n, 0, n, e, 0, 0, 0, 1];\n return t && this.translate(-t[0], -t[1]), this._matrix = Mt(i, this._matrix), t && this.translate(t[0], t[1]), this;\n }\n mirrorX() {\n return this._matrix = Mt([1, 0, 0, 0, -1, 0, 0, 0, 1], this._matrix), this;\n }\n mirrorY() {\n return this._matrix = Mt([-1, 0, 0, 0, 1, 0, 0, 0, 1], this._matrix), this;\n }\n mirrorLine(s, t) {\n const [e, n] = s, i = Math.atan2(n, e);\n return t && this.translate(-t[0], -t[1]), this.rotate(-i), this.mirrorX(), this.rotate(i), t && this.translate(t[0], t[1]), this;\n }\n mirrorCenter(s) {\n return s && this.translate(-s[0], -s[1]), this._matrix = Mt([-1, 0, 0, 0, -1, 0, 0, 0, 1], this._matrix), s && this.translate(s[0], s[1]), this;\n }\n scale(s, t) {\n return t && this.translate(-t[0], -t[1]), this._matrix = Mt([s, 0, 0, 0, s, 0, 0, 0, 1], this._matrix), t && this.translate(t[0], t[1]), this;\n }\n transform(s) {\n const [t, e] = s, [n, i, o, l, h, a] = this._matrix;\n return [n * t + i * e + o, l * t + h * e + a];\n }\n transformAngle(s) {\n const [t, e] = this.transform([Math.cos(s), Math.sin(s)]), [n, i] = this.transform([0, 0]);\n return Math.atan2(e - i, t - n);\n }\n keepsOrientation() {\n const [s, , , , t] = this._matrix;\n return s * t > 0;\n }\n scaleFactor() {\n const [s, , , t] = this._matrix;\n return Math.sqrt(s * s + t * t);\n }\n}\nclass Ze {\n translateX(s) {\n const t = new et().translate(s, 0);\n return this.transform(t);\n }\n translateY(s) {\n const t = new et().translate(0, s);\n return this.transform(t);\n }\n translate(s, t) {\n const e = new et().translate(s, t);\n return this.transform(e);\n }\n translateTo([s, t]) {\n const e = new et().translate(s, t);\n return this.transform(e);\n }\n rotate(s, t) {\n const e = new et().rotate(\n s * fe,\n t\n );\n return this.transform(e);\n }\n scale(s, t) {\n const e = new et().scale(s, t);\n return this.transform(e);\n }\n mirrorCenter(s) {\n const t = new et().mirrorCenter(s);\n return this.transform(t);\n }\n mirror(s = \"x\", t) {\n const e = new et();\n return s === \"x\" ? e.mirrorX() : s === \"y\" ? e.mirrorY() : e.mirrorLine(s, t), this.transform(e);\n }\n}\nclass xt extends Ze {\n constructor(t, e) {\n super();\n q(this, \"precision\", 1e-9);\n this.firstPoint = t, this.lastPoint = e, this.firstPoint = t, this.lastPoint = e;\n }\n get repr() {\n return `${this.segmentType} ${Z(this.firstPoint)} - ${Z(\n this.lastPoint\n )}`;\n }\n get info() {\n return this.repr;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return this.repr;\n }\n}\nclass at extends xt {\n constructor() {\n super(...arguments);\n q(this, \"segmentType\", \"LINE\");\n q(this, \"_V\", null);\n q(this, \"_slope\", null);\n q(this, \"_yIntercept\", null);\n q(this, \"_boundingBox\", null);\n }\n isValidParameter(t) {\n const e = this.length * this.precision;\n return t >= -e && 1 - t >= -e;\n }\n paramPoint(t) {\n return it(this.firstPoint, nt(this.V, t));\n }\n get length() {\n return J(this.firstPoint, this.lastPoint);\n }\n get squareLength() {\n return Rt(this.firstPoint, this.lastPoint);\n }\n get V() {\n return this._V === null && (this._V = Q(this.lastPoint, this.firstPoint)), this._V;\n }\n get slope() {\n if (this._slope === null) {\n const [t, e] = this.V;\n this._slope = e / t;\n }\n return this._slope;\n }\n get yIntercept() {\n return this._yIntercept === null && (this._yIntercept = this.firstPoint[1] - this.slope * this.firstPoint[0]), this._yIntercept;\n }\n get midPoint() {\n return it(this.firstPoint, nt(this.V, 0.5));\n }\n isSame(t) {\n return t instanceof at ? Y(this.firstPoint, t.firstPoint) && Y(this.lastPoint, t.lastPoint) || Y(this.lastPoint, t.firstPoint) && Y(this.firstPoint, t.lastPoint) : !1;\n }\n clone() {\n return new at(this.firstPoint, this.lastPoint);\n }\n reverse() {\n return new at(this.lastPoint, this.firstPoint);\n }\n get boundingBox() {\n return this._boundingBox === null && (this._boundingBox = new mt(\n Math.min(this.firstPoint[0], this.lastPoint[0]) - this.precision,\n Math.min(this.firstPoint[1], this.lastPoint[1]) - this.precision,\n Math.max(this.firstPoint[0], this.lastPoint[0]) + this.precision,\n Math.max(this.firstPoint[1], this.lastPoint[1]) + this.precision\n )), this._boundingBox;\n }\n distanceFrom(t) {\n const e = Q(t, this.firstPoint), n = Pe(e, this.V) / this.squareLength;\n if (n < 0)\n return J(t, this.firstPoint);\n if (n > 1)\n return J(t, this.lastPoint);\n const i = this.paramPoint(n);\n return J(t, i);\n }\n isOnSegment(t) {\n if (Y(t, this.firstPoint, this.precision)) return !0;\n const e = Q(t, this.firstPoint);\n if (!Ie(this.V, e)) return !1;\n const n = Pe(e, this.V) / this.squareLength;\n return this.isValidParameter(n);\n }\n gradientAt(t) {\n return this.V;\n }\n tangentAt(t) {\n if (!this.isOnSegment(t)) throw new Error(\"Point is not on segment\");\n return H(this.V);\n }\n get normalVector() {\n return tt(H(this.V));\n }\n get tangentAtFirstPoint() {\n return H(this.V);\n }\n get tangentAtLastPoint() {\n return H(this.V);\n }\n splitAt(t) {\n let e;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? e = t : e = [t], e.forEach((a) => {\n if (!this.isOnSegment(a))\n throw new Error(\n `Point ${Z(a)} is not on segment ${this.repr}`\n );\n });\n const n = [this.firstPoint, ...e, this.lastPoint], i = Te(n), o = this.lastPoint[0] - this.firstPoint[0];\n let l = Math.sign(o), h = 0;\n return Math.abs(o) < this.precision && (l = Math.sign(this.lastPoint[1] - this.firstPoint[1]), h = 1), i.sort(\n (a, u) => l * (a[h] - u[h])\n ), i.flatMap((a, u) => u === i.length - 1 ? [] : new at(a, i[u + 1]));\n }\n transform(t) {\n return new at(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint)\n );\n }\n}\nfunction Je(r) {\n return Array.from(Array(r).keys());\n}\nfunction Kt(r) {\n const s = Math.min(...r.map((t) => t.length));\n return Je(s).map((t) => r.map((e) => e[t]));\n}\nfunction wt(r, s = 1e-9) {\n return r < 0 ? r + 2 * Math.PI : r >= 2 * Math.PI ? r % (2 * Math.PI) : r > 2 * Math.PI - s ? 0 : r;\n}\nfunction Zt(r, s, t, e = 1e-9) {\n let n = s - r;\n return t && (n = -n), n < 0 && (n += 2 * Math.PI), n > 2 * Math.PI - e ? 0 : n;\n}\nconst me = (r, s, t) => {\n const e = St(r.V, s.V), n = It(r.V), i = It(s.V), o = t ? t * t : r.precision * s.precision;\n if (e * e < n * i * o)\n return \"parallel\";\n const l = Q(s.firstPoint, r.firstPoint), h = St(l, s.V) / e, a = St(l, r.V) / e;\n return {\n intersectionParam1: h,\n intersectionParam2: a\n };\n};\nfunction cn(r, s, t = !1, e) {\n const n = me(r, s, e);\n if (n === \"parallel\") {\n if (!t) return null;\n if (r.isSame(s)) return r;\n const l = Te(\n [\n s.isOnSegment(r.firstPoint) ? r.firstPoint : null,\n s.isOnSegment(r.lastPoint) ? r.lastPoint : null,\n r.isOnSegment(s.firstPoint) ? s.firstPoint : null,\n r.isOnSegment(s.lastPoint) ? s.lastPoint : null\n ].filter((h) => h !== null)\n ).sort((h, a) => h[0] - a[0]);\n if (l.length === 0) return null;\n if (l.length === 1) return null;\n if (l.length === 2) return new at(l[0], l[1]);\n throw console.error(l), new Error(\n \"Unexpected number of points while intersecting parallel lines\"\n );\n }\n const { intersectionParam1: i, intersectionParam2: o } = n;\n return !r.isValidParameter(i) || !s.isValidParameter(o) ? null : r.paramPoint(i);\n}\nconst Ot = (r, s) => {\n const t = Q(r, s);\n return We(t);\n};\nclass ct extends xt {\n constructor(t, e, n, i = !1, { ignoreChecks: o = !1 } = {}) {\n super(t, e);\n q(this, \"segmentType\", \"ARC\");\n q(this, \"center\");\n q(this, \"clockwise\");\n q(this, \"_coefficients\", null);\n q(this, \"_angularLength\", null);\n q(this, \"_radius\", null);\n q(this, \"_firstAngle\", null);\n q(this, \"_lastAngle\", null);\n q(this, \"_boundingBox\", null);\n if (this.center = n, this.clockwise = i, !o) {\n if (Y(t, e))\n throw new Error(\"Invalid arc, cannot be a full circle\");\n if (Math.abs(this.radius - J(this.lastPoint, this.center)) > this.precision)\n throw new Error(\n `Invalid arc, radius does not match between ${Z(\n t\n )} and ${Z(e)}} (center ${Z(n)})`\n );\n }\n }\n get info() {\n return `ARC(${Z(this.firstPoint)}, ${Z(\n this.lastPoint\n )}, ${Z(this.center)}, ${this.clockwise ? \"CW\" : \"CCW\"})`;\n }\n get coefficients() {\n if (this._coefficients === null) {\n const [t, e] = this.center, n = this.radius * this.radius;\n this._coefficients = {\n x2: 1 / n,\n xy: 0,\n y2: 1 / n,\n x: -(2 * t) / n,\n y: -(2 * e) / n,\n c: (t * t + e * e - n) / n\n };\n }\n return this._coefficients;\n }\n isValidParameter(t) {\n return 1 - t >= -this.precision && t >= -this.precision;\n }\n angleToParam(t) {\n return Zt(this.firstAngle, wt(t), this.clockwise) / this.angularLength;\n }\n get angularLength() {\n return this._angularLength || (this._angularLength = Zt(\n this.firstAngle,\n this.lastAngle,\n this.clockwise\n )), this._angularLength;\n }\n paramPoint(t) {\n return it(\n this.center,\n Tt(\n this.radius,\n this.firstAngle + t * this.angularLength * (this.clockwise ? -1 : 1)\n )\n );\n }\n pointToParam(t) {\n const [e, n] = Ot(t, this.center);\n if (Math.abs(e - this.radius) > this.precision)\n throw new Error(\n `Point ${Z(t)} is not on segment ${this.repr}`\n );\n const i = this.angleToParam(n);\n if (!this.isValidParameter(i))\n throw new Error(\n `Point ${Z(t)} is not on segment ${this.repr}`\n );\n return i;\n }\n get radius() {\n return this._radius === null && (this._radius = J(this.firstPoint, this.center)), this._radius;\n }\n get firstAngle() {\n if (this._firstAngle === null) {\n const [t, e] = Q(this.firstPoint, this.center);\n this._firstAngle = wt(Math.atan2(e, t));\n }\n return this._firstAngle;\n }\n get lastAngle() {\n if (this._lastAngle === null) {\n const [t, e] = Q(this.lastPoint, this.center);\n this._lastAngle = wt(Math.atan2(e, t));\n }\n return this._lastAngle;\n }\n get length() {\n return this.radius * this.angularLength;\n }\n get squareLength() {\n return this.length * this.length;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n isSame(t) {\n return !(t instanceof ct) || !Y(this.center, t.center) ? !1 : Y(this.firstPoint, t.firstPoint) && Y(this.lastPoint, t.lastPoint) && this.clockwise === t.clockwise || Y(this.lastPoint, t.firstPoint) && Y(this.firstPoint, t.lastPoint) && this.clockwise === !t.clockwise;\n }\n clone() {\n return new ct(\n this.firstPoint,\n this.lastPoint,\n this.center,\n this.clockwise\n );\n }\n reverse() {\n return new ct(\n this.lastPoint,\n this.firstPoint,\n this.center,\n !this.clockwise\n );\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n const t = this.radius + this.precision, e = (n) => this.isValidParameter(this.angleToParam(n));\n this._boundingBox = new mt(\n e(Math.PI) ? this.center[0] - t : Math.min(this.firstPoint[0], this.lastPoint[0]) - this.precision,\n e(Math.PI * 1.5) ? this.center[1] - t : Math.min(this.firstPoint[1], this.lastPoint[1]) - this.precision,\n e(0) ? this.center[0] + t : Math.max(this.firstPoint[0], this.lastPoint[0]) + this.precision,\n e(Math.PI / 2) ? this.center[1] + t : Math.max(this.firstPoint[1], this.lastPoint[1]) + this.precision\n );\n }\n return this._boundingBox;\n }\n distanceFrom(t) {\n const [e, n] = Ot(t, this.center);\n return this.isValidParameter(this.angleToParam(n)) ? Math.abs(e - this.radius) : Math.sqrt(\n Math.min(\n Rt(t, this.firstPoint),\n Rt(t, this.lastPoint)\n )\n );\n }\n isOnSegment(t) {\n if (Y(t, this.firstPoint) || Y(t, this.lastPoint))\n return !0;\n const [e, n] = Ot(t, this.center);\n if (Math.abs(e - this.radius) > this.precision) return !1;\n const i = this.angleToParam(n);\n return this.isValidParameter(i);\n }\n gradientAt(t) {\n const e = this.firstAngle + t * this.angularLength * (this.clockwise ? -1 : 1), n = this.radius * this.angularLength, i = -n * Math.sin(e), o = n * Math.cos(e);\n return this.clockwise ? [-i, -o] : [i, o];\n }\n tangentAt(t) {\n const [e, n] = Ot(t, this.center);\n if (Math.abs(e - this.radius) > this.precision)\n throw new Error(\"Point is not on the arc\");\n const i = this.angleToParam(n);\n if (!this.isValidParameter(i))\n throw new Error(\"Point is not on the arc\");\n const o = Tt(1, n);\n return (this.clockwise ? Qt : tt)(H(o));\n }\n get tangentAtFirstPoint() {\n const t = Tt(1, this.firstAngle);\n return (this.clockwise ? Qt : tt)(H(t));\n }\n get tangentAtLastPoint() {\n const t = Tt(1, this.lastAngle);\n return (this.clockwise ? Qt : tt)(H(t));\n }\n splitAt(t) {\n let e;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? e = t : e = [t];\n const i = [0, 1, ...e.map((h) => this.pointToParam(h))], o = new Map(\n Kt([i, [this.firstPoint, this.lastPoint, ...e]])\n );\n i.sort((h, a) => h - a);\n let l = null;\n return i.flatMap((h, a) => {\n if (a === i.length - 1) return [];\n const u = i[a + 1];\n if (u - h < this.precision)\n return l === null && (l = h), [];\n const c = l === null ? h : l, g = new ct(\n o.get(c) || this.paramPoint(c),\n o.get(u) || this.paramPoint(u),\n this.center,\n this.clockwise\n );\n return l = null, g;\n });\n }\n transform(t) {\n return new ct(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint),\n t.transform(this.center),\n t.keepsOrientation() ? this.clockwise : !this.clockwise\n );\n }\n}\nfunction fn(r, s, t) {\n const e = new at(s, r), n = new at(s, t), i = tt(e.tangentAtFirstPoint), o = tt(n.tangentAtLastPoint), l = me(\n { firstPoint: e.midPoint, V: i, precision: 1e-9 },\n { firstPoint: n.midPoint, V: o, precision: 1e-9 }\n );\n if (l === \"parallel\")\n throw new Error(\"Cannot create an arc from three colinear points\");\n const h = St(\n Q(r, s),\n Q(t, s)\n ) > 0;\n return new ct(\n r,\n t,\n it(e.midPoint, nt(i, l.intersectionParam1)),\n h,\n { ignoreChecks: !0 }\n );\n}\nfunction mn(r, s, t) {\n const e = new at(r, s), n = tt(e.tangentAtFirstPoint), i = me(\n { firstPoint: e.midPoint, V: n, precision: 1e-9 },\n {\n firstPoint: r,\n V: tt(t),\n precision: 1e-9\n }\n );\n if (i === \"parallel\")\n throw new Error(\"Cannot create an arc from three colinear points\");\n const o = it(\n e.midPoint,\n nt(n, i.intersectionParam1)\n ), l = St(\n Q(o, r),\n Q(o, it(r, t))\n ) < 0;\n return new ct(r, s, o, l, {\n ignoreChecks: !0\n });\n}\nconst be = 1e-21, Bt = 1.618034;\nfunction Ee(r, s = 0, t = 1, e = 110, n = 1e3) {\n let i, o, l, h, a, u, c, g, d, w, p, P, f;\n for (o = r(s), l = r(t), o < l && ([s, t] = [t, s], [o, l] = [l, o]), f = t + Bt * (t - s), h = r(f), a = 3, c = 0; h < l; ) {\n if (g = (t - s) * (l - h), d = (t - f) * (l - o), w = d - g, Math.abs(w) < be ? i = 2 * be : i = 2 * w, p = t - ((t - f) * d - (t - s) * g) / i, P = t + e * (f - t), c > n)\n throw new Error(\"Too many iterations.\");\n if (c += 1, (p - f) * (t - p) > 0) {\n if (u = r(p), a += 1, u < h)\n return s = t, t = p, o = l, l = u, [s, t, f, o, l, h, a];\n if (u > l)\n return f = p, h = u, [s, t, f, o, l, h, a];\n p = f + Bt * (f - t), u = r(p), a += 1;\n } else\n (p - P) * (P - f) >= 0 ? (p = P, u = r(p), a += 1) : (p - P) * (f - p) > 0 ? (u = r(p), a += 1, u < h && (t = f, f = p, p = f + Bt * (f - t), l = h, h = u, u = r(p), a += 1)) : (p = f + Bt * (f - t), u = r(p), a += 1);\n s = t, t = f, f = p, o = l, l = h, h = u;\n }\n return [s, t, f, o, l, h, a];\n}\nconst _e = 0.381966, Ke = 1e-11;\nclass He {\n constructor(s, t = 148e-10, e = 500) {\n q(this, \"xmin\");\n q(this, \"fval\");\n q(this, \"iter\");\n q(this, \"funcalls\");\n q(this, \"brack\");\n this.func = s, this.tol = t, this.maxiter = e, this.func = s, this.tol = t, this.maxiter = e, this.xmin = 1 / 0, this.fval = 1 / 0, this.iter = 0, this.funcalls = 0, this.brack = null;\n }\n setBracket(s = null) {\n this.brack = s;\n }\n getBracketInfo() {\n let s, t, e, n, i, o, l;\n const h = this.func, a = this.brack;\n if (a === null)\n [i, o, l, s, t, e, n] = Ee(h);\n else if (a.length === 2)\n [i, o, l, s, t, e, n] = Ee(h, a[0], a[1]);\n else if (a.length === 3) {\n if ([i, o, l] = a, i > l && ([l, i] = [i, l]), !(i < o && o < l))\n throw new Error(\"Not a bracketing interval.\");\n if (s = h(i), t = h(o), e = h(l), !(t < s && t < e))\n throw new Error(\"Not a bracketing interval.\");\n n = 3;\n } else\n throw new Error(\n \"Bracketing interval must be length 2 or 3 sequence.\"\n );\n return [i, o, l, s, t, e, n];\n }\n optimize() {\n const s = this.func;\n let [t, e, n, , , , i] = this.getBracketInfo(), o = e, l = e, h = e, a = s(o), u = a, c = a, g, d;\n t < n ? (g = t, d = n) : (g = n, d = t);\n let w = 0;\n i = 1;\n let p = 0, P = 0, f;\n for (; p < this.maxiter; ) {\n const M = this.tol * Math.abs(o) + Ke, E = 2 * M, R = 0.5 * (g + d);\n if (Math.abs(o - R) < E - 0.5 * (d - g))\n break;\n if (Math.abs(w) <= M)\n o >= R ? w = g - o : w = d - o, P = _e * w;\n else {\n const L = (o - l) * (c - u);\n let S = (o - h) * (c - a), k = (o - h) * S - (o - l) * L;\n S = 2 * (S - L), S > 0 && (k = -k), S = Math.abs(S);\n const D = w;\n w = P, k > S * (g - o) && k < S * (d - o) && Math.abs(k) < Math.abs(0.5 * S * D) ? (P = k * 1 / S, f = o + P, (f - g < E || d - f < E) && (R - o >= 0 ? P = M : P = -M)) : (o >= R ? w = g - o : w = d - o, P = _e * w);\n }\n Math.abs(P) < M ? P >= 0 ? f = o + M : f = o - M : f = o + P;\n const v = s(f);\n i += 1, v > c ? (f < o ? g = f : d = f, v <= a || l === o ? (h = l, l = f, u = a, a = v) : (v <= u || h === o || h === l) && (h = f, u = v)) : (f >= o ? g = o : d = o, h = l, l = o, o = f, u = a, a = c, c = v), p += 1;\n }\n this.xmin = o, this.fval = c, this.iter = p, this.funcalls = i;\n }\n results() {\n return {\n argMin: this.xmin,\n fMin: this.fval,\n iterations: this.iter,\n funcCalls: this.funcalls\n };\n }\n run() {\n return this.optimize(), this.results();\n }\n}\nfunction Ce(r, s = 1e-8, t = 1e3) {\n const e = new He(r, s, t);\n return e.setBracket([0, 1]), e.run();\n}\nfunction qe(r) {\n if (r.__esModule) return r;\n var s = r.default;\n if (typeof s == \"function\") {\n var t = function e() {\n return this instanceof e ? Reflect.construct(s, arguments, this.constructor) : s.apply(this, arguments);\n };\n t.prototype = s.prototype;\n } else t = {};\n return Object.defineProperty(t, \"__esModule\", { value: !0 }), Object.keys(r).forEach(function(e) {\n var n = Object.getOwnPropertyDescriptor(r, e);\n Object.defineProperty(t, e, n.get ? n : {\n enumerable: !0,\n get: function() {\n return r[e];\n }\n });\n }), t;\n}\nvar $ = {};\nconst ts = Object.prototype.toString;\nfunction Ct(r) {\n const s = ts.call(r);\n return s.endsWith(\"Array]\") && !s.includes(\"Big\");\n}\nconst es = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n isAnyArray: Ct\n}, Symbol.toStringTag, { value: \"Module\" })), ss = /* @__PURE__ */ qe(es);\nfunction ns(r) {\n var s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!Ct(r))\n throw new TypeError(\"input must be an array\");\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n var t = s.fromIndex, e = t === void 0 ? 0 : t, n = s.toIndex, i = n === void 0 ? r.length : n;\n if (e < 0 || e >= r.length || !Number.isInteger(e))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (i <= e || i > r.length || !Number.isInteger(i))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = r[e], l = e + 1; l < i; l++)\n r[l] > o && (o = r[l]);\n return o;\n}\nfunction is(r) {\n var s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!Ct(r))\n throw new TypeError(\"input must be an array\");\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n var t = s.fromIndex, e = t === void 0 ? 0 : t, n = s.toIndex, i = n === void 0 ? r.length : n;\n if (e < 0 || e >= r.length || !Number.isInteger(e))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (i <= e || i > r.length || !Number.isInteger(i))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = r[e], l = e + 1; l < i; l++)\n r[l] < o && (o = r[l]);\n return o;\n}\nfunction rs(r) {\n var s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (Ct(r)) {\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n } else throw new TypeError(\"input must be an array\");\n var t;\n if (s.output !== void 0) {\n if (!Ct(s.output))\n throw new TypeError(\"output option must be an array if specified\");\n t = s.output;\n } else\n t = new Array(r.length);\n var e = is(r), n = ns(r);\n if (e === n)\n throw new RangeError(\"minimum and maximum input values are equal. Cannot rescale a constant array\");\n var i = s.min, o = i === void 0 ? s.autoMinMax ? e : 0 : i, l = s.max, h = l === void 0 ? s.autoMinMax ? n : 1 : l;\n if (o >= h)\n throw new RangeError(\"min option must be smaller than max option\");\n for (var a = (h - o) / (n - e), u = 0; u < r.length; u++)\n t[u] = (r[u] - e) * a + o;\n return t;\n}\nconst os = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: rs\n}, Symbol.toStringTag, { value: \"Module\" })), ls = /* @__PURE__ */ qe(os);\nObject.defineProperty($, \"__esModule\", { value: !0 });\nvar st = ss, je = ls;\nconst Ut = \" \".repeat(2), Fe = \" \".repeat(4);\nfunction hs() {\n return xe(this);\n}\nfunction xe(r, s = {}) {\n const {\n maxRows: t = 15,\n maxColumns: e = 10,\n maxNumSize: n = 8,\n padMinus: i = \"auto\"\n } = s;\n return `${r.constructor.name} {\n${Ut}[\n${Fe}${as(r, t, e, n, i)}\n${Ut}]\n${Ut}rows: ${r.rows}\n${Ut}columns: ${r.columns}\n}`;\n}\nfunction as(r, s, t, e, n) {\n const { rows: i, columns: o } = r, l = Math.min(i, s), h = Math.min(o, t), a = [];\n if (n === \"auto\") {\n n = !1;\n t: for (let u = 0; u < l; u++)\n for (let c = 0; c < h; c++)\n if (r.get(u, c) < 0) {\n n = !0;\n break t;\n }\n }\n for (let u = 0; u < l; u++) {\n let c = [];\n for (let g = 0; g < h; g++)\n c.push(us(r.get(u, g), e, n));\n a.push(`${c.join(\" \")}`);\n }\n return h !== o && (a[a.length - 1] += ` ... ${o - t} more columns`), l !== i && a.push(`... ${i - s} more rows`), a.join(`\n${Fe}`);\n}\nfunction us(r, s, t) {\n return (r >= 0 && t ? ` ${Se(r, s - 1)}` : Se(r, s)).padEnd(s);\n}\nfunction Se(r, s) {\n let t = r.toString();\n if (t.length <= s) return t;\n let e = r.toFixed(s);\n if (e.length > s && (e = r.toFixed(Math.max(0, s - (e.length - s)))), e.length <= s && !e.startsWith(\"0.000\") && !e.startsWith(\"-0.000\"))\n return e;\n let n = r.toExponential(s);\n return n.length > s && (n = r.toExponential(Math.max(0, s - (n.length - s)))), n.slice(0);\n}\nfunction cs(r, s) {\n r.prototype.add = function(e) {\n return typeof e == \"number\" ? this.addS(e) : this.addM(e);\n }, r.prototype.addS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) + e);\n return this;\n }, r.prototype.addM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) + e.get(n, i));\n return this;\n }, r.add = function(e, n) {\n return new s(e).add(n);\n }, r.prototype.sub = function(e) {\n return typeof e == \"number\" ? this.subS(e) : this.subM(e);\n }, r.prototype.subS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) - e);\n return this;\n }, r.prototype.subM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) - e.get(n, i));\n return this;\n }, r.sub = function(e, n) {\n return new s(e).sub(n);\n }, r.prototype.subtract = r.prototype.sub, r.prototype.subtractS = r.prototype.subS, r.prototype.subtractM = r.prototype.subM, r.subtract = r.sub, r.prototype.mul = function(e) {\n return typeof e == \"number\" ? this.mulS(e) : this.mulM(e);\n }, r.prototype.mulS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) * e);\n return this;\n }, r.prototype.mulM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) * e.get(n, i));\n return this;\n }, r.mul = function(e, n) {\n return new s(e).mul(n);\n }, r.prototype.multiply = r.prototype.mul, r.prototype.multiplyS = r.prototype.mulS, r.prototype.multiplyM = r.prototype.mulM, r.multiply = r.mul, r.prototype.div = function(e) {\n return typeof e == \"number\" ? this.divS(e) : this.divM(e);\n }, r.prototype.divS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) / e);\n return this;\n }, r.prototype.divM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) / e.get(n, i));\n return this;\n }, r.div = function(e, n) {\n return new s(e).div(n);\n }, r.prototype.divide = r.prototype.div, r.prototype.divideS = r.prototype.divS, r.prototype.divideM = r.prototype.divM, r.divide = r.div, r.prototype.mod = function(e) {\n return typeof e == \"number\" ? this.modS(e) : this.modM(e);\n }, r.prototype.modS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) % e);\n return this;\n }, r.prototype.modM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) % e.get(n, i));\n return this;\n }, r.mod = function(e, n) {\n return new s(e).mod(n);\n }, r.prototype.modulus = r.prototype.mod, r.prototype.modulusS = r.prototype.modS, r.prototype.modulusM = r.prototype.modM, r.modulus = r.mod, r.prototype.and = function(e) {\n return typeof e == \"number\" ? this.andS(e) : this.andM(e);\n }, r.prototype.andS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) & e);\n return this;\n }, r.prototype.andM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) & e.get(n, i));\n return this;\n }, r.and = function(e, n) {\n return new s(e).and(n);\n }, r.prototype.or = function(e) {\n return typeof e == \"number\" ? this.orS(e) : this.orM(e);\n }, r.prototype.orS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) | e);\n return this;\n }, r.prototype.orM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) | e.get(n, i));\n return this;\n }, r.or = function(e, n) {\n return new s(e).or(n);\n }, r.prototype.xor = function(e) {\n return typeof e == \"number\" ? this.xorS(e) : this.xorM(e);\n }, r.prototype.xorS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) ^ e);\n return this;\n }, r.prototype.xorM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) ^ e.get(n, i));\n return this;\n }, r.xor = function(e, n) {\n return new s(e).xor(n);\n }, r.prototype.leftShift = function(e) {\n return typeof e == \"number\" ? this.leftShiftS(e) : this.leftShiftM(e);\n }, r.prototype.leftShiftS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) << e);\n return this;\n }, r.prototype.leftShiftM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) << e.get(n, i));\n return this;\n }, r.leftShift = function(e, n) {\n return new s(e).leftShift(n);\n }, r.prototype.signPropagatingRightShift = function(e) {\n return typeof e == \"number\" ? this.signPropagatingRightShiftS(e) : this.signPropagatingRightShiftM(e);\n }, r.prototype.signPropagatingRightShiftS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) >> e);\n return this;\n }, r.prototype.signPropagatingRightShiftM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) >> e.get(n, i));\n return this;\n }, r.signPropagatingRightShift = function(e, n) {\n return new s(e).signPropagatingRightShift(n);\n }, r.prototype.rightShift = function(e) {\n return typeof e == \"number\" ? this.rightShiftS(e) : this.rightShiftM(e);\n }, r.prototype.rightShiftS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) >>> e);\n return this;\n }, r.prototype.rightShiftM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) >>> e.get(n, i));\n return this;\n }, r.rightShift = function(e, n) {\n return new s(e).rightShift(n);\n }, r.prototype.zeroFillRightShift = r.prototype.rightShift, r.prototype.zeroFillRightShiftS = r.prototype.rightShiftS, r.prototype.zeroFillRightShiftM = r.prototype.rightShiftM, r.zeroFillRightShift = r.rightShift, r.prototype.not = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, ~this.get(e, n));\n return this;\n }, r.not = function(e) {\n return new s(e).not();\n }, r.prototype.abs = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.abs(this.get(e, n)));\n return this;\n }, r.abs = function(e) {\n return new s(e).abs();\n }, r.prototype.acos = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.acos(this.get(e, n)));\n return this;\n }, r.acos = function(e) {\n return new s(e).acos();\n }, r.prototype.acosh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.acosh(this.get(e, n)));\n return this;\n }, r.acosh = function(e) {\n return new s(e).acosh();\n }, r.prototype.asin = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.asin(this.get(e, n)));\n return this;\n }, r.asin = function(e) {\n return new s(e).asin();\n }, r.prototype.asinh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.asinh(this.get(e, n)));\n return this;\n }, r.asinh = function(e) {\n return new s(e).asinh();\n }, r.prototype.atan = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.atan(this.get(e, n)));\n return this;\n }, r.atan = function(e) {\n return new s(e).atan();\n }, r.prototype.atanh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.atanh(this.get(e, n)));\n return this;\n }, r.atanh = function(e) {\n return new s(e).atanh();\n }, r.prototype.cbrt = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.cbrt(this.get(e, n)));\n return this;\n }, r.cbrt = function(e) {\n return new s(e).cbrt();\n }, r.prototype.ceil = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.ceil(this.get(e, n)));\n return this;\n }, r.ceil = function(e) {\n return new s(e).ceil();\n }, r.prototype.clz32 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.clz32(this.get(e, n)));\n return this;\n }, r.clz32 = function(e) {\n return new s(e).clz32();\n }, r.prototype.cos = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.cos(this.get(e, n)));\n return this;\n }, r.cos = function(e) {\n return new s(e).cos();\n }, r.prototype.cosh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.cosh(this.get(e, n)));\n return this;\n }, r.cosh = function(e) {\n return new s(e).cosh();\n }, r.prototype.exp = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.exp(this.get(e, n)));\n return this;\n }, r.exp = function(e) {\n return new s(e).exp();\n }, r.prototype.expm1 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.expm1(this.get(e, n)));\n return this;\n }, r.expm1 = function(e) {\n return new s(e).expm1();\n }, r.prototype.floor = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.floor(this.get(e, n)));\n return this;\n }, r.floor = function(e) {\n return new s(e).floor();\n }, r.prototype.fround = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.fround(this.get(e, n)));\n return this;\n }, r.fround = function(e) {\n return new s(e).fround();\n }, r.prototype.log = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.log(this.get(e, n)));\n return this;\n }, r.log = function(e) {\n return new s(e).log();\n }, r.prototype.log1p = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.log1p(this.get(e, n)));\n return this;\n }, r.log1p = function(e) {\n return new s(e).log1p();\n }, r.prototype.log10 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.log10(this.get(e, n)));\n return this;\n }, r.log10 = function(e) {\n return new s(e).log10();\n }, r.prototype.log2 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.log2(this.get(e, n)));\n return this;\n }, r.log2 = function(e) {\n return new s(e).log2();\n }, r.prototype.round = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.round(this.get(e, n)));\n return this;\n }, r.round = function(e) {\n return new s(e).round();\n }, r.prototype.sign = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.sign(this.get(e, n)));\n return this;\n }, r.sign = function(e) {\n return new s(e).sign();\n }, r.prototype.sin = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.sin(this.get(e, n)));\n return this;\n }, r.sin = function(e) {\n return new s(e).sin();\n }, r.prototype.sinh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.sinh(this.get(e, n)));\n return this;\n }, r.sinh = function(e) {\n return new s(e).sinh();\n }, r.prototype.sqrt = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.sqrt(this.get(e, n)));\n return this;\n }, r.sqrt = function(e) {\n return new s(e).sqrt();\n }, r.prototype.tan = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.tan(this.get(e, n)));\n return this;\n }, r.tan = function(e) {\n return new s(e).tan();\n }, r.prototype.tanh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.tanh(this.get(e, n)));\n return this;\n }, r.tanh = function(e) {\n return new s(e).tanh();\n }, r.prototype.trunc = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.trunc(this.get(e, n)));\n return this;\n }, r.trunc = function(e) {\n return new s(e).trunc();\n }, r.pow = function(e, n) {\n return new s(e).pow(n);\n }, r.prototype.pow = function(e) {\n return typeof e == \"number\" ? this.powS(e) : this.powM(e);\n }, r.prototype.powS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) ** e);\n return this;\n }, r.prototype.powM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) ** e.get(n, i));\n return this;\n };\n}\nfunction ot(r, s, t) {\n let e = t ? r.rows : r.rows - 1;\n if (s < 0 || s > e)\n throw new RangeError(\"Row index out of range\");\n}\nfunction lt(r, s, t) {\n let e = t ? r.columns : r.columns - 1;\n if (s < 0 || s > e)\n throw new RangeError(\"Column index out of range\");\n}\nfunction Pt(r, s) {\n if (s.to1DArray && (s = s.to1DArray()), s.length !== r.columns)\n throw new RangeError(\n \"vector size must be the same as the number of columns\"\n );\n return s;\n}\nfunction bt(r, s) {\n if (s.to1DArray && (s = s.to1DArray()), s.length !== r.rows)\n throw new RangeError(\"vector size must be the same as the number of rows\");\n return s;\n}\nfunction ge(r, s) {\n if (!st.isAnyArray(s))\n throw new TypeError(\"row indices must be an array\");\n for (let t = 0; t < s.length; t++)\n if (s[t] < 0 || s[t] >= r.rows)\n throw new RangeError(\"row indices are out of range\");\n}\nfunction we(r, s) {\n if (!st.isAnyArray(s))\n throw new TypeError(\"column indices must be an array\");\n for (let t = 0; t < s.length; t++)\n if (s[t] < 0 || s[t] >= r.columns)\n throw new RangeError(\"column indices are out of range\");\n}\nfunction ae(r, s, t, e, n) {\n if (arguments.length !== 5)\n throw new RangeError(\"expected 4 arguments\");\n if (Yt(\"startRow\", s), Yt(\"endRow\", t), Yt(\"startColumn\", e), Yt(\"endColumn\", n), s > t || e > n || s < 0 || s >= r.rows || t < 0 || t >= r.rows || e < 0 || e >= r.columns || n < 0 || n >= r.columns)\n throw new RangeError(\"Submatrix indices are out of range\");\n}\nfunction Ht(r, s = 0) {\n let t = [];\n for (let e = 0; e < r; e++)\n t.push(s);\n return t;\n}\nfunction Yt(r, s) {\n if (typeof s != \"number\")\n throw new TypeError(`${r} must be a number`);\n}\nfunction yt(r) {\n if (r.isEmpty())\n throw new Error(\"Empty matrix has no elements to index\");\n}\nfunction fs(r) {\n let s = Ht(r.rows);\n for (let t = 0; t < r.rows; ++t)\n for (let e = 0; e < r.columns; ++e)\n s[t] += r.get(t, e);\n return s;\n}\nfunction ms(r) {\n let s = Ht(r.columns);\n for (let t = 0; t < r.rows; ++t)\n for (let e = 0; e < r.columns; ++e)\n s[e] += r.get(t, e);\n return s;\n}\nfunction gs(r) {\n let s = 0;\n for (let t = 0; t < r.rows; t++)\n for (let e = 0; e < r.columns; e++)\n s += r.get(t, e);\n return s;\n}\nfunction ws(r) {\n let s = Ht(r.rows, 1);\n for (let t = 0; t < r.rows; ++t)\n for (let e = 0; e < r.columns; ++e)\n s[t] *= r.get(t, e);\n return s;\n}\nfunction ps(r) {\n let s = Ht(r.columns, 1);\n for (let t = 0; t < r.rows; ++t)\n for (let e = 0; e < r.columns; ++e)\n s[e] *= r.get(t, e);\n return s;\n}\nfunction ds(r) {\n let s = 1;\n for (let t = 0; t < r.rows; t++)\n for (let e = 0; e < r.columns; e++)\n s *= r.get(t, e);\n return s;\n}\nfunction Ms(r, s, t) {\n const e = r.rows, n = r.columns, i = [];\n for (let o = 0; o < e; o++) {\n let l = 0, h = 0, a = 0;\n for (let u = 0; u < n; u++)\n a = r.get(o, u) - t[o], l += a, h += a * a;\n s ? i.push((h - l * l / n) / (n - 1)) : i.push((h - l * l / n) / n);\n }\n return i;\n}\nfunction ys(r, s, t) {\n const e = r.rows, n = r.columns, i = [];\n for (let o = 0; o < n; o++) {\n let l = 0, h = 0, a = 0;\n for (let u = 0; u < e; u++)\n a = r.get(u, o) - t[o], l += a, h += a * a;\n s ? i.push((h - l * l / e) / (e - 1)) : i.push((h - l * l / e) / e);\n }\n return i;\n}\nfunction Ps(r, s, t) {\n const e = r.rows, n = r.columns, i = e * n;\n let o = 0, l = 0, h = 0;\n for (let a = 0; a < e; a++)\n for (let u = 0; u < n; u++)\n h = r.get(a, u) - t, o += h, l += h * h;\n return s ? (l - o * o / i) / (i - 1) : (l - o * o / i) / i;\n}\nfunction bs(r, s) {\n for (let t = 0; t < r.rows; t++)\n for (let e = 0; e < r.columns; e++)\n r.set(t, e, r.get(t, e) - s[t]);\n}\nfunction Es(r, s) {\n for (let t = 0; t < r.rows; t++)\n for (let e = 0; e < r.columns; e++)\n r.set(t, e, r.get(t, e) - s[e]);\n}\nfunction _s(r, s) {\n for (let t = 0; t < r.rows; t++)\n for (let e = 0; e < r.columns; e++)\n r.set(t, e, r.get(t, e) - s);\n}\nfunction js(r) {\n const s = [];\n for (let t = 0; t < r.rows; t++) {\n let e = 0;\n for (let n = 0; n < r.columns; n++)\n e += r.get(t, n) ** 2 / (r.columns - 1);\n s.push(Math.sqrt(e));\n }\n return s;\n}\nfunction Ss(r, s) {\n for (let t = 0; t < r.rows; t++)\n for (let e = 0; e < r.columns; e++)\n r.set(t, e, r.get(t, e) / s[t]);\n}\nfunction ks(r) {\n const s = [];\n for (let t = 0; t < r.columns; t++) {\n let e = 0;\n for (let n = 0; n < r.rows; n++)\n e += r.get(n, t) ** 2 / (r.rows - 1);\n s.push(Math.sqrt(e));\n }\n return s;\n}\nfunction Rs(r, s) {\n for (let t = 0; t < r.rows; t++)\n for (let e = 0; e < r.columns; e++)\n r.set(t, e, r.get(t, e) / s[e]);\n}\nfunction vs(r) {\n const s = r.size - 1;\n let t = 0;\n for (let e = 0; e < r.columns; e++)\n for (let n = 0; n < r.rows; n++)\n t += r.get(n, e) ** 2 / s;\n return Math.sqrt(t);\n}\nfunction Ts(r, s) {\n for (let t = 0; t < r.rows; t++)\n for (let e = 0; e < r.columns; e++)\n r.set(t, e, r.get(t, e) / s);\n}\nclass V {\n static from1DArray(s, t, e) {\n if (s * t !== e.length)\n throw new RangeError(\"data length does not match given dimensions\");\n let i = new _(s, t);\n for (let o = 0; o < s; o++)\n for (let l = 0; l < t; l++)\n i.set(o, l, e[o * t + l]);\n return i;\n }\n static rowVector(s) {\n let t = new _(1, s.length);\n for (let e = 0; e < s.length; e++)\n t.set(0, e, s[e]);\n return t;\n }\n static columnVector(s) {\n let t = new _(s.length, 1);\n for (let e = 0; e < s.length; e++)\n t.set(e, 0, s[e]);\n return t;\n }\n static zeros(s, t) {\n return new _(s, t);\n }\n static ones(s, t) {\n return new _(s, t).fill(1);\n }\n static rand(s, t, e = {}) {\n if (typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { random: n = Math.random } = e;\n let i = new _(s, t);\n for (let o = 0; o < s; o++)\n for (let l = 0; l < t; l++)\n i.set(o, l, n());\n return i;\n }\n static randInt(s, t, e = {}) {\n if (typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: n = 0, max: i = 1e3, random: o = Math.random } = e;\n if (!Number.isInteger(n)) throw new TypeError(\"min must be an integer\");\n if (!Number.isInteger(i)) throw new TypeError(\"max must be an integer\");\n if (n >= i) throw new RangeError(\"min must be smaller than max\");\n let l = i - n, h = new _(s, t);\n for (let a = 0; a < s; a++)\n for (let u = 0; u < t; u++) {\n let c = n + Math.round(o() * l);\n h.set(a, u, c);\n }\n return h;\n }\n static eye(s, t, e) {\n t === void 0 && (t = s), e === void 0 && (e = 1);\n let n = Math.min(s, t), i = this.zeros(s, t);\n for (let o = 0; o < n; o++)\n i.set(o, o, e);\n return i;\n }\n static diag(s, t, e) {\n let n = s.length;\n t === void 0 && (t = n), e === void 0 && (e = t);\n let i = Math.min(n, t, e), o = this.zeros(t, e);\n for (let l = 0; l < i; l++)\n o.set(l, l, s[l]);\n return o;\n }\n static min(s, t) {\n s = this.checkMatrix(s), t = this.checkMatrix(t);\n let e = s.rows, n = s.columns, i = new _(e, n);\n for (let o = 0; o < e; o++)\n for (let l = 0; l < n; l++)\n i.set(o, l, Math.min(s.get(o, l), t.get(o, l)));\n return i;\n }\n static max(s, t) {\n s = this.checkMatrix(s), t = this.checkMatrix(t);\n let e = s.rows, n = s.columns, i = new this(e, n);\n for (let o = 0; o < e; o++)\n for (let l = 0; l < n; l++)\n i.set(o, l, Math.max(s.get(o, l), t.get(o, l)));\n return i;\n }\n static checkMatrix(s) {\n return V.isMatrix(s) ? s : new _(s);\n }\n static isMatrix(s) {\n return s != null && s.klass === \"Matrix\";\n }\n get size() {\n return this.rows * this.columns;\n }\n apply(s) {\n if (typeof s != \"function\")\n throw new TypeError(\"callback must be a function\");\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n s.call(this, t, e);\n return this;\n }\n to1DArray() {\n let s = [];\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n s.push(this.get(t, e));\n return s;\n }\n to2DArray() {\n let s = [];\n for (let t = 0; t < this.rows; t++) {\n s.push([]);\n for (let e = 0; e < this.columns; e++)\n s[t].push(this.get(t, e));\n }\n return s;\n }\n toJSON() {\n return this.to2DArray();\n }\n isRowVector() {\n return this.rows === 1;\n }\n isColumnVector() {\n return this.columns === 1;\n }\n isVector() {\n return this.rows === 1 || this.columns === 1;\n }\n isSquare() {\n return this.rows === this.columns;\n }\n isEmpty() {\n return this.rows === 0 || this.columns === 0;\n }\n isSymmetric() {\n if (this.isSquare()) {\n for (let s = 0; s < this.rows; s++)\n for (let t = 0; t <= s; t++)\n if (this.get(s, t) !== this.get(t, s))\n return !1;\n return !0;\n }\n return !1;\n }\n isDistance() {\n if (!this.isSymmetric()) return !1;\n for (let s = 0; s < this.rows; s++)\n if (this.get(s, s) !== 0) return !1;\n return !0;\n }\n isEchelonForm() {\n let s = 0, t = 0, e = -1, n = !0, i = !1;\n for (; s < this.rows && n; ) {\n for (t = 0, i = !1; t < this.columns && i === !1; )\n this.get(s, t) === 0 ? t++ : this.get(s, t) === 1 && t > e ? (i = !0, e = t) : (n = !1, i = !0);\n s++;\n }\n return n;\n }\n isReducedEchelonForm() {\n let s = 0, t = 0, e = -1, n = !0, i = !1;\n for (; s < this.rows && n; ) {\n for (t = 0, i = !1; t < this.columns && i === !1; )\n this.get(s, t) === 0 ? t++ : this.get(s, t) === 1 && t > e ? (i = !0, e = t) : (n = !1, i = !0);\n for (let o = t + 1; o < this.rows; o++)\n this.get(s, o) !== 0 && (n = !1);\n s++;\n }\n return n;\n }\n echelonForm() {\n let s = this.clone(), t = 0, e = 0;\n for (; t < s.rows && e < s.columns; ) {\n let n = t;\n for (let i = t; i < s.rows; i++)\n s.get(i, e) > s.get(n, e) && (n = i);\n if (s.get(n, e) === 0)\n e++;\n else {\n s.swapRows(t, n);\n let i = s.get(t, e);\n for (let o = e; o < s.columns; o++)\n s.set(t, o, s.get(t, o) / i);\n for (let o = t + 1; o < s.rows; o++) {\n let l = s.get(o, e) / s.get(t, e);\n s.set(o, e, 0);\n for (let h = e + 1; h < s.columns; h++)\n s.set(o, h, s.get(o, h) - s.get(t, h) * l);\n }\n t++, e++;\n }\n }\n return s;\n }\n reducedEchelonForm() {\n let s = this.echelonForm(), t = s.columns, e = s.rows, n = e - 1;\n for (; n >= 0; )\n if (s.maxRow(n) === 0)\n n--;\n else {\n let i = 0, o = !1;\n for (; i < e && o === !1; )\n s.get(n, i) === 1 ? o = !0 : i++;\n for (let l = 0; l < n; l++) {\n let h = s.get(l, i);\n for (let a = i; a < t; a++) {\n let u = s.get(l, a) - h * s.get(n, a);\n s.set(l, a, u);\n }\n }\n n--;\n }\n return s;\n }\n set() {\n throw new Error(\"set method is unimplemented\");\n }\n get() {\n throw new Error(\"get method is unimplemented\");\n }\n repeat(s = {}) {\n if (typeof s != \"object\")\n throw new TypeError(\"options must be an object\");\n const { rows: t = 1, columns: e = 1 } = s;\n if (!Number.isInteger(t) || t <= 0)\n throw new TypeError(\"rows must be a positive integer\");\n if (!Number.isInteger(e) || e <= 0)\n throw new TypeError(\"columns must be a positive integer\");\n let n = new _(this.rows * t, this.columns * e);\n for (let i = 0; i < t; i++)\n for (let o = 0; o < e; o++)\n n.setSubMatrix(this, this.rows * i, this.columns * o);\n return n;\n }\n fill(s) {\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, s);\n return this;\n }\n neg() {\n return this.mulS(-1);\n }\n getRow(s) {\n ot(this, s);\n let t = [];\n for (let e = 0; e < this.columns; e++)\n t.push(this.get(s, e));\n return t;\n }\n getRowVector(s) {\n return _.rowVector(this.getRow(s));\n }\n setRow(s, t) {\n ot(this, s), t = Pt(this, t);\n for (let e = 0; e < this.columns; e++)\n this.set(s, e, t[e]);\n return this;\n }\n swapRows(s, t) {\n ot(this, s), ot(this, t);\n for (let e = 0; e < this.columns; e++) {\n let n = this.get(s, e);\n this.set(s, e, this.get(t, e)), this.set(t, e, n);\n }\n return this;\n }\n getColumn(s) {\n lt(this, s);\n let t = [];\n for (let e = 0; e < this.rows; e++)\n t.push(this.get(e, s));\n return t;\n }\n getColumnVector(s) {\n return _.columnVector(this.getColumn(s));\n }\n setColumn(s, t) {\n lt(this, s), t = bt(this, t);\n for (let e = 0; e < this.rows; e++)\n this.set(e, s, t[e]);\n return this;\n }\n swapColumns(s, t) {\n lt(this, s), lt(this, t);\n for (let e = 0; e < this.rows; e++) {\n let n = this.get(e, s);\n this.set(e, s, this.get(e, t)), this.set(e, t, n);\n }\n return this;\n }\n addRowVector(s) {\n s = Pt(this, s);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) + s[e]);\n return this;\n }\n subRowVector(s) {\n s = Pt(this, s);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) - s[e]);\n return this;\n }\n mulRowVector(s) {\n s = Pt(this, s);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) * s[e]);\n return this;\n }\n divRowVector(s) {\n s = Pt(this, s);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) / s[e]);\n return this;\n }\n addColumnVector(s) {\n s = bt(this, s);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) + s[t]);\n return this;\n }\n subColumnVector(s) {\n s = bt(this, s);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) - s[t]);\n return this;\n }\n mulColumnVector(s) {\n s = bt(this, s);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) * s[t]);\n return this;\n }\n divColumnVector(s) {\n s = bt(this, s);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) / s[t]);\n return this;\n }\n mulRow(s, t) {\n ot(this, s);\n for (let e = 0; e < this.columns; e++)\n this.set(s, e, this.get(s, e) * t);\n return this;\n }\n mulColumn(s, t) {\n lt(this, s);\n for (let e = 0; e < this.rows; e++)\n this.set(e, s, this.get(e, s) * t);\n return this;\n }\n max(s) {\n if (this.isEmpty())\n return NaN;\n switch (s) {\n case \"row\": {\n const t = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.get(e, n) > t[e] && (t[e] = this.get(e, n));\n return t;\n }\n case \"column\": {\n const t = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.get(e, n) > t[n] && (t[n] = this.get(e, n));\n return t;\n }\n case void 0: {\n let t = this.get(0, 0);\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.get(e, n) > t && (t = this.get(e, n));\n return t;\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n maxIndex() {\n yt(this);\n let s = this.get(0, 0), t = [0, 0];\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.get(e, n) > s && (s = this.get(e, n), t[0] = e, t[1] = n);\n return t;\n }\n min(s) {\n if (this.isEmpty())\n return NaN;\n switch (s) {\n case \"row\": {\n const t = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.get(e, n) < t[e] && (t[e] = this.get(e, n));\n return t;\n }\n case \"column\": {\n const t = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.get(e, n) < t[n] && (t[n] = this.get(e, n));\n return t;\n }\n case void 0: {\n let t = this.get(0, 0);\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.get(e, n) < t && (t = this.get(e, n));\n return t;\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n minIndex() {\n yt(this);\n let s = this.get(0, 0), t = [0, 0];\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.get(e, n) < s && (s = this.get(e, n), t[0] = e, t[1] = n);\n return t;\n }\n maxRow(s) {\n if (ot(this, s), this.isEmpty())\n return NaN;\n let t = this.get(s, 0);\n for (let e = 1; e < this.columns; e++)\n this.get(s, e) > t && (t = this.get(s, e));\n return t;\n }\n maxRowIndex(s) {\n ot(this, s), yt(this);\n let t = this.get(s, 0), e = [s, 0];\n for (let n = 1; n < this.columns; n++)\n this.get(s, n) > t && (t = this.get(s, n), e[1] = n);\n return e;\n }\n minRow(s) {\n if (ot(this, s), this.isEmpty())\n return NaN;\n let t = this.get(s, 0);\n for (let e = 1; e < this.columns; e++)\n this.get(s, e) < t && (t = this.get(s, e));\n return t;\n }\n minRowIndex(s) {\n ot(this, s), yt(this);\n let t = this.get(s, 0), e = [s, 0];\n for (let n = 1; n < this.columns; n++)\n this.get(s, n) < t && (t = this.get(s, n), e[1] = n);\n return e;\n }\n maxColumn(s) {\n if (lt(this, s), this.isEmpty())\n return NaN;\n let t = this.get(0, s);\n for (let e = 1; e < this.rows; e++)\n this.get(e, s) > t && (t = this.get(e, s));\n return t;\n }\n maxColumnIndex(s) {\n lt(this, s), yt(this);\n let t = this.get(0, s), e = [0, s];\n for (let n = 1; n < this.rows; n++)\n this.get(n, s) > t && (t = this.get(n, s), e[0] = n);\n return e;\n }\n minColumn(s) {\n if (lt(this, s), this.isEmpty())\n return NaN;\n let t = this.get(0, s);\n for (let e = 1; e < this.rows; e++)\n this.get(e, s) < t && (t = this.get(e, s));\n return t;\n }\n minColumnIndex(s) {\n lt(this, s), yt(this);\n let t = this.get(0, s), e = [0, s];\n for (let n = 1; n < this.rows; n++)\n this.get(n, s) < t && (t = this.get(n, s), e[0] = n);\n return e;\n }\n diag() {\n let s = Math.min(this.rows, this.columns), t = [];\n for (let e = 0; e < s; e++)\n t.push(this.get(e, e));\n return t;\n }\n norm(s = \"frobenius\") {\n switch (s) {\n case \"max\":\n return this.max();\n case \"frobenius\":\n return Math.sqrt(this.dot(this));\n default:\n throw new RangeError(`unknown norm type: ${s}`);\n }\n }\n cumulativeSum() {\n let s = 0;\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n s += this.get(t, e), this.set(t, e, s);\n return this;\n }\n dot(s) {\n V.isMatrix(s) && (s = s.to1DArray());\n let t = this.to1DArray();\n if (t.length !== s.length)\n throw new RangeError(\"vectors do not have the same size\");\n let e = 0;\n for (let n = 0; n < t.length; n++)\n e += t[n] * s[n];\n return e;\n }\n mmul(s) {\n s = _.checkMatrix(s);\n let t = this.rows, e = this.columns, n = s.columns, i = new _(t, n), o = new Float64Array(e);\n for (let l = 0; l < n; l++) {\n for (let h = 0; h < e; h++)\n o[h] = s.get(h, l);\n for (let h = 0; h < t; h++) {\n let a = 0;\n for (let u = 0; u < e; u++)\n a += this.get(h, u) * o[u];\n i.set(h, l, a);\n }\n }\n return i;\n }\n mpow(s) {\n if (!this.isSquare())\n throw new RangeError(\"Matrix must be square\");\n if (!Number.isInteger(s) || s < 0)\n throw new RangeError(\"Exponent must be a non-negative integer\");\n let t = _.eye(this.rows), e = this;\n for (let n = s; n > 1; n /= 2)\n n & 1 && (t = t.mmul(e)), e = e.mmul(e);\n return t;\n }\n strassen2x2(s) {\n s = _.checkMatrix(s);\n let t = new _(2, 2);\n const e = this.get(0, 0), n = s.get(0, 0), i = this.get(0, 1), o = s.get(0, 1), l = this.get(1, 0), h = s.get(1, 0), a = this.get(1, 1), u = s.get(1, 1), c = (e + a) * (n + u), g = (l + a) * n, d = e * (o - u), w = a * (h - n), p = (e + i) * u, P = (l - e) * (n + o), f = (i - a) * (h + u), M = c + w - p + f, E = d + p, R = g + w, v = c - g + d + P;\n return t.set(0, 0, M), t.set(0, 1, E), t.set(1, 0, R), t.set(1, 1, v), t;\n }\n strassen3x3(s) {\n s = _.checkMatrix(s);\n let t = new _(3, 3);\n const e = this.get(0, 0), n = this.get(0, 1), i = this.get(0, 2), o = this.get(1, 0), l = this.get(1, 1), h = this.get(1, 2), a = this.get(2, 0), u = this.get(2, 1), c = this.get(2, 2), g = s.get(0, 0), d = s.get(0, 1), w = s.get(0, 2), p = s.get(1, 0), P = s.get(1, 1), f = s.get(1, 2), M = s.get(2, 0), E = s.get(2, 1), R = s.get(2, 2), v = (e + n + i - o - l - u - c) * P, L = (e - o) * (-d + P), S = l * (-g + d + p - P - f - M + R), k = (-e + o + l) * (g - d + P), D = (o + l) * (-g + d), m = e * g, b = (-e + a + u) * (g - w + f), j = (-e + a) * (w - f), y = (a + u) * (-g + w), C = (e + n + i - l - h - a - u) * f, F = u * (-g + w + p - P - f - M + E), I = (-i + u + c) * (P + M - E), B = (i - c) * (P - E), x = i * M, N = (u + c) * (-M + E), A = (-i + l + h) * (f + M - R), O = (i - h) * (f - R), U = (l + h) * (-M + R), T = n * p, z = h * E, X = o * w, G = a * d, W = c * R, se = m + x + T, ne = v + k + D + m + I + x + N, ie = m + b + y + C + x + A + U, re = L + S + k + m + x + A + O, At = L + k + D + m + z, Vt = x + A + O + U + X, Nt = m + b + j + F + I + B + x, $t = I + B + x + N + G, Lt = m + b + j + y + W;\n return t.set(0, 0, se), t.set(0, 1, ne), t.set(0, 2, ie), t.set(1, 0, re), t.set(1, 1, At), t.set(1, 2, Vt), t.set(2, 0, Nt), t.set(2, 1, $t), t.set(2, 2, Lt), t;\n }\n mmulStrassen(s) {\n s = _.checkMatrix(s);\n let t = this.clone(), e = t.rows, n = t.columns, i = s.rows, o = s.columns;\n n !== i && console.warn(\n `Multiplying ${e} x ${n} and ${i} x ${o} matrix: dimensions do not match.`\n );\n function l(c, g, d) {\n let w = c.rows, p = c.columns;\n if (w === g && p === d)\n return c;\n {\n let P = V.zeros(g, d);\n return P = P.setSubMatrix(c, 0, 0), P;\n }\n }\n let h = Math.max(e, i), a = Math.max(n, o);\n t = l(t, h, a), s = l(s, h, a);\n function u(c, g, d, w) {\n if (d <= 512 || w <= 512)\n return c.mmul(g);\n d % 2 === 1 && w % 2 === 1 ? (c = l(c, d + 1, w + 1), g = l(g, d + 1, w + 1)) : d % 2 === 1 ? (c = l(c, d + 1, w), g = l(g, d + 1, w)) : w % 2 === 1 && (c = l(c, d, w + 1), g = l(g, d, w + 1));\n let p = parseInt(c.rows / 2, 10), P = parseInt(c.columns / 2, 10), f = c.subMatrix(0, p - 1, 0, P - 1), M = g.subMatrix(0, p - 1, 0, P - 1), E = c.subMatrix(0, p - 1, P, c.columns - 1), R = g.subMatrix(0, p - 1, P, g.columns - 1), v = c.subMatrix(p, c.rows - 1, 0, P - 1), L = g.subMatrix(p, g.rows - 1, 0, P - 1), S = c.subMatrix(p, c.rows - 1, P, c.columns - 1), k = g.subMatrix(p, g.rows - 1, P, g.columns - 1), D = u(\n V.add(f, S),\n V.add(M, k),\n p,\n P\n ), m = u(V.add(v, S), M, p, P), b = u(f, V.sub(R, k), p, P), j = u(S, V.sub(L, M), p, P), y = u(V.add(f, E), k, p, P), C = u(\n V.sub(v, f),\n V.add(M, R),\n p,\n P\n ), F = u(\n V.sub(E, S),\n V.add(L, k),\n p,\n P\n ), I = V.add(D, j);\n I.sub(y), I.add(F);\n let B = V.add(b, y), x = V.add(m, j), N = V.sub(D, m);\n N.add(b), N.add(C);\n let A = V.zeros(2 * I.rows, 2 * I.columns);\n return A = A.setSubMatrix(I, 0, 0), A = A.setSubMatrix(B, I.rows, 0), A = A.setSubMatrix(x, 0, I.columns), A = A.setSubMatrix(N, I.rows, I.columns), A.subMatrix(0, d - 1, 0, w - 1);\n }\n return u(t, s, h, a);\n }\n scaleRows(s = {}) {\n if (typeof s != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: t = 0, max: e = 1 } = s;\n if (!Number.isFinite(t)) throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(e)) throw new TypeError(\"max must be a number\");\n if (t >= e) throw new RangeError(\"min must be smaller than max\");\n let n = new _(this.rows, this.columns);\n for (let i = 0; i < this.rows; i++) {\n const o = this.getRow(i);\n o.length > 0 && je(o, { min: t, max: e, output: o }), n.setRow(i, o);\n }\n return n;\n }\n scaleColumns(s = {}) {\n if (typeof s != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: t = 0, max: e = 1 } = s;\n if (!Number.isFinite(t)) throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(e)) throw new TypeError(\"max must be a number\");\n if (t >= e) throw new RangeError(\"min must be smaller than max\");\n let n = new _(this.rows, this.columns);\n for (let i = 0; i < this.columns; i++) {\n const o = this.getColumn(i);\n o.length && je(o, {\n min: t,\n max: e,\n output: o\n }), n.setColumn(i, o);\n }\n return n;\n }\n flipRows() {\n const s = Math.ceil(this.columns / 2);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < s; e++) {\n let n = this.get(t, e), i = this.get(t, this.columns - 1 - e);\n this.set(t, e, i), this.set(t, this.columns - 1 - e, n);\n }\n return this;\n }\n flipColumns() {\n const s = Math.ceil(this.rows / 2);\n for (let t = 0; t < this.columns; t++)\n for (let e = 0; e < s; e++) {\n let n = this.get(e, t), i = this.get(this.rows - 1 - e, t);\n this.set(e, t, i), this.set(this.rows - 1 - e, t, n);\n }\n return this;\n }\n kroneckerProduct(s) {\n s = _.checkMatrix(s);\n let t = this.rows, e = this.columns, n = s.rows, i = s.columns, o = new _(t * n, e * i);\n for (let l = 0; l < t; l++)\n for (let h = 0; h < e; h++)\n for (let a = 0; a < n; a++)\n for (let u = 0; u < i; u++)\n o.set(n * l + a, i * h + u, this.get(l, h) * s.get(a, u));\n return o;\n }\n kroneckerSum(s) {\n if (s = _.checkMatrix(s), !this.isSquare() || !s.isSquare())\n throw new Error(\"Kronecker Sum needs two Square Matrices\");\n let t = this.rows, e = s.rows, n = this.kroneckerProduct(_.eye(e, e)), i = _.eye(t, t).kroneckerProduct(s);\n return n.add(i);\n }\n transpose() {\n let s = new _(this.columns, this.rows);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n s.set(e, t, this.get(t, e));\n return s;\n }\n sortRows(s = ke) {\n for (let t = 0; t < this.rows; t++)\n this.setRow(t, this.getRow(t).sort(s));\n return this;\n }\n sortColumns(s = ke) {\n for (let t = 0; t < this.columns; t++)\n this.setColumn(t, this.getColumn(t).sort(s));\n return this;\n }\n subMatrix(s, t, e, n) {\n ae(this, s, t, e, n);\n let i = new _(\n t - s + 1,\n n - e + 1\n );\n for (let o = s; o <= t; o++)\n for (let l = e; l <= n; l++)\n i.set(o - s, l - e, this.get(o, l));\n return i;\n }\n subMatrixRow(s, t, e) {\n if (t === void 0 && (t = 0), e === void 0 && (e = this.columns - 1), t > e || t < 0 || t >= this.columns || e < 0 || e >= this.columns)\n throw new RangeError(\"Argument out of range\");\n let n = new _(s.length, e - t + 1);\n for (let i = 0; i < s.length; i++)\n for (let o = t; o <= e; o++) {\n if (s[i] < 0 || s[i] >= this.rows)\n throw new RangeError(`Row index out of range: ${s[i]}`);\n n.set(i, o - t, this.get(s[i], o));\n }\n return n;\n }\n subMatrixColumn(s, t, e) {\n if (t === void 0 && (t = 0), e === void 0 && (e = this.rows - 1), t > e || t < 0 || t >= this.rows || e < 0 || e >= this.rows)\n throw new RangeError(\"Argument out of range\");\n let n = new _(e - t + 1, s.length);\n for (let i = 0; i < s.length; i++)\n for (let o = t; o <= e; o++) {\n if (s[i] < 0 || s[i] >= this.columns)\n throw new RangeError(`Column index out of range: ${s[i]}`);\n n.set(o - t, i, this.get(o, s[i]));\n }\n return n;\n }\n setSubMatrix(s, t, e) {\n if (s = _.checkMatrix(s), s.isEmpty())\n return this;\n let n = t + s.rows - 1, i = e + s.columns - 1;\n ae(this, t, n, e, i);\n for (let o = 0; o < s.rows; o++)\n for (let l = 0; l < s.columns; l++)\n this.set(t + o, e + l, s.get(o, l));\n return this;\n }\n selection(s, t) {\n ge(this, s), we(this, t);\n let e = new _(s.length, t.length);\n for (let n = 0; n < s.length; n++) {\n let i = s[n];\n for (let o = 0; o < t.length; o++) {\n let l = t[o];\n e.set(n, o, this.get(i, l));\n }\n }\n return e;\n }\n trace() {\n let s = Math.min(this.rows, this.columns), t = 0;\n for (let e = 0; e < s; e++)\n t += this.get(e, e);\n return t;\n }\n clone() {\n return this.constructor.copy(this, new _(this.rows, this.columns));\n }\n /**\n * @template {AbstractMatrix} M\n * @param {AbstractMatrix} from\n * @param {M} to\n * @return {M}\n */\n static copy(s, t) {\n for (const [e, n, i] of s.entries())\n t.set(e, n, i);\n return t;\n }\n sum(s) {\n switch (s) {\n case \"row\":\n return fs(this);\n case \"column\":\n return ms(this);\n case void 0:\n return gs(this);\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n product(s) {\n switch (s) {\n case \"row\":\n return ws(this);\n case \"column\":\n return ps(this);\n case void 0:\n return ds(this);\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n mean(s) {\n const t = this.sum(s);\n switch (s) {\n case \"row\": {\n for (let e = 0; e < this.rows; e++)\n t[e] /= this.columns;\n return t;\n }\n case \"column\": {\n for (let e = 0; e < this.columns; e++)\n t[e] /= this.rows;\n return t;\n }\n case void 0:\n return t / this.size;\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n variance(s, t = {}) {\n if (typeof s == \"object\" && (t = s, s = void 0), typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { unbiased: e = !0, mean: n = this.mean(s) } = t;\n if (typeof e != \"boolean\")\n throw new TypeError(\"unbiased must be a boolean\");\n switch (s) {\n case \"row\": {\n if (!st.isAnyArray(n))\n throw new TypeError(\"mean must be an array\");\n return Ms(this, e, n);\n }\n case \"column\": {\n if (!st.isAnyArray(n))\n throw new TypeError(\"mean must be an array\");\n return ys(this, e, n);\n }\n case void 0: {\n if (typeof n != \"number\")\n throw new TypeError(\"mean must be a number\");\n return Ps(this, e, n);\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n standardDeviation(s, t) {\n typeof s == \"object\" && (t = s, s = void 0);\n const e = this.variance(s, t);\n if (s === void 0)\n return Math.sqrt(e);\n for (let n = 0; n < e.length; n++)\n e[n] = Math.sqrt(e[n]);\n return e;\n }\n center(s, t = {}) {\n if (typeof s == \"object\" && (t = s, s = void 0), typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { center: e = this.mean(s) } = t;\n switch (s) {\n case \"row\": {\n if (!st.isAnyArray(e))\n throw new TypeError(\"center must be an array\");\n return bs(this, e), this;\n }\n case \"column\": {\n if (!st.isAnyArray(e))\n throw new TypeError(\"center must be an array\");\n return Es(this, e), this;\n }\n case void 0: {\n if (typeof e != \"number\")\n throw new TypeError(\"center must be a number\");\n return _s(this, e), this;\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n scale(s, t = {}) {\n if (typeof s == \"object\" && (t = s, s = void 0), typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n let e = t.scale;\n switch (s) {\n case \"row\": {\n if (e === void 0)\n e = js(this);\n else if (!st.isAnyArray(e))\n throw new TypeError(\"scale must be an array\");\n return Ss(this, e), this;\n }\n case \"column\": {\n if (e === void 0)\n e = ks(this);\n else if (!st.isAnyArray(e))\n throw new TypeError(\"scale must be an array\");\n return Rs(this, e), this;\n }\n case void 0: {\n if (e === void 0)\n e = vs(this);\n else if (typeof e != \"number\")\n throw new TypeError(\"scale must be a number\");\n return Ts(this, e), this;\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n toString(s) {\n return xe(this, s);\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * iterator from left to right, from top to bottom\n * yield [row, column, value]\n * @returns {Generator<[number, number, number], void, void>}\n */\n *entries() {\n for (let s = 0; s < this.rows; s++)\n for (let t = 0; t < this.columns; t++)\n yield [s, t, this.get(s, t)];\n }\n /**\n * iterator from left to right, from top to bottom\n * yield value\n * @returns {Generator<number, void, void>}\n */\n *values() {\n for (let s = 0; s < this.rows; s++)\n for (let t = 0; t < this.columns; t++)\n yield this.get(s, t);\n }\n}\nV.prototype.klass = \"Matrix\";\ntypeof Symbol < \"u\" && (V.prototype[Symbol.for(\"nodejs.util.inspect.custom\")] = hs);\nfunction ke(r, s) {\n return r - s;\n}\nfunction Is(r) {\n return r.every((s) => typeof s == \"number\");\n}\nV.random = V.rand;\nV.randomInt = V.randInt;\nV.diagonal = V.diag;\nV.prototype.diagonal = V.prototype.diag;\nV.identity = V.eye;\nV.prototype.negate = V.prototype.neg;\nV.prototype.tensorProduct = V.prototype.kroneckerProduct;\nvar Ft, ue, dt;\nlet _ = (dt = class extends V {\n constructor(t, e) {\n super();\n le(this, Ft);\n /**\n * @type {Float64Array[]}\n */\n q(this, \"data\");\n if (dt.isMatrix(t))\n he(this, Ft, ue).call(this, t.rows, t.columns), dt.copy(t, this);\n else if (Number.isInteger(t) && t >= 0)\n he(this, Ft, ue).call(this, t, e);\n else if (st.isAnyArray(t)) {\n const n = t;\n if (t = n.length, e = t ? n[0].length : 0, typeof e != \"number\")\n throw new TypeError(\n \"Data must be a 2D array with at least one element\"\n );\n this.data = [];\n for (let i = 0; i < t; i++) {\n if (n[i].length !== e)\n throw new RangeError(\"Inconsistent array dimensions\");\n if (!Is(n[i]))\n throw new TypeError(\"Input data contains non-numeric values\");\n this.data.push(Float64Array.from(n[i]));\n }\n this.rows = t, this.columns = e;\n } else\n throw new TypeError(\n \"First argument must be a positive number or an array\"\n );\n }\n set(t, e, n) {\n return this.data[t][e] = n, this;\n }\n get(t, e) {\n return this.data[t][e];\n }\n removeRow(t) {\n return ot(this, t), this.data.splice(t, 1), this.rows -= 1, this;\n }\n addRow(t, e) {\n return e === void 0 && (e = t, t = this.rows), ot(this, t, !0), e = Float64Array.from(Pt(this, e)), this.data.splice(t, 0, e), this.rows += 1, this;\n }\n removeColumn(t) {\n lt(this, t);\n for (let e = 0; e < this.rows; e++) {\n const n = new Float64Array(this.columns - 1);\n for (let i = 0; i < t; i++)\n n[i] = this.data[e][i];\n for (let i = t + 1; i < this.columns; i++)\n n[i - 1] = this.data[e][i];\n this.data[e] = n;\n }\n return this.columns -= 1, this;\n }\n addColumn(t, e) {\n typeof e > \"u\" && (e = t, t = this.columns), lt(this, t, !0), e = bt(this, e);\n for (let n = 0; n < this.rows; n++) {\n const i = new Float64Array(this.columns + 1);\n let o = 0;\n for (; o < t; o++)\n i[o] = this.data[n][o];\n for (i[o++] = e[n]; o < this.columns + 1; o++)\n i[o] = this.data[n][o - 1];\n this.data[n] = i;\n }\n return this.columns += 1, this;\n }\n}, Ft = new WeakSet(), /**\n * Init an empty matrix\n * @param {number} nRows\n * @param {number} nColumns\n */\nue = function(t, e) {\n if (this.data = [], Number.isInteger(e) && e >= 0)\n for (let n = 0; n < t; n++)\n this.data.push(new Float64Array(e));\n else\n throw new TypeError(\"nColumns must be a positive integer\");\n this.rows = t, this.columns = e;\n}, dt);\ncs(V, _);\nvar K;\nconst Jt = class Jt extends V {\n /**\n * @param {number | AbstractMatrix | ArrayLike<ArrayLike<number>>} diagonalSize\n * @return {this}\n */\n constructor(t) {\n super();\n /** @type {Matrix} */\n le(this, K);\n if (_.isMatrix(t)) {\n if (!t.isSymmetric())\n throw new TypeError(\"not symmetric data\");\n Dt(this, K, _.copy(\n t,\n new _(t.rows, t.rows)\n ));\n } else if (Number.isInteger(t) && t >= 0)\n Dt(this, K, new _(t, t));\n else if (Dt(this, K, new _(t)), !this.isSymmetric())\n throw new TypeError(\"not symmetric data\");\n }\n get size() {\n return ht(this, K).size;\n }\n get rows() {\n return ht(this, K).rows;\n }\n get columns() {\n return ht(this, K).columns;\n }\n get diagonalSize() {\n return this.rows;\n }\n /**\n * not the same as matrix.isSymmetric()\n * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n *\n * @param value\n * @returns {boolean}\n */\n static isSymmetricMatrix(t) {\n return _.isMatrix(t) && t.klassType === \"SymmetricMatrix\";\n }\n /**\n * @param diagonalSize\n * @return {SymmetricMatrix}\n */\n static zeros(t) {\n return new this(t);\n }\n /**\n * @param diagonalSize\n * @return {SymmetricMatrix}\n */\n static ones(t) {\n return new this(t).fill(1);\n }\n clone() {\n const t = new Jt(this.diagonalSize);\n for (const [e, n, i] of this.upperRightEntries())\n t.set(e, n, i);\n return t;\n }\n toMatrix() {\n return new _(this);\n }\n get(t, e) {\n return ht(this, K).get(t, e);\n }\n set(t, e, n) {\n return ht(this, K).set(t, e, n), ht(this, K).set(e, t, n), this;\n }\n removeCross(t) {\n return ht(this, K).removeRow(t), ht(this, K).removeColumn(t), this;\n }\n addCross(t, e) {\n e === void 0 && (e = t, t = this.diagonalSize);\n const n = e.slice();\n return n.splice(t, 1), ht(this, K).addRow(t, n), ht(this, K).addColumn(t, e), this;\n }\n /**\n * @param {Mask[]} mask\n */\n applyMask(t) {\n if (t.length !== this.diagonalSize)\n throw new RangeError(\"Mask size do not match with matrix size\");\n const e = [];\n for (const [n, i] of t.entries())\n i || e.push(n);\n e.reverse();\n for (const n of e)\n this.removeCross(n);\n return this;\n }\n /**\n * Compact format upper-right corner of matrix\n * iterate from left to right, from top to bottom.\n *\n * ```\n * A B C D\n * A 1 2 3 4\n * B 2 5 6 7\n * C 3 6 8 9\n * D 4 7 9 10\n * ```\n *\n * will return compact 1D array `[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]`\n *\n * length is S(i=0, n=sideSize) => 10 for a 4 sideSized matrix\n *\n * @returns {number[]}\n */\n toCompact() {\n const { diagonalSize: t } = this, e = new Array(t * (t + 1) / 2);\n for (let n = 0, i = 0, o = 0; o < e.length; o++)\n e[o] = this.get(i, n), ++n >= t && (n = ++i);\n return e;\n }\n /**\n * @param {number[]} compact\n * @return {SymmetricMatrix}\n */\n static fromCompact(t) {\n const e = t.length, n = (Math.sqrt(8 * e + 1) - 1) / 2;\n if (!Number.isInteger(n))\n throw new TypeError(\n `This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(\n t\n )}`\n );\n const i = new Jt(n);\n for (let o = 0, l = 0, h = 0; h < e; h++)\n i.set(o, l, t[h]), ++o >= n && (o = ++l);\n return i;\n }\n /**\n * half iterator upper-right-corner from left to right, from top to bottom\n * yield [row, column, value]\n *\n * @returns {Generator<[number, number, number], void, void>}\n */\n *upperRightEntries() {\n for (let t = 0, e = 0; t < this.diagonalSize; void 0) {\n const n = this.get(t, e);\n yield [t, e, n], ++e >= this.diagonalSize && (e = ++t);\n }\n }\n /**\n * half iterator upper-right-corner from left to right, from top to bottom\n * yield value\n *\n * @returns {Generator<[number, number, number], void, void>}\n */\n *upperRightValues() {\n for (let t = 0, e = 0; t < this.diagonalSize; void 0)\n yield this.get(t, e), ++e >= this.diagonalSize && (e = ++t);\n }\n};\nK = new WeakMap();\nlet pt = Jt;\npt.prototype.klassType = \"SymmetricMatrix\";\nclass te extends pt {\n /**\n * not the same as matrix.isSymmetric()\n * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n *\n * @param value\n * @returns {boolean}\n */\n static isDistanceMatrix(s) {\n return pt.isSymmetricMatrix(s) && s.klassSubType === \"DistanceMatrix\";\n }\n constructor(s) {\n if (super(s), !this.isDistance())\n throw new TypeError(\"Provided arguments do no produce a distance matrix\");\n }\n set(s, t, e) {\n return s === t && (e = 0), super.set(s, t, e);\n }\n addCross(s, t) {\n return t === void 0 && (t = s, s = this.diagonalSize), t = t.slice(), t[s] = 0, super.addCross(s, t);\n }\n toSymmetricMatrix() {\n return new pt(this);\n }\n clone() {\n const s = new te(this.diagonalSize);\n for (const [t, e, n] of this.upperRightEntries())\n t !== e && s.set(t, e, n);\n return s;\n }\n /**\n * Compact format upper-right corner of matrix\n * no diagonal (only zeros)\n * iterable from left to right, from top to bottom.\n *\n * ```\n * A B C D\n * A 0 1 2 3\n * B 1 0 4 5\n * C 2 4 0 6\n * D 3 5 6 0\n * ```\n *\n * will return compact 1D array `[1, 2, 3, 4, 5, 6]`\n *\n * length is S(i=0, n=sideSize-1) => 6 for a 4 side sized matrix\n *\n * @returns {number[]}\n */\n toCompact() {\n const { diagonalSize: s } = this, t = (s - 1) * s / 2, e = new Array(t);\n for (let n = 1, i = 0, o = 0; o < e.length; o++)\n e[o] = this.get(i, n), ++n >= s && (n = ++i + 1);\n return e;\n }\n /**\n * @param {number[]} compact\n */\n static fromCompact(s) {\n const t = s.length;\n if (t === 0)\n return new this(0);\n const e = (Math.sqrt(8 * t + 1) + 1) / 2;\n if (!Number.isInteger(e))\n throw new TypeError(\n `This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(\n s\n )}`\n );\n const n = new this(e);\n for (let i = 1, o = 0, l = 0; l < t; l++)\n n.set(i, o, s[l]), ++i >= e && (i = ++o + 1);\n return n;\n }\n}\nte.prototype.klassSubType = \"DistanceMatrix\";\nclass ft extends V {\n constructor(s, t, e) {\n super(), this.matrix = s, this.rows = t, this.columns = e;\n }\n}\nclass Cs extends ft {\n constructor(s, t) {\n lt(s, t), super(s, s.rows, 1), this.column = t;\n }\n set(s, t, e) {\n return this.matrix.set(s, this.column, e), this;\n }\n get(s) {\n return this.matrix.get(s, this.column);\n }\n}\nclass qs extends ft {\n constructor(s, t) {\n we(s, t), super(s, s.rows, t.length), this.columnIndices = t;\n }\n set(s, t, e) {\n return this.matrix.set(s, this.columnIndices[t], e), this;\n }\n get(s, t) {\n return this.matrix.get(s, this.columnIndices[t]);\n }\n}\nclass Fs extends ft {\n constructor(s) {\n super(s, s.rows, s.columns);\n }\n set(s, t, e) {\n return this.matrix.set(s, this.columns - t - 1, e), this;\n }\n get(s, t) {\n return this.matrix.get(s, this.columns - t - 1);\n }\n}\nclass xs extends ft {\n constructor(s) {\n super(s, s.rows, s.columns);\n }\n set(s, t, e) {\n return this.matrix.set(this.rows - s - 1, t, e), this;\n }\n get(s, t) {\n return this.matrix.get(this.rows - s - 1, t);\n }\n}\nclass As extends ft {\n constructor(s, t) {\n ot(s, t), super(s, 1, s.columns), this.row = t;\n }\n set(s, t, e) {\n return this.matrix.set(this.row, t, e), this;\n }\n get(s, t) {\n return this.matrix.get(this.row, t);\n }\n}\nclass Vs extends ft {\n constructor(s, t) {\n ge(s, t), super(s, t.length, s.columns), this.rowIndices = t;\n }\n set(s, t, e) {\n return this.matrix.set(this.rowIndices[s], t, e), this;\n }\n get(s, t) {\n return this.matrix.get(this.rowIndices[s], t);\n }\n}\nclass Gt extends ft {\n constructor(s, t, e) {\n ge(s, t), we(s, e), super(s, t.length, e.length), this.rowIndices = t, this.columnIndices = e;\n }\n set(s, t, e) {\n return this.matrix.set(\n this.rowIndices[s],\n this.columnIndices[t],\n e\n ), this;\n }\n get(s, t) {\n return this.matrix.get(\n this.rowIndices[s],\n this.columnIndices[t]\n );\n }\n}\nclass Ns extends ft {\n constructor(s, t, e, n, i) {\n ae(s, t, e, n, i), super(s, e - t + 1, i - n + 1), this.startRow = t, this.startColumn = n;\n }\n set(s, t, e) {\n return this.matrix.set(\n this.startRow + s,\n this.startColumn + t,\n e\n ), this;\n }\n get(s, t) {\n return this.matrix.get(\n this.startRow + s,\n this.startColumn + t\n );\n }\n}\nclass $s extends ft {\n constructor(s) {\n super(s, s.columns, s.rows);\n }\n set(s, t, e) {\n return this.matrix.set(t, s, e), this;\n }\n get(s, t) {\n return this.matrix.get(t, s);\n }\n}\nclass Ae extends V {\n constructor(s, t = {}) {\n const { rows: e = 1 } = t;\n if (s.length % e !== 0)\n throw new Error(\"the data length is not divisible by the number of rows\");\n super(), this.rows = e, this.columns = s.length / e, this.data = s;\n }\n set(s, t, e) {\n let n = this._calculateIndex(s, t);\n return this.data[n] = e, this;\n }\n get(s, t) {\n let e = this._calculateIndex(s, t);\n return this.data[e];\n }\n _calculateIndex(s, t) {\n return s * this.columns + t;\n }\n}\nclass rt extends V {\n constructor(s) {\n super(), this.data = s, this.rows = s.length, this.columns = s[0].length;\n }\n set(s, t, e) {\n return this.data[s][t] = e, this;\n }\n get(s, t) {\n return this.data[s][t];\n }\n}\nfunction Ls(r, s) {\n if (st.isAnyArray(r))\n return r[0] && st.isAnyArray(r[0]) ? new rt(r) : new Ae(r, s);\n throw new Error(\"the argument is not an array\");\n}\nclass ee {\n constructor(s) {\n s = rt.checkMatrix(s);\n let t = s.clone(), e = t.rows, n = t.columns, i = new Float64Array(e), o = 1, l, h, a, u, c, g, d, w, p;\n for (l = 0; l < e; l++)\n i[l] = l;\n for (w = new Float64Array(e), h = 0; h < n; h++) {\n for (l = 0; l < e; l++)\n w[l] = t.get(l, h);\n for (l = 0; l < e; l++) {\n for (p = Math.min(l, h), c = 0, a = 0; a < p; a++)\n c += t.get(l, a) * w[a];\n w[l] -= c, t.set(l, h, w[l]);\n }\n for (u = h, l = h + 1; l < e; l++)\n Math.abs(w[l]) > Math.abs(w[u]) && (u = l);\n if (u !== h) {\n for (a = 0; a < n; a++)\n g = t.get(u, a), t.set(u, a, t.get(h, a)), t.set(h, a, g);\n d = i[u], i[u] = i[h], i[h] = d, o = -o;\n }\n if (h < e && t.get(h, h) !== 0)\n for (l = h + 1; l < e; l++)\n t.set(l, h, t.get(l, h) / t.get(h, h));\n }\n this.LU = t, this.pivotVector = i, this.pivotSign = o;\n }\n isSingular() {\n let s = this.LU, t = s.columns;\n for (let e = 0; e < t; e++)\n if (s.get(e, e) === 0)\n return !0;\n return !1;\n }\n solve(s) {\n s = _.checkMatrix(s);\n let t = this.LU;\n if (t.rows !== s.rows)\n throw new Error(\"Invalid matrix dimensions\");\n if (this.isSingular())\n throw new Error(\"LU matrix is singular\");\n let n = s.columns, i = s.subMatrixRow(this.pivotVector, 0, n - 1), o = t.columns, l, h, a;\n for (a = 0; a < o; a++)\n for (l = a + 1; l < o; l++)\n for (h = 0; h < n; h++)\n i.set(l, h, i.get(l, h) - i.get(a, h) * t.get(l, a));\n for (a = o - 1; a >= 0; a--) {\n for (h = 0; h < n; h++)\n i.set(a, h, i.get(a, h) / t.get(a, a));\n for (l = 0; l < a; l++)\n for (h = 0; h < n; h++)\n i.set(l, h, i.get(l, h) - i.get(a, h) * t.get(l, a));\n }\n return i;\n }\n get determinant() {\n let s = this.LU;\n if (!s.isSquare())\n throw new Error(\"Matrix must be square\");\n let t = this.pivotSign, e = s.columns;\n for (let n = 0; n < e; n++)\n t *= s.get(n, n);\n return t;\n }\n get lowerTriangularMatrix() {\n let s = this.LU, t = s.rows, e = s.columns, n = new _(t, e);\n for (let i = 0; i < t; i++)\n for (let o = 0; o < e; o++)\n i > o ? n.set(i, o, s.get(i, o)) : i === o ? n.set(i, o, 1) : n.set(i, o, 0);\n return n;\n }\n get upperTriangularMatrix() {\n let s = this.LU, t = s.rows, e = s.columns, n = new _(t, e);\n for (let i = 0; i < t; i++)\n for (let o = 0; o < e; o++)\n i <= o ? n.set(i, o, s.get(i, o)) : n.set(i, o, 0);\n return n;\n }\n get pivotPermutationVector() {\n return Array.from(this.pivotVector);\n }\n}\nfunction ut(r, s) {\n let t = 0;\n return Math.abs(r) > Math.abs(s) ? (t = s / r, Math.abs(r) * Math.sqrt(1 + t * t)) : s !== 0 ? (t = r / s, Math.abs(s) * Math.sqrt(1 + t * t)) : 0;\n}\nclass pe {\n constructor(s) {\n s = rt.checkMatrix(s);\n let t = s.clone(), e = s.rows, n = s.columns, i = new Float64Array(n), o, l, h, a;\n for (h = 0; h < n; h++) {\n let u = 0;\n for (o = h; o < e; o++)\n u = ut(u, t.get(o, h));\n if (u !== 0) {\n for (t.get(h, h) < 0 && (u = -u), o = h; o < e; o++)\n t.set(o, h, t.get(o, h) / u);\n for (t.set(h, h, t.get(h, h) + 1), l = h + 1; l < n; l++) {\n for (a = 0, o = h; o < e; o++)\n a += t.get(o, h) * t.get(o, l);\n for (a = -a / t.get(h, h), o = h; o < e; o++)\n t.set(o, l, t.get(o, l) + a * t.get(o, h));\n }\n }\n i[h] = -u;\n }\n this.QR = t, this.Rdiag = i;\n }\n solve(s) {\n s = _.checkMatrix(s);\n let t = this.QR, e = t.rows;\n if (s.rows !== e)\n throw new Error(\"Matrix row dimensions must agree\");\n if (!this.isFullRank())\n throw new Error(\"Matrix is rank deficient\");\n let n = s.columns, i = s.clone(), o = t.columns, l, h, a, u;\n for (a = 0; a < o; a++)\n for (h = 0; h < n; h++) {\n for (u = 0, l = a; l < e; l++)\n u += t.get(l, a) * i.get(l, h);\n for (u = -u / t.get(a, a), l = a; l < e; l++)\n i.set(l, h, i.get(l, h) + u * t.get(l, a));\n }\n for (a = o - 1; a >= 0; a--) {\n for (h = 0; h < n; h++)\n i.set(a, h, i.get(a, h) / this.Rdiag[a]);\n for (l = 0; l < a; l++)\n for (h = 0; h < n; h++)\n i.set(l, h, i.get(l, h) - i.get(a, h) * t.get(l, a));\n }\n return i.subMatrix(0, o - 1, 0, n - 1);\n }\n isFullRank() {\n let s = this.QR.columns;\n for (let t = 0; t < s; t++)\n if (this.Rdiag[t] === 0)\n return !1;\n return !0;\n }\n get upperTriangularMatrix() {\n let s = this.QR, t = s.columns, e = new _(t, t), n, i;\n for (n = 0; n < t; n++)\n for (i = 0; i < t; i++)\n n < i ? e.set(n, i, s.get(n, i)) : n === i ? e.set(n, i, this.Rdiag[n]) : e.set(n, i, 0);\n return e;\n }\n get orthogonalMatrix() {\n let s = this.QR, t = s.rows, e = s.columns, n = new _(t, e), i, o, l, h;\n for (l = e - 1; l >= 0; l--) {\n for (i = 0; i < t; i++)\n n.set(i, l, 0);\n for (n.set(l, l, 1), o = l; o < e; o++)\n if (s.get(l, l) !== 0) {\n for (h = 0, i = l; i < t; i++)\n h += s.get(i, l) * n.get(i, o);\n for (h = -h / s.get(l, l), i = l; i < t; i++)\n n.set(i, o, n.get(i, o) + h * s.get(i, l));\n }\n }\n return n;\n }\n}\nclass vt {\n constructor(s, t = {}) {\n if (s = rt.checkMatrix(s), s.isEmpty())\n throw new Error(\"Matrix must be non-empty\");\n let e = s.rows, n = s.columns;\n const {\n computeLeftSingularVectors: i = !0,\n computeRightSingularVectors: o = !0,\n autoTranspose: l = !1\n } = t;\n let h = !!i, a = !!o, u = !1, c;\n if (e < n)\n if (!l)\n c = s.clone(), console.warn(\n \"Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose\"\n );\n else {\n c = s.transpose(), e = c.rows, n = c.columns, u = !0;\n let m = h;\n h = a, a = m;\n }\n else\n c = s.clone();\n let g = Math.min(e, n), d = Math.min(e + 1, n), w = new Float64Array(d), p = new _(e, g), P = new _(n, n), f = new Float64Array(n), M = new Float64Array(e), E = new Float64Array(d);\n for (let m = 0; m < d; m++) E[m] = m;\n let R = Math.min(e - 1, n), v = Math.max(0, Math.min(n - 2, e)), L = Math.max(R, v);\n for (let m = 0; m < L; m++) {\n if (m < R) {\n w[m] = 0;\n for (let b = m; b < e; b++)\n w[m] = ut(w[m], c.get(b, m));\n if (w[m] !== 0) {\n c.get(m, m) < 0 && (w[m] = -w[m]);\n for (let b = m; b < e; b++)\n c.set(b, m, c.get(b, m) / w[m]);\n c.set(m, m, c.get(m, m) + 1);\n }\n w[m] = -w[m];\n }\n for (let b = m + 1; b < n; b++) {\n if (m < R && w[m] !== 0) {\n let j = 0;\n for (let y = m; y < e; y++)\n j += c.get(y, m) * c.get(y, b);\n j = -j / c.get(m, m);\n for (let y = m; y < e; y++)\n c.set(y, b, c.get(y, b) + j * c.get(y, m));\n }\n f[b] = c.get(m, b);\n }\n if (h && m < R)\n for (let b = m; b < e; b++)\n p.set(b, m, c.get(b, m));\n if (m < v) {\n f[m] = 0;\n for (let b = m + 1; b < n; b++)\n f[m] = ut(f[m], f[b]);\n if (f[m] !== 0) {\n f[m + 1] < 0 && (f[m] = 0 - f[m]);\n for (let b = m + 1; b < n; b++)\n f[b] /= f[m];\n f[m + 1] += 1;\n }\n if (f[m] = -f[m], m + 1 < e && f[m] !== 0) {\n for (let b = m + 1; b < e; b++)\n M[b] = 0;\n for (let b = m + 1; b < e; b++)\n for (let j = m + 1; j < n; j++)\n M[b] += f[j] * c.get(b, j);\n for (let b = m + 1; b < n; b++) {\n let j = -f[b] / f[m + 1];\n for (let y = m + 1; y < e; y++)\n c.set(y, b, c.get(y, b) + j * M[y]);\n }\n }\n if (a)\n for (let b = m + 1; b < n; b++)\n P.set(b, m, f[b]);\n }\n }\n let S = Math.min(n, e + 1);\n if (R < n && (w[R] = c.get(R, R)), e < S && (w[S - 1] = 0), v + 1 < S && (f[v] = c.get(v, S - 1)), f[S - 1] = 0, h) {\n for (let m = R; m < g; m++) {\n for (let b = 0; b < e; b++)\n p.set(b, m, 0);\n p.set(m, m, 1);\n }\n for (let m = R - 1; m >= 0; m--)\n if (w[m] !== 0) {\n for (let b = m + 1; b < g; b++) {\n let j = 0;\n for (let y = m; y < e; y++)\n j += p.get(y, m) * p.get(y, b);\n j = -j / p.get(m, m);\n for (let y = m; y < e; y++)\n p.set(y, b, p.get(y, b) + j * p.get(y, m));\n }\n for (let b = m; b < e; b++)\n p.set(b, m, -p.get(b, m));\n p.set(m, m, 1 + p.get(m, m));\n for (let b = 0; b < m - 1; b++)\n p.set(b, m, 0);\n } else {\n for (let b = 0; b < e; b++)\n p.set(b, m, 0);\n p.set(m, m, 1);\n }\n }\n if (a)\n for (let m = n - 1; m >= 0; m--) {\n if (m < v && f[m] !== 0)\n for (let b = m + 1; b < n; b++) {\n let j = 0;\n for (let y = m + 1; y < n; y++)\n j += P.get(y, m) * P.get(y, b);\n j = -j / P.get(m + 1, m);\n for (let y = m + 1; y < n; y++)\n P.set(y, b, P.get(y, b) + j * P.get(y, m));\n }\n for (let b = 0; b < n; b++)\n P.set(b, m, 0);\n P.set(m, m, 1);\n }\n let k = S - 1, D = Number.EPSILON;\n for (; S > 0; ) {\n let m, b;\n for (m = S - 2; m >= -1 && m !== -1; m--) {\n const j = Number.MIN_VALUE + D * Math.abs(w[m] + Math.abs(w[m + 1]));\n if (Math.abs(f[m]) <= j || Number.isNaN(f[m])) {\n f[m] = 0;\n break;\n }\n }\n if (m === S - 2)\n b = 4;\n else {\n let j;\n for (j = S - 1; j >= m && j !== m; j--) {\n let y = (j !== S ? Math.abs(f[j]) : 0) + (j !== m + 1 ? Math.abs(f[j - 1]) : 0);\n if (Math.abs(w[j]) <= D * y) {\n w[j] = 0;\n break;\n }\n }\n j === m ? b = 3 : j === S - 1 ? b = 1 : (b = 2, m = j);\n }\n switch (m++, b) {\n case 1: {\n let j = f[S - 2];\n f[S - 2] = 0;\n for (let y = S - 2; y >= m; y--) {\n let C = ut(w[y], j), F = w[y] / C, I = j / C;\n if (w[y] = C, y !== m && (j = -I * f[y - 1], f[y - 1] = F * f[y - 1]), a)\n for (let B = 0; B < n; B++)\n C = F * P.get(B, y) + I * P.get(B, S - 1), P.set(B, S - 1, -I * P.get(B, y) + F * P.get(B, S - 1)), P.set(B, y, C);\n }\n break;\n }\n case 2: {\n let j = f[m - 1];\n f[m - 1] = 0;\n for (let y = m; y < S; y++) {\n let C = ut(w[y], j), F = w[y] / C, I = j / C;\n if (w[y] = C, j = -I * f[y], f[y] = F * f[y], h)\n for (let B = 0; B < e; B++)\n C = F * p.get(B, y) + I * p.get(B, m - 1), p.set(B, m - 1, -I * p.get(B, y) + F * p.get(B, m - 1)), p.set(B, y, C);\n }\n break;\n }\n case 3: {\n const j = Math.max(\n Math.abs(w[S - 1]),\n Math.abs(w[S - 2]),\n Math.abs(f[S - 2]),\n Math.abs(w[m]),\n Math.abs(f[m])\n ), y = w[S - 1] / j, C = w[S - 2] / j, F = f[S - 2] / j, I = w[m] / j, B = f[m] / j, x = ((C + y) * (C - y) + F * F) / 2, N = y * F * (y * F);\n let A = 0;\n (x !== 0 || N !== 0) && (x < 0 ? A = 0 - Math.sqrt(x * x + N) : A = Math.sqrt(x * x + N), A = N / (x + A));\n let O = (I + y) * (I - y) + A, U = I * B;\n for (let T = m; T < S - 1; T++) {\n let z = ut(O, U);\n z === 0 && (z = Number.MIN_VALUE);\n let X = O / z, G = U / z;\n if (T !== m && (f[T - 1] = z), O = X * w[T] + G * f[T], f[T] = X * f[T] - G * w[T], U = G * w[T + 1], w[T + 1] = X * w[T + 1], a)\n for (let W = 0; W < n; W++)\n z = X * P.get(W, T) + G * P.get(W, T + 1), P.set(W, T + 1, -G * P.get(W, T) + X * P.get(W, T + 1)), P.set(W, T, z);\n if (z = ut(O, U), z === 0 && (z = Number.MIN_VALUE), X = O / z, G = U / z, w[T] = z, O = X * f[T] + G * w[T + 1], w[T + 1] = -G * f[T] + X * w[T + 1], U = G * f[T + 1], f[T + 1] = X * f[T + 1], h && T < e - 1)\n for (let W = 0; W < e; W++)\n z = X * p.get(W, T) + G * p.get(W, T + 1), p.set(W, T + 1, -G * p.get(W, T) + X * p.get(W, T + 1)), p.set(W, T, z);\n }\n f[S - 2] = O;\n break;\n }\n case 4: {\n if (w[m] <= 0 && (w[m] = w[m] < 0 ? -w[m] : 0, a))\n for (let j = 0; j <= k; j++)\n P.set(j, m, -P.get(j, m));\n for (; m < k && !(w[m] >= w[m + 1]); ) {\n let j = w[m];\n if (w[m] = w[m + 1], w[m + 1] = j, a && m < n - 1)\n for (let y = 0; y < n; y++)\n j = P.get(y, m + 1), P.set(y, m + 1, P.get(y, m)), P.set(y, m, j);\n if (h && m < e - 1)\n for (let y = 0; y < e; y++)\n j = p.get(y, m + 1), p.set(y, m + 1, p.get(y, m)), p.set(y, m, j);\n m++;\n }\n S--;\n break;\n }\n }\n }\n if (u) {\n let m = P;\n P = p, p = m;\n }\n this.m = e, this.n = n, this.s = w, this.U = p, this.V = P;\n }\n solve(s) {\n let t = s, e = this.threshold, n = this.s.length, i = _.zeros(n, n);\n for (let g = 0; g < n; g++)\n Math.abs(this.s[g]) <= e ? i.set(g, g, 0) : i.set(g, g, 1 / this.s[g]);\n let o = this.U, l = this.rightSingularVectors, h = l.mmul(i), a = l.rows, u = o.rows, c = _.zeros(a, u);\n for (let g = 0; g < a; g++)\n for (let d = 0; d < u; d++) {\n let w = 0;\n for (let p = 0; p < n; p++)\n w += h.get(g, p) * o.get(d, p);\n c.set(g, d, w);\n }\n return c.mmul(t);\n }\n solveForDiagonal(s) {\n return this.solve(_.diag(s));\n }\n inverse() {\n let s = this.V, t = this.threshold, e = s.rows, n = s.columns, i = new _(e, this.s.length);\n for (let u = 0; u < e; u++)\n for (let c = 0; c < n; c++)\n Math.abs(this.s[c]) > t && i.set(u, c, s.get(u, c) / this.s[c]);\n let o = this.U, l = o.rows, h = o.columns, a = new _(e, l);\n for (let u = 0; u < e; u++)\n for (let c = 0; c < l; c++) {\n let g = 0;\n for (let d = 0; d < h; d++)\n g += i.get(u, d) * o.get(c, d);\n a.set(u, c, g);\n }\n return a;\n }\n get condition() {\n return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n }\n get norm2() {\n return this.s[0];\n }\n get rank() {\n let s = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON, t = 0, e = this.s;\n for (let n = 0, i = e.length; n < i; n++)\n e[n] > s && t++;\n return t;\n }\n get diagonal() {\n return Array.from(this.s);\n }\n get threshold() {\n return Number.EPSILON / 2 * Math.max(this.m, this.n) * this.s[0];\n }\n get leftSingularVectors() {\n return this.U;\n }\n get rightSingularVectors() {\n return this.V;\n }\n get diagonalMatrix() {\n return _.diag(this.s);\n }\n}\nfunction Ds(r, s = !1) {\n return r = rt.checkMatrix(r), s ? new vt(r).inverse() : Ve(r, _.eye(r.rows));\n}\nfunction Ve(r, s, t = !1) {\n return r = rt.checkMatrix(r), s = rt.checkMatrix(s), t ? new vt(r).solve(s) : r.isSquare() ? new ee(r).solve(s) : new pe(r).solve(s);\n}\nfunction Xt(r) {\n if (r = _.checkMatrix(r), r.isSquare()) {\n if (r.columns === 0)\n return 1;\n let s, t, e, n;\n if (r.columns === 2)\n return s = r.get(0, 0), t = r.get(0, 1), e = r.get(1, 0), n = r.get(1, 1), s * n - t * e;\n if (r.columns === 3) {\n let i, o, l;\n return i = new Gt(r, [1, 2], [1, 2]), o = new Gt(r, [1, 2], [0, 2]), l = new Gt(r, [1, 2], [0, 1]), s = r.get(0, 0), t = r.get(0, 1), e = r.get(0, 2), s * Xt(i) - t * Xt(o) + e * Xt(l);\n } else\n return new ee(r).determinant;\n } else\n throw Error(\"determinant can only be calculated for a square matrix\");\n}\nfunction zs(r, s) {\n let t = [];\n for (let e = 0; e < r; e++)\n e !== s && t.push(e);\n return t;\n}\nfunction Os(r, s, t, e = 1e-9, n = 1e-9) {\n if (r > n)\n return new Array(s.rows + 1).fill(0);\n {\n let i = s.addRow(t, [0]);\n for (let o = 0; o < i.rows; o++)\n Math.abs(i.get(o, 0)) < e && i.set(o, 0, 0);\n return i.to1DArray();\n }\n}\nfunction Bs(r, s = {}) {\n const { thresholdValue: t = 1e-9, thresholdError: e = 1e-9 } = s;\n r = _.checkMatrix(r);\n let n = r.rows, i = new _(n, n);\n for (let o = 0; o < n; o++) {\n let l = _.columnVector(r.getRow(o)), h = r.subMatrixRow(zs(n, o)).transpose(), u = new vt(h).solve(l), c = _.sub(l, h.mmul(u)).abs().max();\n i.setRow(\n o,\n Os(c, u, o, t, e)\n );\n }\n return i;\n}\nfunction Us(r, s = Number.EPSILON) {\n if (r = _.checkMatrix(r), r.isEmpty())\n return r.transpose();\n let t = new vt(r, { autoTranspose: !0 }), e = t.leftSingularVectors, n = t.rightSingularVectors, i = t.diagonal;\n for (let o = 0; o < i.length; o++)\n Math.abs(i[o]) > s ? i[o] = 1 / i[o] : i[o] = 0;\n return n.mmul(_.diag(i).mmul(e.transpose()));\n}\nfunction Ys(r, s = r, t = {}) {\n r = new _(r);\n let e = !1;\n if (typeof s == \"object\" && !_.isMatrix(s) && !st.isAnyArray(s) ? (t = s, s = r, e = !0) : s = new _(s), r.rows !== s.rows)\n throw new TypeError(\"Both matrices must have the same number of rows\");\n const { center: n = !0 } = t;\n n && (r = r.center(\"column\"), e || (s = s.center(\"column\")));\n const i = r.transpose().mmul(s);\n for (let o = 0; o < i.rows; o++)\n for (let l = 0; l < i.columns; l++)\n i.set(o, l, i.get(o, l) * (1 / (r.rows - 1)));\n return i;\n}\nfunction Ws(r, s = r, t = {}) {\n r = new _(r);\n let e = !1;\n if (typeof s == \"object\" && !_.isMatrix(s) && !st.isAnyArray(s) ? (t = s, s = r, e = !0) : s = new _(s), r.rows !== s.rows)\n throw new TypeError(\"Both matrices must have the same number of rows\");\n const { center: n = !0, scale: i = !0 } = t;\n n && (r.center(\"column\"), e || s.center(\"column\")), i && (r.scale(\"column\"), e || s.scale(\"column\"));\n const o = r.standardDeviation(\"column\", { unbiased: !0 }), l = e ? o : s.standardDeviation(\"column\", { unbiased: !0 }), h = r.transpose().mmul(s);\n for (let a = 0; a < h.rows; a++)\n for (let u = 0; u < h.columns; u++)\n h.set(\n a,\n u,\n h.get(a, u) * (1 / (o[a] * l[u])) * (1 / (r.rows - 1))\n );\n return h;\n}\nlet Ne = class {\n constructor(s, t = {}) {\n const { assumeSymmetric: e = !1 } = t;\n if (s = rt.checkMatrix(s), !s.isSquare())\n throw new Error(\"Matrix is not a square matrix\");\n if (s.isEmpty())\n throw new Error(\"Matrix must be non-empty\");\n let n = s.columns, i = new _(n, n), o = new Float64Array(n), l = new Float64Array(n), h = s, a, u, c = !1;\n if (e ? c = !0 : c = s.isSymmetric(), c) {\n for (a = 0; a < n; a++)\n for (u = 0; u < n; u++)\n i.set(a, u, h.get(a, u));\n Qs(n, l, o, i), Gs(n, l, o, i);\n } else {\n let g = new _(n, n), d = new Float64Array(n);\n for (u = 0; u < n; u++)\n for (a = 0; a < n; a++)\n g.set(a, u, h.get(a, u));\n Xs(n, g, d, i), Zs(n, l, o, i, g);\n }\n this.n = n, this.e = l, this.d = o, this.V = i;\n }\n get realEigenvalues() {\n return Array.from(this.d);\n }\n get imaginaryEigenvalues() {\n return Array.from(this.e);\n }\n get eigenvectorMatrix() {\n return this.V;\n }\n get diagonalMatrix() {\n let s = this.n, t = this.e, e = this.d, n = new _(s, s), i, o;\n for (i = 0; i < s; i++) {\n for (o = 0; o < s; o++)\n n.set(i, o, 0);\n n.set(i, i, e[i]), t[i] > 0 ? n.set(i, i + 1, t[i]) : t[i] < 0 && n.set(i, i - 1, t[i]);\n }\n return n;\n }\n};\nfunction Qs(r, s, t, e) {\n let n, i, o, l, h, a, u, c;\n for (h = 0; h < r; h++)\n t[h] = e.get(r - 1, h);\n for (l = r - 1; l > 0; l--) {\n for (c = 0, o = 0, a = 0; a < l; a++)\n c = c + Math.abs(t[a]);\n if (c === 0)\n for (s[l] = t[l - 1], h = 0; h < l; h++)\n t[h] = e.get(l - 1, h), e.set(l, h, 0), e.set(h, l, 0);\n else {\n for (a = 0; a < l; a++)\n t[a] /= c, o += t[a] * t[a];\n for (n = t[l - 1], i = Math.sqrt(o), n > 0 && (i = -i), s[l] = c * i, o = o - n * i, t[l - 1] = n - i, h = 0; h < l; h++)\n s[h] = 0;\n for (h = 0; h < l; h++) {\n for (n = t[h], e.set(h, l, n), i = s[h] + e.get(h, h) * n, a = h + 1; a <= l - 1; a++)\n i += e.get(a, h) * t[a], s[a] += e.get(a, h) * n;\n s[h] = i;\n }\n for (n = 0, h = 0; h < l; h++)\n s[h] /= o, n += s[h] * t[h];\n for (u = n / (o + o), h = 0; h < l; h++)\n s[h] -= u * t[h];\n for (h = 0; h < l; h++) {\n for (n = t[h], i = s[h], a = h; a <= l - 1; a++)\n e.set(a, h, e.get(a, h) - (n * s[a] + i * t[a]));\n t[h] = e.get(l - 1, h), e.set(l, h, 0);\n }\n }\n t[l] = o;\n }\n for (l = 0; l < r - 1; l++) {\n if (e.set(r - 1, l, e.get(l, l)), e.set(l, l, 1), o = t[l + 1], o !== 0) {\n for (a = 0; a <= l; a++)\n t[a] = e.get(a, l + 1) / o;\n for (h = 0; h <= l; h++) {\n for (i = 0, a = 0; a <= l; a++)\n i += e.get(a, l + 1) * e.get(a, h);\n for (a = 0; a <= l; a++)\n e.set(a, h, e.get(a, h) - i * t[a]);\n }\n }\n for (a = 0; a <= l; a++)\n e.set(a, l + 1, 0);\n }\n for (h = 0; h < r; h++)\n t[h] = e.get(r - 1, h), e.set(r - 1, h, 0);\n e.set(r - 1, r - 1, 1), s[0] = 0;\n}\nfunction Gs(r, s, t, e) {\n let n, i, o, l, h, a, u, c, g, d, w, p, P, f, M, E;\n for (o = 1; o < r; o++)\n s[o - 1] = s[o];\n s[r - 1] = 0;\n let R = 0, v = 0, L = Number.EPSILON;\n for (a = 0; a < r; a++) {\n for (v = Math.max(v, Math.abs(t[a]) + Math.abs(s[a])), u = a; u < r && !(Math.abs(s[u]) <= L * v); )\n u++;\n if (u > a)\n do {\n for (n = t[a], c = (t[a + 1] - n) / (2 * s[a]), g = ut(c, 1), c < 0 && (g = -g), t[a] = s[a] / (c + g), t[a + 1] = s[a] * (c + g), d = t[a + 1], i = n - t[a], o = a + 2; o < r; o++)\n t[o] -= i;\n for (R = R + i, c = t[u], w = 1, p = w, P = w, f = s[a + 1], M = 0, E = 0, o = u - 1; o >= a; o--)\n for (P = p, p = w, E = M, n = w * s[o], i = w * c, g = ut(c, s[o]), s[o + 1] = M * g, M = s[o] / g, w = c / g, c = w * t[o] - M * n, t[o + 1] = i + M * (w * n + M * t[o]), h = 0; h < r; h++)\n i = e.get(h, o + 1), e.set(h, o + 1, M * e.get(h, o) + w * i), e.set(h, o, w * e.get(h, o) - M * i);\n c = -M * E * P * f * s[a] / d, s[a] = M * c, t[a] = w * c;\n } while (Math.abs(s[a]) > L * v);\n t[a] = t[a] + R, s[a] = 0;\n }\n for (o = 0; o < r - 1; o++) {\n for (h = o, c = t[o], l = o + 1; l < r; l++)\n t[l] < c && (h = l, c = t[l]);\n if (h !== o)\n for (t[h] = t[o], t[o] = c, l = 0; l < r; l++)\n c = e.get(l, o), e.set(l, o, e.get(l, h)), e.set(l, h, c);\n }\n}\nfunction Xs(r, s, t, e) {\n let n = 0, i = r - 1, o, l, h, a, u, c, g;\n for (c = n + 1; c <= i - 1; c++) {\n for (g = 0, a = c; a <= i; a++)\n g = g + Math.abs(s.get(a, c - 1));\n if (g !== 0) {\n for (h = 0, a = i; a >= c; a--)\n t[a] = s.get(a, c - 1) / g, h += t[a] * t[a];\n for (l = Math.sqrt(h), t[c] > 0 && (l = -l), h = h - t[c] * l, t[c] = t[c] - l, u = c; u < r; u++) {\n for (o = 0, a = i; a >= c; a--)\n o += t[a] * s.get(a, u);\n for (o = o / h, a = c; a <= i; a++)\n s.set(a, u, s.get(a, u) - o * t[a]);\n }\n for (a = 0; a <= i; a++) {\n for (o = 0, u = i; u >= c; u--)\n o += t[u] * s.get(a, u);\n for (o = o / h, u = c; u <= i; u++)\n s.set(a, u, s.get(a, u) - o * t[u]);\n }\n t[c] = g * t[c], s.set(c, c - 1, g * l);\n }\n }\n for (a = 0; a < r; a++)\n for (u = 0; u < r; u++)\n e.set(a, u, a === u ? 1 : 0);\n for (c = i - 1; c >= n + 1; c--)\n if (s.get(c, c - 1) !== 0) {\n for (a = c + 1; a <= i; a++)\n t[a] = s.get(a, c - 1);\n for (u = c; u <= i; u++) {\n for (l = 0, a = c; a <= i; a++)\n l += t[a] * e.get(a, u);\n for (l = l / t[c] / s.get(c, c - 1), a = c; a <= i; a++)\n e.set(a, u, e.get(a, u) + l * t[a]);\n }\n }\n}\nfunction Zs(r, s, t, e, n) {\n let i = r - 1, o = 0, l = r - 1, h = Number.EPSILON, a = 0, u = 0, c = 0, g = 0, d = 0, w = 0, p = 0, P = 0, f, M, E, R, v, L, S, k, D, m, b, j, y, C, F;\n for (f = 0; f < r; f++)\n for ((f < o || f > l) && (t[f] = n.get(f, f), s[f] = 0), M = Math.max(f - 1, 0); M < r; M++)\n u = u + Math.abs(n.get(f, M));\n for (; i >= o; ) {\n for (R = i; R > o && (w = Math.abs(n.get(R - 1, R - 1)) + Math.abs(n.get(R, R)), w === 0 && (w = u), !(Math.abs(n.get(R, R - 1)) < h * w)); )\n R--;\n if (R === i)\n n.set(i, i, n.get(i, i) + a), t[i] = n.get(i, i), s[i] = 0, i--, P = 0;\n else if (R === i - 1) {\n if (S = n.get(i, i - 1) * n.get(i - 1, i), c = (n.get(i - 1, i - 1) - n.get(i, i)) / 2, g = c * c + S, p = Math.sqrt(Math.abs(g)), n.set(i, i, n.get(i, i) + a), n.set(i - 1, i - 1, n.get(i - 1, i - 1) + a), k = n.get(i, i), g >= 0) {\n for (p = c >= 0 ? c + p : c - p, t[i - 1] = k + p, t[i] = t[i - 1], p !== 0 && (t[i] = k - S / p), s[i - 1] = 0, s[i] = 0, k = n.get(i, i - 1), w = Math.abs(k) + Math.abs(p), c = k / w, g = p / w, d = Math.sqrt(c * c + g * g), c = c / d, g = g / d, M = i - 1; M < r; M++)\n p = n.get(i - 1, M), n.set(i - 1, M, g * p + c * n.get(i, M)), n.set(i, M, g * n.get(i, M) - c * p);\n for (f = 0; f <= i; f++)\n p = n.get(f, i - 1), n.set(f, i - 1, g * p + c * n.get(f, i)), n.set(f, i, g * n.get(f, i) - c * p);\n for (f = o; f <= l; f++)\n p = e.get(f, i - 1), e.set(f, i - 1, g * p + c * e.get(f, i)), e.set(f, i, g * e.get(f, i) - c * p);\n } else\n t[i - 1] = k + c, t[i] = k + c, s[i - 1] = p, s[i] = -p;\n i = i - 2, P = 0;\n } else {\n if (k = n.get(i, i), D = 0, S = 0, R < i && (D = n.get(i - 1, i - 1), S = n.get(i, i - 1) * n.get(i - 1, i)), P === 10) {\n for (a += k, f = o; f <= i; f++)\n n.set(f, f, n.get(f, f) - k);\n w = Math.abs(n.get(i, i - 1)) + Math.abs(n.get(i - 1, i - 2)), k = D = 0.75 * w, S = -0.4375 * w * w;\n }\n if (P === 30 && (w = (D - k) / 2, w = w * w + S, w > 0)) {\n for (w = Math.sqrt(w), D < k && (w = -w), w = k - S / ((D - k) / 2 + w), f = o; f <= i; f++)\n n.set(f, f, n.get(f, f) - w);\n a += w, k = D = S = 0.964;\n }\n for (P = P + 1, v = i - 2; v >= R && (p = n.get(v, v), d = k - p, w = D - p, c = (d * w - S) / n.get(v + 1, v) + n.get(v, v + 1), g = n.get(v + 1, v + 1) - p - d - w, d = n.get(v + 2, v + 1), w = Math.abs(c) + Math.abs(g) + Math.abs(d), c = c / w, g = g / w, d = d / w, !(v === R || Math.abs(n.get(v, v - 1)) * (Math.abs(g) + Math.abs(d)) < h * (Math.abs(c) * (Math.abs(n.get(v - 1, v - 1)) + Math.abs(p) + Math.abs(n.get(v + 1, v + 1)))))); )\n v--;\n for (f = v + 2; f <= i; f++)\n n.set(f, f - 2, 0), f > v + 2 && n.set(f, f - 3, 0);\n for (E = v; E <= i - 1 && (C = E !== i - 1, E !== v && (c = n.get(E, E - 1), g = n.get(E + 1, E - 1), d = C ? n.get(E + 2, E - 1) : 0, k = Math.abs(c) + Math.abs(g) + Math.abs(d), k !== 0 && (c = c / k, g = g / k, d = d / k)), k !== 0); E++)\n if (w = Math.sqrt(c * c + g * g + d * d), c < 0 && (w = -w), w !== 0) {\n for (E !== v ? n.set(E, E - 1, -w * k) : R !== v && n.set(E, E - 1, -n.get(E, E - 1)), c = c + w, k = c / w, D = g / w, p = d / w, g = g / c, d = d / c, M = E; M < r; M++)\n c = n.get(E, M) + g * n.get(E + 1, M), C && (c = c + d * n.get(E + 2, M), n.set(E + 2, M, n.get(E + 2, M) - c * p)), n.set(E, M, n.get(E, M) - c * k), n.set(E + 1, M, n.get(E + 1, M) - c * D);\n for (f = 0; f <= Math.min(i, E + 3); f++)\n c = k * n.get(f, E) + D * n.get(f, E + 1), C && (c = c + p * n.get(f, E + 2), n.set(f, E + 2, n.get(f, E + 2) - c * d)), n.set(f, E, n.get(f, E) - c), n.set(f, E + 1, n.get(f, E + 1) - c * g);\n for (f = o; f <= l; f++)\n c = k * e.get(f, E) + D * e.get(f, E + 1), C && (c = c + p * e.get(f, E + 2), e.set(f, E + 2, e.get(f, E + 2) - c * d)), e.set(f, E, e.get(f, E) - c), e.set(f, E + 1, e.get(f, E + 1) - c * g);\n }\n }\n }\n if (u !== 0) {\n for (i = r - 1; i >= 0; i--)\n if (c = t[i], g = s[i], g === 0)\n for (R = i, n.set(i, i, 1), f = i - 1; f >= 0; f--) {\n for (S = n.get(f, f) - c, d = 0, M = R; M <= i; M++)\n d = d + n.get(f, M) * n.get(M, i);\n if (s[f] < 0)\n p = S, w = d;\n else if (R = f, s[f] === 0 ? n.set(f, i, S !== 0 ? -d / S : -d / (h * u)) : (k = n.get(f, f + 1), D = n.get(f + 1, f), g = (t[f] - c) * (t[f] - c) + s[f] * s[f], L = (k * w - p * d) / g, n.set(f, i, L), n.set(\n f + 1,\n i,\n Math.abs(k) > Math.abs(p) ? (-d - S * L) / k : (-w - D * L) / p\n )), L = Math.abs(n.get(f, i)), h * L * L > 1)\n for (M = f; M <= i; M++)\n n.set(M, i, n.get(M, i) / L);\n }\n else if (g < 0)\n for (R = i - 1, Math.abs(n.get(i, i - 1)) > Math.abs(n.get(i - 1, i)) ? (n.set(i - 1, i - 1, g / n.get(i, i - 1)), n.set(i - 1, i, -(n.get(i, i) - c) / n.get(i, i - 1))) : (F = Wt(0, -n.get(i - 1, i), n.get(i - 1, i - 1) - c, g), n.set(i - 1, i - 1, F[0]), n.set(i - 1, i, F[1])), n.set(i, i - 1, 0), n.set(i, i, 1), f = i - 2; f >= 0; f--) {\n for (m = 0, b = 0, M = R; M <= i; M++)\n m = m + n.get(f, M) * n.get(M, i - 1), b = b + n.get(f, M) * n.get(M, i);\n if (S = n.get(f, f) - c, s[f] < 0)\n p = S, d = m, w = b;\n else if (R = f, s[f] === 0 ? (F = Wt(-m, -b, S, g), n.set(f, i - 1, F[0]), n.set(f, i, F[1])) : (k = n.get(f, f + 1), D = n.get(f + 1, f), j = (t[f] - c) * (t[f] - c) + s[f] * s[f] - g * g, y = (t[f] - c) * 2 * g, j === 0 && y === 0 && (j = h * u * (Math.abs(S) + Math.abs(g) + Math.abs(k) + Math.abs(D) + Math.abs(p))), F = Wt(\n k * d - p * m + g * b,\n k * w - p * b - g * m,\n j,\n y\n ), n.set(f, i - 1, F[0]), n.set(f, i, F[1]), Math.abs(k) > Math.abs(p) + Math.abs(g) ? (n.set(\n f + 1,\n i - 1,\n (-m - S * n.get(f, i - 1) + g * n.get(f, i)) / k\n ), n.set(\n f + 1,\n i,\n (-b - S * n.get(f, i) - g * n.get(f, i - 1)) / k\n )) : (F = Wt(\n -d - D * n.get(f, i - 1),\n -w - D * n.get(f, i),\n p,\n g\n ), n.set(f + 1, i - 1, F[0]), n.set(f + 1, i, F[1]))), L = Math.max(Math.abs(n.get(f, i - 1)), Math.abs(n.get(f, i))), h * L * L > 1)\n for (M = f; M <= i; M++)\n n.set(M, i - 1, n.get(M, i - 1) / L), n.set(M, i, n.get(M, i) / L);\n }\n for (f = 0; f < r; f++)\n if (f < o || f > l)\n for (M = f; M < r; M++)\n e.set(f, M, n.get(f, M));\n for (M = r - 1; M >= o; M--)\n for (f = o; f <= l; f++) {\n for (p = 0, E = o; E <= Math.min(M, l); E++)\n p = p + e.get(f, E) * n.get(E, M);\n e.set(f, M, p);\n }\n }\n}\nfunction Wt(r, s, t, e) {\n let n, i;\n return Math.abs(t) > Math.abs(e) ? (n = e / t, i = t + n * e, [(r + n * s) / i, (s - n * r) / i]) : (n = t / e, i = e + n * t, [(n * r + s) / i, (n * s - r) / i]);\n}\nclass $e {\n constructor(s) {\n if (s = rt.checkMatrix(s), !s.isSymmetric())\n throw new Error(\"Matrix is not symmetric\");\n let t = s, e = t.rows, n = new _(e, e), i = !0, o, l, h;\n for (l = 0; l < e; l++) {\n let a = 0;\n for (h = 0; h < l; h++) {\n let u = 0;\n for (o = 0; o < h; o++)\n u += n.get(h, o) * n.get(l, o);\n u = (t.get(l, h) - u) / n.get(h, h), n.set(l, h, u), a = a + u * u;\n }\n for (a = t.get(l, l) - a, i && (i = a > 0), n.set(l, l, Math.sqrt(Math.max(a, 0))), h = l + 1; h < e; h++)\n n.set(l, h, 0);\n }\n this.L = n, this.positiveDefinite = i;\n }\n isPositiveDefinite() {\n return this.positiveDefinite;\n }\n solve(s) {\n s = rt.checkMatrix(s);\n let t = this.L, e = t.rows;\n if (s.rows !== e)\n throw new Error(\"Matrix dimensions do not match\");\n if (this.isPositiveDefinite() === !1)\n throw new Error(\"Matrix is not positive definite\");\n let n = s.columns, i = s.clone(), o, l, h;\n for (h = 0; h < e; h++)\n for (l = 0; l < n; l++) {\n for (o = 0; o < h; o++)\n i.set(h, l, i.get(h, l) - i.get(o, l) * t.get(h, o));\n i.set(h, l, i.get(h, l) / t.get(h, h));\n }\n for (h = e - 1; h >= 0; h--)\n for (l = 0; l < n; l++) {\n for (o = h + 1; o < e; o++)\n i.set(h, l, i.get(h, l) - i.get(o, l) * t.get(o, h));\n i.set(h, l, i.get(h, l) / t.get(h, h));\n }\n return i;\n }\n get lowerTriangularMatrix() {\n return this.L;\n }\n}\nclass Le {\n constructor(s, t = {}) {\n s = rt.checkMatrix(s);\n let { Y: e } = t;\n const {\n scaleScores: n = !1,\n maxIterations: i = 1e3,\n terminationCriteria: o = 1e-10\n } = t;\n let l;\n if (e) {\n if (st.isAnyArray(e) && typeof e[0] == \"number\" ? e = _.columnVector(e) : e = rt.checkMatrix(e), e.rows !== s.rows)\n throw new Error(\"Y should have the same number of rows as X\");\n l = e.getColumnVector(0);\n } else\n l = s.getColumnVector(0);\n let h = 1, a, u, c, g;\n for (let d = 0; d < i && h > o; d++)\n c = s.transpose().mmul(l).div(l.transpose().mmul(l).get(0, 0)), c = c.div(c.norm()), a = s.mmul(c).div(c.transpose().mmul(c).get(0, 0)), d > 0 && (h = a.clone().sub(g).pow(2).sum()), g = a.clone(), e ? (u = e.transpose().mmul(a).div(a.transpose().mmul(a).get(0, 0)), u = u.div(u.norm()), l = e.mmul(u).div(u.transpose().mmul(u).get(0, 0))) : l = a;\n if (e) {\n let d = s.transpose().mmul(a).div(a.transpose().mmul(a).get(0, 0));\n d = d.div(d.norm());\n let w = s.clone().sub(a.clone().mmul(d.transpose())), p = l.transpose().mmul(a).div(a.transpose().mmul(a).get(0, 0)), P = e.clone().sub(\n a.clone().mulS(p.get(0, 0)).mmul(u.transpose())\n );\n this.t = a, this.p = d.transpose(), this.w = c.transpose(), this.q = u, this.u = l, this.s = a.transpose().mmul(a), this.xResidual = w, this.yResidual = P, this.betas = p;\n } else\n this.w = c.transpose(), this.s = a.transpose().mmul(a).sqrt(), n ? this.t = a.clone().div(this.s.get(0, 0)) : this.t = a, this.xResidual = s.sub(a.mmul(c.transpose()));\n }\n}\n$.AbstractMatrix = V;\n$.CHO = $e;\n$.CholeskyDecomposition = $e;\n$.DistanceMatrix = te;\n$.EVD = Ne;\nvar Js = $.EigenvalueDecomposition = Ne;\n$.LU = ee;\n$.LuDecomposition = ee;\nvar De = $.Matrix = _;\n$.MatrixColumnSelectionView = qs;\n$.MatrixColumnView = Cs;\n$.MatrixFlipColumnView = Fs;\n$.MatrixFlipRowView = xs;\n$.MatrixRowSelectionView = Vs;\n$.MatrixRowView = As;\n$.MatrixSelectionView = Gt;\n$.MatrixSubView = Ns;\n$.MatrixTransposeView = $s;\n$.NIPALS = Le;\n$.Nipals = Le;\n$.QR = pe;\n$.QrDecomposition = pe;\n$.SVD = vt;\n$.SingularValueDecomposition = vt;\n$.SymmetricMatrix = pt;\n$.WrapperMatrix1D = Ae;\n$.WrapperMatrix2D = rt;\n$.correlation = Ws;\n$.covariance = Ys;\nvar Re = $.default = _;\n$.determinant = Xt;\n$.inverse = Ds;\n$.linearDependencies = Bs;\n$.pseudoInverse = Us;\n$.solve = Ve;\n$.wrap = Ls;\nconst Ks = Js, Hs = De;\nRe.Matrix && Re.Matrix;\nfunction qt(r, s, t) {\n const e = r / t, n = s / t;\n if (!(isFinite(e) && isFinite(n))) {\n const h = -r / s;\n return isFinite(h) ? [h] : r == 0 && s == 0 ? [0] : [];\n }\n const i = n * n - 4 * e;\n let o = 0;\n if (isFinite(i)) {\n if (i < 0)\n return [];\n if (i == 0)\n return [-0.5 * n];\n o = -0.5 * (n + kt(Math.sqrt(i), n));\n } else\n o = -n;\n const l = e / o;\n return isFinite(l) ? l > o ? [o, l] : [l, o] : [o];\n}\nfunction ze(r, s, t, e) {\n const n = t / (3 * e), i = s / (3 * e), o = r / e;\n if (!(isFinite(o) && isFinite(i) && isFinite(n)))\n return qt(r, s, t);\n const l = -n * n + i, h = -i * n + o, a = n * o - i * i, u = 4 * l * a - h * h, c = -2 * n * l + h;\n if (u < 0) {\n const g = Math.sqrt(-0.25 * u), d = -0.5 * c;\n return [Math.cbrt(d + g) + Math.cbrt(d - g) - n];\n } else if (u == 0) {\n const g = kt(Math.sqrt(-l), c);\n return [g - n, -2 * g - n];\n } else {\n const g = Math.atan2(Math.sqrt(u), -c) / 3, d = Math.cos(g), w = Math.sin(g) * Math.sqrt(3), p = 0.5 * (-d + w), P = 0.5 * (-d - w), f = 2 * Math.sqrt(-l);\n return [f * d - n, f * p - n, f * P - n];\n }\n}\nfunction wn(r, s, t, e, n) {\n if (n == 0)\n return ze(r, s, t, e);\n const i = e / n, o = t / n, l = s / n, h = r / n;\n let a = ve(i, o, l, h, !1);\n if (a !== null)\n return a;\n const u = 716e74;\n for (let c = 0; c < 2; c++)\n if (a = ve(\n i / u,\n o / (u * u),\n l / (u * u * u),\n h / (u * u * u * u),\n c != 0\n ), a !== null) {\n for (let g = 0; g < a.length; g++)\n a[g] *= u;\n return a;\n }\n return [];\n}\nfunction gt(r, s) {\n return s == 0 ? Math.abs(r) : Math.abs((r - s) / s);\n}\nfunction ve(r, s, t, e, n) {\n const i = tn(r, s, t, e, n);\n if (i !== null && i.length == 4) {\n let o = [];\n for (let l = 0; l < 2; l++) {\n const h = i[l * 2], a = i[l * 2 + 1];\n o = o.concat(qt(a, h, 1));\n }\n return o;\n }\n return null;\n}\nfunction tn(r, s, t, e, n) {\n function i(x, N, A, O) {\n const U = gt(x + A, r), T = gt(N + x * A + O, s), z = gt(N * A + x * O, t);\n return U + T + z;\n }\n function o(x, N, A, O) {\n return i(x, N, A, O) + gt(N * O, e);\n }\n const l = 9 * r * r - 24 * s, h = l >= 0 ? -2 * s / (3 * r + kt(Math.sqrt(l), r)) : -0.25 * r, a = r + 4 * h, u = s + 3 * h * (r + 2 * h), c = t + h * (2 * s + h * (3 * r + 4 * h)), g = e + h * (t + h * (s + h * (r + h)));\n let d = 0, w = 0;\n const p = 349e100;\n if (n) {\n const x = a / p, N = u / p, A = c / p, O = g / p;\n d = x * A - 4 / p * O - 1 / 3 * N * N, w = (x * A - 8 / p * O - 2 / 9 * N * N) * (1 / 3) * N - A * (A / p) - x * x * O;\n } else\n d = a * c - 4 * g - 1 / 3 * u * u, w = (a * c + 8 * g - 2 / 9 * u * u) * (1 / 3) * u - c * c - a * a * g;\n if (!isFinite(d) && isFinite(w))\n return null;\n let P = en(d, w);\n n && (P *= p);\n const f = r * 0.5, M = 1 / 6 * s + 0.5 * P, E = t - r * M, R = 2 / 3 * s - P - f * f, v = 0.5 * E / R, L = 2 * (e - M * M) / E, S = 0.5 * E / L;\n let k = 0, D = 0, m = 0;\n for (let x = 0; x < 3; x++) {\n const N = x == 1 ? S : R, A = x == 0 ? v : L, O = gt(N + f * f + 2 * M, s), U = gt(2 * (N * A + f * M), t), T = gt(N * A * A + M * M, e), z = O + U + T;\n (x == 0 || z < m) && (k = N, D = A, m = z);\n }\n const b = k, j = D;\n let y = 0, C = 0, F = 0, I = 0;\n if (b < 0) {\n const x = Math.sqrt(-b);\n if (y = f + x, C = M + x * j, F = f - x, I = M - x * j, Math.abs(I) < Math.abs(C) ? I = e / C : Math.abs(I) > Math.abs(C) && (C = e / I), Math.abs(y) != Math.abs(F)) {\n let N = null, A = null;\n if (Math.abs(y) < Math.abs(F)) {\n const U = (t - C * F) / I, T = (s - I - C) / F;\n N = [r - F, U, T], A = [F, F, F];\n } else {\n const U = (t - y * I) / C, T = (s - I - C) / y, z = r - y;\n N = [y, y, y], A = [z, U, T];\n }\n let O = 0;\n for (let U = 0; U < 3; U++) {\n const T = N[U], z = A[U];\n if (isFinite(T) && isFinite(z)) {\n const X = i(T, C, z, I);\n (U == 0 || X < O) && (y = T, F = z, O = X);\n }\n }\n }\n } else if (b == 0) {\n const x = e - M * M;\n y = f, C = M + Math.sqrt(-x), F = f, I = M - Math.sqrt(-x), Math.abs(C) > Math.abs(I) ? I = e / C : Math.abs(I) > Math.abs(C) && (C = e / I);\n } else\n return [];\n let B = o(y, C, F, I);\n for (let x = 0; x < 8 && B != 0; x++) {\n const N = C * I - e, A = C * F + y * I - t, O = C + y * F + I - s, U = y + F - r, T = y - F, z = C * C - C * (F * T + 2 * I) + I * (y * T + I);\n if (z == 0)\n break;\n const X = 1 / z, G = I - C, W = C * F - y * I, se = T * N + G * A + W * O - (C * G + y * W) * U, ne = (y * T + G) * N - C * (T * A + G * O + W * U), ie = -T * N - G * A - W * O + (F * W + I * G) * U, re = -(F * T + G) * N + I * (T * A + G * O + W * U), At = y - X * se, Vt = C - X * ne, Nt = F - X * ie, $t = I - X * re, Lt = o(At, Vt, Nt, $t);\n if (Lt < B)\n y = At, C = Vt, F = Nt, I = $t, B = Lt;\n else\n break;\n }\n return [y, C, F, I];\n}\nfunction en(r, s) {\n const t = -0.3333333333333333 * r, e = 0.5 * s;\n let n, i = null;\n if ((Math.abs(t) >= 1e102 || Math.abs(e) >= 1e164) && (Math.abs(t) < Math.abs(e) ? i = 1 - t * (t / e) * (t / e) : i = Math.sign(t) * (e / t * (e / t) / t - 1)), i !== null && e == 0)\n r > 0 ? n = 0 : n = Math.sqrt(-r);\n else if (i !== null ? i < 0 : e * e < t * t * t) {\n const a = i !== null ? e / t / Math.sqrt(t) : e / Math.sqrt(t * t * t);\n n = -2 * Math.sqrt(t) * kt(Math.cos(Math.acos(Math.abs(a)) * (1 / 3)), a);\n } else {\n let a;\n i !== null ? Math.abs(t) < Math.abs(e) ? a = -e * (1 + Math.sqrt(i)) : a = -e - kt(Math.sqrt(Math.abs(t)) * t * Math.sqrt(i), e) : a = Math.cbrt(-e - kt(Math.sqrt(e * e - t * t * t), e));\n const u = a == 0 ? 0 : t / a;\n n = a + u;\n }\n let o = n, l = (o * o + r) * o + s;\n if (Math.abs(l) < 222045e-21 * Math.max(o * o * o, r * o, s))\n return o;\n for (let a = 0; a < 8; a++) {\n const u = 3 * o * o + r;\n if (u == 0)\n break;\n const c = o - l / u, g = (c * c + r) * c + s;\n if (g == 0)\n return c;\n if (Math.abs(g) >= Math.abs(l))\n break;\n o = c, l = g;\n }\n return o;\n}\nfunction kt(r, s) {\n const t = Math.abs(r);\n return s < 0 ? -t : t;\n}\nfunction sn(r, s = 1e-9) {\n if (r[r.length - 1] == 0)\n return sn(r.slice(0, -1), s);\n const t = new Hs([\n r.slice(0, -1).reverse().map((n) => -n / r[r.length - 1]),\n ...Array.from({ length: r.length - 2 }, (n, i) => {\n const o = new Array(r.length - 1).fill(0);\n return o[i] = 1, o;\n })\n ]), e = new Ks(t);\n return e.realEigenvalues.filter(\n (n, i) => Math.abs(e.imaginaryEigenvalues[i]) < s\n );\n}\nconst nn = (r, s, t) => [r[0] * (1 - t) + s[0] * t, r[1] * (1 - t) + s[1] * t];\nfunction rn(r) {\n const s = [];\n for (let t = 0; t < r.length - 1; t++)\n s.push([r[t], r[t + 1]]);\n return s;\n}\nfunction de(r, s) {\n const t = rn(r).map(([e, n]) => nn(e, n, s));\n return r.length === 2 ? [t] : [...de(t, s), t];\n}\nclass Et extends xt {\n constructor(t, e, n, i) {\n super(t, e);\n q(this, \"segmentType\", \"CUBIC_BEZIER\");\n q(this, \"firstControlPoint\");\n q(this, \"lastControlPoint\");\n q(this, \"_boundingBox\", null);\n q(this, \"_polynomialCoefficients\", null);\n this.firstControlPoint = n, this.lastControlPoint = i;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n _extremaInDirection(t) {\n const [e, n, i, o] = [\n this.firstPoint[t],\n this.firstControlPoint[t],\n this.lastControlPoint[t],\n this.lastPoint[t]\n ], l = -e + 3 * n - 3 * i + o, h = 2 * e - 4 * n + 2 * i, a = -e + n;\n return qt(a, h, l).filter(\n (u) => u >= -this.precision && u <= 1 + this.precision\n );\n }\n getParametersOfExtrema() {\n return Array.from(\n new Set(this._extremaInDirection(0).concat(this._extremaInDirection(1)))\n );\n }\n get alignedCurve() {\n const t = [-this.firstPoint[0], -this.firstPoint[1]], e = Q(this.lastPoint, this.firstPoint), n = Math.atan2(e[1], e[0]), i = new et();\n return i.translate(t[0], t[1]), i.rotate(-n), this.transform(i);\n }\n getInflexionParameters() {\n const t = this.alignedCurve, [e, n] = t.firstControlPoint, [i, o] = t.lastControlPoint, [l, h] = t.lastPoint, a = i * n, u = l * n, c = e * o, g = l * o, d = -3 * a + 2 * u + 3 * c - g, w = 3 * a - u - 3 * c, p = c - a;\n return qt(p, w, d).filter((P) => P >= 0 && P <= 1);\n }\n get boundingBox() {\n return this._boundingBox === null && (this._boundingBox = ce([\n this.firstPoint,\n ...this.getParametersOfExtrema().map((t) => this.paramPoint(t)),\n this.lastPoint\n ]).grow(this.precision)), this._boundingBox;\n }\n clone() {\n return new Et(\n this.firstPoint,\n this.lastPoint,\n this.firstControlPoint,\n this.lastControlPoint\n );\n }\n reverse() {\n return new Et(\n this.lastPoint,\n this.firstPoint,\n this.lastControlPoint,\n this.firstControlPoint\n );\n }\n isSame(t) {\n return t.segmentType !== \"CUBIC_BEZIER\" ? !1 : Y(this.firstPoint, t.firstPoint) && Y(this.lastPoint, t.lastPoint) && Y(this.firstControlPoint, t.firstControlPoint) && Y(this.lastControlPoint, t.lastControlPoint);\n }\n distanceFrom(t) {\n const n = Ce((i) => Rt(this.paramPoint(i), t), this.precision);\n return n.argMin < -this.precision || n.argMin > 1 + this.precision ? Math.min(\n J(this.firstPoint, t),\n J(this.lastPoint, t)\n ) : Math.sqrt(n.fMin);\n }\n isOnSegment(t) {\n if (!this.boundingBox.contains(t))\n return !1;\n try {\n const e = this.pointToParam(t);\n return e >= -this.precision && e <= 1 + this.precision;\n } catch {\n return !1;\n }\n }\n gradientAt(t) {\n const e = 1 - t, n = e * e, i = t * t, o = 3 * n, l = 6 * e * t, h = 3 * i, a = Q(this.firstControlPoint, this.firstPoint), u = Q(this.lastControlPoint, this.firstControlPoint), c = Q(this.lastPoint, this.lastControlPoint);\n return [\n o * a[0] + l * u[0] + h * c[0],\n o * a[1] + l * u[1] + h * c[1]\n ];\n }\n secondDerivativeAt(t) {\n const e = it(this.firstPoint, this.lastControlPoint), n = nt(this.firstControlPoint, 2), i = it(this.firstControlPoint, this.lastPoint), o = nt(this.lastControlPoint, 2), l = nt(Q(e, n), 6 * (1 - t)), h = nt(Q(i, o), 6 * t);\n return it(l, h);\n }\n tangentAt(t) {\n const e = this.pointToParam(t);\n return H(this.gradientAt(e));\n }\n get tangentAtFirstPoint() {\n return H(Q(this.firstControlPoint, this.firstPoint));\n }\n get tangentAtLastPoint() {\n return H(Q(this.lastPoint, this.lastControlPoint));\n }\n normalAt(t) {\n const e = this.tangentAt(t);\n return tt(e);\n }\n get normalAtFirstPoint() {\n return tt(this.tangentAtFirstPoint);\n }\n get normalAtLastPoint() {\n return tt(this.tangentAtLastPoint);\n }\n splitAtParameters(t, e = null) {\n const n = [...t];\n n.sort((o, l) => o - l);\n let i = {\n originalParam: 0,\n param: 0,\n p0: this.firstPoint,\n p1: this.firstControlPoint,\n p2: this.lastControlPoint\n };\n return n.flatMap((o, l) => {\n if (o - i.originalParam < this.precision)\n return [];\n let h = !1;\n o > 1 - this.precision && (h = !0);\n const a = (o - i.originalParam) / (1 - i.originalParam), u = de(\n [\n i.p0,\n i.p1,\n i.p2,\n this.lastPoint\n ],\n h ? 1 : a\n ), c = h ? this.lastPoint : (e == null ? void 0 : e.get(o)) ?? u[0][0], g = u[1][0], d = u[2][0], w = u[1][1], p = u[2][2], P = new Et(\n i.p0,\n c,\n d,\n g\n );\n return i = {\n param: a,\n originalParam: o,\n p0: c,\n p1: w,\n p2: p\n }, l === n.length - 1 && !h ? [\n P,\n new Et(\n i.p0,\n this.lastPoint,\n i.p1,\n i.p2\n )\n ] : P;\n });\n }\n splitAt(t) {\n let e;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? e = t : e = [t];\n const n = e.map((o) => this.pointToParam(o)), i = new Map(\n Kt([n, e])\n );\n return this.splitAtParameters(n, i);\n }\n transform(t) {\n return new Et(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint),\n t.transform(this.firstControlPoint),\n t.transform(this.lastControlPoint)\n );\n }\n paramPoint(t) {\n const e = 1 - t, n = e * e, i = t * t, o = n * e, l = 3 * n * t, h = 3 * e * i, a = i * t;\n return [\n o * this.firstPoint[0] + l * this.firstControlPoint[0] + h * this.lastControlPoint[0] + a * this.lastPoint[0],\n o * this.firstPoint[1] + l * this.firstControlPoint[1] + h * this.lastControlPoint[1] + a * this.lastPoint[1]\n ];\n }\n get polynomialCoefficients() {\n if (this._polynomialCoefficients === null) {\n const t = (e) => {\n const n = this.firstPoint[e], i = this.firstControlPoint[e], o = this.lastControlPoint[e], l = this.lastPoint[e], h = -n + 3 * i - 3 * o + l, a = 3 * n - 6 * i + 3 * o, u = -3 * n + 3 * i;\n return [n, u, a, h];\n };\n this._polynomialCoefficients = [t(0), t(1)];\n }\n return this._polynomialCoefficients;\n }\n paramsAtY(t) {\n const [e, n, i, o] = this.polynomialCoefficients[1];\n return ze(e - t, n, i, o).filter((l) => l >= -this.precision && l <= 1 + this.precision);\n }\n pointToParam(t) {\n if (Y(t, this.firstPoint, this.precision)) return 0;\n if (Y(t, this.lastPoint, this.precision)) return 1;\n const e = this.paramsAtY(t[1]);\n if (e.length === 0)\n throw new Error(\"Point is not on the curve\");\n const n = (o) => Math.abs(this.paramPoint(o)[0] - t[0]) <= this.precision, i = e.find(n);\n if (i === void 0)\n throw new Error(\"Point is not on the curve\");\n return i;\n }\n}\nclass jt extends xt {\n constructor(t, e, n, i, o, l, h = !1, {\n ignoreChecks: a = !1,\n angleUnits: u = \"deg\"\n } = {}) {\n super(t, e);\n q(this, \"segmentType\", \"ELLIPSE_ARC\");\n // I would need to do some more work to improve the precision that I can have\n // on an ellipse with intersection algorithms\n q(this, \"precision\", 1e-6);\n q(this, \"majorRadius\");\n q(this, \"minorRadius\");\n q(this, \"center\");\n q(this, \"tiltAngle\");\n q(this, \"clockwise\");\n q(this, \"_coefficients\", null);\n q(this, \"_boundingBox\");\n q(this, \"_linearExentricity\");\n q(this, \"_exentricity\");\n q(this, \"_focals\");\n q(this, \"_ellipseReferenceFrameTransform\");\n q(this, \"_reverseEllipseReferenceFrameTransform\");\n q(this, \"_rotateFromEllipseReferenceFrame\");\n q(this, \"_firstAngle\");\n q(this, \"_lastAngle\");\n q(this, \"_deltaAngle\");\n this.center = n;\n const c = i >= o;\n this.majorRadius = c ? i : o, this.minorRadius = c ? o : i;\n const g = u === \"deg\" ? l * fe : l;\n if (this.tiltAngle = wt(\n c ? g : g + Math.PI / 2\n ), this.clockwise = h, !a) {\n if (Y(t, e))\n throw new Error(\"Invalid arc, cannot be a full circle\");\n if (!this.isPointOnEllipse(t))\n throw new Error(\n `First point ${Z(\n t\n )} not on the ellipse defined by ${this.info}`\n );\n if (!this.isPointOnEllipse(e))\n throw new Error(\n `Last point ${Z(e)} not on the ellipse defined by ${this.info}`\n );\n if (Math.abs(this.majorRadius - this.minorRadius) < this.precision)\n throw new Error(\n \"Both radii should be different, create an arc instead\"\n );\n }\n }\n get coefficients() {\n if (this._coefficients === null) {\n const [t, e] = this.center, n = this.majorRadius * this.majorRadius, i = this.minorRadius * this.minorRadius, o = Math.cos(this.tiltAngle), l = Math.sin(this.tiltAngle), h = n * l * l + i * o * o, a = 2 * (i - n) * l * o, u = n * o * o + i * l * l;\n this._coefficients = {\n x2: h,\n xy: a,\n y2: u,\n x: -2 * h * t - a * e,\n y: -2 * u * e - a * t,\n c: h * t * t + a * t * e + u * e * e - n * i\n };\n }\n return this._coefficients;\n }\n get info() {\n return `ELLIPSE_ARC(${Z(this.firstPoint)}, ${Z(\n this.lastPoint\n )}, ${Z(this.center)}, ${this.majorRadius}, ${this.minorRadius}, ${this.tiltAngle * Ue}, ${this.clockwise ? \"CW\" : \"CCW\"})`;\n }\n reverse() {\n return new jt(\n this.lastPoint,\n this.firstPoint,\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n !this.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n );\n }\n clone() {\n return new jt(\n this.firstPoint,\n this.lastPoint,\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n this.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n );\n }\n computeEllipseExtrema() {\n const t = Math.tan(this.tiltAngle), e = this.minorRadius / this.majorRadius, n = -Math.atan(e * t), i = Math.atan(e / t);\n return [n, Math.PI + n, i, Math.PI + i].map((l) => this.thetaToParam(l)).filter((l) => this.isValidParameter(l)).map((l) => this.paramPoint(l));\n }\n get boundingBox() {\n if (this._boundingBox === void 0) {\n const t = this.computeEllipseExtrema(), e = [\n this.firstPoint,\n this.lastPoint,\n ...t\n ];\n this._boundingBox = ce(e).grow(this.precision);\n }\n return this._boundingBox;\n }\n get linearExentricity() {\n return this._linearExentricity === void 0 && (this._linearExentricity = Math.sqrt(\n this.majorRadius * this.majorRadius - this.minorRadius * this.minorRadius\n )), this._linearExentricity;\n }\n get exentricity() {\n return this._exentricity === void 0 && (this._exentricity = this.linearExentricity / this.majorRadius), this._exentricity;\n }\n get focals() {\n if (this._focals === void 0) {\n const t = this.majorAxis;\n this._focals = [\n it(this.center, nt(t, this.linearExentricity)),\n it(this.center, nt(t, -this.linearExentricity))\n ];\n }\n return this._focals;\n }\n get majorAxis() {\n return Tt(1, this.tiltAngle);\n }\n paramPoint(t) {\n const e = this.firstAngle + t * this.deltaAngle * (this.clockwise ? -1 : 1);\n return this.reverseEllipseReferenceFrameTransform.transform([\n this.majorRadius * Math.cos(e),\n this.minorRadius * Math.sin(e)\n ]);\n }\n pointToParam(t) {\n if (!this.isPointOnEllipse(t))\n throw new Error(\n `Point ${Z(t)} not on the ellipse defined by ${this.repr}`\n );\n const e = this.thetaToParam(this.pointTheta(t));\n if (!this.isValidParameter(e))\n throw new Error(\n `Point ${Z(t)} is not on segment ${this.repr}`\n );\n return e;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n isValidParameter(t) {\n return 1 - t >= -this.precision && t >= -this.precision;\n }\n isSame(t) {\n return Y(this.center, t.center) && Math.abs(this.majorRadius - t.majorRadius) < this.precision && Math.abs(this.minorRadius - t.minorRadius) < this.precision && (Math.abs(this.tiltAngle - t.tiltAngle) < this.precision || Math.abs(Math.abs(this.tiltAngle - t.tiltAngle) - Math.PI) < this.precision) && (Y(this.firstPoint, t.firstPoint) && this.clockwise === t.clockwise || Y(this.firstPoint, t.lastPoint) && this.clockwise !== t.clockwise);\n }\n pointTheta(t) {\n const e = this.ellipseReferenceFrameTransform.transform(t), n = Math.atan2(\n e[1] / this.minorRadius,\n e[0] / this.majorRadius\n );\n return wt(n);\n }\n thetaToParam(t) {\n return Zt(this.firstAngle, wt(t), this.clockwise) / this.deltaAngle;\n }\n isPointOnEllipse(t) {\n const [e, n] = this.focals, i = J(t, e), o = J(t, n);\n return Math.abs(2 * this.majorRadius - i - o) < this.precision;\n }\n isOnSegment(t) {\n return this.isPointOnEllipse(t) ? this.isValidParameter(this.thetaToParam(this.pointTheta(t))) : !1;\n }\n distanceFrom(t) {\n let e;\n if (Y(t, this.center) ? e = it(\n this.center,\n nt(tt(this.majorAxis), this.minorRadius)\n ) : e = this.reverseEllipseReferenceFrameTransform.transform(\n ln(\n this.majorRadius,\n this.minorRadius,\n this.ellipseReferenceFrameTransform.transform(t)\n )\n ), this.isValidParameter(this.thetaToParam(this.pointTheta(t))))\n return J(t, e);\n if (Qe(t, this.majorAxis, this.center)) {\n const n = wt(\n 2 * Math.PI - this.pointTheta(t)\n ), i = this.thetaToParam(n);\n if (this.isValidParameter(i))\n return J(t, this.paramPoint(i));\n }\n return Math.min(\n J(t, this.firstPoint),\n J(t, this.lastPoint)\n );\n }\n get ellipseReferenceFrameTransform() {\n return this._ellipseReferenceFrameTransform === void 0 && (this._ellipseReferenceFrameTransform = new et().translate(-this.center[0], -this.center[1]).rotate(-this.tiltAngle)), this._ellipseReferenceFrameTransform;\n }\n get reverseEllipseReferenceFrameTransform() {\n return this._reverseEllipseReferenceFrameTransform === void 0 && (this._reverseEllipseReferenceFrameTransform = new et().rotate(this.tiltAngle).translate(this.center[0], this.center[1])), this._reverseEllipseReferenceFrameTransform;\n }\n get rotateFromEllipseReferenceFrame() {\n return this._rotateFromEllipseReferenceFrame === void 0 && (this._rotateFromEllipseReferenceFrame = new et().rotate(\n this.tiltAngle\n )), this._rotateFromEllipseReferenceFrame;\n }\n get firstAngle() {\n return this._firstAngle === void 0 && (this._firstAngle = this.pointTheta(this.firstPoint)), this._firstAngle;\n }\n get lastAngle() {\n return this._lastAngle === void 0 && (this._lastAngle = this.pointTheta(this.lastPoint)), this._lastAngle;\n }\n get deltaAngle() {\n return this._deltaAngle === void 0 && (this._deltaAngle = Zt(\n this.firstAngle,\n this.lastAngle,\n this.clockwise\n )), this._deltaAngle;\n }\n normalAt(t) {\n const e = this.tangentAt(t);\n return this.clockwise ? tt(e) : Qt(e);\n }\n gradientAt(t) {\n const e = this.firstAngle + t * this.deltaAngle * (this.clockwise ? -1 : 1), n = -this.majorRadius * this.deltaAngle * Math.sin(e), i = this.minorRadius * this.deltaAngle * Math.cos(e), o = this.clockwise ? [-n, -i] : [n, i];\n return this.rotateFromEllipseReferenceFrame.transform(o);\n }\n tangentAt(t) {\n const e = this.pointTheta(t), n = -this.majorRadius * Math.sin(e), i = this.minorRadius * Math.cos(e), o = this.clockwise ? [-n, -i] : [n, i];\n return H(this.rotateFromEllipseReferenceFrame.transform(o));\n }\n get tangentAtFirstPoint() {\n const t = -this.majorRadius * Math.sin(this.firstAngle), e = this.minorRadius * Math.cos(this.firstAngle), n = this.clockwise ? [-t, -e] : [t, e];\n return H(this.rotateFromEllipseReferenceFrame.transform(n));\n }\n get tangentAtLastPoint() {\n const t = -this.majorRadius * Math.sin(this.lastAngle), e = this.minorRadius * Math.cos(this.lastAngle), n = this.clockwise ? [-t, -e] : [t, e];\n return H(this.rotateFromEllipseReferenceFrame.transform(n));\n }\n transform(t) {\n const e = t.transformAngle(this.tiltAngle), n = t.scaleFactor();\n return new jt(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint),\n t.transform(this.center),\n this.majorRadius * n,\n this.minorRadius * n,\n e,\n t.keepsOrientation() ? this.clockwise : !this.clockwise,\n { angleUnits: \"rad\" }\n );\n }\n splitAt(t) {\n let e;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? e = t : e = [t];\n const i = [0, 1, ...e.map((h) => this.pointToParam(h))], o = new Map(\n Kt([i, [this.firstPoint, this.lastPoint, ...e]])\n );\n i.sort((h, a) => h - a);\n let l = null;\n return i.flatMap((h, a) => {\n if (a === i.length - 1) return [];\n const u = i[a + 1];\n if (u - h < this.precision)\n return l === null && (l = h), [];\n const c = l === null ? h : l, g = new jt(\n o.get(c) || this.paramPoint(c),\n o.get(u) || this.paramPoint(u),\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n this.clockwise,\n { angleUnits: \"rad\" }\n );\n return l = null, g;\n });\n }\n}\nfunction pn(r, s, t, e, n, i, o) {\n const { center: l, rx: h, ry: a } = on(\n r,\n s,\n t,\n e,\n n * fe,\n !i,\n o\n );\n return Math.abs(h - a) < 1e-9 ? new ct(r, s, l, o) : new jt(r, s, l, h, a, n, o);\n}\nfunction on([r, s], [t, e], n, i, o, l, h) {\n if (n < 0 && (n = -n), i < 0 && (i = -i), n == 0 || i == 0)\n throw Error(\"rx and ry can not be 0\");\n const a = Math.sin(o), u = Math.cos(o), c = (r - t) / 2, g = (s - e) / 2, d = (r + t) / 2, w = (s + e) / 2, p = u * c + a * g, P = u * g - a * c, f = p * p / (n * n) + P * P / (i * i);\n f > 1 && (n = n * Math.sqrt(f), i = i * Math.sqrt(f));\n const M = n * i, E = n * P, R = i * p, v = E * E + R * R;\n if (!v)\n throw Error(\"start point can not be same as end point\");\n let L = Math.sqrt(Math.abs((M * M - v) / v));\n l == h && (L = -L);\n const S = L * E / i, k = -L * R / n, D = u * S - a * k + d, m = a * S + u * k + w;\n return {\n center: [D, m],\n rx: n,\n ry: i\n };\n}\nfunction ln(r, s, t) {\n const e = Math.abs(t[0]), n = Math.abs(t[1]);\n let i = 0.707, o = 0.707;\n const l = r, h = s;\n for (let a = 0; a < 3; a++) {\n const u = l * i, c = h * o, g = (l * l - h * h) * i ** 3 / l, d = (h * h - l * l) * o ** 3 / h, w = u - g, p = c - d, P = e - g, f = n - d, M = Math.hypot(w, p), E = Math.hypot(P, f);\n i = Math.min(1, Math.max(0, (P * M / E + g) / l)), o = Math.min(1, Math.max(0, (f * M / E + d) / h));\n const R = Math.hypot(i, o);\n i /= R, o /= R;\n }\n return [l * i * Math.sign(t[0]), h * o * Math.sign(t[1])];\n}\nclass _t extends xt {\n constructor(t, e, n) {\n super(t, e);\n q(this, \"segmentType\", \"QUADRATIC_BEZIER\");\n q(this, \"controlPoint\");\n q(this, \"_boundingBox\", null);\n q(this, \"_polynomialCoefficients\", null);\n this.controlPoint = n;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n _extremaInDirection(t) {\n const [e, n, i] = [\n this.firstPoint[t],\n this.controlPoint[t],\n this.lastPoint[t]\n ], o = e - 2 * n + i;\n if (!o)\n return [];\n const l = (e - n) / o;\n return l >= -this.precision && l <= 1 + this.precision ? [l] : [];\n }\n getParametersOfExtrema() {\n return Array.from(\n new Set(this._extremaInDirection(0).concat(this._extremaInDirection(1)))\n );\n }\n get boundingBox() {\n return this._boundingBox === null && (this._boundingBox = ce([\n this.firstPoint,\n // There is either one or zero extrema in each direction\n ...this.getParametersOfExtrema().map((t) => this.paramPoint(t)),\n this.lastPoint\n ]).grow(this.precision)), this._boundingBox;\n }\n clone() {\n return new _t(\n this.firstPoint,\n this.lastPoint,\n this.controlPoint\n );\n }\n reverse() {\n return new _t(\n this.lastPoint,\n this.firstPoint,\n this.controlPoint\n );\n }\n isSame(t) {\n return t.segmentType !== \"QUADRATIC_BEZIER\" ? !1 : Y(this.firstPoint, t.firstPoint) && Y(this.lastPoint, t.lastPoint) && Y(this.controlPoint, t.controlPoint);\n }\n distanceFrom(t) {\n const n = Ce((i) => Rt(this.paramPoint(i), t), this.precision);\n return n.argMin < -this.precision || n.argMin > 1 + this.precision ? Math.min(\n J(this.firstPoint, t),\n J(this.lastPoint, t)\n ) : Math.sqrt(n.fMin);\n }\n isOnSegment(t) {\n if (!this.boundingBox.contains(t))\n return !1;\n try {\n const e = this.pointToParam(t);\n return e >= -this.precision && e <= 1 + this.precision;\n } catch {\n return !1;\n }\n }\n gradientAt(t) {\n const e = (n) => {\n const i = this.firstPoint[n], o = this.controlPoint[n], l = this.lastPoint[n];\n return 2 * (t * (i - 2 * o + l) - i + o);\n };\n return [e(0), e(1)];\n }\n secondDerivativeAt(t) {\n return nt(\n Q(\n it(this.firstPoint, this.lastPoint),\n nt(this.controlPoint, 2)\n ),\n 2\n );\n }\n tangentAt(t) {\n const e = this.pointToParam(t);\n return H(this.gradientAt(e));\n }\n get tangentAtFirstPoint() {\n return H(Q(this.controlPoint, this.firstPoint));\n }\n get tangentAtLastPoint() {\n return H(Q(this.lastPoint, this.controlPoint));\n }\n normalAt(t) {\n const e = this.tangentAt(t);\n return tt(e);\n }\n get normalAtFirstPoint() {\n return tt(this.tangentAtFirstPoint);\n }\n get normalAtLastPoint() {\n return tt(this.tangentAtLastPoint);\n }\n splitAtParameters(t, e = null) {\n const n = [...t];\n n.sort((o, l) => o - l);\n let i = {\n originalParam: 0,\n param: 0,\n p0: this.firstPoint,\n p1: this.controlPoint\n };\n return n.flatMap((o, l) => {\n if (o - i.originalParam < this.precision)\n return [];\n let h = !1;\n o > 1 - this.precision && (h = !0);\n const a = (o - i.originalParam) / (1 - i.originalParam), u = de(\n [i.p0, i.p1, this.lastPoint],\n h ? 1 : a\n ), c = h ? this.lastPoint : (e == null ? void 0 : e.get(o)) ?? u[0][0], g = u[1][0], d = u[1][1], w = new _t(\n i.p0,\n c,\n g\n );\n return i = {\n param: a,\n originalParam: o,\n p0: c,\n p1: d\n }, l === n.length - 1 && !h ? [\n w,\n new _t(\n i.p0,\n this.lastPoint,\n i.p1\n )\n ] : w;\n });\n }\n splitAt(t) {\n let e;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? e = t : e = [t];\n const n = e.map((o) => this.pointToParam(o)), i = new Map(\n Kt([n, e])\n );\n return this.splitAtParameters(n, i);\n }\n transform(t) {\n return new _t(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint),\n t.transform(this.controlPoint)\n );\n }\n paramPoint(t) {\n const e = 1 - t, n = e * e, i = 2 * e * t, o = t * t;\n return [\n n * this.firstPoint[0] + i * this.controlPoint[0] + o * this.lastPoint[0],\n n * this.firstPoint[1] + i * this.controlPoint[1] + o * this.lastPoint[1]\n ];\n }\n get polynomialCoefficients() {\n if (this._polynomialCoefficients === null) {\n const t = (e) => {\n const n = this.firstPoint[e], i = this.controlPoint[e], o = this.lastPoint[e], l = n - 2 * i + o, h = 2 * (i - n);\n return [n, h, l];\n };\n this._polynomialCoefficients = [t(0), t(1)];\n }\n return this._polynomialCoefficients;\n }\n paramsAtY(t) {\n const [e, n, i] = this.polynomialCoefficients[1];\n return qt(e - t, n, i).filter(\n (o) => o >= -this.precision && o <= 1 + this.precision\n );\n }\n pointToParam(t) {\n const e = this.paramsAtY(t[1]);\n if (e.length === 0)\n throw new Error(\"Point is not on the curve!\");\n const n = (o) => Math.abs(this.paramPoint(o)[0] - t[0]) <= this.precision, i = e.find(n);\n if (i === void 0)\n throw new Error(\"Point is not on the curve\");\n return i;\n }\n}\nexport {\n ct as A,\n mt as B,\n Et as C,\n fe as D,\n jt as E,\n Ze as F,\n Ie as G,\n Z as H,\n at as L,\n _t as Q,\n Ue as R,\n et as T,\n it as a,\n Q as b,\n St as c,\n Pe as d,\n J as e,\n Qt as f,\n Y as g,\n fn as h,\n pn as i,\n We as j,\n Tt as k,\n me as l,\n Ye as m,\n H as n,\n Rt as o,\n tt as p,\n un as q,\n Te as r,\n nt as s,\n mn as t,\n sn as u,\n wn as v,\n It as w,\n an as x,\n cn as y,\n Kt as z\n};\n//# sourceMappingURL=QuadraticBezier-PcRS9HZK.js.map\n","var tn = Object.defineProperty;\nvar nn = (t, n, e) => n in t ? tn(t, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[n] = e;\nvar C = (t, n, e) => nn(t, typeof n != \"symbol\" ? n + \"\" : n, e);\nimport { b as k, d as en, e as Ot, a as q, s as V, n as sn, p as Tt, r as U, A as S, g, u as Lt, E as M, T as on, v as rn, Q as A, w as $, C as I, c as ln, x as cn, L as y, y as zt, F as lt, z as N, G as un, l as an, o as fn, H as dt, B as hn } from \"./QuadraticBezier-PcRS9HZK.js\";\nfunction pn(t, n) {\n const e = k(n, t.firstPoint), s = en(e, t.V) / t.squareLength;\n return t.paramPoint(s);\n}\nfunction J(t, n, e) {\n const s = e || t.precision, i = pn(t, n.center), o = Ot(i, n.center);\n if (o > n.radius + s) return [];\n if (Math.abs(o - n.radius) < s) {\n const u = i;\n return t.isOnSegment(u) && n.isOnSegment(u) ? [u] : [];\n }\n const r = [], l = Math.sqrt(\n n.radius * n.radius - o * o\n ), c = t.tangentAtFirstPoint, a = q(i, V(c, l));\n t.isOnSegment(a) && n.isOnSegment(a) && r.push(a);\n const f = q(i, V(c, -l));\n return t.isOnSegment(f) && n.isOnSegment(f) && r.push(f), r;\n}\nconst dn = (t) => {\n const { firstPoint: n, lastPoint: e, center: s, clockwise: i } = t;\n return new S(e, n, s, i, {\n ignoreChecks: !0\n });\n}, mn = (t, n) => {\n if (t.isSame(n))\n return [t];\n const e = U(\n [\n n.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n n.isOnSegment(t.lastPoint) ? t.lastPoint : null,\n t.isOnSegment(n.firstPoint) ? n.firstPoint : null,\n t.isOnSegment(n.lastPoint) ? n.lastPoint : null\n ].filter((s) => s !== null)\n // We sort by the param value of the first arc. This means that the points\n // will be sorted with the same orientation than arc1\n ).sort((s, i) => t.pointToParam(s) - t.pointToParam(i));\n if (e.length === 0) return [];\n if (e.length === 1) return [];\n if (e.length === 2)\n return t.isSame(dn(n)) ? [] : [new S(e[0], e[1], t.center, t.clockwise)];\n if (e.length === 3) {\n const s = g(e[0], n.lastPoint) || g(e[0], n.firstPoint) ? 1 : 0;\n return [\n new S(\n e[0 + s],\n e[1 + s],\n t.center,\n t.clockwise\n )\n ];\n } else if (e.length === 4)\n return [\n new S(e[0], e[1], t.center, t.clockwise),\n new S(e[2], e[3], t.center, t.clockwise)\n ];\n throw new Error(\"Bug in the arc arc overlap algorithm\");\n};\nfunction qt(t, n, e = !1, s) {\n const i = s || t.precision, o = Ot(t.center, n.center), r = t.radius + n.radius;\n if (o > r + i)\n return [];\n const l = Math.abs(t.radius - n.radius);\n if (o < l - i)\n return [];\n if (o < i)\n return l > i ? [] : e ? mn(t, n) : [];\n const c = sn(k(n.center, t.center)), a = o > r - i;\n if (\n // circles are outside each other\n a || // circles are inside each other\n Math.abs(o - l) < i\n ) {\n const w = a || t.radius > n.radius ? 1 : -1, x = q(\n t.center,\n V(c, w * t.radius)\n );\n return t.isOnSegment(x) && n.isOnSegment(x) ? [x] : [];\n }\n const f = t.radius * t.radius / (2 * o) - n.radius * n.radius / (2 * o) + o / 2, u = q(\n t.center,\n V(c, f)\n ), h = Math.sqrt(\n t.radius * t.radius - f * f\n ), p = Tt(c), d = q(u, V(p, h)), m = q(u, V(p, -h)), P = [];\n return t.isOnSegment(d) && n.isOnSegment(d) && P.push(d), t.isOnSegment(m) && n.isOnSegment(m) && P.push(m), P;\n}\nfunction et(t, n, e = 1e-9) {\n const s = t.transform(n.ellipseReferenceFrameTransform), i = s.slope, o = s.yIntercept, r = n.majorRadius * n.majorRadius, l = n.minorRadius * n.minorRadius, c = n.majorRadius * n.minorRadius, a = s.slope * s.slope, f = s.yIntercept * s.yIntercept, u = (w) => w.map(\n (x) => n.reverseEllipseReferenceFrameTransform.transform(x)\n ).filter((x) => t.isOnSegment(x) && n.isOnSegment(x));\n if (!Number.isFinite(i)) {\n const w = s.firstPoint[0];\n if (Math.abs(w) - n.majorRadius > e) return [];\n if (Math.abs(Math.abs(w) - n.majorRadius) < e)\n return u([[w, 0]]);\n const x = n.minorRadius * Math.sqrt(1 - w * w / r), F = [w, x], b = [w, -x];\n return u([F, b]);\n }\n const h = r * a + l - f;\n if (h < -e)\n return [];\n const p = r * a + l;\n if (Math.abs(h) < e) {\n const w = -(r * i * o) / p, x = l * o / p;\n return u([[w, x]]);\n }\n const d = Math.sqrt(h), m = [\n -(r * i * o + c * d) / p,\n (l * o - c * i * d) / p\n ], P = [\n -(r * i * o - c * d) / p,\n (l * o + c * i * d) / p\n ];\n return u([m, P]);\n}\nfunction Dt(t, n) {\n const e = Math.max(t.precision, n.precision), s = t.coefficients, i = s.x2, o = s.xy, r = s.y2, l = s.x, c = s.y, a = s.c, f = n.coefficients, u = f.x2, h = f.xy, p = f.y2, d = f.x, m = f.y, P = f.c, w = {\n z0: a * i * d * d + i * i * P * P - l * i * d * P + u * u * a * a - 2 * i * P * u * a - l * d * u * a + u * l * l * P,\n z1: m * l * l * u - P * d * i * o - 2 * i * P * u * c - a * u * h * l + 2 * d * h * i * a + 2 * m * P * i * i + d * d * i * c - m * d * i * l - 2 * i * m * u * a - a * u * d * o + 2 * a * c * u * u - P * h * i * l - c * u * d * l + 2 * P * o * u * l,\n z2: m * m * i * i + 2 * p * P * i * i - c * u * d * o + P * u * o * o - c * u * h * l - P * h * i * o - 2 * i * m * u * c + 2 * d * h * i * c - p * d * i * l - 2 * i * p * u * a + h * h * i * a + 2 * m * o * u * l + c * c * u * u - r * u * d * l - m * h * i * l + 2 * a * r * u * u - a * u * h * o + p * l * l * u + d * d * i * r - m * d * i * o - 2 * i * P * u * r,\n z3: -2 * i * u * r * m + m * u * o * o + 2 * p * o * u * l - r * u * h * l + h * h * i * c - m * h * i * o - 2 * i * p * u * c - c * u * h * o - p * h * i * l + 2 * m * p * i * i + 2 * c * r * u * u - r * u * d * o + 2 * d * h * i * r - p * d * i * o,\n z4: i * i * p * p - 2 * i * p * u * r + u * u * r * r - o * i * h * p - o * h * u * r + o * o * u * p + r * i * h * h\n }, F = Lt(\n [w.z0, w.z1, w.z2, w.z3, w.z4],\n e\n ).flatMap((b) => {\n const R = i * h * b + i * d - u * o * b - u * l;\n if (R)\n return [[-(i * P + i * p * b * b - u * r * b * b + i * m * b - u * c * b - u * a) / R, b]];\n const T = o * b + l, L = -T / (2 * i), j = r * b * b + c * b + a, z = T * T / (4 * i * i) - j / i;\n if (Math.abs(z) < e)\n return [[L, b]];\n if (z > 0) {\n const H = Math.sqrt(z);\n return [[L + H, b], [L - H, b]];\n }\n return [];\n });\n return U(F, e);\n}\nfunction mt(t, n) {\n return Dt(t, n).filter((s) => t.isOnSegment(s) && n.isOnSegment(s));\n}\nconst gn = (t) => {\n const {\n firstPoint: n,\n lastPoint: e,\n center: s,\n majorRadius: i,\n minorRadius: o,\n tiltAngle: r,\n clockwise: l\n } = t;\n return new M(\n e,\n n,\n s,\n i,\n o,\n r,\n l,\n {\n ignoreChecks: !0,\n angleUnits: \"rad\"\n }\n );\n}, Pn = (t, n) => {\n if (t.isSame(n))\n return [t];\n const e = (i, o) => new M(\n i,\n o,\n t.center,\n t.majorRadius,\n t.minorRadius,\n t.tiltAngle,\n t.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n ), s = U(\n [\n n.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n n.isOnSegment(t.lastPoint) ? t.lastPoint : null,\n t.isOnSegment(n.firstPoint) ? n.firstPoint : null,\n t.isOnSegment(n.lastPoint) ? n.lastPoint : null\n ].filter((i) => i !== null)\n // We sort by the param value of the first arc. This means that the points\n // will be sorted with the same orientation than arc1\n ).sort((i, o) => t.pointToParam(i) - t.pointToParam(o));\n if (s.length === 0) return [];\n if (s.length === 1) return [];\n if (s.length === 2)\n return t.isSame(gn(n)) ? [] : [e(s[0], s[1])];\n if (s.length === 3) {\n const i = g(s[0], n.lastPoint) || g(s[0], n.firstPoint) ? 1 : 0;\n return [e(s[0 + i], s[1 + i])];\n } else if (s.length === 4)\n return [e(s[0], s[1]), e(s[2], s[3])];\n throw new Error(\"Bug in the ellipse arc ellipse arc overlap algorithm\");\n};\nfunction wn(t, n, e = !1) {\n const s = Math.max(t.precision, n.precision);\n return g(t.center, n.center) && Math.abs(t.majorRadius - n.majorRadius) < s && Math.abs(t.minorRadius - n.minorRadius) < s && (Math.abs(t.tiltAngle - n.tiltAngle) < s || Math.abs(Math.abs(t.tiltAngle - n.tiltAngle) - Math.PI) < s) ? e ? Pn(t, n) : [] : Dt(t, n).filter((r) => t.isOnSegment(r) && n.isOnSegment(r));\n}\nfunction gt(t, n) {\n const [e, s] = t.firstPoint, [i, o] = t.lastPoint, r = new on().translate(-e, -s).rotate(-Math.atan2(o - s, i - e)), l = r.clone().inverse(), c = n.transform(r);\n return c.paramsAtY(0).map((a) => c.paramPoint(a)).map((a) => l.transform(a)).filter((a) => t.isOnSegment(a));\n}\nconst xn = (t, n = 1e-9) => {\n let e = t;\n return Math.abs(t) < n && (e = 0), e.toFixed(-Math.log10(n));\n};\nfunction Rt(t, n = 1e-9) {\n return Array.from(\n new Map(t.map((e) => [xn(e, n), e])).values()\n );\n}\nconst Sn = (t, n) => {\n const [[e, s, i, o], [r, l, c, a]] = n.polynomialCoefficients, f = t.coefficients, u = f.x2, h = f.xy, p = f.y2, d = f.x, m = f.y, P = f.c, w = e * e, x = s * s, F = i * i, b = o * o, R = r * r, T = l * l, L = c * c, j = a * a, z = P + d * e + u * w + m * r + h * e * r + p * R, H = d * s + 2 * u * e * s + h * s * r + m * l + h * e * l + 2 * p * r * l, Qt = u * x + d * i + 2 * u * e * i + h * i * r + h * s * l + p * T + m * c + h * e * c + 2 * p * r * c, Wt = 2 * u * s * i + d * o + 2 * u * e * o + h * o * r + h * i * l + h * s * c + 2 * p * l * c + m * a + h * e * a + 2 * p * r * a, Jt = u * F + 2 * u * s * o + h * o * l + h * i * c + p * L + h * s * a + 2 * p * l * a, Kt = 2 * u * i * o + h * o * c + h * i * a + 2 * p * c * a, Zt = u * b + h * o * a + p * j;\n return [z, H, Qt, Wt, Jt, Kt, Zt];\n};\nfunction Pt(t, n) {\n const e = Math.max(t.precision, n.precision), s = Sn(t, n), i = Lt(s, e).filter((o) => o >= -n.precision && o <= 1 + n.precision);\n return Rt(i, e).map((o) => n.paramPoint(o)).filter((o) => t.isOnSegment(o));\n}\nconst yn = (t, n) => {\n const [[e, s, i], [o, r, l]] = n.polynomialCoefficients, c = t.coefficients, a = c.x2, f = c.xy, u = c.y2, h = c.x, p = c.y, d = c.c, m = e * e, P = s * s, w = i * i, x = o * o, F = r * r, b = l * l, R = a * m + f * e * o + u * x + h * e + p * o + d, T = 2 * a * e * s + f * e * r + f * s * o + 2 * u * o * r + h * s + p * r, L = 2 * a * e * i + a * P + f * e * l + f * s * r + f * i * o + 2 * u * o * l + u * F + h * i + p * l, j = 2 * a * s * i + f * s * l + f * i * r + 2 * u * r * l, z = a * w + f * i * l + u * b;\n return [R, T, L, j, z];\n};\nfunction wt(t, n) {\n const e = Math.max(t.precision, n.precision), s = yn(t, n), i = rn(...s).filter((o) => o >= -n.precision && o <= 1 + n.precision);\n return Rt(i, e).map((o) => n.paramPoint(o)).filter((o) => t.isOnSegment(o));\n}\nfunction E(t, { firstPoint: n, lastPoint: e }, s = 1e-9) {\n const i = k(e, n);\n return Math.abs(i[0]) < s ? i[1] > 0 ? n[0] - t[0] : t[0] - n[0] : Math.abs(i[1]) < s ? i[0] > 0 ? t[1] - n[1] : n[1] - t[1] : ln(i, k(t, n)) / cn(i);\n}\nclass ct {\n constructor(n, e, s, i) {\n this.firstPoint = n, this.lastPoint = e, this.negativeThickness = s, this.positiveThickness = i;\n }\n get width() {\n return this.positiveThickness - this.negativeThickness;\n }\n}\nconst bn = 3 / 4, Cn = 4 / 9;\nfunction Mn(t) {\n const n = E(t.firstControlPoint, t), e = E(t.lastControlPoint, t), s = n * e > 0 ? bn : Cn;\n return new ct(\n t.firstPoint,\n t.lastPoint,\n s * Math.min(0, n, e),\n s * Math.max(0, n, e)\n );\n}\nfunction An(t) {\n const n = E(t.controlPoint, t);\n return new ct(\n t.firstPoint,\n t.lastPoint,\n Math.min(0, n / 2),\n Math.max(0, n / 2)\n );\n}\nfunction In(t) {\n if (t instanceof I)\n return Mn(t);\n if (t instanceof A)\n return An(t);\n throw new Error(\"Not implemented\");\n}\nfunction En(t) {\n const n = t.paramPoint(0.5), e = Tt(k(n, t.firstPoint)), s = q(n, e), i = {\n firstPoint: n,\n lastPoint: s\n }, o = [\n E(t.firstPoint, i),\n E(t.lastPoint, i)\n ];\n return t instanceof I ? o.push(\n E(t.firstControlPoint, i),\n E(t.lastControlPoint, i)\n ) : t instanceof A && o.push(E(t.controlPoint, i)), new ct(\n n,\n s,\n Math.min(...o),\n Math.max(...o)\n );\n}\nfunction xt(t, n) {\n const e = [];\n for (let s = 1; s < t.length; s++) {\n const i = t[s];\n if (i[1] === n) {\n e.push(i[0]);\n continue;\n }\n const o = t[s - 1], r = n - o[1], l = n - i[1];\n if (r * l < 0) {\n e.push(\n o[0] + (n - o[1]) * (i[0] - o[0]) / (i[1] - o[1])\n );\n continue;\n }\n }\n return e;\n}\nclass Y {\n constructor(n, e) {\n this.from = n, this.to = e;\n }\n get size() {\n return this.from === \"start\" ? this.to === \"end\" ? 1 : this.to : this.to === \"end\" ? 1 - this.from : Math.abs(this.from - this.to);\n }\n clipCurve(n) {\n return this.from === \"start\" ? this.to === \"end\" ? n : n.splitAtParameters([this.to])[0] : this.to === \"end\" ? n.splitAtParameters([this.from])[1] : n.splitAtParameters([this.from, this.to])[1];\n }\n}\nfunction Fn(t, n) {\n if (t instanceof I)\n return new Bn([\n E(t.firstPoint, n),\n E(t.firstControlPoint, n),\n E(t.lastControlPoint, n),\n E(t.lastPoint, n)\n ]);\n if (t instanceof A)\n return new vn([\n E(t.firstPoint, n),\n E(t.controlPoint, n),\n E(t.lastPoint, n)\n ]);\n throw new Error(\"Not implemented\");\n}\nclass vn {\n constructor(n) {\n C(this, \"topHull\", []);\n C(this, \"bottomHull\", []);\n this.distances = n;\n const [e, s, i] = n, o = [0, e], r = [1 / 2, s], l = [1, i], c = i - e, a = e;\n s - (c * (1 / 2) + a) > 0 ? (this.topHull = [o, r, l], this.bottomHull = [o, l]) : (this.topHull = [o, l], this.bottomHull = [o, r, l]);\n }\n get startDistance() {\n return this.distances[0];\n }\n get endDistance() {\n return this.distances[2];\n }\n}\nclass Bn {\n constructor(n) {\n C(this, \"topHull\", []);\n C(this, \"bottomHull\", []);\n this.distances = n;\n const [e, s, i, o] = n, r = [0, e], l = [1 / 3, s], c = [2 / 3, i], a = [1, o], f = o - e, u = e, h = s - (f * (1 / 3) + u), p = i - (f * (2 / 3) + u);\n let d = null, m = null;\n if (h * p < 0)\n d = [r, l, a], m = [r, c, a];\n else {\n const w = h / p;\n w >= 2 ? (d = [r, l, a], m = [r, a]) : w <= 0.5 ? (d = [r, c, a], m = [r, a]) : (d = [r, l, c, a], m = [r, a]);\n }\n h < 0 && ([d, m] = [m, d]), this.topHull = d, this.bottomHull = m;\n }\n get startDistance() {\n return this.distances[0];\n }\n get endDistance() {\n return this.distances[3];\n }\n}\nfunction St(t, n) {\n const e = Fn(n, t), s = xt(\n e.topHull,\n t.negativeThickness\n ), i = xt(\n e.bottomHull,\n t.positiveThickness\n ), o = e.endDistance >= t.negativeThickness && e.endDistance <= t.positiveThickness;\n if (!s.length && !i.length)\n return o ? new Y(\"start\", \"end\") : null;\n if (s.length === 1 && i.length === 1)\n return new Y(s[0], i[0]);\n if (s.length === 2 && i.length === 2)\n throw new Error(\n \"Bug in the clipping algorithm, unexpected number of crossing points\"\n );\n const r = s.length ? s : i;\n return r.length === 2 ? new Y(r[0], r[1]) : o ? new Y(r[0], \"end\") : new Y(\"start\", r[0]);\n}\nfunction yt(t, n) {\n const e = In(t), s = St(e, n);\n if (!s)\n return null;\n const i = En(t), o = St(\n i,\n n\n );\n return o ? s.size > o.size ? o.clipCurve(n) : s.clipCurve(n) : null;\n}\nconst W = (t) => t instanceof A ? $(k(t.controlPoint, t.firstPoint)) + $(k(t.controlPoint, t.lastPoint)) : $(k(t.firstControlPoint, t.firstPoint)) + $(k(t.lastControlPoint, t.firstControlPoint)) + $(k(t.lastControlPoint, t.lastPoint));\nfunction D(t, n, e = 1e-9, { maxIterations: s = 100 } = {}) {\n const i = Math.max(e * e, Number.EPSILON * 10);\n let o = t, r = n, l = W(o), c = W(r);\n for (let a = 0; a < s; a++) {\n const f = l > i ? yt(r, o) : o;\n if (!f) return [];\n const u = W(f), h = c > i ? yt(f, r) : r;\n if (!h) return [];\n const p = W(h);\n if (u <= i && p <= i)\n return [\n f.boundingBox.intersection(h.boundingBox).center\n ];\n if (g(f.firstPoint, f.lastPoint) && h.isOnSegment(f.firstPoint))\n return [f.firstPoint];\n if (g(h.firstPoint, h.lastPoint) && f.isOnSegment(h.firstPoint))\n return [h.firstPoint];\n if (u > 0.8 * l && p > 0.8 * c)\n if (u / l > p / c) {\n const [d, m] = f.splitAtParameters([\n 0.5\n ]);\n return U(\n [\n ...D(d, h, e, {\n maxIterations: s - a\n }),\n ...D(m, h, e, {\n maxIterations: s - a\n })\n ],\n e\n );\n } else {\n const [d, m] = h.splitAtParameters([\n 0.5\n ]);\n return U(\n [\n ...D(f, d, e, {\n maxIterations: s - a\n }),\n ...D(f, m, e, {\n maxIterations: s - a\n })\n ],\n e\n );\n }\n o = f, r = h, l = u, c = p;\n }\n throw new Error(\"Bézier clip: Maximum number of iterations reached\");\n}\nfunction kn(t, n) {\n const e = [];\n if ([\n [t.firstPoint, n],\n [t.lastPoint, n],\n [n.firstPoint, t],\n [n.lastPoint, t]\n ].forEach(([i, o]) => {\n o.isOnSegment(i) && e.push(i);\n }), e.length < 2)\n return null;\n if (e.length === 2)\n return [t.splitAt(e)[1]];\n if (e.length === 3)\n return g(e[0], t.firstPoint) && g(e[1], t.lastPoint) ? [t] : [n];\n if (e.length === 4)\n return [t];\n}\nfunction _n(t, n, e = !1) {\n const s = Math.max(t.precision, n.precision);\n if (e) {\n const i = kn(t, n);\n if (i)\n return i;\n }\n return D(t, n, s);\n}\nfunction On(t, n) {\n const e = [];\n if ([\n [t.firstPoint, n],\n [t.lastPoint, n],\n [n.firstPoint, t],\n [n.lastPoint, t]\n ].forEach(([i, o]) => {\n o.isOnSegment(i) && e.push(i);\n }), e.length < 2)\n return null;\n if (e.length === 2)\n return [t.splitAt(e)[1]];\n if (e.length === 3)\n return g(e[0], t.firstPoint) && g(e[1], t.lastPoint) ? [t] : [n];\n if (e.length === 4)\n return [t];\n}\nfunction Tn(t, n, e = !1) {\n const s = Math.max(t.precision, n.precision);\n if (e) {\n const i = On(t, n);\n if (i)\n return i;\n }\n return D(t, n, s);\n}\nfunction ae(t, n, e) {\n if (t instanceof y && n instanceof y) {\n const s = zt(\n t,\n n,\n !1,\n e\n );\n return s === null ? [] : [s];\n }\n if (t instanceof y && n instanceof S)\n return J(t, n, e);\n if (t instanceof S && n instanceof y)\n return J(n, t, e);\n if (t instanceof S && n instanceof S)\n return qt(t, n, !1, e);\n throw new Error(\"Not implemented\");\n}\nfunction K(t, n, e) {\n if (t instanceof y && n instanceof y) {\n const s = zt(\n t,\n n,\n !0,\n e\n );\n return s === null ? { intersections: [], overlaps: [], count: 0 } : s instanceof y ? { intersections: [], overlaps: [s], count: 1 } : { intersections: [s], overlaps: [], count: 1 };\n }\n if (!t.boundingBox.overlaps(n.boundingBox))\n return { intersections: [], overlaps: [], count: 0 };\n if (t instanceof y && n instanceof S) {\n const s = J(t, n, e);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof S && n instanceof y) {\n const s = J(n, t, e);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof S && n instanceof S) {\n const s = qt(\n t,\n n,\n !0,\n e\n );\n return s.length ? s[0] instanceof S ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (t instanceof y && n instanceof M) {\n const s = et(\n t,\n n,\n e\n );\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (n instanceof y && t instanceof M) {\n const s = et(\n n,\n t,\n e\n );\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof S && n instanceof M) {\n const s = mt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (n instanceof S && t instanceof M) {\n const s = mt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof M && n instanceof M) {\n const s = wn(\n t,\n n,\n !0\n );\n return s.length ? s[0] instanceof M ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (t instanceof y && (n instanceof I || n instanceof A)) {\n const s = gt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (n instanceof y && (t instanceof I || t instanceof A)) {\n const s = gt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((t instanceof S || t instanceof M) && n instanceof A) {\n const s = wt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((n instanceof S || n instanceof M) && t instanceof A) {\n const s = wt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((t instanceof S || t instanceof M) && n instanceof I) {\n const s = Pt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((n instanceof S || n instanceof M) && t instanceof I) {\n const s = Pt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof A && n instanceof A) {\n const s = Tn(\n t,\n n\n );\n return s.length ? s[0] instanceof A ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (t instanceof A && n instanceof I || n instanceof A && t instanceof I) {\n const s = D(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof I && n instanceof I) {\n const s = _n(\n t,\n n\n );\n return s.length ? s[0] instanceof I ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n throw new Error(\"Not implemented\");\n}\nfunction Vt(t) {\n const n = [];\n for (let e = 0; e < t; e++)\n for (let s = 0; s <= e; s++)\n n.push([e, s]);\n return n;\n}\nfunction* st(t) {\n for (const [n, e] of Vt(t.length))\n n !== e && (yield [t[n], t[e]]);\n}\nclass Nt extends lt {\n constructor(e, { ignoreChecks: s = !1 } = {}) {\n super();\n C(this, \"segments\");\n C(this, \"_boundingBox\", null);\n s || Ut(e), this.segments = e;\n }\n get repr() {\n return this.segments.map((e) => e.repr).join(`\n`) + `\n`;\n }\n get info() {\n return this.repr;\n }\n get firstPoint() {\n return this.segments[0].firstPoint;\n }\n get lastPoint() {\n return this.segments[this.segments.length - 1].lastPoint;\n }\n get segmentsCount() {\n return this.segments.length;\n }\n onStroke(e) {\n return this.segments.some((s) => s.isOnSegment(e));\n }\n intersects(e) {\n return this.boundingBox.overlaps(e.boundingBox) ? this.segments.some(\n (s) => e.segments.some(\n (i) => K(s, i).count > 0\n )\n ) : !1;\n }\n overlappingSegments(e) {\n return this.segments.flatMap((s) => e.segments.flatMap((i) => s.boundingBox.overlaps(i.boundingBox) ? K(s, i).overlaps : []));\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n let e = this.segments[0].boundingBox;\n this.segments.slice(1).forEach((s) => {\n e = e.merge(s.boundingBox);\n }), this._boundingBox = e;\n }\n return this._boundingBox;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return this.repr;\n }\n}\nfunction Ln(t, n = \"Stroke\") {\n Vt(t.length).forEach(\n ([e, s]) => {\n if (e === s) return;\n const i = t[e], o = t[s], r = K(i, o), l = Math.max(i.precision, o.precision);\n if (r.count !== 0) {\n if (r.count === 1 && !r.overlaps.length) {\n const c = e - s, a = r.intersections[0];\n if (c === 1 && g(i.firstPoint, a, l) || c === -1 && g(i.lastPoint, a, l) || c === t.length - 1 && g(i.lastPoint, a, l) && g(o.firstPoint, a, l) || -c === t.length - 1 && g(i.firstPoint, a, l) && g(o.lastPoint, a, l))\n return;\n }\n if (!(r.count === 2 && t.length === 2 && (g(\n i.firstPoint,\n r.intersections[0],\n l\n ) && g(\n i.lastPoint,\n r.intersections[1],\n l\n ) || g(\n i.firstPoint,\n r.intersections[1],\n l\n ) && g(\n i.lastPoint,\n r.intersections[0],\n l\n ))))\n throw new Error(\n `${n} segments must not intersect, but segments ${i.info} and ${o.info} do at ${JSON.stringify(\n r.intersections\n )}`\n );\n }\n }\n );\n}\nfunction Ut(t, n = \"Stroke\") {\n if (t.length === 0)\n throw new Error(`${n} must have at least one segment`);\n N([t.slice(0, -1), t.slice(1)]).forEach(\n ([e, s]) => {\n if (!g(e.lastPoint, s.firstPoint))\n throw new Error(\n `${n} segments must be connected, but ${e.info} and ${s.info} are not`\n );\n }\n ), Ln(t, n);\n}\nfunction bt(t, n) {\n return !!(t instanceof y && n instanceof y && un(t.V, n.V) || t instanceof S && n instanceof S && g(t.center, n.center) && t.radius - n.radius < t.precision);\n}\nfunction Ct(t, n) {\n if (t instanceof y && n instanceof y)\n return new y(t.firstPoint, n.lastPoint);\n if (t instanceof S && n instanceof S)\n return new S(\n t.firstPoint,\n n.lastPoint,\n t.center,\n t.clockwise\n );\n throw new Error(\"Not implemented\");\n}\nfunction jt(t) {\n let n = !1;\n const e = [];\n for (const s of t.segments) {\n if (e.length === 0) {\n e.push(s);\n continue;\n }\n const i = e[e.length - 1];\n bt(i, s) ? (n = !0, e.pop(), e.push(Ct(i, s))) : e.push(s);\n }\n if (g(t.firstPoint, t.lastPoint) && bt(\n e[0],\n e[e.length - 1]\n )) {\n n = !0;\n const s = e.pop();\n e[0] = Ct(s, e[0]);\n }\n return n ? e : null;\n}\nclass B extends Nt {\n constructor() {\n super(...arguments);\n C(this, \"strokeType\", \"STRAND\");\n }\n reverse() {\n const e = this.segments.map((s) => s.reverse());\n return e.reverse(), new B(e, { ignoreChecks: !0 });\n }\n clone() {\n return new B(\n this.segments.map((e) => e.clone()),\n { ignoreChecks: !0 }\n );\n }\n extend(e) {\n if (!g(this.lastPoint, e.firstPoint))\n throw console.error(this.repr, e.repr), new Error(\"Cannot extend strand: connection point is not the same\");\n return new B([...this.segments, ...e.segments]);\n }\n simplify() {\n const e = jt(this);\n return e ? new B(e, { ignoreChecks: !0 }) : this;\n }\n transform(e) {\n return new B(\n this.segments.map((s) => s.transform(e)),\n { ignoreChecks: !0 }\n );\n }\n}\nconst zn = (t, n) => {\n const e = an(n, {\n V: [1, 0],\n firstPoint: t,\n precision: n.precision\n });\n if (e === \"parallel\")\n return 0;\n const { intersectionParam1: s, intersectionParam2: i } = e;\n if (!n.isValidParameter(s) || i <= -n.precision) return 0;\n if (Math.abs(s) < n.precision || Math.abs(s - 1) < n.precision) {\n const [, o] = n.midPoint;\n return t[1] - o < 0 ? 1 : 0;\n }\n return 1;\n};\nclass ut {\n constructor(n) {\n C(this, \"_count\", 0);\n C(this, \"segment\");\n this.segment = n;\n }\n update(n, e = !1) {\n !e && !this.segment.isOnSegment(n) || (g(n, this.segment.firstPoint) ? this._count += this.segment.tangentAtFirstPoint[1] > 0 ? 1 : 0 : g(n, this.segment.lastPoint) ? this._count += this.segment.tangentAtLastPoint[1] > 0 ? 0 : 1 : this._count += 1);\n }\n get count() {\n return this._count;\n }\n}\nconst qn = (t, n) => {\n const e = n.precision, s = Math.abs(t[1] - n.center[1]);\n if (s > n.radius + e) return 0;\n const i = fn(t, n.center), o = n.radius * n.radius, r = e * e;\n if (Math.abs(i - o) < r && n.isOnSegment(t))\n return 0;\n const l = i - o > r;\n if (l && n.center[0] < t[0]) return 0;\n const c = Math.sqrt(\n n.radius * n.radius - s * s\n ), a = new ut(n);\n return a.update([n.center[0] + c, t[1]]), l && a.update([n.center[0] - c, t[1]]), a.count;\n}, Dn = (t, n) => {\n const e = n.boundingBox.xMax + n.boundingBox.width / 2, s = new y(t, [e, t[1]]), i = new ut(n);\n return et(s, n).forEach((o) => {\n i.update(o, !0);\n }), i.count;\n}, Rn = (t, n) => {\n const e = new ut(n);\n return n.paramsAtY(t[1]).map((s) => {\n try {\n return n.paramPoint(s);\n } catch {\n return null;\n }\n }).filter((s) => s !== null).filter((s) => {\n const [i] = s;\n return i >= t[0];\n }).forEach((s) => {\n e.update(s, !0);\n }), e.count;\n};\nfunction Vn(t, n) {\n if (n instanceof y)\n return zn(t, n);\n if (n instanceof S)\n return qn(t, n);\n if (n instanceof M)\n return Dn(t, n);\n if (n instanceof I || n instanceof A)\n return Rn(t, n);\n throw new Error(\"Not implemented\");\n}\nclass O extends Nt {\n constructor(e, { ignoreChecks: s = !1 } = {}) {\n super(e, { ignoreChecks: !0 });\n C(this, \"strokeType\", \"LOOP\");\n C(this, \"_clockwise\", null);\n s || Nn(e);\n }\n get clockwise() {\n if (this._clockwise === null) {\n const e = this.segments.flatMap((i) => i instanceof y ? [i.firstPoint] : [i.firstPoint, i.paramPoint(0.5)]), s = e.map((i, o) => {\n const r = e[(o + 1) % e.length];\n return (r[0] - i[0]) * (r[1] + i[1]);\n }).reduce((i, o) => i + o, 0);\n this._clockwise = s > 0;\n }\n return this._clockwise;\n }\n clone() {\n return new O(\n this.segments.map((e) => e.clone()),\n { ignoreChecks: !0 }\n );\n }\n reverse() {\n const e = this.segments.map((s) => s.reverse());\n return e.reverse(), new O(e, { ignoreChecks: !0 });\n }\n transform(e) {\n return new O(\n this.segments.map((s) => s.transform(e)),\n { ignoreChecks: !0 }\n );\n }\n contains(e) {\n return this.onStroke(e) || !this.boundingBox.contains(e) ? !1 : this.segments.reduce((i, o) => i + Vn(e, o), 0) % 2 === 1;\n }\n simplify() {\n const e = jt(this);\n return e ? new O(e, { ignoreChecks: !0 }) : this;\n }\n}\nfunction Nn(t) {\n if (Ut(t, \"Loop\"), !g(t[0].firstPoint, t[t.length - 1].lastPoint))\n throw new Error(\"Loop segment must be closed\");\n}\nconst Un = [\n y,\n S,\n M,\n A,\n I\n];\nfunction jn(t) {\n return Un.some((n) => t instanceof n);\n}\nfunction Ht(t) {\n if (t instanceof y)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint\n };\n if (t instanceof S)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n center: t.center,\n clockwise: t.clockwise\n };\n if (t instanceof M)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n center: t.center,\n clockwise: t.clockwise,\n majorRadius: t.majorRadius,\n minorRadius: t.minorRadius,\n tiltAngle: t.tiltAngle\n };\n if (t instanceof A)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n controlPoint: t.controlPoint\n };\n if (t instanceof I)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n firstControlPoint: t.firstControlPoint,\n lastControlPoint: t.lastControlPoint\n };\n throw new Error(\"Unknown segment type\");\n}\nfunction it(t) {\n return {\n type: \"LOOP\",\n segments: t.segments.map(Ht)\n };\n}\nfunction $t(t) {\n return {\n type: \"FIGURE\",\n contour: it(t.contour),\n holes: t.holes.map(it)\n };\n}\nfunction Hn(t) {\n return {\n type: \"DIAGRAM\",\n figures: t.figures.map($t)\n };\n}\nfunction Mt(t) {\n if (t instanceof _)\n return Hn(t);\n if (t instanceof v)\n return $t(t);\n if (t instanceof O)\n return it(t);\n if (jn(t))\n return Ht(t);\n throw new Error(\"Unknown shape type\");\n}\nclass $n {\n constructor() {\n this.ids = [], this.values = [], this.length = 0;\n }\n clear() {\n this.length = 0;\n }\n push(n, e) {\n let s = this.length++;\n for (; s > 0; ) {\n const i = s - 1 >> 1, o = this.values[i];\n if (e >= o) break;\n this.ids[s] = this.ids[i], this.values[s] = o, s = i;\n }\n this.ids[s] = n, this.values[s] = e;\n }\n pop() {\n if (this.length === 0) return;\n const n = this.ids[0];\n if (this.length--, this.length > 0) {\n const e = this.ids[0] = this.ids[this.length], s = this.values[0] = this.values[this.length], i = this.length >> 1;\n let o = 0;\n for (; o < i; ) {\n let r = (o << 1) + 1;\n const l = r + 1;\n let c = this.ids[r], a = this.values[r];\n const f = this.values[l];\n if (l < this.length && f < a && (r = l, c = this.ids[l], a = f), a >= s) break;\n this.ids[o] = c, this.values[o] = a, o = r;\n }\n this.ids[o] = e, this.values[o] = s;\n }\n return n;\n }\n peek() {\n if (this.length !== 0)\n return this.ids[0];\n }\n peekValue() {\n if (this.length !== 0)\n return this.values[0];\n }\n shrink() {\n this.ids.length = this.values.length = this.length;\n }\n}\nconst At = [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], nt = 3;\nclass at {\n /**\n * Recreate a Flatbush index from raw `ArrayBuffer` or `SharedArrayBuffer` data.\n * @param {ArrayBuffer | SharedArrayBuffer} data\n * @param {number} [byteOffset=0] byte offset to the start of the Flatbush buffer in the referenced ArrayBuffer.\n * @returns {Flatbush} index\n */\n static from(n, e = 0) {\n if (e % 8 !== 0)\n throw new Error(\"byteOffset must be 8-byte aligned.\");\n if (!n || n.byteLength === void 0 || n.buffer)\n throw new Error(\"Data must be an instance of ArrayBuffer or SharedArrayBuffer.\");\n const [s, i] = new Uint8Array(n, e + 0, 2);\n if (s !== 251)\n throw new Error(\"Data does not appear to be in a Flatbush format.\");\n const o = i >> 4;\n if (o !== nt)\n throw new Error(`Got v${o} data when expected v${nt}.`);\n const r = At[i & 15];\n if (!r)\n throw new Error(\"Unrecognized array type.\");\n const [l] = new Uint16Array(n, e + 2, 1), [c] = new Uint32Array(n, e + 4, 1);\n return new at(c, l, r, void 0, n, e);\n }\n /**\n * Create a Flatbush index that will hold a given number of items.\n * @param {number} numItems\n * @param {number} [nodeSize=16] Size of the tree node (16 by default).\n * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).\n * @param {ArrayBufferConstructor | SharedArrayBufferConstructor} [ArrayBufferType=ArrayBuffer] The array buffer type used to store data (`ArrayBuffer` by default).\n * @param {ArrayBuffer | SharedArrayBuffer} [data] (Only used internally)\n * @param {number} [byteOffset=0] (Only used internally)\n */\n constructor(n, e = 16, s = Float64Array, i = ArrayBuffer, o, r = 0) {\n if (n === void 0) throw new Error(\"Missing required argument: numItems.\");\n if (isNaN(n) || n <= 0) throw new Error(`Unexpected numItems value: ${n}.`);\n this.numItems = +n, this.nodeSize = Math.min(Math.max(+e, 2), 65535), this.byteOffset = r;\n let l = n, c = l;\n this._levelBounds = [l * 4];\n do\n l = Math.ceil(l / this.nodeSize), c += l, this._levelBounds.push(c * 4);\n while (l !== 1);\n this.ArrayType = s, this.IndexArrayType = c < 16384 ? Uint16Array : Uint32Array;\n const a = At.indexOf(this.ArrayType), f = c * 4 * this.ArrayType.BYTES_PER_ELEMENT;\n if (a < 0)\n throw new Error(`Unexpected typed array class: ${s}.`);\n o && o.byteLength !== void 0 && !o.buffer ? (this.data = o, this._boxes = new this.ArrayType(this.data, r + 8, c * 4), this._indices = new this.IndexArrayType(this.data, r + 8 + f, c), this._pos = c * 4, this.minX = this._boxes[this._pos - 4], this.minY = this._boxes[this._pos - 3], this.maxX = this._boxes[this._pos - 2], this.maxY = this._boxes[this._pos - 1]) : (this.data = new i(8 + f + c * this.IndexArrayType.BYTES_PER_ELEMENT), this._boxes = new this.ArrayType(this.data, 8, c * 4), this._indices = new this.IndexArrayType(this.data, 8 + f, c), this._pos = 0, this.minX = 1 / 0, this.minY = 1 / 0, this.maxX = -1 / 0, this.maxY = -1 / 0, new Uint8Array(this.data, 0, 2).set([251, (nt << 4) + a]), new Uint16Array(this.data, 2, 1)[0] = e, new Uint32Array(this.data, 4, 1)[0] = n), this._queue = new $n();\n }\n /**\n * Add a given rectangle to the index.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @returns {number} A zero-based, incremental number that represents the newly added rectangle.\n */\n add(n, e, s = n, i = e) {\n const o = this._pos >> 2, r = this._boxes;\n return this._indices[o] = o, r[this._pos++] = n, r[this._pos++] = e, r[this._pos++] = s, r[this._pos++] = i, n < this.minX && (this.minX = n), e < this.minY && (this.minY = e), s > this.maxX && (this.maxX = s), i > this.maxY && (this.maxY = i), o;\n }\n /** Perform indexing of the added rectangles. */\n finish() {\n if (this._pos >> 2 !== this.numItems)\n throw new Error(`Added ${this._pos >> 2} items when expected ${this.numItems}.`);\n const n = this._boxes;\n if (this.numItems <= this.nodeSize) {\n n[this._pos++] = this.minX, n[this._pos++] = this.minY, n[this._pos++] = this.maxX, n[this._pos++] = this.maxY;\n return;\n }\n const e = this.maxX - this.minX || 1, s = this.maxY - this.minY || 1, i = new Uint32Array(this.numItems), o = 65535;\n for (let r = 0, l = 0; r < this.numItems; r++) {\n const c = n[l++], a = n[l++], f = n[l++], u = n[l++], h = Math.floor(o * ((c + f) / 2 - this.minX) / e), p = Math.floor(o * ((a + u) / 2 - this.minY) / s);\n i[r] = Xn(h, p);\n }\n ot(i, n, this._indices, 0, this.numItems - 1, this.nodeSize);\n for (let r = 0, l = 0; r < this._levelBounds.length - 1; r++) {\n const c = this._levelBounds[r];\n for (; l < c; ) {\n const a = l;\n let f = n[l++], u = n[l++], h = n[l++], p = n[l++];\n for (let d = 1; d < this.nodeSize && l < c; d++)\n f = Math.min(f, n[l++]), u = Math.min(u, n[l++]), h = Math.max(h, n[l++]), p = Math.max(p, n[l++]);\n this._indices[this._pos >> 2] = a, n[this._pos++] = f, n[this._pos++] = u, n[this._pos++] = h, n[this._pos++] = p;\n }\n }\n }\n /**\n * Search the index by a bounding box.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @param {(index: number) => boolean} [filterFn] An optional function for filtering the results.\n * @returns {number[]} An array of indices of items intersecting or touching the given bounding box.\n */\n search(n, e, s, i, o) {\n if (this._pos !== this._boxes.length)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n let r = this._boxes.length - 4;\n const l = [], c = [];\n for (; r !== void 0; ) {\n const a = Math.min(r + this.nodeSize * 4, Et(r, this._levelBounds));\n for (let f = r; f < a; f += 4) {\n if (s < this._boxes[f] || i < this._boxes[f + 1] || n > this._boxes[f + 2] || e > this._boxes[f + 3]) continue;\n const u = this._indices[f >> 2] | 0;\n r >= this.numItems * 4 ? l.push(u) : (o === void 0 || o(u)) && c.push(u);\n }\n r = l.pop();\n }\n return c;\n }\n /**\n * Search items in order of distance from the given point.\n * @param {number} x\n * @param {number} y\n * @param {number} [maxResults=Infinity]\n * @param {number} [maxDistance=Infinity]\n * @param {(index: number) => boolean} [filterFn] An optional function for filtering the results.\n * @returns {number[]} An array of indices of items found.\n */\n neighbors(n, e, s = 1 / 0, i = 1 / 0, o) {\n if (this._pos !== this._boxes.length)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n let r = this._boxes.length - 4;\n const l = this._queue, c = [], a = i * i;\n t: for (; r !== void 0; ) {\n const f = Math.min(r + this.nodeSize * 4, Et(r, this._levelBounds));\n for (let u = r; u < f; u += 4) {\n const h = this._indices[u >> 2] | 0, p = It(n, this._boxes[u], this._boxes[u + 2]), d = It(e, this._boxes[u + 1], this._boxes[u + 3]), m = p * p + d * d;\n m > a || (r >= this.numItems * 4 ? l.push(h << 1, m) : (o === void 0 || o(h)) && l.push((h << 1) + 1, m));\n }\n for (; l.length && l.peek() & 1; )\n if (l.peekValue() > a || (c.push(l.pop() >> 1), c.length === s)) break t;\n r = l.length ? l.pop() >> 1 : void 0;\n }\n return l.clear(), c;\n }\n}\nfunction It(t, n, e) {\n return t < n ? n - t : t <= e ? 0 : t - e;\n}\nfunction Et(t, n) {\n let e = 0, s = n.length - 1;\n for (; e < s; ) {\n const i = e + s >> 1;\n n[i] > t ? s = i : e = i + 1;\n }\n return n[e];\n}\nfunction ot(t, n, e, s, i, o) {\n if (Math.floor(s / o) >= Math.floor(i / o)) return;\n const r = t[s + i >> 1];\n let l = s - 1, c = i + 1;\n for (; ; ) {\n do\n l++;\n while (t[l] < r);\n do\n c--;\n while (t[c] > r);\n if (l >= c) break;\n Yn(t, n, e, l, c);\n }\n ot(t, n, e, s, c, o), ot(t, n, e, c + 1, i, o);\n}\nfunction Yn(t, n, e, s, i) {\n const o = t[s];\n t[s] = t[i], t[i] = o;\n const r = 4 * s, l = 4 * i, c = n[r], a = n[r + 1], f = n[r + 2], u = n[r + 3];\n n[r] = n[l], n[r + 1] = n[l + 1], n[r + 2] = n[l + 2], n[r + 3] = n[l + 3], n[l] = c, n[l + 1] = a, n[l + 2] = f, n[l + 3] = u;\n const h = e[s];\n e[s] = e[i], e[i] = h;\n}\nfunction Xn(t, n) {\n let e = t ^ n, s = 65535 ^ e, i = 65535 ^ (t | n), o = t & (n ^ 65535), r = e | s >> 1, l = e >> 1 ^ e, c = i >> 1 ^ s & o >> 1 ^ i, a = e & i >> 1 ^ o >> 1 ^ o;\n e = r, s = l, i = c, o = a, r = e & e >> 2 ^ s & s >> 2, l = e & s >> 2 ^ s & (e ^ s) >> 2, c ^= e & i >> 2 ^ s & o >> 2, a ^= s & i >> 2 ^ (e ^ s) & o >> 2, e = r, s = l, i = c, o = a, r = e & e >> 4 ^ s & s >> 4, l = e & s >> 4 ^ s & (e ^ s) >> 4, c ^= e & i >> 4 ^ s & o >> 4, a ^= s & i >> 4 ^ (e ^ s) & o >> 4, e = r, s = l, i = c, o = a, c ^= e & i >> 8 ^ s & o >> 8, a ^= s & i >> 8 ^ (e ^ s) & o >> 8, e = c ^ c >> 1, s = a ^ a >> 1;\n let f = t ^ n, u = s | 65535 ^ (f | e);\n return f = (f | f << 8) & 16711935, f = (f | f << 4) & 252645135, f = (f | f << 2) & 858993459, f = (f | f << 1) & 1431655765, u = (u | u << 8) & 16711935, u = (u | u << 4) & 252645135, u = (u | u << 2) & 858993459, u = (u | u << 1) & 1431655765, (u << 1 | f) >>> 0;\n}\nfunction Yt(t, n = 1e-7) {\n if (t.length === 0) return [];\n if (t.length === 1) return [t];\n const e = new at(t.length);\n t.forEach((o) => {\n const [r, l] = o.firstPoint;\n e.add(r - n, l - n, r + n, l + n);\n }), e.finish();\n const s = [], i = /* @__PURE__ */ new Set();\n return t.forEach((o, r) => {\n if (i.has(r)) return;\n const l = [o];\n let c = r;\n i.add(r);\n let a = t.length;\n for (; ; ) {\n if (a-- < 0)\n throw new Error(\"Infinite loop detected\");\n const f = l[l.length - 1].lastPoint, [u, h] = f, p = e.search(\n u - n,\n h - n,\n u + n,\n h + n\n ), d = (x) => Math.abs((c - x) % t.length), m = p.filter((x) => !i.has(x)).map((x) => [\n t[x],\n x,\n d(x)\n ]).sort(([, , x], [, , F]) => d(x) - d(F));\n if (m.length === 0) {\n s.push(l);\n break;\n }\n const [P, w] = m[0];\n l.push(P), i.add(w), c = w;\n }\n }), s;\n}\nclass v extends lt {\n constructor(e, s = [], { ignoreChecks: i = !1 } = {}) {\n super();\n C(this, \"contour\");\n C(this, \"holes\");\n i || Gn(e, s), this.contour = e, this.holes = s;\n }\n get boundingBox() {\n return this.contour.boundingBox;\n }\n get isFull() {\n return this.holes.length === 0;\n }\n get allLoops() {\n return [this.contour, ...this.holes];\n }\n clone() {\n return new v(\n this.contour.clone(),\n this.holes.map((e) => e.clone())\n );\n }\n transform(e) {\n return new v(\n this.contour.transform(e),\n this.holes.map((s) => s.transform(e))\n );\n }\n contains(e) {\n return this.contour.contains(e) && !this.holes.some((s) => s.contains(e));\n }\n intersects(e) {\n return this.allLoops.some(\n (s) => e.allLoops.some((i) => s.intersects(i))\n );\n }\n overlappingStrands(e) {\n const s = e instanceof v ? e.allLoops : [e], i = this.allLoops.flatMap((o) => s.flatMap((r) => o.overlappingSegments(r)));\n return Yt(i).map((o) => new B(o));\n }\n}\nfunction Gn(t, n = []) {\n if (!t) throw new Error(\"Figure must have a contour\");\n for (const [e, s] of st([t, ...n]))\n if (e.intersects(s))\n throw new Error(\"Loops in a figure must not intersect\");\n if (n.some(\n (e) => !t.contains(e.firstPoint) && !t.onStroke(e.firstPoint)\n ))\n throw new Error(\"Holes must be inside the contour\");\n for (const [e, s] of st(n))\n if (e.contains(s.firstPoint))\n throw console.error(Mt(e), Mt(s)), new Error(\"Holes must not be inside other holes\");\n}\nconst Qn = (t) => {\n const n = t.map((i, o) => t.slice(o + 1).map((r, l) => [l + o + 1, r]).filter(([, r]) => i.boundingBox.overlaps(r.boundingBox)).map(([r]) => r)), e = [], s = Array(n.length);\n return n.forEach((i, o) => {\n let r = s[o];\n r || (r = [], e.push(r)), r.push(t[o]), i.length && i.forEach((l) => {\n s[l] = r;\n });\n }), e;\n}, Xt = (t) => t.map((n, e) => {\n const i = n.segments[0].midPoint, o = t.filter((r, l) => e === l ? !1 : r.contains(i));\n return {\n loop: n,\n isIn: o\n };\n}), Wn = (t, n) => t.flatMap(({ loop: e }) => ft(\n n.filter(\n ({ loop: s, isIn: i }) => s === e || i.indexOf(e) !== -1\n )\n)), Jn = (t, n) => {\n const e = n.filter(({ isIn: i }) => i.length <= 1), s = ft(\n Xt(t.map(({ loop: i }) => i))\n );\n return [e, ...s];\n}, ft = (t) => {\n if (!t.length) return [];\n const n = t.filter(({ isIn: s }) => !s.length), e = t.filter(({ isIn: s }) => s.length > 1);\n return n.length === 1 && e.length === 0 ? [t] : n.length > 1 ? Wn(n, t) : Jn(e, t);\n};\nfunction X(t) {\n return Qn(t).map(Xt).flatMap(ft).map((e) => {\n if (e.length === 1) return new v(e[0].loop);\n e.sort((o, r) => o.isIn.length - r.isIn.length);\n const [s, ...i] = e.map(({ loop: o }) => o);\n return new v(s, i);\n });\n}\nfunction Kn(t, n) {\n const e = [];\n for (const s of t)\n for (const i of n)\n e.push([s, i]);\n return e;\n}\nfunction* Ft(t, n, e) {\n const s = (r) => n.some((l) => g(l, r.lastPoint)), i = (r) => e.some((l) => r.isSame(l));\n let o = [];\n for (const r of t)\n s(r) ? (o.push(r), yield new B(o, { ignoreChecks: !0 }), o = []) : i(r) ? (o.length && (yield new B(o, { ignoreChecks: !0 }), o = []), yield new B([r], { ignoreChecks: !0 })) : o.push(r);\n o.length && (yield new B(o, { ignoreChecks: !0 }));\n}\nconst vt = (t, n) => {\n const e = t.findIndex((o) => g(n, o.firstPoint)), s = t.slice(0, e);\n return t.slice(e).concat(s);\n}, Bt = (t, n) => {\n let e = t;\n const s = (l) => g(l.firstPoint, n.firstPoint) && g(l.lastPoint, n.lastPoint);\n let i = t.findIndex(s);\n if (i === -1) {\n const l = t.map((c) => c.reverse());\n if (l.reverse(), i = l.findIndex(s), i === -1)\n throw console.error(\n l.map((c) => c.repr),\n n.repr\n ), new Error(\"Failed to rotate to segment start\");\n e = l;\n }\n const o = e.slice(0, i);\n return e.slice(i).concat(o);\n};\nfunction Zn(t, n, e) {\n return t.filter((s) => {\n const i = n.filter((l) => g(l.firstPoint, s) || g(l.lastPoint, s));\n if (i.length % 2)\n throw new Error(\"Bug in the intersection algo on non crossing point\");\n const o = i.map((l) => e.contains(l.midPoint));\n return !(o.every((l) => l) || !o.some((l) => l));\n });\n}\nfunction te(t, n, e) {\n let s = [];\n const i = [], o = new Array(t.segments.length).fill(0).map(() => []), r = new Array(n.segments.length).fill(0).map(() => []);\n if (t.segments.forEach((h, p) => {\n n.segments.forEach((d, m) => {\n const { intersections: P, overlaps: w } = K(\n h,\n d,\n e\n );\n s.push(...P), o[p].push(...P), r[m].push(...P), i.push(...w);\n const x = w.flatMap((F) => [\n F.firstPoint,\n F.lastPoint\n ]);\n s.push(...x), o[p].push(...x), r[m].push(...x);\n });\n }), s = U(s, e), !s.length || s.length === 1) return null;\n const l = ([h, p]) => p.length ? h.splitAt(p) : [h];\n let c = N([t.segments, o]).flatMap(l), a = N([n.segments, r]).flatMap(l);\n if (s = Zn(\n s,\n c,\n n\n ), !s.length && !i.length) return null;\n if (i.length) {\n const h = i[0];\n c = Bt(\n c,\n h\n ), a = Bt(\n a,\n h\n );\n } else {\n const h = s[0];\n c = vt(c, h), a = vt(a, h);\n }\n let f = Array.from(\n Ft(\n c,\n s,\n i\n )\n ), u = Array.from(\n Ft(\n a,\n s,\n i\n )\n );\n return (!g(\n u[0].lastPoint,\n f[0].lastPoint\n ) || i.length > 0 && u[0].segmentsCount !== 1) && (u = u.map((h) => h.reverse()).reverse(), g(u[0].lastPoint, f[0].lastPoint) || (f = f.map((h) => h.reverse()).reverse())), N([f, u]).map(([h, p]) => h.segmentsCount === 1 && i.some((d) => h.segments[0].isSame(d)) ? [h, \"same\"] : [h, p]);\n}\nfunction kt(t) {\n let n = t[0];\n for (const e of t.slice(1))\n n = n.extend(e);\n if (!g(n.firstPoint, n.lastPoint))\n throw console.error(\n dt(n.firstPoint),\n dt(n.lastPoint)\n ), new Error(\"Bug in the intersection algo on non closing strand\");\n return new O(n.segments);\n}\nfunction ne(t, n) {\n const e = N([\n n.slice(0, -1),\n n.slice(1)\n ]).map(([i, o]) => kt(t.slice(i, o)));\n let s = t.slice(\n n[n.length - 1]\n );\n return n[0] !== 0 && (s = s.concat(t.slice(0, n[0]))), e.push(kt(s)), e;\n}\nfunction ee(t) {\n if (!t.length) return [];\n const n = t.map((i) => i.firstPoint);\n let e = t.map((i) => i.lastPoint);\n e = e.slice(-1).concat(e.slice(0, -1));\n const s = N([n, e]).flatMap(\n ([i, o], r) => g(i, o) ? [] : r\n );\n try {\n return ne(t, s);\n } catch {\n return Yt(t.flatMap((o) => o.segments)).filter((o) => o.length > 1).filter((o) => g(o[0].firstPoint, o.at(-1).lastPoint)).map((o) => new O(o));\n }\n}\nconst _t = (t, n) => {\n if (t.length === 0) return [n];\n const e = t.at(-1);\n return g(e.lastPoint, n.firstPoint) ? t.slice(0, -1).concat([e.extend(n)]) : g(e.lastPoint, n.lastPoint) ? t.slice(0, -1).concat([e.extend(n.reverse())]) : t.concat([n]);\n}, se = (t, n) => t.length === 0 ? [n] : g(t[0].firstPoint, n.lastPoint) ? [n.extend(t[0])].concat(t.slice(1)) : [n].concat(t);\nfunction ht(t, n, {\n firstInside: e,\n secondInside: s\n}) {\n const i = te(t, n);\n if (!i) {\n const c = t.segments[0].midPoint, a = n.contains(c), f = n.segments[0].midPoint, u = t.contains(f);\n return {\n identical: !1,\n firstCurveInSecond: a,\n secondCurveInFirst: u\n };\n }\n if (i.every(([, c]) => c === \"same\"))\n return { identical: !0 };\n let o = null, r = null;\n const l = i.flatMap(([c, a]) => {\n let f = [], u = 0;\n if (a === \"same\")\n return r === 1 ? (r = 1, c) : r === 2 || r === 0 ? (r = null, []) : r === null ? (o ? o = o.extend(c) : o = c, []) : (console.error(\"weird situation\"), []);\n const h = c.segments[0].midPoint, p = n.contains(h);\n (e === \"keep\" && p || e === \"remove\" && !p) && (u += 1, f = _t(f, c));\n const d = a.segments[0].midPoint, m = t.contains(d);\n if (s === \"keep\" && m || s === \"remove\" && !m) {\n const P = a;\n u += 1, u === 2 && f.length ? (f = _t(f, P), o = null) : f = [P];\n }\n return r === null && u === 1 && o && (f = se(f, o)), u === 1 && (r = u, o = null), f.length ? f : (o = null, []);\n });\n return ee(l);\n}\nconst ie = (t, n) => {\n const e = ht(t, n, {\n firstInside: \"remove\",\n secondInside: \"remove\"\n });\n return Array.isArray(e) ? e : e.identical ? [t] : e.firstCurveInSecond ? [n] : e.secondCurveInFirst ? [t] : [t, n];\n}, Z = (t, n) => {\n const e = ht(t, n, {\n firstInside: \"remove\",\n secondInside: \"keep\"\n });\n return Array.isArray(e) ? e : e.identical ? [] : e.firstCurveInSecond ? [] : e.secondCurveInFirst ? [t, n] : [t];\n}, pt = (t, n) => {\n const e = ht(t, n, {\n firstInside: \"keep\",\n secondInside: \"keep\"\n });\n return Array.isArray(e) ? e : e.identical ? [t] : e.firstCurveInSecond ? [t] : e.secondCurveInFirst ? [n] : [];\n};\nfunction oe(t) {\n const n = /* @__PURE__ */ new Map(), e = [];\n return t.forEach((s, i) => {\n let o;\n n.has(i) ? o = n.get(i) : (o = { current: [s], fusedWith: /* @__PURE__ */ new Set([i]) }, e.push(o)), t.slice(i + 1).forEach((r, l) => {\n const c = o.current, a = i + l + 1;\n if (o.fusedWith.has(a)) return;\n let f = [r], u = !1;\n if (n.has(a) && (f = n.get(a).current, u = !0), !c.some(\n (d) => f.some((m) => d.intersects(m))\n )) return;\n let p;\n c.length > 1 || f.length > 1 ? p = G(c, f) : p = Gt(c[0], f[0]), o.fusedWith.add(a), o.current = p, u || n.set(a, o);\n });\n }), e.flatMap(({ current: s }) => s);\n}\nfunction Gt(t, n) {\n const e = ie(t.contour, n.contour), s = n.holes.flatMap((r) => Z(r, t.contour)), i = t.holes.flatMap((r) => Z(r, n.contour)), o = Kn(t.holes, n.holes).flatMap(\n ([r, l]) => pt(r, l)\n );\n return X([\n ...e,\n ...s,\n ...i,\n ...o\n ]);\n}\nfunction tt(t, n) {\n if (t.isFull && n.isFull)\n return X(Z(t.contour, n.contour));\n if (t.isFull) {\n const s = Z(t.contour, n.contour), i = n.holes.flatMap(\n (o) => pt(o, t.contour)\n );\n return X([...s, ...i]);\n } else if (n.isFull && !t.contour.intersects(n.contour))\n if (t.contour.contains(n.contour.firstPoint)) {\n const s = G(\n t.holes.map((i) => new v(i)),\n [n]\n );\n return X([\n t.contour,\n ...s.flatMap((i) => i.allLoops)\n ]);\n } else\n return [t];\n let e = tt(new v(t.contour), n);\n return t.holes.forEach((s) => {\n e = e.flatMap((i) => tt(i, new v(s)));\n }), e;\n}\nfunction re(t, n) {\n const e = pt(t.contour, n.contour);\n if (!e.length) return [];\n let s = X(e);\n return s = Q(\n s,\n t.holes.map((i) => new v(i))\n ), Q(\n s,\n n.holes.map((i) => new v(i))\n );\n}\nfunction G(t, n) {\n if (!t.length) return n;\n if (!n.length) return t;\n if (t.length === 1 && n.length > 1 || n.length === 1 && t.length > 1)\n return oe([...t, ...n]);\n if (t.length > 1 && n.length > 1) {\n let e = G([t[0]], n);\n return t.slice(1).forEach((s) => {\n e = G([s], e);\n }), e;\n }\n return t.length === 1 && n.length === 1 ? Gt(t[0], n[0]) : [];\n}\nfunction Q(t, n) {\n if (!t.length) return [];\n if (!n.length) return t;\n if (t.length === 1 && n.length === 1)\n return tt(t[0], n[0]);\n if (t.length > 1)\n return t.flatMap((s) => Q([s], n));\n let e = tt(t[0], n[0]);\n return n.slice(1).forEach((s) => {\n e = Q(e, [s]);\n }), e;\n}\nfunction rt(t, n) {\n return !t.length || !n.length ? [] : t.length === 1 && n.length === 1 ? re(t[0], n[0]) : t.length > 1 ? t.flatMap((e) => rt([e], n)) : n.flatMap((e) => rt(t, [e]));\n}\nclass _ extends lt {\n constructor(e = [], { ignoreChecks: s = !1 } = {}) {\n super();\n C(this, \"figures\");\n C(this, \"_boundingBox\", null);\n s || le(e), this.figures = e;\n }\n get isEmpty() {\n return this.figures.length === 0;\n }\n get boundingBox() {\n if (this.isEmpty) return new hn();\n if (this._boundingBox === null) {\n let e = this.figures[0].boundingBox;\n for (const s of this.figures.slice(1))\n e = e.merge(s.boundingBox);\n this._boundingBox = e;\n }\n return this._boundingBox;\n }\n clone() {\n return new _(this.figures.map((e) => e.clone()));\n }\n transform(e) {\n return new _(this.figures.map((s) => s.transform(e)));\n }\n contains(e) {\n return this.figures.some((s) => s.contains(e));\n }\n intersects(e) {\n return this.figures.some(\n (s) => e.figures.some((i) => s.intersects(i))\n );\n }\n overlappingStrands(e) {\n return this.figures.flatMap((s) => e instanceof _ ? e.figures.flatMap(\n (i) => s.overlappingStrands(i)\n ) : s.overlappingStrands(e));\n }\n fuse(e) {\n return new _(G(this.figures, e.figures));\n }\n cut(e) {\n return new _(Q(this.figures, e.figures));\n }\n intersect(e) {\n return new _(rt(this.figures, e.figures));\n }\n}\nfunction le(t) {\n for (const [n, e] of st(t))\n if (n.intersects(e))\n throw new Error(\"Diagram figures must not intersect\");\n}\nexport {\n _ as D,\n v as F,\n O as L,\n B as S,\n K as a,\n G as b,\n Q as c,\n qt as d,\n Yt as e,\n ae as f,\n jn as g,\n Mt as h,\n rt as i,\n J as l,\n pn as p,\n Ft as s\n};\n//# sourceMappingURL=models-BjaFYsN2.js.map\n","var W = Object.defineProperty;\nvar q = (e, t, n) => t in e ? W(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;\nvar m = (e, t, n) => q(e, typeof t != \"symbol\" ? t + \"\" : t, n);\nimport { a as l, s as u, c as x, b as P, L as d, A as R, Q as w, C as D, p as E, d as G, e as T, t as k, f as Q, g as L, h as j, i as $, j as H, R as J, T as K, k as A, n as F, D as C } from \"./QuadraticBezier-PcRS9HZK.js\";\nimport { f as U, S as X, D as Z, F as tt, L as nt } from \"./models-BjaFYsN2.js\";\nconst B = (e, t, n) => {\n const r = x(e.V, t.V), i = e.precision * t.precision;\n if (r * r < i)\n return \"parallel\";\n const s = P(t.firstPoint, e.firstPoint), o = x(s, t.V) / r;\n return l(e.firstPoint, u(e.V, o));\n};\nclass S {\n constructor(t, n) {\n this.firstPoint = t, this.lastPoint = n;\n }\n}\nfunction y(e, t) {\n if (e instanceof d)\n return et(e, t);\n if (e instanceof R)\n return rt(e, t);\n if (e instanceof w || e instanceof D)\n return it(e, t);\n throw new Error(\"Not implemented\");\n}\nfunction et(e, t) {\n const { firstPoint: n, lastPoint: r } = e, i = e.normalVector;\n return new d(\n l(n, u(i, t)),\n l(r, u(i, t))\n );\n}\nfunction rt(e, t) {\n const n = l(\n e.firstPoint,\n u(E(e.tangentAtFirstPoint), t)\n ), r = l(\n e.lastPoint,\n u(E(e.tangentAtLastPoint), t)\n ), i = t * (e.clockwise ? 1 : -1);\n return e.radius + i < e.precision ? new S(n, r) : new R(n, r, e.center, e.clockwise);\n}\nfunction b(e, t, n, r, i) {\n const s = B(\n {\n V: n,\n firstPoint: r,\n precision: i\n },\n {\n V: P(t, e),\n firstPoint: e,\n precision: i\n }\n );\n if (s === \"parallel\")\n throw new Error(\n \"Parallel lines not expected in safe bezier offset control point calculation\"\n );\n return s;\n}\nfunction it(e, t) {\n const { firstPoint: n, lastPoint: r, normalAtFirstPoint: i, normalAtLastPoint: s } = e, o = B(\n { V: i, firstPoint: n, precision: e.precision },\n { V: s, firstPoint: r, precision: e.precision }\n ), a = l(\n n,\n u(i, t)\n ), h = l(\n r,\n u(s, t)\n );\n if (o === \"parallel\")\n throw new Error(\"Parallel lines not expected in safe bezier offset\");\n if (G(P(o, n), i) * t > 0 && Math.min(\n T(n, o),\n T(r, o)\n ) < t)\n return new S(a, h);\n if (e instanceof w) {\n const g = b(\n o,\n e.controlPoint,\n e.tangentAtFirstPoint,\n a,\n e.precision\n );\n return new w(\n a,\n h,\n g\n );\n }\n const p = b(\n o,\n e.firstControlPoint,\n e.tangentAtFirstPoint,\n a,\n e.precision\n ), f = b(\n o,\n e.lastControlPoint,\n e.tangentAtLastPoint,\n h,\n e.precision\n );\n return new D(\n a,\n h,\n p,\n f\n );\n}\nfunction M(e, t, n) {\n const r = x(\n e.tangentAtLastPoint,\n t.tangentAtFirstPoint\n );\n if (Math.abs(r) < 1e-10) return null;\n const i = r > 0 ? 1 : -1, s = Math.abs(n) * i, o = y(e, s), a = y(t, s);\n if (o instanceof S || a instanceof S)\n return null;\n let h;\n try {\n h = U(o, a, 1e-9).at(-1);\n } catch {\n return null;\n }\n if (!h)\n return null;\n const c = h, p = (v, O) => {\n const I = O.tangentAt(c), N = Q(I), Y = l(c, u(N, s));\n return v.splitAt(Y);\n }, [f] = p(e, o), [, g] = p(t, a);\n return { first: f, second: g, center: c };\n}\nfunction V(e, t, n) {\n const r = M(e, t, n);\n if (!r)\n return console.warn(\n \"Cannot fillet between segments\",\n e.repr,\n t.repr\n ), [e, t];\n const { first: i, second: s } = r;\n return [\n i,\n k(i.lastPoint, s.firstPoint, i.tangentAtLastPoint),\n s\n ];\n}\nfunction _(e, t, n) {\n const r = M(e, t, n);\n if (!r)\n return console.warn(\n \"Cannot chamfer between segments\",\n e.repr,\n t.repr\n ), [e, t];\n const { first: i, second: s } = r;\n return [i, new d(i.lastPoint, s.firstPoint), s];\n}\nconst st = (e) => {\n let t;\n e ? typeof e == \"number\" || Array.isArray(e) && e.length === 2 ? t = { endTangent: e } : t = { endTangent: 0, ...e } : t = { endTangent: [1, 0] };\n const {\n endTangent: n,\n startFactor: r = 1,\n endFactor: i = 1,\n startTangent: s\n } = t;\n let o;\n typeof n == \"number\" ? o = A(1, n * C) : o = n;\n let a;\n return typeof s == \"number\" ? a = A(1, s * C) : a = s, { endTangent: o, startFactor: r, endFactor: i, startTangent: a };\n};\nfunction z(e, { ignoreChecks: t = !1 } = {}) {\n return new Z([new tt(new nt([...e], { ignoreChecks: t }))]);\n}\nclass ot {\n constructor(t = [0, 0]) {\n m(this, \"pointer\");\n m(this, \"firstPoint\");\n m(this, \"pendingSegments\");\n m(this, \"_nextCorner\");\n this.pointer = t, this.firstPoint = t, this.pendingSegments = [], this._nextCorner = null;\n }\n movePointerTo(t) {\n if (this.pendingSegments.length)\n throw new Error(\n \"You can only move the pointer if there is no segment defined\"\n );\n return this.pointer = t, this.firstPoint = t, this;\n }\n saveSegment(t) {\n if (L(t.firstPoint, t.lastPoint))\n throw new Error(`Segment has no length, ${t.repr}`);\n if (!this._nextCorner)\n return this.pendingSegments.push(t), this;\n const n = this.pendingSegments.pop();\n if (!n) throw new Error(\"bug in the custom corner algorithm\");\n const r = this._nextCorner.mode === \"chamfer\" ? _ : V;\n return this.pendingSegments.push(\n ...r(n, t, this._nextCorner.radius)\n ), this._nextCorner = null, this;\n }\n lineTo(t) {\n const n = new d(this.pointer, t);\n return this.pointer = t, this.saveSegment(n);\n }\n line(t, n) {\n return this.lineTo([this.pointer[0] + t, this.pointer[1] + n]);\n }\n vLine(t) {\n return this.line(0, t);\n }\n hLine(t) {\n return this.line(t, 0);\n }\n vLineTo(t) {\n return this.lineTo([this.pointer[0], t]);\n }\n hLineTo(t) {\n return this.lineTo([t, this.pointer[1]]);\n }\n polarLineTo([t, n]) {\n const r = n * C, i = A(t, r);\n return this.lineTo(i);\n }\n polarLine(t, n) {\n const r = n * C, [i, s] = A(t, r);\n return this.line(i, s);\n }\n tangentLine(t) {\n const n = this.pendingSegments.at(-1);\n if (!n)\n throw new Error(\"You need a previous segment to sketch a tangent line\");\n const [r, i] = n.tangentAtLastPoint;\n return this.line(r * t, i * t);\n }\n threePointsArcTo(t, n) {\n return this.saveSegment(j(this.pointer, n, t)), this.pointer = t, this;\n }\n threePointsArc(t, n, r, i) {\n const [s, o] = this.pointer;\n return this.threePointsArcTo(\n [s + t, o + n],\n [s + r, o + i]\n );\n }\n sagittaArcTo(t, n) {\n if (!n) return this.lineTo(t);\n const r = new d(this.pointer, t), i = E(r.tangentAtFirstPoint), s = l(r.midPoint, u(i, n));\n return this.threePointsArcTo(t, s);\n }\n sagittaArc(t, n, r) {\n return this.sagittaArcTo(\n [t + this.pointer[0], n + this.pointer[1]],\n r\n );\n }\n vSagittaArc(t, n) {\n return this.sagittaArc(0, t, n);\n }\n hSagittaArc(t, n) {\n return this.sagittaArc(t, 0, n);\n }\n bulgeArcTo(t, n) {\n if (!n) return this.lineTo(t);\n const r = T(this.pointer, t) / 2, i = -n * r;\n return this.sagittaArcTo(t, i);\n }\n bulgeArc(t, n, r) {\n return this.bulgeArcTo(\n [t + this.pointer[0], n + this.pointer[1]],\n r\n );\n }\n vBulgeArc(t, n) {\n return this.bulgeArc(0, t, n);\n }\n hBulgeArc(t, n) {\n return this.bulgeArc(t, 0, n);\n }\n tangentArcTo(t, n) {\n const r = this.pendingSegments.at(-1);\n if (!r)\n throw new Error(\"You need a previous curve to sketch a tangent arc\");\n return this.saveSegment(\n k(\n this.pointer,\n t,\n n ?? r.tangentAtLastPoint\n )\n ), this.pointer = t, this;\n }\n tangentArc(t, n, r) {\n const [i, s] = this.pointer;\n return this.tangentArcTo([t + i, n + s], r);\n }\n ellipseTo(t, n, r, i, s, o) {\n return this.saveSegment(\n $(this.pointer, t, n, r, i, s, o)\n ), this.pointer = t, this;\n }\n ellipse(t, n, r, i, s, o, a) {\n return this.ellipseTo(\n [t + this.pointer[0], n + this.pointer[1]],\n r,\n i,\n s,\n o,\n a\n );\n }\n halfEllipseTo(t, n) {\n const [r, i] = H(P(t, this.pointer));\n return this.ellipseTo(\n t,\n r / 2,\n Math.abs(n),\n i * J,\n !0,\n n > 0\n );\n }\n halfEllipse(t, n, r) {\n return this.halfEllipseTo(\n [t + this.pointer[0], n + this.pointer[1]],\n r\n );\n }\n cubicBezierCurveTo(t, n, r) {\n return this.saveSegment(\n new D(this.pointer, t, n, r)\n ), this.pointer = t, this;\n }\n quadraticBezierCurveTo(t, n) {\n return this.saveSegment(new w(this.pointer, t, n)), this.pointer = t, this;\n }\n smoothCurveTo(t, n) {\n const { endTangent: r, startTangent: i, startFactor: s, endFactor: o } = st(n), a = this.pendingSegments.length ? this.pendingSegments[this.pendingSegments.length - 1] : null, h = T(this.pointer, t) / 3;\n let c;\n i ? c = i : a ? c = a.tangentAtLastPoint : c = [1, 0], c = F(c);\n const p = [\n this.pointer[0] + c[0] * s * h,\n this.pointer[1] + c[1] * s * h\n ];\n let f = r;\n f = F(f);\n const g = [\n t[0] - f[0] * o * h,\n t[1] - f[1] * o * h\n ];\n return this.cubicBezierCurveTo(t, p, g);\n }\n smoothCurve(t, n, r) {\n return this.smoothCurveTo(\n [t + this.pointer[0], n + this.pointer[1]],\n r\n );\n }\n customCorner(t, n = \"fillet\") {\n if (!this.pendingSegments.length)\n throw new Error(\"You need a segment defined to fillet the angle\");\n return t ? (this._nextCorner = { mode: n, radius: t }, this) : this;\n }\n _customCornerLastWithFirst(t, n = \"fillet\") {\n if (!t) return;\n const r = this.pendingSegments.pop(), i = this.pendingSegments.shift();\n if (!r || !i)\n throw new Error(\"Not enough curves to close and fillet\");\n const s = n === \"chamfer\" ? _ : V;\n this.pendingSegments.push(...s(r, i, t));\n }\n close(t = !1) {\n if (!this.pendingSegments.length) throw new Error(\"No segments to close\");\n const n = this.pendingSegments[0], r = this.pendingSegments.at(-1);\n return L(n.firstPoint, r.lastPoint) || this.lineTo(n.firstPoint), this._nextCorner !== null && (this._customCornerLastWithFirst(\n this._nextCorner.radius,\n this._nextCorner.mode\n ), this._nextCorner = null), z(this.pendingSegments, { ignoreChecks: t });\n }\n closeWithMirror(t = !1) {\n if (!this.pendingSegments.length) throw new Error(\"No segments to close\");\n const n = this.pendingSegments[0], r = this.pendingSegments.at(-1), i = P(\n r.lastPoint,\n n.firstPoint\n ), s = new K().mirrorLine(\n i,\n n.firstPoint\n ), o = this.pendingSegments.map(\n (a) => a.transform(s).reverse()\n );\n return o.reverse(), z(\n [...this.pendingSegments, ...o],\n { ignoreChecks: t }\n );\n }\n asStrand() {\n return new X([...this.pendingSegments]);\n }\n get isClosed() {\n var t;\n return L(this.pointer, (t = this.pendingSegments[0]) == null ? void 0 : t.firstPoint);\n }\n}\nfunction lt(e = [0, 0]) {\n return new ot(e);\n}\nexport {\n S as D,\n lt as d,\n y as o\n};\n//# sourceMappingURL=draw-N2ntigsw.js.map\n","import { L as $, A as f, E as l, R as u, Q as e, C as h } from \"./QuadraticBezier-PcRS9HZK.js\";\nfunction i([t, n]) {\n return `${t} ${n}`;\n}\nfunction s(t) {\n if (t instanceof $)\n return `L ${i(t.lastPoint)}`;\n if (t instanceof f)\n return `A ${t.radius} ${t.radius} 0 ${t.angularLength > Math.PI ? \"1\" : \"0\"} ${t.clockwise ? \"0\" : \"1\"} ${i(t.lastPoint)}`;\n if (t instanceof l)\n return `A ${t.majorRadius} ${t.minorRadius} ${t.tiltAngle * u} ${t.deltaAngle > Math.PI ? \"1\" : \"0\"} ${t.clockwise ? \"0\" : \"1\"} ${i(t.lastPoint)}`;\n if (t instanceof e)\n return `Q ${[\n i(t.controlPoint),\n i(t.lastPoint)\n ].join(\" \")}`;\n if (t instanceof h)\n return `C ${[\n i(t.firstControlPoint),\n i(t.lastControlPoint),\n i(t.lastPoint)\n ].join(\" \")}`;\n throw new Error(\"Unknown segment type\");\n}\nfunction w(t) {\n const n = `M ${t.firstPoint.join(\" \")}`, o = t.segments.map(s).join(\" \");\n return `${n} ${o} Z`;\n}\nfunction p(t) {\n return `<path d=\"${t.allLoops.map(w).join(\" \")}\" />`;\n}\nfunction d(t) {\n return `<g>\n ${t.figures.map(p).join(`\n`)}\n</g>`;\n}\nfunction j(t) {\n const n = `M ${t.firstPoint.join(\" \")}`, o = t.segments.map(s).join(\" \");\n return `${n} ${o}`;\n}\nfunction v(t, n = 1) {\n const o = t.xMin - n, r = t.yMin - n;\n return `${o} ${r} ${t.width + 2 * n} ${t.height + 2 * n}`;\n}\nfunction A(t, n, o = 1, r) {\n const a = v(n, o), c = r ? `width=\"${n.width + 2 * o}${r}\" height=\"${n.height + 2 * o}${r}\"` : \"\";\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${a}\" fill=\"none\" stroke=\"black\" stroke-width=\"0.2%\" vector-effect=\"non-scaling-stroke\" ${c}>\n ${t}\n</svg>`;\n}\nexport {\n p as a,\n w as b,\n j as c,\n s as d,\n v as e,\n d as s,\n A as w\n};\n//# sourceMappingURL=svg-hNHYuj_r.js.map\n","var bt = Object.defineProperty;\nvar Lt = (t, n, e) => n in t ? bt(t, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[n] = e;\nvar P = (t, n, e) => Lt(t, typeof n != \"symbol\" ? n + \"\" : n, e);\nimport { o as At, D as T } from \"./draw-N2ntigsw.js\";\nimport { d as Cn } from \"./draw-N2ntigsw.js\";\nimport { F as w, L as S, D as g, a as _, s as vt, b as kt, c as Et, i as yt, S as R, l as Ft, p as Ct, d as xt, e as rt, g as Dt } from \"./models-BjaFYsN2.js\";\nimport { h as Dn } from \"./models-BjaFYsN2.js\";\nimport { r as Ot, z as Rt, l as Bt, e as L, n as ot, b as y, a as zt, s as Tt, m as $t, o as at, L as I, A as E, C as B, p as J, q as Q, d as Gt, T as Ut, g as A, E as ct, Q as ft, t as _t, c as Vt, B as qt } from \"./QuadraticBezier-PcRS9HZK.js\";\nimport { s as Nt, a as Jt, b as Qt, c as Zt, d as Ht, w as Z } from \"./svg-hNHYuj_r.js\";\nfunction v(t) {\n if (t instanceof w)\n return [t];\n if (t instanceof S)\n return [new w(t)];\n if (t instanceof g)\n return t.figures;\n throw new Error(\"Unknown shape\");\n}\nfunction lt(t, n, e = 1e-9) {\n let s = [];\n const r = [], i = new Array(n.segments.length).fill(0).map(() => []);\n n.segments.forEach((f, c) => {\n t.segments.forEach((a) => {\n const { intersections: l, overlaps: p } = _(\n f,\n a,\n e\n );\n s.push(...l), i[c].push(...l), r.push(...p);\n const h = p.flatMap((d) => [\n d.firstPoint,\n d.lastPoint\n ]);\n s.push(...h), i[c].push(...h);\n });\n }), s = Ot(s, e);\n const o = Rt([n.segments, i]).flatMap(([f, c]) => c.length ? f.splitAt(c) : [f]);\n return Array.from(\n vt(\n o,\n s,\n r\n )\n );\n}\nfunction V(t, n, e = !1) {\n return lt(n, t).filter((r) => {\n const i = r.segments[0].midPoint;\n return n.onStroke(i) ? !e : !n.contains(i);\n });\n}\nfunction q(t, n, e = !1) {\n return lt(n, t).filter((r) => {\n const i = r.segments[0].midPoint;\n return n.onStroke(i) ? !e : n.contains(i);\n });\n}\nfunction H(t, n, e = !1) {\n const s = V(\n t,\n n.contour,\n e\n ), r = n.holes.flatMap(\n (i) => q(t, i, e)\n );\n return [...s, ...r];\n}\nfunction W(t, n, e = !1) {\n let s = q(\n t,\n n.contour,\n e\n );\n return n.holes.forEach((r) => {\n s = s.flatMap(\n (i) => V(i, r, e)\n );\n }), s;\n}\nfunction Wt(t, n) {\n return new g(\n kt(v(t), v(n))\n );\n}\nfunction D(t) {\n return t.reduce(\n (n, e) => Wt(n, e),\n new g()\n );\n}\nfunction ut(t, n) {\n return new g(\n Et(v(t), v(n))\n );\n}\nfunction Mn(t, n) {\n return new g(\n yt(v(t), v(n))\n );\n}\nfunction In(t, n, e = !0) {\n if (n instanceof S)\n return V(t, n, e);\n if (n instanceof w)\n return H(t, n, e);\n let s = [new R([...t.segments])];\n return n.figures.forEach((r) => {\n s = s.flatMap((i) => H(i, r, e));\n }), s;\n}\nfunction Sn(t, n, e = !1) {\n if (n instanceof S)\n return q(t, n, e);\n if (n instanceof w)\n return W(t, n, e);\n let s = [new R([...t.segments])];\n return n.figures.forEach((r) => {\n s = s.flatMap((i) => W(i, r, e));\n }), s;\n}\nfunction X(t) {\n return t < 0 ? \"before\" : t > 1 ? \"after\" : \"between\";\n}\nconst Y = (t, n, e) => {\n if (e === \"before\")\n return t.distanceFrom(n.firstPoint);\n if (e === \"after\")\n return t.distanceFrom(n.lastPoint);\n throw new Error(\"Invalid position\");\n};\nfunction Xt(t, n) {\n const e = Bt(t, n);\n if (e === \"parallel\")\n return Math.min(\n t.distanceFrom(n.firstPoint),\n t.distanceFrom(n.lastPoint)\n );\n const { intersectionParam1: s, intersectionParam2: r } = e, i = X(s), o = X(r);\n if (i === \"between\" && o === \"between\")\n return 0;\n if (i === \"between\" && o !== \"between\")\n return Y(t, n, o);\n if (o === \"between\" && i !== \"between\")\n return Y(n, t, i);\n if (i === \"before\" && o === \"before\")\n return L(t.firstPoint, n.firstPoint);\n if (i === \"after\" && o === \"after\")\n return L(t.lastPoint, n.lastPoint);\n if (i === \"before\" && o === \"after\")\n return L(t.firstPoint, n.lastPoint);\n if (i === \"after\" && o === \"before\")\n return L(t.lastPoint, n.firstPoint);\n throw new Error(\"Invalid position\");\n}\nfunction K(t, n) {\n if (Ft(t, n).length > 0)\n return 0;\n const e = Ct(t, n.center);\n if (t.isOnSegment(e)) {\n const s = L(e, n.center);\n if (Math.abs(s - n.radius) < t.precision && n.isOnSegment(e))\n return 0;\n if (s - n.radius > t.precision) {\n const r = ot(\n y(e, n.center)\n ), i = zt(\n n.center,\n Tt(r, n.radius)\n );\n if (n.isOnSegment(i))\n return L(i, e);\n }\n }\n return Math.min(\n n.distanceFrom(t.firstPoint),\n n.distanceFrom(t.lastPoint),\n t.distanceFrom(n.firstPoint),\n t.distanceFrom(n.lastPoint)\n );\n}\nconst Yt = (t, n) => {\n const e = t.angleToParam(n.firstAngle);\n if (t.isValidParameter(e)) return !0;\n const s = t.angleToParam(n.lastAngle);\n return !!t.isValidParameter(s);\n};\nfunction Kt(t, n) {\n if (xt(t, n, !0).length > 0) return 0;\n const e = L(t.center, n.center);\n if (e < t.precision && Yt(t, n))\n return Math.abs(t.radius - n.radius);\n const s = ot(y(n.center, t.center)), r = e - Math.abs(t.radius - n.radius) < t.precision;\n let i = $t(s);\n r && n.radius > t.radius && (i += Math.PI);\n const o = r ? i : i + Math.PI, f = t.angleToParam(i), c = n.angleToParam(o);\n return t.isValidParameter(f) && n.isValidParameter(c) ? L(t.paramPoint(f), n.paramPoint(c)) : Math.min(\n t.distanceFrom(n.firstPoint),\n t.distanceFrom(n.lastPoint),\n n.distanceFrom(t.firstPoint),\n n.distanceFrom(t.lastPoint)\n );\n}\nfunction jt(t, n, e) {\n let s = 0, r = t.length - 1;\n for (; s <= r; ) {\n const i = Math.floor((s + r) / 2), o = e(t[i], n);\n if (o < 0)\n s = i + 1;\n else if (o > 0)\n r = i - 1;\n else\n return i;\n }\n return -(s + 1);\n}\nfunction tn(t, n, e) {\n const s = jt(t, n, e);\n s < 0 ? t.splice(-(s + 1), 0, n) : t.splice(s, 0, n);\n}\nclass nn {\n constructor() {\n P(this, \"buckets\");\n this.buckets = [];\n }\n addInterval(n) {\n const e = this.buckets[n.rectangle.diagonalBucketIndex];\n e === void 0 ? this.buckets[n.rectangle.diagonalBucketIndex] = [n] : tn(e, n, (s, r) => s.value - r.value);\n }\n removeInterval(n) {\n const e = this.buckets[n.rectangle.diagonalBucketIndex];\n if (e === void 0)\n throw new Error(\"Interval not found\");\n e.shift();\n }\n getBottomRightHullIntervals() {\n const n = [];\n for (let e = this.buckets.length - 1; e >= 0; e--) {\n const s = this.buckets[e];\n if (!s === void 0) continue;\n const r = s[0];\n if (r !== void 0) {\n if (!n.length) {\n n.push(r);\n continue;\n }\n for (; n.length && n[n.length - 1].value >= r.value; )\n n.pop();\n for (; n.length >= 2; ) {\n const i = n[n.length - 1], o = n[n.length - 2], f = (r.value - o.value) / ((r.rectangle.diagonal - o.rectangle.diagonal) * 2);\n if (o.value + (i.rectangle.diagonal - o.rectangle.diagonal) / 2 * f < i.value)\n n.pop();\n else\n break;\n }\n n.push(r);\n }\n }\n return n;\n }\n}\nclass en {\n constructor(n, e) {\n P(this, \"diagonal\");\n P(this, \"diagonalBucketIndex\");\n P(this, \"xLength\");\n P(this, \"yLength\");\n P(this, \"index\");\n this.x = n, this.y = e, this.xLength = Math.pow(3, -n), this.yLength = Math.pow(3, -e), this.diagonal = Math.sqrt(\n this.xLength * this.xLength + this.yLength * this.yLength\n ), this.diagonalBucketIndex = n + e, this.index = `${n},${e}`;\n }\n}\nclass sn {\n constructor(n, e = 1e-8, s = 1e3, r = 1e-6) {\n P(this, \"rectangles\");\n P(this, \"buckets\");\n P(this, \"fMin\");\n P(this, \"argMin\");\n P(this, \"tol\");\n this.fcn = n, this.endTolerance = e, this.maxIterations = s, this.epsilon = r, this.fcn = n, this.epsilon = r, this.endTolerance = e, this.maxIterations = s, this.rectangles = /* @__PURE__ */ new Map(), this.buckets = new nn();\n const i = [0.5, 0.5], o = this.rect(0, 0), f = this.fcn(i);\n this.buckets.addInterval(new x(i, f, o)), this.fMin = f, this.argMin = i, this.tol = o.diagonal;\n }\n registerInterval(n) {\n this.buckets.addInterval(n), n.value <= this.fMin && (this.fMin = n.value, this.argMin = n.center, this.tol = n.rectangle.diagonal);\n }\n rect(n, e) {\n const s = `${n},${e}`;\n return this.rectangles.has(s) || this.rectangles.set(s, new en(n, e)), this.rectangles.get(s);\n }\n splitInterval(n) {\n let e, s, r;\n const [i, o] = n.center;\n return n.rectangle.x <= n.rectangle.y ? (e = this.rect(n.rectangle.x + 1, n.rectangle.y), s = [i - e.xLength, o], r = [i + e.xLength, o]) : (e = this.rect(n.rectangle.x, n.rectangle.y + 1), s = [i, o - e.yLength], r = [i, o + e.yLength]), [\n new x(s, this.fcn(s), e),\n new x(n.center, n.value, e),\n new x(r, this.fcn(r), e)\n ];\n }\n single_iteration() {\n const n = this.buckets.getBottomRightHullIntervals();\n for (; n.length >= 2; ) {\n const e = n[0], s = n[1], r = (s.value - e.value) / ((s.rectangle.diagonal - e.rectangle.diagonal) / 2), i = e.value - r * s.value / 2;\n if ((this.fMin - i) / Math.abs(this.fMin) < this.epsilon)\n n.shift();\n else\n break;\n }\n n.forEach((e) => {\n this.buckets.removeInterval(e);\n });\n for (const e of n) {\n const [s, r, i] = this.splitInterval(e);\n this.registerInterval(s), this.registerInterval(r), this.registerInterval(i);\n }\n }\n run() {\n let n = 0;\n for (; this.tol > this.endTolerance / 2 && (this.single_iteration(), n++, !(n > this.maxIterations)); )\n ;\n return {\n fMin: this.fMin,\n argMin: this.argMin,\n tol: this.tol,\n iterations: n\n };\n }\n}\nclass x {\n constructor(n, e, s) {\n this.center = n, this.value = e, this.rectangle = s;\n }\n}\nfunction rn(t, n = 1e-8, e = 1e3, s = 1e-6) {\n return new sn(\n t,\n n,\n e,\n s\n ).run();\n}\nfunction on(t, n, e = 1e-9) {\n const s = rn((r) => {\n const i = t.paramPoint(r[0]), o = n.paramPoint(r[1]);\n return at(i, o);\n }, e);\n return Math.sqrt(s.fMin);\n}\nfunction an(t, n) {\n return t instanceof I && n instanceof I ? Xt(t, n) : t instanceof I && n instanceof E ? K(t, n) : t instanceof E && n instanceof I ? K(n, t) : t instanceof E && n instanceof E ? Kt(t, n) : on(t, n);\n}\nfunction ht(t) {\n if (t instanceof B) {\n const r = y(t.lastPoint, t.firstPoint), i = y(t.firstControlPoint, t.firstPoint), o = y(t.lastControlPoint, t.firstPoint), f = Q(r, i), c = Q(r, o);\n if (f > 0 && c < 0 || f < 0 && c > 0) return !1;\n }\n const n = J(t.tangentAtFirstPoint), e = J(t.tangentAtLastPoint);\n let s = Gt(n, e);\n return Math.abs(Math.acos(s)) < Math.PI / 3;\n}\nfunction $(t) {\n if (ht(t)) return [t];\n const [n, e] = t.splitAtParameters([0.5]);\n return [\n ...$(n),\n ...$(e)\n ];\n}\nfunction j(t) {\n return ht(t) ? [t] : t.splitAtParameters(t.getParametersOfExtrema()).flatMap($);\n}\nfunction cn(t) {\n const n = t.deltaAngle, e = Math.ceil(Math.abs(n) / (Math.PI / 2)), s = n / e, r = 4 * Math.tan(s / 4) / 3, i = t.clockwise ? -1 : 1, o = Array.from(\n { length: e + 1 },\n (c, a) => t.firstAngle + a * s * i\n );\n return o.slice(0, -1).map((c, a) => [c, o[a + 1]]).map(([c, a]) => {\n const l = Math.cos(c), p = Math.sin(c), h = Math.cos(a), d = Math.sin(a), [u, M] = t.center, m = t.minorRadius, b = t.majorRadius, k = new Ut().rotate(\n t.tiltAngle,\n t.center\n ), F = (St) => k.transform(St), C = F([u + b * l, M + m * p]), z = F([\n u + b * (l - r * p * i),\n M + m * (p + r * l * i)\n ]), Mt = F([\n u + b * (h + r * d * i),\n M + m * (d - r * h * i)\n ]), It = F([u + b * h, M + m * d]);\n return new B(C, It, z, Mt);\n });\n}\nconst N = 1e-8, gt = (t) => t.flatMap((n) => n instanceof I ? [n] : n instanceof E ? [n] : n instanceof ct ? cn(n).flatMap(\n (e) => j(e)\n) : n instanceof ft || n instanceof B ? j(n) : [new I(n.firstPoint, n.lastPoint)]);\nfunction G(t, n, e = !0) {\n const s = t.map((a) => ({\n offset: At(a, n),\n original: a\n })), r = [];\n let i = e ? null : s.at(-1), o = e ? s.at(-1) : null;\n if (r.length === 1) return r;\n const f = (a) => {\n i ? a.offset instanceof T ? A(a.offset.firstPoint, a.offset.lastPoint) || r.push(\n new I(a.offset.firstPoint, a.offset.lastPoint)\n ) : r.push(a.offset) : i = a;\n }, c = function* () {\n for (const a of s.slice(0, -1))\n yield a;\n if (!i) throw new Error(\"Bug in the offset algorithm\");\n yield i;\n };\n for (const a of c()) {\n if (!o) {\n o = a;\n continue;\n }\n const l = o.offset.lastPoint, p = a.offset.firstPoint;\n if (A(l, p)) {\n f(o), o = a;\n continue;\n }\n let h = [];\n if (!(o.offset instanceof T) && !(a.offset instanceof T)) {\n const { intersections: m, overlaps: b } = _(\n o.offset,\n a.offset,\n N / 100\n );\n h = [\n ...m,\n ...b.flatMap((k) => [k.firstPoint, k.lastPoint])\n ];\n }\n if (h.length > 0) {\n let m = h[0];\n if (h.length > 1) {\n const F = o == null ? void 0 : o.original.lastPoint, C = h.map(\n (z) => at(z, F)\n );\n m = h[C.indexOf(Math.min(...C))];\n }\n const b = o.offset.splitAt([\n m\n ])[0], k = a.offset.splitAt([m]).at(-1);\n if (!k) throw new Error(\"Bug in the splitting algo in offset\");\n f({\n offset: b,\n original: o.original\n }), o = { offset: k, original: a.original };\n continue;\n }\n const d = o.original.lastPoint, u = Vt(\n y(p, d),\n y(l, d)\n ) > 0, M = new E(l, p, d, u);\n f(o), r.push(M), o = a;\n }\n return o && f(o), r;\n}\nfunction pt(t) {\n const n = /* @__PURE__ */ new Map(), e = (s, r) => {\n const i = n.get(s) || [];\n n.set(s, [...i, ...r]);\n };\n return t.forEach((s, r) => {\n t.slice(r + 1).forEach((i, o) => {\n const { intersections: f, overlaps: c } = _(s, i, N), a = [\n ...f,\n ...c.flatMap((l) => [l.firstPoint, l.lastPoint])\n ].filter((l) => {\n const p = A(l, s.firstPoint) || A(l, s.lastPoint), h = A(l, i.firstPoint) || A(l, i.lastPoint);\n return !(p && h);\n });\n a.length && (e(r, a), e(o + r + 1, a));\n });\n }), n;\n}\nfunction dt(t, n) {\n return n.flatMap((e, s) => {\n if (!t.has(s)) return e;\n const r = t.get(s);\n return r ? e.splitAt(r) : e;\n });\n}\nfunction Pt(t, n, e) {\n return t.filter((s) => !n.segments.some((i) => an(i, s) < Math.abs(e) - N));\n}\nfunction O(t, n) {\n const e = t.clockwise ? n : -n, s = gt(t.segments), r = G(s, e);\n if (r.length < 2) return new g();\n const i = pt(r);\n if (!i.size) {\n const l = new S(r);\n return new g([new w(l)]);\n }\n const o = dt(\n i,\n r\n ), f = Pt(o, t, n);\n if (!f.length) return new g();\n const a = rt(f).filter((l) => l.length > 1).filter((l) => A(l[0].firstPoint, l.at(-1).lastPoint)).map((l) => new S(l));\n return a.length ? new g(a.map((l) => new w(l))) : new g();\n}\nfunction fn(t, n, e = \"round\") {\n const s = n / 2, r = gt(t.segments), i = G(r, s, !1), o = G(\n r,\n -s,\n !1\n ).map((u) => u.reverse());\n o.reverse();\n const f = (u, M) => e === \"round\" ? _t(\n u.lastPoint,\n M.firstPoint,\n u.tangentAtLastPoint\n ) : new I(u.lastPoint, M.firstPoint), c = [\n ...i,\n f(\n i[i.length - 1],\n o[0]\n ),\n ...o,\n f(\n o[o.length - 1],\n i[0]\n )\n ], a = pt(c);\n if (!a.size) {\n const u = new S(c);\n return new g([new w(u)]);\n }\n const l = dt(\n a,\n c\n ), p = Pt(l, t, s);\n if (!p.length) return new g();\n const d = rt(p).filter((u) => u.length > 1).filter((u) => A(u[0].firstPoint, u.at(-1).lastPoint)).map((u) => new S(u));\n return d.length ? new g(d.map((u) => new w(u))) : new g();\n}\nfunction ln(t, n) {\n const e = t.map((s) => {\n const r = D(\n s.holes.map((i) => O(i, n))\n );\n return ut(O(s.contour, n), r);\n });\n return D(e);\n}\nfunction un(t, n) {\n const e = Math.abs(n / 2), s = t.map(\n (r) => D(\n r.allLoops.map((i) => ut(O(i, e), O(i, -e)))\n )\n );\n return D(s);\n}\nfunction bn(t, n) {\n return ln(v(t), n);\n}\nfunction Ln(t, n, { endCap: e = \"round\" } = {}) {\n return t instanceof R ? fn(t, n, e) : un(v(t), n);\n}\nfunction tt(t) {\n if (t instanceof g)\n return Nt(t);\n if (t instanceof w)\n return Jt(t);\n if (t instanceof S)\n return `<path d=\"${Qt(t)}\" />`;\n if (t instanceof R)\n return `<path d=\"${Zt(t)}\" />`;\n if (Dt(t))\n return `<path d=\"${`M ${t.firstPoint.join(\" \")}`} ${Ht(\n t\n )}\" />`;\n throw new Error(\"Unknown shape type\");\n}\nconst nt = (t) => \"shape\" in t ? t.shape : t, et = (t, n) => {\n if (!(\"shape\" in t)) return n;\n const { color: e } = t;\n return e ? `<g stroke=\"${e}\">${n}</g>` : n;\n}, st = (t) => new qt(t.xMin, -t.yMax, t.xMax, -t.yMin);\nfunction An(t, {\n margin: n = 1,\n unit: e = null,\n viewBox: s\n} = {}) {\n if (Array.isArray(t)) {\n const i = t.map((c) => nt(c).mirror()), o = i.map((c, a) => et(t[a], tt(c))).join(`\n`), f = i.slice(1).reduce((c, a) => c.merge(a.boundingBox), i[0].boundingBox);\n return Z(o, s ? st(s) : f, n, e);\n }\n const r = nt(t).mirror();\n return Z(\n et(t, tt(r)),\n s ? st(s) : r.boundingBox,\n n,\n e\n );\n}\nconst mt = (t) => {\n if (t.type === \"LINE\")\n return new I(t.firstPoint, t.lastPoint);\n if (t.type === \"ARC\")\n return new E(\n t.firstPoint,\n t.lastPoint,\n t.center,\n t.clockwise\n );\n if (t.type === \"ELLIPSE_ARC\")\n return new ct(\n t.firstPoint,\n t.lastPoint,\n t.center,\n t.majorRadius,\n t.minorRadius,\n t.tiltAngle,\n t.clockwise,\n { angleUnits: \"rad\" }\n );\n if (t.type === \"QUADRATIC_BEZIER\")\n return new ft(\n t.firstPoint,\n t.lastPoint,\n t.controlPoint\n );\n if (t.type === \"CUBIC_BEZIER\")\n return new B(\n t.firstPoint,\n t.lastPoint,\n t.firstControlPoint,\n t.lastControlPoint\n );\n throw new Error(\"Unknown segment type\");\n}, U = (t) => {\n const n = t.segments.map(mt);\n return new S(n);\n}, wt = (t) => {\n const n = U(t.contour), e = t.holes.map(U);\n return new w(n, e);\n}, hn = (t) => {\n const n = t.figures.map(wt);\n return new g(n);\n};\nfunction vn(t) {\n if (t.type === \"DIAGRAM\")\n return hn(t);\n if (t.type === \"FIGURE\")\n return wt(t);\n if (t.type === \"LOOP\")\n return U(t);\n if (t.type === \"LINE\" || t.type === \"ARC\" || t.type === \"ELLIPSE_ARC\" || t.type === \"CUBIC_BEZIER\")\n return mt(t);\n throw new Error(\"Unknown shape type\");\n}\nconst it = Math.PI / 180, gn = 180 / Math.PI;\nfunction kn(t, n) {\n const e = Math.cos(n * it) * t, s = Math.sin(n * it) * t;\n return [e, s];\n}\nfunction En([t, n]) {\n const e = Math.sqrt(t * t + n * n), s = Math.atan2(n, t) * gn;\n return [e, s];\n}\nexport {\n it as DEG2RAD,\n gn as RAD2DEG,\n En as cartesianToPolar,\n Sn as confineStrand,\n ut as cut,\n Cn as draw,\n In as eraseStrand,\n Dn as exportJSON,\n An as exportSVG,\n Wt as fuse,\n D as fuseAll,\n vn as importJSON,\n Mn as intersect,\n bn as offset,\n Ln as outlineStroke,\n kn as polarToCartesian,\n tt as svgBody\n};\n//# sourceMappingURL=pantograph.js.map\n","import { cut, eraseStrand, exportSVG } from \"pantograph2d\";\nimport {\n Transformable,\n Diagram,\n Strand,\n TransformationMatrix,\n Stroke,\n} from \"pantograph2d/models\";\n\nexport class Dieline extends Transformable<Dieline> {\n public body: Diagram;\n public cutLines: Stroke[];\n public foldLinesBackwards: Stroke[];\n public foldLinesForwards: Stroke[];\n\n constructor(\n body: Diagram,\n {\n cutLines = [],\n foldLines = [],\n foldLinesForwards = [],\n foldLinesBackwards = [],\n }: {\n cutLines?: Stroke[];\n foldLines?: Stroke[];\n foldLinesBackwards?: Stroke[];\n foldLinesForwards?: Stroke[];\n } = {},\n ) {\n super();\n this.body = body;\n this.cutLines = [...cutLines];\n this.foldLinesBackwards = [...foldLines, ...foldLinesBackwards];\n this.foldLinesForwards = [...foldLinesForwards];\n }\n\n get foldLines() {\n return [...this.foldLinesForwards, ...this.foldLinesBackwards];\n }\n\n clone() {\n return new Dieline(this.body, {\n cutLines: [...this.cutLines],\n foldLinesForwards: [...this.foldLinesForwards],\n foldLinesBackwards: [...this.foldLinesBackwards],\n });\n }\n\n addCutLine(cut: Strand) {\n this.cutLines.push(cut);\n return this;\n }\n\n addFoldLine(fold: Strand, direction: \"forwards\" | \"backwards\" = \"backwards\") {\n if (direction === \"forwards\") {\n this.foldLinesForwards.push(fold);\n } else {\n this.foldLinesBackwards.push(fold);\n }\n }\n\n fuseFold(\n fold: Diagram | Dieline,\n direction: \"forwards\" | \"backwards\" = \"backwards\",\n ) {\n const otherBody: Diagram = fold instanceof Dieline ? fold.body : fold;\n\n const commonLines = this.body.overlappingStrands(otherBody);\n if (direction === \"forwards\") {\n this.foldLinesForwards.push(...commonLines);\n } else {\n this.foldLinesBackwards.push(...commonLines);\n }\n\n this.fuseBody(fold);\n return this;\n }\n\n fuseBody(other: Dieline | Diagram) {\n let otherBody: Diagram;\n\n if (other instanceof Dieline) {\n otherBody = other.body;\n this.cutLines.push(...other.cutLines);\n this.foldLinesForwards.push(...other.foldLinesForwards);\n this.foldLinesBackwards.push(...other.foldLinesBackwards);\n } else {\n otherBody = other;\n }\n\n this.body = this.body.fuse(otherBody);\n return this;\n }\n\n cutShape(shape: Diagram) {\n this.body = cut(this.body, shape);\n this.cutLines = this.cutLines.flatMap((cut) =>\n eraseStrand(cut, shape, true),\n );\n this.eraseFolds(shape);\n return this;\n }\n\n eraseFolds(shape: Diagram) {\n this.foldLinesBackwards = this.foldLinesBackwards.flatMap((fold) =>\n eraseStrand(fold, shape, true),\n );\n this.foldLinesForwards = this.foldLinesForwards.flatMap((fold) =>\n eraseStrand(fold, shape, true),\n );\n }\n\n transform(matrix: TransformationMatrix) {\n const newDieline = new Dieline(this.body.transform(matrix), {\n cutLines: this.cutLines.map((cut) => cut.transform(matrix)),\n foldLinesForwards: this.foldLinesForwards.map((fold) =>\n fold.transform(matrix),\n ),\n foldLinesBackwards: this.foldLinesBackwards.map((fold) =>\n fold.transform(matrix),\n ),\n });\n\n return newDieline;\n }\n\n asSVG() {\n const shapes: { shape: Diagram | Stroke; color: string }[] = [];\n if (this.body) {\n shapes.push({ shape: this.body, color: \"red\" });\n }\n if (this.cutLines.length) {\n this.cutLines.map((shape) => shapes.push({ shape, color: \"red\" }));\n }\n\n if (this.foldLinesBackwards.length) {\n this.foldLinesBackwards.map((shape) =>\n shapes.push({ shape, color: \"green\" }),\n );\n }\n\n if (this.foldLinesForwards.length) {\n this.foldLinesForwards.map((shape) =>\n shapes.push({ shape, color: \"blue\" }),\n );\n }\n\n return exportSVG(shapes, { unit: \"mm\" });\n }\n}\n","import { draw } from \"pantograph2d\";\n\nexport type FlapContractionMode = \"rounded\" | \"sharp\";\nexport type HorizontalFlapOptions = {\n fillet?: number;\n contraction?: number;\n contractionMode?: FlapContractionMode;\n contractionLeft?: number;\n contractionRight?: number;\n leftContractionMode?: FlapContractionMode;\n rightContractionMode?: FlapContractionMode;\n};\nexport type VerticalFlapTopOptions = HorizontalFlapOptions & {\n contractionTop?: number;\n contractionBottom?: number;\n topContractionMode?: FlapContractionMode;\n bottomContractionMode?: FlapContractionMode;\n};\n\nfunction drawFlap(\n width: number,\n height: number,\n {\n fillet = 1,\n contraction = 1,\n contractionMode = \"rounded\",\n contractionLeft: contractionLeftInput,\n contractionRight: contractionRightInput,\n leftContractionMode,\n rightContractionMode,\n }: HorizontalFlapOptions = {},\n) {\n const contractionLeft = contractionLeftInput ?? contraction;\n const contractionRight = contractionRightInput ?? contraction;\n\n const flapMaker = draw([-width / 2, 0]).hLine(width);\n\n if (contractionRight) {\n if ((rightContractionMode ?? contractionMode) === \"rounded\") {\n flapMaker.tangentArc(-contractionRight, contractionRight, [-1, 0]);\n flapMaker.vLine(height - contractionRight);\n } else {\n flapMaker.line(-contractionRight, height);\n }\n } else {\n flapMaker.vLine(height);\n }\n\n flapMaker.customCorner(fillet);\n flapMaker.hLine(-width + contractionLeft + contractionRight);\n flapMaker.customCorner(fillet);\n\n if (contractionLeft) {\n if ((leftContractionMode ?? contractionMode) === \"rounded\") {\n flapMaker.vLine(-height + contractionLeft);\n flapMaker.tangentArcTo([-width / 2, 0]);\n } else {\n flapMaker.lineTo([-width / 2, 0]);\n }\n } else {\n flapMaker.vLine(-height);\n }\n\n return flapMaker.close();\n}\n\nexport function topFlap(\n width: number,\n height: number,\n options: HorizontalFlapOptions = {},\n) {\n return drawFlap(width, height, options);\n}\n\nexport function bottomFlap(\n width: number,\n height: number,\n options: HorizontalFlapOptions = {},\n) {\n return drawFlap(width, height, options).mirror(\"x\");\n}\n\nexport function leftFlap(\n width: number,\n height: number,\n {\n contractionTop,\n contractionBottom,\n topContractionMode,\n bottomContractionMode,\n ...options\n }: VerticalFlapTopOptions = {},\n) {\n return drawFlap(width, height, {\n contractionLeft: contractionTop,\n contractionRight: contractionBottom,\n leftContractionMode: topContractionMode,\n rightContractionMode: bottomContractionMode,\n ...options,\n }).rotate(90);\n}\n\nexport function rightFlap(\n width: number,\n height: number,\n options: VerticalFlapTopOptions = {},\n) {\n return leftFlap(width, height, options).mirror(\"y\");\n}\n\nexport const drawFlaps = {\n right: rightFlap,\n left: leftFlap,\n top: topFlap,\n bottom: bottomFlap,\n};\n","import { draw } from \"pantograph2d\";\nimport {\n Diagram,\n Strand,\n Transformable,\n TransformationMatrix,\n} from \"pantograph2d/models\";\nimport { Dieline } from \"./Dieline.js\";\n\nconst drawBump = (width: number, height: number) => {\n return draw([-width / 2, 0])\n .line(height, -height)\n .hLine(width - 2 * height)\n .line(height, height);\n};\n\n// A helper class to create bumps for locking parts together without glue\nexport class FoldLockBump extends Transformable<FoldLockBump> {\n cut: Strand;\n unfold: Diagram;\n bump: Diagram;\n constructor(\n width: number | { cut: Strand; unfold: Diagram; bump: Diagram },\n paperThickness = 0.2,\n ) {\n super();\n\n if (typeof width !== \"number\") {\n this.cut = width.cut;\n this.unfold = width.unfold;\n this.bump = width.bump;\n return;\n }\n\n const pen = drawBump(width, paperThickness * 2.5);\n\n this.cut = pen.asStrand();\n this.unfold = pen.close();\n\n this.bump = drawBump(width - 5 * paperThickness, 5 * paperThickness)\n .close()\n .mirror(\"x\");\n }\n\n clone() {\n return new FoldLockBump(this);\n }\n\n transform(matrix: TransformationMatrix) {\n return new FoldLockBump({\n cut: this.cut.transform(matrix),\n unfold: this.unfold.transform(matrix),\n bump: this.bump.transform(matrix),\n });\n }\n\n makeCut(dieline: Dieline) {\n dieline.eraseFolds(this.unfold);\n dieline.addCutLine(this.cut);\n }\n\n fuseBump(dieline: Dieline) {\n dieline.fuseBody(this.bump);\n }\n}\n","import { Vector } from \"pantograph2d\";\nimport { Transformable, TransformationMatrix } from \"pantograph2d/models\";\n\ninterface Clonable {\n clone(): this;\n}\n\ninterface Translatable {\n translateTo(point: Vector): this;\n}\n\nclass PointsDistribution extends Transformable<PointsDistribution> {\n constructor(public points: Vector[]) {\n super();\n this.points = points;\n }\n\n transform(matrix: TransformationMatrix) {\n return new PointsDistribution(this.points.map(matrix.transform));\n }\n\n distribute<T extends Translatable>(s: T): T[] {\n return this.points.map((p) => s.translateTo(p));\n }\n\n cloneDistribute<T extends Translatable & Clonable>(s: T): T[] {\n return this.points.map((p) => s.clone().translateTo(p));\n }\n}\n\nexport function linearDistribution(\n totalWidth: number,\n objectWidth: number,\n gapShare = 3,\n margin = 0,\n) {\n if (totalWidth <= objectWidth * 2) {\n throw new Error(\"totalWidth must be greater than twice the objectWidth\");\n }\n\n const objectsCount = Math.max(\n Math.floor((totalWidth - 2 * margin) / (objectWidth * (gapShare + 1))),\n 2,\n );\n const freeSpace = totalWidth - 2 * margin - objectsCount * objectWidth;\n const gapSize = freeSpace / (objectsCount - 1);\n const points: number[] = [];\n for (let i = 0; i < objectsCount; i++) {\n points.push(\n margin + i * (objectWidth + gapSize) - totalWidth / 2 + objectWidth / 2,\n );\n }\n return new PointsDistribution(points.map((p) => [p, 0]));\n}\n\nexport function linearSpread(\n gap: number,\n count: number,\n direction: \"x\" | \"y\" = \"x\",\n) {\n const totalLength = gap * (count - 1);\n const points: number[] = [];\n for (let i = 0; i < count; i++) {\n points.push(i * gap - totalLength / 2);\n }\n return new PointsDistribution(\n points.map((p) => (direction.toLowerCase() === \"x\" ? [p, 0] : [0, p])),\n );\n}\n"],"names":["Oe","Me","r","Be","s","t","q","oe","ht","le","Dt","e","he","zt","mt$1","mt","n","ce","ye","Te","fe","Ue","Z","Y","it","Q","It","an","nt","Rt","J","St","Pe","H","Tt","Ye","We","Ie","i","tt","Qt","Qe","Mt","l","a","u","c","g","d","w","P","M","E","Ge","Xe","et$3","et","Ze","at","xt","o","h","Je","Kt","wt","Zt","me","cn","Ot","ct","fn","mn","be","Bt","Ee","_e","Ke","He","L","S","k","D","v","Ce","qe","$","ts","Ct","es","ss","ns","is","rs","os","ls","st","je","Ut","Fe","hs","xe","as","us","Se","cs","ot","lt","Pt","bt","ge","we","ae","Yt","Ht","yt","fs","ms","gs","ps","ds","Ps","bs","Es","_s","js","vs","V$2","V","_","m","b","j","C","F","I","B","x","A","O","U","z","X","G","W","se","ne","ie","re","At","Vt","Nt","$t","Lt","ke","Is","Ft","ue","dt","K","Jt","pt","te","Cs","ft","qs","Fs","xs","As","Vs","Ns","$s","Ae","Ls","rt","ee$1","ut","pe","vt$1","Ds","vt","Ve","ee","Xt","Gt","zs","Os","Bs","Us","Ys","Ne","Xs","Wt","$e","Le","Js","De","Re","Ks","Hs","qt","kt","ze","wn","ve","gt","tn","en","sn","nn","rn","de","Et","p","jt","ln","pn","on","_t","f","dn","T","gn","Pn","xn","Sn","R","yn","bn","Cn","Mn","An","In","En","Fn","Bn","vn","kn","_n","On","Tn","y","Ln","N","un","zn","ut$1","qn","Dn","Rn","Vn","Nn","Un","jn","Hn","$n","Xn","Yn","Gn","Qn","Wn","Jn","Kn","Zn","hn","Dieline","Transformable","body","cutLines","foldLines","foldLinesForwards","foldLinesBackwards","__publicField","cut","fold","direction","otherBody","commonLines","other","shape","eraseStrand","matrix","shapes","exportSVG","drawFlap","width","height","fillet","contraction","contractionMode","contractionLeftInput","contractionRightInput","leftContractionMode","rightContractionMode","contractionLeft","contractionRight","flapMaker","draw","topFlap","options","bottomFlap","leftFlap","contractionTop","contractionBottom","topContractionMode","bottomContractionMode","rightFlap","drawFlaps","drawBump","FoldLockBump","paperThickness","pen","dieline","PointsDistribution","points","linearDistribution","totalWidth","objectWidth","gapShare","margin","objectsCount","gapSize","linearSpread","gap","count","totalLength"],"mappings":"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"}
1
+ {"version":3,"file":"dielines.js","sources":["../../pantograph/dist/QuadraticBezier-DxieHk9z.js","../../pantograph/dist/models-zEMLdtLw.js","../../pantograph/dist/draw-yb7FrCL_.js","../../pantograph/dist/svg-BIphc_zE.js","../../pantograph/dist/pantograph.js","../src/Dieline.ts","../src/drawFlaps.ts","../src/FoldLockBump.ts","../src/linearDistribution.ts"],"sourcesContent":["var Oe = Object.defineProperty;\nvar Me = (r) => {\n throw TypeError(r);\n};\nvar Be = (r, s, t) => s in r ? Oe(r, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[s] = t;\nvar q = (r, s, t) => Be(r, typeof s != \"symbol\" ? s + \"\" : s, t), oe = (r, s, t) => s.has(r) || Me(\"Cannot \" + t);\nvar ht = (r, s, t) => (oe(r, s, \"read from private field\"), t ? t.call(r) : s.get(r)), le = (r, s, t) => s.has(r) ? Me(\"Cannot add the same private member more than once\") : s instanceof WeakSet ? s.add(r) : s.set(r, t), Dt = (r, s, t, e) => (oe(r, s, \"write to private field\"), e ? e.call(r, t) : s.set(r, t), t), he = (r, s, t) => (oe(r, s, \"access private method\"), t);\nfunction zt(r, s, t, e) {\n return r <= e && s >= t;\n}\nclass mt {\n constructor(s = 1 / 0, t = 1 / 0, e = -1 / 0, n = -1 / 0) {\n q(this, \"xMin\");\n q(this, \"yMin\");\n q(this, \"xMax\");\n q(this, \"yMax\");\n this.xMin = s, this.yMin = t, this.xMax = e, this.yMax = n;\n }\n get width() {\n return this.xMax - this.xMin;\n }\n get height() {\n return this.yMax - this.yMin;\n }\n get center() {\n return [(this.xMin + this.xMax) / 2, (this.yMin + this.yMax) / 2];\n }\n grow(s) {\n return new mt(\n this.xMin - s,\n this.yMin - s,\n this.xMax + s,\n this.yMax + s\n );\n }\n contains(s) {\n const [t, e] = s;\n return zt(this.xMin, this.xMax, t, t) && zt(this.yMin, this.yMax, e, e);\n }\n overlaps(s) {\n return zt(this.xMin, this.xMax, s.xMin, s.xMax) && zt(this.yMin, this.yMax, s.yMin, s.yMax);\n }\n addPoint(s) {\n const [t, e] = s;\n return new mt(\n Math.min(this.xMin, t),\n Math.min(this.yMin, e),\n Math.max(this.xMax, t),\n Math.max(this.yMax, e)\n );\n }\n merge(s) {\n return new mt(\n Math.min(this.xMin, s.xMin),\n Math.min(this.yMin, s.yMin),\n Math.max(this.xMax, s.xMax),\n Math.max(this.yMax, s.yMax)\n );\n }\n intersection(s) {\n return new mt(\n Math.max(this.xMin, s.xMin),\n Math.max(this.yMin, s.yMin),\n Math.min(this.xMax, s.xMax),\n Math.min(this.yMax, s.yMax)\n );\n }\n}\nfunction ce(r) {\n return r.reduce((s, t) => s.addPoint(t), new mt());\n}\nconst ye = (r, s = 1e-9) => {\n let t = r;\n return Math.abs(r) < s && (t = 0), t.toFixed(-Math.log10(s));\n};\nfunction Te(r, s = 1e-9) {\n return Array.from(\n new Map(\n r.map(([t, e]) => [\n `[${ye(t, s)},${ye(e, s)}]`,\n [t, e]\n ])\n ).values()\n );\n}\nconst fe = Math.PI / 180, Ue = 180 / Math.PI, Z = (r) => `[${r[0]}, ${r[1]}]`, Y = ([r, s], [t, e], n = 1e-9) => Math.abs(r - t) <= n && Math.abs(s - e) <= n, it = ([r, s], [t, e]) => [r + t, s + e], Q = ([r, s], [t, e]) => [r - t, s - e], It = ([r, s]) => r * r + s * s, an = ([r, s]) => Math.sqrt(It([r, s])), nt = ([r, s], t) => [r * t, s * t], Rt = ([r, s], [t, e] = [0, 0]) => (r - t) ** 2 + (s - e) ** 2, J = (r, s = [0, 0]) => Math.sqrt(Rt(r, s));\nfunction St([r, s], [t, e]) {\n return r * e - s * t;\n}\nfunction Pe([r, s], [t, e]) {\n return r * t + s * e;\n}\nfunction un([r, s], [t, e] = [0, 0]) {\n return Math.atan2(e * r - s * t, r * t + s * e);\n}\nfunction H([r, s]) {\n const t = J([r, s]);\n return [r / t, s / t];\n}\nfunction Tt(r, s) {\n const t = Math.cos(s) * r, e = Math.sin(s) * r;\n return [t, e];\n}\nfunction Ye([r, s]) {\n return Math.atan2(s, r);\n}\nfunction We(r) {\n const s = J(r), t = Ye(r);\n return [s, t];\n}\nfunction Ie(r, s, t = 1e-9) {\n const e = St(r, s), n = It(r), i = It(s);\n return e * e < n * i * t * t;\n}\nfunction tt(r) {\n return [-r[1], r[0]];\n}\nfunction Qt(r) {\n return [r[1], -r[0]];\n}\nfunction Qe(r, s, t) {\n return Y(t, r) || Ie(Q(t, r), s);\n}\nconst Mt = (r, s) => {\n const [t, e, n, i, o, l, h, a, u] = r, [c, g, d, w, p, P, f, M, E] = s;\n return [\n t * c + e * w + n * f,\n t * g + e * p + n * M,\n t * d + e * P + n * E,\n i * c + o * w + l * f,\n i * g + o * p + l * M,\n i * d + o * P + l * E,\n h * c + a * w + u * f,\n h * g + a * p + u * M,\n h * d + a * P + u * E\n ];\n}, Ge = (r) => {\n const [s, t, e, n, i, o, l, h, a] = r, u = s * (i * a - o * h) - t * (n * a - o * l) + e * (n * h - i * l);\n return [\n (i * a - o * h) / u,\n (e * h - t * a) / u,\n (t * o - e * i) / u,\n (o * l - n * a) / u,\n (s * a - e * l) / u,\n (e * n - s * o) / u,\n (n * h - i * l) / u,\n (t * l - s * h) / u,\n (s * i - t * n) / u\n ];\n}, Xe = (r) => {\n const [s, t, e, n, i, o, l, h, a] = r;\n return [s, n, l, t, i, h, e, o, a];\n};\nclass et {\n constructor(s) {\n q(this, \"_matrix\", [1, 0, 0, 0, 1, 0, 0, 0, 1]);\n s && (this._matrix = [...s]);\n }\n clone() {\n return new et(this._matrix);\n }\n transpose() {\n return this._matrix = Xe(this._matrix), this;\n }\n inverse() {\n return this._matrix = Ge(this._matrix), this;\n }\n translate(s, t) {\n return this._matrix = Mt([1, 0, s, 0, 1, t, 0, 0, 1], this._matrix), this;\n }\n rotate(s, t) {\n const e = Math.cos(s), n = Math.sin(s), i = [e, -n, 0, n, e, 0, 0, 0, 1];\n return t && this.translate(-t[0], -t[1]), this._matrix = Mt(i, this._matrix), t && this.translate(t[0], t[1]), this;\n }\n mirrorX() {\n return this._matrix = Mt([1, 0, 0, 0, -1, 0, 0, 0, 1], this._matrix), this;\n }\n mirrorY() {\n return this._matrix = Mt([-1, 0, 0, 0, 1, 0, 0, 0, 1], this._matrix), this;\n }\n mirrorLine(s, t) {\n const [e, n] = s, i = Math.atan2(n, e);\n return t && this.translate(-t[0], -t[1]), this.rotate(-i), this.mirrorX(), this.rotate(i), t && this.translate(t[0], t[1]), this;\n }\n mirrorCenter(s) {\n return s && this.translate(-s[0], -s[1]), this._matrix = Mt([-1, 0, 0, 0, -1, 0, 0, 0, 1], this._matrix), s && this.translate(s[0], s[1]), this;\n }\n scale(s, t) {\n return t && this.translate(-t[0], -t[1]), this._matrix = Mt([s, 0, 0, 0, s, 0, 0, 0, 1], this._matrix), t && this.translate(t[0], t[1]), this;\n }\n transform(s) {\n const [t, e] = s, [n, i, o, l, h, a] = this._matrix;\n return [n * t + i * e + o, l * t + h * e + a];\n }\n transformAngle(s) {\n const [t, e] = this.transform([Math.cos(s), Math.sin(s)]), [n, i] = this.transform([0, 0]);\n return Math.atan2(e - i, t - n);\n }\n keepsOrientation() {\n const [s, , , , t] = this._matrix;\n return s * t > 0;\n }\n scaleFactor() {\n const [s, , , t] = this._matrix;\n return Math.sqrt(s * s + t * t);\n }\n}\nclass Ze {\n translateX(s) {\n const t = new et().translate(s, 0);\n return this.transform(t);\n }\n translateY(s) {\n const t = new et().translate(0, s);\n return this.transform(t);\n }\n translate(s, t) {\n const e = new et().translate(s, t);\n return this.transform(e);\n }\n translateTo([s, t]) {\n const e = new et().translate(s, t);\n return this.transform(e);\n }\n rotate(s, t) {\n const e = new et().rotate(\n s * fe,\n t\n );\n return this.transform(e);\n }\n scale(s, t) {\n const e = new et().scale(s, t);\n return this.transform(e);\n }\n mirrorCenter(s) {\n const t = new et().mirrorCenter(s);\n return this.transform(t);\n }\n mirror(s = \"x\", t) {\n const e = new et();\n return s === \"x\" ? e.mirrorX() : s === \"y\" ? e.mirrorY() : e.mirrorLine(s, t), this.transform(e);\n }\n}\nclass xt extends Ze {\n constructor(t, e) {\n super();\n q(this, \"precision\", 1e-9);\n this.firstPoint = t, this.lastPoint = e, this.firstPoint = t, this.lastPoint = e;\n }\n get repr() {\n return `${this.segmentType} ${Z(this.firstPoint)} - ${Z(\n this.lastPoint\n )}`;\n }\n get info() {\n return this.repr;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return this.repr;\n }\n}\nclass at extends xt {\n constructor() {\n super(...arguments);\n q(this, \"segmentType\", \"LINE\");\n q(this, \"_V\", null);\n q(this, \"_slope\", null);\n q(this, \"_yIntercept\", null);\n q(this, \"_boundingBox\", null);\n }\n isValidParameter(t) {\n const e = this.length * this.precision;\n return t >= -e && 1 - t >= -e;\n }\n paramPoint(t) {\n return it(this.firstPoint, nt(this.V, t));\n }\n get length() {\n return J(this.firstPoint, this.lastPoint);\n }\n get squareLength() {\n return Rt(this.firstPoint, this.lastPoint);\n }\n get V() {\n return this._V === null && (this._V = Q(this.lastPoint, this.firstPoint)), this._V;\n }\n get slope() {\n if (this._slope === null) {\n const [t, e] = this.V;\n this._slope = e / t;\n }\n return this._slope;\n }\n get yIntercept() {\n return this._yIntercept === null && (this._yIntercept = this.firstPoint[1] - this.slope * this.firstPoint[0]), this._yIntercept;\n }\n get midPoint() {\n return it(this.firstPoint, nt(this.V, 0.5));\n }\n isSame(t) {\n return t instanceof at ? Y(this.firstPoint, t.firstPoint) && Y(this.lastPoint, t.lastPoint) || Y(this.lastPoint, t.firstPoint) && Y(this.firstPoint, t.lastPoint) : !1;\n }\n clone() {\n return new at(this.firstPoint, this.lastPoint);\n }\n reverse() {\n return new at(this.lastPoint, this.firstPoint);\n }\n get boundingBox() {\n return this._boundingBox === null && (this._boundingBox = new mt(\n Math.min(this.firstPoint[0], this.lastPoint[0]) - this.precision,\n Math.min(this.firstPoint[1], this.lastPoint[1]) - this.precision,\n Math.max(this.firstPoint[0], this.lastPoint[0]) + this.precision,\n Math.max(this.firstPoint[1], this.lastPoint[1]) + this.precision\n )), this._boundingBox;\n }\n distanceFrom(t) {\n const e = Q(t, this.firstPoint), n = Pe(e, this.V) / this.squareLength;\n if (n < 0)\n return J(t, this.firstPoint);\n if (n > 1)\n return J(t, this.lastPoint);\n const i = this.paramPoint(n);\n return J(t, i);\n }\n isOnSegment(t) {\n if (Y(t, this.firstPoint, this.precision)) return !0;\n const e = Q(t, this.firstPoint);\n if (!Ie(this.V, e)) return !1;\n const n = Pe(e, this.V) / this.squareLength;\n return this.isValidParameter(n);\n }\n gradientAt(t) {\n return this.V;\n }\n tangentAt(t) {\n if (!this.isOnSegment(t)) throw new Error(\"Point is not on segment\");\n return H(this.V);\n }\n get normalVector() {\n return tt(H(this.V));\n }\n get tangentAtFirstPoint() {\n return H(this.V);\n }\n get tangentAtLastPoint() {\n return H(this.V);\n }\n splitAt(t) {\n let e;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? e = t : e = [t], e.forEach((a) => {\n if (!this.isOnSegment(a))\n throw new Error(\n `Point ${Z(a)} is not on segment ${this.repr}`\n );\n });\n const n = [this.firstPoint, ...e, this.lastPoint], i = Te(n), o = this.lastPoint[0] - this.firstPoint[0];\n let l = Math.sign(o), h = 0;\n return Math.abs(o) < this.precision && (l = Math.sign(this.lastPoint[1] - this.firstPoint[1]), h = 1), i.sort(\n (a, u) => l * (a[h] - u[h])\n ), i.flatMap((a, u) => u === i.length - 1 ? [] : new at(a, i[u + 1]));\n }\n transform(t) {\n return new at(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint)\n );\n }\n}\nfunction Je(r) {\n return Array.from(Array(r).keys());\n}\nfunction Kt(r) {\n const s = Math.min(...r.map((t) => t.length));\n return Je(s).map((t) => r.map((e) => e[t]));\n}\nfunction wt(r, s = 1e-9) {\n return r < 0 ? r + 2 * Math.PI : r >= 2 * Math.PI ? r % (2 * Math.PI) : r > 2 * Math.PI - s ? 0 : r;\n}\nfunction Zt(r, s, t, e = 1e-9) {\n let n = s - r;\n return t && (n = -n), n < 0 && (n += 2 * Math.PI), n > 2 * Math.PI - e ? 0 : n;\n}\nconst me = (r, s, t) => {\n const e = St(r.V, s.V), n = It(r.V), i = It(s.V), o = t ? t * t : r.precision * s.precision;\n if (e * e < n * i * o)\n return \"parallel\";\n const l = Q(s.firstPoint, r.firstPoint), h = St(l, s.V) / e, a = St(l, r.V) / e;\n return {\n intersectionParam1: h,\n intersectionParam2: a\n };\n};\nfunction cn(r, s, t = !1, e) {\n const n = me(r, s, e);\n if (n === \"parallel\") {\n if (!t) return null;\n if (r.isSame(s)) return r;\n const l = Te(\n [\n s.isOnSegment(r.firstPoint) ? r.firstPoint : null,\n s.isOnSegment(r.lastPoint) ? r.lastPoint : null,\n r.isOnSegment(s.firstPoint) ? s.firstPoint : null,\n r.isOnSegment(s.lastPoint) ? s.lastPoint : null\n ].filter((h) => h !== null)\n ).sort((h, a) => h[0] - a[0]);\n if (l.length === 0) return null;\n if (l.length === 1) return null;\n if (l.length === 2) return new at(l[0], l[1]);\n throw console.error(l), new Error(\n \"Unexpected number of points while intersecting parallel lines\"\n );\n }\n const { intersectionParam1: i, intersectionParam2: o } = n;\n return !r.isValidParameter(i) || !s.isValidParameter(o) ? null : r.paramPoint(i);\n}\nconst Ot = (r, s) => {\n const t = Q(r, s);\n return We(t);\n};\nclass ct extends xt {\n constructor(t, e, n, i = !1, { ignoreChecks: o = !1 } = {}) {\n super(t, e);\n q(this, \"segmentType\", \"ARC\");\n q(this, \"center\");\n q(this, \"clockwise\");\n q(this, \"_coefficients\", null);\n q(this, \"_angularLength\", null);\n q(this, \"_radius\", null);\n q(this, \"_firstAngle\", null);\n q(this, \"_lastAngle\", null);\n q(this, \"_boundingBox\", null);\n if (this.center = n, this.clockwise = i, !o) {\n if (Y(t, e))\n throw new Error(\"Invalid arc, cannot be a full circle\");\n if (Math.abs(this.radius - J(this.lastPoint, this.center)) > this.precision)\n throw new Error(\n `Invalid arc, radius does not match between ${Z(\n t\n )} and ${Z(e)}} (center ${Z(n)})`\n );\n }\n }\n get info() {\n return `ARC(${Z(this.firstPoint)}, ${Z(\n this.lastPoint\n )}, ${Z(this.center)}, ${this.clockwise ? \"CW\" : \"CCW\"})`;\n }\n get coefficients() {\n if (this._coefficients === null) {\n const [t, e] = this.center, n = this.radius * this.radius;\n this._coefficients = {\n x2: 1 / n,\n xy: 0,\n y2: 1 / n,\n x: -(2 * t) / n,\n y: -(2 * e) / n,\n c: (t * t + e * e - n) / n\n };\n }\n return this._coefficients;\n }\n isValidParameter(t) {\n return 1 - t >= -this.precision && t >= -this.precision;\n }\n angleToParam(t) {\n return Zt(this.firstAngle, wt(t), this.clockwise) / this.angularLength;\n }\n get angularLength() {\n return this._angularLength || (this._angularLength = Zt(\n this.firstAngle,\n this.lastAngle,\n this.clockwise\n )), this._angularLength;\n }\n paramPoint(t) {\n return it(\n this.center,\n Tt(\n this.radius,\n this.firstAngle + t * this.angularLength * (this.clockwise ? -1 : 1)\n )\n );\n }\n pointToParam(t) {\n const [e, n] = Ot(t, this.center);\n if (Math.abs(e - this.radius) > this.precision)\n throw new Error(\n `Point ${Z(t)} is not on segment ${this.repr}`\n );\n const i = this.angleToParam(n);\n if (!this.isValidParameter(i))\n throw new Error(\n `Point ${Z(t)} is not on segment ${this.repr}`\n );\n return i;\n }\n get radius() {\n return this._radius === null && (this._radius = J(this.firstPoint, this.center)), this._radius;\n }\n get firstAngle() {\n if (this._firstAngle === null) {\n const [t, e] = Q(this.firstPoint, this.center);\n this._firstAngle = wt(Math.atan2(e, t));\n }\n return this._firstAngle;\n }\n get lastAngle() {\n if (this._lastAngle === null) {\n const [t, e] = Q(this.lastPoint, this.center);\n this._lastAngle = wt(Math.atan2(e, t));\n }\n return this._lastAngle;\n }\n get length() {\n return this.radius * this.angularLength;\n }\n get squareLength() {\n return this.length * this.length;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n isSame(t) {\n return !(t instanceof ct) || !Y(this.center, t.center) ? !1 : Y(this.firstPoint, t.firstPoint) && Y(this.lastPoint, t.lastPoint) && this.clockwise === t.clockwise || Y(this.lastPoint, t.firstPoint) && Y(this.firstPoint, t.lastPoint) && this.clockwise === !t.clockwise;\n }\n clone() {\n return new ct(\n this.firstPoint,\n this.lastPoint,\n this.center,\n this.clockwise\n );\n }\n reverse() {\n return new ct(\n this.lastPoint,\n this.firstPoint,\n this.center,\n !this.clockwise\n );\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n const t = this.radius + this.precision, e = (n) => this.isValidParameter(this.angleToParam(n));\n this._boundingBox = new mt(\n e(Math.PI) ? this.center[0] - t : Math.min(this.firstPoint[0], this.lastPoint[0]) - this.precision,\n e(Math.PI * 1.5) ? this.center[1] - t : Math.min(this.firstPoint[1], this.lastPoint[1]) - this.precision,\n e(0) ? this.center[0] + t : Math.max(this.firstPoint[0], this.lastPoint[0]) + this.precision,\n e(Math.PI / 2) ? this.center[1] + t : Math.max(this.firstPoint[1], this.lastPoint[1]) + this.precision\n );\n }\n return this._boundingBox;\n }\n distanceFrom(t) {\n const [e, n] = Ot(t, this.center);\n return this.isValidParameter(this.angleToParam(n)) ? Math.abs(e - this.radius) : Math.sqrt(\n Math.min(\n Rt(t, this.firstPoint),\n Rt(t, this.lastPoint)\n )\n );\n }\n isOnSegment(t) {\n if (Y(t, this.firstPoint) || Y(t, this.lastPoint))\n return !0;\n const [e, n] = Ot(t, this.center);\n if (Math.abs(e - this.radius) > this.precision) return !1;\n const i = this.angleToParam(n);\n return this.isValidParameter(i);\n }\n gradientAt(t) {\n const e = this.firstAngle + t * this.angularLength * (this.clockwise ? -1 : 1), n = this.radius * this.angularLength, i = -n * Math.sin(e), o = n * Math.cos(e);\n return this.clockwise ? [-i, -o] : [i, o];\n }\n tangentAt(t) {\n const [e, n] = Ot(t, this.center);\n if (Math.abs(e - this.radius) > this.precision)\n throw new Error(\"Point is not on the arc\");\n const i = this.angleToParam(n);\n if (!this.isValidParameter(i))\n throw new Error(\"Point is not on the arc\");\n const o = Tt(1, n);\n return (this.clockwise ? Qt : tt)(H(o));\n }\n get tangentAtFirstPoint() {\n const t = Tt(1, this.firstAngle);\n return (this.clockwise ? Qt : tt)(H(t));\n }\n get tangentAtLastPoint() {\n const t = Tt(1, this.lastAngle);\n return (this.clockwise ? Qt : tt)(H(t));\n }\n splitAt(t) {\n let e;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? e = t : e = [t];\n const i = [0, 1, ...e.map((h) => this.pointToParam(h))], o = new Map(\n Kt([i, [this.firstPoint, this.lastPoint, ...e]])\n );\n i.sort((h, a) => h - a);\n let l = null;\n return i.flatMap((h, a) => {\n if (a === i.length - 1) return [];\n const u = i[a + 1];\n if (u - h < this.precision)\n return l === null && (l = h), [];\n const c = l === null ? h : l, g = new ct(\n o.get(c) || this.paramPoint(c),\n o.get(u) || this.paramPoint(u),\n this.center,\n this.clockwise\n );\n return l = null, g;\n });\n }\n transform(t) {\n return new ct(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint),\n t.transform(this.center),\n t.keepsOrientation() ? this.clockwise : !this.clockwise\n );\n }\n}\nfunction fn(r, s, t) {\n const e = new at(s, r), n = new at(s, t), i = tt(e.tangentAtFirstPoint), o = tt(n.tangentAtLastPoint), l = me(\n { firstPoint: e.midPoint, V: i, precision: 1e-9 },\n { firstPoint: n.midPoint, V: o, precision: 1e-9 }\n );\n if (l === \"parallel\")\n throw new Error(\"Cannot create an arc from three colinear points\");\n const h = St(\n Q(r, s),\n Q(t, s)\n ) > 0;\n return new ct(\n r,\n t,\n it(e.midPoint, nt(i, l.intersectionParam1)),\n h,\n { ignoreChecks: !0 }\n );\n}\nfunction mn(r, s, t) {\n const e = new at(r, s), n = tt(e.tangentAtFirstPoint), i = me(\n { firstPoint: e.midPoint, V: n, precision: 1e-9 },\n {\n firstPoint: r,\n V: tt(t),\n precision: 1e-9\n }\n );\n if (i === \"parallel\")\n throw new Error(\"Cannot create an arc from three colinear points\");\n const o = it(\n e.midPoint,\n nt(n, i.intersectionParam1)\n ), l = St(\n Q(o, r),\n Q(o, it(r, t))\n ) < 0;\n return new ct(r, s, o, l, {\n ignoreChecks: !0\n });\n}\nconst be = 1e-21, Bt = 1.618034;\nfunction Ee(r, s = 0, t = 1, e = 110, n = 1e3) {\n let i, o, l, h, a, u, c, g, d, w, p, P, f;\n for (o = r(s), l = r(t), o < l && ([s, t] = [t, s], [o, l] = [l, o]), f = t + Bt * (t - s), h = r(f), a = 3, c = 0; h < l; ) {\n if (g = (t - s) * (l - h), d = (t - f) * (l - o), w = d - g, Math.abs(w) < be ? i = 2 * be : i = 2 * w, p = t - ((t - f) * d - (t - s) * g) / i, P = t + e * (f - t), c > n)\n throw new Error(\"Too many iterations.\");\n if (c += 1, (p - f) * (t - p) > 0) {\n if (u = r(p), a += 1, u < h)\n return s = t, t = p, o = l, l = u, [s, t, f, o, l, h, a];\n if (u > l)\n return f = p, h = u, [s, t, f, o, l, h, a];\n p = f + Bt * (f - t), u = r(p), a += 1;\n } else\n (p - P) * (P - f) >= 0 ? (p = P, u = r(p), a += 1) : (p - P) * (f - p) > 0 ? (u = r(p), a += 1, u < h && (t = f, f = p, p = f + Bt * (f - t), l = h, h = u, u = r(p), a += 1)) : (p = f + Bt * (f - t), u = r(p), a += 1);\n s = t, t = f, f = p, o = l, l = h, h = u;\n }\n return [s, t, f, o, l, h, a];\n}\nconst _e = 0.381966, Ke = 1e-11;\nclass He {\n constructor(s, t = 148e-10, e = 500) {\n q(this, \"xmin\");\n q(this, \"fval\");\n q(this, \"iter\");\n q(this, \"funcalls\");\n q(this, \"brack\");\n this.func = s, this.tol = t, this.maxiter = e, this.func = s, this.tol = t, this.maxiter = e, this.xmin = 1 / 0, this.fval = 1 / 0, this.iter = 0, this.funcalls = 0, this.brack = null;\n }\n setBracket(s = null) {\n this.brack = s;\n }\n getBracketInfo() {\n let s, t, e, n, i, o, l;\n const h = this.func, a = this.brack;\n if (a === null)\n [i, o, l, s, t, e, n] = Ee(h);\n else if (a.length === 2)\n [i, o, l, s, t, e, n] = Ee(h, a[0], a[1]);\n else if (a.length === 3) {\n if ([i, o, l] = a, i > l && ([l, i] = [i, l]), !(i < o && o < l))\n throw new Error(\"Not a bracketing interval.\");\n if (s = h(i), t = h(o), e = h(l), !(t < s && t < e))\n throw new Error(\"Not a bracketing interval.\");\n n = 3;\n } else\n throw new Error(\n \"Bracketing interval must be length 2 or 3 sequence.\"\n );\n return [i, o, l, s, t, e, n];\n }\n optimize() {\n const s = this.func;\n let [t, e, n, , , , i] = this.getBracketInfo(), o = e, l = e, h = e, a = s(o), u = a, c = a, g, d;\n t < n ? (g = t, d = n) : (g = n, d = t);\n let w = 0;\n i = 1;\n let p = 0, P = 0, f;\n for (; p < this.maxiter; ) {\n const M = this.tol * Math.abs(o) + Ke, E = 2 * M, R = 0.5 * (g + d);\n if (Math.abs(o - R) < E - 0.5 * (d - g))\n break;\n if (Math.abs(w) <= M)\n o >= R ? w = g - o : w = d - o, P = _e * w;\n else {\n const L = (o - l) * (c - u);\n let S = (o - h) * (c - a), k = (o - h) * S - (o - l) * L;\n S = 2 * (S - L), S > 0 && (k = -k), S = Math.abs(S);\n const D = w;\n w = P, k > S * (g - o) && k < S * (d - o) && Math.abs(k) < Math.abs(0.5 * S * D) ? (P = k * 1 / S, f = o + P, (f - g < E || d - f < E) && (R - o >= 0 ? P = M : P = -M)) : (o >= R ? w = g - o : w = d - o, P = _e * w);\n }\n Math.abs(P) < M ? P >= 0 ? f = o + M : f = o - M : f = o + P;\n const v = s(f);\n i += 1, v > c ? (f < o ? g = f : d = f, v <= a || l === o ? (h = l, l = f, u = a, a = v) : (v <= u || h === o || h === l) && (h = f, u = v)) : (f >= o ? g = o : d = o, h = l, l = o, o = f, u = a, a = c, c = v), p += 1;\n }\n this.xmin = o, this.fval = c, this.iter = p, this.funcalls = i;\n }\n results() {\n return {\n argMin: this.xmin,\n fMin: this.fval,\n iterations: this.iter,\n funcCalls: this.funcalls\n };\n }\n run() {\n return this.optimize(), this.results();\n }\n}\nfunction Ce(r, s = 1e-8, t = 1e3) {\n const e = new He(r, s, t);\n return e.setBracket([0, 1]), e.run();\n}\nfunction qe(r) {\n if (r.__esModule) return r;\n var s = r.default;\n if (typeof s == \"function\") {\n var t = function e() {\n return this instanceof e ? Reflect.construct(s, arguments, this.constructor) : s.apply(this, arguments);\n };\n t.prototype = s.prototype;\n } else t = {};\n return Object.defineProperty(t, \"__esModule\", { value: !0 }), Object.keys(r).forEach(function(e) {\n var n = Object.getOwnPropertyDescriptor(r, e);\n Object.defineProperty(t, e, n.get ? n : {\n enumerable: !0,\n get: function() {\n return r[e];\n }\n });\n }), t;\n}\nvar $ = {};\nconst ts = Object.prototype.toString;\nfunction Ct(r) {\n const s = ts.call(r);\n return s.endsWith(\"Array]\") && !s.includes(\"Big\");\n}\nconst es = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n isAnyArray: Ct\n}, Symbol.toStringTag, { value: \"Module\" })), ss = /* @__PURE__ */ qe(es);\nfunction ns(r) {\n var s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!Ct(r))\n throw new TypeError(\"input must be an array\");\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n var t = s.fromIndex, e = t === void 0 ? 0 : t, n = s.toIndex, i = n === void 0 ? r.length : n;\n if (e < 0 || e >= r.length || !Number.isInteger(e))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (i <= e || i > r.length || !Number.isInteger(i))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = r[e], l = e + 1; l < i; l++)\n r[l] > o && (o = r[l]);\n return o;\n}\nfunction is(r) {\n var s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!Ct(r))\n throw new TypeError(\"input must be an array\");\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n var t = s.fromIndex, e = t === void 0 ? 0 : t, n = s.toIndex, i = n === void 0 ? r.length : n;\n if (e < 0 || e >= r.length || !Number.isInteger(e))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (i <= e || i > r.length || !Number.isInteger(i))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = r[e], l = e + 1; l < i; l++)\n r[l] < o && (o = r[l]);\n return o;\n}\nfunction rs(r) {\n var s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (Ct(r)) {\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n } else throw new TypeError(\"input must be an array\");\n var t;\n if (s.output !== void 0) {\n if (!Ct(s.output))\n throw new TypeError(\"output option must be an array if specified\");\n t = s.output;\n } else\n t = new Array(r.length);\n var e = is(r), n = ns(r);\n if (e === n)\n throw new RangeError(\"minimum and maximum input values are equal. Cannot rescale a constant array\");\n var i = s.min, o = i === void 0 ? s.autoMinMax ? e : 0 : i, l = s.max, h = l === void 0 ? s.autoMinMax ? n : 1 : l;\n if (o >= h)\n throw new RangeError(\"min option must be smaller than max option\");\n for (var a = (h - o) / (n - e), u = 0; u < r.length; u++)\n t[u] = (r[u] - e) * a + o;\n return t;\n}\nconst os = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: rs\n}, Symbol.toStringTag, { value: \"Module\" })), ls = /* @__PURE__ */ qe(os);\nObject.defineProperty($, \"__esModule\", { value: !0 });\nvar st = ss, je = ls;\nconst Ut = \" \".repeat(2), Fe = \" \".repeat(4);\nfunction hs() {\n return xe(this);\n}\nfunction xe(r, s = {}) {\n const {\n maxRows: t = 15,\n maxColumns: e = 10,\n maxNumSize: n = 8,\n padMinus: i = \"auto\"\n } = s;\n return `${r.constructor.name} {\n${Ut}[\n${Fe}${as(r, t, e, n, i)}\n${Ut}]\n${Ut}rows: ${r.rows}\n${Ut}columns: ${r.columns}\n}`;\n}\nfunction as(r, s, t, e, n) {\n const { rows: i, columns: o } = r, l = Math.min(i, s), h = Math.min(o, t), a = [];\n if (n === \"auto\") {\n n = !1;\n t: for (let u = 0; u < l; u++)\n for (let c = 0; c < h; c++)\n if (r.get(u, c) < 0) {\n n = !0;\n break t;\n }\n }\n for (let u = 0; u < l; u++) {\n let c = [];\n for (let g = 0; g < h; g++)\n c.push(us(r.get(u, g), e, n));\n a.push(`${c.join(\" \")}`);\n }\n return h !== o && (a[a.length - 1] += ` ... ${o - t} more columns`), l !== i && a.push(`... ${i - s} more rows`), a.join(`\n${Fe}`);\n}\nfunction us(r, s, t) {\n return (r >= 0 && t ? ` ${Se(r, s - 1)}` : Se(r, s)).padEnd(s);\n}\nfunction Se(r, s) {\n let t = r.toString();\n if (t.length <= s) return t;\n let e = r.toFixed(s);\n if (e.length > s && (e = r.toFixed(Math.max(0, s - (e.length - s)))), e.length <= s && !e.startsWith(\"0.000\") && !e.startsWith(\"-0.000\"))\n return e;\n let n = r.toExponential(s);\n return n.length > s && (n = r.toExponential(Math.max(0, s - (n.length - s)))), n.slice(0);\n}\nfunction cs(r, s) {\n r.prototype.add = function(e) {\n return typeof e == \"number\" ? this.addS(e) : this.addM(e);\n }, r.prototype.addS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) + e);\n return this;\n }, r.prototype.addM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) + e.get(n, i));\n return this;\n }, r.add = function(e, n) {\n return new s(e).add(n);\n }, r.prototype.sub = function(e) {\n return typeof e == \"number\" ? this.subS(e) : this.subM(e);\n }, r.prototype.subS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) - e);\n return this;\n }, r.prototype.subM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) - e.get(n, i));\n return this;\n }, r.sub = function(e, n) {\n return new s(e).sub(n);\n }, r.prototype.subtract = r.prototype.sub, r.prototype.subtractS = r.prototype.subS, r.prototype.subtractM = r.prototype.subM, r.subtract = r.sub, r.prototype.mul = function(e) {\n return typeof e == \"number\" ? this.mulS(e) : this.mulM(e);\n }, r.prototype.mulS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) * e);\n return this;\n }, r.prototype.mulM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) * e.get(n, i));\n return this;\n }, r.mul = function(e, n) {\n return new s(e).mul(n);\n }, r.prototype.multiply = r.prototype.mul, r.prototype.multiplyS = r.prototype.mulS, r.prototype.multiplyM = r.prototype.mulM, r.multiply = r.mul, r.prototype.div = function(e) {\n return typeof e == \"number\" ? this.divS(e) : this.divM(e);\n }, r.prototype.divS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) / e);\n return this;\n }, r.prototype.divM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) / e.get(n, i));\n return this;\n }, r.div = function(e, n) {\n return new s(e).div(n);\n }, r.prototype.divide = r.prototype.div, r.prototype.divideS = r.prototype.divS, r.prototype.divideM = r.prototype.divM, r.divide = r.div, r.prototype.mod = function(e) {\n return typeof e == \"number\" ? this.modS(e) : this.modM(e);\n }, r.prototype.modS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) % e);\n return this;\n }, r.prototype.modM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) % e.get(n, i));\n return this;\n }, r.mod = function(e, n) {\n return new s(e).mod(n);\n }, r.prototype.modulus = r.prototype.mod, r.prototype.modulusS = r.prototype.modS, r.prototype.modulusM = r.prototype.modM, r.modulus = r.mod, r.prototype.and = function(e) {\n return typeof e == \"number\" ? this.andS(e) : this.andM(e);\n }, r.prototype.andS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) & e);\n return this;\n }, r.prototype.andM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) & e.get(n, i));\n return this;\n }, r.and = function(e, n) {\n return new s(e).and(n);\n }, r.prototype.or = function(e) {\n return typeof e == \"number\" ? this.orS(e) : this.orM(e);\n }, r.prototype.orS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) | e);\n return this;\n }, r.prototype.orM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) | e.get(n, i));\n return this;\n }, r.or = function(e, n) {\n return new s(e).or(n);\n }, r.prototype.xor = function(e) {\n return typeof e == \"number\" ? this.xorS(e) : this.xorM(e);\n }, r.prototype.xorS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) ^ e);\n return this;\n }, r.prototype.xorM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) ^ e.get(n, i));\n return this;\n }, r.xor = function(e, n) {\n return new s(e).xor(n);\n }, r.prototype.leftShift = function(e) {\n return typeof e == \"number\" ? this.leftShiftS(e) : this.leftShiftM(e);\n }, r.prototype.leftShiftS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) << e);\n return this;\n }, r.prototype.leftShiftM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) << e.get(n, i));\n return this;\n }, r.leftShift = function(e, n) {\n return new s(e).leftShift(n);\n }, r.prototype.signPropagatingRightShift = function(e) {\n return typeof e == \"number\" ? this.signPropagatingRightShiftS(e) : this.signPropagatingRightShiftM(e);\n }, r.prototype.signPropagatingRightShiftS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) >> e);\n return this;\n }, r.prototype.signPropagatingRightShiftM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) >> e.get(n, i));\n return this;\n }, r.signPropagatingRightShift = function(e, n) {\n return new s(e).signPropagatingRightShift(n);\n }, r.prototype.rightShift = function(e) {\n return typeof e == \"number\" ? this.rightShiftS(e) : this.rightShiftM(e);\n }, r.prototype.rightShiftS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) >>> e);\n return this;\n }, r.prototype.rightShiftM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) >>> e.get(n, i));\n return this;\n }, r.rightShift = function(e, n) {\n return new s(e).rightShift(n);\n }, r.prototype.zeroFillRightShift = r.prototype.rightShift, r.prototype.zeroFillRightShiftS = r.prototype.rightShiftS, r.prototype.zeroFillRightShiftM = r.prototype.rightShiftM, r.zeroFillRightShift = r.rightShift, r.prototype.not = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, ~this.get(e, n));\n return this;\n }, r.not = function(e) {\n return new s(e).not();\n }, r.prototype.abs = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.abs(this.get(e, n)));\n return this;\n }, r.abs = function(e) {\n return new s(e).abs();\n }, r.prototype.acos = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.acos(this.get(e, n)));\n return this;\n }, r.acos = function(e) {\n return new s(e).acos();\n }, r.prototype.acosh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.acosh(this.get(e, n)));\n return this;\n }, r.acosh = function(e) {\n return new s(e).acosh();\n }, r.prototype.asin = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.asin(this.get(e, n)));\n return this;\n }, r.asin = function(e) {\n return new s(e).asin();\n }, r.prototype.asinh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.asinh(this.get(e, n)));\n return this;\n }, r.asinh = function(e) {\n return new s(e).asinh();\n }, r.prototype.atan = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.atan(this.get(e, n)));\n return this;\n }, r.atan = function(e) {\n return new s(e).atan();\n }, r.prototype.atanh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.atanh(this.get(e, n)));\n return this;\n }, r.atanh = function(e) {\n return new s(e).atanh();\n }, r.prototype.cbrt = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.cbrt(this.get(e, n)));\n return this;\n }, r.cbrt = function(e) {\n return new s(e).cbrt();\n }, r.prototype.ceil = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.ceil(this.get(e, n)));\n return this;\n }, r.ceil = function(e) {\n return new s(e).ceil();\n }, r.prototype.clz32 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.clz32(this.get(e, n)));\n return this;\n }, r.clz32 = function(e) {\n return new s(e).clz32();\n }, r.prototype.cos = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.cos(this.get(e, n)));\n return this;\n }, r.cos = function(e) {\n return new s(e).cos();\n }, r.prototype.cosh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.cosh(this.get(e, n)));\n return this;\n }, r.cosh = function(e) {\n return new s(e).cosh();\n }, r.prototype.exp = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.exp(this.get(e, n)));\n return this;\n }, r.exp = function(e) {\n return new s(e).exp();\n }, r.prototype.expm1 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.expm1(this.get(e, n)));\n return this;\n }, r.expm1 = function(e) {\n return new s(e).expm1();\n }, r.prototype.floor = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.floor(this.get(e, n)));\n return this;\n }, r.floor = function(e) {\n return new s(e).floor();\n }, r.prototype.fround = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.fround(this.get(e, n)));\n return this;\n }, r.fround = function(e) {\n return new s(e).fround();\n }, r.prototype.log = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.log(this.get(e, n)));\n return this;\n }, r.log = function(e) {\n return new s(e).log();\n }, r.prototype.log1p = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.log1p(this.get(e, n)));\n return this;\n }, r.log1p = function(e) {\n return new s(e).log1p();\n }, r.prototype.log10 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.log10(this.get(e, n)));\n return this;\n }, r.log10 = function(e) {\n return new s(e).log10();\n }, r.prototype.log2 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.log2(this.get(e, n)));\n return this;\n }, r.log2 = function(e) {\n return new s(e).log2();\n }, r.prototype.round = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.round(this.get(e, n)));\n return this;\n }, r.round = function(e) {\n return new s(e).round();\n }, r.prototype.sign = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.sign(this.get(e, n)));\n return this;\n }, r.sign = function(e) {\n return new s(e).sign();\n }, r.prototype.sin = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.sin(this.get(e, n)));\n return this;\n }, r.sin = function(e) {\n return new s(e).sin();\n }, r.prototype.sinh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.sinh(this.get(e, n)));\n return this;\n }, r.sinh = function(e) {\n return new s(e).sinh();\n }, r.prototype.sqrt = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.sqrt(this.get(e, n)));\n return this;\n }, r.sqrt = function(e) {\n return new s(e).sqrt();\n }, r.prototype.tan = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.tan(this.get(e, n)));\n return this;\n }, r.tan = function(e) {\n return new s(e).tan();\n }, r.prototype.tanh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.tanh(this.get(e, n)));\n return this;\n }, r.tanh = function(e) {\n return new s(e).tanh();\n }, r.prototype.trunc = function() {\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.set(e, n, Math.trunc(this.get(e, n)));\n return this;\n }, r.trunc = function(e) {\n return new s(e).trunc();\n }, r.pow = function(e, n) {\n return new s(e).pow(n);\n }, r.prototype.pow = function(e) {\n return typeof e == \"number\" ? this.powS(e) : this.powM(e);\n }, r.prototype.powS = function(e) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) ** e);\n return this;\n }, r.prototype.powM = function(e) {\n if (e = s.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) ** e.get(n, i));\n return this;\n };\n}\nfunction ot(r, s, t) {\n let e = t ? r.rows : r.rows - 1;\n if (s < 0 || s > e)\n throw new RangeError(\"Row index out of range\");\n}\nfunction lt(r, s, t) {\n let e = t ? r.columns : r.columns - 1;\n if (s < 0 || s > e)\n throw new RangeError(\"Column index out of range\");\n}\nfunction Pt(r, s) {\n if (s.to1DArray && (s = s.to1DArray()), s.length !== r.columns)\n throw new RangeError(\n \"vector size must be the same as the number of columns\"\n );\n return s;\n}\nfunction bt(r, s) {\n if (s.to1DArray && (s = s.to1DArray()), s.length !== r.rows)\n throw new RangeError(\"vector size must be the same as the number of rows\");\n return s;\n}\nfunction ge(r, s) {\n if (!st.isAnyArray(s))\n throw new TypeError(\"row indices must be an array\");\n for (let t = 0; t < s.length; t++)\n if (s[t] < 0 || s[t] >= r.rows)\n throw new RangeError(\"row indices are out of range\");\n}\nfunction we(r, s) {\n if (!st.isAnyArray(s))\n throw new TypeError(\"column indices must be an array\");\n for (let t = 0; t < s.length; t++)\n if (s[t] < 0 || s[t] >= r.columns)\n throw new RangeError(\"column indices are out of range\");\n}\nfunction ae(r, s, t, e, n) {\n if (arguments.length !== 5)\n throw new RangeError(\"expected 4 arguments\");\n if (Yt(\"startRow\", s), Yt(\"endRow\", t), Yt(\"startColumn\", e), Yt(\"endColumn\", n), s > t || e > n || s < 0 || s >= r.rows || t < 0 || t >= r.rows || e < 0 || e >= r.columns || n < 0 || n >= r.columns)\n throw new RangeError(\"Submatrix indices are out of range\");\n}\nfunction Ht(r, s = 0) {\n let t = [];\n for (let e = 0; e < r; e++)\n t.push(s);\n return t;\n}\nfunction Yt(r, s) {\n if (typeof s != \"number\")\n throw new TypeError(`${r} must be a number`);\n}\nfunction yt(r) {\n if (r.isEmpty())\n throw new Error(\"Empty matrix has no elements to index\");\n}\nfunction fs(r) {\n let s = Ht(r.rows);\n for (let t = 0; t < r.rows; ++t)\n for (let e = 0; e < r.columns; ++e)\n s[t] += r.get(t, e);\n return s;\n}\nfunction ms(r) {\n let s = Ht(r.columns);\n for (let t = 0; t < r.rows; ++t)\n for (let e = 0; e < r.columns; ++e)\n s[e] += r.get(t, e);\n return s;\n}\nfunction gs(r) {\n let s = 0;\n for (let t = 0; t < r.rows; t++)\n for (let e = 0; e < r.columns; e++)\n s += r.get(t, e);\n return s;\n}\nfunction ws(r) {\n let s = Ht(r.rows, 1);\n for (let t = 0; t < r.rows; ++t)\n for (let e = 0; e < r.columns; ++e)\n s[t] *= r.get(t, e);\n return s;\n}\nfunction ps(r) {\n let s = Ht(r.columns, 1);\n for (let t = 0; t < r.rows; ++t)\n for (let e = 0; e < r.columns; ++e)\n s[e] *= r.get(t, e);\n return s;\n}\nfunction ds(r) {\n let s = 1;\n for (let t = 0; t < r.rows; t++)\n for (let e = 0; e < r.columns; e++)\n s *= r.get(t, e);\n return s;\n}\nfunction Ms(r, s, t) {\n const e = r.rows, n = r.columns, i = [];\n for (let o = 0; o < e; o++) {\n let l = 0, h = 0, a = 0;\n for (let u = 0; u < n; u++)\n a = r.get(o, u) - t[o], l += a, h += a * a;\n s ? i.push((h - l * l / n) / (n - 1)) : i.push((h - l * l / n) / n);\n }\n return i;\n}\nfunction ys(r, s, t) {\n const e = r.rows, n = r.columns, i = [];\n for (let o = 0; o < n; o++) {\n let l = 0, h = 0, a = 0;\n for (let u = 0; u < e; u++)\n a = r.get(u, o) - t[o], l += a, h += a * a;\n s ? i.push((h - l * l / e) / (e - 1)) : i.push((h - l * l / e) / e);\n }\n return i;\n}\nfunction Ps(r, s, t) {\n const e = r.rows, n = r.columns, i = e * n;\n let o = 0, l = 0, h = 0;\n for (let a = 0; a < e; a++)\n for (let u = 0; u < n; u++)\n h = r.get(a, u) - t, o += h, l += h * h;\n return s ? (l - o * o / i) / (i - 1) : (l - o * o / i) / i;\n}\nfunction bs(r, s) {\n for (let t = 0; t < r.rows; t++)\n for (let e = 0; e < r.columns; e++)\n r.set(t, e, r.get(t, e) - s[t]);\n}\nfunction Es(r, s) {\n for (let t = 0; t < r.rows; t++)\n for (let e = 0; e < r.columns; e++)\n r.set(t, e, r.get(t, e) - s[e]);\n}\nfunction _s(r, s) {\n for (let t = 0; t < r.rows; t++)\n for (let e = 0; e < r.columns; e++)\n r.set(t, e, r.get(t, e) - s);\n}\nfunction js(r) {\n const s = [];\n for (let t = 0; t < r.rows; t++) {\n let e = 0;\n for (let n = 0; n < r.columns; n++)\n e += r.get(t, n) ** 2 / (r.columns - 1);\n s.push(Math.sqrt(e));\n }\n return s;\n}\nfunction Ss(r, s) {\n for (let t = 0; t < r.rows; t++)\n for (let e = 0; e < r.columns; e++)\n r.set(t, e, r.get(t, e) / s[t]);\n}\nfunction ks(r) {\n const s = [];\n for (let t = 0; t < r.columns; t++) {\n let e = 0;\n for (let n = 0; n < r.rows; n++)\n e += r.get(n, t) ** 2 / (r.rows - 1);\n s.push(Math.sqrt(e));\n }\n return s;\n}\nfunction Rs(r, s) {\n for (let t = 0; t < r.rows; t++)\n for (let e = 0; e < r.columns; e++)\n r.set(t, e, r.get(t, e) / s[e]);\n}\nfunction vs(r) {\n const s = r.size - 1;\n let t = 0;\n for (let e = 0; e < r.columns; e++)\n for (let n = 0; n < r.rows; n++)\n t += r.get(n, e) ** 2 / s;\n return Math.sqrt(t);\n}\nfunction Ts(r, s) {\n for (let t = 0; t < r.rows; t++)\n for (let e = 0; e < r.columns; e++)\n r.set(t, e, r.get(t, e) / s);\n}\nclass V {\n static from1DArray(s, t, e) {\n if (s * t !== e.length)\n throw new RangeError(\"data length does not match given dimensions\");\n let i = new _(s, t);\n for (let o = 0; o < s; o++)\n for (let l = 0; l < t; l++)\n i.set(o, l, e[o * t + l]);\n return i;\n }\n static rowVector(s) {\n let t = new _(1, s.length);\n for (let e = 0; e < s.length; e++)\n t.set(0, e, s[e]);\n return t;\n }\n static columnVector(s) {\n let t = new _(s.length, 1);\n for (let e = 0; e < s.length; e++)\n t.set(e, 0, s[e]);\n return t;\n }\n static zeros(s, t) {\n return new _(s, t);\n }\n static ones(s, t) {\n return new _(s, t).fill(1);\n }\n static rand(s, t, e = {}) {\n if (typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { random: n = Math.random } = e;\n let i = new _(s, t);\n for (let o = 0; o < s; o++)\n for (let l = 0; l < t; l++)\n i.set(o, l, n());\n return i;\n }\n static randInt(s, t, e = {}) {\n if (typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: n = 0, max: i = 1e3, random: o = Math.random } = e;\n if (!Number.isInteger(n)) throw new TypeError(\"min must be an integer\");\n if (!Number.isInteger(i)) throw new TypeError(\"max must be an integer\");\n if (n >= i) throw new RangeError(\"min must be smaller than max\");\n let l = i - n, h = new _(s, t);\n for (let a = 0; a < s; a++)\n for (let u = 0; u < t; u++) {\n let c = n + Math.round(o() * l);\n h.set(a, u, c);\n }\n return h;\n }\n static eye(s, t, e) {\n t === void 0 && (t = s), e === void 0 && (e = 1);\n let n = Math.min(s, t), i = this.zeros(s, t);\n for (let o = 0; o < n; o++)\n i.set(o, o, e);\n return i;\n }\n static diag(s, t, e) {\n let n = s.length;\n t === void 0 && (t = n), e === void 0 && (e = t);\n let i = Math.min(n, t, e), o = this.zeros(t, e);\n for (let l = 0; l < i; l++)\n o.set(l, l, s[l]);\n return o;\n }\n static min(s, t) {\n s = this.checkMatrix(s), t = this.checkMatrix(t);\n let e = s.rows, n = s.columns, i = new _(e, n);\n for (let o = 0; o < e; o++)\n for (let l = 0; l < n; l++)\n i.set(o, l, Math.min(s.get(o, l), t.get(o, l)));\n return i;\n }\n static max(s, t) {\n s = this.checkMatrix(s), t = this.checkMatrix(t);\n let e = s.rows, n = s.columns, i = new this(e, n);\n for (let o = 0; o < e; o++)\n for (let l = 0; l < n; l++)\n i.set(o, l, Math.max(s.get(o, l), t.get(o, l)));\n return i;\n }\n static checkMatrix(s) {\n return V.isMatrix(s) ? s : new _(s);\n }\n static isMatrix(s) {\n return s != null && s.klass === \"Matrix\";\n }\n get size() {\n return this.rows * this.columns;\n }\n apply(s) {\n if (typeof s != \"function\")\n throw new TypeError(\"callback must be a function\");\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n s.call(this, t, e);\n return this;\n }\n to1DArray() {\n let s = [];\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n s.push(this.get(t, e));\n return s;\n }\n to2DArray() {\n let s = [];\n for (let t = 0; t < this.rows; t++) {\n s.push([]);\n for (let e = 0; e < this.columns; e++)\n s[t].push(this.get(t, e));\n }\n return s;\n }\n toJSON() {\n return this.to2DArray();\n }\n isRowVector() {\n return this.rows === 1;\n }\n isColumnVector() {\n return this.columns === 1;\n }\n isVector() {\n return this.rows === 1 || this.columns === 1;\n }\n isSquare() {\n return this.rows === this.columns;\n }\n isEmpty() {\n return this.rows === 0 || this.columns === 0;\n }\n isSymmetric() {\n if (this.isSquare()) {\n for (let s = 0; s < this.rows; s++)\n for (let t = 0; t <= s; t++)\n if (this.get(s, t) !== this.get(t, s))\n return !1;\n return !0;\n }\n return !1;\n }\n isDistance() {\n if (!this.isSymmetric()) return !1;\n for (let s = 0; s < this.rows; s++)\n if (this.get(s, s) !== 0) return !1;\n return !0;\n }\n isEchelonForm() {\n let s = 0, t = 0, e = -1, n = !0, i = !1;\n for (; s < this.rows && n; ) {\n for (t = 0, i = !1; t < this.columns && i === !1; )\n this.get(s, t) === 0 ? t++ : this.get(s, t) === 1 && t > e ? (i = !0, e = t) : (n = !1, i = !0);\n s++;\n }\n return n;\n }\n isReducedEchelonForm() {\n let s = 0, t = 0, e = -1, n = !0, i = !1;\n for (; s < this.rows && n; ) {\n for (t = 0, i = !1; t < this.columns && i === !1; )\n this.get(s, t) === 0 ? t++ : this.get(s, t) === 1 && t > e ? (i = !0, e = t) : (n = !1, i = !0);\n for (let o = t + 1; o < this.rows; o++)\n this.get(s, o) !== 0 && (n = !1);\n s++;\n }\n return n;\n }\n echelonForm() {\n let s = this.clone(), t = 0, e = 0;\n for (; t < s.rows && e < s.columns; ) {\n let n = t;\n for (let i = t; i < s.rows; i++)\n s.get(i, e) > s.get(n, e) && (n = i);\n if (s.get(n, e) === 0)\n e++;\n else {\n s.swapRows(t, n);\n let i = s.get(t, e);\n for (let o = e; o < s.columns; o++)\n s.set(t, o, s.get(t, o) / i);\n for (let o = t + 1; o < s.rows; o++) {\n let l = s.get(o, e) / s.get(t, e);\n s.set(o, e, 0);\n for (let h = e + 1; h < s.columns; h++)\n s.set(o, h, s.get(o, h) - s.get(t, h) * l);\n }\n t++, e++;\n }\n }\n return s;\n }\n reducedEchelonForm() {\n let s = this.echelonForm(), t = s.columns, e = s.rows, n = e - 1;\n for (; n >= 0; )\n if (s.maxRow(n) === 0)\n n--;\n else {\n let i = 0, o = !1;\n for (; i < e && o === !1; )\n s.get(n, i) === 1 ? o = !0 : i++;\n for (let l = 0; l < n; l++) {\n let h = s.get(l, i);\n for (let a = i; a < t; a++) {\n let u = s.get(l, a) - h * s.get(n, a);\n s.set(l, a, u);\n }\n }\n n--;\n }\n return s;\n }\n set() {\n throw new Error(\"set method is unimplemented\");\n }\n get() {\n throw new Error(\"get method is unimplemented\");\n }\n repeat(s = {}) {\n if (typeof s != \"object\")\n throw new TypeError(\"options must be an object\");\n const { rows: t = 1, columns: e = 1 } = s;\n if (!Number.isInteger(t) || t <= 0)\n throw new TypeError(\"rows must be a positive integer\");\n if (!Number.isInteger(e) || e <= 0)\n throw new TypeError(\"columns must be a positive integer\");\n let n = new _(this.rows * t, this.columns * e);\n for (let i = 0; i < t; i++)\n for (let o = 0; o < e; o++)\n n.setSubMatrix(this, this.rows * i, this.columns * o);\n return n;\n }\n fill(s) {\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, s);\n return this;\n }\n neg() {\n return this.mulS(-1);\n }\n getRow(s) {\n ot(this, s);\n let t = [];\n for (let e = 0; e < this.columns; e++)\n t.push(this.get(s, e));\n return t;\n }\n getRowVector(s) {\n return _.rowVector(this.getRow(s));\n }\n setRow(s, t) {\n ot(this, s), t = Pt(this, t);\n for (let e = 0; e < this.columns; e++)\n this.set(s, e, t[e]);\n return this;\n }\n swapRows(s, t) {\n ot(this, s), ot(this, t);\n for (let e = 0; e < this.columns; e++) {\n let n = this.get(s, e);\n this.set(s, e, this.get(t, e)), this.set(t, e, n);\n }\n return this;\n }\n getColumn(s) {\n lt(this, s);\n let t = [];\n for (let e = 0; e < this.rows; e++)\n t.push(this.get(e, s));\n return t;\n }\n getColumnVector(s) {\n return _.columnVector(this.getColumn(s));\n }\n setColumn(s, t) {\n lt(this, s), t = bt(this, t);\n for (let e = 0; e < this.rows; e++)\n this.set(e, s, t[e]);\n return this;\n }\n swapColumns(s, t) {\n lt(this, s), lt(this, t);\n for (let e = 0; e < this.rows; e++) {\n let n = this.get(e, s);\n this.set(e, s, this.get(e, t)), this.set(e, t, n);\n }\n return this;\n }\n addRowVector(s) {\n s = Pt(this, s);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) + s[e]);\n return this;\n }\n subRowVector(s) {\n s = Pt(this, s);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) - s[e]);\n return this;\n }\n mulRowVector(s) {\n s = Pt(this, s);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) * s[e]);\n return this;\n }\n divRowVector(s) {\n s = Pt(this, s);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) / s[e]);\n return this;\n }\n addColumnVector(s) {\n s = bt(this, s);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) + s[t]);\n return this;\n }\n subColumnVector(s) {\n s = bt(this, s);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) - s[t]);\n return this;\n }\n mulColumnVector(s) {\n s = bt(this, s);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) * s[t]);\n return this;\n }\n divColumnVector(s) {\n s = bt(this, s);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) / s[t]);\n return this;\n }\n mulRow(s, t) {\n ot(this, s);\n for (let e = 0; e < this.columns; e++)\n this.set(s, e, this.get(s, e) * t);\n return this;\n }\n mulColumn(s, t) {\n lt(this, s);\n for (let e = 0; e < this.rows; e++)\n this.set(e, s, this.get(e, s) * t);\n return this;\n }\n max(s) {\n if (this.isEmpty())\n return NaN;\n switch (s) {\n case \"row\": {\n const t = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.get(e, n) > t[e] && (t[e] = this.get(e, n));\n return t;\n }\n case \"column\": {\n const t = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.get(e, n) > t[n] && (t[n] = this.get(e, n));\n return t;\n }\n case void 0: {\n let t = this.get(0, 0);\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.get(e, n) > t && (t = this.get(e, n));\n return t;\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n maxIndex() {\n yt(this);\n let s = this.get(0, 0), t = [0, 0];\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.get(e, n) > s && (s = this.get(e, n), t[0] = e, t[1] = n);\n return t;\n }\n min(s) {\n if (this.isEmpty())\n return NaN;\n switch (s) {\n case \"row\": {\n const t = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.get(e, n) < t[e] && (t[e] = this.get(e, n));\n return t;\n }\n case \"column\": {\n const t = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.get(e, n) < t[n] && (t[n] = this.get(e, n));\n return t;\n }\n case void 0: {\n let t = this.get(0, 0);\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.get(e, n) < t && (t = this.get(e, n));\n return t;\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n minIndex() {\n yt(this);\n let s = this.get(0, 0), t = [0, 0];\n for (let e = 0; e < this.rows; e++)\n for (let n = 0; n < this.columns; n++)\n this.get(e, n) < s && (s = this.get(e, n), t[0] = e, t[1] = n);\n return t;\n }\n maxRow(s) {\n if (ot(this, s), this.isEmpty())\n return NaN;\n let t = this.get(s, 0);\n for (let e = 1; e < this.columns; e++)\n this.get(s, e) > t && (t = this.get(s, e));\n return t;\n }\n maxRowIndex(s) {\n ot(this, s), yt(this);\n let t = this.get(s, 0), e = [s, 0];\n for (let n = 1; n < this.columns; n++)\n this.get(s, n) > t && (t = this.get(s, n), e[1] = n);\n return e;\n }\n minRow(s) {\n if (ot(this, s), this.isEmpty())\n return NaN;\n let t = this.get(s, 0);\n for (let e = 1; e < this.columns; e++)\n this.get(s, e) < t && (t = this.get(s, e));\n return t;\n }\n minRowIndex(s) {\n ot(this, s), yt(this);\n let t = this.get(s, 0), e = [s, 0];\n for (let n = 1; n < this.columns; n++)\n this.get(s, n) < t && (t = this.get(s, n), e[1] = n);\n return e;\n }\n maxColumn(s) {\n if (lt(this, s), this.isEmpty())\n return NaN;\n let t = this.get(0, s);\n for (let e = 1; e < this.rows; e++)\n this.get(e, s) > t && (t = this.get(e, s));\n return t;\n }\n maxColumnIndex(s) {\n lt(this, s), yt(this);\n let t = this.get(0, s), e = [0, s];\n for (let n = 1; n < this.rows; n++)\n this.get(n, s) > t && (t = this.get(n, s), e[0] = n);\n return e;\n }\n minColumn(s) {\n if (lt(this, s), this.isEmpty())\n return NaN;\n let t = this.get(0, s);\n for (let e = 1; e < this.rows; e++)\n this.get(e, s) < t && (t = this.get(e, s));\n return t;\n }\n minColumnIndex(s) {\n lt(this, s), yt(this);\n let t = this.get(0, s), e = [0, s];\n for (let n = 1; n < this.rows; n++)\n this.get(n, s) < t && (t = this.get(n, s), e[0] = n);\n return e;\n }\n diag() {\n let s = Math.min(this.rows, this.columns), t = [];\n for (let e = 0; e < s; e++)\n t.push(this.get(e, e));\n return t;\n }\n norm(s = \"frobenius\") {\n switch (s) {\n case \"max\":\n return this.max();\n case \"frobenius\":\n return Math.sqrt(this.dot(this));\n default:\n throw new RangeError(`unknown norm type: ${s}`);\n }\n }\n cumulativeSum() {\n let s = 0;\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n s += this.get(t, e), this.set(t, e, s);\n return this;\n }\n dot(s) {\n V.isMatrix(s) && (s = s.to1DArray());\n let t = this.to1DArray();\n if (t.length !== s.length)\n throw new RangeError(\"vectors do not have the same size\");\n let e = 0;\n for (let n = 0; n < t.length; n++)\n e += t[n] * s[n];\n return e;\n }\n mmul(s) {\n s = _.checkMatrix(s);\n let t = this.rows, e = this.columns, n = s.columns, i = new _(t, n), o = new Float64Array(e);\n for (let l = 0; l < n; l++) {\n for (let h = 0; h < e; h++)\n o[h] = s.get(h, l);\n for (let h = 0; h < t; h++) {\n let a = 0;\n for (let u = 0; u < e; u++)\n a += this.get(h, u) * o[u];\n i.set(h, l, a);\n }\n }\n return i;\n }\n mpow(s) {\n if (!this.isSquare())\n throw new RangeError(\"Matrix must be square\");\n if (!Number.isInteger(s) || s < 0)\n throw new RangeError(\"Exponent must be a non-negative integer\");\n let t = _.eye(this.rows), e = this;\n for (let n = s; n > 1; n /= 2)\n n & 1 && (t = t.mmul(e)), e = e.mmul(e);\n return t;\n }\n strassen2x2(s) {\n s = _.checkMatrix(s);\n let t = new _(2, 2);\n const e = this.get(0, 0), n = s.get(0, 0), i = this.get(0, 1), o = s.get(0, 1), l = this.get(1, 0), h = s.get(1, 0), a = this.get(1, 1), u = s.get(1, 1), c = (e + a) * (n + u), g = (l + a) * n, d = e * (o - u), w = a * (h - n), p = (e + i) * u, P = (l - e) * (n + o), f = (i - a) * (h + u), M = c + w - p + f, E = d + p, R = g + w, v = c - g + d + P;\n return t.set(0, 0, M), t.set(0, 1, E), t.set(1, 0, R), t.set(1, 1, v), t;\n }\n strassen3x3(s) {\n s = _.checkMatrix(s);\n let t = new _(3, 3);\n const e = this.get(0, 0), n = this.get(0, 1), i = this.get(0, 2), o = this.get(1, 0), l = this.get(1, 1), h = this.get(1, 2), a = this.get(2, 0), u = this.get(2, 1), c = this.get(2, 2), g = s.get(0, 0), d = s.get(0, 1), w = s.get(0, 2), p = s.get(1, 0), P = s.get(1, 1), f = s.get(1, 2), M = s.get(2, 0), E = s.get(2, 1), R = s.get(2, 2), v = (e + n + i - o - l - u - c) * P, L = (e - o) * (-d + P), S = l * (-g + d + p - P - f - M + R), k = (-e + o + l) * (g - d + P), D = (o + l) * (-g + d), m = e * g, b = (-e + a + u) * (g - w + f), j = (-e + a) * (w - f), y = (a + u) * (-g + w), C = (e + n + i - l - h - a - u) * f, F = u * (-g + w + p - P - f - M + E), I = (-i + u + c) * (P + M - E), B = (i - c) * (P - E), x = i * M, N = (u + c) * (-M + E), A = (-i + l + h) * (f + M - R), O = (i - h) * (f - R), U = (l + h) * (-M + R), T = n * p, z = h * E, X = o * w, G = a * d, W = c * R, se = m + x + T, ne = v + k + D + m + I + x + N, ie = m + b + y + C + x + A + U, re = L + S + k + m + x + A + O, At = L + k + D + m + z, Vt = x + A + O + U + X, Nt = m + b + j + F + I + B + x, $t = I + B + x + N + G, Lt = m + b + j + y + W;\n return t.set(0, 0, se), t.set(0, 1, ne), t.set(0, 2, ie), t.set(1, 0, re), t.set(1, 1, At), t.set(1, 2, Vt), t.set(2, 0, Nt), t.set(2, 1, $t), t.set(2, 2, Lt), t;\n }\n mmulStrassen(s) {\n s = _.checkMatrix(s);\n let t = this.clone(), e = t.rows, n = t.columns, i = s.rows, o = s.columns;\n n !== i && console.warn(\n `Multiplying ${e} x ${n} and ${i} x ${o} matrix: dimensions do not match.`\n );\n function l(c, g, d) {\n let w = c.rows, p = c.columns;\n if (w === g && p === d)\n return c;\n {\n let P = V.zeros(g, d);\n return P = P.setSubMatrix(c, 0, 0), P;\n }\n }\n let h = Math.max(e, i), a = Math.max(n, o);\n t = l(t, h, a), s = l(s, h, a);\n function u(c, g, d, w) {\n if (d <= 512 || w <= 512)\n return c.mmul(g);\n d % 2 === 1 && w % 2 === 1 ? (c = l(c, d + 1, w + 1), g = l(g, d + 1, w + 1)) : d % 2 === 1 ? (c = l(c, d + 1, w), g = l(g, d + 1, w)) : w % 2 === 1 && (c = l(c, d, w + 1), g = l(g, d, w + 1));\n let p = parseInt(c.rows / 2, 10), P = parseInt(c.columns / 2, 10), f = c.subMatrix(0, p - 1, 0, P - 1), M = g.subMatrix(0, p - 1, 0, P - 1), E = c.subMatrix(0, p - 1, P, c.columns - 1), R = g.subMatrix(0, p - 1, P, g.columns - 1), v = c.subMatrix(p, c.rows - 1, 0, P - 1), L = g.subMatrix(p, g.rows - 1, 0, P - 1), S = c.subMatrix(p, c.rows - 1, P, c.columns - 1), k = g.subMatrix(p, g.rows - 1, P, g.columns - 1), D = u(\n V.add(f, S),\n V.add(M, k),\n p,\n P\n ), m = u(V.add(v, S), M, p, P), b = u(f, V.sub(R, k), p, P), j = u(S, V.sub(L, M), p, P), y = u(V.add(f, E), k, p, P), C = u(\n V.sub(v, f),\n V.add(M, R),\n p,\n P\n ), F = u(\n V.sub(E, S),\n V.add(L, k),\n p,\n P\n ), I = V.add(D, j);\n I.sub(y), I.add(F);\n let B = V.add(b, y), x = V.add(m, j), N = V.sub(D, m);\n N.add(b), N.add(C);\n let A = V.zeros(2 * I.rows, 2 * I.columns);\n return A = A.setSubMatrix(I, 0, 0), A = A.setSubMatrix(B, I.rows, 0), A = A.setSubMatrix(x, 0, I.columns), A = A.setSubMatrix(N, I.rows, I.columns), A.subMatrix(0, d - 1, 0, w - 1);\n }\n return u(t, s, h, a);\n }\n scaleRows(s = {}) {\n if (typeof s != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: t = 0, max: e = 1 } = s;\n if (!Number.isFinite(t)) throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(e)) throw new TypeError(\"max must be a number\");\n if (t >= e) throw new RangeError(\"min must be smaller than max\");\n let n = new _(this.rows, this.columns);\n for (let i = 0; i < this.rows; i++) {\n const o = this.getRow(i);\n o.length > 0 && je(o, { min: t, max: e, output: o }), n.setRow(i, o);\n }\n return n;\n }\n scaleColumns(s = {}) {\n if (typeof s != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: t = 0, max: e = 1 } = s;\n if (!Number.isFinite(t)) throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(e)) throw new TypeError(\"max must be a number\");\n if (t >= e) throw new RangeError(\"min must be smaller than max\");\n let n = new _(this.rows, this.columns);\n for (let i = 0; i < this.columns; i++) {\n const o = this.getColumn(i);\n o.length && je(o, {\n min: t,\n max: e,\n output: o\n }), n.setColumn(i, o);\n }\n return n;\n }\n flipRows() {\n const s = Math.ceil(this.columns / 2);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < s; e++) {\n let n = this.get(t, e), i = this.get(t, this.columns - 1 - e);\n this.set(t, e, i), this.set(t, this.columns - 1 - e, n);\n }\n return this;\n }\n flipColumns() {\n const s = Math.ceil(this.rows / 2);\n for (let t = 0; t < this.columns; t++)\n for (let e = 0; e < s; e++) {\n let n = this.get(e, t), i = this.get(this.rows - 1 - e, t);\n this.set(e, t, i), this.set(this.rows - 1 - e, t, n);\n }\n return this;\n }\n kroneckerProduct(s) {\n s = _.checkMatrix(s);\n let t = this.rows, e = this.columns, n = s.rows, i = s.columns, o = new _(t * n, e * i);\n for (let l = 0; l < t; l++)\n for (let h = 0; h < e; h++)\n for (let a = 0; a < n; a++)\n for (let u = 0; u < i; u++)\n o.set(n * l + a, i * h + u, this.get(l, h) * s.get(a, u));\n return o;\n }\n kroneckerSum(s) {\n if (s = _.checkMatrix(s), !this.isSquare() || !s.isSquare())\n throw new Error(\"Kronecker Sum needs two Square Matrices\");\n let t = this.rows, e = s.rows, n = this.kroneckerProduct(_.eye(e, e)), i = _.eye(t, t).kroneckerProduct(s);\n return n.add(i);\n }\n transpose() {\n let s = new _(this.columns, this.rows);\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n s.set(e, t, this.get(t, e));\n return s;\n }\n sortRows(s = ke) {\n for (let t = 0; t < this.rows; t++)\n this.setRow(t, this.getRow(t).sort(s));\n return this;\n }\n sortColumns(s = ke) {\n for (let t = 0; t < this.columns; t++)\n this.setColumn(t, this.getColumn(t).sort(s));\n return this;\n }\n subMatrix(s, t, e, n) {\n ae(this, s, t, e, n);\n let i = new _(\n t - s + 1,\n n - e + 1\n );\n for (let o = s; o <= t; o++)\n for (let l = e; l <= n; l++)\n i.set(o - s, l - e, this.get(o, l));\n return i;\n }\n subMatrixRow(s, t, e) {\n if (t === void 0 && (t = 0), e === void 0 && (e = this.columns - 1), t > e || t < 0 || t >= this.columns || e < 0 || e >= this.columns)\n throw new RangeError(\"Argument out of range\");\n let n = new _(s.length, e - t + 1);\n for (let i = 0; i < s.length; i++)\n for (let o = t; o <= e; o++) {\n if (s[i] < 0 || s[i] >= this.rows)\n throw new RangeError(`Row index out of range: ${s[i]}`);\n n.set(i, o - t, this.get(s[i], o));\n }\n return n;\n }\n subMatrixColumn(s, t, e) {\n if (t === void 0 && (t = 0), e === void 0 && (e = this.rows - 1), t > e || t < 0 || t >= this.rows || e < 0 || e >= this.rows)\n throw new RangeError(\"Argument out of range\");\n let n = new _(e - t + 1, s.length);\n for (let i = 0; i < s.length; i++)\n for (let o = t; o <= e; o++) {\n if (s[i] < 0 || s[i] >= this.columns)\n throw new RangeError(`Column index out of range: ${s[i]}`);\n n.set(o - t, i, this.get(o, s[i]));\n }\n return n;\n }\n setSubMatrix(s, t, e) {\n if (s = _.checkMatrix(s), s.isEmpty())\n return this;\n let n = t + s.rows - 1, i = e + s.columns - 1;\n ae(this, t, n, e, i);\n for (let o = 0; o < s.rows; o++)\n for (let l = 0; l < s.columns; l++)\n this.set(t + o, e + l, s.get(o, l));\n return this;\n }\n selection(s, t) {\n ge(this, s), we(this, t);\n let e = new _(s.length, t.length);\n for (let n = 0; n < s.length; n++) {\n let i = s[n];\n for (let o = 0; o < t.length; o++) {\n let l = t[o];\n e.set(n, o, this.get(i, l));\n }\n }\n return e;\n }\n trace() {\n let s = Math.min(this.rows, this.columns), t = 0;\n for (let e = 0; e < s; e++)\n t += this.get(e, e);\n return t;\n }\n clone() {\n return this.constructor.copy(this, new _(this.rows, this.columns));\n }\n /**\n * @template {AbstractMatrix} M\n * @param {AbstractMatrix} from\n * @param {M} to\n * @return {M}\n */\n static copy(s, t) {\n for (const [e, n, i] of s.entries())\n t.set(e, n, i);\n return t;\n }\n sum(s) {\n switch (s) {\n case \"row\":\n return fs(this);\n case \"column\":\n return ms(this);\n case void 0:\n return gs(this);\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n product(s) {\n switch (s) {\n case \"row\":\n return ws(this);\n case \"column\":\n return ps(this);\n case void 0:\n return ds(this);\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n mean(s) {\n const t = this.sum(s);\n switch (s) {\n case \"row\": {\n for (let e = 0; e < this.rows; e++)\n t[e] /= this.columns;\n return t;\n }\n case \"column\": {\n for (let e = 0; e < this.columns; e++)\n t[e] /= this.rows;\n return t;\n }\n case void 0:\n return t / this.size;\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n variance(s, t = {}) {\n if (typeof s == \"object\" && (t = s, s = void 0), typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { unbiased: e = !0, mean: n = this.mean(s) } = t;\n if (typeof e != \"boolean\")\n throw new TypeError(\"unbiased must be a boolean\");\n switch (s) {\n case \"row\": {\n if (!st.isAnyArray(n))\n throw new TypeError(\"mean must be an array\");\n return Ms(this, e, n);\n }\n case \"column\": {\n if (!st.isAnyArray(n))\n throw new TypeError(\"mean must be an array\");\n return ys(this, e, n);\n }\n case void 0: {\n if (typeof n != \"number\")\n throw new TypeError(\"mean must be a number\");\n return Ps(this, e, n);\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n standardDeviation(s, t) {\n typeof s == \"object\" && (t = s, s = void 0);\n const e = this.variance(s, t);\n if (s === void 0)\n return Math.sqrt(e);\n for (let n = 0; n < e.length; n++)\n e[n] = Math.sqrt(e[n]);\n return e;\n }\n center(s, t = {}) {\n if (typeof s == \"object\" && (t = s, s = void 0), typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { center: e = this.mean(s) } = t;\n switch (s) {\n case \"row\": {\n if (!st.isAnyArray(e))\n throw new TypeError(\"center must be an array\");\n return bs(this, e), this;\n }\n case \"column\": {\n if (!st.isAnyArray(e))\n throw new TypeError(\"center must be an array\");\n return Es(this, e), this;\n }\n case void 0: {\n if (typeof e != \"number\")\n throw new TypeError(\"center must be a number\");\n return _s(this, e), this;\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n scale(s, t = {}) {\n if (typeof s == \"object\" && (t = s, s = void 0), typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n let e = t.scale;\n switch (s) {\n case \"row\": {\n if (e === void 0)\n e = js(this);\n else if (!st.isAnyArray(e))\n throw new TypeError(\"scale must be an array\");\n return Ss(this, e), this;\n }\n case \"column\": {\n if (e === void 0)\n e = ks(this);\n else if (!st.isAnyArray(e))\n throw new TypeError(\"scale must be an array\");\n return Rs(this, e), this;\n }\n case void 0: {\n if (e === void 0)\n e = vs(this);\n else if (typeof e != \"number\")\n throw new TypeError(\"scale must be a number\");\n return Ts(this, e), this;\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n toString(s) {\n return xe(this, s);\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * iterator from left to right, from top to bottom\n * yield [row, column, value]\n * @returns {Generator<[number, number, number], void, void>}\n */\n *entries() {\n for (let s = 0; s < this.rows; s++)\n for (let t = 0; t < this.columns; t++)\n yield [s, t, this.get(s, t)];\n }\n /**\n * iterator from left to right, from top to bottom\n * yield value\n * @returns {Generator<number, void, void>}\n */\n *values() {\n for (let s = 0; s < this.rows; s++)\n for (let t = 0; t < this.columns; t++)\n yield this.get(s, t);\n }\n}\nV.prototype.klass = \"Matrix\";\ntypeof Symbol < \"u\" && (V.prototype[Symbol.for(\"nodejs.util.inspect.custom\")] = hs);\nfunction ke(r, s) {\n return r - s;\n}\nfunction Is(r) {\n return r.every((s) => typeof s == \"number\");\n}\nV.random = V.rand;\nV.randomInt = V.randInt;\nV.diagonal = V.diag;\nV.prototype.diagonal = V.prototype.diag;\nV.identity = V.eye;\nV.prototype.negate = V.prototype.neg;\nV.prototype.tensorProduct = V.prototype.kroneckerProduct;\nvar Ft, ue, dt;\nlet _ = (dt = class extends V {\n constructor(t, e) {\n super();\n le(this, Ft);\n /**\n * @type {Float64Array[]}\n */\n q(this, \"data\");\n if (dt.isMatrix(t))\n he(this, Ft, ue).call(this, t.rows, t.columns), dt.copy(t, this);\n else if (Number.isInteger(t) && t >= 0)\n he(this, Ft, ue).call(this, t, e);\n else if (st.isAnyArray(t)) {\n const n = t;\n if (t = n.length, e = t ? n[0].length : 0, typeof e != \"number\")\n throw new TypeError(\n \"Data must be a 2D array with at least one element\"\n );\n this.data = [];\n for (let i = 0; i < t; i++) {\n if (n[i].length !== e)\n throw new RangeError(\"Inconsistent array dimensions\");\n if (!Is(n[i]))\n throw new TypeError(\"Input data contains non-numeric values\");\n this.data.push(Float64Array.from(n[i]));\n }\n this.rows = t, this.columns = e;\n } else\n throw new TypeError(\n \"First argument must be a positive number or an array\"\n );\n }\n set(t, e, n) {\n return this.data[t][e] = n, this;\n }\n get(t, e) {\n return this.data[t][e];\n }\n removeRow(t) {\n return ot(this, t), this.data.splice(t, 1), this.rows -= 1, this;\n }\n addRow(t, e) {\n return e === void 0 && (e = t, t = this.rows), ot(this, t, !0), e = Float64Array.from(Pt(this, e)), this.data.splice(t, 0, e), this.rows += 1, this;\n }\n removeColumn(t) {\n lt(this, t);\n for (let e = 0; e < this.rows; e++) {\n const n = new Float64Array(this.columns - 1);\n for (let i = 0; i < t; i++)\n n[i] = this.data[e][i];\n for (let i = t + 1; i < this.columns; i++)\n n[i - 1] = this.data[e][i];\n this.data[e] = n;\n }\n return this.columns -= 1, this;\n }\n addColumn(t, e) {\n typeof e > \"u\" && (e = t, t = this.columns), lt(this, t, !0), e = bt(this, e);\n for (let n = 0; n < this.rows; n++) {\n const i = new Float64Array(this.columns + 1);\n let o = 0;\n for (; o < t; o++)\n i[o] = this.data[n][o];\n for (i[o++] = e[n]; o < this.columns + 1; o++)\n i[o] = this.data[n][o - 1];\n this.data[n] = i;\n }\n return this.columns += 1, this;\n }\n}, Ft = new WeakSet(), /**\n * Init an empty matrix\n * @param {number} nRows\n * @param {number} nColumns\n */\nue = function(t, e) {\n if (this.data = [], Number.isInteger(e) && e >= 0)\n for (let n = 0; n < t; n++)\n this.data.push(new Float64Array(e));\n else\n throw new TypeError(\"nColumns must be a positive integer\");\n this.rows = t, this.columns = e;\n}, dt);\ncs(V, _);\nvar K;\nconst Jt = class Jt extends V {\n /**\n * @param {number | AbstractMatrix | ArrayLike<ArrayLike<number>>} diagonalSize\n * @return {this}\n */\n constructor(t) {\n super();\n /** @type {Matrix} */\n le(this, K);\n if (_.isMatrix(t)) {\n if (!t.isSymmetric())\n throw new TypeError(\"not symmetric data\");\n Dt(this, K, _.copy(\n t,\n new _(t.rows, t.rows)\n ));\n } else if (Number.isInteger(t) && t >= 0)\n Dt(this, K, new _(t, t));\n else if (Dt(this, K, new _(t)), !this.isSymmetric())\n throw new TypeError(\"not symmetric data\");\n }\n get size() {\n return ht(this, K).size;\n }\n get rows() {\n return ht(this, K).rows;\n }\n get columns() {\n return ht(this, K).columns;\n }\n get diagonalSize() {\n return this.rows;\n }\n /**\n * not the same as matrix.isSymmetric()\n * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n *\n * @param value\n * @returns {boolean}\n */\n static isSymmetricMatrix(t) {\n return _.isMatrix(t) && t.klassType === \"SymmetricMatrix\";\n }\n /**\n * @param diagonalSize\n * @return {SymmetricMatrix}\n */\n static zeros(t) {\n return new this(t);\n }\n /**\n * @param diagonalSize\n * @return {SymmetricMatrix}\n */\n static ones(t) {\n return new this(t).fill(1);\n }\n clone() {\n const t = new Jt(this.diagonalSize);\n for (const [e, n, i] of this.upperRightEntries())\n t.set(e, n, i);\n return t;\n }\n toMatrix() {\n return new _(this);\n }\n get(t, e) {\n return ht(this, K).get(t, e);\n }\n set(t, e, n) {\n return ht(this, K).set(t, e, n), ht(this, K).set(e, t, n), this;\n }\n removeCross(t) {\n return ht(this, K).removeRow(t), ht(this, K).removeColumn(t), this;\n }\n addCross(t, e) {\n e === void 0 && (e = t, t = this.diagonalSize);\n const n = e.slice();\n return n.splice(t, 1), ht(this, K).addRow(t, n), ht(this, K).addColumn(t, e), this;\n }\n /**\n * @param {Mask[]} mask\n */\n applyMask(t) {\n if (t.length !== this.diagonalSize)\n throw new RangeError(\"Mask size do not match with matrix size\");\n const e = [];\n for (const [n, i] of t.entries())\n i || e.push(n);\n e.reverse();\n for (const n of e)\n this.removeCross(n);\n return this;\n }\n /**\n * Compact format upper-right corner of matrix\n * iterate from left to right, from top to bottom.\n *\n * ```\n * A B C D\n * A 1 2 3 4\n * B 2 5 6 7\n * C 3 6 8 9\n * D 4 7 9 10\n * ```\n *\n * will return compact 1D array `[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]`\n *\n * length is S(i=0, n=sideSize) => 10 for a 4 sideSized matrix\n *\n * @returns {number[]}\n */\n toCompact() {\n const { diagonalSize: t } = this, e = new Array(t * (t + 1) / 2);\n for (let n = 0, i = 0, o = 0; o < e.length; o++)\n e[o] = this.get(i, n), ++n >= t && (n = ++i);\n return e;\n }\n /**\n * @param {number[]} compact\n * @return {SymmetricMatrix}\n */\n static fromCompact(t) {\n const e = t.length, n = (Math.sqrt(8 * e + 1) - 1) / 2;\n if (!Number.isInteger(n))\n throw new TypeError(\n `This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(\n t\n )}`\n );\n const i = new Jt(n);\n for (let o = 0, l = 0, h = 0; h < e; h++)\n i.set(o, l, t[h]), ++o >= n && (o = ++l);\n return i;\n }\n /**\n * half iterator upper-right-corner from left to right, from top to bottom\n * yield [row, column, value]\n *\n * @returns {Generator<[number, number, number], void, void>}\n */\n *upperRightEntries() {\n for (let t = 0, e = 0; t < this.diagonalSize; void 0) {\n const n = this.get(t, e);\n yield [t, e, n], ++e >= this.diagonalSize && (e = ++t);\n }\n }\n /**\n * half iterator upper-right-corner from left to right, from top to bottom\n * yield value\n *\n * @returns {Generator<[number, number, number], void, void>}\n */\n *upperRightValues() {\n for (let t = 0, e = 0; t < this.diagonalSize; void 0)\n yield this.get(t, e), ++e >= this.diagonalSize && (e = ++t);\n }\n};\nK = new WeakMap();\nlet pt = Jt;\npt.prototype.klassType = \"SymmetricMatrix\";\nclass te extends pt {\n /**\n * not the same as matrix.isSymmetric()\n * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n *\n * @param value\n * @returns {boolean}\n */\n static isDistanceMatrix(s) {\n return pt.isSymmetricMatrix(s) && s.klassSubType === \"DistanceMatrix\";\n }\n constructor(s) {\n if (super(s), !this.isDistance())\n throw new TypeError(\"Provided arguments do no produce a distance matrix\");\n }\n set(s, t, e) {\n return s === t && (e = 0), super.set(s, t, e);\n }\n addCross(s, t) {\n return t === void 0 && (t = s, s = this.diagonalSize), t = t.slice(), t[s] = 0, super.addCross(s, t);\n }\n toSymmetricMatrix() {\n return new pt(this);\n }\n clone() {\n const s = new te(this.diagonalSize);\n for (const [t, e, n] of this.upperRightEntries())\n t !== e && s.set(t, e, n);\n return s;\n }\n /**\n * Compact format upper-right corner of matrix\n * no diagonal (only zeros)\n * iterable from left to right, from top to bottom.\n *\n * ```\n * A B C D\n * A 0 1 2 3\n * B 1 0 4 5\n * C 2 4 0 6\n * D 3 5 6 0\n * ```\n *\n * will return compact 1D array `[1, 2, 3, 4, 5, 6]`\n *\n * length is S(i=0, n=sideSize-1) => 6 for a 4 side sized matrix\n *\n * @returns {number[]}\n */\n toCompact() {\n const { diagonalSize: s } = this, t = (s - 1) * s / 2, e = new Array(t);\n for (let n = 1, i = 0, o = 0; o < e.length; o++)\n e[o] = this.get(i, n), ++n >= s && (n = ++i + 1);\n return e;\n }\n /**\n * @param {number[]} compact\n */\n static fromCompact(s) {\n const t = s.length;\n if (t === 0)\n return new this(0);\n const e = (Math.sqrt(8 * t + 1) + 1) / 2;\n if (!Number.isInteger(e))\n throw new TypeError(\n `This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(\n s\n )}`\n );\n const n = new this(e);\n for (let i = 1, o = 0, l = 0; l < t; l++)\n n.set(i, o, s[l]), ++i >= e && (i = ++o + 1);\n return n;\n }\n}\nte.prototype.klassSubType = \"DistanceMatrix\";\nclass ft extends V {\n constructor(s, t, e) {\n super(), this.matrix = s, this.rows = t, this.columns = e;\n }\n}\nclass Cs extends ft {\n constructor(s, t) {\n lt(s, t), super(s, s.rows, 1), this.column = t;\n }\n set(s, t, e) {\n return this.matrix.set(s, this.column, e), this;\n }\n get(s) {\n return this.matrix.get(s, this.column);\n }\n}\nclass qs extends ft {\n constructor(s, t) {\n we(s, t), super(s, s.rows, t.length), this.columnIndices = t;\n }\n set(s, t, e) {\n return this.matrix.set(s, this.columnIndices[t], e), this;\n }\n get(s, t) {\n return this.matrix.get(s, this.columnIndices[t]);\n }\n}\nclass Fs extends ft {\n constructor(s) {\n super(s, s.rows, s.columns);\n }\n set(s, t, e) {\n return this.matrix.set(s, this.columns - t - 1, e), this;\n }\n get(s, t) {\n return this.matrix.get(s, this.columns - t - 1);\n }\n}\nclass xs extends ft {\n constructor(s) {\n super(s, s.rows, s.columns);\n }\n set(s, t, e) {\n return this.matrix.set(this.rows - s - 1, t, e), this;\n }\n get(s, t) {\n return this.matrix.get(this.rows - s - 1, t);\n }\n}\nclass As extends ft {\n constructor(s, t) {\n ot(s, t), super(s, 1, s.columns), this.row = t;\n }\n set(s, t, e) {\n return this.matrix.set(this.row, t, e), this;\n }\n get(s, t) {\n return this.matrix.get(this.row, t);\n }\n}\nclass Vs extends ft {\n constructor(s, t) {\n ge(s, t), super(s, t.length, s.columns), this.rowIndices = t;\n }\n set(s, t, e) {\n return this.matrix.set(this.rowIndices[s], t, e), this;\n }\n get(s, t) {\n return this.matrix.get(this.rowIndices[s], t);\n }\n}\nclass Gt extends ft {\n constructor(s, t, e) {\n ge(s, t), we(s, e), super(s, t.length, e.length), this.rowIndices = t, this.columnIndices = e;\n }\n set(s, t, e) {\n return this.matrix.set(\n this.rowIndices[s],\n this.columnIndices[t],\n e\n ), this;\n }\n get(s, t) {\n return this.matrix.get(\n this.rowIndices[s],\n this.columnIndices[t]\n );\n }\n}\nclass Ns extends ft {\n constructor(s, t, e, n, i) {\n ae(s, t, e, n, i), super(s, e - t + 1, i - n + 1), this.startRow = t, this.startColumn = n;\n }\n set(s, t, e) {\n return this.matrix.set(\n this.startRow + s,\n this.startColumn + t,\n e\n ), this;\n }\n get(s, t) {\n return this.matrix.get(\n this.startRow + s,\n this.startColumn + t\n );\n }\n}\nclass $s extends ft {\n constructor(s) {\n super(s, s.columns, s.rows);\n }\n set(s, t, e) {\n return this.matrix.set(t, s, e), this;\n }\n get(s, t) {\n return this.matrix.get(t, s);\n }\n}\nclass Ae extends V {\n constructor(s, t = {}) {\n const { rows: e = 1 } = t;\n if (s.length % e !== 0)\n throw new Error(\"the data length is not divisible by the number of rows\");\n super(), this.rows = e, this.columns = s.length / e, this.data = s;\n }\n set(s, t, e) {\n let n = this._calculateIndex(s, t);\n return this.data[n] = e, this;\n }\n get(s, t) {\n let e = this._calculateIndex(s, t);\n return this.data[e];\n }\n _calculateIndex(s, t) {\n return s * this.columns + t;\n }\n}\nclass rt extends V {\n constructor(s) {\n super(), this.data = s, this.rows = s.length, this.columns = s[0].length;\n }\n set(s, t, e) {\n return this.data[s][t] = e, this;\n }\n get(s, t) {\n return this.data[s][t];\n }\n}\nfunction Ls(r, s) {\n if (st.isAnyArray(r))\n return r[0] && st.isAnyArray(r[0]) ? new rt(r) : new Ae(r, s);\n throw new Error(\"the argument is not an array\");\n}\nclass ee {\n constructor(s) {\n s = rt.checkMatrix(s);\n let t = s.clone(), e = t.rows, n = t.columns, i = new Float64Array(e), o = 1, l, h, a, u, c, g, d, w, p;\n for (l = 0; l < e; l++)\n i[l] = l;\n for (w = new Float64Array(e), h = 0; h < n; h++) {\n for (l = 0; l < e; l++)\n w[l] = t.get(l, h);\n for (l = 0; l < e; l++) {\n for (p = Math.min(l, h), c = 0, a = 0; a < p; a++)\n c += t.get(l, a) * w[a];\n w[l] -= c, t.set(l, h, w[l]);\n }\n for (u = h, l = h + 1; l < e; l++)\n Math.abs(w[l]) > Math.abs(w[u]) && (u = l);\n if (u !== h) {\n for (a = 0; a < n; a++)\n g = t.get(u, a), t.set(u, a, t.get(h, a)), t.set(h, a, g);\n d = i[u], i[u] = i[h], i[h] = d, o = -o;\n }\n if (h < e && t.get(h, h) !== 0)\n for (l = h + 1; l < e; l++)\n t.set(l, h, t.get(l, h) / t.get(h, h));\n }\n this.LU = t, this.pivotVector = i, this.pivotSign = o;\n }\n isSingular() {\n let s = this.LU, t = s.columns;\n for (let e = 0; e < t; e++)\n if (s.get(e, e) === 0)\n return !0;\n return !1;\n }\n solve(s) {\n s = _.checkMatrix(s);\n let t = this.LU;\n if (t.rows !== s.rows)\n throw new Error(\"Invalid matrix dimensions\");\n if (this.isSingular())\n throw new Error(\"LU matrix is singular\");\n let n = s.columns, i = s.subMatrixRow(this.pivotVector, 0, n - 1), o = t.columns, l, h, a;\n for (a = 0; a < o; a++)\n for (l = a + 1; l < o; l++)\n for (h = 0; h < n; h++)\n i.set(l, h, i.get(l, h) - i.get(a, h) * t.get(l, a));\n for (a = o - 1; a >= 0; a--) {\n for (h = 0; h < n; h++)\n i.set(a, h, i.get(a, h) / t.get(a, a));\n for (l = 0; l < a; l++)\n for (h = 0; h < n; h++)\n i.set(l, h, i.get(l, h) - i.get(a, h) * t.get(l, a));\n }\n return i;\n }\n get determinant() {\n let s = this.LU;\n if (!s.isSquare())\n throw new Error(\"Matrix must be square\");\n let t = this.pivotSign, e = s.columns;\n for (let n = 0; n < e; n++)\n t *= s.get(n, n);\n return t;\n }\n get lowerTriangularMatrix() {\n let s = this.LU, t = s.rows, e = s.columns, n = new _(t, e);\n for (let i = 0; i < t; i++)\n for (let o = 0; o < e; o++)\n i > o ? n.set(i, o, s.get(i, o)) : i === o ? n.set(i, o, 1) : n.set(i, o, 0);\n return n;\n }\n get upperTriangularMatrix() {\n let s = this.LU, t = s.rows, e = s.columns, n = new _(t, e);\n for (let i = 0; i < t; i++)\n for (let o = 0; o < e; o++)\n i <= o ? n.set(i, o, s.get(i, o)) : n.set(i, o, 0);\n return n;\n }\n get pivotPermutationVector() {\n return Array.from(this.pivotVector);\n }\n}\nfunction ut(r, s) {\n let t = 0;\n return Math.abs(r) > Math.abs(s) ? (t = s / r, Math.abs(r) * Math.sqrt(1 + t * t)) : s !== 0 ? (t = r / s, Math.abs(s) * Math.sqrt(1 + t * t)) : 0;\n}\nclass pe {\n constructor(s) {\n s = rt.checkMatrix(s);\n let t = s.clone(), e = s.rows, n = s.columns, i = new Float64Array(n), o, l, h, a;\n for (h = 0; h < n; h++) {\n let u = 0;\n for (o = h; o < e; o++)\n u = ut(u, t.get(o, h));\n if (u !== 0) {\n for (t.get(h, h) < 0 && (u = -u), o = h; o < e; o++)\n t.set(o, h, t.get(o, h) / u);\n for (t.set(h, h, t.get(h, h) + 1), l = h + 1; l < n; l++) {\n for (a = 0, o = h; o < e; o++)\n a += t.get(o, h) * t.get(o, l);\n for (a = -a / t.get(h, h), o = h; o < e; o++)\n t.set(o, l, t.get(o, l) + a * t.get(o, h));\n }\n }\n i[h] = -u;\n }\n this.QR = t, this.Rdiag = i;\n }\n solve(s) {\n s = _.checkMatrix(s);\n let t = this.QR, e = t.rows;\n if (s.rows !== e)\n throw new Error(\"Matrix row dimensions must agree\");\n if (!this.isFullRank())\n throw new Error(\"Matrix is rank deficient\");\n let n = s.columns, i = s.clone(), o = t.columns, l, h, a, u;\n for (a = 0; a < o; a++)\n for (h = 0; h < n; h++) {\n for (u = 0, l = a; l < e; l++)\n u += t.get(l, a) * i.get(l, h);\n for (u = -u / t.get(a, a), l = a; l < e; l++)\n i.set(l, h, i.get(l, h) + u * t.get(l, a));\n }\n for (a = o - 1; a >= 0; a--) {\n for (h = 0; h < n; h++)\n i.set(a, h, i.get(a, h) / this.Rdiag[a]);\n for (l = 0; l < a; l++)\n for (h = 0; h < n; h++)\n i.set(l, h, i.get(l, h) - i.get(a, h) * t.get(l, a));\n }\n return i.subMatrix(0, o - 1, 0, n - 1);\n }\n isFullRank() {\n let s = this.QR.columns;\n for (let t = 0; t < s; t++)\n if (this.Rdiag[t] === 0)\n return !1;\n return !0;\n }\n get upperTriangularMatrix() {\n let s = this.QR, t = s.columns, e = new _(t, t), n, i;\n for (n = 0; n < t; n++)\n for (i = 0; i < t; i++)\n n < i ? e.set(n, i, s.get(n, i)) : n === i ? e.set(n, i, this.Rdiag[n]) : e.set(n, i, 0);\n return e;\n }\n get orthogonalMatrix() {\n let s = this.QR, t = s.rows, e = s.columns, n = new _(t, e), i, o, l, h;\n for (l = e - 1; l >= 0; l--) {\n for (i = 0; i < t; i++)\n n.set(i, l, 0);\n for (n.set(l, l, 1), o = l; o < e; o++)\n if (s.get(l, l) !== 0) {\n for (h = 0, i = l; i < t; i++)\n h += s.get(i, l) * n.get(i, o);\n for (h = -h / s.get(l, l), i = l; i < t; i++)\n n.set(i, o, n.get(i, o) + h * s.get(i, l));\n }\n }\n return n;\n }\n}\nclass vt {\n constructor(s, t = {}) {\n if (s = rt.checkMatrix(s), s.isEmpty())\n throw new Error(\"Matrix must be non-empty\");\n let e = s.rows, n = s.columns;\n const {\n computeLeftSingularVectors: i = !0,\n computeRightSingularVectors: o = !0,\n autoTranspose: l = !1\n } = t;\n let h = !!i, a = !!o, u = !1, c;\n if (e < n)\n if (!l)\n c = s.clone(), console.warn(\n \"Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose\"\n );\n else {\n c = s.transpose(), e = c.rows, n = c.columns, u = !0;\n let m = h;\n h = a, a = m;\n }\n else\n c = s.clone();\n let g = Math.min(e, n), d = Math.min(e + 1, n), w = new Float64Array(d), p = new _(e, g), P = new _(n, n), f = new Float64Array(n), M = new Float64Array(e), E = new Float64Array(d);\n for (let m = 0; m < d; m++) E[m] = m;\n let R = Math.min(e - 1, n), v = Math.max(0, Math.min(n - 2, e)), L = Math.max(R, v);\n for (let m = 0; m < L; m++) {\n if (m < R) {\n w[m] = 0;\n for (let b = m; b < e; b++)\n w[m] = ut(w[m], c.get(b, m));\n if (w[m] !== 0) {\n c.get(m, m) < 0 && (w[m] = -w[m]);\n for (let b = m; b < e; b++)\n c.set(b, m, c.get(b, m) / w[m]);\n c.set(m, m, c.get(m, m) + 1);\n }\n w[m] = -w[m];\n }\n for (let b = m + 1; b < n; b++) {\n if (m < R && w[m] !== 0) {\n let j = 0;\n for (let y = m; y < e; y++)\n j += c.get(y, m) * c.get(y, b);\n j = -j / c.get(m, m);\n for (let y = m; y < e; y++)\n c.set(y, b, c.get(y, b) + j * c.get(y, m));\n }\n f[b] = c.get(m, b);\n }\n if (h && m < R)\n for (let b = m; b < e; b++)\n p.set(b, m, c.get(b, m));\n if (m < v) {\n f[m] = 0;\n for (let b = m + 1; b < n; b++)\n f[m] = ut(f[m], f[b]);\n if (f[m] !== 0) {\n f[m + 1] < 0 && (f[m] = 0 - f[m]);\n for (let b = m + 1; b < n; b++)\n f[b] /= f[m];\n f[m + 1] += 1;\n }\n if (f[m] = -f[m], m + 1 < e && f[m] !== 0) {\n for (let b = m + 1; b < e; b++)\n M[b] = 0;\n for (let b = m + 1; b < e; b++)\n for (let j = m + 1; j < n; j++)\n M[b] += f[j] * c.get(b, j);\n for (let b = m + 1; b < n; b++) {\n let j = -f[b] / f[m + 1];\n for (let y = m + 1; y < e; y++)\n c.set(y, b, c.get(y, b) + j * M[y]);\n }\n }\n if (a)\n for (let b = m + 1; b < n; b++)\n P.set(b, m, f[b]);\n }\n }\n let S = Math.min(n, e + 1);\n if (R < n && (w[R] = c.get(R, R)), e < S && (w[S - 1] = 0), v + 1 < S && (f[v] = c.get(v, S - 1)), f[S - 1] = 0, h) {\n for (let m = R; m < g; m++) {\n for (let b = 0; b < e; b++)\n p.set(b, m, 0);\n p.set(m, m, 1);\n }\n for (let m = R - 1; m >= 0; m--)\n if (w[m] !== 0) {\n for (let b = m + 1; b < g; b++) {\n let j = 0;\n for (let y = m; y < e; y++)\n j += p.get(y, m) * p.get(y, b);\n j = -j / p.get(m, m);\n for (let y = m; y < e; y++)\n p.set(y, b, p.get(y, b) + j * p.get(y, m));\n }\n for (let b = m; b < e; b++)\n p.set(b, m, -p.get(b, m));\n p.set(m, m, 1 + p.get(m, m));\n for (let b = 0; b < m - 1; b++)\n p.set(b, m, 0);\n } else {\n for (let b = 0; b < e; b++)\n p.set(b, m, 0);\n p.set(m, m, 1);\n }\n }\n if (a)\n for (let m = n - 1; m >= 0; m--) {\n if (m < v && f[m] !== 0)\n for (let b = m + 1; b < n; b++) {\n let j = 0;\n for (let y = m + 1; y < n; y++)\n j += P.get(y, m) * P.get(y, b);\n j = -j / P.get(m + 1, m);\n for (let y = m + 1; y < n; y++)\n P.set(y, b, P.get(y, b) + j * P.get(y, m));\n }\n for (let b = 0; b < n; b++)\n P.set(b, m, 0);\n P.set(m, m, 1);\n }\n let k = S - 1, D = Number.EPSILON;\n for (; S > 0; ) {\n let m, b;\n for (m = S - 2; m >= -1 && m !== -1; m--) {\n const j = Number.MIN_VALUE + D * Math.abs(w[m] + Math.abs(w[m + 1]));\n if (Math.abs(f[m]) <= j || Number.isNaN(f[m])) {\n f[m] = 0;\n break;\n }\n }\n if (m === S - 2)\n b = 4;\n else {\n let j;\n for (j = S - 1; j >= m && j !== m; j--) {\n let y = (j !== S ? Math.abs(f[j]) : 0) + (j !== m + 1 ? Math.abs(f[j - 1]) : 0);\n if (Math.abs(w[j]) <= D * y) {\n w[j] = 0;\n break;\n }\n }\n j === m ? b = 3 : j === S - 1 ? b = 1 : (b = 2, m = j);\n }\n switch (m++, b) {\n case 1: {\n let j = f[S - 2];\n f[S - 2] = 0;\n for (let y = S - 2; y >= m; y--) {\n let C = ut(w[y], j), F = w[y] / C, I = j / C;\n if (w[y] = C, y !== m && (j = -I * f[y - 1], f[y - 1] = F * f[y - 1]), a)\n for (let B = 0; B < n; B++)\n C = F * P.get(B, y) + I * P.get(B, S - 1), P.set(B, S - 1, -I * P.get(B, y) + F * P.get(B, S - 1)), P.set(B, y, C);\n }\n break;\n }\n case 2: {\n let j = f[m - 1];\n f[m - 1] = 0;\n for (let y = m; y < S; y++) {\n let C = ut(w[y], j), F = w[y] / C, I = j / C;\n if (w[y] = C, j = -I * f[y], f[y] = F * f[y], h)\n for (let B = 0; B < e; B++)\n C = F * p.get(B, y) + I * p.get(B, m - 1), p.set(B, m - 1, -I * p.get(B, y) + F * p.get(B, m - 1)), p.set(B, y, C);\n }\n break;\n }\n case 3: {\n const j = Math.max(\n Math.abs(w[S - 1]),\n Math.abs(w[S - 2]),\n Math.abs(f[S - 2]),\n Math.abs(w[m]),\n Math.abs(f[m])\n ), y = w[S - 1] / j, C = w[S - 2] / j, F = f[S - 2] / j, I = w[m] / j, B = f[m] / j, x = ((C + y) * (C - y) + F * F) / 2, N = y * F * (y * F);\n let A = 0;\n (x !== 0 || N !== 0) && (x < 0 ? A = 0 - Math.sqrt(x * x + N) : A = Math.sqrt(x * x + N), A = N / (x + A));\n let O = (I + y) * (I - y) + A, U = I * B;\n for (let T = m; T < S - 1; T++) {\n let z = ut(O, U);\n z === 0 && (z = Number.MIN_VALUE);\n let X = O / z, G = U / z;\n if (T !== m && (f[T - 1] = z), O = X * w[T] + G * f[T], f[T] = X * f[T] - G * w[T], U = G * w[T + 1], w[T + 1] = X * w[T + 1], a)\n for (let W = 0; W < n; W++)\n z = X * P.get(W, T) + G * P.get(W, T + 1), P.set(W, T + 1, -G * P.get(W, T) + X * P.get(W, T + 1)), P.set(W, T, z);\n if (z = ut(O, U), z === 0 && (z = Number.MIN_VALUE), X = O / z, G = U / z, w[T] = z, O = X * f[T] + G * w[T + 1], w[T + 1] = -G * f[T] + X * w[T + 1], U = G * f[T + 1], f[T + 1] = X * f[T + 1], h && T < e - 1)\n for (let W = 0; W < e; W++)\n z = X * p.get(W, T) + G * p.get(W, T + 1), p.set(W, T + 1, -G * p.get(W, T) + X * p.get(W, T + 1)), p.set(W, T, z);\n }\n f[S - 2] = O;\n break;\n }\n case 4: {\n if (w[m] <= 0 && (w[m] = w[m] < 0 ? -w[m] : 0, a))\n for (let j = 0; j <= k; j++)\n P.set(j, m, -P.get(j, m));\n for (; m < k && !(w[m] >= w[m + 1]); ) {\n let j = w[m];\n if (w[m] = w[m + 1], w[m + 1] = j, a && m < n - 1)\n for (let y = 0; y < n; y++)\n j = P.get(y, m + 1), P.set(y, m + 1, P.get(y, m)), P.set(y, m, j);\n if (h && m < e - 1)\n for (let y = 0; y < e; y++)\n j = p.get(y, m + 1), p.set(y, m + 1, p.get(y, m)), p.set(y, m, j);\n m++;\n }\n S--;\n break;\n }\n }\n }\n if (u) {\n let m = P;\n P = p, p = m;\n }\n this.m = e, this.n = n, this.s = w, this.U = p, this.V = P;\n }\n solve(s) {\n let t = s, e = this.threshold, n = this.s.length, i = _.zeros(n, n);\n for (let g = 0; g < n; g++)\n Math.abs(this.s[g]) <= e ? i.set(g, g, 0) : i.set(g, g, 1 / this.s[g]);\n let o = this.U, l = this.rightSingularVectors, h = l.mmul(i), a = l.rows, u = o.rows, c = _.zeros(a, u);\n for (let g = 0; g < a; g++)\n for (let d = 0; d < u; d++) {\n let w = 0;\n for (let p = 0; p < n; p++)\n w += h.get(g, p) * o.get(d, p);\n c.set(g, d, w);\n }\n return c.mmul(t);\n }\n solveForDiagonal(s) {\n return this.solve(_.diag(s));\n }\n inverse() {\n let s = this.V, t = this.threshold, e = s.rows, n = s.columns, i = new _(e, this.s.length);\n for (let u = 0; u < e; u++)\n for (let c = 0; c < n; c++)\n Math.abs(this.s[c]) > t && i.set(u, c, s.get(u, c) / this.s[c]);\n let o = this.U, l = o.rows, h = o.columns, a = new _(e, l);\n for (let u = 0; u < e; u++)\n for (let c = 0; c < l; c++) {\n let g = 0;\n for (let d = 0; d < h; d++)\n g += i.get(u, d) * o.get(c, d);\n a.set(u, c, g);\n }\n return a;\n }\n get condition() {\n return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n }\n get norm2() {\n return this.s[0];\n }\n get rank() {\n let s = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON, t = 0, e = this.s;\n for (let n = 0, i = e.length; n < i; n++)\n e[n] > s && t++;\n return t;\n }\n get diagonal() {\n return Array.from(this.s);\n }\n get threshold() {\n return Number.EPSILON / 2 * Math.max(this.m, this.n) * this.s[0];\n }\n get leftSingularVectors() {\n return this.U;\n }\n get rightSingularVectors() {\n return this.V;\n }\n get diagonalMatrix() {\n return _.diag(this.s);\n }\n}\nfunction Ds(r, s = !1) {\n return r = rt.checkMatrix(r), s ? new vt(r).inverse() : Ve(r, _.eye(r.rows));\n}\nfunction Ve(r, s, t = !1) {\n return r = rt.checkMatrix(r), s = rt.checkMatrix(s), t ? new vt(r).solve(s) : r.isSquare() ? new ee(r).solve(s) : new pe(r).solve(s);\n}\nfunction Xt(r) {\n if (r = _.checkMatrix(r), r.isSquare()) {\n if (r.columns === 0)\n return 1;\n let s, t, e, n;\n if (r.columns === 2)\n return s = r.get(0, 0), t = r.get(0, 1), e = r.get(1, 0), n = r.get(1, 1), s * n - t * e;\n if (r.columns === 3) {\n let i, o, l;\n return i = new Gt(r, [1, 2], [1, 2]), o = new Gt(r, [1, 2], [0, 2]), l = new Gt(r, [1, 2], [0, 1]), s = r.get(0, 0), t = r.get(0, 1), e = r.get(0, 2), s * Xt(i) - t * Xt(o) + e * Xt(l);\n } else\n return new ee(r).determinant;\n } else\n throw Error(\"determinant can only be calculated for a square matrix\");\n}\nfunction zs(r, s) {\n let t = [];\n for (let e = 0; e < r; e++)\n e !== s && t.push(e);\n return t;\n}\nfunction Os(r, s, t, e = 1e-9, n = 1e-9) {\n if (r > n)\n return new Array(s.rows + 1).fill(0);\n {\n let i = s.addRow(t, [0]);\n for (let o = 0; o < i.rows; o++)\n Math.abs(i.get(o, 0)) < e && i.set(o, 0, 0);\n return i.to1DArray();\n }\n}\nfunction Bs(r, s = {}) {\n const { thresholdValue: t = 1e-9, thresholdError: e = 1e-9 } = s;\n r = _.checkMatrix(r);\n let n = r.rows, i = new _(n, n);\n for (let o = 0; o < n; o++) {\n let l = _.columnVector(r.getRow(o)), h = r.subMatrixRow(zs(n, o)).transpose(), u = new vt(h).solve(l), c = _.sub(l, h.mmul(u)).abs().max();\n i.setRow(\n o,\n Os(c, u, o, t, e)\n );\n }\n return i;\n}\nfunction Us(r, s = Number.EPSILON) {\n if (r = _.checkMatrix(r), r.isEmpty())\n return r.transpose();\n let t = new vt(r, { autoTranspose: !0 }), e = t.leftSingularVectors, n = t.rightSingularVectors, i = t.diagonal;\n for (let o = 0; o < i.length; o++)\n Math.abs(i[o]) > s ? i[o] = 1 / i[o] : i[o] = 0;\n return n.mmul(_.diag(i).mmul(e.transpose()));\n}\nfunction Ys(r, s = r, t = {}) {\n r = new _(r);\n let e = !1;\n if (typeof s == \"object\" && !_.isMatrix(s) && !st.isAnyArray(s) ? (t = s, s = r, e = !0) : s = new _(s), r.rows !== s.rows)\n throw new TypeError(\"Both matrices must have the same number of rows\");\n const { center: n = !0 } = t;\n n && (r = r.center(\"column\"), e || (s = s.center(\"column\")));\n const i = r.transpose().mmul(s);\n for (let o = 0; o < i.rows; o++)\n for (let l = 0; l < i.columns; l++)\n i.set(o, l, i.get(o, l) * (1 / (r.rows - 1)));\n return i;\n}\nfunction Ws(r, s = r, t = {}) {\n r = new _(r);\n let e = !1;\n if (typeof s == \"object\" && !_.isMatrix(s) && !st.isAnyArray(s) ? (t = s, s = r, e = !0) : s = new _(s), r.rows !== s.rows)\n throw new TypeError(\"Both matrices must have the same number of rows\");\n const { center: n = !0, scale: i = !0 } = t;\n n && (r.center(\"column\"), e || s.center(\"column\")), i && (r.scale(\"column\"), e || s.scale(\"column\"));\n const o = r.standardDeviation(\"column\", { unbiased: !0 }), l = e ? o : s.standardDeviation(\"column\", { unbiased: !0 }), h = r.transpose().mmul(s);\n for (let a = 0; a < h.rows; a++)\n for (let u = 0; u < h.columns; u++)\n h.set(\n a,\n u,\n h.get(a, u) * (1 / (o[a] * l[u])) * (1 / (r.rows - 1))\n );\n return h;\n}\nlet Ne = class {\n constructor(s, t = {}) {\n const { assumeSymmetric: e = !1 } = t;\n if (s = rt.checkMatrix(s), !s.isSquare())\n throw new Error(\"Matrix is not a square matrix\");\n if (s.isEmpty())\n throw new Error(\"Matrix must be non-empty\");\n let n = s.columns, i = new _(n, n), o = new Float64Array(n), l = new Float64Array(n), h = s, a, u, c = !1;\n if (e ? c = !0 : c = s.isSymmetric(), c) {\n for (a = 0; a < n; a++)\n for (u = 0; u < n; u++)\n i.set(a, u, h.get(a, u));\n Qs(n, l, o, i), Gs(n, l, o, i);\n } else {\n let g = new _(n, n), d = new Float64Array(n);\n for (u = 0; u < n; u++)\n for (a = 0; a < n; a++)\n g.set(a, u, h.get(a, u));\n Xs(n, g, d, i), Zs(n, l, o, i, g);\n }\n this.n = n, this.e = l, this.d = o, this.V = i;\n }\n get realEigenvalues() {\n return Array.from(this.d);\n }\n get imaginaryEigenvalues() {\n return Array.from(this.e);\n }\n get eigenvectorMatrix() {\n return this.V;\n }\n get diagonalMatrix() {\n let s = this.n, t = this.e, e = this.d, n = new _(s, s), i, o;\n for (i = 0; i < s; i++) {\n for (o = 0; o < s; o++)\n n.set(i, o, 0);\n n.set(i, i, e[i]), t[i] > 0 ? n.set(i, i + 1, t[i]) : t[i] < 0 && n.set(i, i - 1, t[i]);\n }\n return n;\n }\n};\nfunction Qs(r, s, t, e) {\n let n, i, o, l, h, a, u, c;\n for (h = 0; h < r; h++)\n t[h] = e.get(r - 1, h);\n for (l = r - 1; l > 0; l--) {\n for (c = 0, o = 0, a = 0; a < l; a++)\n c = c + Math.abs(t[a]);\n if (c === 0)\n for (s[l] = t[l - 1], h = 0; h < l; h++)\n t[h] = e.get(l - 1, h), e.set(l, h, 0), e.set(h, l, 0);\n else {\n for (a = 0; a < l; a++)\n t[a] /= c, o += t[a] * t[a];\n for (n = t[l - 1], i = Math.sqrt(o), n > 0 && (i = -i), s[l] = c * i, o = o - n * i, t[l - 1] = n - i, h = 0; h < l; h++)\n s[h] = 0;\n for (h = 0; h < l; h++) {\n for (n = t[h], e.set(h, l, n), i = s[h] + e.get(h, h) * n, a = h + 1; a <= l - 1; a++)\n i += e.get(a, h) * t[a], s[a] += e.get(a, h) * n;\n s[h] = i;\n }\n for (n = 0, h = 0; h < l; h++)\n s[h] /= o, n += s[h] * t[h];\n for (u = n / (o + o), h = 0; h < l; h++)\n s[h] -= u * t[h];\n for (h = 0; h < l; h++) {\n for (n = t[h], i = s[h], a = h; a <= l - 1; a++)\n e.set(a, h, e.get(a, h) - (n * s[a] + i * t[a]));\n t[h] = e.get(l - 1, h), e.set(l, h, 0);\n }\n }\n t[l] = o;\n }\n for (l = 0; l < r - 1; l++) {\n if (e.set(r - 1, l, e.get(l, l)), e.set(l, l, 1), o = t[l + 1], o !== 0) {\n for (a = 0; a <= l; a++)\n t[a] = e.get(a, l + 1) / o;\n for (h = 0; h <= l; h++) {\n for (i = 0, a = 0; a <= l; a++)\n i += e.get(a, l + 1) * e.get(a, h);\n for (a = 0; a <= l; a++)\n e.set(a, h, e.get(a, h) - i * t[a]);\n }\n }\n for (a = 0; a <= l; a++)\n e.set(a, l + 1, 0);\n }\n for (h = 0; h < r; h++)\n t[h] = e.get(r - 1, h), e.set(r - 1, h, 0);\n e.set(r - 1, r - 1, 1), s[0] = 0;\n}\nfunction Gs(r, s, t, e) {\n let n, i, o, l, h, a, u, c, g, d, w, p, P, f, M, E;\n for (o = 1; o < r; o++)\n s[o - 1] = s[o];\n s[r - 1] = 0;\n let R = 0, v = 0, L = Number.EPSILON;\n for (a = 0; a < r; a++) {\n for (v = Math.max(v, Math.abs(t[a]) + Math.abs(s[a])), u = a; u < r && !(Math.abs(s[u]) <= L * v); )\n u++;\n if (u > a)\n do {\n for (n = t[a], c = (t[a + 1] - n) / (2 * s[a]), g = ut(c, 1), c < 0 && (g = -g), t[a] = s[a] / (c + g), t[a + 1] = s[a] * (c + g), d = t[a + 1], i = n - t[a], o = a + 2; o < r; o++)\n t[o] -= i;\n for (R = R + i, c = t[u], w = 1, p = w, P = w, f = s[a + 1], M = 0, E = 0, o = u - 1; o >= a; o--)\n for (P = p, p = w, E = M, n = w * s[o], i = w * c, g = ut(c, s[o]), s[o + 1] = M * g, M = s[o] / g, w = c / g, c = w * t[o] - M * n, t[o + 1] = i + M * (w * n + M * t[o]), h = 0; h < r; h++)\n i = e.get(h, o + 1), e.set(h, o + 1, M * e.get(h, o) + w * i), e.set(h, o, w * e.get(h, o) - M * i);\n c = -M * E * P * f * s[a] / d, s[a] = M * c, t[a] = w * c;\n } while (Math.abs(s[a]) > L * v);\n t[a] = t[a] + R, s[a] = 0;\n }\n for (o = 0; o < r - 1; o++) {\n for (h = o, c = t[o], l = o + 1; l < r; l++)\n t[l] < c && (h = l, c = t[l]);\n if (h !== o)\n for (t[h] = t[o], t[o] = c, l = 0; l < r; l++)\n c = e.get(l, o), e.set(l, o, e.get(l, h)), e.set(l, h, c);\n }\n}\nfunction Xs(r, s, t, e) {\n let n = 0, i = r - 1, o, l, h, a, u, c, g;\n for (c = n + 1; c <= i - 1; c++) {\n for (g = 0, a = c; a <= i; a++)\n g = g + Math.abs(s.get(a, c - 1));\n if (g !== 0) {\n for (h = 0, a = i; a >= c; a--)\n t[a] = s.get(a, c - 1) / g, h += t[a] * t[a];\n for (l = Math.sqrt(h), t[c] > 0 && (l = -l), h = h - t[c] * l, t[c] = t[c] - l, u = c; u < r; u++) {\n for (o = 0, a = i; a >= c; a--)\n o += t[a] * s.get(a, u);\n for (o = o / h, a = c; a <= i; a++)\n s.set(a, u, s.get(a, u) - o * t[a]);\n }\n for (a = 0; a <= i; a++) {\n for (o = 0, u = i; u >= c; u--)\n o += t[u] * s.get(a, u);\n for (o = o / h, u = c; u <= i; u++)\n s.set(a, u, s.get(a, u) - o * t[u]);\n }\n t[c] = g * t[c], s.set(c, c - 1, g * l);\n }\n }\n for (a = 0; a < r; a++)\n for (u = 0; u < r; u++)\n e.set(a, u, a === u ? 1 : 0);\n for (c = i - 1; c >= n + 1; c--)\n if (s.get(c, c - 1) !== 0) {\n for (a = c + 1; a <= i; a++)\n t[a] = s.get(a, c - 1);\n for (u = c; u <= i; u++) {\n for (l = 0, a = c; a <= i; a++)\n l += t[a] * e.get(a, u);\n for (l = l / t[c] / s.get(c, c - 1), a = c; a <= i; a++)\n e.set(a, u, e.get(a, u) + l * t[a]);\n }\n }\n}\nfunction Zs(r, s, t, e, n) {\n let i = r - 1, o = 0, l = r - 1, h = Number.EPSILON, a = 0, u = 0, c = 0, g = 0, d = 0, w = 0, p = 0, P = 0, f, M, E, R, v, L, S, k, D, m, b, j, y, C, F;\n for (f = 0; f < r; f++)\n for ((f < o || f > l) && (t[f] = n.get(f, f), s[f] = 0), M = Math.max(f - 1, 0); M < r; M++)\n u = u + Math.abs(n.get(f, M));\n for (; i >= o; ) {\n for (R = i; R > o && (w = Math.abs(n.get(R - 1, R - 1)) + Math.abs(n.get(R, R)), w === 0 && (w = u), !(Math.abs(n.get(R, R - 1)) < h * w)); )\n R--;\n if (R === i)\n n.set(i, i, n.get(i, i) + a), t[i] = n.get(i, i), s[i] = 0, i--, P = 0;\n else if (R === i - 1) {\n if (S = n.get(i, i - 1) * n.get(i - 1, i), c = (n.get(i - 1, i - 1) - n.get(i, i)) / 2, g = c * c + S, p = Math.sqrt(Math.abs(g)), n.set(i, i, n.get(i, i) + a), n.set(i - 1, i - 1, n.get(i - 1, i - 1) + a), k = n.get(i, i), g >= 0) {\n for (p = c >= 0 ? c + p : c - p, t[i - 1] = k + p, t[i] = t[i - 1], p !== 0 && (t[i] = k - S / p), s[i - 1] = 0, s[i] = 0, k = n.get(i, i - 1), w = Math.abs(k) + Math.abs(p), c = k / w, g = p / w, d = Math.sqrt(c * c + g * g), c = c / d, g = g / d, M = i - 1; M < r; M++)\n p = n.get(i - 1, M), n.set(i - 1, M, g * p + c * n.get(i, M)), n.set(i, M, g * n.get(i, M) - c * p);\n for (f = 0; f <= i; f++)\n p = n.get(f, i - 1), n.set(f, i - 1, g * p + c * n.get(f, i)), n.set(f, i, g * n.get(f, i) - c * p);\n for (f = o; f <= l; f++)\n p = e.get(f, i - 1), e.set(f, i - 1, g * p + c * e.get(f, i)), e.set(f, i, g * e.get(f, i) - c * p);\n } else\n t[i - 1] = k + c, t[i] = k + c, s[i - 1] = p, s[i] = -p;\n i = i - 2, P = 0;\n } else {\n if (k = n.get(i, i), D = 0, S = 0, R < i && (D = n.get(i - 1, i - 1), S = n.get(i, i - 1) * n.get(i - 1, i)), P === 10) {\n for (a += k, f = o; f <= i; f++)\n n.set(f, f, n.get(f, f) - k);\n w = Math.abs(n.get(i, i - 1)) + Math.abs(n.get(i - 1, i - 2)), k = D = 0.75 * w, S = -0.4375 * w * w;\n }\n if (P === 30 && (w = (D - k) / 2, w = w * w + S, w > 0)) {\n for (w = Math.sqrt(w), D < k && (w = -w), w = k - S / ((D - k) / 2 + w), f = o; f <= i; f++)\n n.set(f, f, n.get(f, f) - w);\n a += w, k = D = S = 0.964;\n }\n for (P = P + 1, v = i - 2; v >= R && (p = n.get(v, v), d = k - p, w = D - p, c = (d * w - S) / n.get(v + 1, v) + n.get(v, v + 1), g = n.get(v + 1, v + 1) - p - d - w, d = n.get(v + 2, v + 1), w = Math.abs(c) + Math.abs(g) + Math.abs(d), c = c / w, g = g / w, d = d / w, !(v === R || Math.abs(n.get(v, v - 1)) * (Math.abs(g) + Math.abs(d)) < h * (Math.abs(c) * (Math.abs(n.get(v - 1, v - 1)) + Math.abs(p) + Math.abs(n.get(v + 1, v + 1)))))); )\n v--;\n for (f = v + 2; f <= i; f++)\n n.set(f, f - 2, 0), f > v + 2 && n.set(f, f - 3, 0);\n for (E = v; E <= i - 1 && (C = E !== i - 1, E !== v && (c = n.get(E, E - 1), g = n.get(E + 1, E - 1), d = C ? n.get(E + 2, E - 1) : 0, k = Math.abs(c) + Math.abs(g) + Math.abs(d), k !== 0 && (c = c / k, g = g / k, d = d / k)), k !== 0); E++)\n if (w = Math.sqrt(c * c + g * g + d * d), c < 0 && (w = -w), w !== 0) {\n for (E !== v ? n.set(E, E - 1, -w * k) : R !== v && n.set(E, E - 1, -n.get(E, E - 1)), c = c + w, k = c / w, D = g / w, p = d / w, g = g / c, d = d / c, M = E; M < r; M++)\n c = n.get(E, M) + g * n.get(E + 1, M), C && (c = c + d * n.get(E + 2, M), n.set(E + 2, M, n.get(E + 2, M) - c * p)), n.set(E, M, n.get(E, M) - c * k), n.set(E + 1, M, n.get(E + 1, M) - c * D);\n for (f = 0; f <= Math.min(i, E + 3); f++)\n c = k * n.get(f, E) + D * n.get(f, E + 1), C && (c = c + p * n.get(f, E + 2), n.set(f, E + 2, n.get(f, E + 2) - c * d)), n.set(f, E, n.get(f, E) - c), n.set(f, E + 1, n.get(f, E + 1) - c * g);\n for (f = o; f <= l; f++)\n c = k * e.get(f, E) + D * e.get(f, E + 1), C && (c = c + p * e.get(f, E + 2), e.set(f, E + 2, e.get(f, E + 2) - c * d)), e.set(f, E, e.get(f, E) - c), e.set(f, E + 1, e.get(f, E + 1) - c * g);\n }\n }\n }\n if (u !== 0) {\n for (i = r - 1; i >= 0; i--)\n if (c = t[i], g = s[i], g === 0)\n for (R = i, n.set(i, i, 1), f = i - 1; f >= 0; f--) {\n for (S = n.get(f, f) - c, d = 0, M = R; M <= i; M++)\n d = d + n.get(f, M) * n.get(M, i);\n if (s[f] < 0)\n p = S, w = d;\n else if (R = f, s[f] === 0 ? n.set(f, i, S !== 0 ? -d / S : -d / (h * u)) : (k = n.get(f, f + 1), D = n.get(f + 1, f), g = (t[f] - c) * (t[f] - c) + s[f] * s[f], L = (k * w - p * d) / g, n.set(f, i, L), n.set(\n f + 1,\n i,\n Math.abs(k) > Math.abs(p) ? (-d - S * L) / k : (-w - D * L) / p\n )), L = Math.abs(n.get(f, i)), h * L * L > 1)\n for (M = f; M <= i; M++)\n n.set(M, i, n.get(M, i) / L);\n }\n else if (g < 0)\n for (R = i - 1, Math.abs(n.get(i, i - 1)) > Math.abs(n.get(i - 1, i)) ? (n.set(i - 1, i - 1, g / n.get(i, i - 1)), n.set(i - 1, i, -(n.get(i, i) - c) / n.get(i, i - 1))) : (F = Wt(0, -n.get(i - 1, i), n.get(i - 1, i - 1) - c, g), n.set(i - 1, i - 1, F[0]), n.set(i - 1, i, F[1])), n.set(i, i - 1, 0), n.set(i, i, 1), f = i - 2; f >= 0; f--) {\n for (m = 0, b = 0, M = R; M <= i; M++)\n m = m + n.get(f, M) * n.get(M, i - 1), b = b + n.get(f, M) * n.get(M, i);\n if (S = n.get(f, f) - c, s[f] < 0)\n p = S, d = m, w = b;\n else if (R = f, s[f] === 0 ? (F = Wt(-m, -b, S, g), n.set(f, i - 1, F[0]), n.set(f, i, F[1])) : (k = n.get(f, f + 1), D = n.get(f + 1, f), j = (t[f] - c) * (t[f] - c) + s[f] * s[f] - g * g, y = (t[f] - c) * 2 * g, j === 0 && y === 0 && (j = h * u * (Math.abs(S) + Math.abs(g) + Math.abs(k) + Math.abs(D) + Math.abs(p))), F = Wt(\n k * d - p * m + g * b,\n k * w - p * b - g * m,\n j,\n y\n ), n.set(f, i - 1, F[0]), n.set(f, i, F[1]), Math.abs(k) > Math.abs(p) + Math.abs(g) ? (n.set(\n f + 1,\n i - 1,\n (-m - S * n.get(f, i - 1) + g * n.get(f, i)) / k\n ), n.set(\n f + 1,\n i,\n (-b - S * n.get(f, i) - g * n.get(f, i - 1)) / k\n )) : (F = Wt(\n -d - D * n.get(f, i - 1),\n -w - D * n.get(f, i),\n p,\n g\n ), n.set(f + 1, i - 1, F[0]), n.set(f + 1, i, F[1]))), L = Math.max(Math.abs(n.get(f, i - 1)), Math.abs(n.get(f, i))), h * L * L > 1)\n for (M = f; M <= i; M++)\n n.set(M, i - 1, n.get(M, i - 1) / L), n.set(M, i, n.get(M, i) / L);\n }\n for (f = 0; f < r; f++)\n if (f < o || f > l)\n for (M = f; M < r; M++)\n e.set(f, M, n.get(f, M));\n for (M = r - 1; M >= o; M--)\n for (f = o; f <= l; f++) {\n for (p = 0, E = o; E <= Math.min(M, l); E++)\n p = p + e.get(f, E) * n.get(E, M);\n e.set(f, M, p);\n }\n }\n}\nfunction Wt(r, s, t, e) {\n let n, i;\n return Math.abs(t) > Math.abs(e) ? (n = e / t, i = t + n * e, [(r + n * s) / i, (s - n * r) / i]) : (n = t / e, i = e + n * t, [(n * r + s) / i, (n * s - r) / i]);\n}\nclass $e {\n constructor(s) {\n if (s = rt.checkMatrix(s), !s.isSymmetric())\n throw new Error(\"Matrix is not symmetric\");\n let t = s, e = t.rows, n = new _(e, e), i = !0, o, l, h;\n for (l = 0; l < e; l++) {\n let a = 0;\n for (h = 0; h < l; h++) {\n let u = 0;\n for (o = 0; o < h; o++)\n u += n.get(h, o) * n.get(l, o);\n u = (t.get(l, h) - u) / n.get(h, h), n.set(l, h, u), a = a + u * u;\n }\n for (a = t.get(l, l) - a, i && (i = a > 0), n.set(l, l, Math.sqrt(Math.max(a, 0))), h = l + 1; h < e; h++)\n n.set(l, h, 0);\n }\n this.L = n, this.positiveDefinite = i;\n }\n isPositiveDefinite() {\n return this.positiveDefinite;\n }\n solve(s) {\n s = rt.checkMatrix(s);\n let t = this.L, e = t.rows;\n if (s.rows !== e)\n throw new Error(\"Matrix dimensions do not match\");\n if (this.isPositiveDefinite() === !1)\n throw new Error(\"Matrix is not positive definite\");\n let n = s.columns, i = s.clone(), o, l, h;\n for (h = 0; h < e; h++)\n for (l = 0; l < n; l++) {\n for (o = 0; o < h; o++)\n i.set(h, l, i.get(h, l) - i.get(o, l) * t.get(h, o));\n i.set(h, l, i.get(h, l) / t.get(h, h));\n }\n for (h = e - 1; h >= 0; h--)\n for (l = 0; l < n; l++) {\n for (o = h + 1; o < e; o++)\n i.set(h, l, i.get(h, l) - i.get(o, l) * t.get(o, h));\n i.set(h, l, i.get(h, l) / t.get(h, h));\n }\n return i;\n }\n get lowerTriangularMatrix() {\n return this.L;\n }\n}\nclass Le {\n constructor(s, t = {}) {\n s = rt.checkMatrix(s);\n let { Y: e } = t;\n const {\n scaleScores: n = !1,\n maxIterations: i = 1e3,\n terminationCriteria: o = 1e-10\n } = t;\n let l;\n if (e) {\n if (st.isAnyArray(e) && typeof e[0] == \"number\" ? e = _.columnVector(e) : e = rt.checkMatrix(e), e.rows !== s.rows)\n throw new Error(\"Y should have the same number of rows as X\");\n l = e.getColumnVector(0);\n } else\n l = s.getColumnVector(0);\n let h = 1, a, u, c, g;\n for (let d = 0; d < i && h > o; d++)\n c = s.transpose().mmul(l).div(l.transpose().mmul(l).get(0, 0)), c = c.div(c.norm()), a = s.mmul(c).div(c.transpose().mmul(c).get(0, 0)), d > 0 && (h = a.clone().sub(g).pow(2).sum()), g = a.clone(), e ? (u = e.transpose().mmul(a).div(a.transpose().mmul(a).get(0, 0)), u = u.div(u.norm()), l = e.mmul(u).div(u.transpose().mmul(u).get(0, 0))) : l = a;\n if (e) {\n let d = s.transpose().mmul(a).div(a.transpose().mmul(a).get(0, 0));\n d = d.div(d.norm());\n let w = s.clone().sub(a.clone().mmul(d.transpose())), p = l.transpose().mmul(a).div(a.transpose().mmul(a).get(0, 0)), P = e.clone().sub(\n a.clone().mulS(p.get(0, 0)).mmul(u.transpose())\n );\n this.t = a, this.p = d.transpose(), this.w = c.transpose(), this.q = u, this.u = l, this.s = a.transpose().mmul(a), this.xResidual = w, this.yResidual = P, this.betas = p;\n } else\n this.w = c.transpose(), this.s = a.transpose().mmul(a).sqrt(), n ? this.t = a.clone().div(this.s.get(0, 0)) : this.t = a, this.xResidual = s.sub(a.mmul(c.transpose()));\n }\n}\n$.AbstractMatrix = V;\n$.CHO = $e;\n$.CholeskyDecomposition = $e;\n$.DistanceMatrix = te;\n$.EVD = Ne;\nvar Js = $.EigenvalueDecomposition = Ne;\n$.LU = ee;\n$.LuDecomposition = ee;\nvar De = $.Matrix = _;\n$.MatrixColumnSelectionView = qs;\n$.MatrixColumnView = Cs;\n$.MatrixFlipColumnView = Fs;\n$.MatrixFlipRowView = xs;\n$.MatrixRowSelectionView = Vs;\n$.MatrixRowView = As;\n$.MatrixSelectionView = Gt;\n$.MatrixSubView = Ns;\n$.MatrixTransposeView = $s;\n$.NIPALS = Le;\n$.Nipals = Le;\n$.QR = pe;\n$.QrDecomposition = pe;\n$.SVD = vt;\n$.SingularValueDecomposition = vt;\n$.SymmetricMatrix = pt;\n$.WrapperMatrix1D = Ae;\n$.WrapperMatrix2D = rt;\n$.correlation = Ws;\n$.covariance = Ys;\nvar Re = $.default = _;\n$.determinant = Xt;\n$.inverse = Ds;\n$.linearDependencies = Bs;\n$.pseudoInverse = Us;\n$.solve = Ve;\n$.wrap = Ls;\nconst Ks = Js, Hs = De;\nRe.Matrix && Re.Matrix;\nfunction qt(r, s, t) {\n const e = r / t, n = s / t;\n if (!(isFinite(e) && isFinite(n))) {\n const h = -r / s;\n return isFinite(h) ? [h] : r == 0 && s == 0 ? [0] : [];\n }\n const i = n * n - 4 * e;\n let o = 0;\n if (isFinite(i)) {\n if (i < 0)\n return [];\n if (i == 0)\n return [-0.5 * n];\n o = -0.5 * (n + kt(Math.sqrt(i), n));\n } else\n o = -n;\n const l = e / o;\n return isFinite(l) ? l > o ? [o, l] : [l, o] : [o];\n}\nfunction ze(r, s, t, e) {\n const n = t / (3 * e), i = s / (3 * e), o = r / e;\n if (!(isFinite(o) && isFinite(i) && isFinite(n)))\n return qt(r, s, t);\n const l = -n * n + i, h = -i * n + o, a = n * o - i * i, u = 4 * l * a - h * h, c = -2 * n * l + h;\n if (u < 0) {\n const g = Math.sqrt(-0.25 * u), d = -0.5 * c;\n return [Math.cbrt(d + g) + Math.cbrt(d - g) - n];\n } else if (u == 0) {\n const g = kt(Math.sqrt(-l), c);\n return [g - n, -2 * g - n];\n } else {\n const g = Math.atan2(Math.sqrt(u), -c) / 3, d = Math.cos(g), w = Math.sin(g) * Math.sqrt(3), p = 0.5 * (-d + w), P = 0.5 * (-d - w), f = 2 * Math.sqrt(-l);\n return [f * d - n, f * p - n, f * P - n];\n }\n}\nfunction wn(r, s, t, e, n) {\n if (n == 0)\n return ze(r, s, t, e);\n const i = e / n, o = t / n, l = s / n, h = r / n;\n let a = ve(i, o, l, h, !1);\n if (a !== null)\n return a;\n const u = 716e74;\n for (let c = 0; c < 2; c++)\n if (a = ve(\n i / u,\n o / (u * u),\n l / (u * u * u),\n h / (u * u * u * u),\n c != 0\n ), a !== null) {\n for (let g = 0; g < a.length; g++)\n a[g] *= u;\n return a;\n }\n return [];\n}\nfunction gt(r, s) {\n return s == 0 ? Math.abs(r) : Math.abs((r - s) / s);\n}\nfunction ve(r, s, t, e, n) {\n const i = tn(r, s, t, e, n);\n if (i !== null && i.length == 4) {\n let o = [];\n for (let l = 0; l < 2; l++) {\n const h = i[l * 2], a = i[l * 2 + 1];\n o = o.concat(qt(a, h, 1));\n }\n return o;\n }\n return null;\n}\nfunction tn(r, s, t, e, n) {\n function i(x, N, A, O) {\n const U = gt(x + A, r), T = gt(N + x * A + O, s), z = gt(N * A + x * O, t);\n return U + T + z;\n }\n function o(x, N, A, O) {\n return i(x, N, A, O) + gt(N * O, e);\n }\n const l = 9 * r * r - 24 * s, h = l >= 0 ? -2 * s / (3 * r + kt(Math.sqrt(l), r)) : -0.25 * r, a = r + 4 * h, u = s + 3 * h * (r + 2 * h), c = t + h * (2 * s + h * (3 * r + 4 * h)), g = e + h * (t + h * (s + h * (r + h)));\n let d = 0, w = 0;\n const p = 349e100;\n if (n) {\n const x = a / p, N = u / p, A = c / p, O = g / p;\n d = x * A - 4 / p * O - 1 / 3 * N * N, w = (x * A - 8 / p * O - 2 / 9 * N * N) * (1 / 3) * N - A * (A / p) - x * x * O;\n } else\n d = a * c - 4 * g - 1 / 3 * u * u, w = (a * c + 8 * g - 2 / 9 * u * u) * (1 / 3) * u - c * c - a * a * g;\n if (!isFinite(d) && isFinite(w))\n return null;\n let P = en(d, w);\n n && (P *= p);\n const f = r * 0.5, M = 1 / 6 * s + 0.5 * P, E = t - r * M, R = 2 / 3 * s - P - f * f, v = 0.5 * E / R, L = 2 * (e - M * M) / E, S = 0.5 * E / L;\n let k = 0, D = 0, m = 0;\n for (let x = 0; x < 3; x++) {\n const N = x == 1 ? S : R, A = x == 0 ? v : L, O = gt(N + f * f + 2 * M, s), U = gt(2 * (N * A + f * M), t), T = gt(N * A * A + M * M, e), z = O + U + T;\n (x == 0 || z < m) && (k = N, D = A, m = z);\n }\n const b = k, j = D;\n let y = 0, C = 0, F = 0, I = 0;\n if (b < 0) {\n const x = Math.sqrt(-b);\n if (y = f + x, C = M + x * j, F = f - x, I = M - x * j, Math.abs(I) < Math.abs(C) ? I = e / C : Math.abs(I) > Math.abs(C) && (C = e / I), Math.abs(y) != Math.abs(F)) {\n let N = null, A = null;\n if (Math.abs(y) < Math.abs(F)) {\n const U = (t - C * F) / I, T = (s - I - C) / F;\n N = [r - F, U, T], A = [F, F, F];\n } else {\n const U = (t - y * I) / C, T = (s - I - C) / y, z = r - y;\n N = [y, y, y], A = [z, U, T];\n }\n let O = 0;\n for (let U = 0; U < 3; U++) {\n const T = N[U], z = A[U];\n if (isFinite(T) && isFinite(z)) {\n const X = i(T, C, z, I);\n (U == 0 || X < O) && (y = T, F = z, O = X);\n }\n }\n }\n } else if (b == 0) {\n const x = e - M * M;\n y = f, C = M + Math.sqrt(-x), F = f, I = M - Math.sqrt(-x), Math.abs(C) > Math.abs(I) ? I = e / C : Math.abs(I) > Math.abs(C) && (C = e / I);\n } else\n return [];\n let B = o(y, C, F, I);\n for (let x = 0; x < 8 && B != 0; x++) {\n const N = C * I - e, A = C * F + y * I - t, O = C + y * F + I - s, U = y + F - r, T = y - F, z = C * C - C * (F * T + 2 * I) + I * (y * T + I);\n if (z == 0)\n break;\n const X = 1 / z, G = I - C, W = C * F - y * I, se = T * N + G * A + W * O - (C * G + y * W) * U, ne = (y * T + G) * N - C * (T * A + G * O + W * U), ie = -T * N - G * A - W * O + (F * W + I * G) * U, re = -(F * T + G) * N + I * (T * A + G * O + W * U), At = y - X * se, Vt = C - X * ne, Nt = F - X * ie, $t = I - X * re, Lt = o(At, Vt, Nt, $t);\n if (Lt < B)\n y = At, C = Vt, F = Nt, I = $t, B = Lt;\n else\n break;\n }\n return [y, C, F, I];\n}\nfunction en(r, s) {\n const t = -0.3333333333333333 * r, e = 0.5 * s;\n let n, i = null;\n if ((Math.abs(t) >= 1e102 || Math.abs(e) >= 1e164) && (Math.abs(t) < Math.abs(e) ? i = 1 - t * (t / e) * (t / e) : i = Math.sign(t) * (e / t * (e / t) / t - 1)), i !== null && e == 0)\n r > 0 ? n = 0 : n = Math.sqrt(-r);\n else if (i !== null ? i < 0 : e * e < t * t * t) {\n const a = i !== null ? e / t / Math.sqrt(t) : e / Math.sqrt(t * t * t);\n n = -2 * Math.sqrt(t) * kt(Math.cos(Math.acos(Math.abs(a)) * (1 / 3)), a);\n } else {\n let a;\n i !== null ? Math.abs(t) < Math.abs(e) ? a = -e * (1 + Math.sqrt(i)) : a = -e - kt(Math.sqrt(Math.abs(t)) * t * Math.sqrt(i), e) : a = Math.cbrt(-e - kt(Math.sqrt(e * e - t * t * t), e));\n const u = a == 0 ? 0 : t / a;\n n = a + u;\n }\n let o = n, l = (o * o + r) * o + s;\n if (Math.abs(l) < 222045e-21 * Math.max(o * o * o, r * o, s))\n return o;\n for (let a = 0; a < 8; a++) {\n const u = 3 * o * o + r;\n if (u == 0)\n break;\n const c = o - l / u, g = (c * c + r) * c + s;\n if (g == 0)\n return c;\n if (Math.abs(g) >= Math.abs(l))\n break;\n o = c, l = g;\n }\n return o;\n}\nfunction kt(r, s) {\n const t = Math.abs(r);\n return s < 0 ? -t : t;\n}\nfunction sn(r, s = 1e-9) {\n if (r[r.length - 1] == 0)\n return sn(r.slice(0, -1), s);\n const t = new Hs([\n r.slice(0, -1).reverse().map((n) => -n / r[r.length - 1]),\n ...Array.from({ length: r.length - 2 }, (n, i) => {\n const o = new Array(r.length - 1).fill(0);\n return o[i] = 1, o;\n })\n ]), e = new Ks(t);\n return e.realEigenvalues.filter(\n (n, i) => Math.abs(e.imaginaryEigenvalues[i]) < s\n );\n}\nconst nn = (r, s, t) => [r[0] * (1 - t) + s[0] * t, r[1] * (1 - t) + s[1] * t];\nfunction rn(r) {\n const s = [];\n for (let t = 0; t < r.length - 1; t++)\n s.push([r[t], r[t + 1]]);\n return s;\n}\nfunction de(r, s) {\n const t = rn(r).map(([e, n]) => nn(e, n, s));\n return r.length === 2 ? [t] : [...de(t, s), t];\n}\nclass Et extends xt {\n constructor(t, e, n, i) {\n super(t, e);\n q(this, \"segmentType\", \"CUBIC_BEZIER\");\n q(this, \"firstControlPoint\");\n q(this, \"lastControlPoint\");\n q(this, \"_boundingBox\", null);\n q(this, \"_polynomialCoefficients\", null);\n this.firstControlPoint = n, this.lastControlPoint = i;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n _extremaInDirection(t) {\n const [e, n, i, o] = [\n this.firstPoint[t],\n this.firstControlPoint[t],\n this.lastControlPoint[t],\n this.lastPoint[t]\n ], l = -e + 3 * n - 3 * i + o, h = 2 * e - 4 * n + 2 * i, a = -e + n;\n return qt(a, h, l).filter(\n (u) => u >= -this.precision && u <= 1 + this.precision\n );\n }\n getParametersOfExtrema() {\n return Array.from(\n new Set(this._extremaInDirection(0).concat(this._extremaInDirection(1)))\n );\n }\n get alignedCurve() {\n const t = [-this.firstPoint[0], -this.firstPoint[1]], e = Q(this.lastPoint, this.firstPoint), n = Math.atan2(e[1], e[0]), i = new et();\n return i.translate(t[0], t[1]), i.rotate(-n), this.transform(i);\n }\n getInflexionParameters() {\n const t = this.alignedCurve, [e, n] = t.firstControlPoint, [i, o] = t.lastControlPoint, [l, h] = t.lastPoint, a = i * n, u = l * n, c = e * o, g = l * o, d = -3 * a + 2 * u + 3 * c - g, w = 3 * a - u - 3 * c, p = c - a;\n return qt(p, w, d).filter((P) => P >= 0 && P <= 1);\n }\n get boundingBox() {\n return this._boundingBox === null && (this._boundingBox = ce([\n this.firstPoint,\n ...this.getParametersOfExtrema().map((t) => this.paramPoint(t)),\n this.lastPoint\n ]).grow(this.precision)), this._boundingBox;\n }\n clone() {\n return new Et(\n this.firstPoint,\n this.lastPoint,\n this.firstControlPoint,\n this.lastControlPoint\n );\n }\n reverse() {\n return new Et(\n this.lastPoint,\n this.firstPoint,\n this.lastControlPoint,\n this.firstControlPoint\n );\n }\n isSame(t) {\n return t.segmentType !== \"CUBIC_BEZIER\" ? !1 : Y(this.firstPoint, t.firstPoint) && Y(this.lastPoint, t.lastPoint) && Y(this.firstControlPoint, t.firstControlPoint) && Y(this.lastControlPoint, t.lastControlPoint);\n }\n distanceFrom(t) {\n const n = Ce((i) => Rt(this.paramPoint(i), t), this.precision);\n return n.argMin < -this.precision || n.argMin > 1 + this.precision ? Math.min(\n J(this.firstPoint, t),\n J(this.lastPoint, t)\n ) : Math.sqrt(n.fMin);\n }\n isOnSegment(t) {\n if (!this.boundingBox.contains(t))\n return !1;\n try {\n const e = this.pointToParam(t);\n return e >= -this.precision && e <= 1 + this.precision;\n } catch {\n return !1;\n }\n }\n gradientAt(t) {\n const e = 1 - t, n = e * e, i = t * t, o = 3 * n, l = 6 * e * t, h = 3 * i, a = Q(this.firstControlPoint, this.firstPoint), u = Q(this.lastControlPoint, this.firstControlPoint), c = Q(this.lastPoint, this.lastControlPoint);\n return [\n o * a[0] + l * u[0] + h * c[0],\n o * a[1] + l * u[1] + h * c[1]\n ];\n }\n secondDerivativeAt(t) {\n const e = it(this.firstPoint, this.lastControlPoint), n = nt(this.firstControlPoint, 2), i = it(this.firstControlPoint, this.lastPoint), o = nt(this.lastControlPoint, 2), l = nt(Q(e, n), 6 * (1 - t)), h = nt(Q(i, o), 6 * t);\n return it(l, h);\n }\n tangentAt(t) {\n const e = this.pointToParam(t);\n return H(this.gradientAt(e));\n }\n get tangentAtFirstPoint() {\n return H(Q(this.firstControlPoint, this.firstPoint));\n }\n get tangentAtLastPoint() {\n return H(Q(this.lastPoint, this.lastControlPoint));\n }\n normalAt(t) {\n const e = this.tangentAt(t);\n return tt(e);\n }\n get normalAtFirstPoint() {\n return tt(this.tangentAtFirstPoint);\n }\n get normalAtLastPoint() {\n return tt(this.tangentAtLastPoint);\n }\n splitAtParameters(t, e = null) {\n const n = [...t];\n n.sort((o, l) => o - l);\n let i = {\n originalParam: 0,\n param: 0,\n p0: this.firstPoint,\n p1: this.firstControlPoint,\n p2: this.lastControlPoint\n };\n return n.flatMap((o, l) => {\n if (o - i.originalParam < this.precision)\n return [];\n let h = !1;\n o > 1 - this.precision && (h = !0);\n const a = (o - i.originalParam) / (1 - i.originalParam), u = de(\n [\n i.p0,\n i.p1,\n i.p2,\n this.lastPoint\n ],\n h ? 1 : a\n ), c = h ? this.lastPoint : (e == null ? void 0 : e.get(o)) ?? u[0][0], g = u[1][0], d = u[2][0], w = u[1][1], p = u[2][2], P = new Et(\n i.p0,\n c,\n d,\n g\n );\n return i = {\n param: a,\n originalParam: o,\n p0: c,\n p1: w,\n p2: p\n }, l === n.length - 1 && !h ? [\n P,\n new Et(\n i.p0,\n this.lastPoint,\n i.p1,\n i.p2\n )\n ] : P;\n });\n }\n splitAt(t) {\n let e;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? e = t : e = [t];\n const n = e.map((o) => this.pointToParam(o)), i = new Map(\n Kt([n, e])\n );\n return this.splitAtParameters(n, i);\n }\n transform(t) {\n return new Et(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint),\n t.transform(this.firstControlPoint),\n t.transform(this.lastControlPoint)\n );\n }\n paramPoint(t) {\n const e = 1 - t, n = e * e, i = t * t, o = n * e, l = 3 * n * t, h = 3 * e * i, a = i * t;\n return [\n o * this.firstPoint[0] + l * this.firstControlPoint[0] + h * this.lastControlPoint[0] + a * this.lastPoint[0],\n o * this.firstPoint[1] + l * this.firstControlPoint[1] + h * this.lastControlPoint[1] + a * this.lastPoint[1]\n ];\n }\n get polynomialCoefficients() {\n if (this._polynomialCoefficients === null) {\n const t = (e) => {\n const n = this.firstPoint[e], i = this.firstControlPoint[e], o = this.lastControlPoint[e], l = this.lastPoint[e], h = -n + 3 * i - 3 * o + l, a = 3 * n - 6 * i + 3 * o, u = -3 * n + 3 * i;\n return [n, u, a, h];\n };\n this._polynomialCoefficients = [t(0), t(1)];\n }\n return this._polynomialCoefficients;\n }\n paramsAtY(t) {\n const [e, n, i, o] = this.polynomialCoefficients[1];\n return ze(e - t, n, i, o).filter((l) => l >= -this.precision && l <= 1 + this.precision);\n }\n pointToParam(t) {\n if (Y(t, this.firstPoint, this.precision)) return 0;\n if (Y(t, this.lastPoint, this.precision)) return 1;\n const e = this.paramsAtY(t[1]);\n if (e.length === 0)\n throw new Error(\"Point is not on the curve\");\n const n = (o) => Math.abs(this.paramPoint(o)[0] - t[0]) <= this.precision, i = e.find(n);\n if (i === void 0)\n throw new Error(\"Point is not on the curve\");\n return i;\n }\n}\nclass jt extends xt {\n constructor(t, e, n, i, o, l, h = !1, {\n ignoreChecks: a = !1,\n angleUnits: u = \"deg\"\n } = {}) {\n super(t, e);\n q(this, \"segmentType\", \"ELLIPSE_ARC\");\n // I would need to do some more work to improve the precision that I can have\n // on an ellipse with intersection algorithms\n q(this, \"precision\", 1e-6);\n q(this, \"majorRadius\");\n q(this, \"minorRadius\");\n q(this, \"center\");\n q(this, \"tiltAngle\");\n q(this, \"clockwise\");\n q(this, \"_coefficients\", null);\n q(this, \"_boundingBox\");\n q(this, \"_linearExentricity\");\n q(this, \"_exentricity\");\n q(this, \"_focals\");\n q(this, \"_ellipseReferenceFrameTransform\");\n q(this, \"_reverseEllipseReferenceFrameTransform\");\n q(this, \"_rotateFromEllipseReferenceFrame\");\n q(this, \"_firstAngle\");\n q(this, \"_lastAngle\");\n q(this, \"_deltaAngle\");\n this.center = n;\n const c = i >= o;\n this.majorRadius = c ? i : o, this.minorRadius = c ? o : i;\n const g = u === \"deg\" ? l * fe : l;\n if (this.tiltAngle = wt(\n c ? g : g + Math.PI / 2\n ), this.clockwise = h, !a) {\n if (Y(t, e))\n throw new Error(\"Invalid arc, cannot be a full circle\");\n if (!this.isPointOnEllipse(t))\n throw new Error(\n `First point ${Z(\n t\n )} not on the ellipse defined by ${this.info}`\n );\n if (!this.isPointOnEllipse(e))\n throw new Error(\n `Last point ${Z(e)} not on the ellipse defined by ${this.info}`\n );\n if (Math.abs(this.majorRadius - this.minorRadius) < this.precision)\n throw new Error(\n \"Both radii should be different, create an arc instead\"\n );\n }\n }\n get coefficients() {\n if (this._coefficients === null) {\n const [t, e] = this.center, n = this.majorRadius * this.majorRadius, i = this.minorRadius * this.minorRadius, o = Math.cos(this.tiltAngle), l = Math.sin(this.tiltAngle), h = n * l * l + i * o * o, a = 2 * (i - n) * l * o, u = n * o * o + i * l * l;\n this._coefficients = {\n x2: h,\n xy: a,\n y2: u,\n x: -2 * h * t - a * e,\n y: -2 * u * e - a * t,\n c: h * t * t + a * t * e + u * e * e - n * i\n };\n }\n return this._coefficients;\n }\n get info() {\n return `ELLIPSE_ARC(${Z(this.firstPoint)}, ${Z(\n this.lastPoint\n )}, ${Z(this.center)}, ${this.majorRadius}, ${this.minorRadius}, ${this.tiltAngle * Ue}, ${this.clockwise ? \"CW\" : \"CCW\"})`;\n }\n reverse() {\n return new jt(\n this.lastPoint,\n this.firstPoint,\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n !this.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n );\n }\n clone() {\n return new jt(\n this.firstPoint,\n this.lastPoint,\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n this.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n );\n }\n computeEllipseExtrema() {\n const t = Math.tan(this.tiltAngle), e = this.minorRadius / this.majorRadius, n = -Math.atan(e * t), i = Math.atan(e / t);\n return [n, Math.PI + n, i, Math.PI + i].map((l) => this.thetaToParam(l)).filter((l) => this.isValidParameter(l)).map((l) => this.paramPoint(l));\n }\n get boundingBox() {\n if (this._boundingBox === void 0) {\n const t = this.computeEllipseExtrema(), e = [\n this.firstPoint,\n this.lastPoint,\n ...t\n ];\n this._boundingBox = ce(e).grow(this.precision);\n }\n return this._boundingBox;\n }\n get linearExentricity() {\n return this._linearExentricity === void 0 && (this._linearExentricity = Math.sqrt(\n this.majorRadius * this.majorRadius - this.minorRadius * this.minorRadius\n )), this._linearExentricity;\n }\n get exentricity() {\n return this._exentricity === void 0 && (this._exentricity = this.linearExentricity / this.majorRadius), this._exentricity;\n }\n get focals() {\n if (this._focals === void 0) {\n const t = this.majorAxis;\n this._focals = [\n it(this.center, nt(t, this.linearExentricity)),\n it(this.center, nt(t, -this.linearExentricity))\n ];\n }\n return this._focals;\n }\n get majorAxis() {\n return Tt(1, this.tiltAngle);\n }\n paramPoint(t) {\n const e = this.firstAngle + t * this.deltaAngle * (this.clockwise ? -1 : 1);\n return this.reverseEllipseReferenceFrameTransform.transform([\n this.majorRadius * Math.cos(e),\n this.minorRadius * Math.sin(e)\n ]);\n }\n pointToParam(t) {\n if (!this.isPointOnEllipse(t))\n throw new Error(\n `Point ${Z(t)} not on the ellipse defined by ${this.repr}`\n );\n const e = this.thetaToParam(this.pointTheta(t));\n if (!this.isValidParameter(e))\n throw new Error(\n `Point ${Z(t)} is not on segment ${this.repr}`\n );\n return e;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n isValidParameter(t) {\n return 1 - t >= -this.precision && t >= -this.precision;\n }\n isSame(t) {\n return Y(this.center, t.center) && Math.abs(this.majorRadius - t.majorRadius) < this.precision && Math.abs(this.minorRadius - t.minorRadius) < this.precision && (Math.abs(this.tiltAngle - t.tiltAngle) < this.precision || Math.abs(Math.abs(this.tiltAngle - t.tiltAngle) - Math.PI) < this.precision) && (Y(this.firstPoint, t.firstPoint) && this.clockwise === t.clockwise || Y(this.firstPoint, t.lastPoint) && this.clockwise !== t.clockwise);\n }\n pointTheta(t) {\n const e = this.ellipseReferenceFrameTransform.transform(t), n = Math.atan2(\n e[1] / this.minorRadius,\n e[0] / this.majorRadius\n );\n return wt(n);\n }\n thetaToParam(t) {\n return Zt(this.firstAngle, wt(t), this.clockwise) / this.deltaAngle;\n }\n isPointOnEllipse(t) {\n const [e, n] = this.focals, i = J(t, e), o = J(t, n);\n return Math.abs(2 * this.majorRadius - i - o) < this.precision;\n }\n isOnSegment(t) {\n return this.isPointOnEllipse(t) ? this.isValidParameter(this.thetaToParam(this.pointTheta(t))) : !1;\n }\n distanceFrom(t) {\n let e;\n if (Y(t, this.center) ? e = it(\n this.center,\n nt(tt(this.majorAxis), this.minorRadius)\n ) : e = this.reverseEllipseReferenceFrameTransform.transform(\n ln(\n this.majorRadius,\n this.minorRadius,\n this.ellipseReferenceFrameTransform.transform(t)\n )\n ), this.isValidParameter(this.thetaToParam(this.pointTheta(t))))\n return J(t, e);\n if (Qe(t, this.majorAxis, this.center)) {\n const n = wt(\n 2 * Math.PI - this.pointTheta(t)\n ), i = this.thetaToParam(n);\n if (this.isValidParameter(i))\n return J(t, this.paramPoint(i));\n }\n return Math.min(\n J(t, this.firstPoint),\n J(t, this.lastPoint)\n );\n }\n get ellipseReferenceFrameTransform() {\n return this._ellipseReferenceFrameTransform === void 0 && (this._ellipseReferenceFrameTransform = new et().translate(-this.center[0], -this.center[1]).rotate(-this.tiltAngle)), this._ellipseReferenceFrameTransform;\n }\n get reverseEllipseReferenceFrameTransform() {\n return this._reverseEllipseReferenceFrameTransform === void 0 && (this._reverseEllipseReferenceFrameTransform = new et().rotate(this.tiltAngle).translate(this.center[0], this.center[1])), this._reverseEllipseReferenceFrameTransform;\n }\n get rotateFromEllipseReferenceFrame() {\n return this._rotateFromEllipseReferenceFrame === void 0 && (this._rotateFromEllipseReferenceFrame = new et().rotate(\n this.tiltAngle\n )), this._rotateFromEllipseReferenceFrame;\n }\n get firstAngle() {\n return this._firstAngle === void 0 && (this._firstAngle = this.pointTheta(this.firstPoint)), this._firstAngle;\n }\n get lastAngle() {\n return this._lastAngle === void 0 && (this._lastAngle = this.pointTheta(this.lastPoint)), this._lastAngle;\n }\n get deltaAngle() {\n return this._deltaAngle === void 0 && (this._deltaAngle = Zt(\n this.firstAngle,\n this.lastAngle,\n this.clockwise\n )), this._deltaAngle;\n }\n normalAt(t) {\n const e = this.tangentAt(t);\n return this.clockwise ? tt(e) : Qt(e);\n }\n gradientAt(t) {\n const e = this.firstAngle + t * this.deltaAngle * (this.clockwise ? -1 : 1), n = -this.majorRadius * this.deltaAngle * Math.sin(e), i = this.minorRadius * this.deltaAngle * Math.cos(e), o = this.clockwise ? [-n, -i] : [n, i];\n return this.rotateFromEllipseReferenceFrame.transform(o);\n }\n tangentAt(t) {\n const e = this.pointTheta(t), n = -this.majorRadius * Math.sin(e), i = this.minorRadius * Math.cos(e), o = this.clockwise ? [-n, -i] : [n, i];\n return H(this.rotateFromEllipseReferenceFrame.transform(o));\n }\n get tangentAtFirstPoint() {\n const t = -this.majorRadius * Math.sin(this.firstAngle), e = this.minorRadius * Math.cos(this.firstAngle), n = this.clockwise ? [-t, -e] : [t, e];\n return H(this.rotateFromEllipseReferenceFrame.transform(n));\n }\n get tangentAtLastPoint() {\n const t = -this.majorRadius * Math.sin(this.lastAngle), e = this.minorRadius * Math.cos(this.lastAngle), n = this.clockwise ? [-t, -e] : [t, e];\n return H(this.rotateFromEllipseReferenceFrame.transform(n));\n }\n transform(t) {\n const e = t.transformAngle(this.tiltAngle), n = t.scaleFactor();\n return new jt(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint),\n t.transform(this.center),\n this.majorRadius * n,\n this.minorRadius * n,\n e,\n t.keepsOrientation() ? this.clockwise : !this.clockwise,\n { angleUnits: \"rad\" }\n );\n }\n splitAt(t) {\n let e;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? e = t : e = [t];\n const i = [0, 1, ...e.map((h) => this.pointToParam(h))], o = new Map(\n Kt([i, [this.firstPoint, this.lastPoint, ...e]])\n );\n i.sort((h, a) => h - a);\n let l = null;\n return i.flatMap((h, a) => {\n if (a === i.length - 1) return [];\n const u = i[a + 1];\n if (u - h < this.precision)\n return l === null && (l = h), [];\n const c = l === null ? h : l, g = new jt(\n o.get(c) || this.paramPoint(c),\n o.get(u) || this.paramPoint(u),\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n this.clockwise,\n { angleUnits: \"rad\" }\n );\n return l = null, g;\n });\n }\n}\nfunction pn(r, s, t, e, n, i, o) {\n const { center: l, rx: h, ry: a } = on(\n r,\n s,\n t,\n e,\n n * fe,\n !i,\n o\n );\n return Math.abs(h - a) < 1e-9 ? new ct(r, s, l, o) : new jt(r, s, l, h, a, n, o);\n}\nfunction on([r, s], [t, e], n, i, o, l, h) {\n if (n < 0 && (n = -n), i < 0 && (i = -i), n == 0 || i == 0)\n throw Error(\"rx and ry can not be 0\");\n const a = Math.sin(o), u = Math.cos(o), c = (r - t) / 2, g = (s - e) / 2, d = (r + t) / 2, w = (s + e) / 2, p = u * c + a * g, P = u * g - a * c, f = p * p / (n * n) + P * P / (i * i);\n f > 1 && (n = n * Math.sqrt(f), i = i * Math.sqrt(f));\n const M = n * i, E = n * P, R = i * p, v = E * E + R * R;\n if (!v)\n throw Error(\"start point can not be same as end point\");\n let L = Math.sqrt(Math.abs((M * M - v) / v));\n l == h && (L = -L);\n const S = L * E / i, k = -L * R / n, D = u * S - a * k + d, m = a * S + u * k + w;\n return {\n center: [D, m],\n rx: n,\n ry: i\n };\n}\nfunction ln(r, s, t) {\n const e = Math.abs(t[0]), n = Math.abs(t[1]);\n let i = 0.707, o = 0.707;\n const l = r, h = s;\n for (let a = 0; a < 3; a++) {\n const u = l * i, c = h * o, g = (l * l - h * h) * i ** 3 / l, d = (h * h - l * l) * o ** 3 / h, w = u - g, p = c - d, P = e - g, f = n - d, M = Math.hypot(w, p), E = Math.hypot(P, f);\n i = Math.min(1, Math.max(0, (P * M / E + g) / l)), o = Math.min(1, Math.max(0, (f * M / E + d) / h));\n const R = Math.hypot(i, o);\n i /= R, o /= R;\n }\n return [l * i * Math.sign(t[0]), h * o * Math.sign(t[1])];\n}\nclass _t extends xt {\n constructor(t, e, n) {\n super(t, e);\n q(this, \"segmentType\", \"QUADRATIC_BEZIER\");\n q(this, \"controlPoint\");\n q(this, \"_boundingBox\", null);\n q(this, \"_polynomialCoefficients\", null);\n this.controlPoint = n;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n _extremaInDirection(t) {\n const [e, n, i] = [\n this.firstPoint[t],\n this.controlPoint[t],\n this.lastPoint[t]\n ], o = e - 2 * n + i;\n if (!o)\n return [];\n const l = (e - n) / o;\n return l >= -this.precision && l <= 1 + this.precision ? [l] : [];\n }\n getParametersOfExtrema() {\n return Array.from(\n new Set(this._extremaInDirection(0).concat(this._extremaInDirection(1)))\n );\n }\n get boundingBox() {\n return this._boundingBox === null && (this._boundingBox = ce([\n this.firstPoint,\n // There is either one or zero extrema in each direction\n ...this.getParametersOfExtrema().map((t) => this.paramPoint(t)),\n this.lastPoint\n ]).grow(this.precision)), this._boundingBox;\n }\n clone() {\n return new _t(\n this.firstPoint,\n this.lastPoint,\n this.controlPoint\n );\n }\n reverse() {\n return new _t(\n this.lastPoint,\n this.firstPoint,\n this.controlPoint\n );\n }\n isSame(t) {\n return t.segmentType !== \"QUADRATIC_BEZIER\" ? !1 : Y(this.firstPoint, t.firstPoint) && Y(this.lastPoint, t.lastPoint) && Y(this.controlPoint, t.controlPoint);\n }\n distanceFrom(t) {\n const n = Ce((i) => Rt(this.paramPoint(i), t), this.precision);\n return n.argMin < -this.precision || n.argMin > 1 + this.precision ? Math.min(\n J(this.firstPoint, t),\n J(this.lastPoint, t)\n ) : Math.sqrt(n.fMin);\n }\n isOnSegment(t) {\n if (!this.boundingBox.contains(t))\n return !1;\n try {\n const e = this.pointToParam(t);\n return e >= -this.precision && e <= 1 + this.precision;\n } catch {\n return !1;\n }\n }\n gradientAt(t) {\n const e = (n) => {\n const i = this.firstPoint[n], o = this.controlPoint[n], l = this.lastPoint[n];\n return 2 * (t * (i - 2 * o + l) - i + o);\n };\n return [e(0), e(1)];\n }\n secondDerivativeAt(t) {\n return nt(\n Q(\n it(this.firstPoint, this.lastPoint),\n nt(this.controlPoint, 2)\n ),\n 2\n );\n }\n tangentAt(t) {\n const e = this.pointToParam(t);\n return H(this.gradientAt(e));\n }\n get tangentAtFirstPoint() {\n return H(Q(this.controlPoint, this.firstPoint));\n }\n get tangentAtLastPoint() {\n return H(Q(this.lastPoint, this.controlPoint));\n }\n normalAt(t) {\n const e = this.tangentAt(t);\n return tt(e);\n }\n get normalAtFirstPoint() {\n return tt(this.tangentAtFirstPoint);\n }\n get normalAtLastPoint() {\n return tt(this.tangentAtLastPoint);\n }\n splitAtParameters(t, e = null) {\n const n = [...t];\n n.sort((o, l) => o - l);\n let i = {\n originalParam: 0,\n param: 0,\n p0: this.firstPoint,\n p1: this.controlPoint\n };\n return n.flatMap((o, l) => {\n if (o - i.originalParam < this.precision)\n return [];\n let h = !1;\n o > 1 - this.precision && (h = !0);\n const a = (o - i.originalParam) / (1 - i.originalParam), u = de(\n [i.p0, i.p1, this.lastPoint],\n h ? 1 : a\n ), c = h ? this.lastPoint : (e == null ? void 0 : e.get(o)) ?? u[0][0], g = u[1][0], d = u[1][1], w = new _t(\n i.p0,\n c,\n g\n );\n return i = {\n param: a,\n originalParam: o,\n p0: c,\n p1: d\n }, l === n.length - 1 && !h ? [\n w,\n new _t(\n i.p0,\n this.lastPoint,\n i.p1\n )\n ] : w;\n });\n }\n splitAt(t) {\n let e;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? e = t : e = [t];\n const n = e.map((o) => this.pointToParam(o)), i = new Map(\n Kt([n, e])\n );\n return this.splitAtParameters(n, i);\n }\n transform(t) {\n return new _t(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint),\n t.transform(this.controlPoint)\n );\n }\n paramPoint(t) {\n const e = 1 - t, n = e * e, i = 2 * e * t, o = t * t;\n return [\n n * this.firstPoint[0] + i * this.controlPoint[0] + o * this.lastPoint[0],\n n * this.firstPoint[1] + i * this.controlPoint[1] + o * this.lastPoint[1]\n ];\n }\n get polynomialCoefficients() {\n if (this._polynomialCoefficients === null) {\n const t = (e) => {\n const n = this.firstPoint[e], i = this.controlPoint[e], o = this.lastPoint[e], l = n - 2 * i + o, h = 2 * (i - n);\n return [n, h, l];\n };\n this._polynomialCoefficients = [t(0), t(1)];\n }\n return this._polynomialCoefficients;\n }\n paramsAtY(t) {\n const [e, n, i] = this.polynomialCoefficients[1];\n return qt(e - t, n, i).filter(\n (o) => o >= -this.precision && o <= 1 + this.precision\n );\n }\n pointToParam(t) {\n const e = this.paramsAtY(t[1]);\n if (e.length === 0)\n throw new Error(\"Point is not on the curve!\");\n const n = (o) => Math.abs(this.paramPoint(o)[0] - t[0]) <= this.precision, i = e.find(n);\n if (i === void 0)\n throw new Error(\"Point is not on the curve\");\n return i;\n }\n}\nexport {\n ct as A,\n mt as B,\n Et as C,\n fe as D,\n jt as E,\n Ze as F,\n Ie as G,\n Z as H,\n at as L,\n _t as Q,\n Ue as R,\n et as T,\n it as a,\n Q as b,\n St as c,\n Pe as d,\n J as e,\n Qt as f,\n Y as g,\n fn as h,\n pn as i,\n We as j,\n Tt as k,\n me as l,\n Ye as m,\n H as n,\n Rt as o,\n tt as p,\n un as q,\n Te as r,\n nt as s,\n mn as t,\n sn as u,\n wn as v,\n It as w,\n an as x,\n cn as y,\n Kt as z\n};\n//# sourceMappingURL=QuadraticBezier-DxieHk9z.js.map\n","var tn = Object.defineProperty;\nvar nn = (t, n, e) => n in t ? tn(t, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[n] = e;\nvar C = (t, n, e) => nn(t, typeof n != \"symbol\" ? n + \"\" : n, e);\nimport { b as k, d as en, e as Ot, a as q, s as V, n as sn, p as Tt, r as U, A as S, g, u as Lt, E as M, T as on, v as rn, Q as A, w as $, C as I, c as ln, x as cn, L as y, y as zt, F as lt, z as N, G as un, l as an, o as fn, H as dt, B as hn } from \"./QuadraticBezier-DxieHk9z.js\";\nfunction pn(t, n) {\n const e = k(n, t.firstPoint), s = en(e, t.V) / t.squareLength;\n return t.paramPoint(s);\n}\nfunction J(t, n, e) {\n const s = e || t.precision, i = pn(t, n.center), o = Ot(i, n.center);\n if (o > n.radius + s) return [];\n if (Math.abs(o - n.radius) < s) {\n const u = i;\n return t.isOnSegment(u) && n.isOnSegment(u) ? [u] : [];\n }\n const r = [], l = Math.sqrt(\n n.radius * n.radius - o * o\n ), c = t.tangentAtFirstPoint, a = q(i, V(c, l));\n t.isOnSegment(a) && n.isOnSegment(a) && r.push(a);\n const f = q(i, V(c, -l));\n return t.isOnSegment(f) && n.isOnSegment(f) && r.push(f), r;\n}\nconst dn = (t) => {\n const { firstPoint: n, lastPoint: e, center: s, clockwise: i } = t;\n return new S(e, n, s, i, {\n ignoreChecks: !0\n });\n}, mn = (t, n) => {\n if (t.isSame(n))\n return [t];\n const e = U(\n [\n n.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n n.isOnSegment(t.lastPoint) ? t.lastPoint : null,\n t.isOnSegment(n.firstPoint) ? n.firstPoint : null,\n t.isOnSegment(n.lastPoint) ? n.lastPoint : null\n ].filter((s) => s !== null)\n // We sort by the param value of the first arc. This means that the points\n // will be sorted with the same orientation than arc1\n ).sort((s, i) => t.pointToParam(s) - t.pointToParam(i));\n if (e.length === 0) return [];\n if (e.length === 1) return [];\n if (e.length === 2)\n return t.isSame(dn(n)) ? [] : [new S(e[0], e[1], t.center, t.clockwise)];\n if (e.length === 3) {\n const s = g(e[0], n.lastPoint) || g(e[0], n.firstPoint) ? 1 : 0;\n return [\n new S(\n e[0 + s],\n e[1 + s],\n t.center,\n t.clockwise\n )\n ];\n } else if (e.length === 4)\n return [\n new S(e[0], e[1], t.center, t.clockwise),\n new S(e[2], e[3], t.center, t.clockwise)\n ];\n throw new Error(\"Bug in the arc arc overlap algorithm\");\n};\nfunction qt(t, n, e = !1, s) {\n const i = s || t.precision, o = Ot(t.center, n.center), r = t.radius + n.radius;\n if (o > r + i)\n return [];\n const l = Math.abs(t.radius - n.radius);\n if (o < l - i)\n return [];\n if (o < i)\n return l > i ? [] : e ? mn(t, n) : [];\n const c = sn(k(n.center, t.center)), a = o > r - i;\n if (\n // circles are outside each other\n a || // circles are inside each other\n Math.abs(o - l) < i\n ) {\n const w = a || t.radius > n.radius ? 1 : -1, x = q(\n t.center,\n V(c, w * t.radius)\n );\n return t.isOnSegment(x) && n.isOnSegment(x) ? [x] : [];\n }\n const f = t.radius * t.radius / (2 * o) - n.radius * n.radius / (2 * o) + o / 2, u = q(\n t.center,\n V(c, f)\n ), h = Math.sqrt(\n t.radius * t.radius - f * f\n ), p = Tt(c), d = q(u, V(p, h)), m = q(u, V(p, -h)), P = [];\n return t.isOnSegment(d) && n.isOnSegment(d) && P.push(d), t.isOnSegment(m) && n.isOnSegment(m) && P.push(m), P;\n}\nfunction et(t, n, e = 1e-9) {\n const s = t.transform(n.ellipseReferenceFrameTransform), i = s.slope, o = s.yIntercept, r = n.majorRadius * n.majorRadius, l = n.minorRadius * n.minorRadius, c = n.majorRadius * n.minorRadius, a = s.slope * s.slope, f = s.yIntercept * s.yIntercept, u = (w) => w.map(\n (x) => n.reverseEllipseReferenceFrameTransform.transform(x)\n ).filter((x) => t.isOnSegment(x) && n.isOnSegment(x));\n if (!Number.isFinite(i)) {\n const w = s.firstPoint[0];\n if (Math.abs(w) - n.majorRadius > e) return [];\n if (Math.abs(Math.abs(w) - n.majorRadius) < e)\n return u([[w, 0]]);\n const x = n.minorRadius * Math.sqrt(1 - w * w / r), F = [w, x], b = [w, -x];\n return u([F, b]);\n }\n const h = r * a + l - f;\n if (h < -e)\n return [];\n const p = r * a + l;\n if (Math.abs(h) < e) {\n const w = -(r * i * o) / p, x = l * o / p;\n return u([[w, x]]);\n }\n const d = Math.sqrt(h), m = [\n -(r * i * o + c * d) / p,\n (l * o - c * i * d) / p\n ], P = [\n -(r * i * o - c * d) / p,\n (l * o + c * i * d) / p\n ];\n return u([m, P]);\n}\nfunction Dt(t, n) {\n const e = Math.max(t.precision, n.precision), s = t.coefficients, i = s.x2, o = s.xy, r = s.y2, l = s.x, c = s.y, a = s.c, f = n.coefficients, u = f.x2, h = f.xy, p = f.y2, d = f.x, m = f.y, P = f.c, w = {\n z0: a * i * d * d + i * i * P * P - l * i * d * P + u * u * a * a - 2 * i * P * u * a - l * d * u * a + u * l * l * P,\n z1: m * l * l * u - P * d * i * o - 2 * i * P * u * c - a * u * h * l + 2 * d * h * i * a + 2 * m * P * i * i + d * d * i * c - m * d * i * l - 2 * i * m * u * a - a * u * d * o + 2 * a * c * u * u - P * h * i * l - c * u * d * l + 2 * P * o * u * l,\n z2: m * m * i * i + 2 * p * P * i * i - c * u * d * o + P * u * o * o - c * u * h * l - P * h * i * o - 2 * i * m * u * c + 2 * d * h * i * c - p * d * i * l - 2 * i * p * u * a + h * h * i * a + 2 * m * o * u * l + c * c * u * u - r * u * d * l - m * h * i * l + 2 * a * r * u * u - a * u * h * o + p * l * l * u + d * d * i * r - m * d * i * o - 2 * i * P * u * r,\n z3: -2 * i * u * r * m + m * u * o * o + 2 * p * o * u * l - r * u * h * l + h * h * i * c - m * h * i * o - 2 * i * p * u * c - c * u * h * o - p * h * i * l + 2 * m * p * i * i + 2 * c * r * u * u - r * u * d * o + 2 * d * h * i * r - p * d * i * o,\n z4: i * i * p * p - 2 * i * p * u * r + u * u * r * r - o * i * h * p - o * h * u * r + o * o * u * p + r * i * h * h\n }, F = Lt(\n [w.z0, w.z1, w.z2, w.z3, w.z4],\n e\n ).flatMap((b) => {\n const R = i * h * b + i * d - u * o * b - u * l;\n if (R)\n return [[-(i * P + i * p * b * b - u * r * b * b + i * m * b - u * c * b - u * a) / R, b]];\n const T = o * b + l, L = -T / (2 * i), j = r * b * b + c * b + a, z = T * T / (4 * i * i) - j / i;\n if (Math.abs(z) < e)\n return [[L, b]];\n if (z > 0) {\n const H = Math.sqrt(z);\n return [[L + H, b], [L - H, b]];\n }\n return [];\n });\n return U(F, e);\n}\nfunction mt(t, n) {\n return Dt(t, n).filter((s) => t.isOnSegment(s) && n.isOnSegment(s));\n}\nconst gn = (t) => {\n const {\n firstPoint: n,\n lastPoint: e,\n center: s,\n majorRadius: i,\n minorRadius: o,\n tiltAngle: r,\n clockwise: l\n } = t;\n return new M(\n e,\n n,\n s,\n i,\n o,\n r,\n l,\n {\n ignoreChecks: !0,\n angleUnits: \"rad\"\n }\n );\n}, Pn = (t, n) => {\n if (t.isSame(n))\n return [t];\n const e = (i, o) => new M(\n i,\n o,\n t.center,\n t.majorRadius,\n t.minorRadius,\n t.tiltAngle,\n t.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n ), s = U(\n [\n n.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n n.isOnSegment(t.lastPoint) ? t.lastPoint : null,\n t.isOnSegment(n.firstPoint) ? n.firstPoint : null,\n t.isOnSegment(n.lastPoint) ? n.lastPoint : null\n ].filter((i) => i !== null)\n // We sort by the param value of the first arc. This means that the points\n // will be sorted with the same orientation than arc1\n ).sort((i, o) => t.pointToParam(i) - t.pointToParam(o));\n if (s.length === 0) return [];\n if (s.length === 1) return [];\n if (s.length === 2)\n return t.isSame(gn(n)) ? [] : [e(s[0], s[1])];\n if (s.length === 3) {\n const i = g(s[0], n.lastPoint) || g(s[0], n.firstPoint) ? 1 : 0;\n return [e(s[0 + i], s[1 + i])];\n } else if (s.length === 4)\n return [e(s[0], s[1]), e(s[2], s[3])];\n throw new Error(\"Bug in the ellipse arc ellipse arc overlap algorithm\");\n};\nfunction wn(t, n, e = !1) {\n const s = Math.max(t.precision, n.precision);\n return g(t.center, n.center) && Math.abs(t.majorRadius - n.majorRadius) < s && Math.abs(t.minorRadius - n.minorRadius) < s && (Math.abs(t.tiltAngle - n.tiltAngle) < s || Math.abs(Math.abs(t.tiltAngle - n.tiltAngle) - Math.PI) < s) ? e ? Pn(t, n) : [] : Dt(t, n).filter((r) => t.isOnSegment(r) && n.isOnSegment(r));\n}\nfunction gt(t, n) {\n const [e, s] = t.firstPoint, [i, o] = t.lastPoint, r = new on().translate(-e, -s).rotate(-Math.atan2(o - s, i - e)), l = r.clone().inverse(), c = n.transform(r);\n return c.paramsAtY(0).map((a) => c.paramPoint(a)).map((a) => l.transform(a)).filter((a) => t.isOnSegment(a));\n}\nconst xn = (t, n = 1e-9) => {\n let e = t;\n return Math.abs(t) < n && (e = 0), e.toFixed(-Math.log10(n));\n};\nfunction Rt(t, n = 1e-9) {\n return Array.from(\n new Map(t.map((e) => [xn(e, n), e])).values()\n );\n}\nconst Sn = (t, n) => {\n const [[e, s, i, o], [r, l, c, a]] = n.polynomialCoefficients, f = t.coefficients, u = f.x2, h = f.xy, p = f.y2, d = f.x, m = f.y, P = f.c, w = e * e, x = s * s, F = i * i, b = o * o, R = r * r, T = l * l, L = c * c, j = a * a, z = P + d * e + u * w + m * r + h * e * r + p * R, H = d * s + 2 * u * e * s + h * s * r + m * l + h * e * l + 2 * p * r * l, Qt = u * x + d * i + 2 * u * e * i + h * i * r + h * s * l + p * T + m * c + h * e * c + 2 * p * r * c, Wt = 2 * u * s * i + d * o + 2 * u * e * o + h * o * r + h * i * l + h * s * c + 2 * p * l * c + m * a + h * e * a + 2 * p * r * a, Jt = u * F + 2 * u * s * o + h * o * l + h * i * c + p * L + h * s * a + 2 * p * l * a, Kt = 2 * u * i * o + h * o * c + h * i * a + 2 * p * c * a, Zt = u * b + h * o * a + p * j;\n return [z, H, Qt, Wt, Jt, Kt, Zt];\n};\nfunction Pt(t, n) {\n const e = Math.max(t.precision, n.precision), s = Sn(t, n), i = Lt(s, e).filter((o) => o >= -n.precision && o <= 1 + n.precision);\n return Rt(i, e).map((o) => n.paramPoint(o)).filter((o) => t.isOnSegment(o));\n}\nconst yn = (t, n) => {\n const [[e, s, i], [o, r, l]] = n.polynomialCoefficients, c = t.coefficients, a = c.x2, f = c.xy, u = c.y2, h = c.x, p = c.y, d = c.c, m = e * e, P = s * s, w = i * i, x = o * o, F = r * r, b = l * l, R = a * m + f * e * o + u * x + h * e + p * o + d, T = 2 * a * e * s + f * e * r + f * s * o + 2 * u * o * r + h * s + p * r, L = 2 * a * e * i + a * P + f * e * l + f * s * r + f * i * o + 2 * u * o * l + u * F + h * i + p * l, j = 2 * a * s * i + f * s * l + f * i * r + 2 * u * r * l, z = a * w + f * i * l + u * b;\n return [R, T, L, j, z];\n};\nfunction wt(t, n) {\n const e = Math.max(t.precision, n.precision), s = yn(t, n), i = rn(...s).filter((o) => o >= -n.precision && o <= 1 + n.precision);\n return Rt(i, e).map((o) => n.paramPoint(o)).filter((o) => t.isOnSegment(o));\n}\nfunction E(t, { firstPoint: n, lastPoint: e }, s = 1e-9) {\n const i = k(e, n);\n return Math.abs(i[0]) < s ? i[1] > 0 ? n[0] - t[0] : t[0] - n[0] : Math.abs(i[1]) < s ? i[0] > 0 ? t[1] - n[1] : n[1] - t[1] : ln(i, k(t, n)) / cn(i);\n}\nclass ct {\n constructor(n, e, s, i) {\n this.firstPoint = n, this.lastPoint = e, this.negativeThickness = s, this.positiveThickness = i;\n }\n get width() {\n return this.positiveThickness - this.negativeThickness;\n }\n}\nconst bn = 3 / 4, Cn = 4 / 9;\nfunction Mn(t) {\n const n = E(t.firstControlPoint, t), e = E(t.lastControlPoint, t), s = n * e > 0 ? bn : Cn;\n return new ct(\n t.firstPoint,\n t.lastPoint,\n s * Math.min(0, n, e),\n s * Math.max(0, n, e)\n );\n}\nfunction An(t) {\n const n = E(t.controlPoint, t);\n return new ct(\n t.firstPoint,\n t.lastPoint,\n Math.min(0, n / 2),\n Math.max(0, n / 2)\n );\n}\nfunction In(t) {\n if (t instanceof I)\n return Mn(t);\n if (t instanceof A)\n return An(t);\n throw new Error(\"Not implemented\");\n}\nfunction En(t) {\n const n = t.paramPoint(0.5), e = Tt(k(n, t.firstPoint)), s = q(n, e), i = {\n firstPoint: n,\n lastPoint: s\n }, o = [\n E(t.firstPoint, i),\n E(t.lastPoint, i)\n ];\n return t instanceof I ? o.push(\n E(t.firstControlPoint, i),\n E(t.lastControlPoint, i)\n ) : t instanceof A && o.push(E(t.controlPoint, i)), new ct(\n n,\n s,\n Math.min(...o),\n Math.max(...o)\n );\n}\nfunction xt(t, n) {\n const e = [];\n for (let s = 1; s < t.length; s++) {\n const i = t[s];\n if (i[1] === n) {\n e.push(i[0]);\n continue;\n }\n const o = t[s - 1], r = n - o[1], l = n - i[1];\n if (r * l < 0) {\n e.push(\n o[0] + (n - o[1]) * (i[0] - o[0]) / (i[1] - o[1])\n );\n continue;\n }\n }\n return e;\n}\nclass Y {\n constructor(n, e) {\n this.from = n, this.to = e;\n }\n get size() {\n return this.from === \"start\" ? this.to === \"end\" ? 1 : this.to : this.to === \"end\" ? 1 - this.from : Math.abs(this.from - this.to);\n }\n clipCurve(n) {\n return this.from === \"start\" ? this.to === \"end\" ? n : n.splitAtParameters([this.to])[0] : this.to === \"end\" ? n.splitAtParameters([this.from])[1] : n.splitAtParameters([this.from, this.to])[1];\n }\n}\nfunction Fn(t, n) {\n if (t instanceof I)\n return new Bn([\n E(t.firstPoint, n),\n E(t.firstControlPoint, n),\n E(t.lastControlPoint, n),\n E(t.lastPoint, n)\n ]);\n if (t instanceof A)\n return new vn([\n E(t.firstPoint, n),\n E(t.controlPoint, n),\n E(t.lastPoint, n)\n ]);\n throw new Error(\"Not implemented\");\n}\nclass vn {\n constructor(n) {\n C(this, \"topHull\", []);\n C(this, \"bottomHull\", []);\n this.distances = n;\n const [e, s, i] = n, o = [0, e], r = [1 / 2, s], l = [1, i], c = i - e, a = e;\n s - (c * (1 / 2) + a) > 0 ? (this.topHull = [o, r, l], this.bottomHull = [o, l]) : (this.topHull = [o, l], this.bottomHull = [o, r, l]);\n }\n get startDistance() {\n return this.distances[0];\n }\n get endDistance() {\n return this.distances[2];\n }\n}\nclass Bn {\n constructor(n) {\n C(this, \"topHull\", []);\n C(this, \"bottomHull\", []);\n this.distances = n;\n const [e, s, i, o] = n, r = [0, e], l = [1 / 3, s], c = [2 / 3, i], a = [1, o], f = o - e, u = e, h = s - (f * (1 / 3) + u), p = i - (f * (2 / 3) + u);\n let d = null, m = null;\n if (h * p < 0)\n d = [r, l, a], m = [r, c, a];\n else {\n const w = h / p;\n w >= 2 ? (d = [r, l, a], m = [r, a]) : w <= 0.5 ? (d = [r, c, a], m = [r, a]) : (d = [r, l, c, a], m = [r, a]);\n }\n h < 0 && ([d, m] = [m, d]), this.topHull = d, this.bottomHull = m;\n }\n get startDistance() {\n return this.distances[0];\n }\n get endDistance() {\n return this.distances[3];\n }\n}\nfunction St(t, n) {\n const e = Fn(n, t), s = xt(\n e.topHull,\n t.negativeThickness\n ), i = xt(\n e.bottomHull,\n t.positiveThickness\n ), o = e.endDistance >= t.negativeThickness && e.endDistance <= t.positiveThickness;\n if (!s.length && !i.length)\n return o ? new Y(\"start\", \"end\") : null;\n if (s.length === 1 && i.length === 1)\n return new Y(s[0], i[0]);\n if (s.length === 2 && i.length === 2)\n throw new Error(\n \"Bug in the clipping algorithm, unexpected number of crossing points\"\n );\n const r = s.length ? s : i;\n return r.length === 2 ? new Y(r[0], r[1]) : o ? new Y(r[0], \"end\") : new Y(\"start\", r[0]);\n}\nfunction yt(t, n) {\n const e = In(t), s = St(e, n);\n if (!s)\n return null;\n const i = En(t), o = St(\n i,\n n\n );\n return o ? s.size > o.size ? o.clipCurve(n) : s.clipCurve(n) : null;\n}\nconst W = (t) => t instanceof A ? $(k(t.controlPoint, t.firstPoint)) + $(k(t.controlPoint, t.lastPoint)) : $(k(t.firstControlPoint, t.firstPoint)) + $(k(t.lastControlPoint, t.firstControlPoint)) + $(k(t.lastControlPoint, t.lastPoint));\nfunction D(t, n, e = 1e-9, { maxIterations: s = 100 } = {}) {\n const i = Math.max(e * e, Number.EPSILON * 10);\n let o = t, r = n, l = W(o), c = W(r);\n for (let a = 0; a < s; a++) {\n const f = l > i ? yt(r, o) : o;\n if (!f) return [];\n const u = W(f), h = c > i ? yt(f, r) : r;\n if (!h) return [];\n const p = W(h);\n if (u <= i && p <= i)\n return [\n f.boundingBox.intersection(h.boundingBox).center\n ];\n if (g(f.firstPoint, f.lastPoint) && h.isOnSegment(f.firstPoint))\n return [f.firstPoint];\n if (g(h.firstPoint, h.lastPoint) && f.isOnSegment(h.firstPoint))\n return [h.firstPoint];\n if (u > 0.8 * l && p > 0.8 * c)\n if (u / l > p / c) {\n const [d, m] = f.splitAtParameters([\n 0.5\n ]);\n return U(\n [\n ...D(d, h, e, {\n maxIterations: s - a\n }),\n ...D(m, h, e, {\n maxIterations: s - a\n })\n ],\n e\n );\n } else {\n const [d, m] = h.splitAtParameters([\n 0.5\n ]);\n return U(\n [\n ...D(f, d, e, {\n maxIterations: s - a\n }),\n ...D(f, m, e, {\n maxIterations: s - a\n })\n ],\n e\n );\n }\n o = f, r = h, l = u, c = p;\n }\n throw new Error(\"Bézier clip: Maximum number of iterations reached\");\n}\nfunction kn(t, n) {\n const e = [];\n if ([\n [t.firstPoint, n],\n [t.lastPoint, n],\n [n.firstPoint, t],\n [n.lastPoint, t]\n ].forEach(([i, o]) => {\n o.isOnSegment(i) && e.push(i);\n }), e.length < 2)\n return null;\n if (e.length === 2)\n return [t.splitAt(e)[1]];\n if (e.length === 3)\n return g(e[0], t.firstPoint) && g(e[1], t.lastPoint) ? [t] : [n];\n if (e.length === 4)\n return [t];\n}\nfunction _n(t, n, e = !1) {\n const s = Math.max(t.precision, n.precision);\n if (e) {\n const i = kn(t, n);\n if (i)\n return i;\n }\n return D(t, n, s);\n}\nfunction On(t, n) {\n const e = [];\n if ([\n [t.firstPoint, n],\n [t.lastPoint, n],\n [n.firstPoint, t],\n [n.lastPoint, t]\n ].forEach(([i, o]) => {\n o.isOnSegment(i) && e.push(i);\n }), e.length < 2)\n return null;\n if (e.length === 2)\n return [t.splitAt(e)[1]];\n if (e.length === 3)\n return g(e[0], t.firstPoint) && g(e[1], t.lastPoint) ? [t] : [n];\n if (e.length === 4)\n return [t];\n}\nfunction Tn(t, n, e = !1) {\n const s = Math.max(t.precision, n.precision);\n if (e) {\n const i = On(t, n);\n if (i)\n return i;\n }\n return D(t, n, s);\n}\nfunction ae(t, n, e) {\n if (t instanceof y && n instanceof y) {\n const s = zt(\n t,\n n,\n !1,\n e\n );\n return s === null ? [] : [s];\n }\n if (t instanceof y && n instanceof S)\n return J(t, n, e);\n if (t instanceof S && n instanceof y)\n return J(n, t, e);\n if (t instanceof S && n instanceof S)\n return qt(t, n, !1, e);\n throw new Error(\"Not implemented\");\n}\nfunction K(t, n, e) {\n if (t instanceof y && n instanceof y) {\n const s = zt(\n t,\n n,\n !0,\n e\n );\n return s === null ? { intersections: [], overlaps: [], count: 0 } : s instanceof y ? { intersections: [], overlaps: [s], count: 1 } : { intersections: [s], overlaps: [], count: 1 };\n }\n if (!t.boundingBox.overlaps(n.boundingBox))\n return { intersections: [], overlaps: [], count: 0 };\n if (t instanceof y && n instanceof S) {\n const s = J(t, n, e);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof S && n instanceof y) {\n const s = J(n, t, e);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof S && n instanceof S) {\n const s = qt(\n t,\n n,\n !0,\n e\n );\n return s.length ? s[0] instanceof S ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (t instanceof y && n instanceof M) {\n const s = et(\n t,\n n,\n e\n );\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (n instanceof y && t instanceof M) {\n const s = et(\n n,\n t,\n e\n );\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof S && n instanceof M) {\n const s = mt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (n instanceof S && t instanceof M) {\n const s = mt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof M && n instanceof M) {\n const s = wn(\n t,\n n,\n !0\n );\n return s.length ? s[0] instanceof M ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (t instanceof y && (n instanceof I || n instanceof A)) {\n const s = gt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (n instanceof y && (t instanceof I || t instanceof A)) {\n const s = gt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((t instanceof S || t instanceof M) && n instanceof A) {\n const s = wt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((n instanceof S || n instanceof M) && t instanceof A) {\n const s = wt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((t instanceof S || t instanceof M) && n instanceof I) {\n const s = Pt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((n instanceof S || n instanceof M) && t instanceof I) {\n const s = Pt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof A && n instanceof A) {\n const s = Tn(\n t,\n n\n );\n return s.length ? s[0] instanceof A ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (t instanceof A && n instanceof I || n instanceof A && t instanceof I) {\n const s = D(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof I && n instanceof I) {\n const s = _n(\n t,\n n\n );\n return s.length ? s[0] instanceof I ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n throw new Error(\"Not implemented\");\n}\nfunction Vt(t) {\n const n = [];\n for (let e = 0; e < t; e++)\n for (let s = 0; s <= e; s++)\n n.push([e, s]);\n return n;\n}\nfunction* st(t) {\n for (const [n, e] of Vt(t.length))\n n !== e && (yield [t[n], t[e]]);\n}\nclass Nt extends lt {\n constructor(e, { ignoreChecks: s = !1 } = {}) {\n super();\n C(this, \"segments\");\n C(this, \"_boundingBox\", null);\n s || Ut(e), this.segments = e;\n }\n get repr() {\n return this.segments.map((e) => e.repr).join(`\n`) + `\n`;\n }\n get info() {\n return this.repr;\n }\n get firstPoint() {\n return this.segments[0].firstPoint;\n }\n get lastPoint() {\n return this.segments[this.segments.length - 1].lastPoint;\n }\n get segmentsCount() {\n return this.segments.length;\n }\n onStroke(e) {\n return this.segments.some((s) => s.isOnSegment(e));\n }\n intersects(e) {\n return this.boundingBox.overlaps(e.boundingBox) ? this.segments.some(\n (s) => e.segments.some(\n (i) => K(s, i).count > 0\n )\n ) : !1;\n }\n overlappingSegments(e) {\n return this.segments.flatMap((s) => e.segments.flatMap((i) => s.boundingBox.overlaps(i.boundingBox) ? K(s, i).overlaps : []));\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n let e = this.segments[0].boundingBox;\n this.segments.slice(1).forEach((s) => {\n e = e.merge(s.boundingBox);\n }), this._boundingBox = e;\n }\n return this._boundingBox;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return this.repr;\n }\n}\nfunction Ln(t, n = \"Stroke\") {\n Vt(t.length).forEach(\n ([e, s]) => {\n if (e === s) return;\n const i = t[e], o = t[s], r = K(i, o), l = Math.max(i.precision, o.precision);\n if (r.count !== 0) {\n if (r.count === 1 && !r.overlaps.length) {\n const c = e - s, a = r.intersections[0];\n if (c === 1 && g(i.firstPoint, a, l) || c === -1 && g(i.lastPoint, a, l) || c === t.length - 1 && g(i.lastPoint, a, l) && g(o.firstPoint, a, l) || -c === t.length - 1 && g(i.firstPoint, a, l) && g(o.lastPoint, a, l))\n return;\n }\n if (!(r.count === 2 && t.length === 2 && (g(\n i.firstPoint,\n r.intersections[0],\n l\n ) && g(\n i.lastPoint,\n r.intersections[1],\n l\n ) || g(\n i.firstPoint,\n r.intersections[1],\n l\n ) && g(\n i.lastPoint,\n r.intersections[0],\n l\n ))))\n throw new Error(\n `${n} segments must not intersect, but segments ${i.info} and ${o.info} do at ${JSON.stringify(\n r.intersections\n )}`\n );\n }\n }\n );\n}\nfunction Ut(t, n = \"Stroke\") {\n if (t.length === 0)\n throw new Error(`${n} must have at least one segment`);\n N([t.slice(0, -1), t.slice(1)]).forEach(\n ([e, s]) => {\n if (!g(e.lastPoint, s.firstPoint))\n throw new Error(\n `${n} segments must be connected, but ${e.info} and ${s.info} are not`\n );\n }\n ), Ln(t, n);\n}\nfunction bt(t, n) {\n return !!(t instanceof y && n instanceof y && un(t.V, n.V) || t instanceof S && n instanceof S && g(t.center, n.center) && t.radius - n.radius < t.precision);\n}\nfunction Ct(t, n) {\n if (t instanceof y && n instanceof y)\n return new y(t.firstPoint, n.lastPoint);\n if (t instanceof S && n instanceof S)\n return new S(\n t.firstPoint,\n n.lastPoint,\n t.center,\n t.clockwise\n );\n throw new Error(\"Not implemented\");\n}\nfunction jt(t) {\n let n = !1;\n const e = [];\n for (const s of t.segments) {\n if (e.length === 0) {\n e.push(s);\n continue;\n }\n const i = e[e.length - 1];\n bt(i, s) ? (n = !0, e.pop(), e.push(Ct(i, s))) : e.push(s);\n }\n if (g(t.firstPoint, t.lastPoint) && bt(\n e[0],\n e[e.length - 1]\n )) {\n n = !0;\n const s = e.pop();\n e[0] = Ct(s, e[0]);\n }\n return n ? e : null;\n}\nclass B extends Nt {\n constructor() {\n super(...arguments);\n C(this, \"strokeType\", \"STRAND\");\n }\n reverse() {\n const e = this.segments.map((s) => s.reverse());\n return e.reverse(), new B(e, { ignoreChecks: !0 });\n }\n clone() {\n return new B(\n this.segments.map((e) => e.clone()),\n { ignoreChecks: !0 }\n );\n }\n extend(e) {\n if (!g(this.lastPoint, e.firstPoint))\n throw console.error(this.repr, e.repr), new Error(\"Cannot extend strand: connection point is not the same\");\n return new B([...this.segments, ...e.segments]);\n }\n simplify() {\n const e = jt(this);\n return e ? new B(e, { ignoreChecks: !0 }) : this;\n }\n transform(e) {\n return new B(\n this.segments.map((s) => s.transform(e)),\n { ignoreChecks: !0 }\n );\n }\n}\nconst zn = (t, n) => {\n const e = an(n, {\n V: [1, 0],\n firstPoint: t,\n precision: n.precision\n });\n if (e === \"parallel\")\n return 0;\n const { intersectionParam1: s, intersectionParam2: i } = e;\n if (!n.isValidParameter(s) || i <= -n.precision) return 0;\n if (Math.abs(s) < n.precision || Math.abs(s - 1) < n.precision) {\n const [, o] = n.midPoint;\n return t[1] - o < 0 ? 1 : 0;\n }\n return 1;\n};\nclass ut {\n constructor(n) {\n C(this, \"_count\", 0);\n C(this, \"segment\");\n this.segment = n;\n }\n update(n, e = !1) {\n !e && !this.segment.isOnSegment(n) || (g(n, this.segment.firstPoint) ? this._count += this.segment.tangentAtFirstPoint[1] > 0 ? 1 : 0 : g(n, this.segment.lastPoint) ? this._count += this.segment.tangentAtLastPoint[1] > 0 ? 0 : 1 : this._count += 1);\n }\n get count() {\n return this._count;\n }\n}\nconst qn = (t, n) => {\n const e = n.precision, s = Math.abs(t[1] - n.center[1]);\n if (s > n.radius + e) return 0;\n const i = fn(t, n.center), o = n.radius * n.radius, r = e * e;\n if (Math.abs(i - o) < r && n.isOnSegment(t))\n return 0;\n const l = i - o > r;\n if (l && n.center[0] < t[0]) return 0;\n const c = Math.sqrt(\n n.radius * n.radius - s * s\n ), a = new ut(n);\n return a.update([n.center[0] + c, t[1]]), l && a.update([n.center[0] - c, t[1]]), a.count;\n}, Dn = (t, n) => {\n const e = n.boundingBox.xMax + n.boundingBox.width / 2, s = new y(t, [e, t[1]]), i = new ut(n);\n return et(s, n).forEach((o) => {\n i.update(o, !0);\n }), i.count;\n}, Rn = (t, n) => {\n const e = new ut(n);\n return n.paramsAtY(t[1]).map((s) => {\n try {\n return n.paramPoint(s);\n } catch {\n return null;\n }\n }).filter((s) => s !== null).filter((s) => {\n const [i] = s;\n return i >= t[0];\n }).forEach((s) => {\n e.update(s, !0);\n }), e.count;\n};\nfunction Vn(t, n) {\n if (n instanceof y)\n return zn(t, n);\n if (n instanceof S)\n return qn(t, n);\n if (n instanceof M)\n return Dn(t, n);\n if (n instanceof I || n instanceof A)\n return Rn(t, n);\n throw new Error(\"Not implemented\");\n}\nclass O extends Nt {\n constructor(e, { ignoreChecks: s = !1 } = {}) {\n super(e, { ignoreChecks: !0 });\n C(this, \"strokeType\", \"LOOP\");\n C(this, \"_clockwise\", null);\n s || Nn(e);\n }\n get clockwise() {\n if (this._clockwise === null) {\n const e = this.segments.flatMap((i) => i instanceof y ? [i.firstPoint] : [i.firstPoint, i.paramPoint(0.5)]), s = e.map((i, o) => {\n const r = e[(o + 1) % e.length];\n return (r[0] - i[0]) * (r[1] + i[1]);\n }).reduce((i, o) => i + o, 0);\n this._clockwise = s > 0;\n }\n return this._clockwise;\n }\n clone() {\n return new O(\n this.segments.map((e) => e.clone()),\n { ignoreChecks: !0 }\n );\n }\n reverse() {\n const e = this.segments.map((s) => s.reverse());\n return e.reverse(), new O(e, { ignoreChecks: !0 });\n }\n transform(e) {\n return new O(\n this.segments.map((s) => s.transform(e)),\n { ignoreChecks: !0 }\n );\n }\n contains(e) {\n return this.onStroke(e) || !this.boundingBox.contains(e) ? !1 : this.segments.reduce((i, o) => i + Vn(e, o), 0) % 2 === 1;\n }\n simplify() {\n const e = jt(this);\n return e ? new O(e, { ignoreChecks: !0 }) : this;\n }\n}\nfunction Nn(t) {\n if (Ut(t, \"Loop\"), !g(t[0].firstPoint, t[t.length - 1].lastPoint))\n throw new Error(\"Loop segment must be closed\");\n}\nconst Un = [\n y,\n S,\n M,\n A,\n I\n];\nfunction jn(t) {\n return Un.some((n) => t instanceof n);\n}\nfunction Ht(t) {\n if (t instanceof y)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint\n };\n if (t instanceof S)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n center: t.center,\n clockwise: t.clockwise\n };\n if (t instanceof M)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n center: t.center,\n clockwise: t.clockwise,\n majorRadius: t.majorRadius,\n minorRadius: t.minorRadius,\n tiltAngle: t.tiltAngle\n };\n if (t instanceof A)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n controlPoint: t.controlPoint\n };\n if (t instanceof I)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n firstControlPoint: t.firstControlPoint,\n lastControlPoint: t.lastControlPoint\n };\n throw new Error(\"Unknown segment type\");\n}\nfunction it(t) {\n return {\n type: \"LOOP\",\n segments: t.segments.map(Ht)\n };\n}\nfunction $t(t) {\n return {\n type: \"FIGURE\",\n contour: it(t.contour),\n holes: t.holes.map(it)\n };\n}\nfunction Hn(t) {\n return {\n type: \"DIAGRAM\",\n figures: t.figures.map($t)\n };\n}\nfunction Mt(t) {\n if (t instanceof _)\n return Hn(t);\n if (t instanceof v)\n return $t(t);\n if (t instanceof O)\n return it(t);\n if (jn(t))\n return Ht(t);\n throw new Error(\"Unknown shape type\");\n}\nclass $n {\n constructor() {\n this.ids = [], this.values = [], this.length = 0;\n }\n clear() {\n this.length = 0;\n }\n push(n, e) {\n let s = this.length++;\n for (; s > 0; ) {\n const i = s - 1 >> 1, o = this.values[i];\n if (e >= o) break;\n this.ids[s] = this.ids[i], this.values[s] = o, s = i;\n }\n this.ids[s] = n, this.values[s] = e;\n }\n pop() {\n if (this.length === 0) return;\n const n = this.ids[0];\n if (this.length--, this.length > 0) {\n const e = this.ids[0] = this.ids[this.length], s = this.values[0] = this.values[this.length], i = this.length >> 1;\n let o = 0;\n for (; o < i; ) {\n let r = (o << 1) + 1;\n const l = r + 1;\n let c = this.ids[r], a = this.values[r];\n const f = this.values[l];\n if (l < this.length && f < a && (r = l, c = this.ids[l], a = f), a >= s) break;\n this.ids[o] = c, this.values[o] = a, o = r;\n }\n this.ids[o] = e, this.values[o] = s;\n }\n return n;\n }\n peek() {\n if (this.length !== 0)\n return this.ids[0];\n }\n peekValue() {\n if (this.length !== 0)\n return this.values[0];\n }\n shrink() {\n this.ids.length = this.values.length = this.length;\n }\n}\nconst At = [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], nt = 3;\nclass at {\n /**\n * Recreate a Flatbush index from raw `ArrayBuffer` or `SharedArrayBuffer` data.\n * @param {ArrayBuffer | SharedArrayBuffer} data\n * @param {number} [byteOffset=0] byte offset to the start of the Flatbush buffer in the referenced ArrayBuffer.\n * @returns {Flatbush} index\n */\n static from(n, e = 0) {\n if (e % 8 !== 0)\n throw new Error(\"byteOffset must be 8-byte aligned.\");\n if (!n || n.byteLength === void 0 || n.buffer)\n throw new Error(\"Data must be an instance of ArrayBuffer or SharedArrayBuffer.\");\n const [s, i] = new Uint8Array(n, e + 0, 2);\n if (s !== 251)\n throw new Error(\"Data does not appear to be in a Flatbush format.\");\n const o = i >> 4;\n if (o !== nt)\n throw new Error(`Got v${o} data when expected v${nt}.`);\n const r = At[i & 15];\n if (!r)\n throw new Error(\"Unrecognized array type.\");\n const [l] = new Uint16Array(n, e + 2, 1), [c] = new Uint32Array(n, e + 4, 1);\n return new at(c, l, r, void 0, n, e);\n }\n /**\n * Create a Flatbush index that will hold a given number of items.\n * @param {number} numItems\n * @param {number} [nodeSize=16] Size of the tree node (16 by default).\n * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).\n * @param {ArrayBufferConstructor | SharedArrayBufferConstructor} [ArrayBufferType=ArrayBuffer] The array buffer type used to store data (`ArrayBuffer` by default).\n * @param {ArrayBuffer | SharedArrayBuffer} [data] (Only used internally)\n * @param {number} [byteOffset=0] (Only used internally)\n */\n constructor(n, e = 16, s = Float64Array, i = ArrayBuffer, o, r = 0) {\n if (n === void 0) throw new Error(\"Missing required argument: numItems.\");\n if (isNaN(n) || n <= 0) throw new Error(`Unexpected numItems value: ${n}.`);\n this.numItems = +n, this.nodeSize = Math.min(Math.max(+e, 2), 65535), this.byteOffset = r;\n let l = n, c = l;\n this._levelBounds = [l * 4];\n do\n l = Math.ceil(l / this.nodeSize), c += l, this._levelBounds.push(c * 4);\n while (l !== 1);\n this.ArrayType = s, this.IndexArrayType = c < 16384 ? Uint16Array : Uint32Array;\n const a = At.indexOf(this.ArrayType), f = c * 4 * this.ArrayType.BYTES_PER_ELEMENT;\n if (a < 0)\n throw new Error(`Unexpected typed array class: ${s}.`);\n o && o.byteLength !== void 0 && !o.buffer ? (this.data = o, this._boxes = new this.ArrayType(this.data, r + 8, c * 4), this._indices = new this.IndexArrayType(this.data, r + 8 + f, c), this._pos = c * 4, this.minX = this._boxes[this._pos - 4], this.minY = this._boxes[this._pos - 3], this.maxX = this._boxes[this._pos - 2], this.maxY = this._boxes[this._pos - 1]) : (this.data = new i(8 + f + c * this.IndexArrayType.BYTES_PER_ELEMENT), this._boxes = new this.ArrayType(this.data, 8, c * 4), this._indices = new this.IndexArrayType(this.data, 8 + f, c), this._pos = 0, this.minX = 1 / 0, this.minY = 1 / 0, this.maxX = -1 / 0, this.maxY = -1 / 0, new Uint8Array(this.data, 0, 2).set([251, (nt << 4) + a]), new Uint16Array(this.data, 2, 1)[0] = e, new Uint32Array(this.data, 4, 1)[0] = n), this._queue = new $n();\n }\n /**\n * Add a given rectangle to the index.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @returns {number} A zero-based, incremental number that represents the newly added rectangle.\n */\n add(n, e, s = n, i = e) {\n const o = this._pos >> 2, r = this._boxes;\n return this._indices[o] = o, r[this._pos++] = n, r[this._pos++] = e, r[this._pos++] = s, r[this._pos++] = i, n < this.minX && (this.minX = n), e < this.minY && (this.minY = e), s > this.maxX && (this.maxX = s), i > this.maxY && (this.maxY = i), o;\n }\n /** Perform indexing of the added rectangles. */\n finish() {\n if (this._pos >> 2 !== this.numItems)\n throw new Error(`Added ${this._pos >> 2} items when expected ${this.numItems}.`);\n const n = this._boxes;\n if (this.numItems <= this.nodeSize) {\n n[this._pos++] = this.minX, n[this._pos++] = this.minY, n[this._pos++] = this.maxX, n[this._pos++] = this.maxY;\n return;\n }\n const e = this.maxX - this.minX || 1, s = this.maxY - this.minY || 1, i = new Uint32Array(this.numItems), o = 65535;\n for (let r = 0, l = 0; r < this.numItems; r++) {\n const c = n[l++], a = n[l++], f = n[l++], u = n[l++], h = Math.floor(o * ((c + f) / 2 - this.minX) / e), p = Math.floor(o * ((a + u) / 2 - this.minY) / s);\n i[r] = Xn(h, p);\n }\n ot(i, n, this._indices, 0, this.numItems - 1, this.nodeSize);\n for (let r = 0, l = 0; r < this._levelBounds.length - 1; r++) {\n const c = this._levelBounds[r];\n for (; l < c; ) {\n const a = l;\n let f = n[l++], u = n[l++], h = n[l++], p = n[l++];\n for (let d = 1; d < this.nodeSize && l < c; d++)\n f = Math.min(f, n[l++]), u = Math.min(u, n[l++]), h = Math.max(h, n[l++]), p = Math.max(p, n[l++]);\n this._indices[this._pos >> 2] = a, n[this._pos++] = f, n[this._pos++] = u, n[this._pos++] = h, n[this._pos++] = p;\n }\n }\n }\n /**\n * Search the index by a bounding box.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @param {(index: number) => boolean} [filterFn] An optional function for filtering the results.\n * @returns {number[]} An array of indices of items intersecting or touching the given bounding box.\n */\n search(n, e, s, i, o) {\n if (this._pos !== this._boxes.length)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n let r = this._boxes.length - 4;\n const l = [], c = [];\n for (; r !== void 0; ) {\n const a = Math.min(r + this.nodeSize * 4, Et(r, this._levelBounds));\n for (let f = r; f < a; f += 4) {\n if (s < this._boxes[f] || i < this._boxes[f + 1] || n > this._boxes[f + 2] || e > this._boxes[f + 3]) continue;\n const u = this._indices[f >> 2] | 0;\n r >= this.numItems * 4 ? l.push(u) : (o === void 0 || o(u)) && c.push(u);\n }\n r = l.pop();\n }\n return c;\n }\n /**\n * Search items in order of distance from the given point.\n * @param {number} x\n * @param {number} y\n * @param {number} [maxResults=Infinity]\n * @param {number} [maxDistance=Infinity]\n * @param {(index: number) => boolean} [filterFn] An optional function for filtering the results.\n * @returns {number[]} An array of indices of items found.\n */\n neighbors(n, e, s = 1 / 0, i = 1 / 0, o) {\n if (this._pos !== this._boxes.length)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n let r = this._boxes.length - 4;\n const l = this._queue, c = [], a = i * i;\n t: for (; r !== void 0; ) {\n const f = Math.min(r + this.nodeSize * 4, Et(r, this._levelBounds));\n for (let u = r; u < f; u += 4) {\n const h = this._indices[u >> 2] | 0, p = It(n, this._boxes[u], this._boxes[u + 2]), d = It(e, this._boxes[u + 1], this._boxes[u + 3]), m = p * p + d * d;\n m > a || (r >= this.numItems * 4 ? l.push(h << 1, m) : (o === void 0 || o(h)) && l.push((h << 1) + 1, m));\n }\n for (; l.length && l.peek() & 1; )\n if (l.peekValue() > a || (c.push(l.pop() >> 1), c.length === s)) break t;\n r = l.length ? l.pop() >> 1 : void 0;\n }\n return l.clear(), c;\n }\n}\nfunction It(t, n, e) {\n return t < n ? n - t : t <= e ? 0 : t - e;\n}\nfunction Et(t, n) {\n let e = 0, s = n.length - 1;\n for (; e < s; ) {\n const i = e + s >> 1;\n n[i] > t ? s = i : e = i + 1;\n }\n return n[e];\n}\nfunction ot(t, n, e, s, i, o) {\n if (Math.floor(s / o) >= Math.floor(i / o)) return;\n const r = t[s + i >> 1];\n let l = s - 1, c = i + 1;\n for (; ; ) {\n do\n l++;\n while (t[l] < r);\n do\n c--;\n while (t[c] > r);\n if (l >= c) break;\n Yn(t, n, e, l, c);\n }\n ot(t, n, e, s, c, o), ot(t, n, e, c + 1, i, o);\n}\nfunction Yn(t, n, e, s, i) {\n const o = t[s];\n t[s] = t[i], t[i] = o;\n const r = 4 * s, l = 4 * i, c = n[r], a = n[r + 1], f = n[r + 2], u = n[r + 3];\n n[r] = n[l], n[r + 1] = n[l + 1], n[r + 2] = n[l + 2], n[r + 3] = n[l + 3], n[l] = c, n[l + 1] = a, n[l + 2] = f, n[l + 3] = u;\n const h = e[s];\n e[s] = e[i], e[i] = h;\n}\nfunction Xn(t, n) {\n let e = t ^ n, s = 65535 ^ e, i = 65535 ^ (t | n), o = t & (n ^ 65535), r = e | s >> 1, l = e >> 1 ^ e, c = i >> 1 ^ s & o >> 1 ^ i, a = e & i >> 1 ^ o >> 1 ^ o;\n e = r, s = l, i = c, o = a, r = e & e >> 2 ^ s & s >> 2, l = e & s >> 2 ^ s & (e ^ s) >> 2, c ^= e & i >> 2 ^ s & o >> 2, a ^= s & i >> 2 ^ (e ^ s) & o >> 2, e = r, s = l, i = c, o = a, r = e & e >> 4 ^ s & s >> 4, l = e & s >> 4 ^ s & (e ^ s) >> 4, c ^= e & i >> 4 ^ s & o >> 4, a ^= s & i >> 4 ^ (e ^ s) & o >> 4, e = r, s = l, i = c, o = a, c ^= e & i >> 8 ^ s & o >> 8, a ^= s & i >> 8 ^ (e ^ s) & o >> 8, e = c ^ c >> 1, s = a ^ a >> 1;\n let f = t ^ n, u = s | 65535 ^ (f | e);\n return f = (f | f << 8) & 16711935, f = (f | f << 4) & 252645135, f = (f | f << 2) & 858993459, f = (f | f << 1) & 1431655765, u = (u | u << 8) & 16711935, u = (u | u << 4) & 252645135, u = (u | u << 2) & 858993459, u = (u | u << 1) & 1431655765, (u << 1 | f) >>> 0;\n}\nfunction Yt(t, n = 1e-7) {\n if (t.length === 0) return [];\n if (t.length === 1) return [t];\n const e = new at(t.length);\n t.forEach((o) => {\n const [r, l] = o.firstPoint;\n e.add(r - n, l - n, r + n, l + n);\n }), e.finish();\n const s = [], i = /* @__PURE__ */ new Set();\n return t.forEach((o, r) => {\n if (i.has(r)) return;\n const l = [o];\n let c = r;\n i.add(r);\n let a = t.length;\n for (; ; ) {\n if (a-- < 0)\n throw new Error(\"Infinite loop detected\");\n const f = l[l.length - 1].lastPoint, [u, h] = f, p = e.search(\n u - n,\n h - n,\n u + n,\n h + n\n ), d = (x) => Math.abs((c - x) % t.length), m = p.filter((x) => !i.has(x)).map((x) => [\n t[x],\n x,\n d(x)\n ]).sort(([, , x], [, , F]) => d(x) - d(F));\n if (m.length === 0) {\n s.push(l);\n break;\n }\n const [P, w] = m[0];\n l.push(P), i.add(w), c = w;\n }\n }), s;\n}\nclass v extends lt {\n constructor(e, s = [], { ignoreChecks: i = !1 } = {}) {\n super();\n C(this, \"contour\");\n C(this, \"holes\");\n i || Gn(e, s), this.contour = e, this.holes = s;\n }\n get boundingBox() {\n return this.contour.boundingBox;\n }\n get isFull() {\n return this.holes.length === 0;\n }\n get allLoops() {\n return [this.contour, ...this.holes];\n }\n clone() {\n return new v(\n this.contour.clone(),\n this.holes.map((e) => e.clone())\n );\n }\n transform(e) {\n return new v(\n this.contour.transform(e),\n this.holes.map((s) => s.transform(e))\n );\n }\n contains(e) {\n return this.contour.contains(e) && !this.holes.some((s) => s.contains(e));\n }\n intersects(e) {\n return this.allLoops.some(\n (s) => e.allLoops.some((i) => s.intersects(i))\n );\n }\n overlappingStrands(e) {\n const s = e instanceof v ? e.allLoops : [e], i = this.allLoops.flatMap((o) => s.flatMap((r) => o.overlappingSegments(r)));\n return Yt(i).map((o) => new B(o));\n }\n}\nfunction Gn(t, n = []) {\n if (!t) throw new Error(\"Figure must have a contour\");\n for (const [e, s] of st([t, ...n]))\n if (e.intersects(s))\n throw new Error(\"Loops in a figure must not intersect\");\n if (n.some(\n (e) => !t.contains(e.firstPoint) && !t.onStroke(e.firstPoint)\n ))\n throw new Error(\"Holes must be inside the contour\");\n for (const [e, s] of st(n))\n if (e.contains(s.firstPoint))\n throw console.error(Mt(e), Mt(s)), new Error(\"Holes must not be inside other holes\");\n}\nconst Qn = (t) => {\n const n = t.map((i, o) => t.slice(o + 1).map((r, l) => [l + o + 1, r]).filter(([, r]) => i.boundingBox.overlaps(r.boundingBox)).map(([r]) => r)), e = [], s = Array(n.length);\n return n.forEach((i, o) => {\n let r = s[o];\n r || (r = [], e.push(r)), r.push(t[o]), i.length && i.forEach((l) => {\n s[l] = r;\n });\n }), e;\n}, Xt = (t) => t.map((n, e) => {\n const i = n.segments[0].midPoint, o = t.filter((r, l) => e === l ? !1 : r.contains(i));\n return {\n loop: n,\n isIn: o\n };\n}), Wn = (t, n) => t.flatMap(({ loop: e }) => ft(\n n.filter(\n ({ loop: s, isIn: i }) => s === e || i.indexOf(e) !== -1\n )\n)), Jn = (t, n) => {\n const e = n.filter(({ isIn: i }) => i.length <= 1), s = ft(\n Xt(t.map(({ loop: i }) => i))\n );\n return [e, ...s];\n}, ft = (t) => {\n if (!t.length) return [];\n const n = t.filter(({ isIn: s }) => !s.length), e = t.filter(({ isIn: s }) => s.length > 1);\n return n.length === 1 && e.length === 0 ? [t] : n.length > 1 ? Wn(n, t) : Jn(e, t);\n};\nfunction X(t) {\n return Qn(t).map(Xt).flatMap(ft).map((e) => {\n if (e.length === 1) return new v(e[0].loop);\n e.sort((o, r) => o.isIn.length - r.isIn.length);\n const [s, ...i] = e.map(({ loop: o }) => o);\n return new v(s, i);\n });\n}\nfunction Kn(t, n) {\n const e = [];\n for (const s of t)\n for (const i of n)\n e.push([s, i]);\n return e;\n}\nfunction* Ft(t, n, e) {\n const s = (r) => n.some((l) => g(l, r.lastPoint)), i = (r) => e.some((l) => r.isSame(l));\n let o = [];\n for (const r of t)\n s(r) ? (o.push(r), yield new B(o, { ignoreChecks: !0 }), o = []) : i(r) ? (o.length && (yield new B(o, { ignoreChecks: !0 }), o = []), yield new B([r], { ignoreChecks: !0 })) : o.push(r);\n o.length && (yield new B(o, { ignoreChecks: !0 }));\n}\nconst vt = (t, n) => {\n const e = t.findIndex((o) => g(n, o.firstPoint)), s = t.slice(0, e);\n return t.slice(e).concat(s);\n}, Bt = (t, n) => {\n let e = t;\n const s = (l) => g(l.firstPoint, n.firstPoint) && g(l.lastPoint, n.lastPoint);\n let i = t.findIndex(s);\n if (i === -1) {\n const l = t.map((c) => c.reverse());\n if (l.reverse(), i = l.findIndex(s), i === -1)\n throw console.error(\n l.map((c) => c.repr),\n n.repr\n ), new Error(\"Failed to rotate to segment start\");\n e = l;\n }\n const o = e.slice(0, i);\n return e.slice(i).concat(o);\n};\nfunction Zn(t, n, e) {\n return t.filter((s) => {\n const i = n.filter((l) => g(l.firstPoint, s) || g(l.lastPoint, s));\n if (i.length % 2)\n throw new Error(\"Bug in the intersection algo on non crossing point\");\n const o = i.map((l) => e.contains(l.midPoint));\n return !(o.every((l) => l) || !o.some((l) => l));\n });\n}\nfunction te(t, n, e) {\n let s = [];\n const i = [], o = new Array(t.segments.length).fill(0).map(() => []), r = new Array(n.segments.length).fill(0).map(() => []);\n if (t.segments.forEach((h, p) => {\n n.segments.forEach((d, m) => {\n const { intersections: P, overlaps: w } = K(\n h,\n d,\n e\n );\n s.push(...P), o[p].push(...P), r[m].push(...P), i.push(...w);\n const x = w.flatMap((F) => [\n F.firstPoint,\n F.lastPoint\n ]);\n s.push(...x), o[p].push(...x), r[m].push(...x);\n });\n }), s = U(s, e), !s.length || s.length === 1) return null;\n const l = ([h, p]) => p.length ? h.splitAt(p) : [h];\n let c = N([t.segments, o]).flatMap(l), a = N([n.segments, r]).flatMap(l);\n if (s = Zn(\n s,\n c,\n n\n ), !s.length && !i.length) return null;\n if (i.length) {\n const h = i[0];\n c = Bt(\n c,\n h\n ), a = Bt(\n a,\n h\n );\n } else {\n const h = s[0];\n c = vt(c, h), a = vt(a, h);\n }\n let f = Array.from(\n Ft(\n c,\n s,\n i\n )\n ), u = Array.from(\n Ft(\n a,\n s,\n i\n )\n );\n return (!g(\n u[0].lastPoint,\n f[0].lastPoint\n ) || i.length > 0 && u[0].segmentsCount !== 1) && (u = u.map((h) => h.reverse()).reverse(), g(u[0].lastPoint, f[0].lastPoint) || (f = f.map((h) => h.reverse()).reverse())), N([f, u]).map(([h, p]) => h.segmentsCount === 1 && i.some((d) => h.segments[0].isSame(d)) ? [h, \"same\"] : [h, p]);\n}\nfunction kt(t) {\n let n = t[0];\n for (const e of t.slice(1))\n n = n.extend(e);\n if (!g(n.firstPoint, n.lastPoint))\n throw console.error(\n dt(n.firstPoint),\n dt(n.lastPoint)\n ), new Error(\"Bug in the intersection algo on non closing strand\");\n return new O(n.segments);\n}\nfunction ne(t, n) {\n const e = N([\n n.slice(0, -1),\n n.slice(1)\n ]).map(([i, o]) => kt(t.slice(i, o)));\n let s = t.slice(\n n[n.length - 1]\n );\n return n[0] !== 0 && (s = s.concat(t.slice(0, n[0]))), e.push(kt(s)), e;\n}\nfunction ee(t) {\n if (!t.length) return [];\n const n = t.map((i) => i.firstPoint);\n let e = t.map((i) => i.lastPoint);\n e = e.slice(-1).concat(e.slice(0, -1));\n const s = N([n, e]).flatMap(\n ([i, o], r) => g(i, o) ? [] : r\n );\n try {\n return ne(t, s);\n } catch {\n return Yt(t.flatMap((o) => o.segments)).filter((o) => o.length > 1).filter((o) => g(o[0].firstPoint, o.at(-1).lastPoint)).map((o) => new O(o));\n }\n}\nconst _t = (t, n) => {\n if (t.length === 0) return [n];\n const e = t.at(-1);\n return g(e.lastPoint, n.firstPoint) ? t.slice(0, -1).concat([e.extend(n)]) : g(e.lastPoint, n.lastPoint) ? t.slice(0, -1).concat([e.extend(n.reverse())]) : t.concat([n]);\n}, se = (t, n) => t.length === 0 ? [n] : g(t[0].firstPoint, n.lastPoint) ? [n.extend(t[0])].concat(t.slice(1)) : [n].concat(t);\nfunction ht(t, n, {\n firstInside: e,\n secondInside: s\n}) {\n const i = te(t, n);\n if (!i) {\n const c = t.segments[0].midPoint, a = n.contains(c), f = n.segments[0].midPoint, u = t.contains(f);\n return {\n identical: !1,\n firstCurveInSecond: a,\n secondCurveInFirst: u\n };\n }\n if (i.every(([, c]) => c === \"same\"))\n return { identical: !0 };\n let o = null, r = null;\n const l = i.flatMap(([c, a]) => {\n let f = [], u = 0;\n if (a === \"same\")\n return r === 1 ? (r = 1, c) : r === 2 || r === 0 ? (r = null, []) : r === null ? (o ? o = o.extend(c) : o = c, []) : (console.error(\"weird situation\"), []);\n const h = c.segments[0].midPoint, p = n.contains(h);\n (e === \"keep\" && p || e === \"remove\" && !p) && (u += 1, f = _t(f, c));\n const d = a.segments[0].midPoint, m = t.contains(d);\n if (s === \"keep\" && m || s === \"remove\" && !m) {\n const P = a;\n u += 1, u === 2 && f.length ? (f = _t(f, P), o = null) : f = [P];\n }\n return r === null && u === 1 && o && (f = se(f, o)), u === 1 && (r = u, o = null), f.length ? f : (o = null, []);\n });\n return ee(l);\n}\nconst ie = (t, n) => {\n const e = ht(t, n, {\n firstInside: \"remove\",\n secondInside: \"remove\"\n });\n return Array.isArray(e) ? e : e.identical ? [t] : e.firstCurveInSecond ? [n] : e.secondCurveInFirst ? [t] : [t, n];\n}, Z = (t, n) => {\n const e = ht(t, n, {\n firstInside: \"remove\",\n secondInside: \"keep\"\n });\n return Array.isArray(e) ? e : e.identical ? [] : e.firstCurveInSecond ? [] : e.secondCurveInFirst ? [t, n] : [t];\n}, pt = (t, n) => {\n const e = ht(t, n, {\n firstInside: \"keep\",\n secondInside: \"keep\"\n });\n return Array.isArray(e) ? e : e.identical ? [t] : e.firstCurveInSecond ? [t] : e.secondCurveInFirst ? [n] : [];\n};\nfunction oe(t) {\n const n = /* @__PURE__ */ new Map(), e = [];\n return t.forEach((s, i) => {\n let o;\n n.has(i) ? o = n.get(i) : (o = { current: [s], fusedWith: /* @__PURE__ */ new Set([i]) }, e.push(o)), t.slice(i + 1).forEach((r, l) => {\n const c = o.current, a = i + l + 1;\n if (o.fusedWith.has(a)) return;\n let f = [r], u = !1;\n if (n.has(a) && (f = n.get(a).current, u = !0), !c.some(\n (d) => f.some((m) => d.intersects(m))\n )) return;\n let p;\n c.length > 1 || f.length > 1 ? p = G(c, f) : p = Gt(c[0], f[0]), o.fusedWith.add(a), o.current = p, u || n.set(a, o);\n });\n }), e.flatMap(({ current: s }) => s);\n}\nfunction Gt(t, n) {\n const e = ie(t.contour, n.contour), s = n.holes.flatMap((r) => Z(r, t.contour)), i = t.holes.flatMap((r) => Z(r, n.contour)), o = Kn(t.holes, n.holes).flatMap(\n ([r, l]) => pt(r, l)\n );\n return X([\n ...e,\n ...s,\n ...i,\n ...o\n ]);\n}\nfunction tt(t, n) {\n if (t.isFull && n.isFull)\n return X(Z(t.contour, n.contour));\n if (t.isFull) {\n const s = Z(t.contour, n.contour), i = n.holes.flatMap(\n (o) => pt(o, t.contour)\n );\n return X([...s, ...i]);\n } else if (n.isFull && !t.contour.intersects(n.contour))\n if (t.contour.contains(n.contour.firstPoint)) {\n const s = G(\n t.holes.map((i) => new v(i)),\n [n]\n );\n return X([\n t.contour,\n ...s.flatMap((i) => i.allLoops)\n ]);\n } else\n return [t];\n let e = tt(new v(t.contour), n);\n return t.holes.forEach((s) => {\n e = e.flatMap((i) => tt(i, new v(s)));\n }), e;\n}\nfunction re(t, n) {\n const e = pt(t.contour, n.contour);\n if (!e.length) return [];\n let s = X(e);\n return s = Q(\n s,\n t.holes.map((i) => new v(i))\n ), Q(\n s,\n n.holes.map((i) => new v(i))\n );\n}\nfunction G(t, n) {\n if (!t.length) return n;\n if (!n.length) return t;\n if (t.length === 1 && n.length > 1 || n.length === 1 && t.length > 1)\n return oe([...t, ...n]);\n if (t.length > 1 && n.length > 1) {\n let e = G([t[0]], n);\n return t.slice(1).forEach((s) => {\n e = G([s], e);\n }), e;\n }\n return t.length === 1 && n.length === 1 ? Gt(t[0], n[0]) : [];\n}\nfunction Q(t, n) {\n if (!t.length) return [];\n if (!n.length) return t;\n if (t.length === 1 && n.length === 1)\n return tt(t[0], n[0]);\n if (t.length > 1)\n return t.flatMap((s) => Q([s], n));\n let e = tt(t[0], n[0]);\n return n.slice(1).forEach((s) => {\n e = Q(e, [s]);\n }), e;\n}\nfunction rt(t, n) {\n return !t.length || !n.length ? [] : t.length === 1 && n.length === 1 ? re(t[0], n[0]) : t.length > 1 ? t.flatMap((e) => rt([e], n)) : n.flatMap((e) => rt(t, [e]));\n}\nclass _ extends lt {\n constructor(e = [], { ignoreChecks: s = !1 } = {}) {\n super();\n C(this, \"figures\");\n C(this, \"_boundingBox\", null);\n s || le(e), this.figures = e;\n }\n get isEmpty() {\n return this.figures.length === 0;\n }\n get boundingBox() {\n if (this.isEmpty) return new hn();\n if (this._boundingBox === null) {\n let e = this.figures[0].boundingBox;\n for (const s of this.figures.slice(1))\n e = e.merge(s.boundingBox);\n this._boundingBox = e;\n }\n return this._boundingBox;\n }\n clone() {\n return new _(this.figures.map((e) => e.clone()));\n }\n transform(e) {\n return new _(this.figures.map((s) => s.transform(e)));\n }\n contains(e) {\n return this.figures.some((s) => s.contains(e));\n }\n intersects(e) {\n return this.figures.some(\n (s) => e.figures.some((i) => s.intersects(i))\n );\n }\n overlappingStrands(e) {\n return this.figures.flatMap((s) => e instanceof _ ? e.figures.flatMap(\n (i) => s.overlappingStrands(i)\n ) : s.overlappingStrands(e));\n }\n fuse(e) {\n return new _(G(this.figures, e.figures));\n }\n cut(e) {\n return new _(Q(this.figures, e.figures));\n }\n intersect(e) {\n return new _(rt(this.figures, e.figures));\n }\n}\nfunction le(t) {\n for (const [n, e] of st(t))\n if (n.intersects(e))\n throw new Error(\"Diagram figures must not intersect\");\n}\nexport {\n _ as D,\n v as F,\n O as L,\n B as S,\n K as a,\n G as b,\n Q as c,\n qt as d,\n Yt as e,\n ae as f,\n jn as g,\n Mt as h,\n rt as i,\n J as l,\n pn as p,\n Ft as s\n};\n//# sourceMappingURL=models-zEMLdtLw.js.map\n","var W = Object.defineProperty;\nvar q = (e, t, n) => t in e ? W(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;\nvar m = (e, t, n) => q(e, typeof t != \"symbol\" ? t + \"\" : t, n);\nimport { a as l, s as u, c as x, b as P, L as d, A as R, Q as w, C as D, p as E, d as G, e as T, t as k, f as Q, g as L, h as j, i as $, j as H, R as J, T as K, k as A, n as F, D as C } from \"./QuadraticBezier-DxieHk9z.js\";\nimport { f as U, S as X, D as Z, F as tt, L as nt } from \"./models-zEMLdtLw.js\";\nconst B = (e, t, n) => {\n const r = x(e.V, t.V), i = e.precision * t.precision;\n if (r * r < i)\n return \"parallel\";\n const s = P(t.firstPoint, e.firstPoint), o = x(s, t.V) / r;\n return l(e.firstPoint, u(e.V, o));\n};\nclass S {\n constructor(t, n) {\n this.firstPoint = t, this.lastPoint = n;\n }\n}\nfunction y(e, t) {\n if (e instanceof d)\n return et(e, t);\n if (e instanceof R)\n return rt(e, t);\n if (e instanceof w || e instanceof D)\n return it(e, t);\n throw new Error(\"Not implemented\");\n}\nfunction et(e, t) {\n const { firstPoint: n, lastPoint: r } = e, i = e.normalVector;\n return new d(\n l(n, u(i, t)),\n l(r, u(i, t))\n );\n}\nfunction rt(e, t) {\n const n = l(\n e.firstPoint,\n u(E(e.tangentAtFirstPoint), t)\n ), r = l(\n e.lastPoint,\n u(E(e.tangentAtLastPoint), t)\n ), i = t * (e.clockwise ? 1 : -1);\n return e.radius + i < e.precision ? new S(n, r) : new R(n, r, e.center, e.clockwise);\n}\nfunction b(e, t, n, r, i) {\n const s = B(\n {\n V: n,\n firstPoint: r,\n precision: i\n },\n {\n V: P(t, e),\n firstPoint: e,\n precision: i\n }\n );\n if (s === \"parallel\")\n throw new Error(\n \"Parallel lines not expected in safe bezier offset control point calculation\"\n );\n return s;\n}\nfunction it(e, t) {\n const { firstPoint: n, lastPoint: r, normalAtFirstPoint: i, normalAtLastPoint: s } = e, o = B(\n { V: i, firstPoint: n, precision: e.precision },\n { V: s, firstPoint: r, precision: e.precision }\n ), a = l(\n n,\n u(i, t)\n ), h = l(\n r,\n u(s, t)\n );\n if (o === \"parallel\")\n throw new Error(\"Parallel lines not expected in safe bezier offset\");\n if (G(P(o, n), i) * t > 0 && Math.min(\n T(n, o),\n T(r, o)\n ) < t)\n return new S(a, h);\n if (e instanceof w) {\n const g = b(\n o,\n e.controlPoint,\n e.tangentAtFirstPoint,\n a,\n e.precision\n );\n return new w(\n a,\n h,\n g\n );\n }\n const p = b(\n o,\n e.firstControlPoint,\n e.tangentAtFirstPoint,\n a,\n e.precision\n ), f = b(\n o,\n e.lastControlPoint,\n e.tangentAtLastPoint,\n h,\n e.precision\n );\n return new D(\n a,\n h,\n p,\n f\n );\n}\nfunction M(e, t, n) {\n const r = x(\n e.tangentAtLastPoint,\n t.tangentAtFirstPoint\n );\n if (Math.abs(r) < 1e-10) return null;\n const i = r > 0 ? 1 : -1, s = Math.abs(n) * i, o = y(e, s), a = y(t, s);\n if (o instanceof S || a instanceof S)\n return null;\n let h;\n try {\n h = U(o, a, 1e-9).at(-1);\n } catch {\n return null;\n }\n if (!h)\n return null;\n const c = h, p = (v, O) => {\n const I = O.tangentAt(c), N = Q(I), Y = l(c, u(N, s));\n return v.splitAt(Y);\n }, [f] = p(e, o), [, g] = p(t, a);\n return { first: f, second: g, center: c };\n}\nfunction V(e, t, n) {\n const r = M(e, t, n);\n if (!r)\n return console.warn(\n \"Cannot fillet between segments\",\n e.repr,\n t.repr\n ), [e, t];\n const { first: i, second: s } = r;\n return [\n i,\n k(i.lastPoint, s.firstPoint, i.tangentAtLastPoint),\n s\n ];\n}\nfunction _(e, t, n) {\n const r = M(e, t, n);\n if (!r)\n return console.warn(\n \"Cannot chamfer between segments\",\n e.repr,\n t.repr\n ), [e, t];\n const { first: i, second: s } = r;\n return [i, new d(i.lastPoint, s.firstPoint), s];\n}\nconst st = (e) => {\n let t;\n e ? typeof e == \"number\" || Array.isArray(e) && e.length === 2 ? t = { endTangent: e } : t = { endTangent: 0, ...e } : t = { endTangent: [1, 0] };\n const {\n endTangent: n,\n startFactor: r = 1,\n endFactor: i = 1,\n startTangent: s\n } = t;\n let o;\n typeof n == \"number\" ? o = A(1, n * C) : o = n;\n let a;\n return typeof s == \"number\" ? a = A(1, s * C) : a = s, { endTangent: o, startFactor: r, endFactor: i, startTangent: a };\n};\nfunction z(e, { ignoreChecks: t = !1 } = {}) {\n return new Z([new tt(new nt([...e], { ignoreChecks: t }))]);\n}\nclass ot {\n constructor(t = [0, 0]) {\n m(this, \"pointer\");\n m(this, \"firstPoint\");\n m(this, \"pendingSegments\");\n m(this, \"_nextCorner\");\n this.pointer = t, this.firstPoint = t, this.pendingSegments = [], this._nextCorner = null;\n }\n movePointerTo(t) {\n if (this.pendingSegments.length)\n throw new Error(\n \"You can only move the pointer if there is no segment defined\"\n );\n return this.pointer = t, this.firstPoint = t, this;\n }\n saveSegment(t) {\n if (L(t.firstPoint, t.lastPoint))\n throw new Error(`Segment has no length, ${t.repr}`);\n if (!this._nextCorner)\n return this.pendingSegments.push(t), this;\n const n = this.pendingSegments.pop();\n if (!n) throw new Error(\"bug in the custom corner algorithm\");\n const r = this._nextCorner.mode === \"chamfer\" ? _ : V;\n return this.pendingSegments.push(\n ...r(n, t, this._nextCorner.radius)\n ), this._nextCorner = null, this;\n }\n lineTo(t) {\n const n = new d(this.pointer, t);\n return this.pointer = t, this.saveSegment(n);\n }\n line(t, n) {\n return this.lineTo([this.pointer[0] + t, this.pointer[1] + n]);\n }\n vLine(t) {\n return this.line(0, t);\n }\n hLine(t) {\n return this.line(t, 0);\n }\n vLineTo(t) {\n return this.lineTo([this.pointer[0], t]);\n }\n hLineTo(t) {\n return this.lineTo([t, this.pointer[1]]);\n }\n polarLineTo([t, n]) {\n const r = n * C, i = A(t, r);\n return this.lineTo(i);\n }\n polarLine(t, n) {\n const r = n * C, [i, s] = A(t, r);\n return this.line(i, s);\n }\n tangentLine(t) {\n const n = this.pendingSegments.at(-1);\n if (!n)\n throw new Error(\"You need a previous segment to sketch a tangent line\");\n const [r, i] = n.tangentAtLastPoint;\n return this.line(r * t, i * t);\n }\n threePointsArcTo(t, n) {\n return this.saveSegment(j(this.pointer, n, t)), this.pointer = t, this;\n }\n threePointsArc(t, n, r, i) {\n const [s, o] = this.pointer;\n return this.threePointsArcTo(\n [s + t, o + n],\n [s + r, o + i]\n );\n }\n sagittaArcTo(t, n) {\n if (!n) return this.lineTo(t);\n const r = new d(this.pointer, t), i = E(r.tangentAtFirstPoint), s = l(r.midPoint, u(i, n));\n return this.threePointsArcTo(t, s);\n }\n sagittaArc(t, n, r) {\n return this.sagittaArcTo(\n [t + this.pointer[0], n + this.pointer[1]],\n r\n );\n }\n vSagittaArc(t, n) {\n return this.sagittaArc(0, t, n);\n }\n hSagittaArc(t, n) {\n return this.sagittaArc(t, 0, n);\n }\n bulgeArcTo(t, n) {\n if (!n) return this.lineTo(t);\n const r = T(this.pointer, t) / 2, i = -n * r;\n return this.sagittaArcTo(t, i);\n }\n bulgeArc(t, n, r) {\n return this.bulgeArcTo(\n [t + this.pointer[0], n + this.pointer[1]],\n r\n );\n }\n vBulgeArc(t, n) {\n return this.bulgeArc(0, t, n);\n }\n hBulgeArc(t, n) {\n return this.bulgeArc(t, 0, n);\n }\n tangentArcTo(t, n) {\n const r = this.pendingSegments.at(-1);\n if (!r)\n throw new Error(\"You need a previous curve to sketch a tangent arc\");\n return this.saveSegment(\n k(\n this.pointer,\n t,\n n ?? r.tangentAtLastPoint\n )\n ), this.pointer = t, this;\n }\n tangentArc(t, n, r) {\n const [i, s] = this.pointer;\n return this.tangentArcTo([t + i, n + s], r);\n }\n ellipseTo(t, n, r, i, s, o) {\n return this.saveSegment(\n $(this.pointer, t, n, r, i, s, o)\n ), this.pointer = t, this;\n }\n ellipse(t, n, r, i, s, o, a) {\n return this.ellipseTo(\n [t + this.pointer[0], n + this.pointer[1]],\n r,\n i,\n s,\n o,\n a\n );\n }\n halfEllipseTo(t, n) {\n const [r, i] = H(P(t, this.pointer));\n return this.ellipseTo(\n t,\n r / 2,\n Math.abs(n),\n i * J,\n !0,\n n > 0\n );\n }\n halfEllipse(t, n, r) {\n return this.halfEllipseTo(\n [t + this.pointer[0], n + this.pointer[1]],\n r\n );\n }\n cubicBezierCurveTo(t, n, r) {\n return this.saveSegment(\n new D(this.pointer, t, n, r)\n ), this.pointer = t, this;\n }\n quadraticBezierCurveTo(t, n) {\n return this.saveSegment(new w(this.pointer, t, n)), this.pointer = t, this;\n }\n smoothCurveTo(t, n) {\n const { endTangent: r, startTangent: i, startFactor: s, endFactor: o } = st(n), a = this.pendingSegments.length ? this.pendingSegments[this.pendingSegments.length - 1] : null, h = T(this.pointer, t) / 3;\n let c;\n i ? c = i : a ? c = a.tangentAtLastPoint : c = [1, 0], c = F(c);\n const p = [\n this.pointer[0] + c[0] * s * h,\n this.pointer[1] + c[1] * s * h\n ];\n let f = r;\n f = F(f);\n const g = [\n t[0] - f[0] * o * h,\n t[1] - f[1] * o * h\n ];\n return this.cubicBezierCurveTo(t, p, g);\n }\n smoothCurve(t, n, r) {\n return this.smoothCurveTo(\n [t + this.pointer[0], n + this.pointer[1]],\n r\n );\n }\n customCorner(t, n = \"fillet\") {\n if (!this.pendingSegments.length)\n throw new Error(\"You need a segment defined to fillet the angle\");\n return t ? (this._nextCorner = { mode: n, radius: t }, this) : this;\n }\n _customCornerLastWithFirst(t, n = \"fillet\") {\n if (!t) return;\n const r = this.pendingSegments.pop(), i = this.pendingSegments.shift();\n if (!r || !i)\n throw new Error(\"Not enough curves to close and fillet\");\n const s = n === \"chamfer\" ? _ : V;\n this.pendingSegments.push(...s(r, i, t));\n }\n close(t = !1) {\n if (!this.pendingSegments.length) throw new Error(\"No segments to close\");\n const n = this.pendingSegments[0], r = this.pendingSegments.at(-1);\n return L(n.firstPoint, r.lastPoint) || this.lineTo(n.firstPoint), this._nextCorner !== null && (this._customCornerLastWithFirst(\n this._nextCorner.radius,\n this._nextCorner.mode\n ), this._nextCorner = null), z(this.pendingSegments, { ignoreChecks: t });\n }\n closeWithMirror(t = !1) {\n if (!this.pendingSegments.length) throw new Error(\"No segments to close\");\n const n = this.pendingSegments[0], r = this.pendingSegments.at(-1), i = P(\n r.lastPoint,\n n.firstPoint\n ), s = new K().mirrorLine(\n i,\n n.firstPoint\n ), o = this.pendingSegments.map(\n (a) => a.transform(s).reverse()\n );\n return o.reverse(), z(\n [...this.pendingSegments, ...o],\n { ignoreChecks: t }\n );\n }\n asStrand() {\n return new X([...this.pendingSegments]);\n }\n get isClosed() {\n var t;\n return L(this.pointer, (t = this.pendingSegments[0]) == null ? void 0 : t.firstPoint);\n }\n}\nfunction lt(e = [0, 0]) {\n return new ot(e);\n}\nexport {\n S as D,\n lt as d,\n V as f,\n y as o\n};\n//# sourceMappingURL=draw-yb7FrCL_.js.map\n","import { L as $, A as f, E as l, R as u, Q as e, C as h } from \"./QuadraticBezier-DxieHk9z.js\";\nfunction i([t, n]) {\n return `${t} ${n}`;\n}\nfunction s(t) {\n if (t instanceof $)\n return `L ${i(t.lastPoint)}`;\n if (t instanceof f)\n return `A ${t.radius} ${t.radius} 0 ${t.angularLength > Math.PI ? \"1\" : \"0\"} ${t.clockwise ? \"0\" : \"1\"} ${i(t.lastPoint)}`;\n if (t instanceof l)\n return `A ${t.majorRadius} ${t.minorRadius} ${t.tiltAngle * u} ${t.deltaAngle > Math.PI ? \"1\" : \"0\"} ${t.clockwise ? \"0\" : \"1\"} ${i(t.lastPoint)}`;\n if (t instanceof e)\n return `Q ${[\n i(t.controlPoint),\n i(t.lastPoint)\n ].join(\" \")}`;\n if (t instanceof h)\n return `C ${[\n i(t.firstControlPoint),\n i(t.lastControlPoint),\n i(t.lastPoint)\n ].join(\" \")}`;\n throw new Error(\"Unknown segment type\");\n}\nfunction w(t) {\n const n = `M ${t.firstPoint.join(\" \")}`, o = t.segments.map(s).join(\" \");\n return `${n} ${o} Z`;\n}\nfunction p(t) {\n return `<path d=\"${t.allLoops.map(w).join(\" \")}\" />`;\n}\nfunction d(t) {\n return `<g>\n ${t.figures.map(p).join(`\n`)}\n</g>`;\n}\nfunction j(t) {\n const n = `M ${t.firstPoint.join(\" \")}`, o = t.segments.map(s).join(\" \");\n return `${n} ${o}`;\n}\nfunction v(t, n = 1) {\n const o = t.xMin - n, r = t.yMin - n;\n return `${o} ${r} ${t.width + 2 * n} ${t.height + 2 * n}`;\n}\nfunction A(t, n, o = 1, r) {\n const a = v(n, o), c = r ? `width=\"${n.width + 2 * o}${r}\" height=\"${n.height + 2 * o}${r}\"` : \"\";\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${a}\" fill=\"none\" stroke=\"grey\" stroke-width=\"0.2%\" vector-effect=\"non-scaling-stroke\" ${c}>\n ${t}\n</svg>`;\n}\nexport {\n p as a,\n w as b,\n j as c,\n s as d,\n v as e,\n d as s,\n A as w\n};\n//# sourceMappingURL=svg-BIphc_zE.js.map\n","var yt = Object.defineProperty;\nvar Ct = (n, t, e) => t in n ? yt(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e;\nvar P = (n, t, e) => Ct(n, typeof t != \"symbol\" ? t + \"\" : t, e);\nimport { o as xt, D as U, f as lt } from \"./draw-yb7FrCL_.js\";\nimport { d as _n } from \"./draw-yb7FrCL_.js\";\nimport { F as m, L as w, D as h, a as N, s as Ot, b as Dt, c as Bt, i as Rt, S as y, l as zt, p as Tt, d as $t, e as ut, g as Gt } from \"./models-zEMLdtLw.js\";\nimport { h as Kn } from \"./models-zEMLdtLw.js\";\nimport { r as Ut, z as _t, l as Vt, e as b, n as ht, b as F, a as Kt, s as qt, m as Ht, o as gt, L as A, A as E, C as $, p as Y, q as V, d as Nt, T as Jt, g as I, E as pt, Q as dt, t as Qt, c as Xt, D as Yt, B as Zt } from \"./QuadraticBezier-DxieHk9z.js\";\nimport { s as Wt, a as jt, b as tn, c as nn, d as en, w as Z } from \"./svg-BIphc_zE.js\";\nfunction L(n) {\n if (n instanceof m)\n return [n];\n if (n instanceof w)\n return [new m(n)];\n if (n instanceof h)\n return n.figures;\n throw new Error(\"Unknown shape\");\n}\nfunction mt(n, t, e = 1e-9) {\n let s = [];\n const r = [], i = new Array(t.segments.length).fill(0).map(() => []);\n t.segments.forEach((a, f) => {\n n.segments.forEach((c) => {\n const { intersections: l, overlaps: p } = N(\n a,\n c,\n e\n );\n s.push(...l), i[f].push(...l), r.push(...p);\n const g = p.flatMap((d) => [\n d.firstPoint,\n d.lastPoint\n ]);\n s.push(...g), i[f].push(...g);\n });\n }), s = Ut(s, e);\n const o = _t([t.segments, i]).flatMap(([a, f]) => f.length ? a.splitAt(f) : [a]);\n return Array.from(\n Ot(\n o,\n s,\n r\n )\n );\n}\nfunction J(n, t, e = !1) {\n return mt(t, n).filter((r) => {\n const i = r.segments[0].midPoint;\n return t.onStroke(i) ? !e : !t.contains(i);\n });\n}\nfunction Q(n, t, e = !1) {\n return mt(t, n).filter((r) => {\n const i = r.segments[0].midPoint;\n return t.onStroke(i) ? !e : t.contains(i);\n });\n}\nfunction W(n, t, e = !1) {\n const s = J(\n n,\n t.contour,\n e\n ), r = t.holes.flatMap(\n (i) => Q(n, i, e)\n );\n return [...s, ...r];\n}\nfunction j(n, t, e = !1) {\n let s = Q(\n n,\n t.contour,\n e\n );\n return t.holes.forEach((r) => {\n s = s.flatMap(\n (i) => J(i, r, e)\n );\n }), s;\n}\nfunction sn(n, t) {\n return new h(\n Dt(L(n), L(t))\n );\n}\nfunction z(n) {\n return n.reduce(\n (t, e) => sn(t, e),\n new h()\n );\n}\nfunction Pt(n, t) {\n return new h(\n Bt(L(n), L(t))\n );\n}\nfunction yn(n, t) {\n return new h(\n Rt(L(n), L(t))\n );\n}\nfunction Cn(n, t, e = !0) {\n if (t instanceof w)\n return J(n, t, e);\n if (t instanceof m)\n return W(n, t, e);\n let s = [new y([...n.segments])];\n return t.figures.forEach((r) => {\n s = s.flatMap((i) => W(i, r, e));\n }), s;\n}\nfunction xn(n, t, e = !1) {\n if (t instanceof w)\n return Q(n, t, e);\n if (t instanceof m)\n return j(n, t, e);\n let s = [new y([...n.segments])];\n return t.figures.forEach((r) => {\n s = s.flatMap((i) => j(i, r, e));\n }), s;\n}\nfunction tt(n) {\n return n < 0 ? \"before\" : n > 1 ? \"after\" : \"between\";\n}\nconst nt = (n, t, e) => {\n if (e === \"before\")\n return n.distanceFrom(t.firstPoint);\n if (e === \"after\")\n return n.distanceFrom(t.lastPoint);\n throw new Error(\"Invalid position\");\n};\nfunction rn(n, t) {\n const e = Vt(n, t);\n if (e === \"parallel\")\n return Math.min(\n n.distanceFrom(t.firstPoint),\n n.distanceFrom(t.lastPoint)\n );\n const { intersectionParam1: s, intersectionParam2: r } = e, i = tt(s), o = tt(r);\n if (i === \"between\" && o === \"between\")\n return 0;\n if (i === \"between\" && o !== \"between\")\n return nt(n, t, o);\n if (o === \"between\" && i !== \"between\")\n return nt(t, n, i);\n if (i === \"before\" && o === \"before\")\n return b(n.firstPoint, t.firstPoint);\n if (i === \"after\" && o === \"after\")\n return b(n.lastPoint, t.lastPoint);\n if (i === \"before\" && o === \"after\")\n return b(n.firstPoint, t.lastPoint);\n if (i === \"after\" && o === \"before\")\n return b(n.lastPoint, t.firstPoint);\n throw new Error(\"Invalid position\");\n}\nfunction et(n, t) {\n if (zt(n, t).length > 0)\n return 0;\n const e = Tt(n, t.center);\n if (n.isOnSegment(e)) {\n const s = b(e, t.center);\n if (Math.abs(s - t.radius) < n.precision && t.isOnSegment(e))\n return 0;\n if (s - t.radius > n.precision) {\n const r = ht(\n F(e, t.center)\n ), i = Kt(\n t.center,\n qt(r, t.radius)\n );\n if (t.isOnSegment(i))\n return b(i, e);\n }\n }\n return Math.min(\n t.distanceFrom(n.firstPoint),\n t.distanceFrom(n.lastPoint),\n n.distanceFrom(t.firstPoint),\n n.distanceFrom(t.lastPoint)\n );\n}\nconst on = (n, t) => {\n const e = n.angleToParam(t.firstAngle);\n if (n.isValidParameter(e)) return !0;\n const s = n.angleToParam(t.lastAngle);\n return !!n.isValidParameter(s);\n};\nfunction an(n, t) {\n if ($t(n, t, !0).length > 0) return 0;\n const e = b(n.center, t.center);\n if (e < n.precision && on(n, t))\n return Math.abs(n.radius - t.radius);\n const s = ht(F(t.center, n.center)), r = e - Math.abs(n.radius - t.radius) < n.precision;\n let i = Ht(s);\n r && t.radius > n.radius && (i += Math.PI);\n const o = r ? i : i + Math.PI, a = n.angleToParam(i), f = t.angleToParam(o);\n return n.isValidParameter(a) && t.isValidParameter(f) ? b(n.paramPoint(a), t.paramPoint(f)) : Math.min(\n n.distanceFrom(t.firstPoint),\n n.distanceFrom(t.lastPoint),\n t.distanceFrom(n.firstPoint),\n t.distanceFrom(n.lastPoint)\n );\n}\nfunction cn(n, t, e) {\n let s = 0, r = n.length - 1;\n for (; s <= r; ) {\n const i = Math.floor((s + r) / 2), o = e(n[i], t);\n if (o < 0)\n s = i + 1;\n else if (o > 0)\n r = i - 1;\n else\n return i;\n }\n return -(s + 1);\n}\nfunction fn(n, t, e) {\n const s = cn(n, t, e);\n s < 0 ? n.splice(-(s + 1), 0, t) : n.splice(s, 0, t);\n}\nclass ln {\n constructor() {\n P(this, \"buckets\");\n this.buckets = [];\n }\n addInterval(t) {\n const e = this.buckets[t.rectangle.diagonalBucketIndex];\n e === void 0 ? this.buckets[t.rectangle.diagonalBucketIndex] = [t] : fn(e, t, (s, r) => s.value - r.value);\n }\n removeInterval(t) {\n const e = this.buckets[t.rectangle.diagonalBucketIndex];\n if (e === void 0)\n throw new Error(\"Interval not found\");\n e.shift();\n }\n getBottomRightHullIntervals() {\n const t = [];\n for (let e = this.buckets.length - 1; e >= 0; e--) {\n const s = this.buckets[e];\n if (!s === void 0) continue;\n const r = s[0];\n if (r !== void 0) {\n if (!t.length) {\n t.push(r);\n continue;\n }\n for (; t.length && t[t.length - 1].value >= r.value; )\n t.pop();\n for (; t.length >= 2; ) {\n const i = t[t.length - 1], o = t[t.length - 2], a = (r.value - o.value) / ((r.rectangle.diagonal - o.rectangle.diagonal) * 2);\n if (o.value + (i.rectangle.diagonal - o.rectangle.diagonal) / 2 * a < i.value)\n t.pop();\n else\n break;\n }\n t.push(r);\n }\n }\n return t;\n }\n}\nclass un {\n constructor(t, e) {\n P(this, \"diagonal\");\n P(this, \"diagonalBucketIndex\");\n P(this, \"xLength\");\n P(this, \"yLength\");\n P(this, \"index\");\n this.x = t, this.y = e, this.xLength = Math.pow(3, -t), this.yLength = Math.pow(3, -e), this.diagonal = Math.sqrt(\n this.xLength * this.xLength + this.yLength * this.yLength\n ), this.diagonalBucketIndex = t + e, this.index = `${t},${e}`;\n }\n}\nclass hn {\n constructor(t, e = 1e-8, s = 1e3, r = 1e-6) {\n P(this, \"rectangles\");\n P(this, \"buckets\");\n P(this, \"fMin\");\n P(this, \"argMin\");\n P(this, \"tol\");\n this.fcn = t, this.endTolerance = e, this.maxIterations = s, this.epsilon = r, this.fcn = t, this.epsilon = r, this.endTolerance = e, this.maxIterations = s, this.rectangles = /* @__PURE__ */ new Map(), this.buckets = new ln();\n const i = [0.5, 0.5], o = this.rect(0, 0), a = this.fcn(i);\n this.buckets.addInterval(new D(i, a, o)), this.fMin = a, this.argMin = i, this.tol = o.diagonal;\n }\n registerInterval(t) {\n this.buckets.addInterval(t), t.value <= this.fMin && (this.fMin = t.value, this.argMin = t.center, this.tol = t.rectangle.diagonal);\n }\n rect(t, e) {\n const s = `${t},${e}`;\n return this.rectangles.has(s) || this.rectangles.set(s, new un(t, e)), this.rectangles.get(s);\n }\n splitInterval(t) {\n let e, s, r;\n const [i, o] = t.center;\n return t.rectangle.x <= t.rectangle.y ? (e = this.rect(t.rectangle.x + 1, t.rectangle.y), s = [i - e.xLength, o], r = [i + e.xLength, o]) : (e = this.rect(t.rectangle.x, t.rectangle.y + 1), s = [i, o - e.yLength], r = [i, o + e.yLength]), [\n new D(s, this.fcn(s), e),\n new D(t.center, t.value, e),\n new D(r, this.fcn(r), e)\n ];\n }\n single_iteration() {\n const t = this.buckets.getBottomRightHullIntervals();\n for (; t.length >= 2; ) {\n const e = t[0], s = t[1], r = (s.value - e.value) / ((s.rectangle.diagonal - e.rectangle.diagonal) / 2), i = e.value - r * s.value / 2;\n if ((this.fMin - i) / Math.abs(this.fMin) < this.epsilon)\n t.shift();\n else\n break;\n }\n t.forEach((e) => {\n this.buckets.removeInterval(e);\n });\n for (const e of t) {\n const [s, r, i] = this.splitInterval(e);\n this.registerInterval(s), this.registerInterval(r), this.registerInterval(i);\n }\n }\n run() {\n let t = 0;\n for (; this.tol > this.endTolerance / 2 && (this.single_iteration(), t++, !(t > this.maxIterations)); )\n ;\n return {\n fMin: this.fMin,\n argMin: this.argMin,\n tol: this.tol,\n iterations: t\n };\n }\n}\nclass D {\n constructor(t, e, s) {\n this.center = t, this.value = e, this.rectangle = s;\n }\n}\nfunction gn(n, t = 1e-8, e = 1e3, s = 1e-6) {\n return new hn(\n n,\n t,\n e,\n s\n ).run();\n}\nfunction pn(n, t, e = 1e-9) {\n const s = gn((r) => {\n const i = n.paramPoint(r[0]), o = t.paramPoint(r[1]);\n return gt(i, o);\n }, e);\n return Math.sqrt(s.fMin);\n}\nfunction dn(n, t) {\n return n instanceof A && t instanceof A ? rn(n, t) : n instanceof A && t instanceof E ? et(n, t) : n instanceof E && t instanceof A ? et(t, n) : n instanceof E && t instanceof E ? an(n, t) : pn(n, t);\n}\nfunction wt(n) {\n if (n instanceof $) {\n const r = F(n.lastPoint, n.firstPoint), i = F(n.firstControlPoint, n.firstPoint), o = F(n.lastControlPoint, n.firstPoint), a = V(r, i), f = V(r, o);\n if (a > 0 && f < 0 || a < 0 && f > 0) return !1;\n }\n const t = Y(n.tangentAtFirstPoint), e = Y(n.tangentAtLastPoint);\n let s = Nt(t, e);\n return Math.abs(Math.acos(s)) < Math.PI / 3;\n}\nfunction K(n) {\n if (wt(n)) return [n];\n const [t, e] = n.splitAtParameters([0.5]);\n return [\n ...K(t),\n ...K(e)\n ];\n}\nfunction st(n) {\n return wt(n) ? [n] : n.splitAtParameters(n.getParametersOfExtrema()).flatMap(K);\n}\nfunction mn(n) {\n const t = n.deltaAngle, e = Math.ceil(Math.abs(t) / (Math.PI / 2)), s = t / e, r = 4 * Math.tan(s / 4) / 3, i = n.clockwise ? -1 : 1, o = Array.from(\n { length: e + 1 },\n (f, c) => n.firstAngle + c * s * i\n );\n return o.slice(0, -1).map((f, c) => [f, o[c + 1]]).map(([f, c]) => {\n const l = Math.cos(f), p = Math.sin(f), g = Math.cos(c), d = Math.sin(c), [u, S] = n.center, M = n.minorRadius, v = n.majorRadius, k = new Jt().rotate(\n n.tiltAngle,\n n.center\n ), C = (Ft) => k.transform(Ft), O = C([u + v * l, S + M * p]), G = C([\n u + v * (l - r * p * i),\n S + M * (p + r * l * i)\n ]), kt = C([\n u + v * (g + r * d * i),\n S + M * (d - r * g * i)\n ]), Et = C([u + v * g, S + M * d]);\n return new $(O, Et, G, kt);\n });\n}\nconst X = 1e-8, Mt = (n) => n.flatMap((t) => t instanceof A ? [t] : t instanceof E ? [t] : t instanceof pt ? mn(t).flatMap(\n (e) => st(e)\n) : t instanceof dt || t instanceof $ ? st(t) : [new A(t.firstPoint, t.lastPoint)]);\nfunction q(n, t, e = !0) {\n const s = n.map((c) => ({\n offset: xt(c, t),\n original: c\n })), r = [];\n let i = e ? null : s.at(-1), o = e ? s.at(-1) : null;\n if (r.length === 1) return r;\n const a = (c) => {\n i ? c.offset instanceof U ? I(c.offset.firstPoint, c.offset.lastPoint) || r.push(\n new A(c.offset.firstPoint, c.offset.lastPoint)\n ) : r.push(c.offset) : i = c;\n }, f = function* () {\n for (const c of s.slice(0, -1))\n yield c;\n if (!i) throw new Error(\"Bug in the offset algorithm\");\n yield i;\n };\n for (const c of f()) {\n if (!o) {\n o = c;\n continue;\n }\n const l = o.offset.lastPoint, p = c.offset.firstPoint;\n if (I(l, p)) {\n a(o), o = c;\n continue;\n }\n let g = [];\n if (!(o.offset instanceof U) && !(c.offset instanceof U)) {\n const { intersections: M, overlaps: v } = N(\n o.offset,\n c.offset,\n X / 100\n );\n g = [\n ...M,\n ...v.flatMap((k) => [k.firstPoint, k.lastPoint])\n ];\n }\n if (g.length > 0) {\n let M = g[0];\n if (g.length > 1) {\n const C = o == null ? void 0 : o.original.lastPoint, O = g.map(\n (G) => gt(G, C)\n );\n M = g[O.indexOf(Math.min(...O))];\n }\n const v = o.offset.splitAt([\n M\n ])[0], k = c.offset.splitAt([M]).at(-1);\n if (!k) throw new Error(\"Bug in the splitting algo in offset\");\n a({\n offset: v,\n original: o.original\n }), o = { offset: k, original: c.original };\n continue;\n }\n const d = o.original.lastPoint, u = Xt(\n F(p, d),\n F(l, d)\n ) > 0, S = new E(l, p, d, u);\n a(o), r.push(S), o = c;\n }\n return o && a(o), r;\n}\nfunction It(n) {\n const t = /* @__PURE__ */ new Map(), e = (s, r) => {\n const i = t.get(s) || [];\n t.set(s, [...i, ...r]);\n };\n return n.forEach((s, r) => {\n n.slice(r + 1).forEach((i, o) => {\n const { intersections: a, overlaps: f } = N(s, i, X), c = [\n ...a,\n ...f.flatMap((l) => [l.firstPoint, l.lastPoint])\n ].filter((l) => {\n const p = I(l, s.firstPoint) || I(l, s.lastPoint), g = I(l, i.firstPoint) || I(l, i.lastPoint);\n return !(p && g);\n });\n c.length && (e(r, c), e(o + r + 1, c));\n });\n }), t;\n}\nfunction St(n, t) {\n return t.flatMap((e, s) => {\n if (!n.has(s)) return e;\n const r = n.get(s);\n return r ? e.splitAt(r) : e;\n });\n}\nfunction bt(n, t, e) {\n return n.filter((s) => !t.segments.some((i) => dn(i, s) < Math.abs(e) - X));\n}\nfunction T(n, t) {\n const e = n.clockwise ? t : -t, s = Mt(n.segments), r = q(s, e);\n if (r.length < 2) return new h();\n const i = It(r);\n if (!i.size) {\n const l = new w(r);\n return new h([new m(l)]);\n }\n const o = St(\n i,\n r\n ), a = bt(o, n, t);\n if (!a.length) return new h();\n const c = ut(a).filter((l) => l.length > 1).filter((l) => I(l[0].firstPoint, l.at(-1).lastPoint)).map((l) => new w(l));\n return c.length ? new h(c.map((l) => new m(l))) : new h();\n}\nfunction Pn(n, t, e = \"round\") {\n const s = t / 2, r = Mt(n.segments), i = q(r, s, !1), o = q(\n r,\n -s,\n !1\n ).map((u) => u.reverse());\n o.reverse();\n const a = (u, S) => e === \"round\" ? Qt(\n u.lastPoint,\n S.firstPoint,\n u.tangentAtLastPoint\n ) : new A(u.lastPoint, S.firstPoint), f = [\n ...i,\n a(\n i[i.length - 1],\n o[0]\n ),\n ...o,\n a(\n o[o.length - 1],\n i[0]\n )\n ], c = It(f);\n if (!c.size) {\n const u = new w(f);\n return new h([new m(u)]);\n }\n const l = St(\n c,\n f\n ), p = bt(l, n, s);\n if (!p.length) return new h();\n const d = ut(p).filter((u) => u.length > 1).filter((u) => I(u[0].firstPoint, u.at(-1).lastPoint)).map((u) => new w(u));\n return d.length ? new h(d.map((u) => new m(u))) : new h();\n}\nfunction wn(n, t) {\n const e = n.map((s) => {\n const r = z(\n s.holes.map((i) => T(i, t))\n );\n return Pt(T(s.contour, t), r);\n });\n return z(e);\n}\nfunction Mn(n, t) {\n const e = Math.abs(t / 2), s = n.map(\n (r) => z(\n r.allLoops.map((i) => Pt(T(i, e), T(i, -e)))\n )\n );\n return z(s);\n}\nfunction On(n, t) {\n return wn(L(n), t);\n}\nfunction Dn(n, t, { endCap: e = \"round\" } = {}) {\n return n instanceof y ? Pn(n, t, e) : Mn(L(n), t);\n}\nclass In {\n constructor() {\n P(this, \"filters\");\n this.filters = [];\n }\n delete() {\n this.filters = [];\n }\n /**\n * Combine logically a set of filter with an AND operation.\n *\n */\n and(t) {\n return t.forEach((e) => e(this)), this;\n }\n /**\n * Invert the result of a particular filter\n *\n */\n not(t) {\n const e = new this.constructor();\n t(e);\n const s = ({ element: r }) => !e.shouldKeep(r);\n return this.filters.push(s), this;\n }\n /**\n * Combine logically a set of filter with an OR operation.\n *\n */\n either(t) {\n const e = t.map((r) => {\n const i = new this.constructor();\n return r(i), i;\n }), s = ({ element: r }) => e.some((i) => i.shouldKeep(r));\n return this.filters.push(s), this;\n }\n}\nconst _ = 2 * Math.PI, rt = (n) => {\n const t = n % _, e = t < 0 ? t + _ : t;\n return e < Math.PI ? e : e === Math.PI ? 0 : Math.abs(e - _);\n};\nclass x extends In {\n clone() {\n const t = new x();\n return t.filters = [...this.filters], t;\n }\n /**\n * Filter to find corner that have their point are in the list.\n *\n */\n inList(t) {\n const e = ({ element: s }) => !!t.find((r) => I(r, s.point));\n return this.filters.push(e), this;\n }\n /**\n * Filter to find elements that are at a specified distance from a point.\n *\n */\n atDistance(t, e = [0, 0]) {\n function s({ element: r }) {\n return Math.abs(b(e, r.point) - t) < 1e-9;\n }\n return this.filters.push(s), this;\n }\n /**\n * Filter to find elements that contain a certain point\n *\n * @category Filter\n */\n atPoint(t) {\n function e({ element: s }) {\n return I(t, s.point);\n }\n return this.filters.push(e), this;\n }\n /**\n * Filter to find elements that are within a box\n *\n * @category Filter\n */\n inBox(t, e) {\n const [s, r] = t, [i, o] = e, a = Math.min(s, i), f = Math.max(s, i), c = Math.min(r, o), l = Math.max(r, o);\n function p({ element: g }) {\n const [d, u] = g.point;\n return d >= a && d <= f && u >= c && u <= l;\n }\n return this.filters.push(p), this;\n }\n /**\n * Filter to find corner that a certain angle between them - only between\n * 0 and 180.\n *\n */\n ofAngle(t) {\n function e({ element: s }) {\n const r = s.firstCurve.tangentAtLastPoint, i = s.secondCurve.tangentAtFirstPoint;\n return Math.abs(\n rt(V(r, i)) - rt(Yt * t)\n ) < 1e-9;\n }\n return this.filters.push(e), this;\n }\n above(t = 0) {\n function e({ element: s }) {\n return s.point[1] > t;\n }\n return this.filters.push(e), this;\n }\n below(t = 0) {\n function e({ element: s }) {\n return s.point[1] < t;\n }\n return this.filters.push(e), this;\n }\n leftOf(t = 0) {\n function e({ element: s }) {\n return s.point[0] < t;\n }\n return this.filters.push(e), this;\n }\n rightOf(t = 0) {\n function e({ element: s }) {\n return s.point[0] > t;\n }\n return this.filters.push(e), this;\n }\n shouldKeep(t) {\n return this.filters.every((s) => s({ element: t }));\n }\n asFilterFun() {\n return this.shouldKeep.bind(this);\n }\n}\nfunction At(n, t, e, s = () => !0) {\n const r = [t.segments[0]], i = (a, f) => {\n s({ firstCurve: a, secondCurve: f, point: a.lastPoint }) ? r.push(...n(a, f, e)) : r.push(a, f);\n };\n if (t.segments.slice(1).forEach((a) => {\n const f = r.pop();\n if (!f) throw new Error(\"Bug in the stroke filletting algo\");\n i(f, a);\n }), !r.at(-1)) throw new Error(\"Bug in the stroke corner algo\");\n if (t instanceof w) {\n const a = r.pop(), f = r.shift();\n if (!a || !f)\n throw new Error(\"Bug in the filletting algo\");\n return i(a, f), new w(r, { ignoreChecks: !0 });\n } else\n return new y(r, { ignoreChecks: !0 });\n}\nfunction B(n, t, e) {\n const s = typeof e == \"function\" ? e(new x()) : e, r = s && s.asFilterFun();\n if (n instanceof w || n instanceof y)\n return At(lt, n, t, r);\n if (n instanceof m) {\n const i = B(n.contour, t, s), o = n.holes.map((a) => B(a, t, s));\n return new m(i, o, { ignoreChecks: !0 });\n }\n if (n instanceof h) {\n const i = n.figures.map((o) => B(o, t, s));\n return new h(i, { ignoreChecks: !0 });\n }\n throw new Error(\"invalid shape to fillet\");\n}\nfunction R(n, t, e) {\n const s = typeof e == \"function\" ? e(new x()) : e, r = s && s.asFilterFun();\n if (n instanceof w || n instanceof y)\n return At(lt, n, t, r);\n if (n instanceof m) {\n const i = R(n.contour, t, s), o = n.holes.map((a) => R(a, t, s));\n return new m(i, o, { ignoreChecks: !0 });\n }\n if (n instanceof h) {\n const i = n.figures.map((o) => R(o, t, s));\n return new h(i, { ignoreChecks: !0 });\n }\n throw new Error(\"invalid shape to chamfer\");\n}\nclass Sn extends x {\n constructor(t) {\n super(), this.shape = t;\n }\n fillet(t) {\n return B(this.shape, t, this.clone());\n }\n chamfer(t) {\n return R(this.shape, t, this.clone());\n }\n}\nfunction Bn(n) {\n return new Sn(n);\n}\nfunction it(n) {\n if (n instanceof h)\n return Wt(n);\n if (n instanceof m)\n return jt(n);\n if (n instanceof w)\n return `<path d=\"${tn(n)}\" />`;\n if (n instanceof y)\n return `<path d=\"${nn(n)}\" />`;\n if (Gt(n))\n return `<path d=\"${`M ${n.firstPoint.join(\" \")}`} ${en(\n n\n )}\" />`;\n throw new Error(\"Unknown shape type\");\n}\nconst ot = (n) => \"shape\" in n ? n.shape : n, at = (n, t) => {\n if (!(\"shape\" in n)) return t;\n const { color: e } = n;\n return e ? `<g stroke=\"${e}\">${t}</g>` : t;\n}, ct = (n) => new Zt(n.xMin, -n.yMax, n.xMax, -n.yMin);\nfunction Rn(n, {\n margin: t = 1,\n unit: e = null,\n viewBox: s\n} = {}) {\n if (Array.isArray(n)) {\n const i = n.map((f) => ot(f).mirror()), o = i.map((f, c) => at(n[c], it(f))).join(`\n`), a = i.slice(1).reduce((f, c) => f.merge(c.boundingBox), i[0].boundingBox);\n return Z(o, s ? ct(s) : a, t, e);\n }\n const r = ot(n).mirror();\n return Z(\n at(n, it(r)),\n s ? ct(s) : r.boundingBox,\n t,\n e\n );\n}\nconst vt = (n) => {\n if (n.type === \"LINE\")\n return new A(n.firstPoint, n.lastPoint);\n if (n.type === \"ARC\")\n return new E(\n n.firstPoint,\n n.lastPoint,\n n.center,\n n.clockwise\n );\n if (n.type === \"ELLIPSE_ARC\")\n return new pt(\n n.firstPoint,\n n.lastPoint,\n n.center,\n n.majorRadius,\n n.minorRadius,\n n.tiltAngle,\n n.clockwise,\n { angleUnits: \"rad\" }\n );\n if (n.type === \"QUADRATIC_BEZIER\")\n return new dt(\n n.firstPoint,\n n.lastPoint,\n n.controlPoint\n );\n if (n.type === \"CUBIC_BEZIER\")\n return new $(\n n.firstPoint,\n n.lastPoint,\n n.firstControlPoint,\n n.lastControlPoint\n );\n throw new Error(\"Unknown segment type\");\n}, H = (n) => {\n const t = n.segments.map(vt);\n return new w(t);\n}, Lt = (n) => {\n const t = H(n.contour), e = n.holes.map(H);\n return new m(t, e);\n}, bn = (n) => {\n const t = n.figures.map(Lt);\n return new h(t);\n};\nfunction zn(n) {\n if (n.type === \"DIAGRAM\")\n return bn(n);\n if (n.type === \"FIGURE\")\n return Lt(n);\n if (n.type === \"LOOP\")\n return H(n);\n if (n.type === \"LINE\" || n.type === \"ARC\" || n.type === \"ELLIPSE_ARC\" || n.type === \"CUBIC_BEZIER\")\n return vt(n);\n throw new Error(\"Unknown shape type\");\n}\nconst ft = Math.PI / 180, An = 180 / Math.PI;\nfunction Tn(n, t) {\n const e = Math.cos(t * ft) * n, s = Math.sin(t * ft) * n;\n return [e, s];\n}\nfunction $n([n, t]) {\n const e = Math.sqrt(n * n + t * t), s = Math.atan2(t, n) * An;\n return [e, s];\n}\nexport {\n ft as DEG2RAD,\n An as RAD2DEG,\n $n as cartesianToPolar,\n R as chamfer,\n xn as confineStrand,\n Pt as cut,\n _n as draw,\n Cn as eraseStrand,\n Kn as exportJSON,\n Rn as exportSVG,\n B as fillet,\n sn as fuse,\n z as fuseAll,\n zn as importJSON,\n yn as intersect,\n On as offset,\n Dn as outlineStroke,\n Tn as polarToCartesian,\n Bn as selectCorners,\n it as svgBody\n};\n//# sourceMappingURL=pantograph.js.map\n","import { cut, eraseStrand, exportSVG } from \"pantograph2d\";\nimport {\n Transformable,\n Diagram,\n Strand,\n TransformationMatrix,\n Stroke,\n} from \"pantograph2d/models\";\n\nexport class Dieline extends Transformable<Dieline> {\n public body: Diagram;\n public cutLines: Stroke[];\n public foldLinesBackwards: Stroke[];\n public foldLinesForwards: Stroke[];\n\n constructor(\n body: Diagram,\n {\n cutLines = [],\n foldLines = [],\n foldLinesForwards = [],\n foldLinesBackwards = [],\n }: {\n cutLines?: Stroke[];\n foldLines?: Stroke[];\n foldLinesBackwards?: Stroke[];\n foldLinesForwards?: Stroke[];\n } = {},\n ) {\n super();\n this.body = body;\n this.cutLines = [...cutLines];\n this.foldLinesBackwards = [...foldLines, ...foldLinesBackwards];\n this.foldLinesForwards = [...foldLinesForwards];\n }\n\n get foldLines() {\n return [...this.foldLinesForwards, ...this.foldLinesBackwards];\n }\n\n clone() {\n return new Dieline(this.body, {\n cutLines: [...this.cutLines],\n foldLinesForwards: [...this.foldLinesForwards],\n foldLinesBackwards: [...this.foldLinesBackwards],\n });\n }\n\n addCutLine(cut: Strand) {\n this.cutLines.push(cut);\n return this;\n }\n\n addFoldLine(fold: Strand, direction: \"forwards\" | \"backwards\" = \"backwards\") {\n if (direction === \"forwards\") {\n this.foldLinesForwards.push(fold);\n } else {\n this.foldLinesBackwards.push(fold);\n }\n }\n\n fuseFold(\n fold: Diagram | Dieline,\n direction: \"forwards\" | \"backwards\" = \"backwards\",\n ) {\n const otherBody: Diagram = fold instanceof Dieline ? fold.body : fold;\n\n const commonLines = this.body.overlappingStrands(otherBody);\n if (direction === \"forwards\") {\n this.foldLinesForwards.push(...commonLines);\n } else {\n this.foldLinesBackwards.push(...commonLines);\n }\n\n this.fuseBody(fold);\n return this;\n }\n\n fuseBody(other: Dieline | Diagram) {\n let otherBody: Diagram;\n\n if (other instanceof Dieline) {\n otherBody = other.body;\n this.cutLines.push(...other.cutLines);\n this.foldLinesForwards.push(...other.foldLinesForwards);\n this.foldLinesBackwards.push(...other.foldLinesBackwards);\n } else {\n otherBody = other;\n }\n\n this.body = this.body.fuse(otherBody);\n return this;\n }\n\n cutShape(shape: Diagram) {\n this.body = cut(this.body, shape);\n this.cutLines = this.cutLines.flatMap((cut) =>\n eraseStrand(cut, shape, true),\n );\n this.eraseFolds(shape);\n return this;\n }\n\n eraseFolds(shape: Diagram) {\n this.foldLinesBackwards = this.foldLinesBackwards.flatMap((fold) =>\n eraseStrand(fold, shape, true),\n );\n this.foldLinesForwards = this.foldLinesForwards.flatMap((fold) =>\n eraseStrand(fold, shape, true),\n );\n }\n\n transform(matrix: TransformationMatrix) {\n const newDieline = new Dieline(this.body.transform(matrix), {\n cutLines: this.cutLines.map((cut) => cut.transform(matrix)),\n foldLinesForwards: this.foldLinesForwards.map((fold) =>\n fold.transform(matrix),\n ),\n foldLinesBackwards: this.foldLinesBackwards.map((fold) =>\n fold.transform(matrix),\n ),\n });\n\n return newDieline;\n }\n\n asSVG() {\n const shapes: { shape: Diagram | Stroke; color: string }[] = [];\n if (this.body) {\n shapes.push({ shape: this.body, color: \"red\" });\n }\n if (this.cutLines.length) {\n this.cutLines.map((shape) => shapes.push({ shape, color: \"red\" }));\n }\n\n if (this.foldLinesBackwards.length) {\n this.foldLinesBackwards.map((shape) =>\n shapes.push({ shape, color: \"green\" }),\n );\n }\n\n if (this.foldLinesForwards.length) {\n this.foldLinesForwards.map((shape) =>\n shapes.push({ shape, color: \"blue\" }),\n );\n }\n\n return exportSVG(shapes, { unit: \"mm\" });\n }\n}\n","import { draw } from \"pantograph2d\";\n\nexport type FlapContractionMode = \"rounded\" | \"sharp\";\nexport type HorizontalFlapOptions = {\n fillet?: number;\n contraction?: number;\n contractionMode?: FlapContractionMode;\n contractionLeft?: number;\n contractionRight?: number;\n leftContractionMode?: FlapContractionMode;\n rightContractionMode?: FlapContractionMode;\n};\nexport type VerticalFlapTopOptions = HorizontalFlapOptions & {\n contractionTop?: number;\n contractionBottom?: number;\n topContractionMode?: FlapContractionMode;\n bottomContractionMode?: FlapContractionMode;\n};\n\nfunction drawFlap(\n width: number,\n height: number,\n {\n fillet = 1,\n contraction = 1,\n contractionMode = \"rounded\",\n contractionLeft: contractionLeftInput,\n contractionRight: contractionRightInput,\n leftContractionMode,\n rightContractionMode,\n }: HorizontalFlapOptions = {},\n) {\n const contractionLeft = contractionLeftInput ?? contraction;\n const contractionRight = contractionRightInput ?? contraction;\n\n const flapMaker = draw([-width / 2, 0]).hLine(width);\n\n if (contractionRight) {\n if ((rightContractionMode ?? contractionMode) === \"rounded\") {\n flapMaker.tangentArc(-contractionRight, contractionRight, [-1, 0]);\n flapMaker.vLine(height - contractionRight);\n } else {\n flapMaker.line(-contractionRight, height);\n }\n } else {\n flapMaker.vLine(height);\n }\n\n flapMaker.customCorner(fillet);\n flapMaker.hLine(-width + contractionLeft + contractionRight);\n flapMaker.customCorner(fillet);\n\n if (contractionLeft) {\n if ((leftContractionMode ?? contractionMode) === \"rounded\") {\n flapMaker.vLine(-height + contractionLeft);\n flapMaker.tangentArcTo([-width / 2, 0]);\n } else {\n flapMaker.lineTo([-width / 2, 0]);\n }\n } else {\n flapMaker.vLine(-height);\n }\n\n return flapMaker.close();\n}\n\nexport function topFlap(\n width: number,\n height: number,\n options: HorizontalFlapOptions = {},\n) {\n return drawFlap(width, height, options);\n}\n\nexport function bottomFlap(\n width: number,\n height: number,\n options: HorizontalFlapOptions = {},\n) {\n return drawFlap(width, height, options).mirror(\"x\");\n}\n\nexport function leftFlap(\n width: number,\n height: number,\n {\n contractionTop,\n contractionBottom,\n topContractionMode,\n bottomContractionMode,\n ...options\n }: VerticalFlapTopOptions = {},\n) {\n return drawFlap(width, height, {\n contractionLeft: contractionTop,\n contractionRight: contractionBottom,\n leftContractionMode: topContractionMode,\n rightContractionMode: bottomContractionMode,\n ...options,\n }).rotate(90);\n}\n\nexport function rightFlap(\n width: number,\n height: number,\n options: VerticalFlapTopOptions = {},\n) {\n return leftFlap(width, height, options).mirror(\"y\");\n}\n\nexport const drawFlaps = {\n right: rightFlap,\n left: leftFlap,\n top: topFlap,\n bottom: bottomFlap,\n};\n","import { draw } from \"pantograph2d\";\nimport {\n Diagram,\n Strand,\n Transformable,\n TransformationMatrix,\n} from \"pantograph2d/models\";\nimport { Dieline } from \"./Dieline.js\";\n\nconst drawBump = (width: number, height: number) => {\n return draw([-width / 2, 0])\n .line(height, -height)\n .hLine(width - 2 * height)\n .line(height, height);\n};\n\n// A helper class to create bumps for locking parts together without glue\nexport class FoldLockBump extends Transformable<FoldLockBump> {\n cut: Strand;\n unfold: Diagram;\n bump: Diagram;\n constructor(\n width: number | { cut: Strand; unfold: Diagram; bump: Diagram },\n paperThickness = 0.2,\n ) {\n super();\n\n if (typeof width !== \"number\") {\n this.cut = width.cut;\n this.unfold = width.unfold;\n this.bump = width.bump;\n return;\n }\n\n const pen = drawBump(width, paperThickness * 2.5);\n\n this.cut = pen.asStrand();\n this.unfold = pen.close();\n\n this.bump = drawBump(width - 5 * paperThickness, 5 * paperThickness)\n .close()\n .mirror(\"x\");\n }\n\n clone() {\n return new FoldLockBump(this);\n }\n\n transform(matrix: TransformationMatrix) {\n return new FoldLockBump({\n cut: this.cut.transform(matrix),\n unfold: this.unfold.transform(matrix),\n bump: this.bump.transform(matrix),\n });\n }\n\n makeCut(dieline: Dieline) {\n dieline.eraseFolds(this.unfold);\n dieline.addCutLine(this.cut);\n }\n\n fuseBump(dieline: Dieline) {\n dieline.fuseBody(this.bump);\n }\n}\n","import { Vector } from \"pantograph2d\";\nimport { Transformable, TransformationMatrix } from \"pantograph2d/models\";\n\ninterface Clonable {\n clone(): this;\n}\n\ninterface Translatable {\n translateTo(point: Vector): this;\n}\n\nclass PointsDistribution extends Transformable<PointsDistribution> {\n constructor(public points: Vector[]) {\n super();\n this.points = points;\n }\n\n transform(matrix: TransformationMatrix) {\n return new PointsDistribution(this.points.map(matrix.transform));\n }\n\n distribute<T extends Translatable>(s: T): T[] {\n return this.points.map((p) => s.translateTo(p));\n }\n\n cloneDistribute<T extends Translatable & Clonable>(s: T): T[] {\n return this.points.map((p) => s.clone().translateTo(p));\n }\n}\n\nexport function linearDistribution(\n totalWidth: number,\n objectWidth: number,\n gapShare = 3,\n margin = 0,\n) {\n if (totalWidth <= objectWidth * 2) {\n throw new Error(\"totalWidth must be greater than twice the objectWidth\");\n }\n\n const objectsCount = Math.max(\n Math.floor((totalWidth - 2 * margin) / (objectWidth * (gapShare + 1))),\n 2,\n );\n const freeSpace = totalWidth - 2 * margin - objectsCount * objectWidth;\n const gapSize = freeSpace / (objectsCount - 1);\n const points: number[] = [];\n for (let i = 0; i < objectsCount; i++) {\n points.push(\n margin + i * (objectWidth + gapSize) - totalWidth / 2 + objectWidth / 2,\n );\n }\n return new PointsDistribution(points.map((p) => [p, 0]));\n}\n\nexport function linearSpread(\n gap: number,\n count: number,\n direction: \"x\" | \"y\" = \"x\",\n) {\n const totalLength = gap * (count - 1);\n const points: number[] = [];\n for (let i = 0; i < count; i++) {\n points.push(i * gap - totalLength / 2);\n }\n return new PointsDistribution(\n points.map((p) => (direction.toLowerCase() === \"x\" ? [p, 0] : [0, p])),\n );\n}\n"],"names":["Oe","Me","r","Be","s","t","q","oe","ht","le","Dt","e","he","zt","mt$2","mt","n","ce","ye","Te","fe","Ue","Z","Y","it","Q","It","an","nt","Rt","J","St","Pe","H","Tt","Ye","We","Ie","i","tt","Qt","Qe","Mt","l","a","u","c","g","d","w","P","M","E","Ge","Xe","et$2","et","Ze","at","xt","o","h","Je","Kt","wt","Zt","me","cn","Ot","ct","fn","mn","be","Bt","Ee","_e","Ke","He","L","S","k","D","v","Ce","qe","$","ts","Ct","es","ss","ns","is","rs","os","ls","st","je","Ut","Fe","hs","xe","as","us","Se","cs","ot","lt","Pt","bt","ge","we","ae","Yt","Ht","yt","fs","ms","gs","ps","ds","Ps","bs","Es","_s","js","vs","V$1","V","_","m","b","j","C","F","I","B","x","A","O","U","z","X","G","W","se","ne","ie","re","At","Vt","Nt","$t","Lt","ke","Is","Ft","ue","dt","K","Jt","pt","te","Cs","ft","qs","Fs","xs","As","Vs","Ns","$s","Ae","Ls","rt","ee$1","ut","pe","vt$1","Ds","vt","Ve","ee","Xt","Gt","zs","Os","Bs","Us","Ys","Ws","Ne","Xs","Wt","$e","Le","Js","De","Re","Ks","Hs","qt","kt","ze","wn","ve","gt","tn","en","sn","nn","rn","de","Et","p","jt","ln","pn","on","_t","f","dn","T","gn","Pn","xn","Sn","R","yn","ct$1","bn","Cn","Mn","An","In","En","Fn","Bn","vn","kn","_n","On","Tn","y","Ln","N","un","zn","qn","Dn","Rn","Vn","Nn","Un","jn","Hn","$n","at$1","Xn","Yn","Gn","Qn","Wn","Jn","Kn","Zn","hn","ot$1","Dieline","Transformable","body","cutLines","foldLines","foldLinesForwards","foldLinesBackwards","__publicField","cut","fold","direction","otherBody","commonLines","other","shape","eraseStrand","matrix","shapes","exportSVG","drawFlap","width","height","fillet","contraction","contractionMode","contractionLeftInput","contractionRightInput","leftContractionMode","rightContractionMode","contractionLeft","contractionRight","flapMaker","draw","topFlap","options","bottomFlap","leftFlap","contractionTop","contractionBottom","topContractionMode","bottomContractionMode","rightFlap","drawFlaps","drawBump","FoldLockBump","paperThickness","pen","dieline","PointsDistribution","points","linearDistribution","totalWidth","objectWidth","gapShare","margin","objectsCount","gapSize","linearSpread","gap","count","totalLength"],"mappings":"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"}