summaryrefslogtreecommitdiff
path: root/themes/blowfish/assets/lib/mermaid/ganttDiagram-9dc2e9c6.js.map
diff options
context:
space:
mode:
authorChristoph Cullmann <cullmann@kde.org>2024-04-28 17:33:09 +0200
committerChristoph Cullmann <cullmann@kde.org>2024-04-28 17:33:09 +0200
commite77051ccc4b47951bfa4fde2be436b1bb2fb113b (patch)
treef0b75ee3521da9c8cd39dac4359212348f70e4e8 /themes/blowfish/assets/lib/mermaid/ganttDiagram-9dc2e9c6.js.map
parent4b355837824ac2422d371acef790f0f4249255c7 (diff)
use https://github.com/nunocoracao/blowfish.git
Diffstat (limited to 'themes/blowfish/assets/lib/mermaid/ganttDiagram-9dc2e9c6.js.map')
-rw-r--r--themes/blowfish/assets/lib/mermaid/ganttDiagram-9dc2e9c6.js.map1
1 files changed, 1 insertions, 0 deletions
diff --git a/themes/blowfish/assets/lib/mermaid/ganttDiagram-9dc2e9c6.js.map b/themes/blowfish/assets/lib/mermaid/ganttDiagram-9dc2e9c6.js.map
new file mode 100644
index 0000000..067c301
--- /dev/null
+++ b/themes/blowfish/assets/lib/mermaid/ganttDiagram-9dc2e9c6.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ganttDiagram-9dc2e9c6.js","sources":["../../../node_modules/.pnpm/d3-array@3.2.0/node_modules/d3-array/src/ascending.js","../../../node_modules/.pnpm/d3-array@3.2.0/node_modules/d3-array/src/descending.js","../../../node_modules/.pnpm/d3-array@3.2.0/node_modules/d3-array/src/bisector.js","../../../node_modules/.pnpm/d3-array@3.2.0/node_modules/d3-array/src/number.js","../../../node_modules/.pnpm/d3-array@3.2.0/node_modules/d3-array/src/bisect.js","../../../node_modules/.pnpm/d3-array@3.2.0/node_modules/d3-array/src/ticks.js","../../../node_modules/.pnpm/d3-array@3.2.0/node_modules/d3-array/src/max.js","../../../node_modules/.pnpm/d3-array@3.2.0/node_modules/d3-array/src/min.js","../../../node_modules/.pnpm/d3-axis@3.0.0/node_modules/d3-axis/src/identity.js","../../../node_modules/.pnpm/d3-axis@3.0.0/node_modules/d3-axis/src/axis.js","../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/math.js","../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/lab.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/numberArray.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/array.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/date.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/object.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/value.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/round.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/hcl.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatDecimal.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/exponent.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatGroup.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatNumerals.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatSpecifier.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatTrim.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatPrefixAuto.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatRounded.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/formatTypes.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/identity.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/locale.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/defaultLocale.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/precisionFixed.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/precisionPrefix.js","../../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/precisionRound.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/constant.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/number.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/continuous.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/tickFormat.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/linear.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/nice.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/interval.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/millisecond.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/duration.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/second.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/minute.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/hour.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/day.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/week.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/month.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/year.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/utcMinute.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/utcHour.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/utcDay.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/utcWeek.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/utcMonth.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/utcYear.js","../../../node_modules/.pnpm/d3-time@3.0.0/node_modules/d3-time/src/ticks.js","../../../node_modules/.pnpm/d3-time-format@4.1.0/node_modules/d3-time-format/src/locale.js","../../../node_modules/.pnpm/d3-time-format@4.1.0/node_modules/d3-time-format/src/defaultLocale.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/time.js","../src/diagrams/gantt/parser/gantt.jison","../../../node_modules/.pnpm/dayjs@1.11.7/node_modules/dayjs/plugin/isoWeek.js","../../../node_modules/.pnpm/dayjs@1.11.7/node_modules/dayjs/plugin/customParseFormat.js","../../../node_modules/.pnpm/dayjs@1.11.7/node_modules/dayjs/plugin/advancedFormat.js","../src/diagrams/gantt/ganttDb.js","../src/diagrams/gantt/ganttRenderer.js","../src/diagrams/gantt/styles.js","../src/diagrams/gantt/ganttDiagram.ts"],"sourcesContent":["export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function ticks(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb() {\n return hcl2lab(this).rgb();\n }\n}));\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport millisecond from \"./millisecond.js\";\nimport second from \"./second.js\";\nimport minute from \"./minute.js\";\nimport hour from \"./hour.js\";\nimport day from \"./day.js\";\nimport {sunday as week} from \"./week.js\";\nimport month from \"./month.js\";\nimport year from \"./year.js\";\nimport utcMinute from \"./utcMinute.js\";\nimport utcHour from \"./utcHour.js\";\nimport utcDay from \"./utcDay.js\";\nimport {utcSunday as utcWeek} from \"./utcWeek.js\";\nimport utcMonth from \"./utcMonth.js\";\nimport utcYear from \"./utcYear.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(year, month, week, day, hour, minute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","/** mermaid\n * https://mermaidjs.github.io/\n * (c) 2015 Knut Sveidqvist\n * MIT license.\n */\n%lex\n\n%options case-insensitive\n\n%x click\n%x href\n%x callbackname\n%x callbackargs\n%x open_directive\n%x type_directive\n%x arg_directive\n%x close_directive\n%x acc_title\n%x acc_descr\n%x acc_descr_multiline\n%%\n\\%\\%\\{ { this.begin('open_directive'); return 'open_directive'; }\n<open_directive>((?:(?!\\}\\%\\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }\n<type_directive>\":\" { this.popState(); this.begin('arg_directive'); return ':'; }\n<type_directive,arg_directive>\\}\\%\\% { this.popState(); this.popState(); return 'close_directive'; }\n<arg_directive>((?:(?!\\}\\%\\%).|\\n)*) return 'arg_directive';\n\naccTitle\\s*\":\"\\s* { this.begin(\"acc_title\");return 'acc_title'; }\n<acc_title>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_title_value\"; }\naccDescr\\s*\":\"\\s* { this.begin(\"acc_descr\");return 'acc_descr'; }\n<acc_descr>(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_descr_value\"; }\naccDescr\\s*\"{\"\\s* { this.begin(\"acc_descr_multiline\");}\n<acc_descr_multiline>[\\}] { this.popState(); }\n<acc_descr_multiline>[^\\}]* return \"acc_descr_multiline_value\";\n\n\\%\\%(?!\\{)*[^\\n]* /* skip comments */\n[^\\}]\\%\\%*[^\\n]* /* skip comments */\n\\%\\%*[^\\n]*[\\n]* /* do nothing */\n\n[\\n]+ return 'NL';\n\\s+ /* skip whitespace */\n\\#[^\\n]* /* skip comments */\n\\%%[^\\n]* /* skip comments */\n\n/*\n---interactivity command---\n'href' adds a link to the specified task. 'href' can only be specified when the\nline was introduced with 'click'.\n'href \"<link>\"' attaches the specified link to the task that was specified by 'click'.\n*/\n\"href\"[\\s]+[\"] this.begin(\"href\");\n<href>[\"] this.popState();\n<href>[^\"]* return 'href';\n\n/*\n---interactivity command---\n'call' adds a callback to the specified task. 'call' can only be specified when\nthe line was introdcued with 'click'.\n'call <callbackname>(<args>)' attaches the function 'callbackname' with the specified\narguments to the task that was specified by 'click'.\nFunction arguments are optional: 'call <callbackname>()' simply executes 'callbackname' without any arguments.\n*/\n\"call\"[\\s]+ this.begin(\"callbackname\");\n<callbackname>\\([\\s]*\\) this.popState();\n<callbackname>\\( this.popState(); this.begin(\"callbackargs\");\n<callbackname>[^(]* return 'callbackname';\n<callbackargs>\\) this.popState();\n<callbackargs>[^)]* return 'callbackargs';\n\n/*\n'click' is the keyword to introduce a line that contains interactivity commands.\n'click' must be followed by an existing task-id. All commands are attached to\nthat id.\n'click <id>' can be followed by href or call commands in any desired order\n*/\n\"click\"[\\s]+ this.begin(\"click\");\n<click>[\\s\\n] this.popState();\n<click>[^\\s\\n]* return 'click';\n\n\"gantt\" return 'gantt';\n\"dateFormat\"\\s[^#\\n;]+ return 'dateFormat';\n\"inclusiveEndDates\" return 'inclusiveEndDates';\n\"topAxis\" return 'topAxis';\n\"axisFormat\"\\s[^#\\n;]+ return 'axisFormat';\n\"tickInterval\"\\s[^#\\n;]+ return 'tickInterval';\n\"includes\"\\s[^#\\n;]+ return 'includes';\n\"excludes\"\\s[^#\\n;]+ return 'excludes';\n\"todayMarker\"\\s[^\\n;]+ return 'todayMarker';\n\\d\\d\\d\\d\"-\"\\d\\d\"-\"\\d\\d return 'date';\n\"title\"\\s[^#\\n;]+ return 'title';\n\"accDescription\"\\s[^#\\n;]+ return 'accDescription'\n\"section\"\\s[^#:\\n;]+ return 'section';\n[^#:\\n;]+ return 'taskTxt';\n\":\"[^#\\n;]+ return 'taskData';\n\":\" return ':';\n<<EOF>> return 'EOF';\n. return 'INVALID';\n\n/lex\n\n%left '^'\n\n%start start\n\n%% /* language grammar */\n\nstart\n\t: directive start\n\t| gantt document 'EOF' { return $2; }\n\t;\n\ndocument\n\t: /* empty */ { $$ = [] }\n\t| document line {$1.push($2);$$ = $1}\n\t;\n\nline\n\t: SPACE statement { $$ = $2 }\n\t| statement { $$ = $1 }\n\t| NL { $$=[];}\n\t| EOF { $$=[];}\n\t;\n\nstatement\n : dateFormat {yy.setDateFormat($1.substr(11));$$=$1.substr(11);}\n | inclusiveEndDates {yy.enableInclusiveEndDates();$$=$1.substr(18);}\n | topAxis {yy.TopAxis();$$=$1.substr(8);}\n | axisFormat {yy.setAxisFormat($1.substr(11));$$=$1.substr(11);}\n | tickInterval {yy.setTickInterval($1.substr(13));$$=$1.substr(13);}\n | excludes {yy.setExcludes($1.substr(9));$$=$1.substr(9);}\n | includes {yy.setIncludes($1.substr(9));$$=$1.substr(9);}\n | todayMarker {yy.setTodayMarker($1.substr(12));$$=$1.substr(12);}\n | title {yy.setDiagramTitle($1.substr(6));$$=$1.substr(6);}\n | acc_title acc_title_value { $$=$2.trim();yy.setAccTitle($$); }\n | acc_descr acc_descr_value { $$=$2.trim();yy.setAccDescription($$); }\n | acc_descr_multiline_value { $$=$1.trim();yy.setAccDescription($$); } | section {yy.addSection($1.substr(8));$$=$1.substr(8);}\n | clickStatement\n | taskTxt taskData {yy.addTask($1,$2);$$='task';}\n | directive\n ;\n\ndirective\n : openDirective typeDirective closeDirective 'NL'\n | openDirective typeDirective ':' argDirective closeDirective 'NL'\n ;\n\n/*\nclick allows any combination of href and call.\n*/\nclickStatement\n : click callbackname {$$ = $1;yy.setClickEvent($1, $2, null);}\n | click callbackname callbackargs {$$ = $1;yy.setClickEvent($1, $2, $3);}\n\n | click callbackname href {$$ = $1;yy.setClickEvent($1, $2, null);yy.setLink($1,$3);}\n | click callbackname callbackargs href {$$ = $1;yy.setClickEvent($1, $2, $3);yy.setLink($1,$4);}\n\n | click href callbackname {$$ = $1;yy.setClickEvent($1, $3, null);yy.setLink($1,$2);}\n | click href callbackname callbackargs {$$ = $1;yy.setClickEvent($1, $3, $4);yy.setLink($1,$2);}\n\n | click href {$$ = $1;yy.setLink($1, $2);}\n ;\n\nclickStatementDebug\n : click callbackname {$$=$1 + ' ' + $2;}\n | click callbackname href {$$=$1 + ' ' + $2 + ' ' + $3;}\n\n | click callbackname callbackargs {$$=$1 + ' ' + $2 + ' ' + $3;}\n | click callbackname callbackargs href {$$=$1 + ' ' + $2 + ' ' + $3 + ' ' + $4;}\n\n | click href callbackname {$$=$1 + ' ' + $2 + ' ' + $3;}\n | click href callbackname callbackargs {$$=$1 + ' ' + $2 + ' ' + $3 + ' ' + $4;}\n\n | click href {$$=$1 + ' ' + $2;}\n ;\n\nopenDirective\n : open_directive { yy.parseDirective('%%{', 'open_directive'); }\n ;\n\ntypeDirective\n : type_directive { yy.parseDirective($1, 'type_directive'); }\n ;\n\nargDirective\n : arg_directive { $1 = $1.trim().replace(/'/g, '\"'); yy.parseDirective($1, 'arg_directive'); }\n ;\n\ncloseDirective\n : close_directive { yy.parseDirective('}%%', 'close_directive', 'gantt'); }\n ;\n\n%%\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isoWeek=t()}(this,(function(){\"use strict\";var e=\"day\";return function(t,i,s){var a=function(t){return t.add(4-t.isoWeekday(),e)},d=i.prototype;d.isoWeekYear=function(){return a(this).year()},d.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var i,d,n,o,r=a(this),u=(i=this.isoWeekYear(),d=this.$u,n=(d?s.utc:s)().year(i).startOf(\"year\"),o=4-n.isoWeekday(),n.isoWeekday()>4&&(o+=7),n.add(o,e));return r.diff(u,\"week\")+1},d.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var n=d.startOf;d.startOf=function(e,t){var i=this.$utils(),s=!!i.u(t)||t;return\"isoweek\"===i.p(e)?s?this.date(this.date()-(this.isoWeekday()-1)).startOf(\"day\"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf(\"day\"):n.bind(this)(e,t)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d\\d/,r=/\\d\\d?/,i=/\\d*[^-_:/,()\\s\\d]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)};var a=function(e){return function(t){this[e]=+t}},f=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],h=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[r,a(\"seconds\")],ss:[r,a(\"seconds\")],m:[r,a(\"minutes\")],mm:[r,a(\"minutes\")],H:[r,a(\"hours\")],h:[r,a(\"hours\")],HH:[r,a(\"hours\")],hh:[r,a(\"hours\")],D:[r,a(\"day\")],DD:[n,a(\"day\")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],M:[r,a(\"month\")],MM:[n,a(\"month\")],MMM:[i,function(e){var t=h(\"months\"),n=(h(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=h(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[n,function(e){this.year=s(e)}],YYYY:[/\\d{4}/,a(\"year\")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=s.length,f=0;f<a;f+=1){var h=s[f],u=d[h],c=u&&u[0],l=u&&u[1];s[f]=l?{regex:c,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=s[n];if(\"string\"==typeof i)r+=i.length;else{var o=i.regex,f=i.parser,h=e.slice(r),u=o.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(s=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,s=e.args;this.$u=r;var a=s[1];if(\"string\"==typeof a){var f=!0===s[2],h=!0===s[3],u=f||h,d=s[2];h&&(d=s[2]),o=this.$locale(),!f&&d&&(o=n.Ls[d]),this.$d=function(e,t,n){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var r=c(t)(e),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,h=r.seconds,u=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=h||0,g=u||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(e){return new Date(\"\")}}(t,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_advancedFormat=t()}(this,(function(){\"use strict\";return function(e,t){var r=t.prototype,n=r.format;r.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return n.bind(this)(e);var s=this.$utils(),a=(e||\"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case\"Q\":return Math.ceil((t.$M+1)/3);case\"Do\":return r.ordinal(t.$D);case\"gggg\":return t.weekYear();case\"GGGG\":return t.isoWeekYear();case\"wo\":return r.ordinal(t.week(),\"W\");case\"w\":case\"ww\":return s.s(t.week(),\"w\"===e?1:2,\"0\");case\"W\":case\"WW\":return s.s(t.isoWeek(),\"W\"===e?1:2,\"0\");case\"k\":case\"kk\":return s.s(String(0===t.$H?24:t.$H),\"k\"===e?1:2,\"0\");case\"X\":return Math.floor(t.$d.getTime()/1e3);case\"x\":return t.$d.getTime();case\"z\":return\"[\"+t.offsetName()+\"]\";case\"zzz\":return\"[\"+t.offsetName(\"long\")+\"]\";default:return e}}));return n.bind(this)(a)}}}));","import { sanitizeUrl } from '@braintree/sanitize-url';\nimport dayjs from 'dayjs';\nimport dayjsIsoWeek from 'dayjs/plugin/isoWeek';\nimport dayjsCustomParseFormat from 'dayjs/plugin/customParseFormat';\nimport dayjsAdvancedFormat from 'dayjs/plugin/advancedFormat';\nimport { log } from '../../logger';\nimport * as configApi from '../../config';\nimport utils from '../../utils';\nimport mermaidAPI from '../../mermaidAPI';\n\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n setDiagramTitle,\n getDiagramTitle,\n} from '../../commonDb';\n\ndayjs.extend(dayjsIsoWeek);\ndayjs.extend(dayjsCustomParseFormat);\ndayjs.extend(dayjsAdvancedFormat);\n\nlet dateFormat = '';\nlet axisFormat = '';\nlet tickInterval = undefined;\nlet todayMarker = '';\nlet includes = [];\nlet excludes = [];\nlet links = {};\nlet sections = [];\nlet tasks = [];\nlet currentSection = '';\nconst tags = ['active', 'done', 'crit', 'milestone'];\nlet funs = [];\nlet inclusiveEndDates = false;\nlet topAxis = false;\n\n// The serial order of the task in the script\nlet lastOrder = 0;\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\nexport const clear = function () {\n sections = [];\n tasks = [];\n currentSection = '';\n funs = [];\n taskCnt = 0;\n lastTask = undefined;\n lastTaskID = undefined;\n rawTasks = [];\n dateFormat = '';\n axisFormat = '';\n tickInterval = undefined;\n todayMarker = '';\n includes = [];\n excludes = [];\n inclusiveEndDates = false;\n topAxis = false;\n lastOrder = 0;\n links = {};\n commonClear();\n};\n\nexport const setAxisFormat = function (txt) {\n axisFormat = txt;\n};\n\nexport const getAxisFormat = function () {\n return axisFormat;\n};\n\nexport const setTickInterval = function (txt) {\n tickInterval = txt;\n};\n\nexport const getTickInterval = function () {\n return tickInterval;\n};\n\nexport const setTodayMarker = function (txt) {\n todayMarker = txt;\n};\n\nexport const getTodayMarker = function () {\n return todayMarker;\n};\n\nexport const setDateFormat = function (txt) {\n dateFormat = txt;\n};\n\nexport const enableInclusiveEndDates = function () {\n inclusiveEndDates = true;\n};\n\nexport const endDatesAreInclusive = function () {\n return inclusiveEndDates;\n};\n\nexport const enableTopAxis = function () {\n topAxis = true;\n};\n\nexport const topAxisEnabled = function () {\n return topAxis;\n};\n\nexport const getDateFormat = function () {\n return dateFormat;\n};\n\nexport const setIncludes = function (txt) {\n includes = txt.toLowerCase().split(/[\\s,]+/);\n};\n\nexport const getIncludes = function () {\n return includes;\n};\nexport const setExcludes = function (txt) {\n excludes = txt.toLowerCase().split(/[\\s,]+/);\n};\n\nexport const getExcludes = function () {\n return excludes;\n};\n\nexport const getLinks = function () {\n return links;\n};\n\nexport const addSection = function (txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function () {\n return sections;\n};\n\nexport const getTasks = function () {\n let allItemsPricessed = compileTasks();\n const maxDepth = 10;\n let iterationCount = 0;\n while (!allItemsPricessed && iterationCount < maxDepth) {\n allItemsPricessed = compileTasks();\n iterationCount++;\n }\n\n tasks = rawTasks;\n\n return tasks;\n};\n\nexport const isInvalidDate = function (date, dateFormat, excludes, includes) {\n if (includes.includes(date.format(dateFormat.trim()))) {\n return false;\n }\n if (date.isoWeekday() >= 6 && excludes.includes('weekends')) {\n return true;\n }\n if (excludes.includes(date.format('dddd').toLowerCase())) {\n return true;\n }\n return excludes.includes(date.format(dateFormat.trim()));\n};\n\n/**\n * TODO: fully document what this function does and what types it accepts\n *\n * @param {object} task - The task to check.\n * @param {string | Date} task.startTime - Might be a `Date` or a `string`.\n * TODO: is this always a Date?\n * @param {string | Date} task.endTime - Might be a `Date` or a `string`.\n * TODO: is this always a Date?\n * @param {string} dateFormat - Dayjs date format string.\n * @param {*} excludes\n * @param {*} includes\n */\nconst checkTaskDates = function (task, dateFormat, excludes, includes) {\n if (!excludes.length || task.manualEndTime) {\n return;\n }\n let startTime;\n if (task.startTime instanceof Date) {\n startTime = dayjs(task.startTime);\n } else {\n startTime = dayjs(task.startTime, dateFormat, true);\n }\n startTime = startTime.add(1, 'd');\n\n let originalEndTime;\n if (task.endTime instanceof Date) {\n originalEndTime = dayjs(task.endTime);\n } else {\n originalEndTime = dayjs(task.endTime, dateFormat, true);\n }\n const [fixedEndTime, renderEndTime] = fixTaskDates(\n startTime,\n originalEndTime,\n dateFormat,\n excludes,\n includes\n );\n task.endTime = fixedEndTime.toDate();\n task.renderEndTime = renderEndTime;\n};\n\n/**\n * TODO: what does this function do?\n *\n * @param {dayjs.Dayjs} startTime - The start time.\n * @param {dayjs.Dayjs} endTime - The original end time (will return a different end time if it's invalid).\n * @param {string} dateFormat - Dayjs date format string.\n * @param {*} excludes\n * @param {*} includes\n * @returns {[endTime: dayjs.Dayjs, renderEndTime: Date | null]} The new `endTime`, and the end time to render.\n * `renderEndTime` may be `null` if `startTime` is newer than `endTime`.\n */\nconst fixTaskDates = function (startTime, endTime, dateFormat, excludes, includes) {\n let invalid = false;\n let renderEndTime = null;\n while (startTime <= endTime) {\n if (!invalid) {\n renderEndTime = endTime.toDate();\n }\n invalid = isInvalidDate(startTime, dateFormat, excludes, includes);\n if (invalid) {\n endTime = endTime.add(1, 'd');\n }\n startTime = startTime.add(1, 'd');\n }\n return [endTime, renderEndTime];\n};\n\nconst getStartDate = function (prevTime, dateFormat, str) {\n str = str.trim();\n\n // Test for after\n const re = /^after\\s+([\\d\\w- ]+)/;\n const afterStatement = re.exec(str.trim());\n\n if (afterStatement !== null) {\n // check all after ids and take the latest\n let latestEndingTask = null;\n afterStatement[1].split(' ').forEach(function (id) {\n let task = findTaskById(id);\n if (task !== undefined) {\n if (!latestEndingTask) {\n latestEndingTask = task;\n } else {\n if (task.endTime > latestEndingTask.endTime) {\n latestEndingTask = task;\n }\n }\n }\n });\n\n if (!latestEndingTask) {\n const dt = new Date();\n dt.setHours(0, 0, 0, 0);\n return dt;\n } else {\n return latestEndingTask.endTime;\n }\n }\n\n // Check for actual date set\n let mDate = dayjs(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n return mDate.toDate();\n } else {\n log.debug('Invalid date:' + str);\n log.debug('With date format:' + dateFormat.trim());\n const d = new Date(str);\n if (d === undefined || isNaN(d.getTime())) {\n throw new Error('Invalid date:' + str);\n }\n return d;\n }\n};\n\n/**\n * Parse a string into the args for `dayjs.add()`.\n *\n * The string have to be compound by a value and a shorthand duration unit. For example `5d`\n * represents 5 days.\n *\n * Please be aware that 1 day may be 23 or 25 hours, if the user lives in an area\n * that has daylight savings time (or even 23.5/24.5 hours in Lord Howe Island!)\n *\n * Shorthand unit supported are:\n *\n * - `y` for years\n * - `M` for months\n * - `w` for weeks\n * - `d` for days\n * - `h` for hours\n * - `s` for seconds\n * - `ms` for milliseconds\n *\n * @param {string} str - A string representing the duration.\n * @returns {[value: number, unit: dayjs.ManipulateType]} Arguments to pass to `dayjs.add()`\n */\nconst parseDuration = function (str) {\n const statement = /^(\\d+(?:\\.\\d+)?)([Mdhmswy]|ms)$/.exec(str.trim());\n if (statement !== null) {\n return [Number.parseFloat(statement[1]), statement[2]];\n }\n // NaN means an invalid duration\n return [NaN, 'ms'];\n};\n\nconst getEndDate = function (prevTime, dateFormat, str, inclusive = false) {\n str = str.trim();\n\n // Check for actual date\n let mDate = dayjs(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n if (inclusive) {\n mDate = mDate.add(1, 'd');\n }\n return mDate.toDate();\n }\n\n let endTime = dayjs(prevTime);\n const [durationValue, durationUnit] = parseDuration(str);\n if (!Number.isNaN(durationValue)) {\n const newEndTime = endTime.add(durationValue, durationUnit);\n if (newEndTime.isValid()) {\n endTime = newEndTime;\n }\n }\n return endTime.toDate();\n};\n\nlet taskCnt = 0;\nconst parseId = function (idStr) {\n if (idStr === undefined) {\n taskCnt = taskCnt + 1;\n return 'task' + taskCnt;\n }\n return idStr;\n};\n// id, startDate, endDate\n// id, startDate, length\n// id, after x, endDate\n// id, after x, length\n// startDate, endDate\n// startDate, length\n// after x, endDate\n// after x, length\n// endDate\n// length\n\nconst compileData = function (prevTask, dataStr) {\n let ds;\n\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n let endTimeData = '';\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = prevTask.endTime;\n endTimeData = data[0];\n break;\n case 2:\n task.id = parseId();\n task.startTime = getStartDate(undefined, dateFormat, data[0]);\n endTimeData = data[1];\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = getStartDate(undefined, dateFormat, data[1]);\n endTimeData = data[2];\n break;\n default:\n }\n\n if (endTimeData) {\n task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates);\n task.manualEndTime = dayjs(endTimeData, 'YYYY-MM-DD', true).isValid();\n checkTaskDates(task, dateFormat, excludes, includes);\n }\n\n return task;\n};\n\nconst parseData = function (prevTaskId, dataStr) {\n let ds;\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = {\n type: 'prevTaskEnd',\n id: prevTaskId,\n };\n task.endTime = {\n data: data[0],\n };\n break;\n case 2:\n task.id = parseId();\n task.startTime = {\n type: 'getStartDate',\n startData: data[0],\n };\n task.endTime = {\n data: data[1],\n };\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = {\n type: 'getStartDate',\n startData: data[1],\n };\n task.endTime = {\n data: data[2],\n };\n break;\n default:\n }\n\n return task;\n};\n\nlet lastTask;\nlet lastTaskID;\nlet rawTasks = [];\nconst taskDb = {};\nexport const addTask = function (descr, data) {\n const rawTask = {\n section: currentSection,\n type: currentSection,\n processed: false,\n manualEndTime: false,\n renderEndTime: null,\n raw: { data: data },\n task: descr,\n classes: [],\n };\n const taskInfo = parseData(lastTaskID, data);\n rawTask.raw.startTime = taskInfo.startTime;\n rawTask.raw.endTime = taskInfo.endTime;\n rawTask.id = taskInfo.id;\n rawTask.prevTaskId = lastTaskID;\n rawTask.active = taskInfo.active;\n rawTask.done = taskInfo.done;\n rawTask.crit = taskInfo.crit;\n rawTask.milestone = taskInfo.milestone;\n rawTask.order = lastOrder;\n\n lastOrder++;\n\n const pos = rawTasks.push(rawTask);\n\n lastTaskID = rawTask.id;\n // Store cross ref\n taskDb[rawTask.id] = pos - 1;\n};\n\nexport const findTaskById = function (id) {\n const pos = taskDb[id];\n return rawTasks[pos];\n};\n\nexport const addTaskOrg = function (descr, data) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: [],\n };\n const taskInfo = compileData(lastTask, data);\n newTask.startTime = taskInfo.startTime;\n newTask.endTime = taskInfo.endTime;\n newTask.id = taskInfo.id;\n newTask.active = taskInfo.active;\n newTask.done = taskInfo.done;\n newTask.crit = taskInfo.crit;\n newTask.milestone = taskInfo.milestone;\n lastTask = newTask;\n tasks.push(newTask);\n};\n\nconst compileTasks = function () {\n const compileTask = function (pos) {\n const task = rawTasks[pos];\n let startTime = '';\n switch (rawTasks[pos].raw.startTime.type) {\n case 'prevTaskEnd': {\n const prevTask = findTaskById(task.prevTaskId);\n task.startTime = prevTask.endTime;\n break;\n }\n case 'getStartDate':\n startTime = getStartDate(undefined, dateFormat, rawTasks[pos].raw.startTime.startData);\n if (startTime) {\n rawTasks[pos].startTime = startTime;\n }\n break;\n }\n\n if (rawTasks[pos].startTime) {\n rawTasks[pos].endTime = getEndDate(\n rawTasks[pos].startTime,\n dateFormat,\n rawTasks[pos].raw.endTime.data,\n inclusiveEndDates\n );\n if (rawTasks[pos].endTime) {\n rawTasks[pos].processed = true;\n rawTasks[pos].manualEndTime = dayjs(\n rawTasks[pos].raw.endTime.data,\n 'YYYY-MM-DD',\n true\n ).isValid();\n checkTaskDates(rawTasks[pos], dateFormat, excludes, includes);\n }\n }\n\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n *\n * @param ids Comma separated list of ids\n * @param _linkStr URL to create a link for\n */\nexport const setLink = function (ids, _linkStr) {\n let linkStr = _linkStr;\n if (configApi.getConfig().securityLevel !== 'loose') {\n linkStr = sanitizeUrl(_linkStr);\n }\n ids.split(',').forEach(function (id) {\n let rawTask = findTaskById(id);\n if (rawTask !== undefined) {\n pushFun(id, () => {\n window.open(linkStr, '_self');\n });\n links[id] = linkStr;\n }\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n *\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function (ids, className) {\n ids.split(',').forEach(function (id) {\n let rawTask = findTaskById(id);\n if (rawTask !== undefined) {\n rawTask.classes.push(className);\n }\n });\n};\n\nconst setClickFun = function (id, functionName, functionArgs) {\n if (configApi.getConfig().securityLevel !== 'loose') {\n return;\n }\n if (functionName === undefined) {\n return;\n }\n\n let argList = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(id);\n }\n\n let rawTask = findTaskById(id);\n if (rawTask !== undefined) {\n pushFun(id, () => {\n utils.runFunc(functionName, ...argList);\n });\n }\n};\n\n/**\n * The callbackFunction is executed in a click event bound to the task with the specified id or the\n * task's assigned text\n *\n * @param id The task's id\n * @param callbackFunction A function to be executed when clicked on the task or the task's text\n */\nconst pushFun = function (id, callbackFunction) {\n funs.push(\n function () {\n // const elem = d3.select(element).select(`[id=\"${id}\"]`)\n const elem = document.querySelector(`[id=\"${id}\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function () {\n callbackFunction();\n });\n }\n },\n function () {\n // const elem = d3.select(element).select(`[id=\"${id}-text\"]`)\n const elem = document.querySelector(`[id=\"${id}-text\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function () {\n callbackFunction();\n });\n }\n }\n );\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n *\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs Function args the function should be called with\n */\nexport const setClickEvent = function (ids, functionName, functionArgs) {\n ids.split(',').forEach(function (id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Binds all functions previously added to fun (specified through click) to the element\n *\n * @param element\n */\nexport const bindFunctions = function (element) {\n funs.forEach(function (fun) {\n fun(element);\n });\n};\n\nexport default {\n parseDirective,\n getConfig: () => configApi.getConfig().gantt,\n clear,\n setDateFormat,\n getDateFormat,\n enableInclusiveEndDates,\n endDatesAreInclusive,\n enableTopAxis,\n topAxisEnabled,\n setAxisFormat,\n getAxisFormat,\n setTickInterval,\n getTickInterval,\n setTodayMarker,\n getTodayMarker,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n setAccDescription,\n getAccDescription,\n addSection,\n getSections,\n getTasks,\n addTask,\n findTaskById,\n addTaskOrg,\n setIncludes,\n getIncludes,\n setExcludes,\n getExcludes,\n setClickEvent,\n setLink,\n getLinks,\n bindFunctions,\n parseDuration,\n isInvalidDate,\n};\n\n/**\n * @param data\n * @param task\n * @param tags\n */\nfunction getTaskTags(data, task, tags) {\n let matchFound = true;\n while (matchFound) {\n matchFound = false;\n tags.forEach(function (t) {\n const pattern = '^\\\\s*' + t + '\\\\s*$';\n const regex = new RegExp(pattern);\n if (data[0].match(regex)) {\n task[t] = true;\n data.shift(1);\n matchFound = true;\n }\n });\n }\n}\n","import dayjs from 'dayjs';\nimport { log } from '../../logger';\nimport {\n select,\n scaleTime,\n min,\n max,\n scaleLinear,\n interpolateHcl,\n axisBottom,\n axisTop,\n timeFormat,\n timeMinute,\n timeHour,\n timeDay,\n timeWeek,\n timeMonth,\n} from 'd3';\nimport common from '../common/common';\nimport { getConfig } from '../../config';\nimport { configureSvgSize } from '../../setupGraphViewbox';\n\nexport const setConf = function () {\n log.debug('Something is calling, setConf, remove the call');\n};\n\nlet w;\nexport const draw = function (text, id, version, diagObj) {\n const conf = getConfig().gantt;\n // diagObj.db.clear();\n // parser.parse(text);\n\n const securityLevel = getConfig().securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n const elem = doc.getElementById(id);\n w = elem.parentElement.offsetWidth;\n\n if (w === undefined) {\n w = 1200;\n }\n\n if (conf.useWidth !== undefined) {\n w = conf.useWidth;\n }\n\n const taskArray = diagObj.db.getTasks();\n\n // Set height based on number of tasks\n const h = taskArray.length * (conf.barHeight + conf.barGap) + 2 * conf.topPadding;\n\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h);\n const svg = root.select(`[id=\"${id}\"]`);\n\n // Set timescale\n const timeScale = scaleTime()\n .domain([\n min(taskArray, function (d) {\n return d.startTime;\n }),\n max(taskArray, function (d) {\n return d.endTime;\n }),\n ])\n .rangeRound([0, w - conf.leftPadding - conf.rightPadding]);\n\n let categories = [];\n\n for (const element of taskArray) {\n categories.push(element.type);\n }\n\n const catsUnfiltered = categories; // for vert labels\n\n categories = checkUnique(categories);\n\n /**\n * @param a\n * @param b\n */\n function taskCompare(a, b) {\n const taskA = a.startTime;\n const taskB = b.startTime;\n let result = 0;\n if (taskA > taskB) {\n result = 1;\n } else if (taskA < taskB) {\n result = -1;\n }\n return result;\n }\n\n // Sort the task array using the above taskCompare() so that\n // tasks are created based on their order of startTime\n taskArray.sort(taskCompare);\n\n makeGant(taskArray, w, h);\n\n configureSvgSize(svg, h, w, conf.useMaxWidth);\n\n svg\n .append('text')\n .text(diagObj.db.getDiagramTitle())\n .attr('x', w / 2)\n .attr('y', conf.titleTopMargin)\n .attr('class', 'titleText');\n\n /**\n * @param tasks\n * @param pageWidth\n * @param pageHeight\n */\n function makeGant(tasks, pageWidth, pageHeight) {\n const barHeight = conf.barHeight;\n const gap = barHeight + conf.barGap;\n const topPadding = conf.topPadding;\n const leftPadding = conf.leftPadding;\n\n const colorScale = scaleLinear()\n .domain([0, categories.length])\n .range(['#00B9FA', '#F95002'])\n .interpolate(interpolateHcl);\n\n drawExcludeDays(\n gap,\n topPadding,\n leftPadding,\n pageWidth,\n pageHeight,\n tasks,\n diagObj.db.getExcludes(),\n diagObj.db.getIncludes()\n );\n makeGrid(leftPadding, topPadding, pageWidth, pageHeight);\n drawRects(tasks, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight);\n vertLabels(gap, topPadding, leftPadding, barHeight, colorScale);\n drawToday(leftPadding, topPadding, pageWidth, pageHeight);\n }\n\n /**\n * @param theArray\n * @param theGap\n * @param theTopPad\n * @param theSidePad\n * @param theBarHeight\n * @param theColorScale\n * @param w\n */\n function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w) {\n // Draw background rects covering the entire width of the graph, these form the section rows.\n svg\n .append('g')\n .selectAll('rect')\n .data(theArray)\n .enter()\n .append('rect')\n .attr('x', 0)\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad - 2;\n })\n .attr('width', function () {\n return w - conf.rightPadding / 2;\n })\n .attr('height', theGap)\n .attr('class', function (d) {\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n return 'section section' + (i % conf.numberSectionStyles);\n }\n }\n return 'section section0';\n });\n\n // Draw the rects representing the tasks\n const rectangles = svg.append('g').selectAll('rect').data(theArray).enter();\n\n const links = diagObj.db.getLinks();\n\n // Render the tasks with links\n // Render the other tasks\n rectangles\n .append('rect')\n .attr('id', function (d) {\n return d.id;\n })\n .attr('rx', 3)\n .attr('ry', 3)\n .attr('x', function (d) {\n if (d.milestone) {\n return (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) -\n 0.5 * theBarHeight\n );\n }\n return timeScale(d.startTime) + theSidePad;\n })\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad;\n })\n .attr('width', function (d) {\n if (d.milestone) {\n return theBarHeight;\n }\n return timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime);\n })\n .attr('height', theBarHeight)\n .attr('transform-origin', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n\n return (\n (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime))\n ).toString() +\n 'px ' +\n (i * theGap + theTopPad + 0.5 * theBarHeight).toString() +\n 'px'\n );\n })\n .attr('class', function (d) {\n const res = 'task';\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskClass = '';\n if (d.active) {\n if (d.crit) {\n taskClass += ' activeCrit';\n } else {\n taskClass = ' active';\n }\n } else if (d.done) {\n if (d.crit) {\n taskClass = ' doneCrit';\n } else {\n taskClass = ' done';\n }\n } else {\n if (d.crit) {\n taskClass += ' crit';\n }\n }\n\n if (taskClass.length === 0) {\n taskClass = ' task';\n }\n\n if (d.milestone) {\n taskClass = ' milestone ' + taskClass;\n }\n\n taskClass += secNum;\n\n taskClass += ' ' + classStr;\n\n return res + taskClass;\n });\n\n // Append task labels\n rectangles\n .append('text')\n .attr('id', function (d) {\n return d.id + '-text';\n })\n .text(function (d) {\n return d.task;\n })\n .attr('font-size', conf.fontSize)\n .attr('x', function (d) {\n let startX = timeScale(d.startTime);\n let endX = timeScale(d.renderEndTime || d.endTime);\n if (d.milestone) {\n startX += 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;\n }\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return startX + theSidePad - 5;\n } else {\n return endX + theSidePad + 5;\n }\n } else {\n return (endX - startX) / 2 + startX + theSidePad;\n }\n })\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + conf.barHeight / 2 + (conf.fontSize / 2 - 2) + theTopPad;\n })\n .attr('text-height', theBarHeight)\n .attr('class', function (d) {\n const startX = timeScale(d.startTime);\n let endX = timeScale(d.endTime);\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskType = '';\n if (d.active) {\n if (d.crit) {\n taskType = 'activeCritText' + secNum;\n } else {\n taskType = 'activeText' + secNum;\n }\n }\n\n if (d.done) {\n if (d.crit) {\n taskType = taskType + ' doneCritText' + secNum;\n } else {\n taskType = taskType + ' doneText' + secNum;\n }\n } else {\n if (d.crit) {\n taskType = taskType + ' critText' + secNum;\n }\n }\n\n if (d.milestone) {\n taskType += ' milestoneText';\n }\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return classStr + ' taskTextOutsideLeft taskTextOutside' + secNum + ' ' + taskType;\n } else {\n return (\n classStr +\n ' taskTextOutsideRight taskTextOutside' +\n secNum +\n ' ' +\n taskType +\n ' width-' +\n textWidth\n );\n }\n } else {\n return classStr + ' taskText taskText' + secNum + ' ' + taskType + ' width-' + textWidth;\n }\n });\n\n const securityLevel = getConfig().securityLevel;\n\n // Wrap the tasks in an a tag for working links without javascript\n if (securityLevel === 'sandbox') {\n let sandboxElement;\n sandboxElement = select('#i' + id);\n const doc = sandboxElement.nodes()[0].contentDocument;\n\n rectangles\n .filter(function (d) {\n return links[d.id] !== undefined;\n })\n .each(function (o) {\n var taskRect = doc.querySelector('#' + o.id);\n var taskText = doc.querySelector('#' + o.id + '-text');\n const oldParent = taskRect.parentNode;\n var Link = doc.createElement('a');\n Link.setAttribute('xlink:href', links[o.id]);\n Link.setAttribute('target', '_top');\n oldParent.appendChild(Link);\n Link.appendChild(taskRect);\n Link.appendChild(taskText);\n });\n }\n }\n /**\n * @param theGap\n * @param theTopPad\n * @param theSidePad\n * @param w\n * @param h\n * @param tasks\n * @param excludes\n * @param includes\n */\n function drawExcludeDays(theGap, theTopPad, theSidePad, w, h, tasks, excludes, includes) {\n const minTime = tasks.reduce(\n (min, { startTime }) => (min ? Math.min(min, startTime) : startTime),\n 0\n );\n const maxTime = tasks.reduce((max, { endTime }) => (max ? Math.max(max, endTime) : endTime), 0);\n const dateFormat = diagObj.db.getDateFormat();\n if (!minTime || !maxTime) {\n return;\n }\n\n const excludeRanges = [];\n let range = null;\n let d = dayjs(minTime);\n while (d.valueOf() <= maxTime) {\n if (diagObj.db.isInvalidDate(d, dateFormat, excludes, includes)) {\n if (!range) {\n range = {\n start: d,\n end: d,\n };\n } else {\n range.end = d;\n }\n } else {\n if (range) {\n excludeRanges.push(range);\n range = null;\n }\n }\n d = d.add(1, 'd');\n }\n\n const rectangles = svg.append('g').selectAll('rect').data(excludeRanges).enter();\n\n rectangles\n .append('rect')\n .attr('id', function (d) {\n return 'exclude-' + d.start.format('YYYY-MM-DD');\n })\n .attr('x', function (d) {\n return timeScale(d.start) + theSidePad;\n })\n .attr('y', conf.gridLineStartPadding)\n .attr('width', function (d) {\n const renderEnd = d.end.add(1, 'day');\n return timeScale(renderEnd) - timeScale(d.start);\n })\n .attr('height', h - theTopPad - conf.gridLineStartPadding)\n .attr('transform-origin', function (d, i) {\n return (\n (\n timeScale(d.start) +\n theSidePad +\n 0.5 * (timeScale(d.end) - timeScale(d.start))\n ).toString() +\n 'px ' +\n (i * theGap + 0.5 * h).toString() +\n 'px'\n );\n })\n .attr('class', 'exclude-range');\n }\n\n /**\n * @param theSidePad\n * @param theTopPad\n * @param w\n * @param h\n */\n function makeGrid(theSidePad, theTopPad, w, h) {\n let bottomXAxis = axisBottom(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'));\n\n const reTickInterval = /^([1-9]\\d*)(minute|hour|day|week|month)$/;\n const resultTickInterval = reTickInterval.exec(\n diagObj.db.getTickInterval() || conf.tickInterval\n );\n\n if (resultTickInterval !== null) {\n const every = resultTickInterval[1];\n const interval = resultTickInterval[2];\n switch (interval) {\n case 'minute':\n bottomXAxis.ticks(timeMinute.every(every));\n break;\n case 'hour':\n bottomXAxis.ticks(timeHour.every(every));\n break;\n case 'day':\n bottomXAxis.ticks(timeDay.every(every));\n break;\n case 'week':\n bottomXAxis.ticks(timeWeek.every(every));\n break;\n case 'month':\n bottomXAxis.ticks(timeMonth.every(every));\n break;\n }\n }\n\n svg\n .append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + (h - 50) + ')')\n .call(bottomXAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10)\n .attr('dy', '1em');\n\n if (diagObj.db.topAxisEnabled() || conf.topAxis) {\n let topXAxis = axisTop(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'));\n\n if (resultTickInterval !== null) {\n const every = resultTickInterval[1];\n const interval = resultTickInterval[2];\n switch (interval) {\n case 'minute':\n topXAxis.ticks(timeMinute.every(every));\n break;\n case 'hour':\n topXAxis.ticks(timeHour.every(every));\n break;\n case 'day':\n topXAxis.ticks(timeDay.every(every));\n break;\n case 'week':\n topXAxis.ticks(timeWeek.every(every));\n break;\n case 'month':\n topXAxis.ticks(timeMonth.every(every));\n break;\n }\n }\n\n svg\n .append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + theTopPad + ')')\n .call(topXAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10);\n // .attr('dy', '1em');\n }\n }\n\n /**\n * @param theGap\n * @param theTopPad\n */\n function vertLabels(theGap, theTopPad) {\n const numOccurances = [];\n let prevGap = 0;\n\n for (const [i, category] of categories.entries()) {\n numOccurances[i] = [category, getCount(category, catsUnfiltered)];\n }\n\n svg\n .append('g') // without doing this, impossible to put grid lines behind text\n .selectAll('text')\n .data(numOccurances)\n .enter()\n .append(function (d) {\n const rows = d[0].split(common.lineBreakRegex);\n const dy = -(rows.length - 1) / 2;\n\n const svgLabel = doc.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('dy', dy + 'em');\n\n for (const [j, row] of rows.entries()) {\n const tspan = doc.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttribute('alignment-baseline', 'central');\n tspan.setAttribute('x', '10');\n if (j > 0) {\n tspan.setAttribute('dy', '1em');\n }\n tspan.textContent = row;\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n })\n .attr('x', 10)\n .attr('y', function (d, i) {\n if (i > 0) {\n for (let j = 0; j < i; j++) {\n prevGap += numOccurances[i - 1][1];\n return (d[1] * theGap) / 2 + prevGap * theGap + theTopPad;\n }\n } else {\n return (d[1] * theGap) / 2 + theTopPad;\n }\n })\n .attr('font-size', conf.sectionFontSize)\n .attr('font-size', conf.sectionFontSize)\n .attr('class', function (d) {\n for (const [i, category] of categories.entries()) {\n if (d[0] === category) {\n return 'sectionTitle sectionTitle' + (i % conf.numberSectionStyles);\n }\n }\n return 'sectionTitle';\n });\n }\n\n /**\n * @param theSidePad\n * @param theTopPad\n * @param w\n * @param h\n */\n function drawToday(theSidePad, theTopPad, w, h) {\n const todayMarker = diagObj.db.getTodayMarker();\n if (todayMarker === 'off') {\n return;\n }\n\n const todayG = svg.append('g').attr('class', 'today');\n const today = new Date();\n const todayLine = todayG.append('line');\n\n todayLine\n .attr('x1', timeScale(today) + theSidePad)\n .attr('x2', timeScale(today) + theSidePad)\n .attr('y1', conf.titleTopMargin)\n .attr('y2', h - conf.titleTopMargin)\n .attr('class', 'today');\n\n if (todayMarker !== '') {\n todayLine.attr('style', todayMarker.replace(/,/g, ';'));\n }\n }\n\n /**\n * From this stack exchange question:\n * http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript\n *\n * @param arr\n */\n function checkUnique(arr) {\n const hash = {};\n const result = [];\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (!Object.prototype.hasOwnProperty.call(hash, arr[i])) {\n // it works with objects! in FF, at least\n hash[arr[i]] = true;\n result.push(arr[i]);\n }\n }\n return result;\n }\n\n /**\n * From this stack exchange question:\n * http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array\n *\n * @param arr\n */\n function getCounts(arr) {\n let i = arr.length; // const to loop over\n const obj = {}; // obj to store results\n while (i) {\n obj[arr[--i]] = (obj[arr[i]] || 0) + 1; // count occurrences\n }\n return obj;\n }\n\n /**\n * Get specific from everything\n *\n * @param word\n * @param arr\n */\n function getCount(word, arr) {\n return getCounts(arr)[word] || 0;\n }\n};\n\nexport default {\n setConf,\n draw,\n};\n","const getStyles = (options) =>\n `\n .mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n .exclude-range {\n fill: ${options.excludeBkgColor};\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${options.sectionBkgColor};\n }\n\n .section2 {\n fill: ${options.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${options.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n // font-size: ${options.ganttFontSize};\n // text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${options.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ${options.fontFamily};\n fill: ${options.textColor};\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${options.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n\n // .taskText:not([font-size]) {\n // font-size: ${options.ganttFontSize};\n // }\n\n .taskTextOutsideRight {\n fill: ${options.taskTextDarkColor};\n text-anchor: start;\n // font-size: ${options.ganttFontSize};\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ${options.taskTextDarkColor};\n text-anchor: end;\n // font-size: ${options.ganttFontSize};\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${options.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${options.taskBkgColor};\n stroke: ${options.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${options.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${options.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${options.activeTaskBkgColor};\n stroke: ${options.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${options.doneTaskBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor} ;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n`;\n\nexport default getStyles;\n","// @ts-ignore: TODO Fix ts errors\nimport ganttParser from './parser/gantt';\nimport ganttDb from './ganttDb';\nimport ganttRenderer from './ganttRenderer';\nimport ganttStyles from './styles';\nimport { DiagramDefinition } from '../../diagram-api/types';\n\nexport const diagram: DiagramDefinition = {\n parser: ganttParser,\n db: ganttDb,\n renderer: ganttRenderer,\n styles: ganttStyles,\n};\n"],"names":["ascending","a","b","descending","bisector","f","compare1","compare2","delta","d","x","zero","left","lo","hi","mid","right","center","i","number","ascendingBisect","bisectRight","bisect","e10","e5","e2","ticks","start","stop","count","reverse","n","step","tickIncrement","r0","r1","power","error","tickStep","step0","step1","max","values","valueof","value","index","min","identity$2","top","bottom","epsilon","translateX","translateY","y","scale","offset","entering","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","k","transform","context","format","identity","spacing","range","range0","range1","position","selection","path","tick","tickExit","tickEnter","line","text","p","_","axisTop","axisBottom","radians","degrees","K","Xn","Yn","Zn","t0","t1","t2","t3","labConvert","o","Lab","Hcl","hcl2lab","Rgb","rgbConvert","r","rgb2lrgb","g","xyz2lab","z","lab","l","opacity","define","extend","Color","lab2xyz","lrgb2rgb","hclConvert","h","hcl","c","numberArray","t","isNumberArray","genericArray","nb","na","date$1","object","interpolate","constant","color","rgb","string","date","interpolateRound","hue","end","colorHcl","interpolateHcl","formatDecimal","formatDecimalParts","coefficient","exponent","formatGroup","grouping","thousands","width","j","length","formatNumerals","numerals","re","formatSpecifier","specifier","match","FormatSpecifier","formatTrim","s","out","i0","i1","prefixExponent","formatPrefixAuto","formatRounded","formatTypes","identity$1","map","prefixes","formatLocale$1","locale","group","currencyPrefix","currencySuffix","decimal","percent","minus","nan","newFormat","fill","align","sign","symbol","comma","precision","trim","type","prefix","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","padding","formatPrefix","e","defaultLocale","definition","formatLocale","precisionFixed","precisionPrefix","precisionRound","constants","unit","normalize","clamper","bimap","domain","d0","d1","polymap","copy","source","target","transformer","interpolateValue","untransform","unknown","clamp","piecewise","output","input","rescale","interpolateNumber","u","continuous","linearish","prestep","maxIter","linear","initRange","nice","interval","x0","x1","newInterval","floori","offseti","field","previous","test","millisecond","millisecond$1","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","second","utcSecond","minute","timeMinute","hour","timeHour","day","timeDay","weekday","sunday","monday","tuesday","wednesday","thursday","friday","saturday","month","timeMonth","year","timeYear","utcMinute","utcMinute$1","utcHour","utcHour$1","utcDay","utcDay$1","utcWeekday","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcMonth","utcMonth$1","utcYear","utcYear$1","ticker","week","tickIntervals","tickInterval","utcWeek","timeTicks","timeTickInterval","localDate","utcDate","newDate","m","locale_dateTime","locale_date","locale_time","locale_periods","locale_weekdays","locale_shortWeekdays","locale_months","locale_shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","formatMonth","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatQuarter","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCQuarter","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseZone","parseLiteralPercent","pad","pads","newParse","Z","parseSpecifier","timeMonday","parse","numberRe","percentRe","requoteRe","requote","names","name","timeSunday","dISO","timeThursday","dow","UTCdISO","timeFormat","calendar","invert","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","time","timeWeek","timeSecond","parser","v","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","str","hash","self","stack","tstack","vstack","lstack","table","TERROR","EOF","args","lexer","sharedState","yyloc","ranges","lex","token","state","action","yyval","len","newState","expected","errStr","ch","lines","oldLines","past","next","pre","indexed_rule","backup","tempMatch","rules","condition","yy_","$avoiding_name_collisions","YY_START","Parser","module","this","M","Y","D","dayjs","dayjsIsoWeek","dayjsCustomParseFormat","dayjsAdvancedFormat","dateFormat","axisFormat","todayMarker","includes","excludes","links","sections","tasks","currentSection","tags","funs","inclusiveEndDates","topAxis","lastOrder","parseDirective","statement","mermaidAPI","clear","taskCnt","lastTask","lastTaskID","rawTasks","commonClear","setAxisFormat","txt","getAxisFormat","setTickInterval","getTickInterval","setTodayMarker","getTodayMarker","setDateFormat","enableInclusiveEndDates","endDatesAreInclusive","enableTopAxis","topAxisEnabled","getDateFormat","setIncludes","getIncludes","setExcludes","getExcludes","getLinks","addSection","getSections","getTasks","allItemsPricessed","compileTasks","maxDepth","iterationCount","isInvalidDate","checkTaskDates","task","startTime","originalEndTime","fixedEndTime","renderEndTime","fixTaskDates","endTime","invalid","getStartDate","prevTime","afterStatement","latestEndingTask","id","findTaskById","dt","mDate","log","parseDuration","getEndDate","inclusive","durationValue","durationUnit","newEndTime","parseId","idStr","compileData","prevTask","dataStr","ds","data","getTaskTags","endTimeData","parseData","prevTaskId","taskDb","addTask","descr","rawTask","taskInfo","pos","addTaskOrg","newTask","compileTask","allProcessed","setLink","ids","_linkStr","linkStr","configApi.getConfig","sanitizeUrl","pushFun","setClass","className","setClickFun","functionName","functionArgs","argList","item","utils","callbackFunction","elem","setClickEvent","bindFunctions","element","fun","ganttDb","setAccTitle","getAccTitle","setDiagramTitle","getDiagramTitle","setAccDescription","getAccDescription","matchFound","pattern","regex","setConf","w","draw","version","diagObj","conf","getConfig","securityLevel","sandboxElement","select","root","doc","taskArray","svg","timeScale","scaleTime","categories","catsUnfiltered","checkUnique","taskCompare","taskA","taskB","result","makeGant","configureSvgSize","pageWidth","pageHeight","barHeight","gap","topPadding","leftPadding","colorScale","scaleLinear","drawExcludeDays","makeGrid","drawRects","vertLabels","drawToday","theArray","theGap","theTopPad","theSidePad","theBarHeight","theColorScale","category","rectangles","res","classStr","secNum","taskClass","startX","endX","textWidth","taskType","taskRect","taskText","oldParent","Link","minTime","maxTime","excludeRanges","renderEnd","bottomXAxis","resultTickInterval","every","topXAxis","numOccurances","prevGap","getCount","rows","common","dy","svgLabel","row","tspan","todayG","today","todayLine","arr","getCounts","obj","word","ganttRenderer","getStyles","options","ganttStyles","diagram","ganttParser"],"mappings":";;;;;;;AAAe,SAASA,GAAUC,GAAGC,GAAG;AACtC,SAAOD,KAAK,QAAQC,KAAK,OAAO,MAAMD,IAAIC,IAAI,KAAKD,IAAIC,IAAI,IAAID,KAAKC,IAAI,IAAI;AAC9E;ACFe,SAASC,GAAWF,GAAGC,GAAG;AACvC,SAAOD,KAAK,QAAQC,KAAK,OAAO,MAC5BA,IAAID,IAAI,KACRC,IAAID,IAAI,IACRC,KAAKD,IAAI,IACT;AACN;ACHe,SAASG,GAASC,GAAG;AAClC,MAAIC,GAAUC,GAAUC;AAOxB,EAAIH,EAAE,WAAW,KACfC,IAAWN,IACXO,IAAW,CAACE,GAAGC,MAAMV,GAAUK,EAAEI,CAAC,GAAGC,CAAC,GACtCF,IAAQ,CAACC,GAAGC,MAAML,EAAEI,CAAC,IAAIC,MAEzBJ,IAAWD,MAAML,MAAaK,MAAMF,KAAaE,IAAIM,IACrDJ,IAAWF,GACXG,IAAQH;AAGV,WAASO,EAAKX,GAAGS,GAAGG,IAAK,GAAGC,IAAKb,EAAE,QAAQ;AACzC,QAAIY,IAAKC,GAAI;AACX,UAAIR,EAASI,GAAGA,CAAC,MAAM;AAAG,eAAOI;AACjC,SAAG;AACD,cAAMC,IAAOF,IAAKC,MAAQ;AAC1B,QAAIP,EAASN,EAAEc,CAAG,GAAGL,CAAC,IAAI,IAAGG,IAAKE,IAAM,IACnCD,IAAKC;AAAA,MAClB,SAAeF,IAAKC;AAAA,IACf;AACD,WAAOD;AAAA,EACR;AAED,WAASG,EAAMf,GAAGS,GAAGG,IAAK,GAAGC,IAAKb,EAAE,QAAQ;AAC1C,QAAIY,IAAKC,GAAI;AACX,UAAIR,EAASI,GAAGA,CAAC,MAAM;AAAG,eAAOI;AACjC,SAAG;AACD,cAAMC,IAAOF,IAAKC,MAAQ;AAC1B,QAAIP,EAASN,EAAEc,CAAG,GAAGL,CAAC,KAAK,IAAGG,IAAKE,IAAM,IACpCD,IAAKC;AAAA,MAClB,SAAeF,IAAKC;AAAA,IACf;AACD,WAAOD;AAAA,EACR;AAED,WAASI,EAAOhB,GAAGS,GAAGG,IAAK,GAAGC,IAAKb,EAAE,QAAQ;AAC3C,UAAMiB,IAAIN,EAAKX,GAAGS,GAAGG,GAAIC,IAAK,CAAC;AAC/B,WAAOI,IAAIL,KAAML,EAAMP,EAAEiB,IAAI,CAAC,GAAGR,CAAC,IAAI,CAACF,EAAMP,EAAEiB,CAAC,GAAGR,CAAC,IAAIQ,IAAI,IAAIA;AAAA,EACjE;AAED,SAAO,EAAC,MAAAN,GAAM,QAAAK,GAAQ,OAAAD,EAAK;AAC7B;AAEA,SAASL,KAAO;AACd,SAAO;AACT;ACvDe,SAASQ,GAAOT,GAAG;AAChC,SAAOA,MAAM,OAAO,MAAM,CAACA;AAC7B;ACEA,MAAMU,KAAkBhB,GAASJ,EAAS,GAC7BqB,KAAcD,GAAgB;AAEfhB,GAASe,EAAM,EAAE;AAC7C,MAAAG,KAAeD;ACRf,IAAIE,KAAM,KAAK,KAAK,EAAE,GAClBC,KAAK,KAAK,KAAK,EAAE,GACjBC,KAAK,KAAK,KAAK,CAAC;AAEL,SAASC,GAAMC,GAAOC,GAAMC,GAAO;AAChD,MAAIC,GACA,IAAI,IACJC,GACAL,GACAM;AAGJ,MADAJ,IAAO,CAACA,GAAMD,IAAQ,CAACA,GAAOE,IAAQ,CAACA,GACnCF,MAAUC,KAAQC,IAAQ;AAAG,WAAO,CAACF,CAAK;AAE9C,OADIG,IAAUF,IAAOD,OAAOI,IAAIJ,GAAOA,IAAQC,GAAMA,IAAOG,KACvDC,IAAOC,GAAcN,GAAOC,GAAMC,CAAK,OAAO,KAAK,CAAC,SAASG,CAAI;AAAG,WAAO,CAAA;AAEhF,MAAIA,IAAO,GAAG;AACZ,QAAIE,IAAK,KAAK,MAAMP,IAAQK,CAAI,GAAGG,IAAK,KAAK,MAAMP,IAAOI,CAAI;AAI9D,SAHIE,IAAKF,IAAOL,KAAO,EAAEO,GACrBC,IAAKH,IAAOJ,KAAM,EAAEO,GACxBT,IAAQ,IAAI,MAAMK,IAAII,IAAKD,IAAK,CAAC,GAC1B,EAAE,IAAIH;AAAG,MAAAL,EAAM,CAAC,KAAKQ,IAAK,KAAKF;AAAA,EAC1C,OAAS;AACL,IAAAA,IAAO,CAACA;AACR,QAAIE,IAAK,KAAK,MAAMP,IAAQK,CAAI,GAAGG,IAAK,KAAK,MAAMP,IAAOI,CAAI;AAI9D,SAHIE,IAAKF,IAAOL,KAAO,EAAEO,GACrBC,IAAKH,IAAOJ,KAAM,EAAEO,GACxBT,IAAQ,IAAI,MAAMK,IAAII,IAAKD,IAAK,CAAC,GAC1B,EAAE,IAAIH;AAAG,MAAAL,EAAM,CAAC,KAAKQ,IAAK,KAAKF;AAAA,EACvC;AAED,SAAIF,KAASJ,EAAM,WAEZA;AACT;AAEO,SAASO,GAAcN,GAAOC,GAAMC,GAAO;AAChD,MAAIG,KAAQJ,IAAOD,KAAS,KAAK,IAAI,GAAGE,CAAK,GACzCO,IAAQ,KAAK,MAAM,KAAK,IAAIJ,CAAI,IAAI,KAAK,IAAI,GAC7CK,IAAQL,IAAO,KAAK,IAAI,IAAII,CAAK;AACrC,SAAOA,KAAS,KACTC,KAASd,KAAM,KAAKc,KAASb,KAAK,IAAIa,KAASZ,KAAK,IAAI,KAAK,KAAK,IAAI,IAAIW,CAAK,IAChF,CAAC,KAAK,IAAI,IAAI,CAACA,CAAK,KAAKC,KAASd,KAAM,KAAKc,KAASb,KAAK,IAAIa,KAASZ,KAAK,IAAI;AACzF;AAEO,SAASa,GAASX,GAAOC,GAAMC,GAAO;AAC3C,MAAIU,IAAQ,KAAK,IAAIX,IAAOD,CAAK,IAAI,KAAK,IAAI,GAAGE,CAAK,GAClDW,IAAQ,KAAK,IAAI,IAAI,KAAK,MAAM,KAAK,IAAID,CAAK,IAAI,KAAK,IAAI,CAAC,GAC5DF,IAAQE,IAAQC;AACpB,SAAIH,KAASd,KAAKiB,KAAS,KAClBH,KAASb,KAAIgB,KAAS,IACtBH,KAASZ,OAAIe,KAAS,IACxBZ,IAAOD,IAAQ,CAACa,IAAQA;AACjC;ACrDe,SAASC,GAAIC,GAAQC,GAAS;AAC3C,MAAIF;AACJ,MAAIE,MAAY;AACd,eAAWC,KAASF;AAClB,MAAIE,KAAS,SACLH,IAAMG,KAAUH,MAAQ,UAAaG,KAASA,OACpDH,IAAMG;AAAA,OAGL;AACL,QAAIC,IAAQ;AACZ,aAASD,KAASF;AAChB,OAAKE,IAAQD,EAAQC,GAAO,EAAEC,GAAOH,CAAM,MAAM,SACzCD,IAAMG,KAAUH,MAAQ,UAAaG,KAASA,OACpDH,IAAMG;AAAA,EAGX;AACD,SAAOH;AACT;ACnBe,SAASK,GAAIJ,GAAQC,GAAS;AAC3C,MAAIG;AACJ,MAAIH,MAAY;AACd,eAAWC,KAASF;AAClB,MAAIE,KAAS,SACLE,IAAMF,KAAUE,MAAQ,UAAaF,KAASA,OACpDE,IAAMF;AAAA,OAGL;AACL,QAAIC,IAAQ;AACZ,aAASD,KAASF;AAChB,OAAKE,IAAQD,EAAQC,GAAO,EAAEC,GAAOH,CAAM,MAAM,SACzCI,IAAMF,KAAUE,MAAQ,UAAaF,KAASA,OACpDE,IAAMF;AAAA,EAGX;AACD,SAAOE;AACT;ACnBe,SAAQC,GAACrC,GAAG;AACzB,SAAOA;AACT;ACAA,IAAIsC,KAAM,GACNhC,KAAQ,GACRiC,KAAS,GACTrC,KAAO,GACPsC,KAAU;AAEd,SAASC,GAAWzC,GAAG;AACrB,SAAO,eAAeA,IAAI;AAC5B;AAEA,SAAS0C,GAAWC,GAAG;AACrB,SAAO,iBAAiBA,IAAI;AAC9B;AAEA,SAASlC,GAAOmC,GAAO;AACrB,SAAO,CAAA7C,MAAK,CAAC6C,EAAM7C,CAAC;AACtB;AAEA,SAASQ,GAAOqC,GAAOC,GAAQ;AAC7B,SAAAA,IAAS,KAAK,IAAI,GAAGD,EAAM,UAAS,IAAKC,IAAS,CAAC,IAAI,GACnDD,EAAM,YAASC,IAAS,KAAK,MAAMA,CAAM,IACtC,CAAA9C,MAAK,CAAC6C,EAAM7C,CAAC,IAAI8C;AAC1B;AAEA,SAASC,KAAW;AAClB,SAAO,CAAC,KAAK;AACf;AAEA,SAASC,GAAKC,GAAQJ,GAAO;AAC3B,MAAIK,IAAgB,CAAE,GAClBC,IAAa,MACbC,IAAa,MACbC,IAAgB,GAChBC,IAAgB,GAChBC,IAAc,GACdT,IAAS,OAAO,SAAW,OAAe,OAAO,mBAAmB,IAAI,IAAI,KAC5EU,IAAIP,MAAWV,MAAOU,MAAW9C,KAAO,KAAK,GAC7CF,IAAIgD,MAAW9C,MAAQ8C,MAAW1C,KAAQ,MAAM,KAChDkD,IAAYR,MAAWV,MAAOU,MAAWT,KAASE,KAAaC;AAEnE,WAASK,EAAKU,GAAS;AACrB,QAAIzB,IAASkB,MAAsBN,EAAM,QAAQA,EAAM,MAAM,MAAMA,GAAOK,CAAa,IAAIL,EAAM,OAAQ,IACrGc,IAASP,MAAsBP,EAAM,aAAaA,EAAM,WAAW,MAAMA,GAAOK,CAAa,IAAIU,KACjGC,IAAU,KAAK,IAAIR,GAAe,CAAC,IAAIE,GACvCO,IAAQjB,EAAM,MAAO,GACrBkB,IAAS,CAACD,EAAM,CAAC,IAAIhB,GACrBkB,IAAS,CAACF,EAAMA,EAAM,SAAS,CAAC,IAAIhB,GACpCmB,KAAYpB,EAAM,YAAYrC,KAASE,IAAQmC,EAAM,KAAM,GAAEC,CAAM,GACnEoB,IAAYR,EAAQ,YAAYA,EAAQ,UAAW,IAAGA,GACtDS,IAAOD,EAAU,UAAU,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,GACjDE,IAAOF,EAAU,UAAU,OAAO,EAAE,KAAKjC,GAAQY,CAAK,EAAE,MAAO,GAC/DwB,IAAWD,EAAK,KAAM,GACtBE,IAAYF,EAAK,QAAQ,OAAO,GAAG,EAAE,KAAK,SAAS,MAAM,GACzDG,IAAOH,EAAK,OAAO,MAAM,GACzBI,IAAOJ,EAAK,OAAO,MAAM;AAE7B,IAAAD,IAAOA,EAAK,MAAMA,EAAK,MAAK,EAAG,OAAO,QAAQ,OAAO,EAChD,KAAK,SAAS,QAAQ,EACtB,KAAK,UAAU,cAAc,CAAC,GAEnCC,IAAOA,EAAK,MAAME,CAAS,GAE3BC,IAAOA,EAAK,MAAMD,EAAU,OAAO,MAAM,EACpC,KAAK,UAAU,cAAc,EAC7B,KAAKrE,IAAI,KAAKuD,IAAIH,CAAa,CAAC,GAErCmB,IAAOA,EAAK,MAAMF,EAAU,OAAO,MAAM,EACpC,KAAK,QAAQ,cAAc,EAC3B,KAAKrE,GAAGuD,IAAIK,CAAO,EACnB,KAAK,MAAMZ,MAAWV,KAAM,QAAQU,MAAWT,KAAS,WAAW,QAAQ,CAAC,GAE7EkB,MAAYQ,MACdC,IAAOA,EAAK,WAAWT,CAAO,GAC9BU,IAAOA,EAAK,WAAWV,CAAO,GAC9Ba,IAAOA,EAAK,WAAWb,CAAO,GAC9Bc,IAAOA,EAAK,WAAWd,CAAO,GAE9BW,IAAWA,EAAS,WAAWX,CAAO,EACjC,KAAK,WAAWjB,EAAO,EACvB,KAAK,aAAa,SAASzC,GAAG;AAAE,aAAO,SAASA,IAAIiE,EAASjE,CAAC,CAAC,IAAIyD,EAAUzD,IAAI8C,CAAM,IAAI,KAAK,aAAa,WAAW;AAAA,IAAE,CAAE,GAEjIwB,EACK,KAAK,WAAW7B,EAAO,EACvB,KAAK,aAAa,SAASzC,GAAG;AAAE,UAAIyE,IAAI,KAAK,WAAW;AAAQ,aAAOhB,GAAWgB,KAAK,SAASA,IAAIA,EAAEzE,CAAC,CAAC,IAAIyE,IAAIR,EAASjE,CAAC,KAAK8C,CAAM;AAAA,IAAI,CAAA,IAGhJuB,EAAS,OAAM,GAEfF,EACK,KAAK,KAAKlB,MAAW9C,MAAQ8C,MAAW1C,KAClC+C,IAAgB,MAAME,IAAIF,IAAgB,MAAMS,IAAS,MAAMjB,IAAS,MAAMkB,IAAS,MAAMR,IAAIF,IAAgB,MAAMR,IAAS,MAAMiB,IAAS,MAAMC,IACrJV,IAAgB,MAAMS,IAAS,MAAMP,IAAIF,IAAgB,MAAMR,IAAS,MAAMkB,IAAS,MAAMR,IAAIF,IAAgB,MAAMS,IAAS,MAAMjB,IAAS,MAAMkB,CAAO,GAEvKI,EACK,KAAK,WAAW,CAAC,EACjB,KAAK,aAAa,SAASpE,GAAG;AAAE,aAAOyD,EAAUQ,EAASjE,CAAC,IAAI8C,CAAM;AAAA,IAAI,CAAA,GAE9EyB,EACK,KAAKtE,IAAI,KAAKuD,IAAIH,CAAa,GAEpCmB,EACK,KAAKvE,GAAGuD,IAAIK,CAAO,EACnB,KAAKF,CAAM,GAEhBO,EAAU,OAAOnB,EAAQ,EACpB,KAAK,QAAQ,MAAM,EACnB,KAAK,aAAa,EAAE,EACpB,KAAK,eAAe,YAAY,EAChC,KAAK,eAAeE,MAAW1C,KAAQ,UAAU0C,MAAW9C,KAAO,QAAQ,QAAQ,GAExF+D,EACK,KAAK,WAAW;AAAE,WAAK,SAASD;AAAA,IAAW,CAAA;AAAA,EACjD;AAED,SAAAjB,EAAK,QAAQ,SAAS0B,GAAG;AACvB,WAAO,UAAU,UAAU7B,IAAQ6B,GAAG1B,KAAQH;AAAA,EAClD,GAEEG,EAAK,QAAQ,WAAW;AACtB,WAAOE,IAAgB,MAAM,KAAK,SAAS,GAAGF;AAAA,EAClD,GAEEA,EAAK,gBAAgB,SAAS0B,GAAG;AAC/B,WAAO,UAAU,UAAUxB,IAAgBwB,KAAK,OAAO,CAAE,IAAG,MAAM,KAAKA,CAAC,GAAG1B,KAAQE,EAAc,MAAK;AAAA,EAC1G,GAEEF,EAAK,aAAa,SAAS0B,GAAG;AAC5B,WAAO,UAAU,UAAUvB,IAAauB,KAAK,OAAO,OAAO,MAAM,KAAKA,CAAC,GAAG1B,KAAQG,KAAcA,EAAW,MAAK;AAAA,EACpH,GAEEH,EAAK,aAAa,SAAS0B,GAAG;AAC5B,WAAO,UAAU,UAAUtB,IAAasB,GAAG1B,KAAQI;AAAA,EACvD,GAEEJ,EAAK,WAAW,SAAS0B,GAAG;AAC1B,WAAO,UAAU,UAAUrB,IAAgBC,IAAgB,CAACoB,GAAG1B,KAAQK;AAAA,EAC3E,GAEEL,EAAK,gBAAgB,SAAS0B,GAAG;AAC/B,WAAO,UAAU,UAAUrB,IAAgB,CAACqB,GAAG1B,KAAQK;AAAA,EAC3D,GAEEL,EAAK,gBAAgB,SAAS0B,GAAG;AAC/B,WAAO,UAAU,UAAUpB,IAAgB,CAACoB,GAAG1B,KAAQM;AAAA,EAC3D,GAEEN,EAAK,cAAc,SAAS0B,GAAG;AAC7B,WAAO,UAAU,UAAUnB,IAAc,CAACmB,GAAG1B,KAAQO;AAAA,EACzD,GAEEP,EAAK,SAAS,SAAS0B,GAAG;AACxB,WAAO,UAAU,UAAU5B,IAAS,CAAC4B,GAAG1B,KAAQF;AAAA,EACpD,GAESE;AACT;AAEO,SAAS2B,GAAQ9B,GAAO;AAC7B,SAAOG,GAAKT,IAAKM,CAAK;AACxB;AAMO,SAAS+B,GAAW/B,GAAO;AAChC,SAAOG,GAAKR,IAAQK,CAAK;AAC3B;ACzKO,MAAMgC,KAAU,KAAK,KAAK,KACpBC,KAAU,MAAM,KAAK,ICI5BC,KAAI,IACNC,KAAK,SACLC,KAAK,GACLC,KAAK,SACLC,KAAK,IAAI,IACTC,KAAK,IAAI,IACTC,KAAK,IAAID,KAAKA,IACdE,KAAKF,KAAKA,KAAKA;AAEnB,SAASG,GAAWC,GAAG;AACrB,MAAIA,aAAaC;AAAK,WAAO,IAAIA,GAAID,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,OAAO;AAC7D,MAAIA,aAAaE;AAAK,WAAOC,GAAQH,CAAC;AACtC,EAAMA,aAAaI,OAAMJ,IAAIK,GAAWL,CAAC;AACzC,MAAIM,IAAIC,GAASP,EAAE,CAAC,GAChBQ,IAAID,GAASP,EAAE,CAAC,GAChB/F,IAAIsG,GAASP,EAAE,CAAC,GAChB5C,IAAIqD,IAAS,YAAYH,IAAI,YAAYE,IAAI,YAAYvG,KAAKwF,EAAE,GAAGhF,GAAGiG;AAC1E,SAAIJ,MAAME,KAAKA,MAAMvG,IAAGQ,IAAIiG,IAAItD,KAC9B3C,IAAIgG,IAAS,YAAYH,IAAI,YAAYE,IAAI,YAAYvG,KAAKuF,EAAE,GAChEkB,IAAID,IAAS,YAAYH,IAAI,YAAYE,IAAI,YAAYvG,KAAKyF,EAAE,IAE3D,IAAIO,GAAI,MAAM7C,IAAI,IAAI,OAAO3C,IAAI2C,IAAI,OAAOA,IAAIsD,IAAIV,EAAE,OAAO;AACtE;AAMe,SAASW,GAAIC,GAAG5G,GAAGC,GAAG4G,GAAS;AAC5C,SAAO,UAAU,WAAW,IAAId,GAAWa,CAAC,IAAI,IAAIX,GAAIW,GAAG5G,GAAGC,GAAG4G,KAAkB,CAAW;AAChG;AAEO,SAASZ,GAAIW,GAAG5G,GAAGC,GAAG4G,GAAS;AACpC,OAAK,IAAI,CAACD,GACV,KAAK,IAAI,CAAC5G,GACV,KAAK,IAAI,CAACC,GACV,KAAK,UAAU,CAAC4G;AAClB;AAEAC,GAAOb,IAAKU,IAAKI,GAAOC,IAAO;AAAA,EAC7B,SAAShD,GAAG;AACV,WAAO,IAAIiC,GAAI,KAAK,IAAIV,MAAKvB,KAAY,IAAQ,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO;AAAA,EAC9E;AAAA,EACD,OAAOA,GAAG;AACR,WAAO,IAAIiC,GAAI,KAAK,IAAIV,MAAKvB,KAAY,IAAQ,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO;AAAA,EAC9E;AAAA,EACD,MAAM;AACJ,QAAIZ,KAAK,KAAK,IAAI,MAAM,KACpB3C,IAAI,MAAM,KAAK,CAAC,IAAI2C,IAAIA,IAAI,KAAK,IAAI,KACrCsD,IAAI,MAAM,KAAK,CAAC,IAAItD,IAAIA,IAAI,KAAK,IAAI;AACzC,WAAA3C,IAAI+E,KAAKyB,GAAQxG,CAAC,GAClB2C,IAAIqC,KAAKwB,GAAQ7D,CAAC,GAClBsD,IAAIhB,KAAKuB,GAAQP,CAAC,GACX,IAAIN;AAAA,MACTc,GAAU,YAAYzG,IAAI,YAAY2C,IAAI,YAAYsD,CAAC;AAAA,MACvDQ,GAAS,aAAazG,IAAI,YAAY2C,IAAI,WAAYsD,CAAC;AAAA,MACvDQ,GAAU,YAAYzG,IAAI,YAAY2C,IAAI,YAAYsD,CAAC;AAAA,MACvD,KAAK;AAAA,IACX;AAAA,EACG;AACH,CAAC,CAAC;AAEF,SAASD,GAAQ,GAAG;AAClB,SAAO,IAAIX,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC,IAAI,IAAID,KAAKF;AAChD;AAEA,SAASsB,GAAQ,GAAG;AAClB,SAAO,IAAIrB,KAAK,IAAI,IAAI,IAAIC,MAAM,IAAIF;AACxC;AAEA,SAASuB,GAASzG,GAAG;AACnB,SAAO,OAAOA,KAAK,WAAY,QAAQA,IAAI,QAAQ,KAAK,IAAIA,GAAG,IAAI,GAAG,IAAI;AAC5E;AAEA,SAAS8F,GAAS9F,GAAG;AACnB,UAAQA,KAAK,QAAQ,UAAUA,IAAI,QAAQ,KAAK,KAAKA,IAAI,SAAS,OAAO,GAAG;AAC9E;AAEA,SAAS0G,GAAWnB,GAAG;AACrB,MAAIA,aAAaE;AAAK,WAAO,IAAIA,GAAIF,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,OAAO;AAE7D,MADMA,aAAaC,OAAMD,IAAID,GAAWC,CAAC,IACrCA,EAAE,MAAM,KAAKA,EAAE,MAAM;AAAG,WAAO,IAAIE,GAAI,KAAK,IAAIF,EAAE,KAAKA,EAAE,IAAI,MAAM,IAAI,KAAKA,EAAE,GAAGA,EAAE,OAAO;AAC9F,MAAIoB,IAAI,KAAK,MAAMpB,EAAE,GAAGA,EAAE,CAAC,IAAIV;AAC/B,SAAO,IAAIY,GAAIkB,IAAI,IAAIA,IAAI,MAAMA,GAAG,KAAK,KAAKpB,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,CAAC,GAAGA,EAAE,GAAGA,EAAE,OAAO;AACtF;AAMO,SAASqB,GAAID,GAAGE,GAAGV,GAAGC,GAAS;AACpC,SAAO,UAAU,WAAW,IAAIM,GAAWC,CAAC,IAAI,IAAIlB,GAAIkB,GAAGE,GAAGV,GAAGC,KAAkB,CAAW;AAChG;AAEO,SAASX,GAAIkB,GAAGE,GAAGV,GAAGC,GAAS;AACpC,OAAK,IAAI,CAACO,GACV,KAAK,IAAI,CAACE,GACV,KAAK,IAAI,CAACV,GACV,KAAK,UAAU,CAACC;AAClB;AAEA,SAASV,GAAQH,GAAG;AAClB,MAAI,MAAMA,EAAE,CAAC;AAAG,WAAO,IAAIC,GAAID,EAAE,GAAG,GAAG,GAAGA,EAAE,OAAO;AACnD,MAAIoB,IAAIpB,EAAE,IAAIX;AACd,SAAO,IAAIY,GAAID,EAAE,GAAG,KAAK,IAAIoB,CAAC,IAAIpB,EAAE,GAAG,KAAK,IAAIoB,CAAC,IAAIpB,EAAE,GAAGA,EAAE,OAAO;AACrE;AAEAc,GAAOZ,IAAKmB,IAAKN,GAAOC,IAAO;AAAA,EAC7B,SAAShD,GAAG;AACV,WAAO,IAAIkC,GAAI,KAAK,GAAG,KAAK,GAAG,KAAK,IAAIX,MAAKvB,KAAY,IAAQ,KAAK,OAAO;AAAA,EAC9E;AAAA,EACD,OAAOA,GAAG;AACR,WAAO,IAAIkC,GAAI,KAAK,GAAG,KAAK,GAAG,KAAK,IAAIX,MAAKvB,KAAY,IAAQ,KAAK,OAAO;AAAA,EAC9E;AAAA,EACD,MAAM;AACJ,WAAOmC,GAAQ,IAAI,EAAE;EACtB;AACH,CAAC,CAAC;AC1Ha,SAAAoB,GAASvH,GAAGC,GAAG;AAC5B,EAAKA,MAAGA,IAAI;AACZ,MAAI6B,IAAI9B,IAAI,KAAK,IAAIC,EAAE,QAAQD,EAAE,MAAM,IAAI,GACvCsH,IAAIrH,EAAE,MAAO,GACb;AACJ,SAAO,SAASuH,GAAG;AACjB,SAAK,IAAI,GAAG,IAAI1F,GAAG,EAAE;AAAG,MAAAwF,EAAE,CAAC,IAAItH,EAAE,CAAC,KAAK,IAAIwH,KAAKvH,EAAE,CAAC,IAAIuH;AACvD,WAAOF;AAAA,EACX;AACA;AAEO,SAASG,GAAchH,GAAG;AAC/B,SAAO,YAAY,OAAOA,CAAC,KAAK,EAAEA,aAAa;AACjD;ACNO,SAASiH,GAAa1H,GAAGC,GAAG;AACjC,MAAI0H,IAAK1H,IAAIA,EAAE,SAAS,GACpB2H,IAAK5H,IAAI,KAAK,IAAI2H,GAAI3H,EAAE,MAAM,IAAI,GAClCS,IAAI,IAAI,MAAMmH,CAAE,GAChBN,IAAI,IAAI,MAAMK,CAAE,GAChB1G;AAEJ,OAAKA,IAAI,GAAGA,IAAI2G,GAAI,EAAE3G;AAAG,IAAAR,EAAEQ,CAAC,IAAI0B,GAAM3C,EAAEiB,CAAC,GAAGhB,EAAEgB,CAAC,CAAC;AAChD,SAAOA,IAAI0G,GAAI,EAAE1G;AAAG,IAAAqG,EAAErG,CAAC,IAAIhB,EAAEgB,CAAC;AAE9B,SAAO,SAASuG,GAAG;AACjB,SAAKvG,IAAI,GAAGA,IAAI2G,GAAI,EAAE3G;AAAG,MAAAqG,EAAErG,CAAC,IAAIR,EAAEQ,CAAC,EAAEuG,CAAC;AACtC,WAAOF;AAAA,EACX;AACA;ACrBe,SAAAO,GAAS7H,GAAGC,GAAG;AAC5B,MAAIO,IAAI,IAAI;AACZ,SAAOR,IAAI,CAACA,GAAGC,IAAI,CAACA,GAAG,SAASuH,GAAG;AACjC,WAAOhH,EAAE,QAAQR,KAAK,IAAIwH,KAAKvH,IAAIuH,CAAC,GAAGhH;AAAA,EAC3C;AACA;ACHe,SAAAsH,GAAS9H,GAAGC,GAAG;AAC5B,MAAIgB,IAAI,CAAE,GACNqG,IAAI,CAAE,GACNtD;AAEJ,GAAIhE,MAAM,QAAQ,OAAOA,KAAM,cAAUA,IAAI,MACzCC,MAAM,QAAQ,OAAOA,KAAM,cAAUA,IAAI;AAE7C,OAAK+D,KAAK/D;AACR,IAAI+D,KAAKhE,IACPiB,EAAE+C,CAAC,IAAIrB,GAAM3C,EAAEgE,CAAC,GAAG/D,EAAE+D,CAAC,CAAC,IAEvBsD,EAAEtD,CAAC,IAAI/D,EAAE+D,CAAC;AAId,SAAO,SAASwD,GAAG;AACjB,SAAKxD,KAAK/C;AAAG,MAAAqG,EAAEtD,CAAC,IAAI/C,EAAE+C,CAAC,EAAEwD,CAAC;AAC1B,WAAOF;AAAA,EACX;AACA;ACZe,SAAAS,GAAS/H,GAAGC,GAAG;AAC5B,MAAIuH,IAAI,OAAOvH,GAAGqH;AAClB,SAAOrH,KAAK,QAAQuH,MAAM,YAAYQ,GAAS/H,CAAC,KACzCuH,MAAM,WAAWtG,KAClBsG,MAAM,YAAaF,IAAIW,GAAMhI,CAAC,MAAMA,IAAIqH,GAAGY,MAAOC,KAClDlI,aAAagI,KAAQC,KACrBjI,aAAa,OAAOmI,KACpBX,GAAcxH,CAAC,IAAIsH,KACnB,MAAM,QAAQtH,CAAC,IAAIyH,KACnB,OAAOzH,EAAE,WAAY,cAAc,OAAOA,EAAE,YAAa,cAAc,MAAMA,CAAC,IAAI6H,KAClF5G,IAAQlB,GAAGC,CAAC;AACpB;ACrBe,SAAAoI,GAASrI,GAAGC,GAAG;AAC5B,SAAOD,IAAI,CAACA,GAAGC,IAAI,CAACA,GAAG,SAASuH,GAAG;AACjC,WAAO,KAAK,MAAMxH,KAAK,IAAIwH,KAAKvH,IAAIuH,CAAC;AAAA,EACzC;AACA;ACDA,SAASH,GAAIiB,GAAK;AAChB,SAAO,SAAS5G,GAAO6G,GAAK;AAC1B,QAAInB,IAAIkB,GAAK5G,IAAQ8G,GAAS9G,CAAK,GAAG,IAAI6G,IAAMC,GAASD,CAAG,GAAG,CAAC,GAC5DjB,IAAIW,GAAMvG,EAAM,GAAG6G,EAAI,CAAC,GACxB3B,IAAIqB,GAAMvG,EAAM,GAAG6G,EAAI,CAAC,GACxB1B,IAAUoB,GAAMvG,EAAM,SAAS6G,EAAI,OAAO;AAC9C,WAAO,SAASf,GAAG;AACjB,aAAA9F,EAAM,IAAI0F,EAAEI,CAAC,GACb9F,EAAM,IAAI4F,EAAEE,CAAC,GACb9F,EAAM,IAAIkF,EAAEY,CAAC,GACb9F,EAAM,UAAUmF,EAAQW,CAAC,GAClB9F,IAAQ;AAAA,IACrB;AAAA,EACG;AACH;AAEA,MAAe+G,KAAApB,GAAIiB,EAAG;ACnBP,SAAQI,GAACjI,GAAG;AACzB,SAAO,KAAK,IAAIA,IAAI,KAAK,MAAMA,CAAC,CAAC,KAAK,OAChCA,EAAE,eAAe,IAAI,EAAE,QAAQ,MAAM,EAAE,IACvCA,EAAE,SAAS,EAAE;AACrB;AAKO,SAASkI,GAAmBlI,GAAGwE,GAAG;AACvC,OAAKhE,KAAKR,IAAIwE,IAAIxE,EAAE,cAAcwE,IAAI,CAAC,IAAIxE,EAAE,cAAa,GAAI,QAAQ,GAAG,KAAK;AAAG,WAAO;AACxF,MAAIQ,GAAG2H,IAAcnI,EAAE,MAAM,GAAGQ,CAAC;AAIjC,SAAO;AAAA,IACL2H,EAAY,SAAS,IAAIA,EAAY,CAAC,IAAIA,EAAY,MAAM,CAAC,IAAIA;AAAA,IACjE,CAACnI,EAAE,MAAMQ,IAAI,CAAC;AAAA,EAClB;AACA;ACjBe,SAAQ4H,GAACpI,GAAG;AACzB,SAAOA,IAAIkI,GAAmB,KAAK,IAAIlI,CAAC,CAAC,GAAGA,IAAIA,EAAE,CAAC,IAAI;AACzD;ACJe,SAAAqI,GAASC,GAAUC,GAAW;AAC3C,SAAO,SAASrG,GAAOsG,GAAO;AAO5B,aANI,IAAItG,EAAM,QACV6E,IAAI,CAAE,GACN0B,IAAI,GACJ1C,IAAIuC,EAAS,CAAC,GACdI,IAAS,GAEN,IAAI,KAAK3C,IAAI,MACd2C,IAAS3C,IAAI,IAAIyC,MAAOzC,IAAI,KAAK,IAAI,GAAGyC,IAAQE,CAAM,IAC1D3B,EAAE,KAAK7E,EAAM,UAAU,KAAK6D,GAAG,IAAIA,CAAC,CAAC,GAChC,GAAA2C,KAAU3C,IAAI,KAAKyC;AACxB,MAAAzC,IAAIuC,EAASG,KAAKA,IAAI,KAAKH,EAAS,MAAM;AAG5C,WAAOvB,EAAE,QAAO,EAAG,KAAKwB,CAAS;AAAA,EACrC;AACA;ACjBe,SAAQI,GAACC,GAAU;AAChC,SAAO,SAAS1G,GAAO;AACrB,WAAOA,EAAM,QAAQ,UAAU,SAAS1B,GAAG;AACzC,aAAOoI,EAAS,CAACpI,CAAC;AAAA,IACxB,CAAK;AAAA,EACL;AACA;ACLA,IAAIqI,KAAK;AAEM,SAASC,GAAgBC,GAAW;AACjD,MAAI,EAAEC,IAAQH,GAAG,KAAKE,CAAS;AAAI,UAAM,IAAI,MAAM,qBAAqBA,CAAS;AACjF,MAAIC;AACJ,SAAO,IAAIC,GAAgB;AAAA,IACzB,MAAMD,EAAM,CAAC;AAAA,IACb,OAAOA,EAAM,CAAC;AAAA,IACd,MAAMA,EAAM,CAAC;AAAA,IACb,QAAQA,EAAM,CAAC;AAAA,IACf,MAAMA,EAAM,CAAC;AAAA,IACb,OAAOA,EAAM,CAAC;AAAA,IACd,OAAOA,EAAM,CAAC;AAAA,IACd,WAAWA,EAAM,CAAC,KAAKA,EAAM,CAAC,EAAE,MAAM,CAAC;AAAA,IACvC,MAAMA,EAAM,CAAC;AAAA,IACb,MAAMA,EAAM,EAAE;AAAA,EAClB,CAAG;AACH;AAEAF,GAAgB,YAAYG,GAAgB;AAErC,SAASA,GAAgBF,GAAW;AACzC,OAAK,OAAOA,EAAU,SAAS,SAAY,MAAMA,EAAU,OAAO,IAClE,KAAK,QAAQA,EAAU,UAAU,SAAY,MAAMA,EAAU,QAAQ,IACrE,KAAK,OAAOA,EAAU,SAAS,SAAY,MAAMA,EAAU,OAAO,IAClE,KAAK,SAASA,EAAU,WAAW,SAAY,KAAKA,EAAU,SAAS,IACvE,KAAK,OAAO,CAAC,CAACA,EAAU,MACxB,KAAK,QAAQA,EAAU,UAAU,SAAY,SAAY,CAACA,EAAU,OACpE,KAAK,QAAQ,CAAC,CAACA,EAAU,OACzB,KAAK,YAAYA,EAAU,cAAc,SAAY,SAAY,CAACA,EAAU,WAC5E,KAAK,OAAO,CAAC,CAACA,EAAU,MACxB,KAAK,OAAOA,EAAU,SAAS,SAAY,KAAKA,EAAU,OAAO;AACnE;AAEAE,GAAgB,UAAU,WAAW,WAAW;AAC9C,SAAO,KAAK,OACN,KAAK,QACL,KAAK,OACL,KAAK,UACJ,KAAK,OAAO,MAAM,OAClB,KAAK,UAAU,SAAY,KAAK,KAAK,IAAI,GAAG,KAAK,QAAQ,CAAC,MAC1D,KAAK,QAAQ,MAAM,OACnB,KAAK,cAAc,SAAY,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,YAAY,CAAC,MACxE,KAAK,OAAO,MAAM,MACnB,KAAK;AACb;AC7Ce,SAAQC,GAACC,GAAG;AACzB,EAAAC;AAAK,aAAS/H,IAAI8H,EAAE,QAAQ3I,IAAI,GAAG6I,IAAK,IAAIC,GAAI9I,IAAIa,GAAG,EAAEb;AACvD,cAAQ2I,EAAE3I,CAAC,GAAC;AAAA,QACV,KAAK;AAAK,UAAA6I,IAAKC,IAAK9I;AAAG;AAAA,QACvB,KAAK;AAAK,UAAI6I,MAAO,MAAGA,IAAK7I,IAAG8I,IAAK9I;AAAG;AAAA,QACxC;AAAS,cAAI,CAAC,CAAC2I,EAAE3I,CAAC;AAAG,kBAAM4I;AAAK,UAAIC,IAAK,MAAGA,IAAK;AAAG;AAAA,MACrD;AAEH,SAAOA,IAAK,IAAIF,EAAE,MAAM,GAAGE,CAAE,IAAIF,EAAE,MAAMG,IAAK,CAAC,IAAIH;AACrD;ACRO,IAAII;AAEI,SAAAC,GAASxJ,GAAGwE,GAAG;AAC5B,MAAIzE,IAAImI,GAAmBlI,GAAGwE,CAAC;AAC/B,MAAI,CAACzE;AAAG,WAAOC,IAAI;AACnB,MAAImI,IAAcpI,EAAE,CAAC,GACjBqI,IAAWrI,EAAE,CAAC,GACdS,IAAI4H,KAAYmB,KAAiB,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,MAAMnB,IAAW,CAAC,CAAC,CAAC,IAAI,KAAK,GAC5F/G,IAAI8G,EAAY;AACpB,SAAO3H,MAAMa,IAAI8G,IACX3H,IAAIa,IAAI8G,IAAc,IAAI,MAAM3H,IAAIa,IAAI,CAAC,EAAE,KAAK,GAAG,IACnDb,IAAI,IAAI2H,EAAY,MAAM,GAAG3H,CAAC,IAAI,MAAM2H,EAAY,MAAM3H,CAAC,IAC3D,OAAO,IAAI,MAAM,IAAIA,CAAC,EAAE,KAAK,GAAG,IAAI0H,GAAmBlI,GAAG,KAAK,IAAI,GAAGwE,IAAIhE,IAAI,CAAC,CAAC,EAAE,CAAC;AAC3F;ACbe,SAAAiJ,GAASzJ,GAAGwE,GAAG;AAC5B,MAAIzE,IAAImI,GAAmBlI,GAAGwE,CAAC;AAC/B,MAAI,CAACzE;AAAG,WAAOC,IAAI;AACnB,MAAImI,IAAcpI,EAAE,CAAC,GACjBqI,IAAWrI,EAAE,CAAC;AAClB,SAAOqI,IAAW,IAAI,OAAO,IAAI,MAAM,CAACA,CAAQ,EAAE,KAAK,GAAG,IAAID,IACxDA,EAAY,SAASC,IAAW,IAAID,EAAY,MAAM,GAAGC,IAAW,CAAC,IAAI,MAAMD,EAAY,MAAMC,IAAW,CAAC,IAC7GD,IAAc,IAAI,MAAMC,IAAWD,EAAY,SAAS,CAAC,EAAE,KAAK,GAAG;AAC3E;ACNA,MAAeuB,KAAA;AAAA,EACb,KAAK,CAAC1J,GAAGwE,OAAOxE,IAAI,KAAK,QAAQwE,CAAC;AAAA,EAClC,GAAK,CAACxE,MAAM,KAAK,MAAMA,CAAC,EAAE,SAAS,CAAC;AAAA,EACpC,GAAK,CAACA,MAAMA,IAAI;AAAA,EAChB,GAAKiI;AAAA,EACL,GAAK,CAACjI,GAAGwE,MAAMxE,EAAE,cAAcwE,CAAC;AAAA,EAChC,GAAK,CAACxE,GAAGwE,MAAMxE,EAAE,QAAQwE,CAAC;AAAA,EAC1B,GAAK,CAACxE,GAAGwE,MAAMxE,EAAE,YAAYwE,CAAC;AAAA,EAC9B,GAAK,CAACxE,MAAM,KAAK,MAAMA,CAAC,EAAE,SAAS,CAAC;AAAA,EACpC,GAAK,CAACA,GAAGwE,MAAMiF,GAAczJ,IAAI,KAAKwE,CAAC;AAAA,EACvC,GAAKiF;AAAA,EACL,GAAKD;AAAA,EACL,GAAK,CAACxJ,MAAM,KAAK,MAAMA,CAAC,EAAE,SAAS,EAAE,EAAE,YAAa;AAAA,EACpD,GAAK,CAACA,MAAM,KAAK,MAAMA,CAAC,EAAE,SAAS,EAAE;AACvC;AClBe,SAAQ2J,GAAC3J,GAAG;AACzB,SAAOA;AACT;ACOA,IAAI4J,KAAM,MAAM,UAAU,KACtBC,KAAW,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAEnE,SAAQC,GAACC,GAAQ;AAC9B,MAAIC,IAAQD,EAAO,aAAa,UAAaA,EAAO,cAAc,SAAYpG,KAAW0E,GAAYuB,GAAI,KAAKG,EAAO,UAAU,MAAM,GAAGA,EAAO,YAAY,EAAE,GACzJE,IAAiBF,EAAO,aAAa,SAAY,KAAKA,EAAO,SAAS,CAAC,IAAI,IAC3EG,IAAiBH,EAAO,aAAa,SAAY,KAAKA,EAAO,SAAS,CAAC,IAAI,IAC3EI,IAAUJ,EAAO,YAAY,SAAY,MAAMA,EAAO,UAAU,IAChEnB,IAAWmB,EAAO,aAAa,SAAYpG,KAAWgF,GAAeiB,GAAI,KAAKG,EAAO,UAAU,MAAM,CAAC,GACtGK,IAAUL,EAAO,YAAY,SAAY,MAAMA,EAAO,UAAU,IAChEM,IAAQN,EAAO,UAAU,SAAY,MAAMA,EAAO,QAAQ,IAC1DO,IAAMP,EAAO,QAAQ,SAAY,QAAQA,EAAO,MAAM;AAE1D,WAASQ,EAAUxB,GAAW;AAC5B,IAAAA,IAAYD,GAAgBC,CAAS;AAErC,QAAIyB,IAAOzB,EAAU,MACjB0B,IAAQ1B,EAAU,OAClB2B,IAAO3B,EAAU,MACjB4B,IAAS5B,EAAU,QACnB9I,IAAO8I,EAAU,MACjBP,IAAQO,EAAU,OAClB6B,IAAQ7B,EAAU,OAClB8B,IAAY9B,EAAU,WACtB+B,IAAO/B,EAAU,MACjBgC,IAAOhC,EAAU;AAGrB,IAAIgC,MAAS,OAAKH,IAAQ,IAAMG,IAAO,OAG7BrB,GAAYqB,CAAI,MAAGF,MAAc,WAAcA,IAAY,KAAKC,IAAO,IAAMC,IAAO,OAG1F9K,KAASuK,MAAS,OAAOC,MAAU,SAAMxK,IAAO,IAAMuK,IAAO,KAAKC,IAAQ;AAI9E,QAAIO,IAASL,MAAW,MAAMV,IAAiBU,MAAW,OAAO,SAAS,KAAKI,CAAI,IAAI,MAAMA,EAAK,YAAa,IAAG,IAC9GE,IAASN,MAAW,MAAMT,IAAiB,OAAO,KAAKa,CAAI,IAAIX,IAAU,IAKzEc,IAAaxB,GAAYqB,CAAI,GAC7BI,IAAc,aAAa,KAAKJ,CAAI;AAMxC,IAAAF,IAAYA,MAAc,SAAY,IAChC,SAAS,KAAKE,CAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,IAAIF,CAAS,CAAC,IACzD,KAAK,IAAI,GAAG,KAAK,IAAI,IAAIA,CAAS,CAAC;AAEzC,aAASnH,EAAOxB,GAAO;AACrB,UAAIkJ,IAAcJ,GACdK,IAAcJ,GACdzK,GAAGa,GAAGwF;AAEV,UAAIkE,MAAS;AACX,QAAAM,IAAcH,EAAWhJ,CAAK,IAAImJ,GAClCnJ,IAAQ;AAAA,WACH;AACL,QAAAA,IAAQ,CAACA;AAGT,YAAIoJ,IAAgBpJ,IAAQ,KAAK,IAAIA,IAAQ;AAiB7C,YAdAA,IAAQ,MAAMA,CAAK,IAAIoI,IAAMY,EAAW,KAAK,IAAIhJ,CAAK,GAAG2I,CAAS,GAG9DC,MAAM5I,IAAQgH,GAAWhH,CAAK,IAG9BoJ,KAAiB,CAACpJ,KAAU,KAAKwI,MAAS,QAAKY,IAAgB,KAGnEF,KAAeE,IAAiBZ,MAAS,MAAMA,IAAOL,IAASK,MAAS,OAAOA,MAAS,MAAM,KAAKA,KAAQU,GAC3GC,KAAeN,MAAS,MAAMlB,GAAS,IAAIN,KAAiB,CAAC,IAAI,MAAM8B,KAAeC,KAAiBZ,MAAS,MAAM,MAAM,KAIxHS;AAEF,eADA3K,IAAI,IAAIa,IAAIa,EAAM,QACX,EAAE1B,IAAIa;AACX,gBAAIwF,IAAI3E,EAAM,WAAW1B,CAAC,GAAG,KAAKqG,KAAKA,IAAI,IAAI;AAC7C,cAAAwE,KAAexE,MAAM,KAAKsD,IAAUjI,EAAM,MAAM1B,IAAI,CAAC,IAAI0B,EAAM,MAAM1B,CAAC,KAAK6K,GAC3EnJ,IAAQA,EAAM,MAAM,GAAG1B,CAAC;AACxB;AAAA,YACD;AAAA;AAAA,MAGN;AAGD,MAAIoK,KAAS,CAAC3K,MAAMiC,IAAQ8H,EAAM9H,GAAO,KAAQ;AAGjD,UAAIwG,IAAS0C,EAAY,SAASlJ,EAAM,SAASmJ,EAAY,QACzDE,IAAU7C,IAASF,IAAQ,IAAI,MAAMA,IAAQE,IAAS,CAAC,EAAE,KAAK8B,CAAI,IAAI;AAM1E,cAHII,KAAS3K,MAAMiC,IAAQ8H,EAAMuB,IAAUrJ,GAAOqJ,EAAQ,SAAS/C,IAAQ6C,EAAY,SAAS,KAAQ,GAAGE,IAAU,KAG7Gd,GAAK;AAAA,QACX,KAAK;AAAK,UAAAvI,IAAQkJ,IAAclJ,IAAQmJ,IAAcE;AAAS;AAAA,QAC/D,KAAK;AAAK,UAAArJ,IAAQkJ,IAAcG,IAAUrJ,IAAQmJ;AAAa;AAAA,QAC/D,KAAK;AAAK,UAAAnJ,IAAQqJ,EAAQ,MAAM,GAAG7C,IAAS6C,EAAQ,UAAU,CAAC,IAAIH,IAAclJ,IAAQmJ,IAAcE,EAAQ,MAAM7C,CAAM;AAAG;AAAA,QAC9H;AAAS,UAAAxG,IAAQqJ,IAAUH,IAAclJ,IAAQmJ;AAAa;AAAA,MAC/D;AAED,aAAOzC,EAAS1G,CAAK;AAAA,IACtB;AAED,WAAAwB,EAAO,WAAW,WAAW;AAC3B,aAAOqF,IAAY;AAAA,IACzB,GAEWrF;AAAA,EACR;AAED,WAAS8H,EAAazC,GAAW7G,GAAO;AACtC,QAAIvC,IAAI4K,GAAWxB,IAAYD,GAAgBC,CAAS,GAAGA,EAAU,OAAO,KAAKA,EAAW,GACxF0C,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,MAAMrD,GAASlG,CAAK,IAAI,CAAC,CAAC,CAAC,IAAI,GACjEqB,IAAI,KAAK,IAAI,IAAI,CAACkI,CAAC,GACnBT,IAASnB,GAAS,IAAI4B,IAAI,CAAC;AAC/B,WAAO,SAASvJ,GAAO;AACrB,aAAOvC,EAAE4D,IAAIrB,CAAK,IAAI8I;AAAA,IAC5B;AAAA,EACG;AAED,SAAO;AAAA,IACL,QAAQT;AAAA,IACR,cAAciB;AAAA,EAClB;AACA;ACjJA,IAAIzB,IACOrG,IACA8H;AAEXE,GAAc;AAAA,EACZ,WAAW;AAAA,EACX,UAAU,CAAC,CAAC;AAAA,EACZ,UAAU,CAAC,KAAK,EAAE;AACpB,CAAC;AAEc,SAASA,GAAcC,GAAY;AAChD5B,SAAAA,KAAS6B,GAAaD,CAAU,GAChCjI,KAASqG,GAAO,QAChByB,KAAezB,GAAO,cACfA;AACT;ACfe,SAAQ8B,GAACvK,GAAM;AAC5B,SAAO,KAAK,IAAI,GAAG,CAAC8G,GAAS,KAAK,IAAI9G,CAAI,CAAC,CAAC;AAC9C;ACFe,SAAAwK,GAASxK,GAAMY,GAAO;AACnC,SAAO,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,MAAMkG,GAASlG,CAAK,IAAI,CAAC,CAAC,CAAC,IAAI,IAAIkG,GAAS,KAAK,IAAI9G,CAAI,CAAC,CAAC;AAC9G;ACFe,SAAAyK,GAASzK,GAAMS,GAAK;AACjC,SAAAT,IAAO,KAAK,IAAIA,CAAI,GAAGS,IAAM,KAAK,IAAIA,CAAG,IAAIT,GACtC,KAAK,IAAI,GAAG8G,GAASrG,CAAG,IAAIqG,GAAS9G,CAAI,CAAC,IAAI;AACvD;ACLe,SAAS0K,GAAUhM,GAAG;AACnC,SAAO,WAAW;AAChB,WAAOA;AAAA,EACX;AACA;ACJe,SAASS,GAAOT,GAAG;AAChC,SAAO,CAACA;AACV;ACGA,IAAIiM,KAAO,CAAC,GAAG,CAAC;AAET,SAAStI,GAAS3D,GAAG;AAC1B,SAAOA;AACT;AAEA,SAASkM,GAAU3M,GAAGC,GAAG;AACvB,UAAQA,KAAMD,IAAI,CAACA,KACb,SAASS,GAAG;AAAE,YAAQA,IAAIT,KAAKC;AAAA,EAAI,IACnC+H,GAAS,MAAM/H,CAAC,IAAI,MAAM,GAAG;AACrC;AAEA,SAAS2M,GAAQ5M,GAAGC,GAAG;AACrB,MAAIuH;AACJ,SAAIxH,IAAIC,MAAGuH,IAAIxH,GAAGA,IAAIC,GAAGA,IAAIuH,IACtB,SAAS/G,GAAG;AAAE,WAAO,KAAK,IAAIT,GAAG,KAAK,IAAIC,GAAGQ,CAAC,CAAC;AAAA,EAAE;AAC1D;AAIA,SAASoM,GAAMC,GAAQxI,GAAOyD,GAAa;AACzC,MAAIgF,IAAKD,EAAO,CAAC,GAAGE,IAAKF,EAAO,CAAC,GAAG7K,IAAKqC,EAAM,CAAC,GAAGpC,IAAKoC,EAAM,CAAC;AAC/D,SAAI0I,IAAKD,KAAIA,IAAKJ,GAAUK,GAAID,CAAE,GAAG9K,IAAK8F,EAAY7F,GAAID,CAAE,MACvD8K,IAAKJ,GAAUI,GAAIC,CAAE,GAAG/K,IAAK8F,EAAY9F,GAAIC,CAAE,IAC7C,SAASzB,GAAG;AAAE,WAAOwB,EAAG8K,EAAGtM,CAAC,CAAC;AAAA;AACtC;AAEA,SAASwM,GAAQH,GAAQxI,GAAOyD,GAAa;AAC3C,MAAImB,IAAI,KAAK,IAAI4D,EAAO,QAAQxI,EAAM,MAAM,IAAI,GAC5C9D,IAAI,IAAI,MAAM0I,CAAC,GACf5C,IAAI,IAAI,MAAM4C,CAAC,GACfjI,IAAI;AAQR,OALI6L,EAAO5D,CAAC,IAAI4D,EAAO,CAAC,MACtBA,IAASA,EAAO,MAAO,EAAC,QAAO,GAC/BxI,IAAQA,EAAM,MAAO,EAAC,QAAO,IAGxB,EAAErD,IAAIiI;AACX,IAAA1I,EAAES,CAAC,IAAI0L,GAAUG,EAAO7L,CAAC,GAAG6L,EAAO7L,IAAI,CAAC,CAAC,GACzCqF,EAAErF,CAAC,IAAI8G,EAAYzD,EAAMrD,CAAC,GAAGqD,EAAMrD,IAAI,CAAC,CAAC;AAG3C,SAAO,SAASR,GAAG;AACjB,QAAIQ,IAAII,GAAOyL,GAAQrM,GAAG,GAAGyI,CAAC,IAAI;AAClC,WAAO5C,EAAErF,CAAC,EAAET,EAAES,CAAC,EAAER,CAAC,CAAC;AAAA,EACvB;AACA;AAEO,SAASyM,GAAKC,GAAQC,GAAQ;AACnC,SAAOA,EACF,OAAOD,EAAO,QAAQ,EACtB,MAAMA,EAAO,OAAO,EACpB,YAAYA,EAAO,aAAa,EAChC,MAAMA,EAAO,OAAO,EACpB,QAAQA,EAAO,QAAO,CAAE;AAC/B;AAEO,SAASE,KAAc;AAC5B,MAAIP,IAASJ,IACTpI,IAAQoI,IACR3E,IAAcuF,IACdrJ,GACAsJ,GACAC,GACAC,IAAQrJ,IACRsJ,GACAC,GACAC;AAEJ,WAASC,IAAU;AACjB,QAAI/L,IAAI,KAAK,IAAIgL,EAAO,QAAQxI,EAAM,MAAM;AAC5C,WAAImJ,MAAUrJ,OAAUqJ,IAAQb,GAAQE,EAAO,CAAC,GAAGA,EAAOhL,IAAI,CAAC,CAAC,IAChE4L,IAAY5L,IAAI,IAAImL,KAAUJ,IAC9Bc,IAASC,IAAQ,MACVvK;AAAA,EACR;AAED,WAASA,EAAM5C,GAAG;AAChB,WAAOA,KAAK,QAAQ,MAAMA,IAAI,CAACA,CAAC,IAAI+M,KAAWG,MAAWA,IAASD,EAAUZ,EAAO,IAAI7I,CAAS,GAAGK,GAAOyD,CAAW,IAAI9D,EAAUwJ,EAAMhN,CAAC,CAAC,CAAC;AAAA,EAC9I;AAED,SAAA4C,EAAM,SAAS,SAAS,GAAG;AACzB,WAAOoK,EAAMF,GAAaK,MAAUA,IAAQF,EAAUpJ,GAAOwI,EAAO,IAAI7I,CAAS,GAAG6J,EAAiB,IAAI,CAAC,CAAC,CAAC;AAAA,EAChH,GAEEzK,EAAM,SAAS,SAAS6B,GAAG;AACzB,WAAO,UAAU,UAAU4H,IAAS,MAAM,KAAK5H,GAAGhE,EAAM,GAAG2M,EAAO,KAAMf,EAAO,MAAK;AAAA,EACxF,GAEEzJ,EAAM,QAAQ,SAAS6B,GAAG;AACxB,WAAO,UAAU,UAAUZ,IAAQ,MAAM,KAAKY,CAAC,GAAG2I,EAAO,KAAMvJ,EAAM,MAAK;AAAA,EAC9E,GAEEjB,EAAM,aAAa,SAAS6B,GAAG;AAC7B,WAAOZ,IAAQ,MAAM,KAAKY,CAAC,GAAG6C,IAAcM,IAAkBwF;EAClE,GAEExK,EAAM,QAAQ,SAAS6B,GAAG;AACxB,WAAO,UAAU,UAAUuI,IAAQvI,IAAI,KAAOd,IAAUyJ,EAAO,KAAMJ,MAAUrJ;AAAA,EACnF,GAEEf,EAAM,cAAc,SAAS6B,GAAG;AAC9B,WAAO,UAAU,UAAU6C,IAAc7C,GAAG2I,EAAS,KAAI9F;AAAAA,EAC7D,GAEE1E,EAAM,UAAU,SAAS6B,GAAG;AAC1B,WAAO,UAAU,UAAUsI,IAAUtI,GAAG7B,KAASmK;AAAA,EACrD,GAES,SAAShG,GAAGuG,GAAG;AACpB,WAAA9J,IAAYuD,GAAG+F,IAAcQ,GACtBF,EAAO;AAAA,EAClB;AACA;AAEe,SAASG,KAAa;AACnC,SAAOX,GAAa,EAACjJ,IAAUA,EAAQ;AACzC;ACzHe,SAASR,GAAWlC,GAAOC,GAAMC,GAAO4H,GAAW;AAChE,MAAIzH,IAAOM,GAASX,GAAOC,GAAMC,CAAK,GAClC0J;AAEJ,UADA9B,IAAYD,GAAgBC,KAAoB,IAAgB,GACxDA,EAAU,MAAI;AAAA,IACpB,KAAK,KAAK;AACR,UAAI7G,IAAQ,KAAK,IAAI,KAAK,IAAIjB,CAAK,GAAG,KAAK,IAAIC,CAAI,CAAC;AACpD,aAAI6H,EAAU,aAAa,QAAQ,CAAC,MAAM8B,IAAYiB,GAAgBxK,GAAMY,CAAK,CAAC,MAAG6G,EAAU,YAAY8B,IACpGW,GAAazC,GAAW7G,CAAK;AAAA,IACrC;AAAA,IACD,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,KAAK;AACR,MAAI6G,EAAU,aAAa,QAAQ,CAAC,MAAM8B,IAAYkB,GAAezK,GAAM,KAAK,IAAI,KAAK,IAAIL,CAAK,GAAG,KAAK,IAAIC,CAAI,CAAC,CAAC,CAAC,MAAG6H,EAAU,YAAY8B,KAAa9B,EAAU,SAAS;AAC9K;AAAA,IACD;AAAA,IACD,KAAK;AAAA,IACL,KAAK,KAAK;AACR,MAAIA,EAAU,aAAa,QAAQ,CAAC,MAAM8B,IAAYgB,GAAevK,CAAI,CAAC,MAAGyH,EAAU,YAAY8B,KAAa9B,EAAU,SAAS,OAAO;AAC1I;AAAA,IACD;AAAA,EACF;AACD,SAAOrF,GAAOqF,CAAS;AACzB;ACvBO,SAASyE,GAAU5K,GAAO;AAC/B,MAAIyJ,IAASzJ,EAAM;AAEnB,SAAAA,EAAM,QAAQ,SAASzB,GAAO;AAC5B,QAAIpB,IAAIsM;AACR,WAAOrL,GAAMjB,EAAE,CAAC,GAAGA,EAAEA,EAAE,SAAS,CAAC,GAAGoB,KAAgB,EAAU;AAAA,EAClE,GAEEyB,EAAM,aAAa,SAASzB,GAAO4H,GAAW;AAC5C,QAAIhJ,IAAIsM;AACR,WAAOlJ,GAAWpD,EAAE,CAAC,GAAGA,EAAEA,EAAE,SAAS,CAAC,GAAGoB,KAAgB,IAAY4H,CAAS;AAAA,EAClF,GAEEnG,EAAM,OAAO,SAASzB,GAAO;AAC3B,IAAIA,KAAS,SAAMA,IAAQ;AAE3B,QAAIpB,IAAIsM,KACJhD,IAAK,GACLC,IAAKvJ,EAAE,SAAS,GAChBkB,IAAQlB,EAAEsJ,CAAE,GACZnI,IAAOnB,EAAEuJ,CAAE,GACXmE,GACAnM,GACAoM,IAAU;AAOd,SALIxM,IAAOD,MACTK,IAAOL,GAAOA,IAAQC,GAAMA,IAAOI,GACnCA,IAAO+H,GAAIA,IAAKC,GAAIA,IAAKhI,IAGpBoM,MAAY,KAAG;AAEpB,UADApM,IAAOC,GAAcN,GAAOC,GAAMC,CAAK,GACnCG,MAASmM;AACX,eAAA1N,EAAEsJ,CAAE,IAAIpI,GACRlB,EAAEuJ,CAAE,IAAIpI,GACDmL,EAAOtM,CAAC;AACV,UAAIuB,IAAO;AAChB,QAAAL,IAAQ,KAAK,MAAMA,IAAQK,CAAI,IAAIA,GACnCJ,IAAO,KAAK,KAAKA,IAAOI,CAAI,IAAIA;AAAA,eACvBA,IAAO;AAChB,QAAAL,IAAQ,KAAK,KAAKA,IAAQK,CAAI,IAAIA,GAClCJ,IAAO,KAAK,MAAMA,IAAOI,CAAI,IAAIA;AAAA;AAEjC;AAEF,MAAAmM,IAAUnM;AAAA,IACX;AAED,WAAOsB;AAAA,EACX,GAESA;AACT;AAEe,SAAS+K,KAAS;AAC/B,MAAI/K,IAAQ2K;AAEZ,SAAA3K,EAAM,OAAO,WAAW;AACtB,WAAO6J,GAAK7J,GAAO+K,GAAM,CAAE;AAAA,EAC/B,GAEEC,GAAU,MAAMhL,GAAO,SAAS,GAEzB4K,GAAU5K,CAAK;AACxB;ACrEe,SAASiL,GAAKxB,GAAQyB,GAAU;AAC7C,EAAAzB,IAASA,EAAO;AAEhB,MAAIhD,IAAK,GACLC,IAAK+C,EAAO,SAAS,GACrB0B,IAAK1B,EAAOhD,CAAE,GACd2E,IAAK3B,EAAO/C,CAAE,GACdvC;AAEJ,SAAIiH,IAAKD,MACPhH,IAAIsC,GAAIA,IAAKC,GAAIA,IAAKvC,GACtBA,IAAIgH,GAAIA,IAAKC,GAAIA,IAAKjH,IAGxBsF,EAAOhD,CAAE,IAAIyE,EAAS,MAAMC,CAAE,GAC9B1B,EAAO/C,CAAE,IAAIwE,EAAS,KAAKE,CAAE,GACtB3B;AACT;ACjBA,IAAInH,KAAK,IAAI,QACTC,KAAK,IAAI;AAEE,SAAS8I,GAAYC,GAAQC,GAAShN,GAAOiN,GAAO;AAEjE,WAASN,EAASnG,GAAM;AACtB,WAAOuG,EAAOvG,IAAO,UAAU,WAAW,IAAI,IAAI,SAAO,IAAI,KAAK,CAACA,CAAI,CAAC,GAAGA;AAAA,EAC5E;AAED,SAAAmG,EAAS,QAAQ,SAASnG,GAAM;AAC9B,WAAOuG,EAAOvG,IAAO,IAAI,KAAK,CAACA,CAAI,CAAC,GAAGA;AAAA,EAC3C,GAEEmG,EAAS,OAAO,SAASnG,GAAM;AAC7B,WAAOuG,EAAOvG,IAAO,IAAI,KAAKA,IAAO,CAAC,CAAC,GAAGwG,EAAQxG,GAAM,CAAC,GAAGuG,EAAOvG,CAAI,GAAGA;AAAA,EAC9E,GAEEmG,EAAS,QAAQ,SAASnG,GAAM;AAC9B,QAAI2E,IAAKwB,EAASnG,CAAI,GAClB4E,IAAKuB,EAAS,KAAKnG,CAAI;AAC3B,WAAOA,IAAO2E,IAAKC,IAAK5E,IAAO2E,IAAKC;AAAA,EACxC,GAEEuB,EAAS,SAAS,SAASnG,GAAMrG,GAAM;AACrC,WAAO6M,EAAQxG,IAAO,IAAI,KAAK,CAACA,CAAI,GAAGrG,KAAQ,OAAO,IAAI,KAAK,MAAMA,CAAI,CAAC,GAAGqG;AAAA,EACjF,GAEEmG,EAAS,QAAQ,SAAS7M,GAAOC,GAAMI,GAAM;AAC3C,QAAIuC,IAAQ,CAAE,GAAEwK;AAGhB,QAFApN,IAAQ6M,EAAS,KAAK7M,CAAK,GAC3BK,IAAOA,KAAQ,OAAO,IAAI,KAAK,MAAMA,CAAI,GACrC,EAAEL,IAAQC,MAAS,EAAEI,IAAO;AAAI,aAAOuC;AAC3C;AAAG,MAAAA,EAAM,KAAKwK,IAAW,IAAI,KAAK,CAACpN,CAAK,CAAC,GAAGkN,EAAQlN,GAAOK,CAAI,GAAG4M,EAAOjN,CAAK;AAAA,WACvEoN,IAAWpN,KAASA,IAAQC;AACnC,WAAO2C;AAAA,EACX,GAEEiK,EAAS,SAAS,SAASQ,GAAM;AAC/B,WAAOL,GAAY,SAAStG,GAAM;AAChC,UAAIA,KAAQA;AAAM,eAAOuG,EAAOvG,CAAI,GAAG,CAAC2G,EAAK3G,CAAI;AAAG,UAAAA,EAAK,QAAQA,IAAO,CAAC;AAAA,IAC/E,GAAO,SAASA,GAAMrG,GAAM;AACtB,UAAIqG,KAAQA;AACV,YAAIrG,IAAO;AAAG,iBAAO,EAAEA,KAAQ;AAC7B,mBAAO6M,EAAQxG,GAAM,EAAE,GAAG,CAAC2G,EAAK3G,CAAI;AAAG;AAAA;AAClC,iBAAO,EAAErG,KAAQ;AACtB,mBAAO6M,EAAQxG,GAAM,CAAE,GAAG,CAAC2G,EAAK3G,CAAI;AAAG;AAAA,IAGjD,CAAK;AAAA,EACL,GAEMxG,MACF2M,EAAS,QAAQ,SAAS7M,GAAO6G,GAAK;AACpC,WAAA5C,GAAG,QAAQ,CAACjE,CAAK,GAAGkE,GAAG,QAAQ,CAAC2C,CAAG,GACnCoG,EAAOhJ,EAAE,GAAGgJ,EAAO/I,EAAE,GACd,KAAK,MAAMhE,EAAM+D,IAAIC,EAAE,CAAC;AAAA,EACrC,GAEI2I,EAAS,QAAQ,SAASxM,GAAM;AAC9B,WAAAA,IAAO,KAAK,MAAMA,CAAI,GACf,CAAC,SAASA,CAAI,KAAK,EAAEA,IAAO,KAAK,OAChCA,IAAO,IACTwM,EAAS,OAAOM,IACZ,SAASrO,GAAG;AAAE,aAAOqO,EAAMrO,CAAC,IAAIuB,MAAS;AAAA,IAAI,IAC7C,SAASvB,GAAG;AAAE,aAAO+N,EAAS,MAAM,GAAG/N,CAAC,IAAIuB,MAAS;AAAA,IAAE,CAAE,IAH/CwM;AAAA,EAI1B,IAGSA;AACT;ACnEA,IAAIS,KAAcT,GAAS,WAAW;AAEtC,GAAG,SAASnG,GAAMrG,GAAM;AACtB,EAAAqG,EAAK,QAAQ,CAACA,IAAOrG,CAAI;AAC3B,GAAG,SAASL,GAAO6G,GAAK;AACtB,SAAOA,IAAM7G;AACf,CAAC;AAGDsN,GAAY,QAAQ,SAAShL,GAAG;AAE9B,SADAA,IAAI,KAAK,MAAMA,CAAC,GACZ,CAAC,SAASA,CAAC,KAAK,EAAEA,IAAI,KAAW,OAC/BA,IAAI,IACHuK,GAAS,SAASnG,GAAM;AAC7B,IAAAA,EAAK,QAAQ,KAAK,MAAMA,IAAOpE,CAAC,IAAIA,CAAC;AAAA,EACzC,GAAK,SAASoE,GAAMrG,GAAM;AACtB,IAAAqG,EAAK,QAAQ,CAACA,IAAOrG,IAAOiC,CAAC;AAAA,EACjC,GAAK,SAAStC,GAAO6G,GAAK;AACtB,YAAQA,IAAM7G,KAASsC;AAAA,EAC3B,CAAG,IAPoBgL;AAQvB;AAEA,MAAAC,KAAeD;AACWA,GAAY;ACzB/B,MAAME,KAAiB,KACjBC,KAAiBD,KAAiB,IAClCE,KAAeD,KAAiB,IAChCE,KAAcD,KAAe,IAC7BE,KAAeD,KAAc,GAC7BE,KAAgBF,KAAc,IAC9BG,KAAeH,KAAc;ACH1C,IAAII,KAASlB,GAAS,SAASnG,GAAM;AACnC,EAAAA,EAAK,QAAQA,IAAOA,EAAK,gBAAiB,CAAA;AAC5C,GAAG,SAASA,GAAMrG,GAAM;AACtB,EAAAqG,EAAK,QAAQ,CAACA,IAAOrG,IAAOmN,EAAc;AAC5C,GAAG,SAASxN,GAAO6G,GAAK;AACtB,UAAQA,IAAM7G,KAASwN;AACzB,GAAG,SAAS9G,GAAM;AAChB,SAAOA,EAAK;AACd,CAAC;AAED,MAAAsH,KAAeD;AACMA,GAAO;ACX5B,IAAIE,KAASpB,GAAS,SAASnG,GAAM;AACnC,EAAAA,EAAK,QAAQA,IAAOA,EAAK,gBAAiB,IAAGA,EAAK,eAAe8G,EAAc;AACjF,GAAG,SAAS9G,GAAMrG,GAAM;AACtB,EAAAqG,EAAK,QAAQ,CAACA,IAAOrG,IAAOoN,EAAc;AAC5C,GAAG,SAASzN,GAAO6G,GAAK;AACtB,UAAQA,IAAM7G,KAASyN;AACzB,GAAG,SAAS/G,GAAM;AAChB,SAAOA,EAAK;AACd,CAAC;AAED,MAAAwH,KAAeD;AACMA,GAAO;ACX5B,IAAIE,KAAOtB,GAAS,SAASnG,GAAM;AACjC,EAAAA,EAAK,QAAQA,IAAOA,EAAK,gBAAe,IAAKA,EAAK,WAAU,IAAK8G,KAAiB9G,EAAK,WAAY,IAAG+G,EAAc;AACtH,GAAG,SAAS/G,GAAMrG,GAAM;AACtB,EAAAqG,EAAK,QAAQ,CAACA,IAAOrG,IAAOqN,EAAY;AAC1C,GAAG,SAAS1N,GAAO6G,GAAK;AACtB,UAAQA,IAAM7G,KAAS0N;AACzB,GAAG,SAAShH,GAAM;AAChB,SAAOA,EAAK;AACd,CAAC;AAED,MAAA0H,KAAeD;AACIA,GAAK;ACXxB,IAAIE,KAAMxB;AAAAA,EACR,CAAAnG,MAAQA,EAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AAAA,EAChC,CAACA,GAAMrG,MAASqG,EAAK,QAAQA,EAAK,QAAS,IAAGrG,CAAI;AAAA,EAClD,CAACL,GAAO6G,OAASA,IAAM7G,KAAS6G,EAAI,kBAAmB,IAAG7G,EAAM,kBAAmB,KAAIyN,MAAkBE;AAAA,EACzG,CAAAjH,MAAQA,EAAK,QAAO,IAAK;AAC3B;AAEA,MAAA4H,KAAeD;AACGA,GAAI;ACRtB,SAASE,GAAQhP,GAAG;AAClB,SAAOsN,GAAS,SAASnG,GAAM;AAC7B,IAAAA,EAAK,QAAQA,EAAK,aAAaA,EAAK,WAAW,IAAInH,KAAK,CAAC,GACzDmH,EAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AAAA,EAC5B,GAAK,SAASA,GAAMrG,GAAM;AACtB,IAAAqG,EAAK,QAAQA,EAAK,QAAO,IAAKrG,IAAO,CAAC;AAAA,EAC1C,GAAK,SAASL,GAAO6G,GAAK;AACtB,YAAQA,IAAM7G,KAAS6G,EAAI,sBAAsB7G,EAAM,kBAAiB,KAAMyN,MAAkBG;AAAA,EACpG,CAAG;AACH;AAEO,IAAIY,KAASD,GAAQ,CAAC,GAClBE,KAASF,GAAQ,CAAC,GAClBG,KAAUH,GAAQ,CAAC,GACnBI,KAAYJ,GAAQ,CAAC,GACrBK,KAAWL,GAAQ,CAAC,GACpBM,KAASN,GAAQ,CAAC,GAClBO,KAAWP,GAAQ,CAAC;AAEVC,GAAO;AACPC,GAAO;AACNC,GAAQ;AACNC,GAAU;AACXC,GAAS;AACXC,GAAO;AACLC,GAAS;AC1BhC,IAAIC,KAAQlC,GAAS,SAASnG,GAAM;AAClC,EAAAA,EAAK,QAAQ,CAAC,GACdA,EAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AAC1B,GAAG,SAASA,GAAMrG,GAAM;AACtB,EAAAqG,EAAK,SAASA,EAAK,SAAU,IAAGrG,CAAI;AACtC,GAAG,SAASL,GAAO6G,GAAK;AACtB,SAAOA,EAAI,aAAa7G,EAAM,SAAU,KAAI6G,EAAI,YAAW,IAAK7G,EAAM,YAAW,KAAM;AACzF,GAAG,SAAS0G,GAAM;AAChB,SAAOA,EAAK;AACd,CAAC;AAED,MAAAsI,KAAeD;AACKA,GAAM;ACZ1B,IAAIE,KAAOpC,GAAS,SAASnG,GAAM;AACjC,EAAAA,EAAK,SAAS,GAAG,CAAC,GAClBA,EAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AAC1B,GAAG,SAASA,GAAMrG,GAAM;AACtB,EAAAqG,EAAK,YAAYA,EAAK,YAAa,IAAGrG,CAAI;AAC5C,GAAG,SAASL,GAAO6G,GAAK;AACtB,SAAOA,EAAI,YAAW,IAAK7G,EAAM,YAAW;AAC9C,GAAG,SAAS0G,GAAM;AAChB,SAAOA,EAAK;AACd,CAAC;AAGDuI,GAAK,QAAQ,SAAS3M,GAAG;AACvB,SAAO,CAAC,SAASA,IAAI,KAAK,MAAMA,CAAC,CAAC,KAAK,EAAEA,IAAI,KAAK,OAAOuK,GAAS,SAASnG,GAAM;AAC/E,IAAAA,EAAK,YAAY,KAAK,MAAMA,EAAK,gBAAgBpE,CAAC,IAAIA,CAAC,GACvDoE,EAAK,SAAS,GAAG,CAAC,GAClBA,EAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AAAA,EAC5B,GAAK,SAASA,GAAMrG,GAAM;AACtB,IAAAqG,EAAK,YAAYA,EAAK,YAAW,IAAKrG,IAAOiC,CAAC;AAAA,EAClD,CAAG;AACH;AAEA,MAAA4M,KAAeD;AACIA,GAAK;ACtBxB,IAAIE,KAAYtC,GAAS,SAASnG,GAAM;AACtC,EAAAA,EAAK,cAAc,GAAG,CAAC;AACzB,GAAG,SAASA,GAAMrG,GAAM;AACtB,EAAAqG,EAAK,QAAQ,CAACA,IAAOrG,IAAOoN,EAAc;AAC5C,GAAG,SAASzN,GAAO6G,GAAK;AACtB,UAAQA,IAAM7G,KAASyN;AACzB,GAAG,SAAS/G,GAAM;AAChB,SAAOA,EAAK;AACd,CAAC;AAED,MAAA0I,KAAeD;AACSA,GAAU;ACXlC,IAAIE,KAAUxC,GAAS,SAASnG,GAAM;AACpC,EAAAA,EAAK,cAAc,GAAG,GAAG,CAAC;AAC5B,GAAG,SAASA,GAAMrG,GAAM;AACtB,EAAAqG,EAAK,QAAQ,CAACA,IAAOrG,IAAOqN,EAAY;AAC1C,GAAG,SAAS1N,GAAO6G,GAAK;AACtB,UAAQA,IAAM7G,KAAS0N;AACzB,GAAG,SAAShH,GAAM;AAChB,SAAOA,EAAK;AACd,CAAC;AAED,MAAA4I,KAAeD;AACOA,GAAQ;ACX9B,IAAIE,KAAS1C,GAAS,SAASnG,GAAM;AACnC,EAAAA,EAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC7B,GAAG,SAASA,GAAMrG,GAAM;AACtB,EAAAqG,EAAK,WAAWA,EAAK,WAAY,IAAGrG,CAAI;AAC1C,GAAG,SAASL,GAAO6G,GAAK;AACtB,UAAQA,IAAM7G,KAAS2N;AACzB,GAAG,SAASjH,GAAM;AAChB,SAAOA,EAAK,WAAY,IAAG;AAC7B,CAAC;AAED,MAAA8I,KAAeD;AACMA,GAAO;ACX5B,SAASE,GAAWlQ,GAAG;AACrB,SAAOsN,GAAS,SAASnG,GAAM;AAC7B,IAAAA,EAAK,WAAWA,EAAK,gBAAgBA,EAAK,cAAc,IAAInH,KAAK,CAAC,GAClEmH,EAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAAA,EAC/B,GAAK,SAASA,GAAMrG,GAAM;AACtB,IAAAqG,EAAK,WAAWA,EAAK,WAAU,IAAKrG,IAAO,CAAC;AAAA,EAChD,GAAK,SAASL,GAAO6G,GAAK;AACtB,YAAQA,IAAM7G,KAAS4N;AAAA,EAC3B,CAAG;AACH;AAEO,IAAI8B,KAAYD,GAAW,CAAC,GACxBE,KAAYF,GAAW,CAAC,GACxBG,KAAaH,GAAW,CAAC,GACzBI,KAAeJ,GAAW,CAAC,GAC3BK,KAAcL,GAAW,CAAC,GAC1BM,KAAYN,GAAW,CAAC,GACxBO,KAAcP,GAAW,CAAC;AAEbC,GAAU;AACVC,GAAU;AACTC,GAAW;AACTC,GAAa;AACdC,GAAY;AACdC,GAAU;AACRC,GAAY;AC1BtC,IAAIC,KAAWpD,GAAS,SAASnG,GAAM;AACrC,EAAAA,EAAK,WAAW,CAAC,GACjBA,EAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC7B,GAAG,SAASA,GAAMrG,GAAM;AACtB,EAAAqG,EAAK,YAAYA,EAAK,YAAa,IAAGrG,CAAI;AAC5C,GAAG,SAASL,GAAO6G,GAAK;AACtB,SAAOA,EAAI,gBAAgB7G,EAAM,YAAa,KAAI6G,EAAI,eAAc,IAAK7G,EAAM,eAAc,KAAM;AACrG,GAAG,SAAS0G,GAAM;AAChB,SAAOA,EAAK;AACd,CAAC;AAED,MAAAwJ,KAAeD;AACQA,GAAS;ACZhC,IAAIE,KAAUtD,GAAS,SAASnG,GAAM;AACpC,EAAAA,EAAK,YAAY,GAAG,CAAC,GACrBA,EAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC7B,GAAG,SAASA,GAAMrG,GAAM;AACtB,EAAAqG,EAAK,eAAeA,EAAK,eAAgB,IAAGrG,CAAI;AAClD,GAAG,SAASL,GAAO6G,GAAK;AACtB,SAAOA,EAAI,eAAc,IAAK7G,EAAM,eAAc;AACpD,GAAG,SAAS0G,GAAM;AAChB,SAAOA,EAAK;AACd,CAAC;AAGDyJ,GAAQ,QAAQ,SAAS7N,GAAG;AAC1B,SAAO,CAAC,SAASA,IAAI,KAAK,MAAMA,CAAC,CAAC,KAAK,EAAEA,IAAI,KAAK,OAAOuK,GAAS,SAASnG,GAAM;AAC/E,IAAAA,EAAK,eAAe,KAAK,MAAMA,EAAK,mBAAmBpE,CAAC,IAAIA,CAAC,GAC7DoE,EAAK,YAAY,GAAG,CAAC,GACrBA,EAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAAA,EAC/B,GAAK,SAASA,GAAMrG,GAAM;AACtB,IAAAqG,EAAK,eAAeA,EAAK,eAAc,IAAKrG,IAAOiC,CAAC;AAAA,EACxD,CAAG;AACH;AAEA,MAAA8N,KAAeD;AACOA,GAAQ;ACR9B,SAASE,GAAOpB,GAAMF,GAAOuB,GAAMjC,GAAKF,GAAMF,GAAQ;AAEpD,QAAMsC,IAAgB;AAAA,IACpB,CAACxC,IAAS,GAAQP,EAAc;AAAA,IAChC,CAACO,IAAS,GAAI,IAAIP,EAAc;AAAA,IAChC,CAACO,IAAQ,IAAI,KAAKP,EAAc;AAAA,IAChC,CAACO,IAAQ,IAAI,KAAKP,EAAc;AAAA,IAChC,CAACS,GAAS,GAAQR,EAAc;AAAA,IAChC,CAACQ,GAAS,GAAI,IAAIR,EAAc;AAAA,IAChC,CAACQ,GAAQ,IAAI,KAAKR,EAAc;AAAA,IAChC,CAACQ,GAAQ,IAAI,KAAKR,EAAc;AAAA,IAChC,CAAGU,GAAO,GAAQT,EAAe;AAAA,IACjC,CAAGS,GAAO,GAAI,IAAIT,EAAe;AAAA,IACjC,CAAGS,GAAO,GAAI,IAAIT,EAAe;AAAA,IACjC,CAAGS,GAAM,IAAI,KAAKT,EAAe;AAAA,IACjC,CAAIW,GAAM,GAAQV,EAAe;AAAA,IACjC,CAAIU,GAAM,GAAI,IAAIV,EAAe;AAAA,IACjC,CAAG2C,GAAO,GAAQ1C,EAAe;AAAA,IACjC,CAAEmB,GAAQ,GAAQlB,EAAe;AAAA,IACjC,CAAEkB,GAAQ,GAAI,IAAIlB,EAAe;AAAA,IACjC,CAAGoB,GAAO,GAAQnB,EAAe;AAAA,EACrC;AAEE,WAAS/N,EAAMC,GAAOC,GAAMC,GAAO;AACjC,UAAMC,IAAUF,IAAOD;AACvB,IAAIG,MAAS,CAACH,GAAOC,CAAI,IAAI,CAACA,GAAMD,CAAK;AACzC,UAAM6M,IAAW3M,KAAS,OAAOA,EAAM,SAAU,aAAaA,IAAQsQ,EAAaxQ,GAAOC,GAAMC,CAAK,GAC/FH,IAAQ8M,IAAWA,EAAS,MAAM7M,GAAO,CAACC,IAAO,CAAC,IAAI;AAC5D,WAAOE,IAAUJ,EAAM,QAAO,IAAKA;AAAA,EACpC;AAED,WAASyQ,EAAaxQ,GAAOC,GAAMC,GAAO;AACxC,UAAMwL,IAAS,KAAK,IAAIzL,IAAOD,CAAK,IAAIE,GAClCX,IAAId,GAAS,CAAC,KAAI4B,CAAI,MAAMA,CAAI,EAAE,MAAMkQ,GAAe7E,CAAM;AACnE,QAAInM,MAAMgR,EAAc;AAAQ,aAAOtB,EAAK,MAAMtO,GAASX,IAAQ8N,IAAc7N,IAAO6N,IAAc5N,CAAK,CAAC;AAC5G,QAAIX,MAAM;AAAG,aAAO+N,GAAY,MAAM,KAAK,IAAI3M,GAASX,GAAOC,GAAMC,CAAK,GAAG,CAAC,CAAC;AAC/E,UAAM,CAAC4F,GAAGzF,CAAI,IAAIkQ,EAAc7E,IAAS6E,EAAchR,IAAI,CAAC,EAAE,CAAC,IAAIgR,EAAchR,CAAC,EAAE,CAAC,IAAImM,IAASnM,IAAI,IAAIA,CAAC;AAC3G,WAAOuG,EAAE,MAAMzF,CAAI;AAAA,EACpB;AAED,SAAO,CAACN,GAAOyQ,CAAY;AAC7B;AAEoCH,GAAOF,IAASF,IAAUQ,IAASlB,IAAQF,IAASF,EAAS;AACjG,MAAM,CAACuB,IAAWC,EAAgB,IAAIN,GAAOpB,IAAMF,IAAOuB,IAAMjC,IAAKF,IAAMF,EAAM;AChDjF,SAAS2C,GAAU9R,GAAG;AACpB,MAAI,KAAKA,EAAE,KAAKA,EAAE,IAAI,KAAK;AACzB,QAAI4H,IAAO,IAAI,KAAK,IAAI5H,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,CAAC;AACpD,WAAA4H,EAAK,YAAY5H,EAAE,CAAC,GACb4H;AAAA,EACR;AACD,SAAO,IAAI,KAAK5H,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,CAAC;AACnD;AAEA,SAAS+R,GAAQ/R,GAAG;AAClB,MAAI,KAAKA,EAAE,KAAKA,EAAE,IAAI,KAAK;AACzB,QAAI4H,IAAO,IAAI,KAAK,KAAK,IAAI,IAAI5H,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,CAAC,CAAC;AAC9D,WAAA4H,EAAK,eAAe5H,EAAE,CAAC,GAChB4H;AAAA,EACR;AACD,SAAO,IAAI,KAAK,KAAK,IAAI5H,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,CAAC,CAAC;AAC7D;AAEA,SAASgS,GAAQpP,GAAGqP,GAAGjS,GAAG;AACxB,SAAO,EAAC,GAAG4C,GAAG,GAAGqP,GAAG,GAAGjS,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAC;AAClD;AAEe,SAAS6L,GAAa7B,GAAQ;AAC3C,MAAIkI,IAAkBlI,EAAO,UACzBmI,IAAcnI,EAAO,MACrBoI,IAAcpI,EAAO,MACrBqI,IAAiBrI,EAAO,SACxBsI,IAAkBtI,EAAO,MACzBuI,IAAuBvI,EAAO,WAC9BwI,IAAgBxI,EAAO,QACvByI,IAAqBzI,EAAO,aAE5B0I,IAAWC,GAASN,CAAc,GAClCO,IAAeC,GAAaR,CAAc,GAC1CS,IAAYH,GAASL,CAAe,GACpCS,IAAgBF,GAAaP,CAAe,GAC5CU,IAAiBL,GAASJ,CAAoB,GAC9CU,IAAqBJ,GAAaN,CAAoB,GACtDW,IAAUP,GAASH,CAAa,GAChCW,IAAcN,GAAaL,CAAa,GACxCY,IAAeT,GAASF,CAAkB,GAC1CY,IAAmBR,GAAaJ,CAAkB,GAElDa,IAAU;AAAA,IACZ,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAK;AAAA,IACL,GAAKC;AAAA,IACL,GAAKA;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,KAAKC;AAAA,EACT,GAEMC,IAAa;AAAA,IACf,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAK;AAAA,IACL,GAAKC;AAAA,IACL,GAAKA;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAK5B;AAAA,IACL,GAAKC;AAAA,IACL,GAAK4B;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,KAAK1B;AAAA,EACT,GAEM2B,IAAS;AAAA,IACX,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKA;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKA;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKC;AAAA,IACL,GAAKlB;AAAA,IACL,GAAKC;AAAA,IACL,GAAKkB;AAAA,IACL,KAAKC;AAAA,EACT;AAGE,EAAAnF,EAAQ,IAAI9I,EAAU2H,GAAamB,CAAO,GAC1CA,EAAQ,IAAI9I,EAAU4H,GAAakB,CAAO,GAC1CA,EAAQ,IAAI9I,EAAU0H,GAAiBoB,CAAO,GAC9C6B,EAAW,IAAI3K,EAAU2H,GAAagD,CAAU,GAChDA,EAAW,IAAI3K,EAAU4H,GAAa+C,CAAU,GAChDA,EAAW,IAAI3K,EAAU0H,GAAiBiD,CAAU;AAEpD,WAAS3K,EAAUxB,GAAWsK,GAAS;AACrC,WAAO,SAAS1L,GAAM;AACpB,UAAID,IAAS,CAAE,GACXlH,IAAI,IACJiI,IAAI,GACJpH,IAAI0H,EAAU,QACdlC,GACA4R,IACA/U;AAIJ,WAFMiE,aAAgB,SAAOA,IAAO,IAAI,KAAK,CAACA,CAAI,IAE3C,EAAEnH,IAAIa;AACX,QAAI0H,EAAU,WAAWvI,CAAC,MAAM,OAC9BkH,EAAO,KAAKqB,EAAU,MAAMN,GAAGjI,CAAC,CAAC,IAC5BiY,KAAMC,GAAK7R,IAAIkC,EAAU,OAAO,EAAEvI,CAAC,CAAC,MAAM,OAAMqG,IAAIkC,EAAU,OAAO,EAAEvI,CAAC,IACxEiY,KAAM5R,MAAM,MAAM,MAAM,MACzBnD,KAAS2P,EAAQxM,CAAC,OAAGA,IAAInD,GAAOiE,GAAM8Q,EAAG,IAC7C/Q,EAAO,KAAKb,CAAC,GACb4B,IAAIjI,IAAI;AAIZ,aAAAkH,EAAO,KAAKqB,EAAU,MAAMN,GAAGjI,CAAC,CAAC,GAC1BkH,EAAO,KAAK,EAAE;AAAA,IAC3B;AAAA,EACG;AAED,WAASiR,EAAS5P,GAAW6P,GAAG;AAC9B,WAAO,SAASlR,GAAQ;AACtB,UAAI,IAAIqK,GAAQ,MAAM,QAAW,CAAC,GAC9BvR,IAAIqY,EAAe,GAAG9P,GAAWrB,KAAU,IAAI,CAAC,GAChD6J,GAAMjC;AACV,UAAI9O,KAAKkH,EAAO;AAAQ,eAAO;AAG/B,UAAI,OAAO;AAAG,eAAO,IAAI,KAAK,EAAE,CAAC;AACjC,UAAI,OAAO;AAAG,eAAO,IAAI,KAAK,EAAE,IAAI,OAAQ,OAAO,IAAI,EAAE,IAAI,EAAE;AAY/D,UATIkR,KAAK,EAAE,OAAO,OAAI,EAAE,IAAI,IAGxB,OAAO,MAAG,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,IAAI,KAGjC,EAAE,MAAM,WAAW,EAAE,IAAI,OAAO,IAAI,EAAE,IAAI,IAG1C,OAAO,GAAG;AACZ,YAAI,EAAE,IAAI,KAAK,EAAE,IAAI;AAAI,iBAAO;AAChC,QAAM,OAAO,MAAI,EAAE,IAAI,IACnB,OAAO,KACTrH,IAAOO,GAAQC,GAAQ,EAAE,GAAG,GAAG,CAAC,CAAC,GAAGzC,IAAMiC,EAAK,UAAS,GACxDA,IAAOjC,IAAM,KAAKA,MAAQ,IAAIsB,GAAU,KAAKW,CAAI,IAAIX,GAAUW,CAAI,GACnEA,IAAOf,GAAO,OAAOe,IAAO,EAAE,IAAI,KAAK,CAAC,GACxC,EAAE,IAAIA,EAAK,kBACX,EAAE,IAAIA,EAAK,eACX,EAAE,IAAIA,EAAK,WAAU,KAAM,EAAE,IAAI,KAAK,MAEtCA,IAAOM,GAAUE,GAAQ,EAAE,GAAG,GAAG,CAAC,CAAC,GAAGzC,IAAMiC,EAAK,OAAM,GACvDA,IAAOjC,IAAM,KAAKA,MAAQ,IAAIwJ,GAAW,KAAKvH,CAAI,IAAIuH,GAAWvH,CAAI,GACrEA,IAAOhC,GAAQ,OAAOgC,IAAO,EAAE,IAAI,KAAK,CAAC,GACzC,EAAE,IAAIA,EAAK,eACX,EAAE,IAAIA,EAAK,YACX,EAAE,IAAIA,EAAK,QAAO,KAAM,EAAE,IAAI,KAAK;AAAA,MAEtC;AAAM,SAAI,OAAO,KAAK,OAAO,OACtB,OAAO,MAAI,EAAE,IAAI,OAAO,IAAI,EAAE,IAAI,IAAI,OAAO,IAAI,IAAI,IAC3DjC,IAAM,OAAO,IAAIwC,GAAQC,GAAQ,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,cAAcF,GAAUE,GAAQ,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,UACzF,EAAE,IAAI,GACN,EAAE,IAAI,OAAO,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,KAAKzC,IAAM,KAAK,IAAI,EAAE,IAAI,EAAE,IAAI,KAAKA,IAAM,KAAK;AAKzF,aAAI,OAAO,KACT,EAAE,KAAK,EAAE,IAAI,MAAM,GACnB,EAAE,KAAK,EAAE,IAAI,KACNwC,GAAQ,CAAC,KAIXD,GAAU,CAAC;AAAA,IACxB;AAAA,EACG;AAED,WAASgH,EAAe9Y,GAAGgJ,GAAWrB,GAAQe,GAAG;AAO/C,aANIjI,IAAI,GACJa,IAAI0H,EAAU,QACdiJ,IAAItK,EAAO,QACXb,GACAkS,IAEGvY,IAAIa,KAAG;AACZ,UAAIoH,KAAKuJ;AAAG,eAAO;AAEnB,UADAnL,IAAIkC,EAAU,WAAWvI,GAAG,GACxBqG,MAAM;AAGR,YAFAA,IAAIkC,EAAU,OAAOvI,GAAG,GACxBuY,KAAQnC,EAAO/P,KAAK6R,KAAO3P,EAAU,OAAOvI,GAAG,IAAIqG,CAAC,GAChD,CAACkS,OAAWtQ,IAAIsQ,GAAMhZ,GAAG2H,GAAQe,CAAC,KAAK;AAAI,iBAAO;AAAA,iBAC7C5B,KAAKa,EAAO,WAAWe,GAAG;AACnC,eAAO;AAAA,IAEV;AAED,WAAOA;AAAA,EACR;AAED,WAASkP,EAAY5X,GAAG2H,GAAQlH,GAAG;AACjC,QAAIa,IAAIoR,EAAS,KAAK/K,EAAO,MAAMlH,CAAC,CAAC;AACrC,WAAOa,KAAKtB,EAAE,IAAI4S,EAAa,IAAItR,EAAE,CAAC,EAAE,YAAa,CAAA,GAAGb,IAAIa,EAAE,CAAC,EAAE,UAAU;AAAA,EAC5E;AAED,WAASwV,EAAkB9W,GAAG2H,GAAQlH,GAAG;AACvC,QAAIa,IAAI0R,EAAe,KAAKrL,EAAO,MAAMlH,CAAC,CAAC;AAC3C,WAAOa,KAAKtB,EAAE,IAAIiT,EAAmB,IAAI3R,EAAE,CAAC,EAAE,YAAa,CAAA,GAAGb,IAAIa,EAAE,CAAC,EAAE,UAAU;AAAA,EAClF;AAED,WAASyV,EAAa/W,GAAG2H,GAAQlH,GAAG;AAClC,QAAIa,IAAIwR,EAAU,KAAKnL,EAAO,MAAMlH,CAAC,CAAC;AACtC,WAAOa,KAAKtB,EAAE,IAAI+S,EAAc,IAAIzR,EAAE,CAAC,EAAE,YAAa,CAAA,GAAGb,IAAIa,EAAE,CAAC,EAAE,UAAU;AAAA,EAC7E;AAED,WAAS0V,EAAgBhX,GAAG2H,GAAQlH,GAAG;AACrC,QAAIa,IAAI8R,EAAa,KAAKzL,EAAO,MAAMlH,CAAC,CAAC;AACzC,WAAOa,KAAKtB,EAAE,IAAIqT,EAAiB,IAAI/R,EAAE,CAAC,EAAE,YAAa,CAAA,GAAGb,IAAIa,EAAE,CAAC,EAAE,UAAU;AAAA,EAChF;AAED,WAAS2V,EAAWjX,GAAG2H,GAAQlH,GAAG;AAChC,QAAIa,IAAI4R,EAAQ,KAAKvL,EAAO,MAAMlH,CAAC,CAAC;AACpC,WAAOa,KAAKtB,EAAE,IAAImT,EAAY,IAAI7R,EAAE,CAAC,EAAE,YAAa,CAAA,GAAGb,IAAIa,EAAE,CAAC,EAAE,UAAU;AAAA,EAC3E;AAED,WAAS4V,EAAoBlX,GAAG2H,GAAQlH,GAAG;AACzC,WAAOqY,EAAe9Y,GAAGkS,GAAiBvK,GAAQlH,CAAC;AAAA,EACpD;AAED,WAAS6X,EAAgBtY,GAAG2H,GAAQlH,GAAG;AACrC,WAAOqY,EAAe9Y,GAAGmS,GAAaxK,GAAQlH,CAAC;AAAA,EAChD;AAED,WAAS8X,EAAgBvY,GAAG2H,GAAQlH,GAAG;AACrC,WAAOqY,EAAe9Y,GAAGoS,GAAazK,GAAQlH,CAAC;AAAA,EAChD;AAED,WAAS8S,EAAmBvT,GAAG;AAC7B,WAAOuS,EAAqBvS,EAAE,OAAM,CAAE;AAAA,EACvC;AAED,WAASwT,EAAcxT,GAAG;AACxB,WAAOsS,EAAgBtS,EAAE,OAAM,CAAE;AAAA,EAClC;AAED,WAASyT,EAAiBzT,GAAG;AAC3B,WAAOyS,EAAmBzS,EAAE,SAAQ,CAAE;AAAA,EACvC;AAED,WAAS0T,EAAY1T,GAAG;AACtB,WAAOwS,EAAcxS,EAAE,SAAQ,CAAE;AAAA,EAClC;AAED,WAASqU,EAAarU,GAAG;AACvB,WAAOqS,EAAe,EAAErS,EAAE,SAAQ,KAAM,GAAG;AAAA,EAC5C;AAED,WAASsU,EAActU,GAAG;AACxB,WAAO,IAAI,CAAC,EAAEA,EAAE,SAAU,IAAG;AAAA,EAC9B;AAED,WAASoV,EAAsBpV,GAAG;AAChC,WAAOuS,EAAqBvS,EAAE,UAAS,CAAE;AAAA,EAC1C;AAED,WAASqV,EAAiBrV,GAAG;AAC3B,WAAOsS,EAAgBtS,EAAE,UAAS,CAAE;AAAA,EACrC;AAED,WAASsV,EAAoBtV,GAAG;AAC9B,WAAOyS,EAAmBzS,EAAE,YAAW,CAAE;AAAA,EAC1C;AAED,WAASuV,EAAevV,GAAG;AACzB,WAAOwS,EAAcxS,EAAE,YAAW,CAAE;AAAA,EACrC;AAED,WAASkW,GAAgBlW,GAAG;AAC1B,WAAOqS,EAAe,EAAErS,EAAE,YAAW,KAAM,GAAG;AAAA,EAC/C;AAED,WAASmW,EAAiBnW,GAAG;AAC3B,WAAO,IAAI,CAAC,EAAEA,EAAE,YAAa,IAAG;AAAA,EACjC;AAED,SAAO;AAAA,IACL,QAAQ,SAASgJ,GAAW;AAC1B,UAAIpJ,IAAI4K,EAAUxB,KAAa,IAAIsK,CAAO;AAC1C,aAAA1T,EAAE,WAAW,WAAW;AAAE,eAAOoJ;AAAA,MAAU,GACpCpJ;AAAA,IACR;AAAA,IACD,OAAO,SAASoJ,GAAW;AACzB,UAAIvE,IAAImU,EAAS5P,KAAa,IAAI,EAAK;AACvC,aAAAvE,EAAE,WAAW,WAAW;AAAE,eAAOuE;AAAA,MAAU,GACpCvE;AAAA,IACR;AAAA,IACD,WAAW,SAASuE,GAAW;AAC7B,UAAIpJ,IAAI4K,EAAUxB,KAAa,IAAImM,CAAU;AAC7C,aAAAvV,EAAE,WAAW,WAAW;AAAE,eAAOoJ;AAAA,MAAU,GACpCpJ;AAAA,IACR;AAAA,IACD,UAAU,SAASoJ,GAAW;AAC5B,UAAIvE,IAAImU,EAAS5P,KAAa,IAAI,EAAI;AACtC,aAAAvE,EAAE,WAAW,WAAW;AAAE,eAAOuE;AAAA,MAAU,GACpCvE;AAAA,IACR;AAAA,EACL;AACA;AAEA,IAAIkU,KAAO,EAAC,KAAK,IAAI,GAAK,KAAK,GAAK,IAAG,GACnCM,KAAW,WACXC,KAAY,MACZC,KAAY;AAEhB,SAAST,EAAIvW,GAAOsI,GAAMhC,GAAO;AAC/B,MAAIkC,IAAOxI,IAAQ,IAAI,MAAM,IACzBwF,KAAUgD,IAAO,CAACxI,IAAQA,KAAS,IACnCwG,IAAShB,EAAO;AACpB,SAAOgD,KAAQhC,IAASF,IAAQ,IAAI,MAAMA,IAAQE,IAAS,CAAC,EAAE,KAAK8B,CAAI,IAAI9C,IAASA;AACtF;AAEA,SAASyR,GAAQhQ,GAAG;AAClB,SAAOA,EAAE,QAAQ+P,IAAW,MAAM;AACpC;AAEA,SAASxG,GAAS0G,GAAO;AACvB,SAAO,IAAI,OAAO,SAASA,EAAM,IAAID,EAAO,EAAE,KAAK,GAAG,IAAI,KAAK,GAAG;AACpE;AAEA,SAASvG,GAAawG,GAAO;AAC3B,SAAO,IAAI,IAAIA,EAAM,IAAI,CAACC,GAAM7Y,MAAM,CAAC6Y,EAAK,YAAW,GAAI7Y,CAAC,CAAC,CAAC;AAChE;AAEA,SAAS2X,GAAyBpY,GAAG2H,GAAQlH,GAAG;AAC9C,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAC5C,SAAO,KAAKT,EAAE,IAAI,CAAC,EAAE,CAAC,GAAGS,IAAI,EAAE,CAAC,EAAE,UAAU;AAC9C;AAEA,SAASwX,GAAyBjY,GAAG2H,GAAQlH,GAAG;AAC9C,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAC5C,SAAO,KAAKT,EAAE,IAAI,CAAC,EAAE,CAAC,GAAGS,IAAI,EAAE,CAAC,EAAE,UAAU;AAC9C;AAEA,SAASyX,GAAsBlY,GAAG2H,GAAQlH,GAAG;AAC3C,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAC5C,SAAO,KAAKT,EAAE,IAAI,CAAC,EAAE,CAAC,GAAGS,IAAI,EAAE,CAAC,EAAE,UAAU;AAC9C;AAEA,SAAS0X,GAAmBnY,GAAG2H,GAAQlH,GAAG;AACxC,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAC5C,SAAO,KAAKT,EAAE,IAAI,CAAC,EAAE,CAAC,GAAGS,IAAI,EAAE,CAAC,EAAE,UAAU;AAC9C;AAEA,SAAS4X,GAAsBrY,GAAG2H,GAAQlH,GAAG;AAC3C,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAC5C,SAAO,KAAKT,EAAE,IAAI,CAAC,EAAE,CAAC,GAAGS,IAAI,EAAE,CAAC,EAAE,UAAU;AAC9C;AAEA,SAAS6W,GAActX,GAAG2H,GAAQlH,GAAG;AACnC,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAC5C,SAAO,KAAKT,EAAE,IAAI,CAAC,EAAE,CAAC,GAAGS,IAAI,EAAE,CAAC,EAAE,UAAU;AAC9C;AAEA,SAAS4W,GAAUrX,GAAG2H,GAAQlH,GAAG;AAC/B,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAC5C,SAAO,KAAKT,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,MAAOS,IAAI,EAAE,CAAC,EAAE,UAAU;AAC3E;AAEA,SAAS+X,GAAUxY,GAAG2H,GAAQlH,GAAG;AAC/B,MAAI,IAAI,+BAA+B,KAAKkH,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAClE,SAAO,KAAKT,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,QAAQS,IAAI,EAAE,CAAC,EAAE,UAAU;AAC5E;AAEA,SAASoX,GAAa7X,GAAG2H,GAAQlH,GAAG;AAClC,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAC5C,SAAO,KAAKT,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,GAAGS,IAAI,EAAE,CAAC,EAAE,UAAU;AACrD;AAEA,SAASiX,GAAiB1X,GAAG2H,GAAQlH,GAAG;AACtC,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAC5C,SAAO,KAAKT,EAAE,IAAI,EAAE,CAAC,IAAI,GAAGS,IAAI,EAAE,CAAC,EAAE,UAAU;AACjD;AAEA,SAAS0W,GAAgBnX,GAAG2H,GAAQlH,GAAG;AACrC,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAC5C,SAAO,KAAKT,EAAE,IAAI,CAAC,EAAE,CAAC,GAAGS,IAAI,EAAE,CAAC,EAAE,UAAU;AAC9C;AAEA,SAAS+W,GAAexX,GAAG2H,GAAQlH,GAAG;AACpC,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAC5C,SAAO,KAAKT,EAAE,IAAI,GAAGA,EAAE,IAAI,CAAC,EAAE,CAAC,GAAGS,IAAI,EAAE,CAAC,EAAE,UAAU;AACvD;AAEA,SAAS8W,GAAYvX,GAAG2H,GAAQlH,GAAG;AACjC,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAC5C,SAAO,KAAKT,EAAE,IAAI,CAAC,EAAE,CAAC,GAAGS,IAAI,EAAE,CAAC,EAAE,UAAU;AAC9C;AAEA,SAASkX,GAAa3X,GAAG2H,GAAQlH,GAAG;AAClC,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAC5C,SAAO,KAAKT,EAAE,IAAI,CAAC,EAAE,CAAC,GAAGS,IAAI,EAAE,CAAC,EAAE,UAAU;AAC9C;AAEA,SAASuX,GAAahY,GAAG2H,GAAQlH,GAAG;AAClC,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAC5C,SAAO,KAAKT,EAAE,IAAI,CAAC,EAAE,CAAC,GAAGS,IAAI,EAAE,CAAC,EAAE,UAAU;AAC9C;AAEA,SAASgX,GAAkBzX,GAAG2H,GAAQlH,GAAG;AACvC,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAC5C,SAAO,KAAKT,EAAE,IAAI,CAAC,EAAE,CAAC,GAAGS,IAAI,EAAE,CAAC,EAAE,UAAU;AAC9C;AAEA,SAAS2W,GAAkBpX,GAAG2H,GAAQlH,GAAG;AACvC,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAC5C,SAAO,KAAKT,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC,IAAI,GAAI,GAAGS,IAAI,EAAE,CAAC,EAAE,UAAU;AAChE;AAEA,SAASgY,GAAoBzY,GAAG2H,GAAQlH,GAAG;AACzC,MAAI,IAAIyY,GAAU,KAAKvR,EAAO,MAAMlH,GAAGA,IAAI,CAAC,CAAC;AAC7C,SAAO,IAAIA,IAAI,EAAE,CAAC,EAAE,SAAS;AAC/B;AAEA,SAASqX,GAAmB9X,GAAG2H,GAAQlH,GAAG;AACxC,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,CAAC,CAAC;AACrC,SAAO,KAAKT,EAAE,IAAI,CAAC,EAAE,CAAC,GAAGS,IAAI,EAAE,CAAC,EAAE,UAAU;AAC9C;AAEA,SAASsX,GAA0B/X,GAAG2H,GAAQlH,GAAG;AAC/C,MAAI,IAAIwY,GAAS,KAAKtR,EAAO,MAAMlH,CAAC,CAAC;AACrC,SAAO,KAAKT,EAAE,IAAI,CAAC,EAAE,CAAC,GAAGS,IAAI,EAAE,CAAC,EAAE,UAAU;AAC9C;AAEA,SAASkT,GAAiB3T,GAAGyE,GAAG;AAC9B,SAAOiU,EAAI1Y,EAAE,QAAS,GAAEyE,GAAG,CAAC;AAC9B;AAEA,SAASsP,GAAa/T,GAAGyE,GAAG;AAC1B,SAAOiU,EAAI1Y,EAAE,SAAU,GAAEyE,GAAG,CAAC;AAC/B;AAEA,SAASuP,GAAahU,GAAGyE,GAAG;AAC1B,SAAOiU,EAAI1Y,EAAE,SAAU,IAAG,MAAM,IAAIyE,GAAG,CAAC;AAC1C;AAEA,SAASwP,GAAgBjU,GAAGyE,GAAG;AAC7B,SAAOiU,EAAI,IAAIlJ,GAAQ,MAAMY,GAASpQ,CAAC,GAAGA,CAAC,GAAGyE,GAAG,CAAC;AACpD;AAEA,SAASyP,GAAmBlU,GAAGyE,GAAG;AAChC,SAAOiU,EAAI1Y,EAAE,gBAAiB,GAAEyE,GAAG,CAAC;AACtC;AAEA,SAASmP,GAAmB5T,GAAGyE,GAAG;AAChC,SAAOyP,GAAmBlU,GAAGyE,CAAC,IAAI;AACpC;AAEA,SAAS0P,GAAkBnU,GAAGyE,GAAG;AAC/B,SAAOiU,EAAI1Y,EAAE,SAAQ,IAAK,GAAGyE,GAAG,CAAC;AACnC;AAEA,SAAS2P,GAAcpU,GAAGyE,GAAG;AAC3B,SAAOiU,EAAI1Y,EAAE,WAAY,GAAEyE,GAAG,CAAC;AACjC;AAEA,SAASgQ,GAAczU,GAAGyE,GAAG;AAC3B,SAAOiU,EAAI1Y,EAAE,WAAY,GAAEyE,GAAG,CAAC;AACjC;AAEA,SAASiQ,GAA0B1U,GAAG;AACpC,MAAIuP,IAAMvP,EAAE;AACZ,SAAOuP,MAAQ,IAAI,IAAIA;AACzB;AAEA,SAASoF,GAAuB3U,GAAGyE,GAAG;AACpC,SAAOiU,EAAIa,GAAW,MAAMnJ,GAASpQ,CAAC,IAAI,GAAGA,CAAC,GAAGyE,GAAG,CAAC;AACvD;AAEA,SAAS+U,GAAKxZ,GAAG;AACf,MAAIuP,IAAMvP,EAAE;AACZ,SAAQuP,KAAO,KAAKA,MAAQ,IAAKkK,GAAazZ,CAAC,IAAIyZ,GAAa,KAAKzZ,CAAC;AACxE;AAEA,SAAS4U,GAAoB5U,GAAGyE,GAAG;AACjC,SAAAzE,IAAIwZ,GAAKxZ,CAAC,GACH0Y,EAAIe,GAAa,MAAMrJ,GAASpQ,CAAC,GAAGA,CAAC,KAAKoQ,GAASpQ,CAAC,EAAE,OAAQ,MAAK,IAAIyE,GAAG,CAAC;AACpF;AAEA,SAASoQ,GAA0B7U,GAAG;AACpC,SAAOA,EAAE;AACX;AAEA,SAAS8U,GAAuB9U,GAAGyE,GAAG;AACpC,SAAOiU,EAAIK,GAAW,MAAM3I,GAASpQ,CAAC,IAAI,GAAGA,CAAC,GAAGyE,GAAG,CAAC;AACvD;AAEA,SAASsQ,GAAW/U,GAAGyE,GAAG;AACxB,SAAOiU,EAAI1Y,EAAE,YAAW,IAAK,KAAKyE,GAAG,CAAC;AACxC;AAEA,SAASoP,GAAc7T,GAAGyE,GAAG;AAC3B,SAAAzE,IAAIwZ,GAAKxZ,CAAC,GACH0Y,EAAI1Y,EAAE,YAAW,IAAK,KAAKyE,GAAG,CAAC;AACxC;AAEA,SAASuQ,GAAehV,GAAGyE,GAAG;AAC5B,SAAOiU,EAAI1Y,EAAE,YAAW,IAAK,KAAOyE,GAAG,CAAC;AAC1C;AAEA,SAASqP,GAAkB9T,GAAGyE,GAAG;AAC/B,MAAI8K,IAAMvP,EAAE;AACZ,SAAAA,IAAKuP,KAAO,KAAKA,MAAQ,IAAKkK,GAAazZ,CAAC,IAAIyZ,GAAa,KAAKzZ,CAAC,GAC5D0Y,EAAI1Y,EAAE,YAAW,IAAK,KAAOyE,GAAG,CAAC;AAC1C;AAEA,SAASwQ,GAAWjV,GAAG;AACrB,MAAIkG,IAAIlG,EAAE;AACV,UAAQkG,IAAI,IAAI,OAAOA,KAAK,IAAI,QAC1BwS,EAAIxS,IAAI,KAAK,GAAG,KAAK,CAAC,IACtBwS,EAAIxS,IAAI,IAAI,KAAK,CAAC;AAC1B;AAEA,SAASsP,GAAoBxV,GAAGyE,GAAG;AACjC,SAAOiU,EAAI1Y,EAAE,WAAY,GAAEyE,GAAG,CAAC;AACjC;AAEA,SAASmR,GAAgB5V,GAAGyE,GAAG;AAC7B,SAAOiU,EAAI1Y,EAAE,YAAa,GAAEyE,GAAG,CAAC;AAClC;AAEA,SAASoR,GAAgB7V,GAAGyE,GAAG;AAC7B,SAAOiU,EAAI1Y,EAAE,YAAa,IAAG,MAAM,IAAIyE,GAAG,CAAC;AAC7C;AAEA,SAASqR,GAAmB9V,GAAGyE,GAAG;AAChC,SAAOiU,EAAI,IAAIjI,GAAO,MAAMY,GAAQrR,CAAC,GAAGA,CAAC,GAAGyE,GAAG,CAAC;AAClD;AAEA,SAASsR,GAAsB/V,GAAGyE,GAAG;AACnC,SAAOiU,EAAI1Y,EAAE,mBAAoB,GAAEyE,GAAG,CAAC;AACzC;AAEA,SAASgR,GAAsBzV,GAAGyE,GAAG;AACnC,SAAOsR,GAAsB/V,GAAGyE,CAAC,IAAI;AACvC;AAEA,SAASuR,GAAqBhW,GAAGyE,GAAG;AAClC,SAAOiU,EAAI1Y,EAAE,YAAW,IAAK,GAAGyE,GAAG,CAAC;AACtC;AAEA,SAASwR,GAAiBjW,GAAGyE,GAAG;AAC9B,SAAOiU,EAAI1Y,EAAE,cAAe,GAAEyE,GAAG,CAAC;AACpC;AAEA,SAAS2R,GAAiBpW,GAAGyE,GAAG;AAC9B,SAAOiU,EAAI1Y,EAAE,cAAe,GAAEyE,GAAG,CAAC;AACpC;AAEA,SAAS4R,GAA6BrW,GAAG;AACvC,MAAI0Z,IAAM1Z,EAAE;AACZ,SAAO0Z,MAAQ,IAAI,IAAIA;AACzB;AAEA,SAASpD,GAA0BtW,GAAGyE,GAAG;AACvC,SAAOiU,EAAI9H,GAAU,MAAMS,GAAQrR,CAAC,IAAI,GAAGA,CAAC,GAAGyE,GAAG,CAAC;AACrD;AAEA,SAASkV,GAAQ3Z,GAAG;AAClB,MAAIuP,IAAMvP,EAAE;AACZ,SAAQuP,KAAO,KAAKA,MAAQ,IAAKyB,GAAYhR,CAAC,IAAIgR,GAAY,KAAKhR,CAAC;AACtE;AAEA,SAASuW,GAAuBvW,GAAGyE,GAAG;AACpC,SAAAzE,IAAI2Z,GAAQ3Z,CAAC,GACN0Y,EAAI1H,GAAY,MAAMK,GAAQrR,CAAC,GAAGA,CAAC,KAAKqR,GAAQrR,CAAC,EAAE,UAAW,MAAK,IAAIyE,GAAG,CAAC;AACpF;AAEA,SAAS+R,GAA6BxW,GAAG;AACvC,SAAOA,EAAE;AACX;AAEA,SAASyW,GAA0BzW,GAAGyE,GAAG;AACvC,SAAOiU,EAAI7H,GAAU,MAAMQ,GAAQrR,CAAC,IAAI,GAAGA,CAAC,GAAGyE,GAAG,CAAC;AACrD;AAEA,SAASiS,GAAc1W,GAAGyE,GAAG;AAC3B,SAAOiU,EAAI1Y,EAAE,eAAc,IAAK,KAAKyE,GAAG,CAAC;AAC3C;AAEA,SAASiR,GAAiB1V,GAAGyE,GAAG;AAC9B,SAAAzE,IAAI2Z,GAAQ3Z,CAAC,GACN0Y,EAAI1Y,EAAE,eAAc,IAAK,KAAKyE,GAAG,CAAC;AAC3C;AAEA,SAASkS,GAAkB3W,GAAGyE,GAAG;AAC/B,SAAOiU,EAAI1Y,EAAE,eAAc,IAAK,KAAOyE,GAAG,CAAC;AAC7C;AAEA,SAASkR,GAAqB3V,GAAGyE,GAAG;AAClC,MAAI8K,IAAMvP,EAAE;AACZ,SAAAA,IAAKuP,KAAO,KAAKA,MAAQ,IAAKyB,GAAYhR,CAAC,IAAIgR,GAAY,KAAKhR,CAAC,GAC1D0Y,EAAI1Y,EAAE,eAAc,IAAK,KAAOyE,GAAG,CAAC;AAC7C;AAEA,SAASmS,KAAgB;AACvB,SAAO;AACT;AAEA,SAAS1B,KAAuB;AAC9B,SAAO;AACT;AAEA,SAASX,GAAoBvU,GAAG;AAC9B,SAAO,CAACA;AACV;AAEA,SAASwU,GAA2BxU,GAAG;AACrC,SAAO,KAAK,MAAM,CAACA,IAAI,GAAI;AAC7B;ACtrBA,IAAIgK,IACO4P;AAKXjO,GAAc;AAAA,EACZ,UAAU;AAAA,EACV,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS,CAAC,MAAM,IAAI;AAAA,EACpB,MAAM,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAU;AAAA,EACnF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAC3D,QAAQ,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAU;AAAA,EACjI,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAClG,CAAC;AAEc,SAASA,GAAcC,GAAY;AAChD,SAAA5B,KAAS6B,GAAaD,CAAU,GAChCgO,KAAa5P,GAAO,QACRA,GAAO,OACPA,GAAO,WACRA,GAAO,UACXA;AACT;ACpBA,SAASpC,GAAK,GAAG;AACf,SAAO,IAAI,KAAK,CAAC;AACnB;AAEA,SAASlH,GAAO,GAAG;AACjB,SAAO,aAAa,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;AAC9C;AAEO,SAASmZ,GAAS5Y,GAAOyQ,GAAcvB,GAAMF,GAAOuB,GAAMjC,GAAKF,GAAMF,GAAQF,GAAQtL,GAAQ;AAClG,MAAId,IAAQ2K,GAAY,GACpBsM,IAASjX,EAAM,QACfyJ,IAASzJ,EAAM,QAEfkX,IAAoBpW,EAAO,KAAK,GAChCqW,IAAerW,EAAO,KAAK,GAC3BsW,IAAetW,EAAO,OAAO,GAC7BuW,IAAavW,EAAO,OAAO,GAC3BwW,IAAYxW,EAAO,OAAO,GAC1ByW,IAAazW,EAAO,OAAO,GAC3B+P,IAAc/P,EAAO,IAAI,GACzBoR,IAAapR,EAAO,IAAI;AAE5B,WAASP,EAAWwE,GAAM;AACxB,YAAQqH,EAAOrH,CAAI,IAAIA,IAAOmS,IACxB5K,EAAOvH,CAAI,IAAIA,IAAOoS,IACtB3K,EAAKzH,CAAI,IAAIA,IAAOqS,IACpB1K,EAAI3H,CAAI,IAAIA,IAAOsS,IACnBjK,EAAMrI,CAAI,IAAIA,IAAQ4J,EAAK5J,CAAI,IAAIA,IAAOuS,IAAYC,IACtDjK,EAAKvI,CAAI,IAAIA,IAAO8L,IACpBqB,GAAYnN,CAAI;AAAA,EACvB;AAED,SAAA/E,EAAM,SAAS,SAASD,GAAG;AACzB,WAAO,IAAI,KAAKkX,EAAOlX,CAAC,CAAC;AAAA,EAC7B,GAEEC,EAAM,SAAS,SAAS6B,GAAG;AACzB,WAAO,UAAU,SAAS4H,EAAO,MAAM,KAAK5H,GAAGhE,EAAM,CAAC,IAAI4L,EAAM,EAAG,IAAI1E,EAAI;AAAA,EAC/E,GAEE/E,EAAM,QAAQ,SAASkL,GAAU;AAC/B,QAAI/N,IAAIsM;AACR,WAAOrL,EAAMjB,EAAE,CAAC,GAAGA,EAAEA,EAAE,SAAS,CAAC,GAAG+N,KAAmB,EAAa;AAAA,EACxE,GAEElL,EAAM,aAAa,SAASzB,GAAO4H,GAAW;AAC5C,WAAOA,KAAa,OAAO5F,IAAaO,EAAOqF,CAAS;AAAA,EAC5D,GAEEnG,EAAM,OAAO,SAASkL,GAAU;AAC9B,QAAI/N,IAAIsM;AACR,YAAI,CAACyB,KAAY,OAAOA,EAAS,SAAU,gBAAYA,IAAW2D,EAAa1R,EAAE,CAAC,GAAGA,EAAEA,EAAE,SAAS,CAAC,GAAG+N,KAAmB,EAAa,IAC/HA,IAAWzB,EAAOwB,GAAK9N,GAAG+N,CAAQ,CAAC,IAAIlL;AAAA,EAClD,GAEEA,EAAM,OAAO,WAAW;AACtB,WAAO6J,GAAK7J,GAAOgX,GAAS5Y,GAAOyQ,GAAcvB,GAAMF,GAAOuB,GAAMjC,GAAKF,GAAMF,GAAQF,GAAQtL,CAAM,CAAC;AAAA,EAC1G,GAESd;AACT;AAEe,SAASwX,KAAO;AAC7B,SAAOxM,GAAU,MAAMgM,GAASjI,IAAWC,IAAkBzB,IAAUF,IAAWoK,IAAU9K,IAASF,IAAUF,IAAYmL,IAAYX,EAAU,EAAE,OAAO,CAAC,IAAI,KAAK,KAAM,GAAG,CAAC,GAAG,IAAI,KAAK,KAAM,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS;AACpN;ACGA,IAAIY,KAAU,WAAU;AACxB,MAAIhV,IAAE,SAAShC,GAAEiX,GAAEjV,GAAEY,GAAE;AAAC,SAAIZ,IAAEA,KAAG,CAAE,GAACY,IAAE5C,EAAE,QAAO4C,KAAIZ,EAAEhC,EAAE4C,CAAC,CAAC,IAAEqU;AAAE;AAAC,WAAOjV;AAAA,EAAC,GAAEkV,IAAI,CAAC,GAAE,CAAC,GAAEC,IAAI,CAAC,GAAE,CAAC,GAAEC,IAAI,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,EAAE,GAAEC,IAAI,CAAC,GAAE,EAAE,GAAEC,IAAI,CAAC,GAAE,EAAE,GAAEC,IAAI,CAAC,GAAE,EAAE,GAAEC,IAAI,CAAC,GAAE,EAAE,GAAEC,IAAI,CAAC,GAAE,EAAE,GAAEC,IAAI,CAAC,GAAE,EAAE,GAAEC,IAAI,CAAC,GAAE,EAAE,GAAEC,IAAI,CAAC,GAAE,EAAE,GAAEC,IAAI,CAAC,GAAE,EAAE,GAAEC,IAAI,CAAC,GAAE,EAAE,GAAEC,IAAI,CAAC,GAAE,EAAE,GAAEC,IAAI,CAAC,GAAE,EAAE,GAAEC,IAAI,CAAC,GAAE,EAAE,GAAEC,IAAI,CAAC,GAAE,EAAE,GAAEC,IAAI,CAAC,GAAE,EAAE,GAAEC,IAAI,CAAC,GAAE,EAAE,GAAEC,IAAI,CAAC,GAAE,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,EAAE,GAClYrB,IAAS;AAAA,IAAC,OAAO,WAAkB;AAAA,IAAG;AAAA,IAC1C,IAAI,CAAE;AAAA,IACN,UAAU,EAAC,OAAQ,GAAE,OAAQ,GAAE,WAAY,GAAE,OAAQ,GAAE,UAAW,GAAE,KAAM,GAAE,MAAO,GAAE,OAAQ,GAAE,WAAY,IAAG,IAAK,IAAG,YAAa,IAAG,mBAAoB,IAAG,SAAU,IAAG,YAAa,IAAG,cAAe,IAAG,UAAW,IAAG,UAAW,IAAG,aAAc,IAAG,OAAQ,IAAG,WAAY,IAAG,iBAAkB,IAAG,WAAY,IAAG,iBAAkB,IAAG,2BAA4B,IAAG,SAAU,IAAG,gBAAiB,IAAG,SAAU,IAAG,UAAW,IAAG,eAAgB,IAAG,eAAgB,IAAG,gBAAiB,IAAG,KAAI,IAAG,cAAe,IAAG,OAAQ,IAAG,cAAe,IAAG,cAAe,IAAG,MAAO,IAAG,qBAAsB,IAAG,gBAAiB,IAAG,gBAAiB,IAAG,eAAgB,IAAG,iBAAkB,IAAG,SAAU,GAAE,MAAO,EAAC;AAAA,IAChrB,YAAY,EAAC,GAAE,SAAQ,GAAE,SAAQ,GAAE,OAAM,GAAE,SAAQ,IAAG,MAAK,IAAG,cAAa,IAAG,qBAAoB,IAAG,WAAU,IAAG,cAAa,IAAG,gBAAe,IAAG,YAAW,IAAG,YAAW,IAAG,eAAc,IAAG,SAAQ,IAAG,aAAY,IAAG,mBAAkB,IAAG,aAAY,IAAG,mBAAkB,IAAG,6BAA4B,IAAG,WAAU,IAAG,WAAU,IAAG,YAAW,IAAG,KAAI,IAAG,SAAQ,IAAG,gBAAe,IAAG,gBAAe,IAAG,QAAO,IAAG,kBAAiB,IAAG,kBAAiB,IAAG,iBAAgB,IAAG,kBAAiB;AAAA,IACve,cAAc,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,CAAC;AAAA,IAC1T,eAAe,SAAmBsB,GAAQC,GAAQC,GAAUC,GAAIC,GAAyBC,GAAiBC,GAAiB;AAG3H,UAAIC,IAAKF,EAAG,SAAS;AACrB,cAAQD,GAAO;AAAA,QACf,KAAK;AACJ,iBAAOC,EAAGE,IAAG,CAAC;AAAA,QAEf,KAAK;AACJ,eAAK,IAAI,CAAE;AACZ;AAAA,QACA,KAAK;AACL,UAAAF,EAAGE,IAAG,CAAC,EAAE,KAAKF,EAAGE,CAAE,CAAC,GAAE,KAAK,IAAIF,EAAGE,IAAG,CAAC;AACtC;AAAA,QACA,KAAK;AAAA,QAAG,KAAK;AACZ,eAAK,IAAIF,EAAGE,CAAE;AACf;AAAA,QACA,KAAK;AAAA,QAAG,KAAK;AACZ,eAAK,IAAE;AACR;AAAA,QACA,KAAK;AACL,UAAAJ,EAAG,cAAcE,EAAGE,CAAE,EAAE,OAAO,EAAE,CAAC,GAAE,KAAK,IAAEF,EAAGE,CAAE,EAAE,OAAO,EAAE;AAC3D;AAAA,QACA,KAAK;AACL,UAAAJ,EAAG,wBAAuB,GAAG,KAAK,IAAEE,EAAGE,CAAE,EAAE,OAAO,EAAE;AACpD;AAAA,QACA,KAAK;AACL,UAAAJ,EAAG,QAAO,GAAG,KAAK,IAAEE,EAAGE,CAAE,EAAE,OAAO,CAAC;AACnC;AAAA,QACA,KAAK;AACL,UAAAJ,EAAG,cAAcE,EAAGE,CAAE,EAAE,OAAO,EAAE,CAAC,GAAE,KAAK,IAAEF,EAAGE,CAAE,EAAE,OAAO,EAAE;AAC3D;AAAA,QACA,KAAK;AACL,UAAAJ,EAAG,gBAAgBE,EAAGE,CAAE,EAAE,OAAO,EAAE,CAAC,GAAE,KAAK,IAAEF,EAAGE,CAAE,EAAE,OAAO,EAAE;AAC7D;AAAA,QACA,KAAK;AACL,UAAAJ,EAAG,YAAYE,EAAGE,CAAE,EAAE,OAAO,CAAC,CAAC,GAAE,KAAK,IAAEF,EAAGE,CAAE,EAAE,OAAO,CAAC;AACvD;AAAA,QACA,KAAK;AACL,UAAAJ,EAAG,YAAYE,EAAGE,CAAE,EAAE,OAAO,CAAC,CAAC,GAAE,KAAK,IAAEF,EAAGE,CAAE,EAAE,OAAO,CAAC;AACvD;AAAA,QACA,KAAK;AACL,UAAAJ,EAAG,eAAeE,EAAGE,CAAE,EAAE,OAAO,EAAE,CAAC,GAAE,KAAK,IAAEF,EAAGE,CAAE,EAAE,OAAO,EAAE;AAC5D;AAAA,QACA,KAAK;AACL,UAAAJ,EAAG,gBAAgBE,EAAGE,CAAE,EAAE,OAAO,CAAC,CAAC,GAAE,KAAK,IAAEF,EAAGE,CAAE,EAAE,OAAO,CAAC;AAC3D;AAAA,QACA,KAAK;AACJ,eAAK,IAAEF,EAAGE,CAAE,EAAE,QAAOJ,EAAG,YAAY,KAAK,CAAC;AAC3C;AAAA,QACA,KAAK;AAAA,QAAI,KAAK;AACb,eAAK,IAAEE,EAAGE,CAAE,EAAE,QAAOJ,EAAG,kBAAkB,KAAK,CAAC;AACjD;AAAA,QACA,KAAK;AACL,UAAAA,EAAG,WAAWE,EAAGE,CAAE,EAAE,OAAO,CAAC,CAAC,GAAE,KAAK,IAAEF,EAAGE,CAAE,EAAE,OAAO,CAAC;AACtD;AAAA,QACA,KAAK;AACL,UAAAJ,EAAG,QAAQE,EAAGE,IAAG,CAAC,GAAEF,EAAGE,CAAE,CAAC,GAAE,KAAK,IAAE;AACnC;AAAA,QACA,KAAK;AACL,eAAK,IAAIF,EAAGE,IAAG,CAAC,GAAEJ,EAAG,cAAcE,EAAGE,IAAG,CAAC,GAAGF,EAAGE,CAAE,GAAG,IAAI;AACzD;AAAA,QACA,KAAK;AACL,eAAK,IAAIF,EAAGE,IAAG,CAAC,GAAEJ,EAAG,cAAcE,EAAGE,IAAG,CAAC,GAAGF,EAAGE,IAAG,CAAC,GAAGF,EAAGE,CAAE,CAAC;AAC7D;AAAA,QACA,KAAK;AACL,eAAK,IAAIF,EAAGE,IAAG,CAAC,GAAEJ,EAAG,cAAcE,EAAGE,IAAG,CAAC,GAAGF,EAAGE,IAAG,CAAC,GAAG,IAAI,GAAEJ,EAAG,QAAQE,EAAGE,IAAG,CAAC,GAAEF,EAAGE,CAAE,CAAC;AACvF;AAAA,QACA,KAAK;AACL,eAAK,IAAIF,EAAGE,IAAG,CAAC,GAAEJ,EAAG,cAAcE,EAAGE,IAAG,CAAC,GAAGF,EAAGE,IAAG,CAAC,GAAGF,EAAGE,IAAG,CAAC,CAAC,GAAEJ,EAAG,QAAQE,EAAGE,IAAG,CAAC,GAAEF,EAAGE,CAAE,CAAC;AAC3F;AAAA,QACA,KAAK;AACL,eAAK,IAAIF,EAAGE,IAAG,CAAC,GAAEJ,EAAG,cAAcE,EAAGE,IAAG,CAAC,GAAGF,EAAGE,CAAE,GAAG,IAAI,GAAEJ,EAAG,QAAQE,EAAGE,IAAG,CAAC,GAAEF,EAAGE,IAAG,CAAC,CAAC;AACvF;AAAA,QACA,KAAK;AACL,eAAK,IAAIF,EAAGE,IAAG,CAAC,GAAEJ,EAAG,cAAcE,EAAGE,IAAG,CAAC,GAAGF,EAAGE,IAAG,CAAC,GAAGF,EAAGE,CAAE,CAAC,GAAEJ,EAAG,QAAQE,EAAGE,IAAG,CAAC,GAAEF,EAAGE,IAAG,CAAC,CAAC;AAC3F;AAAA,QACA,KAAK;AACL,eAAK,IAAIF,EAAGE,IAAG,CAAC,GAAEJ,EAAG,QAAQE,EAAGE,IAAG,CAAC,GAAGF,EAAGE,CAAE,CAAC;AAC7C;AAAA,QACA,KAAK;AAAA,QAAI,KAAK;AACd,eAAK,IAAEF,EAAGE,IAAG,CAAC,IAAI,MAAMF,EAAGE,CAAE;AAC7B;AAAA,QACA,KAAK;AAAA,QAAI,KAAK;AAAA,QAAI,KAAK;AACvB,eAAK,IAAEF,EAAGE,IAAG,CAAC,IAAI,MAAMF,EAAGE,IAAG,CAAC,IAAI,MAAMF,EAAGE,CAAE;AAC9C;AAAA,QACA,KAAK;AAAA,QAAI,KAAK;AACd,eAAK,IAAEF,EAAGE,IAAG,CAAC,IAAI,MAAMF,EAAGE,IAAG,CAAC,IAAI,MAAMF,EAAGE,IAAG,CAAC,IAAI,MAAMF,EAAGE,CAAE;AAC/D;AAAA,QACA,KAAK;AACJ,UAAAJ,EAAG,eAAe,OAAO,gBAAgB;AAC1C;AAAA,QACA,KAAK;AACJ,UAAAA,EAAG,eAAeE,EAAGE,CAAE,GAAG,gBAAgB;AAC3C;AAAA,QACA,KAAK;AACJ,UAAAF,EAAGE,CAAE,IAAIF,EAAGE,CAAE,EAAE,KAAM,EAAC,QAAQ,MAAM,GAAG,GAAGJ,EAAG,eAAeE,EAAGE,CAAE,GAAG,eAAe;AACrF;AAAA,QACA,KAAK;AACJ,UAAAJ,EAAG,eAAe,OAAO,mBAAmB,OAAO;AACpD;AAAA,MACA;AAAA,IACA;AAAA,IACA,OAAO,CAAC,EAAC,GAAE,GAAE,GAAE,GAAE,GAAEvB,GAAI,IAAG,GAAE,IAAGC,EAAG,GAAE,EAAC,GAAE,CAAC,CAAC,EAAC,GAAE,EAAC,GAAE,GAAE,GAAE,GAAE,GAAED,GAAI,IAAG,GAAE,IAAGC,EAAG,GAAEnV,EAAEoV,GAAI,CAAC,GAAE,CAAC,GAAE,EAAC,GAAE,EAAC,CAAC,GAAE,EAAC,IAAG,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,CAAC,GAAE,EAAE,GAAE,GAAE,IAAG,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAG,IAAG,IAAGC,GAAI,IAAG,GAAE,IAAGC,GAAI,IAAGhB,EAAG,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAGiB,EAAG,GAAEpW,EAAE,CAAC,IAAG,EAAE,GAAE,CAAC,GAAE,EAAE,CAAC,GAAEA,EAAEoV,GAAI,CAAC,GAAE,CAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAC,GAAE,IAAG,IAAG,IAAG,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAGC,GAAI,IAAG,IAAG,IAAGC,GAAI,IAAG,GAAE,IAAGC,GAAI,IAAGhB,EAAG,GAAEnV,EAAEoV,GAAI,CAAC,GAAE,CAAC,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,CAAC,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,CAAC,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,CAAC,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,CAAC,GAAEpV,EAAEqW,GAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,IAAG,IAAGD,EAAG,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAEpW,EAAEoV,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAEpV,EAAEoV,GAAI,CAAC,GAAE,EAAE,CAAC,GAAEpV,EAAEqW,GAAI,CAAC,GAAE,EAAE,CAAC,CAAC;AAAA,IACzkC,gBAAgB,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC;AAAA,IACrD,YAAY,SAAqBS,GAAKC,GAAM;AACxC,UAAIA,EAAK;AACL,aAAK,MAAMD,CAAG;AAAA,WACX;AACH,YAAI1a,IAAQ,IAAI,MAAM0a,CAAG;AACzB,cAAA1a,EAAM,OAAO2a,GACP3a;AAAA,MACT;AAAA,IACL;AAAA,IACA,OAAO,SAAewL,GAAO;AACtB,UAACoP,IAAO,MAAMC,IAAQ,CAAC,CAAC,GAAGC,IAAS,CAAE,GAAEC,IAAS,CAAC,IAAI,GAAGC,IAAS,CAAE,GAAEC,IAAQ,KAAK,OAAOf,IAAS,IAAIE,IAAW,GAAGD,IAAS,GAAmBe,IAAS,GAAGC,IAAM,GAClKC,IAAOJ,EAAO,MAAM,KAAK,WAAW,CAAC,GACrCK,IAAQ,OAAO,OAAO,KAAK,KAAK,GAChCC,IAAc,EAAE,IAAI,CAAA;AACxB,eAAS1Z,KAAK,KAAK;AACf,QAAI,OAAO,UAAU,eAAe,KAAK,KAAK,IAAIA,CAAC,MAC/C0Z,EAAY,GAAG1Z,CAAC,IAAI,KAAK,GAAGA,CAAC;AAGrC,MAAAyZ,EAAM,SAAS7P,GAAO8P,EAAY,EAAE,GACpCA,EAAY,GAAG,QAAQD,GACvBC,EAAY,GAAG,SAAS,MACpB,OAAOD,EAAM,SAAU,QACvBA,EAAM,SAAS;AAEnB,UAAIE,IAAQF,EAAM;AAClB,MAAAL,EAAO,KAAKO,CAAK;AACjB,UAAIC,IAASH,EAAM,WAAWA,EAAM,QAAQ;AAC5C,MAAI,OAAOC,EAAY,GAAG,cAAe,aACrC,KAAK,aAAaA,EAAY,GAAG,aAEjC,KAAK,aAAa,OAAO,eAAe,IAAI,EAAE;AAO1C,eAASG,KAAM;AACf,YAAIC;AACJ,eAAAA,KAAQZ,EAAO,IAAG,KAAMO,EAAM,IAAK,KAAIF,GACnC,OAAOO,MAAU,aACbA,cAAiB,UACjBZ,IAASY,IACTA,KAAQZ,EAAO,QAEnBY,KAAQd,EAAK,SAASc,EAAK,KAAKA,KAE7BA;AAAA,MACV;AAEL,eADI1S,GAAwB2S,GAAOC,GAAW1X,GAAG2X,IAAQ,CAAE,GAAEhZ,GAAGiZ,GAAKC,GAAUC,OAClE;AAUT,YATAL,IAAQd,EAAMA,EAAM,SAAS,CAAC,GAC1B,KAAK,eAAec,CAAK,IACzBC,IAAS,KAAK,eAAeD,CAAK,MAE9B3S,MAAW,QAAQ,OAAOA,IAAU,SACpCA,IAASyS,GAAG,IAEhBG,IAASX,EAAMU,CAAK,KAAKV,EAAMU,CAAK,EAAE3S,CAAM,IAE5C,OAAO4S,IAAW,OAAe,CAACA,EAAO,UAAU,CAACA,EAAO,CAAC,GAAG;AAC/D,cAAIK,KAAS;AACb,UAAAD,IAAW,CAAA;AACX,eAAKnZ,KAAKoY,EAAMU,CAAK;AACjB,YAAI,KAAK,WAAW9Y,CAAC,KAAKA,IAAIqY,KAC1Bc,EAAS,KAAK,MAAO,KAAK,WAAWnZ,CAAC,IAAI,GAAI;AAGtD,UAAIwY,EAAM,eACNY,KAAS,0BAA0B7B,IAAW,KAAK;AAAA,IAAQiB,EAAM,aAAc,IAAG;AAAA,cAAiBW,EAAS,KAAK,IAAI,IAAI,aAAc,KAAK,WAAWhT,CAAM,KAAKA,KAAU,MAE5KiT,KAAS,0BAA0B7B,IAAW,KAAK,mBAAmBpR,KAAUmS,IAAM,iBAAiB,OAAQ,KAAK,WAAWnS,CAAM,KAAKA,KAAU,MAExJ,KAAK,WAAWiT,IAAQ;AAAA,YACpB,MAAMZ,EAAM;AAAA,YACZ,OAAO,KAAK,WAAWrS,CAAM,KAAKA;AAAA,YAClC,MAAMqS,EAAM;AAAA,YACZ,KAAKE;AAAA,YACL,UAAUS;AAAA,UAC1B,CAAa;AAAA,QACJ;AACD,YAAIJ,EAAO,CAAC,aAAa,SAASA,EAAO,SAAS;AAC9C,gBAAM,IAAI,MAAM,sDAAsDD,IAAQ,cAAc3S,CAAM;AAEtG,gBAAQ4S,EAAO,CAAC,GAAC;AAAA,UACjB,KAAK;AACD,YAAAf,EAAM,KAAK7R,CAAM,GACjB+R,EAAO,KAAKM,EAAM,MAAM,GACxBL,EAAO,KAAKK,EAAM,MAAM,GACxBR,EAAM,KAAKe,EAAO,CAAC,CAAC,GACpB5S,IAAS,MAELmR,IAASkB,EAAM,QACfnB,IAASmB,EAAM,QACfjB,IAAWiB,EAAM,UACjBE,IAAQF,EAAM;AAQlB;AAAA,UACJ,KAAK;AAwBD,gBAvBAS,IAAM,KAAK,aAAaF,EAAO,CAAC,CAAC,EAAE,CAAC,GACpCC,EAAM,IAAId,EAAOA,EAAO,SAASe,CAAG,GACpCD,EAAM,KAAK;AAAA,cACP,YAAYb,EAAOA,EAAO,UAAUc,KAAO,EAAE,EAAE;AAAA,cAC/C,WAAWd,EAAOA,EAAO,SAAS,CAAC,EAAE;AAAA,cACrC,cAAcA,EAAOA,EAAO,UAAUc,KAAO,EAAE,EAAE;AAAA,cACjD,aAAad,EAAOA,EAAO,SAAS,CAAC,EAAE;AAAA,YACvD,GACgBQ,MACAK,EAAM,GAAG,QAAQ;AAAA,cACbb,EAAOA,EAAO,UAAUc,KAAO,EAAE,EAAE,MAAM,CAAC;AAAA,cAC1Cd,EAAOA,EAAO,SAAS,CAAC,EAAE,MAAM,CAAC;AAAA,YACrD,IAEY9W,IAAI,KAAK,cAAc,MAAM2X,GAAO;AAAA,cAChC3B;AAAA,cACAC;AAAA,cACAC;AAAA,cACAkB,EAAY;AAAA,cACZM,EAAO,CAAC;AAAA,cACRb;AAAA,cACAC;AAAA,YAChB,EAAc,OAAOI,CAAI,CAAC,GACV,OAAOlX,IAAM;AACb,qBAAOA;AAEX,YAAI4X,MACAjB,IAAQA,EAAM,MAAM,GAAG,KAAKiB,IAAM,CAAC,GACnCf,IAASA,EAAO,MAAM,GAAG,KAAKe,CAAG,GACjCd,IAASA,EAAO,MAAM,GAAG,KAAKc,CAAG,IAErCjB,EAAM,KAAK,KAAK,aAAae,EAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAC1Cb,EAAO,KAAKc,EAAM,CAAC,GACnBb,EAAO,KAAKa,EAAM,EAAE,GACpBE,IAAWd,EAAMJ,EAAMA,EAAM,SAAS,CAAC,CAAC,EAAEA,EAAMA,EAAM,SAAS,CAAC,CAAC,GACjEA,EAAM,KAAKkB,CAAQ;AACnB;AAAA,UACJ,KAAK;AACD,mBAAO;AAAA,QACV;AAAA,MACJ;AACD,aAAO;AAAA,IACX;AAAA,EAAC,GAGGV,IAAS,WAAU;AACvB,QAAIA,IAAS;AAAA,MAEb,KAAI;AAAA,MAEJ,YAAW,SAAoBX,GAAKC,GAAM;AAClC,YAAI,KAAK,GAAG;AACR,eAAK,GAAG,OAAO,WAAWD,GAAKC,CAAI;AAAA;AAEnC,gBAAM,IAAI,MAAMD,CAAG;AAAA,MAE1B;AAAA;AAAA,MAGL,UAAS,SAAUlP,GAAO6O,GAAI;AACtB,oBAAK,KAAKA,KAAM,KAAK,MAAM,CAAA,GAC3B,KAAK,SAAS7O,GACd,KAAK,QAAQ,KAAK,aAAa,KAAK,OAAO,IAC3C,KAAK,WAAW,KAAK,SAAS,GAC9B,KAAK,SAAS,KAAK,UAAU,KAAK,QAAQ,IAC1C,KAAK,iBAAiB,CAAC,SAAS,GAChC,KAAK,SAAS;AAAA,UACV,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,WAAW;AAAA,UACX,aAAa;AAAA,QACzB,GACY,KAAK,QAAQ,WACb,KAAK,OAAO,QAAQ,CAAC,GAAE,CAAC,IAE5B,KAAK,SAAS,GACP;AAAA,MACV;AAAA;AAAA,MAGL,OAAM,WAAY;AACV,YAAI0Q,IAAK,KAAK,OAAO,CAAC;AACtB,aAAK,UAAUA,GACf,KAAK,UACL,KAAK,UACL,KAAK,SAASA,GACd,KAAK,WAAWA;AAChB,YAAIC,IAAQD,EAAG,MAAM,iBAAiB;AACtC,eAAIC,KACA,KAAK,YACL,KAAK,OAAO,eAEZ,KAAK,OAAO,eAEZ,KAAK,QAAQ,UACb,KAAK,OAAO,MAAM,CAAC,KAGvB,KAAK,SAAS,KAAK,OAAO,MAAM,CAAC,GAC1BD;AAAA,MACV;AAAA;AAAA,MAGL,OAAM,SAAUA,GAAI;AACZ,YAAIJ,IAAMI,EAAG,QACTC,IAAQD,EAAG,MAAM,eAAe;AAEpC,aAAK,SAASA,IAAK,KAAK,QACxB,KAAK,SAAS,KAAK,OAAO,OAAO,GAAG,KAAK,OAAO,SAASJ,CAAG,GAE5D,KAAK,UAAUA;AACf,YAAIM,IAAW,KAAK,MAAM,MAAM,eAAe;AAC/C,aAAK,QAAQ,KAAK,MAAM,OAAO,GAAG,KAAK,MAAM,SAAS,CAAC,GACvD,KAAK,UAAU,KAAK,QAAQ,OAAO,GAAG,KAAK,QAAQ,SAAS,CAAC,GAEzDD,EAAM,SAAS,MACf,KAAK,YAAYA,EAAM,SAAS;AAEpC,YAAIjY,IAAI,KAAK,OAAO;AAEpB,oBAAK,SAAS;AAAA,UACV,YAAY,KAAK,OAAO;AAAA,UACxB,WAAW,KAAK,WAAW;AAAA,UAC3B,cAAc,KAAK,OAAO;AAAA,UAC1B,aAAaiY,KACRA,EAAM,WAAWC,EAAS,SAAS,KAAK,OAAO,eAAe,KAC5DA,EAASA,EAAS,SAASD,EAAM,MAAM,EAAE,SAASA,EAAM,CAAC,EAAE,SAChE,KAAK,OAAO,eAAeL;AAAA,QACzC,GAEY,KAAK,QAAQ,WACb,KAAK,OAAO,QAAQ,CAAC5X,EAAE,CAAC,GAAGA,EAAE,CAAC,IAAI,KAAK,SAAS4X,CAAG,IAEvD,KAAK,SAAS,KAAK,OAAO,QACnB;AAAA,MACV;AAAA;AAAA,MAGL,MAAK,WAAY;AACT,oBAAK,QAAQ,IACN;AAAA,MACV;AAAA;AAAA,MAGL,QAAO,WAAY;AACX,YAAI,KAAK,QAAQ;AACb,eAAK,aAAa;AAAA;AAElB,iBAAO,KAAK,WAAW,4BAA4B,KAAK,WAAW,KAAK;AAAA,IAAqI,KAAK,gBAAgB;AAAA,YAC9N,MAAM;AAAA,YACN,OAAO;AAAA,YACP,MAAM,KAAK;AAAA,UAC3B,CAAa;AAGL,eAAO;AAAA,MACV;AAAA;AAAA,MAGL,MAAK,SAAUpc,GAAG;AACV,aAAK,MAAM,KAAK,MAAM,MAAMA,CAAC,CAAC;AAAA,MACjC;AAAA;AAAA,MAGL,WAAU,WAAY;AACd,YAAI2c,IAAO,KAAK,QAAQ,OAAO,GAAG,KAAK,QAAQ,SAAS,KAAK,MAAM,MAAM;AACzE,gBAAQA,EAAK,SAAS,KAAK,QAAM,MAAMA,EAAK,OAAO,GAAG,EAAE,QAAQ,OAAO,EAAE;AAAA,MAC5E;AAAA;AAAA,MAGL,eAAc,WAAY;AAClB,YAAIC,IAAO,KAAK;AAChB,eAAIA,EAAK,SAAS,OACdA,KAAQ,KAAK,OAAO,OAAO,GAAG,KAAGA,EAAK,MAAM,KAExCA,EAAK,OAAO,GAAE,EAAE,KAAKA,EAAK,SAAS,KAAK,QAAQ,KAAK,QAAQ,OAAO,EAAE;AAAA,MACjF;AAAA;AAAA,MAGL,cAAa,WAAY;AACjB,YAAIC,IAAM,KAAK,aACXrX,IAAI,IAAI,MAAMqX,EAAI,SAAS,CAAC,EAAE,KAAK,GAAG;AAC1C,eAAOA,IAAM,KAAK,cAAe,IAAG;AAAA,IAAOrX,IAAI;AAAA,MAClD;AAAA;AAAA,MAGL,YAAW,SAASmC,GAAOmV,GAAc;AACjC,YAAId,GACAS,GACAM;AAwDJ,YAtDI,KAAK,QAAQ,oBAEbA,IAAS;AAAA,UACL,UAAU,KAAK;AAAA,UACf,QAAQ;AAAA,YACJ,YAAY,KAAK,OAAO;AAAA,YACxB,WAAW,KAAK;AAAA,YAChB,cAAc,KAAK,OAAO;AAAA,YAC1B,aAAa,KAAK,OAAO;AAAA,UAC5B;AAAA,UACD,QAAQ,KAAK;AAAA,UACb,OAAO,KAAK;AAAA,UACZ,SAAS,KAAK;AAAA,UACd,SAAS,KAAK;AAAA,UACd,QAAQ,KAAK;AAAA,UACb,QAAQ,KAAK;AAAA,UACb,OAAO,KAAK;AAAA,UACZ,QAAQ,KAAK;AAAA,UACb,IAAI,KAAK;AAAA,UACT,gBAAgB,KAAK,eAAe,MAAM,CAAC;AAAA,UAC3C,MAAM,KAAK;AAAA,QAC3B,GACgB,KAAK,QAAQ,WACbA,EAAO,OAAO,QAAQ,KAAK,OAAO,MAAM,MAAM,CAAC,KAIvDN,IAAQ9U,EAAM,CAAC,EAAE,MAAM,iBAAiB,GACpC8U,MACA,KAAK,YAAYA,EAAM,SAE3B,KAAK,SAAS;AAAA,UACV,YAAY,KAAK,OAAO;AAAA,UACxB,WAAW,KAAK,WAAW;AAAA,UAC3B,cAAc,KAAK,OAAO;AAAA,UAC1B,aAAaA,IACAA,EAAMA,EAAM,SAAS,CAAC,EAAE,SAASA,EAAMA,EAAM,SAAS,CAAC,EAAE,MAAM,QAAQ,EAAE,CAAC,EAAE,SAC5E,KAAK,OAAO,cAAc9U,EAAM,CAAC,EAAE;AAAA,QAC5D,GACQ,KAAK,UAAUA,EAAM,CAAC,GACtB,KAAK,SAASA,EAAM,CAAC,GACrB,KAAK,UAAUA,GACf,KAAK,SAAS,KAAK,OAAO,QACtB,KAAK,QAAQ,WACb,KAAK,OAAO,QAAQ,CAAC,KAAK,QAAQ,KAAK,UAAU,KAAK,MAAM,IAEhE,KAAK,QAAQ,IACb,KAAK,aAAa,IAClB,KAAK,SAAS,KAAK,OAAO,MAAMA,EAAM,CAAC,EAAE,MAAM,GAC/C,KAAK,WAAWA,EAAM,CAAC,GACvBqU,IAAQ,KAAK,cAAc,KAAK,MAAM,KAAK,IAAI,MAAMc,GAAc,KAAK,eAAe,KAAK,eAAe,SAAS,CAAC,CAAC,GAClH,KAAK,QAAQ,KAAK,WAClB,KAAK,OAAO,KAEZd;AACA,iBAAOA;AACJ,YAAI,KAAK,YAAY;AAExB,mBAAS9Z,KAAK6a;AACV,iBAAK7a,CAAC,IAAI6a,EAAO7a,CAAC;AAEtB,iBAAO;AAAA,QACV;AACD,eAAO;AAAA,MACV;AAAA;AAAA,MAGL,MAAK,WAAY;AACT,YAAI,KAAK;AACL,iBAAO,KAAK;AAEhB,QAAK,KAAK,WACN,KAAK,OAAO;AAGhB,YAAI8Z,GACArU,GACAqV,GACAlc;AACJ,QAAK,KAAK,UACN,KAAK,SAAS,IACd,KAAK,QAAQ;AAGjB,iBADImc,IAAQ,KAAK,iBACR9d,IAAI,GAAGA,IAAI8d,EAAM,QAAQ9d;AAE9B,cADA6d,IAAY,KAAK,OAAO,MAAM,KAAK,MAAMC,EAAM9d,CAAC,CAAC,CAAC,GAC9C6d,MAAc,CAACrV,KAASqV,EAAU,CAAC,EAAE,SAASrV,EAAM,CAAC,EAAE;AAGvD,gBAFAA,IAAQqV,GACRlc,IAAQ3B,GACJ,KAAK,QAAQ,iBAAiB;AAE9B,kBADA6c,IAAQ,KAAK,WAAWgB,GAAWC,EAAM9d,CAAC,CAAC,GACvC6c,MAAU;AACV,uBAAOA;AACJ,kBAAI,KAAK,YAAY;AACxB,gBAAArU,IAAQ;AACR;AAAA,cACxB;AAEwB,uBAAO;AAAA,YAEd,WAAU,CAAC,KAAK,QAAQ;AACrB;AAAA;AAIZ,eAAIA,KACAqU,IAAQ,KAAK,WAAWrU,GAAOsV,EAAMnc,CAAK,CAAC,GACvCkb,MAAU,KACHA,IAGJ,MAEP,KAAK,WAAW,KACT,KAAK,MAEL,KAAK,WAAW,4BAA4B,KAAK,WAAW,KAAK;AAAA,IAA2B,KAAK,gBAAgB;AAAA,UACpH,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM,KAAK;AAAA,QAC3B,CAAa;AAAA,MAER;AAAA;AAAA,MAGL,KAAI,WAAgB;AACZ,YAAIxX,IAAI,KAAK;AACb,eAAIA,KAGO,KAAK;MAEnB;AAAA;AAAA,MAGL,OAAM,SAAgB0Y,GAAW;AACzB,aAAK,eAAe,KAAKA,CAAS;AAAA,MACrC;AAAA;AAAA,MAGL,UAAS,WAAqB;AACtB,YAAIld,IAAI,KAAK,eAAe,SAAS;AACrC,eAAIA,IAAI,IACG,KAAK,eAAe,QAEpB,KAAK,eAAe,CAAC;AAAA,MAEnC;AAAA;AAAA,MAGL,eAAc,WAA0B;AAChC,eAAI,KAAK,eAAe,UAAU,KAAK,eAAe,KAAK,eAAe,SAAS,CAAC,IACzE,KAAK,WAAW,KAAK,eAAe,KAAK,eAAe,SAAS,CAAC,CAAC,EAAE,QAErE,KAAK,WAAW,QAAW;AAAA,MAEzC;AAAA;AAAA,MAGL,UAAS,SAAmBA,GAAG;AAEvB,eADAA,IAAI,KAAK,eAAe,SAAS,IAAI,KAAK,IAAIA,KAAK,CAAC,GAChDA,KAAK,IACE,KAAK,eAAeA,CAAC,IAErB;AAAA,MAEd;AAAA;AAAA,MAGL,WAAU,SAAoBkd,GAAW;AACjC,aAAK,MAAMA,CAAS;AAAA,MACvB;AAAA;AAAA,MAGL,gBAAe,WAA0B;AACjC,eAAO,KAAK,eAAe;AAAA,MAC9B;AAAA,MACL,SAAS,EAAC,oBAAmB,GAAI;AAAA,MACjC,eAAe,SAAmBvC,GAAGwC,GAAIC,GAA0BC,GAAU;AAE7E,gBAAOD,GAAyB;AAAA,UAChC,KAAK;AAAG,wBAAK,MAAM,gBAAgB,GAAU;AAAA,UAE7C,KAAK;AAAG,wBAAK,MAAM,gBAAgB,GAAU;AAAA,UAE7C,KAAK;AAAG,wBAAK,SAAQ,GAAI,KAAK,MAAM,eAAe,GAAU;AAAA,UAE7D,KAAK;AAAG,wBAAK,YAAY,KAAK,SAAU,GAAS;AAAA,UAEjD,KAAK;AAAE,mBAAO;AAAA,UAEd,KAAK;AAAG,wBAAK,MAAM,WAAW,GAAS;AAAA,UAEvC,KAAK;AAAG,wBAAK,YAAmB;AAAA,UAEhC,KAAK;AAAG,wBAAK,MAAM,WAAW,GAAS;AAAA,UAEvC,KAAK;AAAG,wBAAK,YAAmB;AAAA,UAEhC,KAAK;AAAG,iBAAK,MAAM,qBAAqB;AACxC;AAAA,UACA,KAAK;AAAI,iBAAK;AACd;AAAA,UACA,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AACL;AAAA,UACA,KAAK;AACL;AAAA,UACA,KAAK;AACL;AAAA,UACA,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AACL;AAAA,UACA,KAAK;AACL;AAAA,UACA,KAAK;AACL;AAAA,UACA,KAAK;AAAG,iBAAK,MAAM,MAAM;AACzB;AAAA,UACA,KAAK;AAAG,iBAAK;AACb;AAAA,UACA,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,iBAAK,MAAM,cAAc;AACjC;AAAA,UACA,KAAK;AAAG,iBAAK;AACb;AAAA,UACA,KAAK;AAAG,iBAAK,SAAU,GAAE,KAAK,MAAM,cAAc;AAClD;AAAA,UACA,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,iBAAK;AACb;AAAA,UACA,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,iBAAK,MAAM,OAAO;AAC1B;AAAA,UACA,KAAK;AAAG,iBAAK;AACb;AAAA,UACA,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,QAEf;AAAA,MACA;AAAA,MACA,OAAO,CAAC,cAAa,8BAA6B,WAAU,cAAa,6BAA4B,yBAAwB,yBAAwB,yBAAwB,yBAAwB,0BAAyB,cAAa,gBAAe,yBAAwB,wBAAuB,wBAAuB,eAAc,aAAY,iBAAgB,iBAAgB,sBAAqB,aAAY,eAAc,mBAAkB,mBAAkB,YAAW,eAAc,YAAW,eAAc,oBAAmB,gBAAe,kBAAiB,iBAAgB,8BAA6B,6BAA4B,mBAAkB,8BAA6B,gCAA+B,4BAA2B,4BAA2B,8BAA6B,8BAA6B,yBAAwB,kCAAiC,4BAA2B,mBAAkB,mBAAkB,WAAU,WAAU,SAAS;AAAA,MAC98B,YAAY,EAAC,qBAAsB,EAAC,OAAQ,CAAC,IAAG,EAAE,GAAE,WAAY,GAAK,GAAE,WAAY,EAAC,OAAQ,CAAC,CAAC,GAAE,WAAY,GAAK,GAAE,WAAY,EAAC,OAAQ,CAAC,CAAC,GAAE,WAAY,GAAK,GAAE,iBAAkB,EAAC,OAAQ,CAAA,GAAG,WAAY,GAAK,GAAE,eAAgB,EAAC,OAAQ,CAAC,GAAE,CAAC,GAAE,WAAY,GAAK,GAAE,gBAAiB,EAAC,OAAQ,CAAC,GAAE,CAAC,GAAE,WAAY,GAAK,GAAE,gBAAiB,EAAC,OAAQ,CAAC,CAAC,GAAE,WAAY,GAAK,GAAE,cAAe,EAAC,OAAQ,CAAC,IAAG,EAAE,GAAE,WAAY,GAAK,GAAE,cAAe,EAAC,OAAQ,CAAC,IAAG,IAAG,EAAE,GAAE,WAAY,GAAK,GAAE,MAAO,EAAC,OAAQ,CAAC,IAAG,EAAE,GAAE,WAAY,GAAK,GAAE,OAAQ,EAAC,OAAQ,CAAC,IAAG,EAAE,GAAE,WAAY,GAAK,GAAE,SAAU,EAAC,OAAQ,CAAC,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,EAAE,GAAE,WAAY,GAAI,EAAC;AAAA,IACxqB;AACA,WAAOzB;AAAA,EACP;AACA,EAAAzC,EAAO,QAAQyC;AACf,WAAS2B,IAAU;AACjB,SAAK,KAAK;EACZ;AACA,SAAAA,EAAO,YAAYpE,GAAOA,EAAO,SAASoE,GACnC,IAAIA;AACX;AACCpE,GAAO,SAASA;AAEhB,WAAeA;;;;;;;;;;ACzwBhB,GAAC,SAAS9O,GAAE1E,GAAE;AAAsD,IAAA6X,EAAe,UAAA7X;EAAkI,GAAE8X,IAAM,WAAU;AAAc,QAAIpT,IAAE;AAAM,WAAO,SAAS1E,GAAE,GAAEoC,GAAE;AAAC,UAAI5J,IAAE,SAASwH,GAAE;AAAC,eAAOA,EAAE,IAAI,IAAEA,EAAE,cAAa0E,CAAC;AAAA,MAAC,GAAE1L,IAAE,EAAE;AAAU,MAAAA,EAAE,cAAY,WAAU;AAAC,eAAOR,EAAE,IAAI,EAAE,KAAM;AAAA,MAAA,GAAEQ,EAAE,UAAQ,SAASgH,GAAE;AAAC,YAAG,CAAC,KAAK,OAAM,EAAG,EAAEA,CAAC;AAAE,iBAAO,KAAK,IAAI,KAAGA,IAAE,KAAK,QAAS,IAAE0E,CAAC;AAAE,YAAIjL,GAAET,GAAEsB,GAAEkE,GAAEM,IAAEtG,EAAE,IAAI,GAAE+N,KAAG9M,IAAE,KAAK,YAAa,GAACT,IAAE,KAAK,IAAGsB,KAAGtB,IAAEoJ,EAAE,MAAIA,GAAI,EAAC,KAAK3I,CAAC,EAAE,QAAQ,MAAM,GAAE+E,IAAE,IAAElE,EAAE,WAAU,GAAGA,EAAE,WAAY,IAAC,MAAIkE,KAAG,IAAGlE,EAAE,IAAIkE,GAAEkG,CAAC;AAAG,eAAO5F,EAAE,KAAKyH,GAAE,MAAM,IAAE;AAAA,MAAC,GAAEvN,EAAE,aAAW,SAAS0L,GAAE;AAAC,eAAO,KAAK,OAAQ,EAAC,EAAEA,CAAC,IAAE,KAAK,SAAO,IAAE,KAAK,IAAI,KAAK,IAAG,IAAG,IAAEA,IAAEA,IAAE,CAAC;AAAA,MAAC;AAAE,UAAIpK,IAAEtB,EAAE;AAAQ,MAAAA,EAAE,UAAQ,SAAS0L,GAAE1E,GAAE;AAAC,YAAIvG,IAAE,KAAK,OAAM,GAAG2I,IAAE,CAAC,CAAC3I,EAAE,EAAEuG,CAAC,KAAGA;AAAE,eAAkBvG,EAAE,EAAEiL,CAAC,MAAjB,YAAmBtC,IAAE,KAAK,KAAK,KAAK,UAAQ,KAAK,WAAU,IAAG,EAAE,EAAE,QAAQ,KAAK,IAAE,KAAK,KAAK,KAAK,KAAI,IAAG,KAAG,KAAK,eAAa,KAAG,CAAC,EAAE,MAAM,KAAK,IAAE9H,EAAE,KAAK,IAAI,EAAEoK,GAAE1E,CAAC;AAAA,MAAC;AAAA,IAAC;AAAA,EAAC;;;;;;;;;;;;ACAn+B,GAAC,SAAS0E,GAAE1E,GAAE;AAAsD,IAAA6X,EAAA,UAAe7X,EAA4I;AAAA,EAAA,GAAE8X,IAAM,WAAU;AAAc,QAAIpT,IAAE,EAAC,KAAI,aAAY,IAAG,UAAS,GAAE,cAAa,IAAG,gBAAe,KAAI,uBAAsB,MAAK,4BAA2B,GAAE1E,IAAE,2FAA0F1F,IAAE,QAAOwE,IAAE,SAAQrF,IAAE,sBAAqB+E,IAAE,CAAE,GAAC4D,IAAE,SAASsC,GAAE;AAAC,cAAOA,IAAE,CAACA,MAAIA,IAAE,KAAG,OAAK;AAAA,IAAI,GAAMlM,IAAE,SAASkM,GAAE;AAAC,aAAO,SAAS1E,GAAE;AAAC,aAAK0E,CAAC,IAAE,CAAC1E;AAAA,MAAC;AAAA,IAAC,GAAEpH,IAAE,CAAC,uBAAsB,SAAS8L,GAAE;AAAC,OAAC,KAAK,SAAO,KAAK,OAAK,CAAA,IAAK,SAAO,SAASA,GAAE;AAAgB,YAAZ,CAACA,KAAoBA,MAAN;AAAQ,iBAAO;AAAE,YAAI1E,IAAE0E,EAAE,MAAM,cAAc,GAAEpK,IAAE,KAAG0F,EAAE,CAAC,KAAG,CAACA,EAAE,CAAC,KAAG;AAAG,eAAW1F,MAAJ,IAAM,IAAQ0F,EAAE,CAAC,MAAT,MAAW,CAAC1F,IAAEA;AAAA,MAAC,EAAEoK,CAAC;AAAA,IAAC,CAAC,GAAE9E,IAAE,SAAS8E,GAAE;AAAC,UAAI1E,IAAExB,EAAEkG,CAAC;AAAE,aAAO1E,MAAIA,EAAE,UAAQA,IAAEA,EAAE,EAAE,OAAOA,EAAE,CAAC;AAAA,IAAE,GAAEuG,IAAE,SAAS7B,GAAE1E,GAAE;AAAC,UAAI1F,GAAEwE,IAAEN,EAAE;AAAS,UAAGM;AAAG,iBAAQrF,IAAE,GAAEA,KAAG,IAAGA,KAAG;AAAE,cAAGiL,EAAE,QAAQ5F,EAAErF,GAAE,GAAEuG,CAAC,CAAC,IAAE,IAAG;AAAC,YAAA1F,IAAEb,IAAE;AAAG;AAAA,UAAK;AAAA;AAAO,QAAAa,IAAEoK,OAAK1E,IAAE,OAAK;AAAM,aAAO1F;AAAA,IAAC,GAAEtB,IAAE,EAAC,GAAE,CAACS,GAAE,SAASiL,GAAE;AAAC,WAAK,YAAU6B,EAAE7B,GAAE,EAAE;AAAA,IAAC,CAAC,GAAE,GAAE,CAACjL,GAAE,SAASiL,GAAE;AAAC,WAAK,YAAU6B,EAAE7B,GAAE,EAAE;AAAA,IAAC,CAAC,GAAE,GAAE,CAAC,MAAK,SAASA,GAAE;AAAC,WAAK,eAAa,MAAI,CAACA;AAAA,IAAC,CAAC,GAAE,IAAG,CAACpK,GAAE,SAASoK,GAAE;AAAC,WAAK,eAAa,KAAG,CAACA;AAAA,IAAC,CAAC,GAAE,KAAI,CAAC,SAAQ,SAASA,GAAE;AAAC,WAAK,eAAa,CAACA;AAAA,IAAC,CAAC,GAAE,GAAE,CAAC5F,GAAEtG,EAAE,SAAS,CAAC,GAAE,IAAG,CAACsG,GAAEtG,EAAE,SAAS,CAAC,GAAE,GAAE,CAACsG,GAAEtG,EAAE,SAAS,CAAC,GAAE,IAAG,CAACsG,GAAEtG,EAAE,SAAS,CAAC,GAAE,GAAE,CAACsG,GAAEtG,EAAE,OAAO,CAAC,GAAE,GAAE,CAACsG,GAAEtG,EAAE,OAAO,CAAC,GAAE,IAAG,CAACsG,GAAEtG,EAAE,OAAO,CAAC,GAAE,IAAG,CAACsG,GAAEtG,EAAE,OAAO,CAAC,GAAE,GAAE,CAACsG,GAAEtG,EAAE,KAAK,CAAC,GAAE,IAAG,CAAC8B,GAAE9B,EAAE,KAAK,CAAC,GAAE,IAAG,CAACiB,GAAE,SAASiL,GAAE;AAAC,UAAI1E,IAAExB,EAAE,SAAQlE,IAAEoK,EAAE,MAAM,KAAK;AAAE,UAAG,KAAK,MAAIpK,EAAE,CAAC,GAAE0F;AAAE,iBAAQlB,IAAE,GAAEA,KAAG,IAAGA,KAAG;AAAE,UAAAkB,EAAElB,CAAC,EAAE,QAAQ,UAAS,EAAE,MAAI4F,MAAI,KAAK,MAAI5F;AAAA,IAAE,CAAC,GAAE,GAAE,CAACA,GAAEtG,EAAE,OAAO,CAAC,GAAE,IAAG,CAAC8B,GAAE9B,EAAE,OAAO,CAAC,GAAE,KAAI,CAACiB,GAAE,SAASiL,GAAE;AAAC,UAAI1E,IAAEJ,EAAE,QAAQ,GAAEtF,KAAGsF,EAAE,aAAa,KAAGI,EAAE,IAAK,SAAS0E,GAAE;AAAC,eAAOA,EAAE,MAAM,GAAE,CAAC;AAAA,MAAC,CAAC,GAAI,QAAQA,CAAC,IAAE;AAAE,UAAGpK,IAAE;AAAE,cAAM,IAAI;AAAM,WAAK,QAAMA,IAAE,MAAIA;AAAA,IAAC,CAAC,GAAE,MAAK,CAACb,GAAE,SAASiL,GAAE;AAAC,UAAI1E,IAAEJ,EAAE,QAAQ,EAAE,QAAQ8E,CAAC,IAAE;AAAE,UAAG1E,IAAE;AAAE,cAAM,IAAI;AAAM,WAAK,QAAMA,IAAE,MAAIA;AAAA,IAAC,CAAC,GAAE,GAAE,CAAC,YAAWxH,EAAE,MAAM,CAAC,GAAE,IAAG,CAAC8B,GAAE,SAASoK,GAAE;AAAC,WAAK,OAAKtC,EAAEsC,CAAC;AAAA,IAAC,CAAC,GAAE,MAAK,CAAC,SAAQlM,EAAE,MAAM,CAAC,GAAE,GAAEI,GAAE,IAAGA,EAAC;AAAE,aAASkH,EAAExF,GAAE;AAAC,UAAIwE,GAAErF;AAAE,MAAAqF,IAAExE,GAAEb,IAAE+E,KAAGA,EAAE;AAAQ,eAAQ4D,KAAG9H,IAAEwE,EAAE,QAAQ,qCAAqC,SAASkB,GAAE1F,GAAEwE,GAAE;AAAC,YAAIN,IAAEM,KAAGA,EAAE,YAAa;AAAC,eAAOxE,KAAGb,EAAEqF,CAAC,KAAG4F,EAAE5F,CAAC,KAAGrF,EAAE+E,CAAC,EAAE,QAAQ,kCAAkC,SAASkG,GAAE1E,GAAE1F,GAAE;AAAC,iBAAO0F,KAAG1F,EAAE,MAAM,CAAC;AAAA,QAAC,CAAC;AAAA,MAAE,CAAC,GAAI,MAAM0F,CAAC,GAAExH,IAAE4J,EAAE,QAAOxJ,IAAE,GAAEA,IAAEJ,GAAEI,KAAG,GAAE;AAAC,YAAIgH,IAAEwC,EAAExJ,CAAC,GAAE2N,IAAEvN,EAAE4G,CAAC,GAAEE,IAAEyG,KAAGA,EAAE,CAAC,GAAEnH,IAAEmH,KAAGA,EAAE,CAAC;AAAE,QAAAnE,EAAExJ,CAAC,IAAEwG,IAAE,EAAC,OAAMU,GAAE,QAAOV,EAAC,IAAEQ,EAAE,QAAQ,YAAW,EAAE;AAAA,MAAC;AAAC,aAAO,SAAS8E,GAAE;AAAC,iBAAQ1E,IAAE,CAAE,GAAC1F,IAAE,GAAEwE,IAAE,GAAExE,IAAE9B,GAAE8B,KAAG,GAAE;AAAC,cAAIb,IAAE2I,EAAE9H,CAAC;AAAE,cAAa,OAAOb,KAAjB;AAAmB,YAAAqF,KAAGrF,EAAE;AAAA,eAAW;AAAC,gBAAI,IAAEA,EAAE,OAAMb,IAAEa,EAAE,QAAOmG,IAAE8E,EAAE,MAAM5F,CAAC,GAAEyH,IAAE,EAAE,KAAK3G,CAAC,EAAE,CAAC;AAAE,YAAAhH,EAAE,KAAKoH,GAAEuG,CAAC,GAAE7B,IAAEA,EAAE,QAAQ6B,GAAE,EAAE;AAAA,UAAC;AAAA,QAAC;AAAC,eAAO,SAAS7B,GAAE;AAAC,cAAI1E,IAAE0E,EAAE;AAAU,cAAY1E,MAAT,QAAW;AAAC,gBAAI1F,IAAEoK,EAAE;AAAM,YAAA1E,IAAE1F,IAAE,OAAKoK,EAAE,SAAO,MAASpK,MAAL,OAASoK,EAAE,QAAM,IAAG,OAAOA,EAAE;AAAA,UAAS;AAAA,QAAC,EAAE1E,CAAC,GAAEA;AAAA,MAAC;AAAA,IAAC;AAAC,WAAO,SAAS0E,GAAE1E,GAAE1F,GAAE;AAAC,MAAAA,EAAE,EAAE,oBAAkB,IAAGoK,KAAGA,EAAE,sBAAoBtC,IAAEsC,EAAE;AAAmB,UAAI5F,IAAEkB,EAAE,WAAUvG,IAAEqF,EAAE;AAAM,MAAAA,EAAE,QAAM,SAAS4F,GAAE;AAAC,YAAI1E,IAAE0E,EAAE,MAAK5F,IAAE4F,EAAE,KAAItC,IAAEsC,EAAE;AAAK,aAAK,KAAG5F;AAAE,YAAItG,IAAE4J,EAAE,CAAC;AAAE,YAAa,OAAO5J,KAAjB,UAAmB;AAAC,cAAII,IAAOwJ,EAAE,CAAC,MAAR,IAAUxC,IAAOwC,EAAE,CAAC,MAAR,IAAU,IAAExJ,KAAGgH,GAAE5G,IAAEoJ,EAAE,CAAC;AAAE,UAAAxC,MAAI5G,IAAEoJ,EAAE,CAAC,IAAG5D,IAAE,KAAK,WAAU,CAAC5F,KAAGI,MAAIwF,IAAElE,EAAE,GAAGtB,CAAC,IAAG,KAAK,KAAG,SAAS0L,GAAE1E,GAAE1F,GAAE;AAAC,gBAAG;AAAC,kBAAG,CAAC,KAAI,GAAG,EAAE,QAAQ0F,CAAC,IAAE;AAAG,uBAAO,IAAI,MAAYA,MAAN,MAAQ,MAAI,KAAG0E,CAAC;AAAE,kBAAI5F,IAAEgB,EAAEE,CAAC,EAAE0E,CAAC,GAAEjL,IAAEqF,EAAE,MAAKN,IAAEM,EAAE,OAAMsD,IAAEtD,EAAE,KAAItG,IAAEsG,EAAE,OAAMlG,IAAEkG,EAAE,SAAQc,IAAEd,EAAE,SAAQyH,IAAEzH,EAAE,cAAa9F,KAAE8F,EAAE,MAAKM,IAAE,IAAI,QAAK6L,IAAE7I,MAAI3I,KAAG+E,IAAE,IAAEY,EAAE,QAAO,IAAI2Y,IAAEte,KAAG2F,EAAE,YAAa,GAAC4Y,IAAE;AAAE,cAAAve,KAAG,CAAC+E,MAAIwZ,IAAExZ,IAAE,IAAEA,IAAE,IAAEY,EAAE,SAAU;AAAE,kBAAI3B,IAAEjF,KAAG,GAAEib,IAAE7a,KAAG,GAAEqf,IAAErY,KAAG,GAAEZ,IAAEuH,KAAG;AAAE,qBAAOvN,KAAE,IAAI,KAAK,KAAK,IAAI+e,GAAEC,GAAE/M,GAAExN,GAAEgW,GAAEwE,GAAEjZ,IAAE,KAAGhG,GAAE,SAAO,GAAG,CAAC,IAAEsB,IAAE,IAAI,KAAK,KAAK,IAAIyd,GAAEC,GAAE/M,GAAExN,GAAEgW,GAAEwE,GAAEjZ,CAAC,CAAC,IAAE,IAAI,KAAK+Y,GAAEC,GAAE/M,GAAExN,GAAEgW,GAAEwE,GAAEjZ,CAAC;AAAA,YAAC,QAAC;AAAS,qBAAO,IAAI,KAAK,EAAE;AAAA,YAAC;AAAA,UAAC,EAAEgB,GAAExH,GAAEsG,CAAC,GAAE,KAAK,KAAI,GAAG9F,KAAQA,MAAL,OAAS,KAAK,KAAG,KAAK,OAAOA,CAAC,EAAE,KAAI,KAAGgH,KAAG,KAAK,OAAOxH,CAAC,MAAI,KAAK,KAAG,IAAI,KAAK,EAAE,IAAGgG,IAAE,CAAA;AAAA,QAAE,WAAShG,aAAa;AAAM,mBAAQ4G,IAAE5G,EAAE,QAAOyS,IAAE,GAAEA,KAAG7L,GAAE6L,KAAG,GAAE;AAAC,YAAA7I,EAAE,CAAC,IAAE5J,EAAEyS,IAAE,CAAC;AAAE,gBAAI8M,IAAEzd,EAAE,MAAM,MAAK8H,CAAC;AAAE,gBAAG2V,EAAE,QAAO,GAAG;AAAC,mBAAK,KAAGA,EAAE,IAAG,KAAK,KAAGA,EAAE,IAAG,KAAK,KAAM;AAAC;AAAA,YAAK;AAAC,YAAA9M,MAAI7L,MAAI,KAAK,KAAG,IAAI,KAAK,EAAE;AAAA,UAAE;AAAA;AAAM,UAAA3F,EAAE,KAAK,MAAKiL,CAAC;AAAA,MAAC;AAAA,IAAC;AAAA,EAAC,CAAC;;;;;;;;;;;;ACA/pH,GAAC,SAASA,GAAE1E,GAAE;AAAsD,IAAA6X,EAAA,UAAe7X,EAAC;AAAA,EAAwI,GAAE8X,IAAM,WAAU;AAAc,WAAO,SAASpT,GAAE1E,GAAE;AAAC,UAAIlB,IAAEkB,EAAE,WAAU1F,IAAEwE,EAAE;AAAO,MAAAA,EAAE,SAAO,SAAS4F,GAAE;AAAC,YAAI1E,IAAE,MAAKlB,IAAE,KAAK,QAAO;AAAG,YAAG,CAAC,KAAK,QAAS;AAAC,iBAAOxE,EAAE,KAAK,IAAI,EAAEoK,CAAC;AAAE,YAAItC,IAAE,KAAK,OAAQ,GAAC5J,KAAGkM,KAAG,wBAAwB,QAAQ,+DAA+D,SAASA,GAAE;AAAC,kBAAOA,GAAG;AAAA,YAAA,KAAI;AAAI,qBAAO,KAAK,MAAM1E,EAAE,KAAG,KAAG,CAAC;AAAA,YAAE,KAAI;AAAK,qBAAOlB,EAAE,QAAQkB,EAAE,EAAE;AAAA,YAAE,KAAI;AAAO,qBAAOA,EAAE,SAAU;AAAA,YAAC,KAAI;AAAO,qBAAOA,EAAE,YAAW;AAAA,YAAG,KAAI;AAAK,qBAAOlB,EAAE,QAAQkB,EAAE,KAAM,GAAC,GAAG;AAAA,YAAE,KAAI;AAAA,YAAI,KAAI;AAAK,qBAAOoC,EAAE,EAAEpC,EAAE,KAAI,GAAS0E,MAAN,MAAQ,IAAE,GAAE,GAAG;AAAA,YAAE,KAAI;AAAA,YAAI,KAAI;AAAK,qBAAOtC,EAAE,EAAEpC,EAAE,QAAO,GAAS0E,MAAN,MAAQ,IAAE,GAAE,GAAG;AAAA,YAAE,KAAI;AAAA,YAAI,KAAI;AAAK,qBAAOtC,EAAE,EAAE,OAAWpC,EAAE,OAAN,IAAS,KAAGA,EAAE,EAAE,GAAQ0E,MAAN,MAAQ,IAAE,GAAE,GAAG;AAAA,YAAE,KAAI;AAAI,qBAAO,KAAK,MAAM1E,EAAE,GAAG,QAAS,IAAC,GAAG;AAAA,YAAE,KAAI;AAAI,qBAAOA,EAAE,GAAG,QAAO;AAAA,YAAG,KAAI;AAAI,qBAAM,MAAIA,EAAE,WAAU,IAAG;AAAA,YAAI,KAAI;AAAM,qBAAM,MAAIA,EAAE,WAAW,MAAM,IAAE;AAAA,YAAI;AAAQ,qBAAO0E;AAAA,UAAC;AAAA,QAAC,CAAC;AAAG,eAAOpK,EAAE,KAAK,IAAI,EAAE9B,CAAC;AAAA,MAAC;AAAA,IAAC;AAAA,EAAC;;;ACoBtkC0f,GAAM,OAAOC,EAAY;AACzBD,GAAM,OAAOE,EAAsB;AACnCF,GAAM,OAAOG,EAAmB;AAEhC,IAAIC,KAAa,IACbC,KAAa,IACb7N,IACA8N,KAAc,IACdC,KAAW,CAAA,GACXC,KAAW,CAAA,GACXC,KAAQ,CAAA,GACRC,KAAW,CAAA,GACXC,KAAQ,CAAA,GACRC,KAAiB;AACrB,MAAMC,KAAO,CAAC,UAAU,QAAQ,QAAQ,WAAW;AACnD,IAAIC,KAAO,CAAA,GACPC,KAAoB,IACpBC,KAAU,IAGVC,KAAY;AAET,MAAMC,KAAiB,SAAUC,GAAW3c,GAASsH,GAAM;AAChE,EAAAsV,GAAW,eAAe,MAAMD,GAAW3c,GAASsH,CAAI;AAC1D,GAEauV,KAAQ,WAAY;AAC/B,EAAAX,KAAW,CAAA,GACXC,KAAQ,CAAA,GACRC,KAAiB,IACjBE,KAAO,CAAA,GACPQ,KAAU,GACVC,KAAW,QACXC,KAAa,QACbC,IAAW,CAAA,GACXrB,KAAa,IACbC,KAAa,IACb7N,KAAe,QACf8N,KAAc,IACdC,KAAW,CAAA,GACXC,KAAW,CAAA,GACXO,KAAoB,IACpBC,KAAU,IACVC,KAAY,GACZR,KAAQ,CAAA,GACRiB;AACF,GAEaC,KAAgB,SAAUC,GAAK;AAC1C,EAAAvB,KAAauB;AACf,GAEaC,KAAgB,WAAY;AACvC,SAAOxB;AACT,GAEayB,KAAkB,SAAUF,GAAK;AAC5C,EAAApP,KAAeoP;AACjB,GAEaG,KAAkB,WAAY;AACzC,SAAOvP;AACT,GAEawP,KAAiB,SAAUJ,GAAK;AAC3C,EAAAtB,KAAcsB;AAChB,GAEaK,KAAiB,WAAY;AACxC,SAAO3B;AACT,GAEa4B,KAAgB,SAAUN,GAAK;AAC1C,EAAAxB,KAAawB;AACf,GAEaO,KAA0B,WAAY;AACjD,EAAApB,KAAoB;AACtB,GAEaqB,KAAuB,WAAY;AAC9C,SAAOrB;AACT,GAEasB,KAAgB,WAAY;AACvC,EAAArB,KAAU;AACZ,GAEasB,KAAiB,WAAY;AACxC,SAAOtB;AACT,GAEauB,KAAgB,WAAY;AACvC,SAAOnC;AACT,GAEaoC,KAAc,SAAUZ,GAAK;AACxC,EAAArB,KAAWqB,EAAI,YAAa,EAAC,MAAM,QAAQ;AAC7C,GAEaa,KAAc,WAAY;AACrC,SAAOlC;AACT,GACamC,KAAc,SAAUd,GAAK;AACxC,EAAApB,KAAWoB,EAAI,YAAa,EAAC,MAAM,QAAQ;AAC7C,GAEae,KAAc,WAAY;AACrC,SAAOnC;AACT,GAEaoC,KAAW,WAAY;AAClC,SAAOnC;AACT,GAEaoC,KAAa,SAAUjB,GAAK;AACvC,EAAAhB,KAAiBgB,GACjBlB,GAAS,KAAKkB,CAAG;AACnB,GAEakB,KAAc,WAAY;AACrC,SAAOpC;AACT,GAEaqC,KAAW,WAAY;AAClC,MAAIC,IAAoBC;AACxB,QAAMC,IAAW;AACjB,MAAIC,IAAiB;AACrB,SAAO,CAACH,KAAqBG,IAAiBD;AAC5C,IAAAF,IAAoBC,GAAY,GAChCE;AAGF,SAAAxC,KAAQc,GAEDd;AACT,GAEayC,KAAgB,SAAU1a,GAAM0X,GAAYI,GAAUD,GAAU;AAC3E,SAAIA,EAAS,SAAS7X,EAAK,OAAO0X,EAAW,KAAM,CAAA,CAAC,IAC3C,KAEL1X,EAAK,gBAAgB,KAAK8X,EAAS,SAAS,UAAU,KAGtDA,EAAS,SAAS9X,EAAK,OAAO,MAAM,EAAE,YAAW,CAAE,IAC9C,KAEF8X,EAAS,SAAS9X,EAAK,OAAO0X,EAAW,KAAM,CAAA,CAAC;AACzD,GAcMiD,KAAiB,SAAUC,GAAMlD,GAAYI,GAAUD,GAAU;AACrE,MAAI,CAACC,EAAS,UAAU8C,EAAK;AAC3B;AAEF,MAAIC;AACJ,EAAID,EAAK,qBAAqB,OAC5BC,IAAYvD,GAAMsD,EAAK,SAAS,IAEhCC,IAAYvD,GAAMsD,EAAK,WAAWlD,GAAY,EAAI,GAEpDmD,IAAYA,EAAU,IAAI,GAAG,GAAG;AAEhC,MAAIC;AACJ,EAAIF,EAAK,mBAAmB,OAC1BE,IAAkBxD,GAAMsD,EAAK,OAAO,IAEpCE,IAAkBxD,GAAMsD,EAAK,SAASlD,GAAY,EAAI;AAExD,QAAM,CAACqD,GAAcC,CAAa,IAAIC;AAAA,IACpCJ;AAAA,IACAC;AAAA,IACApD;AAAA,IACAI;AAAA,IACAD;AAAA,EACJ;AACE,EAAA+C,EAAK,UAAUG,EAAa,UAC5BH,EAAK,gBAAgBI;AACvB,GAaMC,KAAe,SAAUJ,GAAWK,GAASxD,GAAYI,GAAUD,GAAU;AACjF,MAAIsD,IAAU,IACVH,IAAgB;AACpB,SAAOH,KAAaK;AAClB,IAAKC,MACHH,IAAgBE,EAAQ,WAE1BC,IAAUT,GAAcG,GAAWnD,GAAYI,GAAUD,CAAQ,GAC7DsD,MACFD,IAAUA,EAAQ,IAAI,GAAG,GAAG,IAE9BL,IAAYA,EAAU,IAAI,GAAG,GAAG;AAElC,SAAO,CAACK,GAASF,CAAa;AAChC,GAEMI,KAAe,SAAUC,GAAU3D,GAAYhD,GAAK;AACxD,EAAAA,IAAMA,EAAI;AAIV,QAAM4G,IADK,uBACe,KAAK5G,EAAI,KAAM,CAAA;AAEzC,MAAI4G,MAAmB,MAAM;AAE3B,QAAIC,IAAmB;AAcvB,QAbAD,EAAe,CAAC,EAAE,MAAM,GAAG,EAAE,QAAQ,SAAUE,GAAI;AACjD,UAAIZ,IAAOa,GAAaD,CAAE;AAC1B,MAAIZ,MAAS,WACNW,IAGCX,EAAK,UAAUW,EAAiB,YAClCA,IAAmBX,KAHrBW,IAAmBX;AAAA,IAO7B,CAAK,GAEIW;AAKH,aAAOA,EAAiB;AALH;AACrB,YAAMG,IAAK,IAAI;AACf,aAAAA,EAAG,SAAS,GAAG,GAAG,GAAG,CAAC,GACfA;AAAA,IACb;AAAA,EAGG;AAGD,MAAIC,IAAQrE,GAAM5C,GAAKgD,EAAW,KAAI,GAAI,EAAI;AAC9C,MAAIiE,EAAM;AACR,WAAOA,EAAM;AACR;AACL,IAAAC,GAAI,MAAM,kBAAkBlH,CAAG,GAC/BkH,GAAI,MAAM,sBAAsBlE,EAAW,KAAM,CAAA;AACjD,UAAMtf,IAAI,IAAI,KAAKsc,CAAG;AACtB,QAAItc,MAAM,UAAa,MAAMA,EAAE,QAAS,CAAA;AACtC,YAAM,IAAI,MAAM,kBAAkBsc,CAAG;AAEvC,WAAOtc;AAAA,EACR;AACH,GAwBMyjB,KAAgB,SAAUnH,GAAK;AACnC,QAAM+D,IAAY,kCAAkC,KAAK/D,EAAI,KAAM,CAAA;AACnE,SAAI+D,MAAc,OACT,CAAC,OAAO,WAAWA,EAAU,CAAC,CAAC,GAAGA,EAAU,CAAC,CAAC,IAGhD,CAAC,KAAK,IAAI;AACnB,GAEMqD,KAAa,SAAUT,GAAU3D,GAAYhD,GAAKqH,IAAY,IAAO;AACzE,EAAArH,IAAMA,EAAI;AAGV,MAAIiH,IAAQrE,GAAM5C,GAAKgD,EAAW,KAAI,GAAI,EAAI;AAC9C,MAAIiE,EAAM;AACR,WAAII,MACFJ,IAAQA,EAAM,IAAI,GAAG,GAAG,IAEnBA,EAAM;AAGf,MAAIT,IAAU5D,GAAM+D,CAAQ;AAC5B,QAAM,CAACW,GAAeC,CAAY,IAAIJ,GAAcnH,CAAG;AACvD,MAAI,CAAC,OAAO,MAAMsH,CAAa,GAAG;AAChC,UAAME,IAAahB,EAAQ,IAAIc,GAAeC,CAAY;AAC1D,IAAIC,EAAW,cACbhB,IAAUgB;AAAA,EAEb;AACD,SAAOhB,EAAQ;AACjB;AAEA,IAAItC,KAAU;AACd,MAAMuD,KAAU,SAAUC,GAAO;AAC/B,SAAIA,MAAU,UACZxD,KAAUA,KAAU,GACb,SAASA,MAEXwD;AACT,GAYMC,KAAc,SAAUC,GAAUC,GAAS;AAC/C,MAAIC;AAEJ,EAAID,EAAQ,OAAO,GAAG,CAAC,MAAM,MAC3BC,IAAKD,EAAQ,OAAO,GAAGA,EAAQ,MAAM,IAErCC,IAAKD;AAGP,QAAME,IAAOD,EAAG,MAAM,GAAG,GAEnB5B,IAAO,CAAA;AAGb,EAAA8B,GAAYD,GAAM7B,GAAMzC,EAAI;AAE5B,WAAStf,IAAI,GAAGA,IAAI4jB,EAAK,QAAQ5jB;AAC/B,IAAA4jB,EAAK5jB,CAAC,IAAI4jB,EAAK5jB,CAAC,EAAE,KAAI;AAGxB,MAAI8jB,IAAc;AAClB,UAAQF,EAAK,QAAM;AAAA,IACjB,KAAK;AACH,MAAA7B,EAAK,KAAKuB,MACVvB,EAAK,YAAY0B,EAAS,SAC1BK,IAAcF,EAAK,CAAC;AACpB;AAAA,IACF,KAAK;AACH,MAAA7B,EAAK,KAAKuB,MACVvB,EAAK,YAAYQ,GAAa,QAAW1D,IAAY+E,EAAK,CAAC,CAAC,GAC5DE,IAAcF,EAAK,CAAC;AACpB;AAAA,IACF,KAAK;AACH,MAAA7B,EAAK,KAAKuB,GAAQM,EAAK,CAAC,CAAC,GACzB7B,EAAK,YAAYQ,GAAa,QAAW1D,IAAY+E,EAAK,CAAC,CAAC,GAC5DE,IAAcF,EAAK,CAAC;AACpB;AAAA,EAEH;AAED,SAAIE,MACF/B,EAAK,UAAUkB,GAAWlB,EAAK,WAAWlD,IAAYiF,GAAatE,EAAiB,GACpFuC,EAAK,gBAAgBtD,GAAMqF,GAAa,cAAc,EAAI,EAAE,WAC5DhC,GAAeC,GAAMlD,IAAYI,IAAUD,EAAQ,IAG9C+C;AACT,GAEMgC,KAAY,SAAUC,GAAYN,GAAS;AAC/C,MAAIC;AACJ,EAAID,EAAQ,OAAO,GAAG,CAAC,MAAM,MAC3BC,IAAKD,EAAQ,OAAO,GAAGA,EAAQ,MAAM,IAErCC,IAAKD;AAGP,QAAME,IAAOD,EAAG,MAAM,GAAG,GAEnB5B,IAAO,CAAA;AAGb,EAAA8B,GAAYD,GAAM7B,GAAMzC,EAAI;AAE5B,WAAStf,IAAI,GAAGA,IAAI4jB,EAAK,QAAQ5jB;AAC/B,IAAA4jB,EAAK5jB,CAAC,IAAI4jB,EAAK5jB,CAAC,EAAE,KAAI;AAGxB,UAAQ4jB,EAAK,QAAM;AAAA,IACjB,KAAK;AACH,MAAA7B,EAAK,KAAKuB,MACVvB,EAAK,YAAY;AAAA,QACf,MAAM;AAAA,QACN,IAAIiC;AAAA,MACZ,GACMjC,EAAK,UAAU;AAAA,QACb,MAAM6B,EAAK,CAAC;AAAA,MACpB;AACM;AAAA,IACF,KAAK;AACH,MAAA7B,EAAK,KAAKuB,MACVvB,EAAK,YAAY;AAAA,QACf,MAAM;AAAA,QACN,WAAW6B,EAAK,CAAC;AAAA,MACzB,GACM7B,EAAK,UAAU;AAAA,QACb,MAAM6B,EAAK,CAAC;AAAA,MACpB;AACM;AAAA,IACF,KAAK;AACH,MAAA7B,EAAK,KAAKuB,GAAQM,EAAK,CAAC,CAAC,GACzB7B,EAAK,YAAY;AAAA,QACf,MAAM;AAAA,QACN,WAAW6B,EAAK,CAAC;AAAA,MACzB,GACM7B,EAAK,UAAU;AAAA,QACb,MAAM6B,EAAK,CAAC;AAAA,MACpB;AACM;AAAA,EAEH;AAED,SAAO7B;AACT;AAEA,IAAI/B,IACAC,IACAC,IAAW,CAAA;AACf,MAAM+D,KAAS,CAAA,GACFC,KAAU,SAAUC,GAAOP,GAAM;AAC5C,QAAMQ,IAAU;AAAA,IACd,SAAS/E;AAAA,IACT,MAAMA;AAAA,IACN,WAAW;AAAA,IACX,eAAe;AAAA,IACf,eAAe;AAAA,IACf,KAAK,EAAE,MAAMuE,EAAM;AAAA,IACnB,MAAMO;AAAA,IACN,SAAS,CAAE;AAAA,EACf,GACQE,IAAWN,GAAU9D,IAAY2D,CAAI;AAC3C,EAAAQ,EAAQ,IAAI,YAAYC,EAAS,WACjCD,EAAQ,IAAI,UAAUC,EAAS,SAC/BD,EAAQ,KAAKC,EAAS,IACtBD,EAAQ,aAAanE,IACrBmE,EAAQ,SAASC,EAAS,QAC1BD,EAAQ,OAAOC,EAAS,MACxBD,EAAQ,OAAOC,EAAS,MACxBD,EAAQ,YAAYC,EAAS,WAC7BD,EAAQ,QAAQ1E,IAEhBA;AAEA,QAAM4E,IAAMpE,EAAS,KAAKkE,CAAO;AAEjC,EAAAnE,KAAamE,EAAQ,IAErBH,GAAOG,EAAQ,EAAE,IAAIE,IAAM;AAC7B,GAEa1B,KAAe,SAAUD,GAAI;AACxC,QAAM2B,IAAML,GAAOtB,CAAE;AACrB,SAAOzC,EAASoE,CAAG;AACrB,GAEaC,KAAa,SAAUJ,GAAOP,GAAM;AAC/C,QAAMY,IAAU;AAAA,IACd,SAASnF;AAAA,IACT,MAAMA;AAAA,IACN,aAAa8E;AAAA,IACb,MAAMA;AAAA,IACN,SAAS,CAAE;AAAA,EACf,GACQE,IAAWb,GAAYxD,IAAU4D,CAAI;AAC3C,EAAAY,EAAQ,YAAYH,EAAS,WAC7BG,EAAQ,UAAUH,EAAS,SAC3BG,EAAQ,KAAKH,EAAS,IACtBG,EAAQ,SAASH,EAAS,QAC1BG,EAAQ,OAAOH,EAAS,MACxBG,EAAQ,OAAOH,EAAS,MACxBG,EAAQ,YAAYH,EAAS,WAC7BrE,KAAWwE,GACXpF,GAAM,KAAKoF,CAAO;AACpB,GAEM9C,KAAe,WAAY;AAC/B,QAAM+C,IAAc,SAAUH,GAAK;AACjC,UAAMvC,IAAO7B,EAASoE,CAAG;AACzB,QAAItC,IAAY;AAChB,YAAQ9B,EAASoE,CAAG,EAAE,IAAI,UAAU,MAAI;AAAA,MACtC,KAAK,eAAe;AAClB,cAAMb,IAAWb,GAAab,EAAK,UAAU;AAC7C,QAAAA,EAAK,YAAY0B,EAAS;AAC1B;AAAA,MACD;AAAA,MACD,KAAK;AACH,QAAAzB,IAAYO,GAAa,QAAW1D,IAAYqB,EAASoE,CAAG,EAAE,IAAI,UAAU,SAAS,GACjFtC,MACF9B,EAASoE,CAAG,EAAE,YAAYtC;AAE5B;AAAA,IACH;AAED,WAAI9B,EAASoE,CAAG,EAAE,cAChBpE,EAASoE,CAAG,EAAE,UAAUrB;AAAA,MACtB/C,EAASoE,CAAG,EAAE;AAAA,MACdzF;AAAA,MACAqB,EAASoE,CAAG,EAAE,IAAI,QAAQ;AAAA,MAC1B9E;AAAA,IACR,GACUU,EAASoE,CAAG,EAAE,YAChBpE,EAASoE,CAAG,EAAE,YAAY,IAC1BpE,EAASoE,CAAG,EAAE,gBAAgB7F;AAAA,MAC5ByB,EAASoE,CAAG,EAAE,IAAI,QAAQ;AAAA,MAC1B;AAAA,MACA;AAAA,IACD,EAAC,QAAO,GACTxC,GAAe5B,EAASoE,CAAG,GAAGzF,IAAYI,IAAUD,EAAQ,KAIzDkB,EAASoE,CAAG,EAAE;AAAA,EACzB;AAEE,MAAII,IAAe;AACnB,aAAW,CAAC1kB,GAAGokB,CAAO,KAAKlE,EAAS,QAAO;AACzC,IAAAuE,EAAYzkB,CAAC,GAEb0kB,IAAeA,KAAgBN,EAAQ;AAEzC,SAAOM;AACT,GAQaC,KAAU,SAAUC,GAAKC,GAAU;AAC9C,MAAIC,IAAUD;AACd,EAAIE,GAAmB,EAAG,kBAAkB,YAC1CD,IAAUE,GAAYH,CAAQ,IAEhCD,EAAI,MAAM,GAAG,EAAE,QAAQ,SAAUjC,GAAI;AAEnC,IADcC,GAAaD,CAAE,MACb,WACdsC,GAAQtC,GAAI,MAAM;AAChB,aAAO,KAAKmC,GAAS,OAAO;AAAA,IACpC,CAAO,GACD5F,GAAMyD,CAAE,IAAImC;AAAA,EAElB,CAAG,GACDI,GAASN,GAAK,WAAW;AAC3B,GAQaM,KAAW,SAAUN,GAAKO,GAAW;AAChD,EAAAP,EAAI,MAAM,GAAG,EAAE,QAAQ,SAAUjC,GAAI;AACnC,QAAIyB,IAAUxB,GAAaD,CAAE;AAC7B,IAAIyB,MAAY,UACdA,EAAQ,QAAQ,KAAKe,CAAS;AAAA,EAEpC,CAAG;AACH,GAEMC,KAAc,SAAUzC,GAAI0C,GAAcC,GAAc;AAI5D,MAHIP,GAAmB,EAAG,kBAAkB,WAGxCM,MAAiB;AACnB;AAGF,MAAIE,IAAU,CAAA;AACd,MAAI,OAAOD,KAAiB,UAAU;AAEpC,IAAAC,IAAUD,EAAa,MAAM,+BAA+B;AAC5D,aAAStlB,IAAI,GAAGA,IAAIulB,EAAQ,QAAQvlB,KAAK;AACvC,UAAIwlB,IAAOD,EAAQvlB,CAAC,EAAE,KAAI;AAG1B,MAAIwlB,EAAK,OAAO,CAAC,MAAM,OAAOA,EAAK,OAAOA,EAAK,SAAS,CAAC,MAAM,QAC7DA,IAAOA,EAAK,OAAO,GAAGA,EAAK,SAAS,CAAC,IAEvCD,EAAQvlB,CAAC,IAAIwlB;AAAA,IACd;AAAA,EACF;AAGD,EAAID,EAAQ,WAAW,KACrBA,EAAQ,KAAK5C,CAAE,GAGHC,GAAaD,CAAE,MACb,UACdsC,GAAQtC,GAAI,MAAM;AAChB,IAAA8C,GAAM,QAAQJ,GAAc,GAAGE,CAAO;AAAA,EAC5C,CAAK;AAEL,GASMN,KAAU,SAAUtC,GAAI+C,GAAkB;AAC9C,EAAAnG,GAAK;AAAA,IACH,WAAY;AAEV,YAAMoG,IAAO,SAAS,cAAc,QAAQhD,KAAM;AAClD,MAAIgD,MAAS,QACXA,EAAK,iBAAiB,SAAS,WAAY;AACzC,QAAAD;MACV,CAAS;AAAA,IAEJ;AAAA,IACD,WAAY;AAEV,YAAMC,IAAO,SAAS,cAAc,QAAQhD,UAAW;AACvD,MAAIgD,MAAS,QACXA,EAAK,iBAAiB,SAAS,WAAY;AACzC,QAAAD;MACV,CAAS;AAAA,IAEJ;AAAA,EACL;AACA,GASaE,KAAgB,SAAUhB,GAAKS,GAAcC,GAAc;AACtE,EAAAV,EAAI,MAAM,GAAG,EAAE,QAAQ,SAAUjC,GAAI;AACnC,IAAAyC,GAAYzC,GAAI0C,GAAcC,CAAY;AAAA,EAC9C,CAAG,GACDJ,GAASN,GAAK,WAAW;AAC3B,GAOaiB,KAAgB,SAAUC,GAAS;AAC9C,EAAAvG,GAAK,QAAQ,SAAUwG,GAAK;AAC1B,IAAAA,EAAID,CAAO;AAAA,EACf,CAAG;AACH,GAEeE,KAAA;AAAA,EACb,gBAAArG;AAAA,EACA,WAAW,MAAMoF,GAAmB,EAAG;AAAA,EACvC,OAAAjF;AAAA,EACA,eAAAa;AAAA,EACA,eAAAK;AAAA,EACA,yBAAAJ;AAAA,EACA,sBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,eAAAX;AAAA,EACA,eAAAE;AAAA,EACA,iBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,aAAAuF;AAAA,EACA,aAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,YAAAhF;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAA0C;AAAA,EACA,cAAAtB;AAAA,EACA,YAAA2B;AAAA,EACA,aAAAtD;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,eAAAwE;AAAA,EACA,SAAAjB;AAAA,EACA,UAAAtD;AAAA,EACA,eAAAwE;AAAA,EACA,eAAA7C;AAAA,EACA,eAAAnB;AACF;AAOA,SAASgC,GAAYD,GAAM7B,GAAMzC,GAAM;AACrC,MAAIiH,IAAa;AACjB,SAAOA;AACL,IAAAA,IAAa,IACbjH,EAAK,QAAQ,SAAU/Y,GAAG;AACxB,YAAMigB,IAAU,UAAUjgB,IAAI,SACxBkgB,IAAQ,IAAI,OAAOD,CAAO;AAChC,MAAI5C,EAAK,CAAC,EAAE,MAAM6C,CAAK,MACrB1E,EAAKxb,CAAC,IAAI,IACVqd,EAAK,MAAM,CAAC,GACZ2C,IAAa;AAAA,IAErB,CAAK;AAEL;ACluBO,MAAMG,KAAU,WAAY;AACjC,EAAA3D,GAAI,MAAM,gDAAgD;AAC5D;AAEA,IAAI4D;AACG,MAAMC,KAAO,SAAU7iB,GAAM4e,GAAIkE,GAASC,GAAS;AACxD,QAAMC,IAAOC,GAAW,EAAC,OAInBC,IAAgBD,GAAW,EAAC;AAElC,MAAIE;AACJ,EAAID,MAAkB,cACpBC,IAAiBC,GAAO,OAAOxE,CAAE;AAEnC,QAAMyE,IACJH,MAAkB,YACdE,GAAOD,EAAe,MAAK,EAAG,CAAC,EAAE,gBAAgB,IAAI,IACrDC,GAAO,MAAM,GACbE,IAAMJ,MAAkB,YAAYC,EAAe,MAAK,EAAG,CAAC,EAAE,kBAAkB,UAEhFvB,IAAO0B,EAAI,eAAe1E,CAAE;AAClC,EAAAgE,KAAIhB,EAAK,cAAc,aAEnBgB,OAAM,WACRA,KAAI,OAGFI,EAAK,aAAa,WACpBJ,KAAII,EAAK;AAGX,QAAMO,IAAYR,EAAQ,GAAG,SAAQ,GAG/B3gB,IAAImhB,EAAU,UAAUP,EAAK,YAAYA,EAAK,UAAU,IAAIA,EAAK;AAGvE,EAAApB,EAAK,aAAa,WAAW,SAASgB,KAAI,MAAMxgB,CAAC;AACjD,QAAMohB,IAAMH,EAAK,OAAO,QAAQzE,KAAM,GAGhC6E,IAAYC,GAAW,EAC1B,OAAO;AAAA,IACN7lB,GAAI0lB,GAAW,SAAU/nB,GAAG;AAC1B,aAAOA,EAAE;AAAA,IACjB,CAAO;AAAA,IACDgC,GAAI+lB,GAAW,SAAU/nB,GAAG;AAC1B,aAAOA,EAAE;AAAA,IACjB,CAAO;AAAA,EACP,CAAK,EACA,WAAW,CAAC,GAAGonB,KAAII,EAAK,cAAcA,EAAK,YAAY,CAAC;AAE3D,MAAIW,IAAa,CAAA;AAEjB,aAAW5B,KAAWwB;AACpB,IAAAI,EAAW,KAAK5B,EAAQ,IAAI;AAG9B,QAAM6B,IAAiBD;AAEvB,EAAAA,IAAaE,EAAYF,CAAU;AAMnC,WAASG,EAAY9oB,GAAGC,GAAG;AACzB,UAAM8oB,IAAQ/oB,EAAE,WACVgpB,IAAQ/oB,EAAE;AAChB,QAAIgpB,IAAS;AACb,WAAIF,IAAQC,IACVC,IAAS,IACAF,IAAQC,MACjBC,IAAS,KAEJA;AAAA,EACR;AAID,EAAAV,EAAU,KAAKO,CAAW,GAE1BI,EAASX,GAAWX,IAAGxgB,CAAC,GAExB+hB,GAAiBX,GAAKphB,GAAGwgB,IAAGI,EAAK,WAAW,GAE5CQ,EACG,OAAO,MAAM,EACb,KAAKT,EAAQ,GAAG,iBAAiB,EACjC,KAAK,KAAKH,KAAI,CAAC,EACf,KAAK,KAAKI,EAAK,cAAc,EAC7B,KAAK,SAAS,WAAW;AAO5B,WAASkB,EAAS7I,GAAO+I,GAAWC,GAAY;AAC9C,UAAMC,IAAYtB,EAAK,WACjBuB,IAAMD,IAAYtB,EAAK,QACvBwB,IAAaxB,EAAK,YAClByB,IAAczB,EAAK,aAEnB0B,IAAaC,GAAa,EAC7B,OAAO,CAAC,GAAGhB,EAAW,MAAM,CAAC,EAC7B,MAAM,CAAC,WAAW,SAAS,CAAC,EAC5B,YAAYlgB,EAAc;AAE7B,IAAAmhB;AAAA,MACEL;AAAA,MACAC;AAAA,MACAC;AAAA,MACAL;AAAA,MACAC;AAAA,MACAhJ;AAAA,MACA0H,EAAQ,GAAG,YAAa;AAAA,MACxBA,EAAQ,GAAG,YAAa;AAAA,IAC9B,GACI8B,EAASJ,GAAaD,GAAYJ,GAAWC,CAAU,GACvDS,EAAUzJ,GAAOkJ,GAAKC,GAAYC,GAAaH,GAAWI,GAAYN,CAAqB,GAC3FW,EAAWR,GAAKC,CAA8C,GAC9DQ,EAAUP,GAAaD,GAAYJ,GAAWC,CAAU;AAAA,EACzD;AAWD,WAASS,EAAUG,GAAUC,GAAQC,GAAWC,GAAYC,GAAcC,GAAe1C,GAAG;AAE1F,IAAAY,EACG,OAAO,GAAG,EACV,UAAU,MAAM,EAChB,KAAKyB,CAAQ,EACb,MAAO,EACP,OAAO,MAAM,EACb,KAAK,KAAK,CAAC,EACX,KAAK,KAAK,SAAUzpB,GAAGS,GAAG;AAEzB,aAAAA,IAAIT,EAAE,OACCS,IAAIipB,IAASC,IAAY;AAAA,IACxC,CAAO,EACA,KAAK,SAAS,WAAY;AACzB,aAAOvC,IAAII,EAAK,eAAe;AAAA,IACvC,CAAO,EACA,KAAK,UAAUkC,CAAM,EACrB,KAAK,SAAS,SAAU1pB,GAAG;AAC1B,iBAAW,CAACS,GAAGspB,CAAQ,KAAK5B,EAAW,QAAO;AAC5C,YAAInoB,EAAE,SAAS+pB;AACb,iBAAO,oBAAqBtpB,IAAI+mB,EAAK;AAGzC,aAAO;AAAA,IACf,CAAO;AAGH,UAAMwC,IAAahC,EAAI,OAAO,GAAG,EAAE,UAAU,MAAM,EAAE,KAAKyB,CAAQ,EAAE,MAAK,GAEnE9J,IAAQ4H,EAAQ,GAAG,SAAQ;AA4MjC,QAxMAyC,EACG,OAAO,MAAM,EACb,KAAK,MAAM,SAAUhqB,GAAG;AACvB,aAAOA,EAAE;AAAA,IACjB,CAAO,EACA,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,CAAC,EACZ,KAAK,KAAK,SAAUA,GAAG;AACtB,aAAIA,EAAE,YAEFioB,EAAUjoB,EAAE,SAAS,IACrB4pB,IACA,OAAO3B,EAAUjoB,EAAE,OAAO,IAAIioB,EAAUjoB,EAAE,SAAS,KACnD,MAAM6pB,IAGH5B,EAAUjoB,EAAE,SAAS,IAAI4pB;AAAA,IACxC,CAAO,EACA,KAAK,KAAK,SAAU5pB,GAAGS,GAAG;AAEzB,aAAAA,IAAIT,EAAE,OACCS,IAAIipB,IAASC;AAAA,IAC5B,CAAO,EACA,KAAK,SAAS,SAAU3pB,GAAG;AAC1B,aAAIA,EAAE,YACG6pB,IAEF5B,EAAUjoB,EAAE,iBAAiBA,EAAE,OAAO,IAAIioB,EAAUjoB,EAAE,SAAS;AAAA,IAC9E,CAAO,EACA,KAAK,UAAU6pB,CAAY,EAC3B,KAAK,oBAAoB,SAAU7pB,GAAGS,GAAG;AAExC,aAAAA,IAAIT,EAAE,QAIFioB,EAAUjoB,EAAE,SAAS,IACrB4pB,IACA,OAAO3B,EAAUjoB,EAAE,OAAO,IAAIioB,EAAUjoB,EAAE,SAAS,IACnD,SAAU,IACZ,SACCS,IAAIipB,IAASC,IAAY,MAAME,GAAc,SAAU,IACxD;AAAA,IAEV,CAAO,EACA,KAAK,SAAS,SAAU7pB,GAAG;AAC1B,YAAMiqB,IAAM;AAEZ,UAAIC,IAAW;AACf,MAAIlqB,EAAE,QAAQ,SAAS,MACrBkqB,IAAWlqB,EAAE,QAAQ,KAAK,GAAG;AAG/B,UAAImqB,IAAS;AACb,iBAAW,CAAC1pB,GAAGspB,CAAQ,KAAK5B,EAAW,QAAO;AAC5C,QAAInoB,EAAE,SAAS+pB,MACbI,IAAS1pB,IAAI+mB,EAAK;AAItB,UAAI4C,IAAY;AAChB,aAAIpqB,EAAE,SACAA,EAAE,OACJoqB,KAAa,gBAEbA,IAAY,YAELpqB,EAAE,OACPA,EAAE,OACJoqB,IAAY,cAEZA,IAAY,UAGVpqB,EAAE,SACJoqB,KAAa,UAIbA,EAAU,WAAW,MACvBA,IAAY,UAGVpqB,EAAE,cACJoqB,IAAY,gBAAgBA,IAG9BA,KAAaD,GAEbC,KAAa,MAAMF,GAEZD,IAAMG;AAAA,IACrB,CAAO,GAGHJ,EACG,OAAO,MAAM,EACb,KAAK,MAAM,SAAUhqB,GAAG;AACvB,aAAOA,EAAE,KAAK;AAAA,IACtB,CAAO,EACA,KAAK,SAAUA,GAAG;AACjB,aAAOA,EAAE;AAAA,IACjB,CAAO,EACA,KAAK,aAAawnB,EAAK,QAAQ,EAC/B,KAAK,KAAK,SAAUxnB,GAAG;AACtB,UAAIqqB,IAASpC,EAAUjoB,EAAE,SAAS,GAC9BsqB,IAAOrC,EAAUjoB,EAAE,iBAAiBA,EAAE,OAAO;AACjD,MAAIA,EAAE,cACJqqB,KAAU,OAAOpC,EAAUjoB,EAAE,OAAO,IAAIioB,EAAUjoB,EAAE,SAAS,KAAK,MAAM6pB,IAEtE7pB,EAAE,cACJsqB,IAAOD,IAASR;AAElB,YAAMU,IAAY,KAAK,QAAO,EAAG;AAGjC,aAAIA,IAAYD,IAAOD,IACjBC,IAAOC,IAAY,MAAM/C,EAAK,cAAcJ,IACvCiD,IAAST,IAAa,IAEtBU,IAAOV,IAAa,KAGrBU,IAAOD,KAAU,IAAIA,IAAST;AAAA,IAEhD,CAAO,EACA,KAAK,KAAK,SAAU5pB,GAAGS,GAAG;AAEzB,aAAAA,IAAIT,EAAE,OACCS,IAAIipB,IAASlC,EAAK,YAAY,KAAKA,EAAK,WAAW,IAAI,KAAKmC;AAAA,IAC3E,CAAO,EACA,KAAK,eAAeE,CAAY,EAChC,KAAK,SAAS,SAAU7pB,GAAG;AAC1B,YAAMqqB,IAASpC,EAAUjoB,EAAE,SAAS;AACpC,UAAIsqB,IAAOrC,EAAUjoB,EAAE,OAAO;AAC9B,MAAIA,EAAE,cACJsqB,IAAOD,IAASR;AAElB,YAAMU,IAAY,KAAK,QAAO,EAAG;AAEjC,UAAIL,IAAW;AACf,MAAIlqB,EAAE,QAAQ,SAAS,MACrBkqB,IAAWlqB,EAAE,QAAQ,KAAK,GAAG;AAG/B,UAAImqB,IAAS;AACb,iBAAW,CAAC1pB,IAAGspB,CAAQ,KAAK5B,EAAW,QAAO;AAC5C,QAAInoB,EAAE,SAAS+pB,MACbI,IAAS1pB,KAAI+mB,EAAK;AAItB,UAAIgD,IAAW;AA0Bf,aAzBIxqB,EAAE,WACAA,EAAE,OACJwqB,IAAW,mBAAmBL,IAE9BK,IAAW,eAAeL,IAI1BnqB,EAAE,OACAA,EAAE,OACJwqB,IAAWA,IAAW,kBAAkBL,IAExCK,IAAWA,IAAW,cAAcL,IAGlCnqB,EAAE,SACJwqB,IAAWA,IAAW,cAAcL,IAIpCnqB,EAAE,cACJwqB,KAAY,mBAIVD,IAAYD,IAAOD,IACjBC,IAAOC,IAAY,MAAM/C,EAAK,cAAcJ,IACvC8C,IAAW,yCAAyCC,IAAS,MAAMK,IAGxEN,IACA,0CACAC,IACA,MACAK,IACA,YACAD,IAIGL,IAAW,uBAAuBC,IAAS,MAAMK,IAAW,YAAYD;AAAA,IAEzF,CAAO,GAEmB9C,GAAW,EAAC,kBAGZ,WAAW;AAC/B,UAAIE;AACJ,MAAAA,IAAiBC,GAAO,OAAOxE,CAAE;AACjC,YAAM0E,IAAMH,EAAe,MAAO,EAAC,CAAC,EAAE;AAEtC,MAAAqC,EACG,OAAO,SAAUhqB,GAAG;AACnB,eAAO2f,EAAM3f,EAAE,EAAE,MAAM;AAAA,MACjC,CAAS,EACA,KAAK,SAAUwF,GAAG;AACjB,YAAIilB,IAAW3C,EAAI,cAAc,MAAMtiB,EAAE,EAAE,GACvCklB,IAAW5C,EAAI,cAAc,MAAMtiB,EAAE,KAAK,OAAO;AACrD,cAAMmlB,IAAYF,EAAS;AAC3B,YAAIG,IAAO9C,EAAI,cAAc,GAAG;AAChC,QAAA8C,EAAK,aAAa,cAAcjL,EAAMna,EAAE,EAAE,CAAC,GAC3ColB,EAAK,aAAa,UAAU,MAAM,GAClCD,EAAU,YAAYC,CAAI,GAC1BA,EAAK,YAAYH,CAAQ,GACzBG,EAAK,YAAYF,CAAQ;AAAA,MACnC,CAAS;AAAA,IACJ;AAAA,EACF;AAWD,WAAStB,EAAgBM,GAAQC,GAAWC,GAAYxC,GAAGxgB,GAAGiZ,GAAOH,GAAUD,GAAU;AACvF,UAAMoL,IAAUhL,EAAM;AAAA,MACpB,CAACxd,GAAK,EAAE,WAAAogB,EAAS,MAAQpgB,IAAM,KAAK,IAAIA,GAAKogB,CAAS,IAAIA;AAAA,MAC1D;AAAA,IACN,GACUqI,IAAUjL,EAAM,OAAO,CAAC7d,GAAK,EAAE,SAAA8gB,QAAe9gB,IAAM,KAAK,IAAIA,GAAK8gB,CAAO,IAAIA,GAAU,CAAC,GACxFxD,IAAaiI,EAAQ,GAAG,cAAa;AAC3C,QAAI,CAACsD,KAAW,CAACC;AACf;AAGF,UAAMC,IAAgB,CAAA;AACtB,QAAIjnB,IAAQ,MACR9D,IAAIkf,GAAM2L,CAAO;AACrB,WAAO7qB,EAAE,QAAS,KAAI8qB;AACpB,MAAIvD,EAAQ,GAAG,cAAcvnB,GAAGsf,GAAYI,GAAUD,CAAQ,IACvD3b,IAMHA,EAAM,MAAM9D,IALZ8D,IAAQ;AAAA,QACN,OAAO9D;AAAA,QACP,KAAKA;AAAA,MACjB,IAKY8D,MACFinB,EAAc,KAAKjnB,CAAK,GACxBA,IAAQ,OAGZ9D,IAAIA,EAAE,IAAI,GAAG,GAAG;AAKlB,IAFmBgoB,EAAI,OAAO,GAAG,EAAE,UAAU,MAAM,EAAE,KAAK+C,CAAa,EAAE,MAAK,EAG3E,OAAO,MAAM,EACb,KAAK,MAAM,SAAU/qB,GAAG;AACvB,aAAO,aAAaA,EAAE,MAAM,OAAO,YAAY;AAAA,IACvD,CAAO,EACA,KAAK,KAAK,SAAUA,GAAG;AACtB,aAAOioB,EAAUjoB,EAAE,KAAK,IAAI4pB;AAAA,IACpC,CAAO,EACA,KAAK,KAAKpC,EAAK,oBAAoB,EACnC,KAAK,SAAS,SAAUxnB,GAAG;AAC1B,YAAMgrB,IAAYhrB,EAAE,IAAI,IAAI,GAAG,KAAK;AACpC,aAAOioB,EAAU+C,CAAS,IAAI/C,EAAUjoB,EAAE,KAAK;AAAA,IACvD,CAAO,EACA,KAAK,UAAU4G,IAAI+iB,IAAYnC,EAAK,oBAAoB,EACxD,KAAK,oBAAoB,SAAUxnB,GAAGS,GAAG;AACxC,cAEIwnB,EAAUjoB,EAAE,KAAK,IACjB4pB,IACA,OAAO3B,EAAUjoB,EAAE,GAAG,IAAIioB,EAAUjoB,EAAE,KAAK,IAC3C,SAAU,IACZ,SACCS,IAAIipB,IAAS,MAAM9iB,GAAG,SAAU,IACjC;AAAA,IAEV,CAAO,EACA,KAAK,SAAS,eAAe;AAAA,EACjC;AAQD,WAASyiB,EAASO,GAAYD,GAAWvC,GAAGxgB,GAAG;AAC7C,QAAIqkB,IAAcrmB,GAAWqjB,CAAS,EACnC,SAAS,CAACrhB,IAAI+iB,IAAYnC,EAAK,oBAAoB,EACnD,WAAW5N,GAAW2N,EAAQ,GAAG,cAAe,KAAIC,EAAK,cAAc,UAAU,CAAC;AAGrF,UAAM0D,IADiB,2CACmB;AAAA,MACxC3D,EAAQ,GAAG,gBAAiB,KAAIC,EAAK;AAAA,IAC3C;AAEI,QAAI0D,MAAuB,MAAM;AAC/B,YAAMC,IAAQD,EAAmB,CAAC;AAElC,cADiBA,EAAmB,CAAC,GACrB;AAAA,QACd,KAAK;AACH,UAAAD,EAAY,MAAM7b,GAAW,MAAM+b,CAAK,CAAC;AACzC;AAAA,QACF,KAAK;AACH,UAAAF,EAAY,MAAM3b,GAAS,MAAM6b,CAAK,CAAC;AACvC;AAAA,QACF,KAAK;AACH,UAAAF,EAAY,MAAMzb,GAAQ,MAAM2b,CAAK,CAAC;AACtC;AAAA,QACF,KAAK;AACH,UAAAF,EAAY,MAAM3Q,GAAS,MAAM6Q,CAAK,CAAC;AACvC;AAAA,QACF,KAAK;AACH,UAAAF,EAAY,MAAM/a,GAAU,MAAMib,CAAK,CAAC;AACxC;AAAA,MACH;AAAA,IACF;AAcD,QAZAnD,EACG,OAAO,GAAG,EACV,KAAK,SAAS,MAAM,EACpB,KAAK,aAAa,eAAe4B,IAAa,QAAQhjB,IAAI,MAAM,GAAG,EACnE,KAAKqkB,CAAW,EAChB,UAAU,MAAM,EAChB,MAAM,eAAe,QAAQ,EAC7B,KAAK,QAAQ,MAAM,EACnB,KAAK,UAAU,MAAM,EACrB,KAAK,aAAa,EAAE,EACpB,KAAK,MAAM,KAAK,GAEf1D,EAAQ,GAAG,eAAc,KAAMC,EAAK,SAAS;AAC/C,UAAI4D,IAAWzmB,GAAQsjB,CAAS,EAC7B,SAAS,CAACrhB,IAAI+iB,IAAYnC,EAAK,oBAAoB,EACnD,WAAW5N,GAAW2N,EAAQ,GAAG,cAAe,KAAIC,EAAK,cAAc,UAAU,CAAC;AAErF,UAAI0D,MAAuB,MAAM;AAC/B,cAAMC,IAAQD,EAAmB,CAAC;AAElC,gBADiBA,EAAmB,CAAC,GACrB;AAAA,UACd,KAAK;AACH,YAAAE,EAAS,MAAMhc,GAAW,MAAM+b,CAAK,CAAC;AACtC;AAAA,UACF,KAAK;AACH,YAAAC,EAAS,MAAM9b,GAAS,MAAM6b,CAAK,CAAC;AACpC;AAAA,UACF,KAAK;AACH,YAAAC,EAAS,MAAM5b,GAAQ,MAAM2b,CAAK,CAAC;AACnC;AAAA,UACF,KAAK;AACH,YAAAC,EAAS,MAAM9Q,GAAS,MAAM6Q,CAAK,CAAC;AACpC;AAAA,UACF,KAAK;AACH,YAAAC,EAAS,MAAMlb,GAAU,MAAMib,CAAK,CAAC;AACrC;AAAA,QACH;AAAA,MACF;AAED,MAAAnD,EACG,OAAO,GAAG,EACV,KAAK,SAAS,MAAM,EACpB,KAAK,aAAa,eAAe4B,IAAa,OAAOD,IAAY,GAAG,EACpE,KAAKyB,CAAQ,EACb,UAAU,MAAM,EAChB,MAAM,eAAe,QAAQ,EAC7B,KAAK,QAAQ,MAAM,EACnB,KAAK,UAAU,MAAM,EACrB,KAAK,aAAa,EAAE;AAAA,IAExB;AAAA,EACF;AAMD,WAAS7B,EAAWG,GAAQC,GAAW;AACrC,UAAM0B,IAAgB,CAAA;AACtB,QAAIC,IAAU;AAEd,eAAW,CAAC7qB,GAAGspB,CAAQ,KAAK5B,EAAW,QAAO;AAC5C,MAAAkD,EAAc5qB,CAAC,IAAI,CAACspB,GAAUwB,EAASxB,GAAU3B,CAAc,CAAC;AAGlE,IAAAJ,EACG,OAAO,GAAG,EACV,UAAU,MAAM,EAChB,KAAKqD,CAAa,EAClB,MAAO,EACP,OAAO,SAAUrrB,GAAG;AACnB,YAAMwrB,IAAOxrB,EAAE,CAAC,EAAE,MAAMyrB,GAAO,cAAc,GACvCC,IAAK,EAAEF,EAAK,SAAS,KAAK,GAE1BG,IAAW7D,EAAI,gBAAgB,8BAA8B,MAAM;AACzE,MAAA6D,EAAS,aAAa,MAAMD,IAAK,IAAI;AAErC,iBAAW,CAAChjB,GAAGkjB,CAAG,KAAKJ,EAAK,QAAO,GAAI;AACrC,cAAMK,IAAQ/D,EAAI,gBAAgB,8BAA8B,OAAO;AACvE,QAAA+D,EAAM,aAAa,sBAAsB,SAAS,GAClDA,EAAM,aAAa,KAAK,IAAI,GACxBnjB,IAAI,KACNmjB,EAAM,aAAa,MAAM,KAAK,GAEhCA,EAAM,cAAcD,GACpBD,EAAS,YAAYE,CAAK;AAAA,MAC3B;AACD,aAAOF;AAAA,IACf,CAAO,EACA,KAAK,KAAK,EAAE,EACZ,KAAK,KAAK,SAAU3rB,GAAGS,GAAG;AACzB,UAAIA,IAAI;AACN,iBAASiI,IAAI,GAAGA,IAAIjI,GAAGiI;AACrB,iBAAA4iB,KAAWD,EAAc5qB,IAAI,CAAC,EAAE,CAAC,GACzBT,EAAE,CAAC,IAAI0pB,IAAU,IAAI4B,IAAU5B,IAASC;AAAA;AAGlD,eAAQ3pB,EAAE,CAAC,IAAI0pB,IAAU,IAAIC;AAAA,IAEvC,CAAO,EACA,KAAK,aAAanC,EAAK,eAAe,EACtC,KAAK,aAAaA,EAAK,eAAe,EACtC,KAAK,SAAS,SAAUxnB,GAAG;AAC1B,iBAAW,CAACS,GAAGspB,CAAQ,KAAK5B,EAAW,QAAO;AAC5C,YAAInoB,EAAE,CAAC,MAAM+pB;AACX,iBAAO,8BAA+BtpB,IAAI+mB,EAAK;AAGnD,aAAO;AAAA,IACf,CAAO;AAAA,EACJ;AAQD,WAASgC,EAAUI,GAAYD,GAAWvC,GAAGxgB,GAAG;AAC9C,UAAM4Y,IAAc+H,EAAQ,GAAG,eAAc;AAC7C,QAAI/H,MAAgB;AAClB;AAGF,UAAMsM,IAAS9D,EAAI,OAAO,GAAG,EAAE,KAAK,SAAS,OAAO,GAC9C+D,IAAQ,IAAI,QACZC,IAAYF,EAAO,OAAO,MAAM;AAEtC,IAAAE,EACG,KAAK,MAAM/D,EAAU8D,CAAK,IAAInC,CAAU,EACxC,KAAK,MAAM3B,EAAU8D,CAAK,IAAInC,CAAU,EACxC,KAAK,MAAMpC,EAAK,cAAc,EAC9B,KAAK,MAAM5gB,IAAI4gB,EAAK,cAAc,EAClC,KAAK,SAAS,OAAO,GAEpBhI,MAAgB,MAClBwM,EAAU,KAAK,SAASxM,EAAY,QAAQ,MAAM,GAAG,CAAC;AAAA,EAEzD;AAQD,WAAS6I,EAAY4D,GAAK;AACxB,UAAM1P,IAAO,CAAA,GACPkM,IAAS,CAAA;AACf,aAAShoB,IAAI,GAAG2F,IAAI6lB,EAAI,QAAQxrB,IAAI2F,GAAG,EAAE3F;AACvC,MAAK,OAAO,UAAU,eAAe,KAAK8b,GAAM0P,EAAIxrB,CAAC,CAAC,MAEpD8b,EAAK0P,EAAIxrB,CAAC,CAAC,IAAI,IACfgoB,EAAO,KAAKwD,EAAIxrB,CAAC,CAAC;AAGtB,WAAOgoB;AAAA,EACR;AAQD,WAASyD,EAAUD,GAAK;AACtB,QAAIxrB,IAAIwrB,EAAI;AACZ,UAAME,IAAM,CAAA;AACZ,WAAO1rB;AACL,MAAA0rB,EAAIF,EAAI,EAAExrB,CAAC,CAAC,KAAK0rB,EAAIF,EAAIxrB,CAAC,CAAC,KAAK,KAAK;AAEvC,WAAO0rB;AAAA,EACR;AAQD,WAASZ,EAASa,GAAMH,GAAK;AAC3B,WAAOC,EAAUD,CAAG,EAAEG,CAAI,KAAK;AAAA,EAChC;AACH,GAEeC,KAAA;AAAA,EACb,SAAAlF;AAAA,EACA,MAAAE;AACF,GC1sBMiF,KAAY,CAACC,MACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMUA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YASRA,EAAQ;AAAA;AAAA;AAAA;AAAA,YAIRA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,YAKRA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,YAKRA,EAAQ;AAAA;AAAA;AAAA;AAAA,YAIRA,EAAQ;AAAA;AAAA;AAAA;AAAA,YAIRA,EAAQ;AAAA;AAAA;AAAA;AAAA,YAIRA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKAA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAWdA,EAAQ;AAAA;AAAA;AAAA;AAAA,qBAIDA,EAAQ;AAAA,cACfA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAaRA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAoBFA,EAAQ;AAAA;AAAA;AAAA;AAAA,YAIhBA,EAAQ;AAAA;AAAA,oBAEAA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOhBA,EAAQ;AAAA;AAAA,oBAEAA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAShBA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMRA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMRA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAURA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAORA,EAAQ;AAAA,cACNA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMVA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,YAKRA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAURA,EAAQ;AAAA,cACNA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOVA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAUNA,EAAQ;AAAA,YACVA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQRA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAUNA,EAAQ;AAAA,YACVA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQNA,EAAQ;AAAA,YACVA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQNA,EAAQ;AAAA,YACVA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAiBRA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAORA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMRA,EAAQ;AAAA;AAAA;AAAA;AAAA,GAMpBC,KAAeF,IChQFG,KAA6B;AAAA,EACxC,QAAQC;AAAA,EACR,IAAIjG;AAAA,EACJ,UAAU4F;AAAA,EACV,QAAQG;AACV;"} \ No newline at end of file