{"version":3,"file":"dielines.umd.cjs","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","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","ws","ps","ds","Ms","ys","Ps","bs","_s","js","Ss","ks","Rs","vs","Ts","V$2","V","_","m","b","j","C","F","I","B","x","N","A","O","U","z","X","G","W","se","ne","ie","re","At","Vt","Nt","$t","Lt","ke","Is","Ft","ue","dt","K","Jt","K$1","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","Qs","Gs","Xs","Zs","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","k","f","dn","T","gn","Pn","xn","Sn","R","yn","bn","Cn","Mn","An","In","En","Fn","Bn","vn","kn","_n","On","Tn","y","Ln","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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"}